comparison demos/rpg/scripts/gamecontroller.py @ 516:d70fc46c8aa5

Added some placeholder graphics for the warrior. The player can now walk around the map.
author prock@33b003aa-7bff-0310-803a-e67f0ece8222
date Tue, 25 May 2010 21:41:59 +0000
parents edf5c0cf52f3
children c3a026cdd91b
comparison
equal deleted inserted replaced
515:520bd1621644 516:d70fc46c8aa5
28 28
29 from fife import fife 29 from fife import fife
30 30
31 from scripts.scene import Scene 31 from scripts.scene import Scene
32 from scripts.guicontroller import GUIController 32 from scripts.guicontroller import GUIController
33 from fife.extensions.loaders import loadImportFile
33 34
34 class KeyState(object): 35 class KeyState(object):
35 def __init__(self): 36 def __init__(self):
36 self._keystate = { } 37 self._keystate = { }
37 38
53 self._gamecontroller = gamecontroller 54 self._gamecontroller = gamecontroller
54 self._settings = gamecontroller.settings 55 self._settings = gamecontroller.settings
55 self._eventmanager = self._engine.getEventManager() 56 self._eventmanager = self._engine.getEventManager()
56 57
57 fife.IMouseListener.__init__(self) 58 fife.IMouseListener.__init__(self)
58 self._eventmanager.addMouseListener(self)
59
60 fife.IKeyListener.__init__(self) 59 fife.IKeyListener.__init__(self)
61 self._eventmanager.addKeyListener(self)
62 60
63 self._attached = False 61 self._attached = False
64 62
65 def attach(self): 63 def attach(self):
66 if not self._attached: 64 if not self._attached:
65 self._gamecontroller.keystate.reset()
67 self._eventmanager.addMouseListenerFront(self) 66 self._eventmanager.addMouseListenerFront(self)
68 self._eventmanager.addKeyListenerFront(self) 67 self._eventmanager.addKeyListenerFront(self)
69 self._attached = True 68 self._attached = True
70 69
71 def detach(self): 70 def detach(self):
73 self._eventmanager.removeMouseListener(self) 72 self._eventmanager.removeMouseListener(self)
74 self._eventmanager.removeKeyListener(self) 73 self._eventmanager.removeKeyListener(self)
75 self._attached = False 74 self._attached = False
76 75
77 def mousePressed(self, event): 76 def mousePressed(self, event):
78 pass 77 #mouse press was consumed by some pychan widget
78 if event.isConsumedByWidgets():
79 return
80
81 clickpoint = fife.ScreenPoint(event.getX(), event.getY())
82 if (event.getButton() == fife.MouseEvent.LEFT):
83 self._gamecontroller.scene.player.walk( self._gamecontroller.scene.getLocationAt(clickpoint) )
84 #self.hero.run( self.getLocationAt(clickpoint) )
85
86 if (event.getButton() == fife.MouseEvent.RIGHT):
87 instances = self._gamecontroller.scene.getInstancesAt(clickpoint)
88 print "selected instances on actor layer: ", [i.getObject().getId() for i in instances]
89 if instances:
90 #do something
91 pass
92
79 def mouseReleased(self, event): 93 def mouseReleased(self, event):
80 pass 94 pass
95
96 def mouseMoved(self, event):
97 renderer = self._gamecontroller.instancerenderer
98 if renderer:
99 renderer.removeAllOutlines()
100 else:
101 return
102
103 pt = fife.ScreenPoint(event.getX(), event.getY())
104 instances = self.getInstancesAt(pt);
105 for i in instances:
106 renderer.addOutlined(i, 173, 255, 47, 2)
107
81 def mouseEntered(self, event): 108 def mouseEntered(self, event):
82 pass 109 pass
83 def mouseExited(self, event): 110 def mouseExited(self, event):
84 pass 111 pass
85 def mouseClicked(self, event): 112 def mouseClicked(self, event):
106 keyval = event.getKey().getValue() 133 keyval = event.getKey().getValue()
107 keystr = event.getKey().getAsString().lower() 134 keystr = event.getKey().getAsString().lower()
108 135
109 self._gamecontroller.keystate.updateKey(keyval, False) 136 self._gamecontroller.keystate.updateKey(keyval, False)
110 137
111
112 class GameController(object): 138 class GameController(object):
113 def __init__(self, application, engine, settings): 139 def __init__(self, application, engine, settings):
114 self._application = application 140 self._application = application
115 self._engine = engine 141 self._engine = engine
116 self._settings = settings 142 self._settings = settings
122 self._listener = GameListener(self) 148 self._listener = GameListener(self)
123 149
124 self._guicontroller.showMainMenu() 150 self._guicontroller.showMainMenu()
125 151
126 self._scene = None 152 self._scene = None
153 self._instancerenderer = None
127 154
128 def onConsoleCommand(self, command): 155 def onConsoleCommand(self, command):
129 """ 156 """
130 Might be useful if you want to have the game parse a command. 157 Might be useful if you want to have the game parse a command.
131 Not sure if I am going to keep this or not. 158 Not sure if I am going to keep this or not.
139 self._keystate.reset() 166 self._keystate.reset()
140 167
141 if self._scene: 168 if self._scene:
142 self._scene.destroyScene() 169 self._scene.destroyScene()
143 self._scene = None 170 self._scene = None
171
172 loadImportFile("objects/actors/player/warrior/object.xml", self._engine)
144 173
145 self._scene = Scene(self) 174 self._scene = Scene(self)
146 self._scene.createScene(self._settings.get("RPG", "TownMapFile", "maps/town.xml")) 175 self._scene.createScene(self._settings.get("RPG", "TownMapFile", "maps/town.xml"))
176
177 self._instancerenderer = fife.InstanceRenderer.getInstance(self._scene.cameras[self._settings.get("RPG", "DefaultCameraName", "camera1")])
147 178
148 #start listening to events 179 #start listening to events
149 self._listener.attach() 180 self._listener.attach()
150 181
151 def endGame(self): 182 def endGame(self):
152 if self._scene: 183 if self._scene:
153 self._scene.destroyScene() 184 self._scene.destroyScene()
154 self._scene = None 185 self._scene = None
186 self._instancerenderer = None
155 187
156 def quit(self): 188 def quit(self):
157 self.endGame() 189 self.endGame()
158 self._application.requestQuit() 190 self._application.requestQuit()
159 191
174 def _getScene(self): 206 def _getScene(self):
175 return self._scene 207 return self._scene
176 208
177 def _getKeyState(self): 209 def _getKeyState(self):
178 return self._keystate 210 return self._keystate
211
212 def _getInstanceRenderer(self):
213 return self._instancerenderer
179 214
180 guicontroller = property(_getGUIController) 215 guicontroller = property(_getGUIController)
181 engine = property(_getEngine) 216 engine = property(_getEngine)
182 settings = property(_getSettings) 217 settings = property(_getSettings)
183 scene = property(_getScene) 218 scene = property(_getScene)
184 keystate = property(_getKeyState) 219 keystate = property(_getKeyState)
220 instancerenderer = property(_getInstanceRenderer)