annotate gamelib/game_base.py @ 46:d3d277a42ac6

Less getattr/isinstance silliness.
author Jeremy Thurgood <firxen@gmail.com>
date Mon, 07 May 2012 21:07:48 +0200
parents 1e8f7e694f0c
children 3e3bed2ce248
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
1
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
2
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
3 def get_subclasses(base_class, leaf_only=True):
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
4 subclasses = []
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
5 for cls in base_class.__subclasses__():
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
6 if leaf_only and cls.__subclasses__():
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
7 # Not a leaf class, and only want leaves
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
8 continue
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
9 subclasses.append(cls)
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
10 return subclasses
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
11
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
12
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
13 class Science(object):
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
14 NAME = None
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
15 PREREQUISITES = ()
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
16 ACQUISITION_CHANCE = 1.0
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
17 SCIENCE_TYPE = None
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
18
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
19 def __init__(self, points=0):
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
20 self.points = points
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
21
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
22 def spend_point(self):
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
23 self.points += 1
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
24
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
25 def can_spend(self, lab):
1e8f7e694f0c Refactor missions and sciences a bit to reduce duplication.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
26 return True
46
d3d277a42ac6 Less getattr/isinstance silliness.
Jeremy Thurgood <firxen@gmail.com>
parents: 45
diff changeset
27
d3d277a42ac6 Less getattr/isinstance silliness.
Jeremy Thurgood <firxen@gmail.com>
parents: 45
diff changeset
28 @classmethod
d3d277a42ac6 Less getattr/isinstance silliness.
Jeremy Thurgood <firxen@gmail.com>
parents: 45
diff changeset
29 def save_name(cls):
d3d277a42ac6 Less getattr/isinstance silliness.
Jeremy Thurgood <firxen@gmail.com>
parents: 45
diff changeset
30 return "%s.%s" % (cls.SCIENCE_TYPE, cls.__name__)