protected override void OnUpdateStageContext() //Engine_ChoiceCreate(myFirstMark,*DL_Choice_0*,true,<Engine_ScriptLoadFile(*SC_SomeScriptName*)>,mySecondMark,*DL_Choice_1*,false,<Engine_ScriptLoadFile(*SC_OtherScriptName*)>) { if (paraList.Count == 0 || paraList.Count % 4 != 0) { throw new System.Exception("EngineChoiceCreateNode"); } StateMachineManager stateMachine = PachiGrimoire.I.StateMachine; stateMachine.TransferStateTo(ChoiceWaitState.Instance); StateBuff stateBuff = stateMachine.StateBuff; if (stateBuff == StateBuff.Next) { stateMachine.SetStateBuff(StateBuff.Normal); } List <ChoiceItem> choiceItemList = new List <ChoiceItem>(); string mark; string dlIndex; bool canBeSelected; string onSelectedScirptContext; for (int i = 0; i < paraList.Count; i += 4) { mark = paraList[i]; dlIndex = paraList[i + 1]; canBeSelected = bool.Parse(paraList[i + 2]); onSelectedScirptContext = paraList[i + 3]; ChoiceItem choiceItem = new ChoiceItem(mark, dlIndex, canBeSelected, onSelectedScirptContext); choiceItemList.Add(choiceItem); } StageRenderManager.I.ChoiceCreate(choiceItemList); }
private void Update() { #region Test if (Input.GetKeyDown(constData.KeyConfirm)) { StartGame(); } else if (Input.GetKeyDown(KeyCode.T)) { StartGameTest(); } #endregion #region State BaseState state = stateMachine.CurrentState; if (state == RunScriptState.Instance) // RunScript State { bool success = scriptManager.NextSentence(); if (success == false) { Debug.LogWarning("脚本执行结束"); if (stageRenderManager.IsShow == true) { stageRenderManager.OnHide(); FinalizeGame(); } } } else if (state == RunWaitState.Instance) // RunWait State { StateBuff stateBuff = stateMachine.StateBuff; if (stateBuff == StateBuff.Normal) { // Pass } else if (stateBuff == StateBuff.Auto) // Auto Buff { if (isFirstInAutoBuff == false) { isFirstInAutoBuff = true; float autoMessageSpeed = ConfigManager.Config.AutoMessageSpeed; float highestTime = constData.AutoMessageSpeedHighest; float lowestTime = constData.AutoMessageSpeedLowest; autoWaitTime = (highestTime - lowestTime) * autoMessageSpeed + lowestTime; autoStartTime = Time.time; } if (Time.time - autoStartTime >= autoWaitTime) { stateMachine.TransferStateTo(RunScriptState.Instance); isFirstInAutoBuff = false; } } else if (stateBuff == StateBuff.Skip) // Skip Buff { if (configManager.Config.IsReadSkipOrAllSkipNot) { if (PastScriptManager.HasRead(ScriptManager.ScriptPointerScriptName, scriptManager.ScriptPointerLineNumber)) { stateMachine.TransferStateTo(RunScriptState.Instance); } else { stateMachine.SetStateBuff(StateBuff.Normal); } } else { stateMachine.TransferStateTo(RunScriptState.Instance); } } else if (stateBuff == StateBuff.Next) // Next Buff { stateMachine.TransferStateTo(RunScriptState.Instance); } } #endregion }