Пример #1
0
        IEnumerator CoStartScenario(string label, int page)
        {
            while (IsWaitBootLoading)
            {
                yield return(null);
            }
            while (GraphicManager.IsLoading)
            {
                yield return(null);
            }
            while (SoundManager.IsLoading)
            {
                yield return(null);
            }

            if (UiManager != null)
            {
                UiManager.Open();
            }
            if (label.Length > 1 && label[0] == '*')
            {
                label = label.Substring(1);
            }
            ScenarioPlayer.StartScenario(label, page);
        }
Пример #2
0
        public void Play(ScenarioPlayer player, IScenarioNode parent)
        {
            if (isFirst)
            {
                isFirst = false;
                player.StartNewText(Say.ToTextType(parent.GetAttribute("class").Value), parent.GetAttribute("name").Value);
            }

            while (true)
            {
                if (nextPlayTime > player.Now)
                {
                    return;
                }

                nowLength++;

                if (text.Length < nowLength)
                {
                    isPlayed = true;
                    return;
                }

                player.AddText(text.Substring(nowLength - 1, 1));

                nextPlayTime = player.Now + delay;
            }
        }
Пример #3
0
        public void execute(ScenarioPlayer player, Action <ScenarioCharacter> appender, Action <ScenarioCharacter> remover)
        {
            remover(character);
            appender(character);

            isPlayed = true;
        }
Пример #4
0
        public void Play(ScenarioPlayer player, IScenarioNode parent)
        {
            if (startPlayTime < 0.0f)
            {
                player.StartNewText(Say.ToTextType(parent.GetAttribute("class").Value), parent.GetAttribute("name").Value);

                startPlayTime = player.Now;

                player.AddText(text);
            }

            float deltaTime = player.Now - startPlayTime;

            if (delay <= 0.0f)
            {
                player.SetOpacity(1.0f);
            }
            else
            {
                player.SetOpacity((deltaTime) / delay);
            }

            if (deltaTime >= delay)
            {
                //  再生完了
                isPlayed = true;
                return;
            }
        }
Пример #5
0
        //ゲームの開始、終了、ロード時などのクリア処理
        void ClearSub(bool isStopSound)
        {
            Page.Clear();
            SelectionManager.Clear();
            BacklogManager.Clear();
            GraphicManager.Clear();
            GraphicManager.gameObject.SetActive(true);
            if (UiManager != null)
            {
                UiManager.Close();
            }

            ClearCustomCommand();
            ScenarioPlayer.Clear();
            if (isStopSound && SoundManager != null)
            {
                SoundManager.StopBgm();
                SoundManager.StopAmbience();
            }

            if (MessageWindowManager == null)
            {
                Debug.LogError("MessageWindowManager is Missing");
            }
            SaveManager.GetSaveIoListCreateIfMissing(this).ForEach(x => ((IAdvSaveData)x).OnClear());
            SaveManager.CustomSaveDataIOList.ForEach(x => ((IAdvSaveData)x).OnClear());
            OnClear.Invoke(this);
        }
Пример #6
0
 void StartScenario(string label, int page, string gallerySceneLabel)
 {
     if (UiManager != null)
     {
         UiManager.Open();
     }
     ScenarioPlayer.StartScenario(this, label, page, gallerySceneLabel);
 }
Пример #7
0
 /// <summary>
 /// シナリオを再開
 /// </summary>
 public bool ResumeScenario()
 {
     if (!ScenarioPlayer.IsPausing)
     {
         return(false);
     }
     else
     {
         ScenarioPlayer.Resume();
         return(true);
     }
 }
Пример #8
0
 //コマンドスレッド終了
 void OnEndThread()
 {
     IsPlaying = false;
     if (IsMainThread)
     {
         ScenarioPlayer.EndScenario();
     }
     else
     {
         Destroy(this);
     }
 }
Пример #9
0
        private void playFirstBefore(ScenarioPlayer player, IScenarioNode parent)
        {
            player.ClearText();

            if (parent.GetAttribute("isWaitClick").Value == "false")
            {
                isWaitClick = false;
            }

            //  TODO文字列長計算したりとか
            now = parent.GetChildren().First();

            SingleTouchController.OnTouch += onTouch;
        }
