diff clients/rio_de_hola/scripts/girl.py @ 0:4a0efb7baf70

* Datasets becomes the new trunk and retires after that :-)
author mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
date Sun, 29 Jun 2008 18:44:17 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/clients/rio_de_hola/scripts/girl.py	Sun Jun 29 18:44:17 2008 +0000
@@ -0,0 +1,46 @@
+from agent import Agent
+import settings as TDS
+import fife
+
+_STATE_NONE, _STATE_IDLE, _STATE_RUN, _STATE_FOLLOW = 0, 1, 2, 3
+
+GIRL_SPEED = 3 * TDS.TestAgentSpeed
+class Girl(Agent):
+	def __init__(self, model, agentName, layer, uniqInMap=True):
+		super(Girl, self).__init__(model, agentName, layer, uniqInMap)
+		self.state = _STATE_NONE
+		self.waypoints = ((67, 80), (75, 44))
+		self.waypoint_counter = 0
+		self.hero = self.layer.getInstance('PC')
+
+	def onInstanceActionFinished(self, instance, action):
+		if self.state in (_STATE_RUN, _STATE_FOLLOW):
+			self.idle()
+		else:
+			if self.waypoint_counter % 3:
+				self.waypoint_counter += 1
+				self.follow_hero()
+			else:
+				self.run(self.getNextWaypoint())
+
+	def getNextWaypoint(self):
+		self.waypoint_counter += 1
+		l = fife.Location(self.layer)
+		l.setLayerCoordinates(fife.ModelCoordinate(*self.waypoints[self.waypoint_counter % len(self.waypoints)]))
+		return l
+	
+	def start(self):
+		self.follow_hero()
+	
+	def idle(self):
+		self.state = _STATE_IDLE
+		self.agent.act('stand', self.agent.getFacingLocation(), False)
+		
+	def follow_hero(self):
+		self.state = _STATE_FOLLOW
+		self.agent.follow('run', self.hero, GIRL_SPEED)
+		
+	def run(self, location):
+		self.state = _STATE_RUN
+		self.agent.move('run', location, GIRL_SPEED)
+