Пример #1
0
        IEnumerator CoLoadAndInitScenariodData(AdvScenarioSettingData scenarioSetting)
        {
            string scenaioFileName = scenarioSetting.ScenaioFile;

            //既にある(エクスポートされたデータの可能性あり)
            if (scenarioDataTbl.ContainsKey(scenaioFileName))
            {
                yield break;
            }

            string          path = SettingDataManager.ScenarioSetting.ScenaioFileToPath(scenaioFileName);
            AdvScenarioData data = new AdvScenarioData();
            AssetFile       file = AssetFileManager.BackGroundLoad(path, this);

            while (!file.IsLoadEnd)
            {
                yield return(0);
            }

            data.Init(scenaioFileName, file.Csv, SettingDataManager);
            file.Unuse(this);
            scenarioDataTbl.Add(scenaioFileName, data);

            --loadingScenarioCount;
        }
Пример #2
0
        /// <summary>
        /// エラーチェックのために実際にデータを作成
        /// エクスポートするときに使用。
        /// </summary>
        /// <param name="sheetName">シート名</param>
        /// <param name="grid">チェックするシナリオを記述したStringGrid</param>
        /// <param name="settingDataManger">データ管理の大本</param>
        /// <returns>シナリオデータ</returns>
        public AdvScenarioData ErrorCheck(string sheetName, StringGrid grid, AdvSettingDataManager settingDataManger)
        {
            AdvScenarioData scenario = new AdvScenarioData();

            scenario.Init(sheetName, grid, settingDataManger);
            return(scenario);
        }
Пример #3
0
        IEnumerator CoBackGroundDownloadResource(string label)
        {
            if (label.Length > 1 && label[0] == '*')
            {
                label = label.Substring(1);
            }

            AdvScenarioData data = FindScenarioData(label);

            if (data == null)
            {
                Debug.LogError(label + " is not found in all scenario");
                yield break;
            }
            if (!data.IsAlreadyBackGroundLoad)
            {
                data.Download(this);
                foreach (AdvScenarioJumpData jumpData in data.JumpScenarioData)
                {
                    //シナリオファイルのロード待ち
                    while (!IsLoadEndScenarioLabel(jumpData))
                    {
                        yield return(0);
                    }
                    yield return(StartCoroutine(CoBackGroundDownloadResource(jumpData.ToLabel)));
                }
            }
        }
        //ブックのインポート
        void ImportScenarioBook(StringGridDictionary book, string path)
        {
            //シナリオデータ用のスクリプタブルオブジェクトを宣言
            string scenarioAssetPath = Path.ChangeExtension(path, ScenarioAssetExt);
            AdvScenarioDataExported assetScenario = null;

            foreach (var sheet in book.List)
            {
                StringGrid grid = sheet.Grid;
                //設定データか、シナリオデータかチェック
                if (!AdvSettingDataManager.IsBootSheet(sheet.Name) && !AdvSettingDataManager.IsSettingsSheet(sheet.Name))
                {
                    //シナリオデータのアセットを作成
                    if (assetScenario == null)
                    {
                        assetScenario = UtageEditorToolKit.GetImportedAssetCreateIfMissing <AdvScenarioDataExported>(scenarioAssetPath);
                        assetScenario.Clear();
                    }
                    assetScenario.hideFlags = HideFlags.NotEditable;
                    assetScenario.ParseFromExcel(sheet.Name, grid);
                    if (assetSetting != null)
                    {
                        AdvScenarioData scenarioData = assetScenario.ErrorCheck(sheet.Name, grid, assetSetting);
                        scenarioDataTbl.Add(sheet.Name, scenarioData);
                    }
                }
            }

            //変更を反映
            if (assetScenario != null)
            {
                Debug.Log(LanguageAdvErrorMsg.LocalizeTextFormat(AdvErrorMsg.Import, scenarioAssetPath));
                EditorUtility.SetDirty(assetScenario);
            }
        }
