diff --git a/Shared/FSM.cs b/Shared/FSM.cs index 3fc1b01..413f96c 100644 --- a/Shared/FSM.cs +++ b/Shared/FSM.cs @@ -2,17 +2,17 @@ using System.Collections.Generic; namespace SemiColinGames { - public interface IState { + public interface IState { public void Enter(); - public string? Update(NPC npc, float modelTime, AABB[] collisionTargets); + public string? Update(T obj, float modelTime, AABB[] collisionTargets); } - public class FSM { + public class FSM { float timeInState = 0f; - Dictionary states; - IState state; + Dictionary> states; + IState state; - public FSM(Dictionary states, string initial) { + public FSM(Dictionary> states, string initial) { this.states = states; StateName = initial; Transition(StateName); @@ -20,9 +20,9 @@ namespace SemiColinGames { public string StateName { get; private set; } - public void Update(NPC npc, float modelTime, AABB[] collisionTargets) { + public void Update(T obj, float modelTime, AABB[] collisionTargets) { timeInState += modelTime; - string? newState = state.Update(npc, modelTime, collisionTargets); + string? newState = state.Update(obj, modelTime, collisionTargets); if (newState != null) { Transition(newState); } @@ -32,7 +32,7 @@ namespace SemiColinGames { Debug.WriteLine("{0} -> {1} @ {2}", StateName, state, timeInState); timeInState = 0f; StateName = state; - IState newState = states[state]; + IState newState = states[state]; this.state = newState; this.state.Enter(); } diff --git a/Shared/NPC.cs b/Shared/NPC.cs index 716c906..545c3a2 100644 --- a/Shared/NPC.cs +++ b/Shared/NPC.cs @@ -3,7 +3,7 @@ using Microsoft.Xna.Framework.Graphics; using System.Collections.Generic; namespace SemiColinGames { - class IdleState : IState { + class IdleState : IState { float timeInState = 0; public void Enter() { @@ -20,7 +20,7 @@ namespace SemiColinGames { } } - class RunState : IState { + class RunState : IState { public void Enter() {} public string? Update(NPC npc, float modelTime, AABB[] collisionTargets) { @@ -50,11 +50,11 @@ namespace SemiColinGames { private const int spriteHeight = 81; private const int spriteCenterYOffset = 2; - private FSM fsm; + private FSM fsm; public NPC(Point position) { Position = position; - fsm = new FSM(new Dictionary { + fsm = new FSM(new Dictionary> { { "idle", new IdleState() }, { "run", new RunState() } }, "run");