Mercurial > boomslang
annotate gamelib/state.py @ 26:0a68d137f509
Initial inventory palette thing.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sun, 22 Aug 2010 18:38:56 +0200 |
parents | 1e90a3e4618e |
children | 0f25f7b9b37a |
rev | line source |
---|---|
7
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
1 """Utilities and base classes for dealing with scenes.""" |
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
2 |
18
c9b124c2f5c6
Start of scene drawing framework.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
11
diff
changeset
|
3 from albow.resource import get_image, get_sound |
23
1e90a3e4618e
Add code for blitting Scene.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
22
diff
changeset
|
4 from pygame.locals import BLEND_ADD |
11 | 5 |
9
6db58d31dd4c
Function for loading initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
7
diff
changeset
|
6 def initial_state(): |
6db58d31dd4c
Function for loading initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
7
diff
changeset
|
7 """Load the initial state.""" |
6db58d31dd4c
Function for loading initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
7
diff
changeset
|
8 state = State() |
6db58d31dd4c
Function for loading initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
7
diff
changeset
|
9 # TODO: populate state |
6db58d31dd4c
Function for loading initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
7
diff
changeset
|
10 return state |
6db58d31dd4c
Function for loading initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
7
diff
changeset
|
11 |
6db58d31dd4c
Function for loading initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
7
diff
changeset
|
12 |
7
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
13 class State(object): |
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
14 """Complete game state. |
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
15 |
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
16 Game state consists of: |
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
17 |
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
18 * items |
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
19 * scenes |
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
20 """ |
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
21 |
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
22 def __init__(self): |
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
23 # map of scene name -> Scene object |
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
24 self.scenes = {} |
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
25 # map of item name -> Item object |
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
26 self.items = {} |
22 | 27 # map of item name -> Item object in inventory |
28 self.inventory = {} | |
7
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
29 |
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
30 |
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
31 class Scene(object): |
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
32 """Base class for scenes.""" |
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
33 |
22 | 34 FOLDER = None |
35 BACKGROUND = None | |
36 | |
7
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
37 def __init__(self): |
22 | 38 # map of thing names -> Thing objects |
39 self.things = {} | |
40 self._background = get_image([self.FOLDER, self.BACKGROUND]) | |
7
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
41 |
22 | 42 def draw_background(self, surface): |
23
1e90a3e4618e
Add code for blitting Scene.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
22
diff
changeset
|
43 surface.blit(self._background, (0, 0), None, BLEND_ADD) |
18
c9b124c2f5c6
Start of scene drawing framework.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
11
diff
changeset
|
44 |
23
1e90a3e4618e
Add code for blitting Scene.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
22
diff
changeset
|
45 def draw_things(self, surface): |
1e90a3e4618e
Add code for blitting Scene.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
22
diff
changeset
|
46 for thing in self.things.itervalues(): |
1e90a3e4618e
Add code for blitting Scene.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
22
diff
changeset
|
47 thing.draw(surface) |
18
c9b124c2f5c6
Start of scene drawing framework.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
11
diff
changeset
|
48 |
22 | 49 def draw(self, surface): |
50 self.draw_background(surface) | |
23
1e90a3e4618e
Add code for blitting Scene.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
22
diff
changeset
|
51 self.draw_things(surface) |
18
c9b124c2f5c6
Start of scene drawing framework.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
11
diff
changeset
|
52 |
7
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
53 |
22 | 54 class Thing(object): |
55 """Base class for things in a scene that you can interact with.""" | |
7
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
56 |
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
57 def __init__(self): |
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
58 pass |
d7c9d8273d7f
Start of base classes for game state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
59 |
22 | 60 def interact(self, item): |
61 pass | |
62 | |
23
1e90a3e4618e
Add code for blitting Scene.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
22
diff
changeset
|
63 def draw(self, surface): |
1e90a3e4618e
Add code for blitting Scene.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
22
diff
changeset
|
64 pass |
1e90a3e4618e
Add code for blitting Scene.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
22
diff
changeset
|
65 |
22 | 66 |
67 class Item(object): | |
68 """Base class for inventory items.""" | |
69 | |
70 def __init__(self): | |
71 pass | |
23
1e90a3e4618e
Add code for blitting Scene.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
22
diff
changeset
|
72 # needs cursor |
22 | 73 |