Example #1
0
        private void OnStateChange(object sender, StateChangeArgs args)
        {
            switch (args.To)
            {
            case State.Intro:
                break;

            case State.Idle:
                if (Administrant.IsLocalPlayer)
                {
                    Game.DisplayHelp("Press " + System.Windows.Forms.Keys.Space + " to pump their chest.", 2000);
                }
                adminTask   = Administrant.Tasks.PlayAnimation("mini@cpr@char_a@cpr_def", "cpr_pumpchest_idle", -1, 4.0f, -8.0f, 0, AnimationFlags.Loop);
                patientTask = Patient.Tasks.PlayAnimation("mini@cpr@char_b@cpr_def", "cpr_pumpchest_idle", -1, 4.0f, -8.0f, 0, AnimationFlags.Loop);
                break;

            case State.Pump:
                adminTask   = Administrant.Tasks.PlayAnimation("mini@cpr@char_a@cpr_str", "cpr_pumpchest", -1, 4.0f, -8.0f, 0, AnimationFlags.None);
                patientTask = Patient.Tasks.PlayAnimation("mini@cpr@char_b@cpr_str", "cpr_pumpchest", -1, 4.0f, -8.0f, 0, AnimationFlags.None);
                Pumps++;
                break;

            case State.Success:
                adminTask   = Administrant.Tasks.PlayAnimation("mini@cpr@char_a@cpr_str", "cpr_success", -1, 4.0f, -8.0f, 0, AnimationFlags.None);
                patientTask = Patient.Tasks.PlayAnimation("mini@cpr@char_b@cpr_str", "cpr_success", -1, 4.0f, -8.0f, 0, AnimationFlags.None);
                NativeFunction.Natives.ClearFacialIdleAnimOverride(Patient);
                NativeFunction.Natives.SetFacialIdleAnimOverride(Patient, "mood_Happy_1", 0);
                break;

            case State.Failure:
                adminTask   = Administrant.Tasks.PlayAnimation("mini@cpr@char_a@cpr_str", "cpr_fail", -1, 4.0f, -8.0f, 0, AnimationFlags.None);
                patientTask = Patient.Tasks.PlayAnimation("mini@cpr@char_b@cpr_str", "cpr_fail", -1, 4.0f, -8.0f, 0, AnimationFlags.None);
                break;
            }
        }
Example #2
0
 /// <summary>
 /// 状态改变完成之后回调,执行ChangeGameState
 /// </summary>
 public void ChangeGameStateQueue()
 {
     if (0 != this.m_GameStateQueue.Count)
     {
         StateChangeArgs stateChangeArgs = this.m_GameStateQueue.Dequeue();
         this.ChangeGameState(stateChangeArgs.GameState, stateChangeArgs.LoadingStyle, stateChangeArgs.CallBack);
     }
 }
 public override void Perform(StateChangeArgs stateChangeDetails)
 {
     stateChangeDetails.StartState.RaisePreExitEvent(stateChangeDetails);
     stateChangeDetails.StartState.RaiseExitEvent(stateChangeDetails);
     stateChangeDetails.StartState.RaisePostExitEvent(stateChangeDetails);
     stateChangeDetails.EndState.RaisePreEnterEvent(stateChangeDetails);
     stateChangeDetails.EndState.RaiseEnterEvent(stateChangeDetails);
     stateChangeDetails.EndState.RaisePostEnterEvent(stateChangeDetails);
     RaiseTransitionCompletedEvent();
 }
Example #4
0
 protected virtual void OnStateChanged(object sender, StateChangeArgs args)
 {
     //Check if we are currently paused displaying the key frame waiting for the user to
     //go in to Play. If so we can stop
     if (inKeyFrame)
     {
         ResetPlayerWindow();
         inKeyFrame = false;
     }
 }
