private void InitMachine() { Log.Info("InitMachine"); // if (saveLoadWinPos == null) // saveLoadWinPos = new SaveLoadWinPos(); // Create the states initial = new InitialState("Init", _machine); settings = new SettingState("Settings", _machine); sequence = new SequenceState("Sequence", _machine); launch = new LaunchState("Launch", _machine); launched = new LaunchedState("Launched", _machine); finish = new KFSMState("Finish"); // Add events to the states var go2Finish = new KFSMEvent("Finish") { GoToStateOnEvent = finish, updateMode = KFSMUpdateMode.MANUAL_TRIGGER }; var go2Settings = new KFSMEvent("Settings") { GoToStateOnEvent = settings, updateMode = KFSMUpdateMode.MANUAL_TRIGGER }; initial.AddEvent(go2Settings); var go2Init = new KFSMEvent("Init") { GoToStateOnEvent = initial, updateMode = KFSMUpdateMode.MANUAL_TRIGGER }; settings.AddEvent(go2Init); sequence.AddEvent(go2Init); finish.AddEvent(go2Init); var go2Sequence = new KFSMEvent("Sequence") { GoToStateOnEvent = sequence, updateMode = KFSMUpdateMode.MANUAL_TRIGGER }; initial.AddEvent(go2Sequence); var go2Launch = new KFSMEvent("Launch") { GoToStateOnEvent = launch, updateMode = KFSMUpdateMode.MANUAL_TRIGGER }; initial.AddEvent(go2Launch); launch.AddEvent(go2Init); launch.AddEvent(go2Finish); var go2Launched = new KFSMEvent("Launched") { GoToStateOnEvent = launched, updateMode = KFSMUpdateMode.MANUAL_TRIGGER }; launch.AddEvent(go2Launched); initial.AddEvent(go2Finish); launched.AddEvent(go2Finish); // Add states to the state machine _machine.AddState(initial); _machine.AddState(settings); _machine.AddState(sequence); _machine.AddState(launch); _machine.AddState(finish); }