Mercurial > fife-parpg
view clients/rio_de_hola/scripts/agents/girl.py @ 121:ae3b8139c7c7
* Applying settings patch by greyghost
* See: #274
author | mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Tue, 05 Aug 2008 14:44:15 +0000 |
parents | 214e3eb81eb2 |
children | 9a1529f9625e |
line wrap: on
line source
from agent import Agent import fife from settings import Setting TDS = Setting() _STATE_NONE, _STATE_IDLE, _STATE_RUN, _STATE_FOLLOW = 0, 1, 2, 3 GIRL_SPEED = 3 * float(TDS.readSetting("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)