Пример #10
0
 /// <summary>
 /// 指定のラベルにシナリオジャンプ
 /// </summary>
 /// <param name="label">ジャンプ先のラベル</param>
 public void JumpScenario(string label)
 {
     if (ScenarioPlayer.MainThread.IsPlaying)
     {
         if (ScenarioPlayer.IsPausing)
         {
             ScenarioPlayer.Resume();
         }
         ScenarioPlayer.MainThread.JumpManager.RegistoreLabel(label);
     }
     else
     {
         StartScenario(label, 0);
     }
 }
Пример #11
0
 public void Clear()
 {
     Page.Clear();
     SelectionManager.Clear();
     BacklogManager.Clear();
     GraphicManager.Clear();
     TransitionManager.Clear();
     if (UiManager != null)
     {
         UiManager.Close();
     }
     SoundManager.StopBgm();
     SoundManager.StopAmbience();
     ClearCustomCommand();
     ScenarioPlayer.Clear();
 }
Пример #12
0
        public void Play(ScenarioPlayer player, IScenarioNode parent)
        {
            //  再生完了している(親から呼ばれないはずなので必要ないきもする
            if (IsPlayed(parent))
            {
                return;
            }

            if (now == null)
            {
                playFirstBefore(player, parent);
            }

            if (now.GetExecutor() == null || now.GetExecutor().IsPlayed(now))
            {
                //  再生完了
                nowIndex++;
                try
                {
                    now = parent.GetChild(nowIndex);
                }
                catch (System.ArgumentOutOfRangeException)
                {
                    //  多分終わり
                    if (isWaitClick)
                    {
                        nowState = State.WaitNext;
                    }
                    else
                    {
                        nowState = State.Next;
                    }
                    return;
                }
            }

            if (now.GetExecutor() == null)
            {
                return;
            }

            now.GetExecutor().Play(player, parent);
        }
Пример #13
0
        IEnumerator CoStartSaveData(AdvSaveData saveData)
        {
            while (IsWaitBootLoading)
            {
                yield return(null);
            }
            while (GraphicManager.IsLoading)
            {
                yield return(null);
            }
            while (SoundManager.IsLoading)
            {
                yield return(null);
            }

            if (UiManager != null)
            {
                UiManager.Open();
            }
            yield return(ScenarioPlayer.CoStartSaveData(saveData));
        }
Пример #14
0
        IEnumerator CoStartScenario(string label, int page, string gallerySceneLabel)
        {
            while (IsWaitBootLoading)
            {
                yield return(0);
            }
            while (GraphicManager.IsLoading)
            {
                yield return(0);
            }
            while (SoundManager.IsLoading)
            {
                yield return(0);
            }
//			yield return 0;

            if (UiManager != null)
            {
                UiManager.Open();
            }
            ScenarioPlayer.StartScenario(label, page, gallerySceneLabel);
        }
Пример #15
0
        private void StartAutomation(string path)
        {
            StreamReader sr       = new StreamReader(path);
            string       scenario = sr.ReadToEnd();

            System.Diagnostics.Debug.WriteLine("========================================");
            System.Diagnostics.Debug.WriteLine(scenario);

            StringReader stringReader = new StringReader(txtVariables.Text);
            string       paramLine    = null;

            while ((paramLine = stringReader.ReadLine()) != null)
            {
                string[] param = paramLine.Split(':');
                scenario = scenario.Replace(param[0], param[1]);
            }
            System.Diagnostics.Debug.WriteLine("========================================");
            System.Diagnostics.Debug.WriteLine(scenario);

            ScenarioPlayer player = new ScenarioPlayer(scenario);

            player.Play();
        }
Пример #16
0
 /// <summary>
 /// シナリオ終了
 /// </summary>
 public void EndScenario()
 {
     ScenarioPlayer.EndScenario();
 }
Пример #17
0
 public override void Process(ScenarioPlayer player) =>
 player.SetHeldCard(this.cardCount, DevelopmentCardTypes.RoadBuilding);