Пример #5
0
        //マクロ処理したインポートデータを作成する
        void ImportChapter(string chapterName, List <AdvImportBook> books, bool checkTextCount)
        {
            //シナリオアセットに各ブックのアセットを設定
            AdvChapterData        chapter = this.scenariosAsset.AddImportData(chapterName, books);
            AdvSettingDataManager setting = new AdvSettingDataManager();

            setting.ImportedScenarios = this.scenariosAsset;
            chapter.MakeSettingImportData(this.macroManager);
            setting.BootInit("");
            chapter.MakeScenarioImportData(setting, this.macroManager);
            AdvGraphicInfo.CallbackExpression = setting.DefaultParam.CalcExpressionBoolean;
            TextParser.CallbackCalcExpression = setting.DefaultParam.CalcExpressionNotSetParam;
            iTweenData.CallbackGetValue       = setting.DefaultParam.GetParameter;

            List <AdvScenarioData> scenarioList = new List <AdvScenarioData>();

            foreach (var book in books)
            {
                foreach (var grid in book.ImportGridList)
                {
                    string sheetName = grid.SheetName;
                    if (!AdvSheetParser.IsScenarioSheet(sheetName))
                    {
                        continue;
                    }
                    if (scenarioDataTbl.ContainsKey(sheetName))
                    {
                        Debug.LogError(sheetName + " is already contains in the sheets");
                    }
                    else
                    {
                        AdvScenarioData scenario = new AdvScenarioData(grid);
                        scenarioDataTbl.Add(sheetName, scenario);
                        scenarioList.Add(scenario);
                    }
                }
            }

            //シナリオデータとして解析、初期化
            foreach (AdvScenarioData data in scenarioList)
            {
                data.Init(setting);
            }

            AdvGraphicInfo.CallbackExpression = null;
            TextParser.CallbackCalcExpression = null;
            iTweenData.CallbackGetValue       = null;

            //シナリオラベルのリンクチェック
            ErrorCheckScenarioLabel(scenarioList);

            //文字数カウント
            if (checkTextCount)
            {
                CheckCharacterCount(scenarioList);
            }
        }
Пример #6
0
        // 1シナリオデータ内の文字数をカウントしてチェック
        int CheckCharacterCount(AdvScenarioData data)
        {
            int count = 0;

            foreach (var keyValue in data.ScenarioLabels)
            {
                count += CheckCharacterCount(keyValue.Value);
            }
            return(count);
        }
Пример #7
0
        /// <summary>
        /// 指定のシナリオラベルが既にロード終了しているか
        /// </summary>
        public bool IsLoadEndScenarioLabel(string label)
        {
            AdvScenarioData scenarioData = FindScenarioData(label);

            if (null != scenarioData)
            {
                return(true);
            }

            string msg = LanguageAdvErrorMsg.LocalizeTextFormat(AdvErrorMsg.NotFoundScnarioLabel, label);

            Debug.LogError(msg);
            return(false);
        }
 /// <summary>
 /// シナリオラベルがあるかチェック
 /// </summary>
 /// <param name="label">シナリオラベル</param>
 /// <param name="egnoreData">チェックを無視するデータ</param>
 /// <returns>あればtrue。なければfalse</returns>
 bool IsExistScenarioLabel(string label, AdvScenarioData egnoreData = null)
 {
     foreach (AdvScenarioData data in scenarioDataTbl.Values)
     {
         if (data == egnoreData)
         {
             continue;
         }
         if (data.IsContainsScenarioLabel(label))
         {
             return(true);
         }
     }
     return(false);
 }
Пример #9
0
        /// <summary>
        /// 指定のシナリオラベルが既にロード終了しているか
        /// </summary>
        public bool IsLoadEndScenarioLabel(string scenarioLabel)
        {
            AdvScenarioData scenarioData = FindScenarioData(scenarioLabel);

            if (null != scenarioData)
            {
                return(true);
            }

            if (IsLoadEndAllScenario)
            {
                Debug.LogError(LanguageAdvErrorMsg.LocalizeTextFormat(AdvErrorMsg.NotFoundScnarioLabel, scenarioLabel));
            }

            return(false);
        }
Пример #10
0
        /// <summary>
        /// 指定のシナリオラベルが既にロード終了しているか
        /// </summary>
        public bool IsLoadEndScenarioLabel(AdvScenarioJumpData jumpData)
        {
            AdvScenarioData scenarioData = FindScenarioData(jumpData.ToLabel);

            if (null != scenarioData)
            {
                return(true);
            }

            if (IsLoadEndAllScenario)
            {
                string msg = LanguageAdvErrorMsg.LocalizeTextFormat(AdvErrorMsg.NotFoundScnarioLabel, jumpData.ToLabel);
                Debug.LogError(jumpData.FromRow.ToErrorString(msg));
            }

            return(false);
        }
