Esempio n. 1
0
 def notifyHarvesting(self):
   if self._harvesting: eventType = Event.ENTITY_HARVEST_START
   else:                eventType = Event.ENTITY_HARVEST_STOP
   e = Event(self._entity._world._time, eventType)
   e.entity = self._entity
   e.target = self.target
   self._entity._em.handleEvent(e)
Esempio n. 2
0
 def execute(self):
   # Stop the unit from moving
   vC = self.entity.getComponent(VelocityComponent)
   if vC != None:
     vC.v = Vector2(0, 0)
   
   # Set up state for reloading
   sC =  self.entity.getComponent(ShootingComponent)
   sC.reloadTimeLeft = sC.reloadDuration
   sC.shootTimeLeft = sC.shootDuration
   
   # Change facing
   fC = self.entity.getComponent(FacingComponent)
   if fC != None and self.target != None:
     spC = self.entity.getComponent(PositionComponent) 
     tpC = self.target.getComponent(PositionComponent)
     if spC.p.x - tpC.p.x > 0: fC.facingLeft = True
     else:                     fC.facingLeft = False
   
   # Event handling
   event = Event(self.entity._world._time, Event.ENTITY_ATTACKING)
   event.source = self.entity
   event.target = self.target
   self.entity._em.handleEvent(event)
   
   
   # Hitting the target
   if self.target != None:
     toHit = Rand.r.random()
     if toHit < sC.hitChance:
       hC = self.target.getComponent(HPComponent)
       if hC != None:
         hC.hp = hC.hp - sC.damage