void setFSM() { _fsm = new FSMSquirrel(); _fsm.squirrel = this; var onFloor = new StateOnFloor(_fsm); var jumping = new StateJumping(_fsm); _climbing = new StateClimbing(_fsm); var falling = new StateFalling(_fsm); _hiding = new StateHiding(_fsm); //onFloorTo onFloor.transitions[InputSquirrel.jumpPressed] = jumping; onFloor.transitions[InputSquirrel.wallNearAndClimbPressed] = _climbing; onFloor.transitions[InputSquirrel.leavePlatform] = falling; //onFloor.transitions[InputSquirrel.ReachedDestination] = shootingCurve; onFloor.transitions[InputSquirrel.onHideSpotAndPressedHideKey] = _hiding; //jumpingTo jumping.transitions[InputSquirrel.timeOfJumpEnded] = falling; jumping.transitions[InputSquirrel.wallNearAndClimbPressed] = _climbing; //jumping.transitions[InputSquirrel.TargetSeen] = planning; //climbingTo _climbing.transitions[InputSquirrel.jumpPressed] = jumping; _climbing.transitions[InputSquirrel.unpressedClimb] = falling; //fallingTo falling.transitions[InputSquirrel.floorCollision] = onFloor; falling.transitions[InputSquirrel.wallNearAndClimbPressed] = _climbing; //hidingTo _hiding.transitions[InputSquirrel.onHideSpotAndPressedHideKey] = onFloor; _fsm.SetInitial(falling); }
void MakeFSM() { StateHidden hidden = new StateHidden(this, _playerRevealDistance, _bulletInstantRevealDistance); hidden.AddTransition(Transition.SawByPlayer, StateID.Revealing); hidden.AddTransition(Transition.Revealed, StateID.Hiding); StateRevealing revealing = new StateRevealing(this); revealing.AddTransition(Transition.Revealed, StateID.Hiding); StateHiding hiding = new StateHiding(this, _moveSpeed, _speedLostOnShot, _speedRecoverPerSecond, _animator, _spriteRenderer); hiding.AddTransition(Transition.FoundHideout, StateID.Hidden); hiding.AddTransition(Transition.Caught, StateID.Caught); StateCaught caught = new StateCaught(this); caught.AddTransition(Transition.MiniGameLost, StateID.Hiding); caught.AddTransition(Transition.Repaired, StateID.Repaired); _fsm = new FSMSystem(hidden, revealing, hiding, caught); }
public void Start() { // Creates Transitions Transition startMining = new TransitionStartMining(gameObject); Transition stopMining = new TransitionStopMining(); Transition startWait = new TransitionStartWait(gameObject); Transition stopWait = new TransitionStopWait(gameObject); Transition alerted = new TransitionAlerted(gameObject); Transition wakeUp = new TransitionWakeUp(gameObject); Transition sleep = new TransitionSleep(gameObject); Transition goToSleep = new TransitionGoToSleep(gameObject); Transition backToMining = new TransitionBackToMining(gameObject); walkToMineTrans.Add(startMining); walkToMineTrans.Add(alerted); miningTrans.Add(stopMining); miningTrans.Add(alerted); walkToChestTrans.Add(startWait); walkToChestTrans.Add(alerted); waitingTrans.Add(stopWait); waitingTrans.Add(alerted); hidingTrans.Add(backToMining); sleepingTrans.Add(wakeUp); walkingTrans.Add(sleep); wanderTrans.Add(goToSleep); // Creates States StateWalkToChest walkToChest = new StateWalkToChest(gameObject, walkToChestTrans); StateMining mining = new StateMining(gameObject, miningTrans, "Mining"); StateWaiting waiting = new StateWaiting(gameObject, waitingTrans, "Waiting"); StateHiding hiding = new StateHiding(gameObject, hidingTrans); StateWaiting sleeping = new StateWaiting(gameObject, sleepingTrans, "Sleeping"); StateWander wander = new StateWander(gameObject, wanderTrans); StateWaiting walking = new StateWaiting(gameObject, walkingTrans, "Walking"); if (Object.Equals(gameObject.name, "Miner (iron)")) { StateWalkToMine ironMiner = new StateWalkToMine(gameObject, gameObject.GetComponent <pathFind>().graph, "OreIron", walkToMineTrans); initialState = ironMiner; states.Add(ironMiner); states.Add(walkToChest); states.Add(mining); states.Add(waiting); states.Add(hiding); } else if (Object.Equals(gameObject.name, "Miner (gold)")) { StateWalkToMine goldMiner = new StateWalkToMine(gameObject, gameObject.GetComponent <pathFind>().graph, "OreGold", walkToMineTrans); initialState = goldMiner; states.Add(goldMiner); states.Add(walkToChest); states.Add(mining); states.Add(waiting); states.Add(hiding); } else if (Object.Equals(gameObject.name, "Miner (diamond)")) { StateWalkToMine diamondMiner = new StateWalkToMine(gameObject, gameObject.GetComponent <pathFind>().graph, "OreDiamond", walkToMineTrans); initialState = diamondMiner; states.Add(diamondMiner); states.Add(walkToChest); states.Add(mining); states.Add(waiting); states.Add(hiding); } else if (Object.Equals(gameObject.name, "Monster")) { initialState = sleeping; states.Add(sleeping); states.Add(wander); states.Add(walking); } currentState = initialState; }