protected virtual void RaisePlayerFinishedEvent(object sender, EventArgs e) => InvokeActionOnMainThread(() => PlayerFinished?.Invoke(sender, e));
/// <summary> /// Setup the state machine. /// </summary> protected override void MakeFSM() { base.MakeFSM(); PlayerWalk walk = new PlayerWalk(StateID.Walk, this); walk.AddTransition(Transition.DestinationReached, StateID.Idle); walk.AddTransition(Transition.FoundPlayer, StateID.Finished); PlayerIdle idle = new PlayerIdle(StateID.Idle, this); idle.AddTransition(Transition.WalkToDestination, StateID.Walk); idle.AddTransition(Transition.FoundPlayer, StateID.Finished); PlayerFinished finished = new PlayerFinished(StateID.Finished, this.gameObject); fsm.AddState(walk); fsm.AddState(idle); fsm.AddState(finished); }
protected override void MakeFSM() { base.MakeFSM(); EnemyRandomWalk randomWalk = new EnemyRandomWalk(StateID.RandomWalk, this); randomWalk.AddTransition(Transition.FoundBreadcrumb, StateID.BreadcrumbWalk); randomWalk.AddTransition(Transition.FoundPlayer, StateID.Finished); EnemyBreadcrumbWalk breadcrumbWalk = new EnemyBreadcrumbWalk(StateID.BreadcrumbWalk, this); breadcrumbWalk.AddTransition(Transition.LostBreadcrumb, StateID.RandomWalk); breadcrumbWalk.AddTransition(Transition.FoundPlayer, StateID.Finished); PlayerFinished finished = new PlayerFinished(StateID.Finished, this.gameObject); fsm = new FiniteStateMachine(); fsm.AddState(randomWalk); fsm.AddState(breadcrumbWalk); fsm.AddState(finished); }