public override void EnterState(BasicAI owner) { IWarnState ownerWithWarningInterface = owner as IWarnState; if (ownerWithWarningInterface != null) { ownerWithWarningInterface.IndicateDanger(); } }
// Can change to States: // -> FollowState, if shouldFollow is true // -> WarnState, if warnTrigger is set // -> IdleState, else public override void UpdateState(BasicAI owner) { IFollowState ownerWithFollowInterface = owner as IFollowState; IWarnState ownerWithWarningInterface = owner as IWarnState; if (ownerWithFollowInterface != null && ownerWithFollowInterface.shouldFollow) { owner.stateMachine.ChangeState(FollowState.Instance); } else if (ownerWithWarningInterface != null && ownerWithWarningInterface.dangerApparent == true) { owner.stateMachine.ChangeState(WarnState.Instance); } else { owner.stateMachine.ChangeState(IdleState.Instance); } }
// Can change to States: // -> IndicateSafteyState, if safteyTrigger is true // -> WaitForSafetyState, else public override void UpdateState(BasicAI owner) { IWarnState ownerWithWarnInterdace = owner as IWarnState; IFollowState ownerWithFollowInterface = owner as IFollowState; IDangerZoneState ownerWithDangerZoneInterface = owner as IDangerZoneState; if (ownerWithWarnInterdace != null && ownerWithWarnInterdace.dangerApparent == false) { owner.stateMachine.ChangeState(IndicateSafteyState.Instance); } else if (ownerWithDangerZoneInterface != null && ownerWithDangerZoneInterface.immediateDangerApparent == true) { owner.stateMachine.ChangeState(EnterDangerZoneState.Instance); } else if (ownerWithFollowInterface != null && ownerWithFollowInterface.shouldFollow == true) { owner.stateMachine.ChangeState(WaitForSafetyFollowState.Instance); } else { owner.stateMachine.ChangeState(WaitForSafetyState.Instance); } }