diff 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
line wrap: on
line diff
--- a/demos/rpg/scripts/gamecontroller.py	Mon May 31 18:44:48 2010 +0000
+++ b/demos/rpg/scripts/gamecontroller.py	Mon May 31 20:25:46 2010 +0000
@@ -35,7 +35,7 @@
 from scripts.guicontroller import GUIController
 from scripts.actors.baseactor import TalkAction, PickUpItemAction
 from scripts.objects.baseobject import GameObjectTypes
-from scripts.misc.exceptions import ObjectNotFoundError
+from scripts.misc.exceptions import ObjectNotFoundError, ObjectAlreadyInSceneError
 
 
 class KeyState(object):
@@ -95,6 +95,9 @@
 			actor_instances = self._gamecontroller.scene.getInstancesAt(clickpoint, self._gamecontroller.scene.actorlayer)
 			item_instances = self._gamecontroller.scene.getInstancesAt(clickpoint, self._gamecontroller.scene.itemlayer)
 			if actor_instances:
+				if actor_instances[0].getId() == "player":
+					return
+					
 				obj = self._gamecontroller.scene.objectlist[actor_instances[0].getId()]
 				if obj.type == GameObjectTypes["QUESTGIVER"]:
 					action = TalkAction(self._gamecontroller.scene.player, obj)
@@ -108,11 +111,10 @@
 					
 
 		if (event.getButton() == fife.MouseEvent.RIGHT):
-			instances = self._gamecontroller.scene.getInstancesAt(clickpoint)
-			print "selected instances on actor layer: ", [i.getId() for i in instances]
+			instances = self._gamecontroller.scene.getInstancesAt(clickpoint, self._gamecontroller.scene.actorlayer)
 			if instances:
-				#do something
-				pass
+				self._gamecontroller.logger.log_debug("Selected instance on actor layer: " + instances[0].getId())
+
 				
 	def mouseReleased(self, event):
 		pass
@@ -128,10 +130,11 @@
 		actor_instances = self._gamecontroller.scene.getInstancesAt(pt, self._gamecontroller.scene.actorlayer)
 		item_instances = self._gamecontroller.scene.getInstancesAt(pt, self._gamecontroller.scene.itemlayer)
 		for i in actor_instances:
-			renderer.addOutlined(i, 173, 255, 47, 2)
+			if i.getId() != "player":
+				renderer.addOutlined(i, 173, 255, 47, 2)
 			
 		for j in item_instances:
-			renderer.addOutlined(j, 173, 255, 47, 2)
+			renderer.addOutlined(j, 255, 173, 47, 2)
 
 	def mouseEntered(self, event):
 		pass
@@ -221,12 +224,15 @@
 					else:
 						return result
 				except ObjectNotFoundError, e:
-					result = "Error while loading object: " + cmd[2]
+					result = "Error: Cannot load [" + cmd[2] + "].  It could not be found!"
 					obj = None
 					
 				if obj:
-					self._scene.addObjectToScene(obj)
-					result = "--OK--"
+					try:
+						self._scene.addObjectToScene(obj)
+						result = "--OK--"
+					except ObjectAlreadyInSceneError, e:
+						result = "Error: [" + cmd[2] + "] is already on the scene."
 			
 		return result
 		
@@ -282,6 +288,9 @@
 	
 	def _getInstanceRenderer(self):
 		return self._instancerenderer
+		
+	def _getLogManager(self):
+		return self._application.logger
 	
 	guicontroller = property(_getGUIController) 
 	engine = property(_getEngine)
@@ -289,3 +298,4 @@
 	scene = property(_getScene)
 	keystate = property(_getKeyState)
 	instancerenderer = property(_getInstanceRenderer)
+	logger = property(_getLogManager)