예제 #1
0
 public override void collide(ScreenObject collider, TimeSpan timeSpan)
 {
     if (_state != STATE_GROUND)
     {
         if ((collider is Shot || collider is WeaponAttack) && collider.getSide() != _side && collider.getState() != STATE_DEAD && collider.getState() != STATE_DYING && _state != STATE_GROUND && _state != STATE_GETTINGHIT)
         {
             if (collider is PikeTip)
             {
                 Pikeman pikeman = ((PikeTip)collider).getPikeman();
                 if (pikeman.getState() != Pikeman.STATE_RECOILING && pikeman.getState() != STATE_DYING && pikeman.getState() != STATE_DEAD && pikeman.getState() != Soldier.STATE_MELEE_LOSS && pikeman.getState() != Soldier.STATE_MELEE_WIN)
                 {
                     pikeman.recoil();
                     ground();
                 }
             }
             else if (collider is LanceTip)
             {
                 Cavalry pikeman = ((LanceTip)collider).getCavalry();
                 if (pikeman.getState() != Cavalry.STATE_RECOILING && pikeman.getState() != STATE_DYING && pikeman.getState() != STATE_DEAD && pikeman.getState() != Soldier.STATE_MELEE_LOSS && pikeman.getState() != Soldier.STATE_MELEE_WIN)
                 {
                     pikeman.recoil();
                     ground();
                 }
             }
             else if (collider is Shot)
             {
                 collider.setState(STATE_DEAD);
                 ground();
             }
         }
         else if ((collider is Soldier) && collider.getSide() != _side && collider.getState() != STATE_DEAD && collider.getState() != STATE_DEAD && collider.getState() != STATE_DYING && collider.getState() != Soldier.STATE_ONEATTACK && _state != STATE_GROUND && _state != STATE_GETTINGHIT)
         {
             ((Soldier)collider).oneAttack(this);
             _state = STATE_GETTINGHIT;
             _stateTimer = ((Soldier)collider).getOneAttackTime();
         }
     }
 }