Mercurial > sypikslang
comparison gamelib/game_base.py @ 94:245ef50de84d
Sanity-check research, schematic and mission classes. (Ironic, no?)
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Wed, 09 May 2012 21:22:10 +0200 |
parents | 74ce25ec2073 |
children | 53277724645b |
comparison
equal
deleted
inserted
replaced
93:f0bf77787d1e | 94:245ef50de84d |
---|---|
6 subclasses = [] | 6 subclasses = [] |
7 for cls in base_class.__subclasses__(): | 7 for cls in base_class.__subclasses__(): |
8 if leaf_only and cls.__subclasses__(): | 8 if leaf_only and cls.__subclasses__(): |
9 # Not a leaf class, and only want leaves | 9 # Not a leaf class, and only want leaves |
10 continue | 10 continue |
11 if hasattr(cls, 'sanity_check'): | |
12 cls.sanity_check() | |
11 subclasses.append(cls) | 13 subclasses.append(cls) |
12 return subclasses | 14 return subclasses |
13 | 15 |
14 | 16 |
15 def get_save_filename(): | 17 def get_save_filename(): |
58 def save_name(cls): | 60 def save_name(cls): |
59 return "%s.%s" % (cls.SCIENCE_TYPE, cls.__name__) | 61 return "%s.%s" % (cls.SCIENCE_TYPE, cls.__name__) |
60 | 62 |
61 def save_data(self): | 63 def save_data(self): |
62 return (self.save_name(), self.points) | 64 return (self.save_name(), self.points) |
65 | |
66 @classmethod | |
67 def sanity_check(cls): | |
68 for science, points in cls.PREREQUISITES: | |
69 assert issubclass(science, Science) | |
70 assert isinstance(points, int) |