Example #1
0
        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);
        }