diff gamelib/gamescreen.py @ 187:fbfd8e748ac0

Remove screen reference from State.
author Jeremy Thurgood <firxen@gmail.com>
date Wed, 25 Aug 2010 16:45:06 +0200
parents 5845a3ed4dad
children c56a0170f0cb
line wrap: on
line diff
--- a/gamelib/gamescreen.py	Wed Aug 25 16:24:55 2010 +0200
+++ b/gamelib/gamescreen.py	Wed Aug 25 16:45:06 2010 +0200
@@ -22,10 +22,10 @@
     sel_color = Color("yellow")
     sel_width = 2
 
-    def __init__(self, state, scene_widget):
+    def __init__(self, screen):
         PaletteView.__init__(self, (BUTTON_SIZE, BUTTON_SIZE), 1, 6, scrolling=True)
-        self.state = state
-        self.scene_widget = scene_widget
+        self.state = screen.state
+        self.state_widget = screen.state_widget
 
     def num_items(self):
         return len(self.state.inventory)
@@ -41,7 +41,7 @@
             if self.state.tool:
                 result = self.state.inventory[item_no].interact(self.state.tool, self.state)
                 if result:
-                    result.process(self.scene_widget)
+                    result.process(self.state_widget)
             else:
                 self.state.set_tool(self.state.inventory[item_no])
 
@@ -54,13 +54,14 @@
 
 class StateWidget(Widget):
 
-    def __init__(self, state):
+    def __init__(self, screen):
         Widget.__init__(self, Rect(0, 0, SCENE_SIZE[0], SCENE_SIZE[1]))
-        self.state = state
-        self.detail = DetailWindow(state)
+        self.screen = screen
+        self.state = screen.state
+        self.detail = DetailWindow(screen)
 
     def draw(self, surface):
-        self.state.draw(surface)
+        self.state.draw(surface, self.screen)
 
     def mouse_down(self, event):
         if self.subwidgets:
@@ -78,7 +79,7 @@
             self.invalidate()
         # We do this here so we can get enter and leave events regardless
         # of what happens
-        result = self.state.check_enter_leave()
+        result = self.state.check_enter_leave(self.screen)
         if result:
             result.process(self)
 
@@ -87,12 +88,12 @@
             self._mouse_move(event.pos)
 
     def _mouse_move(self, pos):
-        self.state.mouse_move(pos)
+        self.state.mouse_move(pos, self.screen)
 
     def show_message(self, message):
         self.parent.cursor_highlight(False)
         # Display the message as a modal dialog
-        MessageDialog(message, 60).present()
+        MessageDialog(self.screen, message, 60).present()
         # queue a redraw to show updated state
         self.invalidate()
         # The cursor could have gone anywhere
@@ -109,9 +110,10 @@
 
 
 class DetailWindow(Widget):
-    def __init__(self, state):
+    def __init__(self, screen):
         Widget.__init__(self)
-        self.state = state
+        self.screen = screen
+        self.state = screen.state
         self.border_width = 5
         self.border_color = (0, 0, 0)
 
@@ -122,7 +124,7 @@
         self.set_rect(rect.inflate(bw*2, bw*2))
 
     def draw(self, surface):
-        self.state.draw_detail(surface.subsurface(self.image_rect))
+        self.state.draw_detail(surface.subsurface(self.image_rect), self.screen)
 
     def mouse_down(self, event):
         result = self.state.interact_detail(self.global_to_local(event.pos))
@@ -133,7 +135,7 @@
         self._mouse_move(event.pos)
 
     def _mouse_move(self, pos):
-        self.state.mouse_move_detail(self.global_to_local(pos))
+        self.state.mouse_move_detail(self.global_to_local(pos), self.screen)
 
     def show_message(self, message):
         self.parent.show_message(message)
@@ -149,7 +151,7 @@
 
 class GameScreen(Screen, CursorWidget):
     def __init__(self, shell):
-        CursorWidget.__init__(self)
+        CursorWidget.__init__(self, self)
         Screen.__init__(self, shell)
         self.running = False
 
@@ -160,17 +162,17 @@
     def start_game(self):
         self._clear_all()
         # TODO: Randomly plonk the state here for now
-        self.state = initial_state(self)
-        self.state_widget = StateWidget(self.state)
+        self.state = initial_state()
+        self.state_widget = StateWidget(self)
         self.add(self.state_widget)
 
-        self.popup_menu = PopupMenu(self.shell)
+        self.popup_menu = PopupMenu(self)
         self.menubutton = PopupMenuButton('Menu',
                 action=self.popup_menu.show_menu)
 
         self.handbutton = HandButton(action=self.hand_pressed)
 
-        self.inventory = InventoryView(self.state, self.state_widget)
+        self.inventory = InventoryView(self)
 
         self.toolbar = ToolBar([
                 self.menubutton,