comparison gamelib/state.py @ 129:4223d66d88b4

Cursor change when you select a Tool
author Stefano Rivera <stefano@rivera.za.net>
date Tue, 24 Aug 2010 18:36:31 +0200
parents 9646e7c8bb97
children 11afefc4aeaf
comparison
equal deleted inserted replaced
128:a2f6e975af67 129:4223d66d88b4
7 from pygame.rect import Rect 7 from pygame.rect import Rect
8 from pygame.color import Color 8 from pygame.color import Color
9 9
10 import constants 10 import constants
11 from sound import get_sound 11 from sound import get_sound
12 from cursor import HAND
12 13
13 14
14 class Result(object): 15 class Result(object):
15 """Result of interacting with a thing""" 16 """Result of interacting with a thing"""
16 17
29 MessageDialog(self.message, 60).present() 30 MessageDialog(self.message, 60).present()
30 # queue a redraw to show updated state 31 # queue a redraw to show updated state
31 scene.invalidate() 32 scene.invalidate()
32 33
33 34
34 def initial_state(): 35 def initial_state(screen):
35 """Load the initial state.""" 36 """Load the initial state."""
36 state = State() 37 state = State(screen)
37 state.load_scenes("cryo") 38 state.load_scenes("cryo")
38 state.load_scenes("bridge") 39 state.load_scenes("bridge")
39 #state.load_scenes("mess") 40 #state.load_scenes("mess")
40 #state.load_scenes("engine") 41 #state.load_scenes("engine")
41 #state.load_scenes("machine") 42 #state.load_scenes("machine")
52 53
53 * items 54 * items
54 * scenes 55 * scenes
55 """ 56 """
56 57
57 def __init__(self): 58 def __init__(self, screen):
58 # map of scene name -> Scene object 59 # map of scene name -> Scene object
59 self.scenes = {} 60 self.scenes = {}
60 # map of detail view name -> DetailView object 61 # map of detail view name -> DetailView object
61 self.detail_views = {} 62 self.detail_views = {}
62 # map of item name -> Item object 63 # map of item name -> Item object
73 self.previous_scene = None 74 self.previous_scene = None
74 # scene transion helpers 75 # scene transion helpers
75 self.do_check = None 76 self.do_check = None
76 self.old_pos = None 77 self.old_pos = None
77 78
79 self.screen = screen
80
78 def add_scene(self, scene): 81 def add_scene(self, scene):
79 self.scenes[scene.name] = scene 82 self.scenes[scene.name] = scene
80 83
81 def add_detail_view(self, detail_view): 84 def add_detail_view(self, detail_view):
82 self.detail_views[detail_view.name] = detail_view 85 self.detail_views[detail_view.name] = detail_view
115 if self.tool == self.items[name]: 118 if self.tool == self.items[name]:
116 self.set_tool(None) 119 self.set_tool(None)
117 120
118 def set_tool(self, item): 121 def set_tool(self, item):
119 self.tool = item 122 self.tool = item
123 if item is None:
124 self.screen.set_cursor(HAND)
125 else:
126 self.screen.set_cursor(item.CURSOR)
120 127
121 def draw(self, surface): 128 def draw(self, surface):
122 if self.do_check and self.previous_scene and self.do_check == constants.LEAVE: 129 if self.do_check and self.previous_scene and self.do_check == constants.LEAVE:
123 # We still need to handle leave events, so still display the scene 130 # We still need to handle leave events, so still display the scene
124 self.previous_scene.draw(surface) 131 self.previous_scene.draw(surface)