public void AddTrigger(TriggersTemp newTrigger) { switch (newTrigger) { case TriggersTemp.TriggerWalk: { if (!CurrentState.StateFlags.IsMoving) { Triggers.Add(newTrigger); } break; } case TriggersTemp.TriggerIdle: { if (CurrentState.StateFlags.IsMoving) { Triggers.Add(newTrigger); } break; } case TriggersTemp.TriggerAim: { if (!CurrentState.StateFlags.IsAiming) { Triggers.Add(newTrigger); } break; } case TriggersTemp.TriggerUnaim: { if (CurrentState.StateFlags.IsAiming) { Triggers.Add(newTrigger); } break; } case TriggersTemp.TriggerFall: { Triggers.Add(newTrigger); break; } case TriggersTemp.TriggerGetUp: { Triggers.Add(newTrigger); break; } } }
/*public void NewStateTrigger(TriggersTemp triggersTemp) * { * if (StateController.CurrentState is StateWalk) * { * if (triggersTemp==TriggersTemp.TriggerIdle) * { * StateController.CurrentState = _stateIdle; * StateController.CurrentState.StateEnterAction(); * } * } * else * { * if (StateController.CurrentState is StateIdle) * { * if (triggersTemp == TriggersTemp.TriggerWalk) * { * StateController.CurrentState = _walkState; * StateController.CurrentState.StateEnterAction(); * } * } * } * }*/ public void TrySetTrigger(TriggersTemp triggerName) { foreach (StateConnection connection in CurrentNode.ConnectionsFromThis) { if (connection.TriggerName == triggerName) { //LastNode = CurrentNode; CurrentNode = connection.StateNodeTo; StateController.CurrentState.StateExitAction(CurrentNode.State); StateController.CurrentState = CurrentNode.State; StateController.CurrentState.StateEnterAction(); StateController.CurrentState.UnInicNotStateCommands(); //CurrentNode.State.StateEnterAction(); break; } } }