Example #5
0
        public void TestStateOutsideSetup()
        {
            StateWorker stateWorker = new StateWorker();

            mState.EventDispatcher.AddListener <StatePreEnterEvent>(stateWorker.OnPreEnter);
            mState.EventDispatcher.AddListener <StateEnterEvent>(stateWorker.OnEnter);
            mState.EventDispatcher.AddListener <StatePostEnterEvent>(stateWorker.OnPostEnter);
            mState.EventDispatcher.AddListener <StatePreUpdateEvent>(stateWorker.OnPreUpdate);
            mState.EventDispatcher.AddListener <StateUpdateEvent>(stateWorker.OnUpdate);
            mState.EventDispatcher.AddListener <StatePostUpdateEvent>(stateWorker.OnPostUpdate);
            mState.EventDispatcher.AddListener <StatePreExitEvent>(stateWorker.OnPreExit);
            mState.EventDispatcher.AddListener <StateExitEvent>(stateWorker.OnExit);
            mState.EventDispatcher.AddListener <StatePostExitEvent>(stateWorker.OnPostExit);
            Assert.That(stateWorker.mOnPreEnterCalledCount, Is.EqualTo(0));
            Assert.That(stateWorker.mOnEnterCalledCount, Is.EqualTo(0));
            Assert.That(stateWorker.mOnPostEnterCalledCount, Is.EqualTo(0));
            Assert.That(stateWorker.mOnPreUpdateCalledCount, Is.EqualTo(0));
            Assert.That(stateWorker.mOnUpdateCalledCount, Is.EqualTo(0));
            Assert.That(stateWorker.mOnPostUpdateCalledCount, Is.EqualTo(0));
            Assert.That(stateWorker.mOnPreExitCalledCount, Is.EqualTo(0));
            Assert.That(stateWorker.mOnExitCalledCount, Is.EqualTo(0));
            Assert.That(stateWorker.mOnPostExitCalledCount, Is.EqualTo(0));
            StateChangeArgs stateChangeDetails = new StateChangeArgs(null, null, null, null, null);

            mState.RaisePreEnterEvent(stateChangeDetails);
            mState.RaiseEnterEvent(stateChangeDetails);
            mState.RaisePostEnterEvent(stateChangeDetails);
            mState.RaisePreUpdateEvent();
            mState.RaiseUpdateEvent();
            mState.RaisePostUpdateEvent();
            mState.RaisePreExitEvent(stateChangeDetails);
            mState.RaiseExitEvent(stateChangeDetails);
            mState.RaisePostExitEvent(stateChangeDetails);
            Assert.That(stateWorker.mOnPreEnterCalledCount, Is.EqualTo(1));
            Assert.That(stateWorker.mOnEnterCalledCount, Is.EqualTo(1));
            Assert.That(stateWorker.mOnPostEnterCalledCount, Is.EqualTo(1));
            Assert.That(stateWorker.mOnPreUpdateCalledCount, Is.EqualTo(1));
            Assert.That(stateWorker.mOnUpdateCalledCount, Is.EqualTo(1));
            Assert.That(stateWorker.mOnPostUpdateCalledCount, Is.EqualTo(1));
            Assert.That(stateWorker.mOnPreExitCalledCount, Is.EqualTo(1));
            Assert.That(stateWorker.mOnExitCalledCount, Is.EqualTo(1));
            Assert.That(stateWorker.mOnPostExitCalledCount, Is.EqualTo(1));
            for (int i = 0; i < 10; i++)
            {
                mState.RaiseUpdateEvent();
            }
            Assert.That(stateWorker.mOnUpdateCalledCount, Is.EqualTo(11));
        }
Example #6
0
 protected virtual void OnStateChanged(object o, StateChangeArgs args)
 {
     if (args.Playing)
     {
         playbutton.Hide();
         pausebutton.Show();
     }
     else
     {
         playbutton.Show();
         pausebutton.Hide();
     }
     if (PlayStateChanged != null)
     {
         PlayStateChanged(this, args.Playing);
     }
 }
Example #7
0
 /// <summary>
 /// 改变游戏状态,进行改变的处理
 /// </summary>
 /// <param name="eGameState"></param>
 /// <param name="loadingStyle"></param>
 /// <param name="callBackWhenChangeFinished"></param>
 public void ChangeGameState(EnumGameState eGameState, ELoadingStyle loadingStyle, Action callBackWhenChangeFinished)
 {
     if (this.IsChangingState)
     {
         StateChangeArgs item = new StateChangeArgs
         {
             GameState    = eGameState,
             LoadingStyle = loadingStyle,
             CallBack     = callBackWhenChangeFinished
         };
         this.m_GameStateQueue.Enqueue(item);
     }
     else
     {
         this.m_ClientStateMachine.ConvertToState(eGameState, loadingStyle, callBackWhenChangeFinished);
         this.RegisterCallBackOnChangedFinished(new Action(this.ChangeGameStateQueue));
     }
 }
Example #8
0
        private void DoTransition(TS state, TT input, bool isPop)
        {
            if (state == null || input == null)
            {
                return;
            }

            var old = Model.Current;

            if (Model.StackEnabled && isPop)
            {
                Model.Stack.Pop();
                Model.Current = Model.Stack.Peek();
            }
            else
            {
                Model.Current = Model.States[state];
                if (Model.StackEnabled)
                {
                    Model.Stack.Push(Model.Current);
                }
            }

            if (Model.StackEnabled && Model.Current.ClearStack)
            {
                Model.Stack.Clear();
            }

            if (Model.Current.Equals(old))
            {
                return;
            }

            var args =
                new StateChangeArgs <TS, TT>(this, old, Model.Current, input);

            Exited(old, args);
            Entered(args);
            StateChanged(args);
        }
Example #9
0
 public static void ConsoleOut <TS, TT>(object sender, StateChangeArgs <TS, TT> e)
 {
     Console.Out.WriteLine($"From [{e.From}] with [{e.Input}] to [{e.To}]");
 }
Example #10
0
 public StatePostEnterEvent(StateChangeArgs args)
 {
     mArgs = args;
 }
Example #11
0
 private void StateChanged(StateChangeArgs <TS, TT> args)
 {
     Model.RaiseStateChanged(args);
 }
Example #12
0
 private void Exited(State <TS, TT> old, StateChangeArgs <TS, TT> args)
 {
     old.RaiseExited(args);
 }
Example #13
0
 private void Entered(StateChangeArgs <TS, TT> args)
 {
     ResetCurrentAfterEntries();
     Model.Current.RaiseEntered(args);
 }
Example #14
0
 public StateExitEvent(StateChangeArgs args)
 {
     mArgs = args;
 }
Example #15
0
 public void RaiseStateChanged(StateChangeArgs <TS, TT> e) => StateChanged?.Invoke(this, e);
Example #16
0
 public void RaiseExited(StateChangeArgs <TS, TT> e) => Exited?.Invoke(e);