Пример #18
0
        public void Play(ScenarioPlayer player, IScenarioNode parent)
        {
            player.AddText(System.Environment.NewLine);

            isPlayed = true;
        }
Пример #19
0
 public override void Process(ScenarioPlayer player) =>
 player.SetHeldCard(this.cardCount, DevelopmentCardTypes.YearOfPlenty);
Пример #20
0
 /// <summary>
 /// シナリオ終了
 /// </summary>
 public void EndScenario()
 {
     ScenarioPlayer.EndScenario();
     isWaitBootLoading = true;
 }
Пример #21
0
 public void Play(ScenarioPlayer player, IScenarioNode parent)
 {
     throw new NotImplementedException();
 }
Пример #22
0
 /// <summary>
 /// シナリオ終了
 /// </summary>
 public void EndScenario()
 {
     Clear();
     ScenarioPlayer.EndScenario();
 }
Пример #23
0
        //指定のシナリオを再生
        IEnumerator CoStartScenario(string label, int page, AdvCommand returnToCommand, bool skipPageHeaer)
        {
            IsPlaying           = true;
            SkipPageHeaerOnSave = false;
            //ジャンプ先のシナリオラベルのログを出力
            if (ScenarioPlayer.DebugOutputLog)
            {
                Debug.Log("Jump : " + label + " :" + page);
            }

            //起動時のロード待ち
            while (Engine.IsLoading)
            {
                yield return(null);
            }


            //シナリオロード待ち
            IsLoading = true;
            while (!Engine.DataManager.IsLoadEndScenarioLabel(label))
            {
                yield return(null);
            }
            IsLoading = false;

            //各データをリセット
            ResetOnJump();

            if (page < 0)
            {
                page = 0;
            }

            //セーブデータにサブスレッドがある場合に再開
            LoadSubThreadSaveData();


            //ジャンプ先のシナリオデータを取得
            AdvScenarioLabelData currentLabelData = Engine.DataManager.FindScenarioLabelData(label);

            while (currentLabelData != null)
            {
                ScenarioPlayer.UpdateSceneGallery(currentLabelData.ScenarioLabel, Engine);
                AdvScenarioPageData currentPageData = currentLabelData.GetPageData(page);
                //ページデータを取得
                while (currentPageData != null)
                {
                    //プリロードを更新
                    UpdatePreLoadFiles(currentLabelData.ScenarioLabel, page);

                    ///ページ開始処理
                    if (IsMainThread)
                    {
                        Engine.Page.BeginPage(currentPageData);
                    }

                    //0フレーム即コルーチンが終わる場合を考えてこう書く
                    var pageCoroutine = StartCoroutine(CoStartPage(currentLabelData, currentPageData, returnToCommand, skipPageHeaer));
                    if (pageCoroutine != null)
                    {
                        yield return(pageCoroutine);
                    }
                    currentCommand  = null;
                    returnToCommand = null;
                    skipPageHeaer   = false;
                    //ページ終了処理
                    if (IsMainThread)
                    {
                        Engine.Page.EndPage();
                    }
                    if (IsBreakCommand)
                    {
                        if (IsMainThread && ScenarioPlayer.IsReservedEndScenario)
                        {
                            ScenarioPlayer.EndScenario();
                            yield break;
                        }
                        else
                        {
                            if (JumpManager.IsReserved)
                            {
                                JumpToReserved();
                                yield break;
                            }
                            else
                            {
                                OnEndThread();
                                yield break;
                            }
                        }
                    }
                    currentPageData = currentLabelData.GetPageData(++page);
                }
                //ロード直後処理終了
                IfManager.OldSaveDataStart = false;
                currentLabelData           = Engine.DataManager.NextScenarioLabelData(currentLabelData.ScenarioLabel);
                page = 0;
            }
            OnEndThread();
        }
Пример #24
0
 public void Play(ScenarioPlayer player, IScenarioNode parent)
 {
     effectable.execute(player, player.AddCenterSide, player.RemoveCenterSide);
 }
Пример #25
0
 public void Play(ScenarioPlayer player, IScenarioNode parent)
 {
     effectable.Play(player, parent);
 }