Пример #11
0
        //シナリオのリソースをロード
        IEnumerator CoBackGroundDownloadScenarioResource(string scenarioLabel)
        {
            //シナリオファイルのロード待ち
            while (!IsLoadEndScenarioLabel(scenarioLabel))
            {
                yield return(0);
            }
            AdvScenarioData data = FindScenarioData(scenarioLabel);

            if (!data.IsAlreadyBackGroundLoad)
            {
                data.Download(this);
                foreach (string jumpLabel in data.JumpScenarioLabels)
                {
                    yield return(StartCoroutine(CoBackGroundDownloadResource(jumpLabel)));
                }
            }
        }
Пример #12
0
 void AddScenario(AdvChapterData chapter)
 {
     foreach (var grid in chapter.ScenarioList)
     {
         string sheetName = grid.SheetName;
         if (!MacroManager.TryAddMacroData(sheetName, grid))
         {
             //既にある(エクスポートされたデータの可能性あり)
             if (scenarioDataTbl.ContainsKey(sheetName))
             {
                 Debug.LogWarning(sheetName + " is already contains");
             }
             else
             {
                 AdvScenarioData data = new AdvScenarioData(sheetName, grid);
                 chapter.ScenarioDataList.Add(data);
                 scenarioDataTbl.Add(sheetName, data);
             }
         }
     }
 }
Пример #13
0
 public void AddScenario(Dictionary <string, AdvScenarioData> scenarioDataTbl)
 {
     Profiler.BeginSample("AddScenario");
     foreach (var book in DataList)
     {
         foreach (var sheet in book.ImportGridList)
         {
             if (scenarioDataTbl.ContainsKey(sheet.SheetName))
             {
                 Debug.LogErrorFormat("{0} is already contains", sheet.SheetName);
                 continue;
             }
             Profiler.BeginSample("new Scenario");
             sheet.InitLink();
             AdvScenarioData scenario = new AdvScenarioData(sheet);
             scenarioDataTbl.Add(sheet.SheetName, scenario);
             Profiler.EndSample();
         }
     }
     Profiler.EndSample();
 }
Пример #14
0
        IEnumerator CoBackGroundDownloadResource(string startScenario)
        {
            while (loadingScenarioCount > 0)
            {
                yield return(0);
            }

            AdvScenarioData data = FindScenarioData(startScenario);

            if (!data.IsAlreadyBackGroundLoad)
            {
                data.Download(this);
                foreach (AdvScenarioJumpData jumpData in data.JumpScenarioData)
                {
                    //シナリオファイルのロード待ち
                    while (!IsLoadEndScenarioLabel(jumpData))
                    {
                        yield return(0);
                    }
                    yield return(StartCoroutine(CoBackGroundDownloadResource(jumpData.ToLabel)));
                }
            }
        }
Пример #15
0
        /// <summary>
        /// シナリオデータのロードと初期化を開始
        /// </summary>
        public void StartLoadAndInitScenariodData()
        {
            //シナリオのエクスポート済みのデータをまず初期化
            foreach (AdvScenarioDataExported data in exportedScenarioDataTbl)
            {
                foreach (var exportedScenarioData in data.List)
                {
                    exportedScenarioData.Grid.InitLink();
                    AdvScenarioData scenarioData = new AdvScenarioData();
                    scenarioData.Init(exportedScenarioData.Key, exportedScenarioData.Grid, SettingDataManager);
                    scenarioDataTbl.Add(exportedScenarioData.Key, scenarioData);
                }
            }
            //エクスポートされたデータはもういらない。
            //メモリ食うので参照を外す
            exportedScenarioDataTbl = null;

            loadingScenarioCount = SettingDataManager.ScenarioSetting.List.Count;
            //シナリオファイルをロード
            foreach (AdvScenarioSettingData scenarioSetting in SettingDataManager.ScenarioSetting.List)
            {
                StartCoroutine(CoLoadAndInitScenariodData(scenarioSetting));
            }
        }
