Exemplo n.º 1
0
 /// <summary>
 /// 设置运行时环境管理器,用于读取保存的信息
 /// </summary>
 /// <param name="rm">反序列化后的RM实例</param>
 public static void ResumeFromSaveData(RuntimeManager rm)
 {
     // 清空画面并停下BGM
     ViewManager.GetInstance().RemoveView(ResourceType.Unknown);
     Musician.GetInstance().StopAndReleaseBGM();
     // 变更运行时环境
     Director.RunMana = rm;
     CommonUtils.ConsoleLine("RuntimeManager is replaced", "Director", OutputStyle.Important);
     // 变更屏幕管理器
     ScreenManager.ResetSynObject(Director.RunMana.Screen);
     CommonUtils.ConsoleLine("ScreenManager is replaced", "Director", OutputStyle.Important);
     // 重绘整个画面
     ViewManager.GetInstance().ReDraw();
     // 恢复背景音乐
     Director.GetInstance().updateRender.Bgm(Director.RunMana.PlayingBGM, GlobalDataContainer.GAME_SOUND_BGMVOL);
     // 清空字符串缓冲
     Director.GetInstance().updateRender.dialogPreStr = String.Empty;
     Director.GetInstance().updateRender.pendingDialogQueue.Clear();
     // 弹空全部等待,复现保存最后一个动作
     Director.RunMana.ExitUserWait();
     Interrupt reactionNtr = new Interrupt()
     {
         type = InterruptType.LoadReaction,
         detail = "Reaction for load data",
         interruptSA = Director.RunMana.DashingPureSa,
         interruptFuncSign = "",
         returnTarget = null,
         pureInterrupt = true
     };
     // 提交中断
     Director.RunMana.CallStack.Submit(reactionNtr);
 }
Exemplo n.º 2
0
 /// <summary>
 /// 向运行时环境发出中断
 /// </summary>
 /// <param name="ntr">中断</param>
 public void SubmitInterrupt(Interrupt ntr)
 {
     Director.RunMana.CallStack.Submit(ntr);
 }
Exemplo n.º 3
0
 /// <summary>
 /// 向栈机提交一个中断调用
 /// </summary>
 /// <param name="ntr">中断</param>
 public void Submit(Interrupt ntr)
 {
     StackMachineFrame smf = new StackMachineFrame()
     {
         State = StackMachineState.Interrupt,
         ScriptName = null,
         PC = 0,
         IP = ntr.interruptSA,
         Argv = null,
         BindingFunctionName = null,
         BindingSceneName = null,
         Delay = TimeSpan.FromMilliseconds(0),
         Tag = ntr.returnTarget,
         BindingInterrupt = ntr
     };
     this.coreStack.Push(smf);
 }