Mercurial > fife-parpg
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) |