/// <summary> /// 起動用TSVをロード /// </summary> /// <param name="url">CSVのパス</param> /// <param name="version">シナリオバージョン(-1以下で必ずサーバーからデータを読み直す)</param> /// <returns></returns> public IEnumerator LoadChapterAsync(string url) { AssetFile file = AssetFileManager.Load(url, this); while (!file.IsLoadEnd) { yield return(null); } AdvChapterData chapter = file.UnityObject as AdvChapterData; if (chapter == null) { Debug.LogError(url + " is not scenario file"); yield break; } if (this.DataManager.SettingDataManager.ImportedScenarios == null) { this.DataManager.SettingDataManager.ImportedScenarios = new AdvImportScenarios(); } if (this.DataManager.SettingDataManager.ImportedScenarios.TryAddChapter(chapter)) { //シナリオデータの初期化 DataManager.BootInitChapter(chapter); } }
//マクロ処理したインポートデータを作成する 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); } }
/// <summary> /// リソースファイル(画像やサウンド)のダウンロードをバックグラウンドで進めておく /// </summary> public void StartBackGroundDownloadResourceInChapter(AdvChapterData chapter) { if (isBackGroundDownload) { foreach (AdvScenarioData scenario in chapter.ScenarioDataList) { scenario.Download(this); } SettingDataManager.DownloadAll(); } }
internal void BootInitChapter(AdvChapterData chapter) { chapter.BootInit(); foreach (var grid in chapter.SettingList) { IAdvSettingData data = FindSettingData(grid.SheetName); if (data != null) { data.ParseGrid(grid, BootSetting); } } }
//章データを追加(既に同じ名前の章があったら追加しない) public bool TryAddChapter(AdvChapterData chapterData) { if (Chapters.Exists(x => x.name == chapterData.name)) { return(false); } else { this.Chapters.Add(chapterData); return(true); } }
/// <summary> /// 設定データのエクセルシートを読み込む /// </summary> /// <param name="sheetName">シート名</param> /// <param name="grid">シートのStringGridデータ</param> public void AddImportData(string chapterName, List <AdvImportBook> importDataList) { importVersion = Version; AdvChapterData chapter = this.Chapters.Find(x => x.ChapterName == chapterName); if (chapter == null) { chapter = new AdvChapterData(chapterName); this.Chapters.Add(chapter); } chapter.InitImportData(importDataList); }
/// <summary> /// 起動用TSVをロード /// </summary> /// <param name="url">CSVのパス</param> /// <param name="version">シナリオバージョン(-1以下で必ずサーバーからデータを読み直す)</param> /// <returns></returns> IEnumerator CoLoadChapter(string url, int version) { yield return(StartCoroutine(DataManager.CoLoadChapter(url, version))); AdvChapterData chapter = DataManager.InitChapterData(url); //設定データを反映 GraphicManager.Remake(DataManager.SettingDataManager.LayerSetting); //パラメーターをデフォルト値でリセット Param.InitDefaultAll(DataManager.SettingDataManager.DefaultParam); //リソースファイル(画像やサウンド)のダウンロードをバックグラウンドで進めておく DataManager.StartBackGroundDownloadResourceInChapter(chapter); }
//チャプターデータのアセット取得 AdvChapterData LoadOrCreateChapterAsset(string path) { string assetPath = Path.ChangeExtension(path, ChapterAssetExt); AdvChapterData asset = AssetDatabase.LoadAssetAtPath <AdvChapterData>(assetPath); if (asset == null) { //まだないので作る asset = ScriptableObject.CreateInstance <AdvChapterData>(); AssetDatabase.CreateAsset(asset, assetPath); asset.hideFlags = HideFlags.NotEditable; } return(asset); }
/// <summary> /// 章の起動時の初期化 /// </summary> internal void InitChapterData(string url) { string chapterName = FilePathUtil.GetFileNameWithoutDoubleExtensiton(url); AdvChapterData chapter = settingDataManager.FindChapter(chapterName); if (!chapter.IsInited) { settingDataManager.BootInitChapter(chapter); AddScenario(chapter); foreach (var data in chapter.ScenarioDataList) { data.Init(this.settingDataManager, this.MacroManager); } } }
public void BootInitChapter(AdvChapterData chapter) { chapter.BootInit(this.SettingDataManager); Dictionary <string, AdvScenarioData> scenarioDataTbl = new Dictionary <string, AdvScenarioData>(); chapter.AddScenario(scenarioDataTbl); foreach (KeyValuePair <string, AdvScenarioData> pair in scenarioDataTbl) { this.scenarioDataTbl.Add(pair.Key, pair.Value); } foreach (KeyValuePair <string, AdvScenarioData> pair2 in scenarioDataTbl) { pair2.Value.Init(this.settingDataManager); } }
/// <summary> /// 起動用TSVをロード /// </summary> /// <param name="url">CSVのパス</param> /// <param name="version">シナリオバージョン(-1以下で必ずサーバーからデータを読み直す)</param> /// <returns></returns> public IEnumerator CoLoadChapter(string url, int version) { string chapterName = FilePathUtil.GetFileNameWithoutDoubleExtensiton(url); AdvChapterData chapter = SettingDataManager.FindChapter(chapterName); if (chapter != null) { yield break; } else { chapter = new AdvChapterData(chapterName); yield return(StartCoroutine(chapter.CoLoadFromTsv(url, version))); SettingDataManager.RunTimeChapters.Add(chapter); } }
public void BootInitChapter(AdvChapterData chapter) { chapter.BootInit(this.SettingDataManager); //シナリオデータ Dictionary <string, AdvScenarioData> scenarios = new Dictionary <string, AdvScenarioData>(); chapter.AddScenario(scenarios); //シナリオデータの初期化 foreach (var keyValue in scenarios) { this.scenarioDataTbl.Add(keyValue.Key, keyValue.Value); } //シナリオデータの初期化 foreach (var keyValue in scenarios) { keyValue.Value.Init(this.settingDataManager); } }
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); } } } }
//章別に分かれたシナリオをロードする IEnumerator LoadChaptersAsync(string rootDir) { //動的に作成 AdvImportScenarios scenarios = ScriptableObject.CreateInstance <AdvImportScenarios>(); foreach (string chapterName in ChapterNames) { string url = FilePathUtil.Combine(rootDir, chapterName) + ".chapter.asset"; AssetFile file = AssetFileManager.Load(url, this); while (!file.IsLoadEnd) { yield return(null); } AdvChapterData chapter = file.UnityObject as AdvChapterData; if (scenarios == null) { Debug.LogError(url + " is not scenario file"); yield break; } scenarios.AddChapter(chapter); } this.Scenarios = scenarios; }
//章データを追加 public void AddChapter(AdvChapterData chapterData) { this.Chapters.Add(chapterData); }
public bool TryAddChapter(AdvChapterData chapterData) {
//マクロ処理したインポートデータを作成する 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); } }