コード例 #1
0
ファイル: CameraState.cs プロジェクト: ennach/CyberRebeat
        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();
                }
            }
        }
コード例 #2
0
ファイル: CameraState.cs プロジェクト: ennach/CyberRebeat
        /// <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);
        }