Пример #16
0
        IEnumerator CoStartScenario(AdvEngine engine, string label, int page, string gallerySceneLabel)
        {
            if ((debugOutPut & DebugOutPut.Log) == DebugOutPut.Log)
            {
                Debug.Log("Jump : " + label + " :" + page);
            }
            if (!engine.DataManager.IsReadySettingData)
            {
                Debug.LogError("Not ready SettingData");
            }

            isWaitLoading = true;
            while (!engine.DataManager.IsLoadEndScenarioLabel(label))
            {
                yield return(0);
            }
            scearioData = engine.DataManager.FindScenarioData(label);

            Reset();
            //指定のページまでジャンプ
            currentIndex             = scearioData.SeekPageIndex(label, page);
            currentScenarioLabel     = label;
            currentPage              = (page < 0) ?  page : page - 1;
            currentGallerySceneLabel = gallerySceneLabel;
            engine.Page.BeginPage(currentScenarioLabel, currentPage);
            UpdateSceneGallery(currentScenarioLabel, engine);

            isWaitLoading = false;
            if (preloadFileSet.Count > 0)
            {
                Debug.LogError("Error Preload Clear");
            }

            AdvCommand command = scearioData.GetCommand(currentIndex);

            while (null != command)
            {
                //ロード
                command.Load();

                //プリロードを更新
                if (command.IsExistLoadFile())
                {
                    UpdatePreLoadFiles(currentIndex, MAX_PRELOAD_FILES);
                }

                //ロード待ち
                while (!command.IsLoadEnd())
                {
                    isWaitLoading = true;
                    yield return(0);
                }
                isWaitLoading = false;

                ///シナリオラベルの更新
                if (!string.IsNullOrEmpty(command.GetScenarioLabel()))
                {
                    currentScenarioLabel = command.GetScenarioLabel();
                    currentPage          = -1;
                    ///ページ開始処理
                    engine.Page.BeginPage(currentScenarioLabel, currentPage);
                    UpdateSceneGallery(currentScenarioLabel, engine);
                }

                //コマンド実行
                if ((debugOutPut & DebugOutPut.Log) == DebugOutPut.Log)
                {
                    Debug.Log("Command : " + command.GetType());
                }
                command.DoCommand(engine);
                ///ページ末端・オートセーブデータを更新
                if (command.IsTypePageEnd())
                {
                    ++currentPage;
                    ///ページ開始処理
                    engine.Page.BeginPage(currentScenarioLabel, currentPage);
                    engine.SaveManager.UpdateAutoSaveData(engine);
                }

                //コマンド実行後にファイルをアンロード
                command.Unload();

                //コマンドの処理待ち
                while (command.Wait(engine))
                {
                    if ((debugOutPut & DebugOutPut.Waiting) == DebugOutPut.Waiting)
                    {
                        Debug.Log("Wait..." + command.GetType());
                    }
                    yield return(0);
                }

                if ((debugOutPut & DebugOutPut.CommandEnd) == DebugOutPut.CommandEnd)
                {
                    Debug.Log("End :" + command.GetType() + " " + label + ":" + page);
                }

                ///改ページ処理
                if (command.IsTypePageEnd())
                {
                    engine.SystemSaveData.ReadData.AddReadPage(engine.Page.ScenarioLabel, engine.Page.PageNo);
                    engine.Page.EndPage();
                }

                //次のコマンドへ
                do
                {
                    ++currentIndex;
                    command = scearioData.GetCommand(currentIndex);

                    //ifスキップチェック
                    if (!ifManager.CheckSkip(command))
                    {
                        break;
                    }
                    else
                    {
                        ///ページ末端
                        if (command.IsTypePageEnd())
                        {
                            ++currentPage;
                        }
                    }
                } while (true);
            }

            EndScenario();
        }
		/// <summary>
		/// シナリオデータのロードと初期化を開始
		/// </summary>
		public void StartLoadAndInitScenariodData()
		{
			//シナリオのエクスポート済みのデータをまず初期化
			foreach (AdvScenarioDataExported data in exportedScenarioDataTbl)
			{
				foreach (var exportedScenarioData in data.List)
				{
					exportedScenarioData.Grid.InitLink();
					AdvScenarioData scenarioData = new AdvScenarioData();
					scenarioData.Init(exportedScenarioData.Key, exportedScenarioData.Grid, SettingDataManager);
					scenarioDataTbl.Add(exportedScenarioData.Key, scenarioData);
				}
			}
			//エクスポートされたデータはもういらない。
			//メモリ食うので参照を外す
			exportedScenarioDataTbl = null;

			loadingScenarioCount = SettingDataManager.ScenarioSetting.List.Count;
			//シナリオファイルをロード
			foreach (AdvScenarioSettingData scenarioSetting in SettingDataManager.ScenarioSetting.List)
			{
				StartCoroutine( CoLoadAndInitScenariodData(scenarioSetting) );
			}
		}
		/// <summary>
		/// シナリオラベルがあるかチェック
		/// </summary>
		/// <param name="label">シナリオラベル</param>
		/// <param name="egnoreData">チェックを無視するデータ</param>
		/// <returns>あればtrue。なければfalse</returns>
		bool IsExistScenarioLabel(string label, AdvScenarioData egnoreData = null )
		{
			foreach (AdvScenarioData data in scenarioDataTbl.Values)
			{
				if (data == egnoreData) continue;
				if (data.IsContainsScenarioLabel(label))
				{
					return true;
				}
			}
			return false;
		}
		IEnumerator CoLoadAndInitScenariodData(AdvScenarioSettingData scenarioSetting)
		{
			string scenaioFileName = scenarioSetting.ScenaioFile;
			//既にある(エクスポートされたデータの可能性あり)
			if (scenarioDataTbl.ContainsKey(scenaioFileName)) yield break;

			string path = SettingDataManager.ScenarioSetting.ScenaioFileToPath(scenaioFileName);
			AdvScenarioData data = new AdvScenarioData();
			AssetFile file = AssetFileManager.BackGroundLoad(path, this);
			while (!file.IsLoadEnd) yield return 0;

			data.Init(scenaioFileName, file.Csv, SettingDataManager);
			file.Unuse(this);
			scenarioDataTbl.Add(scenaioFileName, data);

			--loadingScenarioCount;
		}
