コード例 #1
0
ファイル: State.cs プロジェクト: PaulSchweizer/ActionRpgKit
        /// <summary>
        /// Attack the first Enemy in range.</summary>
        /// <param name="character"></param>
        public void UpdateState(BaseCharacter character)
        {
            if (character.IsMoving)
            {
                character.ChangeState(character.MoveState);
                return;
            }

            if (character.Enemies.Count == 0 || character.TargetedEnemy == null)
            {
                character.ChangeState(character.AlertState);
                return;
            }

            //// If not in Attack Range any more, chase the enemy
            //if (!character.EnemiesInAttackRange.Contains(character.TargetedEnemy))
            //{
            //    character.ChangeState(character.ChaseState);
            //    return;
            //}

            //// Attack
            //if (character.CanAttack())
            //{
            //    character.Attack(character.TargetedEnemy);
            //}
        }
コード例 #2
0
ファイル: State.cs プロジェクト: PaulSchweizer/ActionRpgKit
 /// <summary>
 /// Start chasing the Enemies in range.</summary>
 /// <param name="character"></param>
 public void UpdateState(BaseCharacter character)
 {
     if (character.Enemies.Count == 0)
     {
         character.ChangeState(character.IdleState);
         return;
     }
     if (GameTime.time >= character.AlertnessEndTime)
     {
         character.TargetedEnemy = character.Enemies[0];
         character.ChangeState(character.ChaseState);
     }
 }
コード例 #3
0
ファイル: State.cs プロジェクト: PaulSchweizer/ActionRpgKit
 /// <summary>
 /// Start moving to the desired location.</summary>
 /// <param name="character"></param>
 public void UpdateState(BaseCharacter character)
 {
     if (character.Enemies.Count > 0)
     {
         character.ChangeState(character.AlertState);
     }
     else
     {
         if (!character.IsMoving)
         {
             character.ChangeState(character.IdleState);
         }
     }
 }
コード例 #4
0
ファイル: State.cs プロジェクト: PaulSchweizer/ActionRpgKit
        /// <summary>
        /// Chase the Enemy until he is in attack range.</summary>
        /// <param name="character">The Character</param>
        public void UpdateState(BaseCharacter character)
        {
            if (character.TargetedEnemy == null)
            {
                character.ChangeState(character.AlertState);
                return;
            }

            if (GameTime.time >= character.ChaseEndTime && !character.Enemies.Contains(character.TargetedEnemy))
            {
                character.ChangeState(character.AlertState);
                return;
            }

            if (character.EnemiesInAttackRange.Contains(character.TargetedEnemy))
            {
                character.ChangeState(character.AttackState);
            }
        }