Mercurial > parpg-source
comparison behaviours/npc.py @ 103:57f1cff9a75d
Added animation queue and method the base behaviour class.
author | KarstenBock@gmx.net |
---|---|
date | Fri, 30 Sep 2011 14:04:29 +0200 |
parents | 3f6299f975fe |
children | 90ad38b00f13 |
comparison
equal
deleted
inserted
replaced
102:2eb316546eae | 103:57f1cff9a75d |
---|---|
27 | 27 |
28 self.parent = parent | 28 self.parent = parent |
29 self.state = base._AGENT_STATE_NONE | 29 self.state = base._AGENT_STATE_NONE |
30 self.pc = None | 30 self.pc = None |
31 self.target_loc = None | 31 self.target_loc = None |
32 self.nextAction = None | |
33 | 32 |
34 # hard code these for now | 33 # hard code these for now |
35 self.distRange = (2, 4) | 34 self.distRange = (2, 4) |
36 # these are parameters to lower the rate of wandering | 35 # these are parameters to lower the rate of wandering |
37 # wander rate is the number of "IDLEs" before a wander step | 36 # wander rate is the number of "IDLEs" before a wander step |
79 """Controls the NPC when it is idling. Different actions | 78 """Controls the NPC when it is idling. Different actions |
80 based on the NPC's state. | 79 based on the NPC's state. |
81 @return: None""" | 80 @return: None""" |
82 if self.state == base._AGENT_STATE_NONE: | 81 if self.state == base._AGENT_STATE_NONE: |
83 self.state = base._AGENT_STATE_IDLE | 82 self.state = base._AGENT_STATE_IDLE |
84 self.agent.act('stand', self.agent.getFacingLocation()) | 83 self.animate('stand') |
85 elif self.state == base._AGENT_STATE_IDLE: | 84 elif self.state == base._AGENT_STATE_IDLE: |
86 if self.wanderCounter > self.wanderRate: | 85 if self.wanderCounter > self.wanderRate: |
87 self.wanderCounter = 0 | 86 self.wanderCounter = 0 |
88 self.state = base._AGENT_STATE_WANDER | 87 self.state = base._AGENT_STATE_WANDER |
89 else: | 88 else: |
90 self.wanderCounter += 1 | 89 self.wanderCounter += 1 |
91 self.state = base._AGENT_STATE_NONE | 90 self.state = base._AGENT_STATE_NONE |
92 | 91 |
93 self.target_loc = self.getTargetLocation() | 92 self.target_loc = self.getTargetLocation() |
94 self.agent.act('stand', self.agent.getFacingLocation()) | 93 self.animate('stand') |
95 elif self.state == base._AGENT_STATE_WANDER: | 94 elif self.state == base._AGENT_STATE_WANDER: |
96 self.wander(self.target_loc) | 95 self.wander(self.target_loc) |
97 self.state = base._AGENT_STATE_NONE | 96 self.state = base._AGENT_STATE_NONE |
98 elif self.state == base._AGENT_STATE_TALK: | 97 elif self.state == base._AGENT_STATE_TALK: |
99 self.agent.act('stand', self.pc.getLocation()) | 98 self.animate('stand', self.pc.getLocation()) |
100 | 99 |
101 def wander(self, location): | 100 def wander(self, location): |
102 """Nice slow movement for random walking. | 101 """Nice slow movement for random walking. |
103 @type location: fife.Location | 102 @type location: fife.Location |
104 @param location: Where the NPC will walk to. | 103 @param location: Where the NPC will walk to. |