comparison demos/rpg/scripts/gamecontroller.py @ 536:1afe46247ab1

Some misc code cleanup. Started using the log manager instead of printing directly to console. Added ObjectAlreadyInSceneError exception.
author prock@33b003aa-7bff-0310-803a-e67f0ece8222
date Mon, 31 May 2010 20:25:46 +0000
parents 9fbe3dce925a
children 764510a6d2f9
comparison
equal deleted inserted replaced
535:9fbe3dce925a 536:1afe46247ab1
33 33
34 from scripts.scene import Scene 34 from scripts.scene import Scene
35 from scripts.guicontroller import GUIController 35 from scripts.guicontroller import GUIController
36 from scripts.actors.baseactor import TalkAction, PickUpItemAction 36 from scripts.actors.baseactor import TalkAction, PickUpItemAction
37 from scripts.objects.baseobject import GameObjectTypes 37 from scripts.objects.baseobject import GameObjectTypes
38 from scripts.misc.exceptions import ObjectNotFoundError 38 from scripts.misc.exceptions import ObjectNotFoundError, ObjectAlreadyInSceneError
39 39
40 40
41 class KeyState(object): 41 class KeyState(object):
42 def __init__(self): 42 def __init__(self):
43 self._keystate = { } 43 self._keystate = { }
93 self._lastmousepos = (clickpoint.x, clickpoint.y) 93 self._lastmousepos = (clickpoint.x, clickpoint.y)
94 self._gamecontroller.scene.player.walk( self._gamecontroller.scene.getLocationAt(clickpoint) ) 94 self._gamecontroller.scene.player.walk( self._gamecontroller.scene.getLocationAt(clickpoint) )
95 actor_instances = self._gamecontroller.scene.getInstancesAt(clickpoint, self._gamecontroller.scene.actorlayer) 95 actor_instances = self._gamecontroller.scene.getInstancesAt(clickpoint, self._gamecontroller.scene.actorlayer)
96 item_instances = self._gamecontroller.scene.getInstancesAt(clickpoint, self._gamecontroller.scene.itemlayer) 96 item_instances = self._gamecontroller.scene.getInstancesAt(clickpoint, self._gamecontroller.scene.itemlayer)
97 if actor_instances: 97 if actor_instances:
98 if actor_instances[0].getId() == "player":
99 return
100
98 obj = self._gamecontroller.scene.objectlist[actor_instances[0].getId()] 101 obj = self._gamecontroller.scene.objectlist[actor_instances[0].getId()]
99 if obj.type == GameObjectTypes["QUESTGIVER"]: 102 if obj.type == GameObjectTypes["QUESTGIVER"]:
100 action = TalkAction(self._gamecontroller.scene.player, obj) 103 action = TalkAction(self._gamecontroller.scene.player, obj)
101 self._gamecontroller.scene.player.nextaction = action 104 self._gamecontroller.scene.player.nextaction = action
102 105
106 action = PickUpItemAction(self._gamecontroller.scene.player, obj) 109 action = PickUpItemAction(self._gamecontroller.scene.player, obj)
107 self._gamecontroller.scene.player.nextaction = action 110 self._gamecontroller.scene.player.nextaction = action
108 111
109 112
110 if (event.getButton() == fife.MouseEvent.RIGHT): 113 if (event.getButton() == fife.MouseEvent.RIGHT):
111 instances = self._gamecontroller.scene.getInstancesAt(clickpoint) 114 instances = self._gamecontroller.scene.getInstancesAt(clickpoint, self._gamecontroller.scene.actorlayer)
112 print "selected instances on actor layer: ", [i.getId() for i in instances]
113 if instances: 115 if instances:
114 #do something 116 self._gamecontroller.logger.log_debug("Selected instance on actor layer: " + instances[0].getId())
115 pass 117
116 118
117 def mouseReleased(self, event): 119 def mouseReleased(self, event):
118 pass 120 pass
119 121
120 def mouseMoved(self, event): 122 def mouseMoved(self, event):
126 128
127 pt = fife.ScreenPoint(event.getX(), event.getY()) 129 pt = fife.ScreenPoint(event.getX(), event.getY())
128 actor_instances = self._gamecontroller.scene.getInstancesAt(pt, self._gamecontroller.scene.actorlayer) 130 actor_instances = self._gamecontroller.scene.getInstancesAt(pt, self._gamecontroller.scene.actorlayer)
129 item_instances = self._gamecontroller.scene.getInstancesAt(pt, self._gamecontroller.scene.itemlayer) 131 item_instances = self._gamecontroller.scene.getInstancesAt(pt, self._gamecontroller.scene.itemlayer)
130 for i in actor_instances: 132 for i in actor_instances:
131 renderer.addOutlined(i, 173, 255, 47, 2) 133 if i.getId() != "player":
134 renderer.addOutlined(i, 173, 255, 47, 2)
132 135
133 for j in item_instances: 136 for j in item_instances:
134 renderer.addOutlined(j, 173, 255, 47, 2) 137 renderer.addOutlined(j, 255, 173, 47, 2)
135 138
136 def mouseEntered(self, event): 139 def mouseEntered(self, event):
137 pass 140 pass
138 141
139 def mouseExited(self, event): 142 def mouseExited(self, event):
219 elif cmd[1] == "actor": 222 elif cmd[1] == "actor":
220 obj = self._scene.loadActor(cmd[2]) 223 obj = self._scene.loadActor(cmd[2])
221 else: 224 else:
222 return result 225 return result
223 except ObjectNotFoundError, e: 226 except ObjectNotFoundError, e:
224 result = "Error while loading object: " + cmd[2] 227 result = "Error: Cannot load [" + cmd[2] + "]. It could not be found!"
225 obj = None 228 obj = None
226 229
227 if obj: 230 if obj:
228 self._scene.addObjectToScene(obj) 231 try:
229 result = "--OK--" 232 self._scene.addObjectToScene(obj)
233 result = "--OK--"
234 except ObjectAlreadyInSceneError, e:
235 result = "Error: [" + cmd[2] + "] is already on the scene."
230 236
231 return result 237 return result
232 238
233 def newGame(self): 239 def newGame(self):
234 self._guicontroller.hideMainMenu() 240 self._guicontroller.hideMainMenu()
280 def _getKeyState(self): 286 def _getKeyState(self):
281 return self._keystate 287 return self._keystate
282 288
283 def _getInstanceRenderer(self): 289 def _getInstanceRenderer(self):
284 return self._instancerenderer 290 return self._instancerenderer
291
292 def _getLogManager(self):
293 return self._application.logger
285 294
286 guicontroller = property(_getGUIController) 295 guicontroller = property(_getGUIController)
287 engine = property(_getEngine) 296 engine = property(_getEngine)
288 settings = property(_getSettings) 297 settings = property(_getSettings)
289 scene = property(_getScene) 298 scene = property(_getScene)
290 keystate = property(_getKeyState) 299 keystate = property(_getKeyState)
291 instancerenderer = property(_getInstanceRenderer) 300 instancerenderer = property(_getInstanceRenderer)
301 logger = property(_getLogManager)