public void Update() { //trueは動画再生中 if (MainState.Movie.Play()) { return; } if (!MainState.BackLog.Execute()) { return; } //ロードフラグが立ってたら、ロードする if (MainState.SaveLoad.LoadFlag == CodeLoadFlag.ON) { MainState.Camera.Load_Run(); MainState.SaveLoad.LoadFlag = CodeLoadFlag.OFF; return; } //コンフィグ中は下に行かない if (Ref.Canvas.CvSideBar.activeSelf) { if (Input.GetMouseButtonDown(1)) { Ref.Canvas.CvPopup.SetActive(false); Ref.Canvas.CvSideBar.SetActive(false); } //コンフィグ上での音量変更を直に反映させるため //これを外すと、SideBarを消すまで反映されない MainState.Audio.FadeInOut(); MainState.Audio.AudioPlay(); return; } // スキップ中処理 if (CommonLogic.DuringSkip()) { MainState.Camera.Vo.Count = 1000; } //Common.WriteConsole(count.ToString()); //シナリオファイルの現在行を取得 MainState.Camera.Vo.Count++; var currentLine = MainState.Scenario.Vo.CurrentLine; //命令行かシナリオ行かを取得 var scenarioSwitch = CommonLogic.SwitchReadLine(currentLine); switch (scenarioSwitch) { //読み込まない行の場合、次の行へ case CodeScenarioSwitch.None: MainState.Scenario.NextLine(); break; //コマンドの場合、解析して処理 case CodeScenarioSwitch.Command: var commandArgs = CommandAnalyse(new CommandArgs(currentLine, currentLine, MainState.Scenario.Vo.MacroQueue)); if (MainState.Camera.DoCommand(commandArgs)) { MainState.Camera.Vo.Count = 0; //最後のQueueが終わったら、次の行へ if (!MainState.Scenario.NextQueueRecursive()) { MainState.Scenario.NextLine(); break; } } ; break; //シナリオの場合、内容を表示 case CodeScenarioSwitch.Scenario: if (DrawText(currentLine)) { MainState.Scenario.NextLine(); } ; break; } MainState.Audio.FadeInOut(); MainState.Audio.AudioPlay(); //シナリオ文章表示が終わっている場合 //右クリックでメニューを表示 if (scenarioSwitch == CodeScenarioSwitch.Scenario && MainState.Scenario.IsCharEnd()) { if (Input.GetMouseButtonDown(1)) { Ref.Canvas.CvSideBar.SetActive(true); Ref.Canvas.PnlSideScroll.SetActive(false); Ref.Canvas.CvSideBar.transform.SetAsLastSibling(); } if (CommonLogic.MouseWheelUp()) { MainState.BackLog.Vo.ctl = Ref.ctl; MainState.BackLog.BackLogBegin(); } } }
/// <summary> /// シナリオを書きだし /// 処理中はfalse、処理が終わればtrueで次の行へ /// </summary> /// <param name="currentLine">Current line.</param> private bool DrawText(string currentLine) { if (MainState.Camera.Vo.clickeSpantime > 0) { MainState.Camera.Vo.clickeSpantime -= 1; } var speed = (int)((CodeConfigSpeed.Max - MainState.Config.Vo.ConfigSpeead) / 25); if (MainState.Config.Vo.ConfigSpeead == CodeConfigSpeed.Max) { MainState.Scenario.CharEnd(); } else if (MainState.Config.Vo.ConfigSpeead > CodeConfigSpeed.High) { MainState.Scenario.NextChar(); MainState.Scenario.NextChar(); } else if (MainState.Camera.Vo.Count % speed == 0) { MainState.Scenario.NextChar(); } var charCount = MainState.Scenario.Vo.CharCount; string visualText = string.Empty; if (currentLine.Count() < charCount) { visualText = currentLine; } else { visualText = currentLine.Substring(0, charCount); } //折り返し処理 Ref.ctl.textAreaShadow.GetComponent <GUIText>().text = CommonLogic.createTextAreaText(visualText); Ref.ctl.textArea.GetComponent <GUIText>().text = CommonLogic.createTextAreaText(visualText); if (CommonLogic.DuringSkip()) { ClearName(); return(true); } if (Input.GetMouseButtonDown(0) && MainState.Camera.Vo.clickeSpantime == 0) { MainState.Camera.Vo.clickeSpantime = 5; if (MainState.Scenario.IsCharEnd()) { MainState.Camera.Vo.Count = 0; ClearName(); return(true); } else { MainState.Scenario.CharEnd(); } } DrawName(); return(false); }