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