Mercurial > sypikslang
annotate gamelib/game_base.py @ 47:3e3bed2ce248
Better science saving.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Mon, 07 May 2012 21:10:25 +0200 |
parents | d3d277a42ac6 |
children | 52913ba12988 |
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__) |
47 | 31 |
32 def save_data(self): | |
33 return (self.save_name(), self.points) |