// データをロード public void LoadData(Stream stream) { try { // XXX Version プロパティだけのオブジェクトでバージョンチェックなど var data = JsonConvert.DeserializeObject <SRCSaveData>((new StreamReader(stream).ReadToEnd())); GUI.SetLoadImageSize((data.Titles.Count * 2 + 5)); Titles = data.Titles; if (!Expression.IsGlobalVariableDefined("次ステージ")) { Expression.DefineGlobalVariable("次ステージ"); } Expression.SetVariableAsString("次ステージ", data.NextStage); TotalTurn = data.TotalTurn; Money = data.Money; Event.GlobalVariableList = data.GlobalVariableList; PList = data.PList; UList = data.UList; IList = data.IList; foreach (var title in Titles) { IncludeData(title); } // XXX Dataフォルダ直下って読んでる? // if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\alias.txt")) // { // ALDList.Load(ScenarioPath + @"Data\alias.txt"); // } // bool localFileExists() { string argfname = ScenarioPath + @"Data\mind.txt"; var ret = SRC.FileSystem.FileExists(argfname); return ret; } // if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\sp.txt")) // { // SPDList.Load(ScenarioPath + @"Data\sp.txt"); // } // else if (localFileExists()) // { // SPDList.Load(ScenarioPath + @"Data\mind.txt"); // } // if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\pilot.txt")) // { // PDList.Load(ScenarioPath + @"Data\pilot.txt"); // } // if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\non_pilot.txt")) // { // NPDList.Load(ScenarioPath + @"Data\non_pilot.txt"); // } // if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\robot.txt")) // { // UDList.Load(ScenarioPath + @"Data\robot.txt"); // } // if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\unit.txt")) // { // UDList.Load(ScenarioPath + @"Data\unit.txt"); // } // GUI.DisplayLoadingProgress(); // if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\pilot_message.txt")) // { // MDList.Load(ScenarioPath + @"Data\pilot_message.txt"); // } // if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\pilot_dialog.txt")) // { // DDList.Load(ScenarioPath + @"Data\pilot_dialog.txt"); // } // if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\effect.txt")) // { // EDList.Load(ScenarioPath + @"Data\effect.txt"); // } // if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\animation.txt")) // { // ADList.Load(ScenarioPath + @"Data\animation.txt"); // } // if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\ext_animation.txt")) // { // EADList.Load(ScenarioPath + @"Data\ext_animation.txt"); // } // if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\item.txt")) // { // IDList.Load(ScenarioPath + @"Data\item.txt"); // } GUI.DisplayLoadingProgress(); IsLocalDataLoaded = true; PList.Restore(this); UList.Restore(this); IList.Restore(this); PList.Update(); UList.Update(); IList.Update(); // // リンクデータを処理するため、セーブファイルを一旦閉じてから再度読み込み // PList.LoadLinkInfo(); // UList.LoadLinkInfo(); // IList.LoadLinkInfo(); // FileSystem.FileClose(SaveDataFileNumber); GUI.DisplayLoadingProgress(); // ユニットの状態を回復 foreach (Unit u in UList.Items) { u.Reset(); } GUI.DisplayLoadingProgress(); // 追加されたシステム側イベントデータの読み込み Event.LoadEventData("", load_mode: ""); GUI.DisplayLoadingProgress(); } catch { GUI.ErrorMessage("ロード中にエラーが発生しました"); TerminateSRC(); } }