protected void MakeFSM() { mFSMSystem = new SoldierFSMSytem(); SoldierIdleState idleState = new SoldierIdleState(mFSMSystem, this); idleState.AddTransition(SoldierTransition.SeeEnemy, SoldierStateID.Chase); SoldierChaseState chaseState = new SoldierChaseState(mFSMSystem, this); chaseState.AddTransition(SoldierTransition.NoEnemy, SoldierStateID.Idle); chaseState.AddTransition(SoldierTransition.CanAttack, SoldierStateID.Attack); SoldierAttackState attackState = new SoldierAttackState(mFSMSystem, this); attackState.AddTransition(SoldierTransition.NoEnemy, SoldierStateID.Idle); attackState.AddTransition(SoldierTransition.SeeEnemy, SoldierStateID.Chase); mFSMSystem.AddState(idleState, chaseState, attackState); }
public ISoldierState(SoldierFSMSytem fsm, ICharacter character) { mFSM = fsm; mCharacter = character; }
public SoldierChaseState(SoldierFSMSytem fsm, ICharacter c) : base(fsm, c) { mStateID = SoldierStateID.Chase; }
public SoldierAttackState(SoldierFSMSytem fsm, ICharacter c) : base(fsm, c) { mStateID = SoldierStateID.Attack; mAttackTimer = mAttackTime; }