Пример #20
0
        //マクロ処理したインポートデータを作成する
        void ImportChapter(string chapterName, List <AdvImportBook> books)
        {
            //チャプターデータを作成し、各シナリオを設定
            string path = AssetDatabase.GetAssetPath(this.Project);

            path = FilePathUtil.Combine(FilePathUtil.GetDirectoryPath(path), chapterName);
            AdvChapterData chapter = LoadOrCreateChapterAsset(path);

            this.scenariosAsset.AddChapter(chapter);

            //初期化
            chapter.ImportBooks(books, this.macroManager);

            //設定データの解析とインポート
            AdvSettingDataManager setting = new AdvSettingDataManager();

            setting.ImportedScenarios = this.scenariosAsset;
            setting.BootInit("");
            chapter.MakeScenarioImportData(setting, this.macroManager);
            EditorUtility.SetDirty(chapter);
            AdvGraphicInfo.CallbackExpression = setting.DefaultParam.CalcExpressionBoolean;
            TextParser.CallbackCalcExpression = setting.DefaultParam.CalcExpressionNotSetParam;
            iTweenData.CallbackGetValue       = setting.DefaultParam.GetParameter;

            List <AdvScenarioData> scenarioList = new List <AdvScenarioData>();

            foreach (var book in books)
            {
                foreach (var grid in book.ImportGridList)
                {
                    grid.InitLink();
                    string sheetName = grid.SheetName;
                    if (!AdvSheetParser.IsScenarioSheet(sheetName))
                    {
                        continue;
                    }
                    if (scenarioDataTbl.ContainsKey(sheetName))
                    {
                        Debug.LogError(sheetName + " is already contains in the sheets");
                    }
                    else
                    {
                        AdvScenarioData scenario = new AdvScenarioData(grid);
                        scenarioDataTbl.Add(sheetName, scenario);
                        scenarioList.Add(scenario);
                    }
                }
            }

            //シナリオデータとして解析、初期化
            foreach (AdvScenarioData data in scenarioList)
            {
                data.Init(setting);
            }

            AdvGraphicInfo.CallbackExpression = null;
            TextParser.CallbackCalcExpression = null;
            iTweenData.CallbackGetValue       = null;

            //シナリオラベルのリンクチェック
            ErrorCheckScenarioLabel(scenarioList);

            //文字数カウント
            if (Project.CheckTextCount)
            {
                CheckCharacterCount(scenarioList);
            }
        }
		/// <summary>
		/// エラーチェックのために実際にデータを作成
		/// エクスポートするときに使用。
		/// </summary>
		/// <param name="sheetName">シート名</param>
		/// <param name="grid">チェックするシナリオを記述したStringGrid</param>
		/// <param name="settingDataManger">データ管理の大本</param>
		/// <returns>シナリオデータ</returns>
		public AdvScenarioData ErrorCheck(string sheetName, StringGrid grid, AdvSettingDataManager settingDataManger)
		{
			AdvScenarioData scenario = new AdvScenarioData();
			scenario.Init( sheetName, grid, settingDataManger);
			return scenario;
		}