public override void AICalculate() { if (this.m_Target == null) { BombermanIdleState idleState = new BombermanIdleState(this.m_AIBehavior, false); this.m_AIBehavior.ChangeState(idleState); } else { float distanceSqr = Vector2.SqrMagnitude((Vector2)PositionConvertor.GetWorldPositionFromActorTileIndex (this.m_TargetPosition) - (Vector2)this.m_AIBehavior.transform.position); if (distanceSqr <= this.CharacterAI.AttackBehavior.AttackScopeSqr) { this.m_HPBehavior.Bomb(); List <GameObject> relatedBuildings = new List <GameObject>(); if (this.CharacterAI.AttackBehavior.DamageScope > 0) { relatedBuildings = BattleSceneHelper.Instance.GetNearByBuilding(this.m_AIBehavior.transform.position, this.CharacterAI.AttackBehavior.DamageScope); } else { relatedBuildings.Add(this.m_Target); } foreach (GameObject building in relatedBuildings) { BuildingHPBehavior targetHP = building.GetComponent <BuildingHPBehavior>(); targetHP.DecreaseHP(this.CharacterAI.AttackBehavior.AttackValue, this.CharacterAI.AttackBehavior.AttackCategory); } } else { base.AICalculate(); } } }
public override void SetIdle(bool isResponseInstantly) { BombermanIdleState idleState = new BombermanIdleState(this, isResponseInstantly); this.ChangeState(idleState); }
protected override void OnTargetReached() { BombermanIdleState idleState = new BombermanIdleState(this.m_AIBehavior, false); this.m_AIBehavior.ChangeState(idleState); }