//起動待ちしてから開く IEnumerator CoWaitOpen() { while (Engine.IsWaitBootLoading) { yield return(0); } switch (bootType) { case BootType.Default: Engine.UiManager.Open(); break; case BootType.Start: Engine.StartGame(); break; case BootType.Load: Engine.OpenLoadGame(loadData); break; case BootType.SceneGallery: Engine.StartSceneGallery(scenaioLabel); break; } ClearBootData(); loadData = null; Engine.Config.IsSkip = false; isInit = true; }
private void CallBackCreateItem(GameObject go, int index) { UtageUguiSaveLoadItem component = go.GetComponent <UtageUguiSaveLoadItem>(); AdvSaveData data = this.itemDataList[index]; component.Init(data, new Action <UtageUguiSaveLoadItem>(this.OnDialogSaveLoad), index, this.isSave); }
/// <summary> /// セーブデータをロードしてゲーム再開 /// </summary> /// <param name="loadData">ロードするセーブデータ</param> public void OpenLoadGame(AdvSaveData loadData) { ClearBootData(); bootType = BootType.Load; this.loadData = loadData; Open(); }
/// <summary> /// リストビューのアイテムが作成されるときに呼ばれるコールバック /// </summary> /// <param name="go">作成されたアイテムのGameObject</param> /// <param name="index">作成されたアイテムのインデックス</param> void CallBackCreateItem(GameObject go, int index) { UtageUguiSaveLoadItem item = go.GetComponent <UtageUguiSaveLoadItem>(); AdvSaveData data = itemDataList[index]; item.Init(data, OnTap, index, isSave); }
/// <summary> /// 初期化 /// </summary> /// <param name="data">セーブデータ</param> /// <param name="index">インデックス</param> /// <param name="isSave">セーブ画面用ならtrue、ロード画面用ならfalse</param> public void Init(AdvSaveData data, int index, bool isSave) { ListViewItem listViewItem = this.GetComponent <ListViewItem>(); no.text = string.Format("No.{0,3}", index); if (data.IsSaved) { if (data.Type != AdvSaveData.SaveDataType.Auto) { //オートセーブにはテクスチャがない texture.Sprite = data.GetSprite(pixcelsToUnits); } text.text = data.Title; date.text = UtageToolKit.DateToStringJp(data.Date); listViewItem.IsEnableButton = true; } else { text.text = textEmpty; date.text = ""; listViewItem.IsEnableButton = isSave; } //オートセーブデータ if (data.Type == AdvSaveData.SaveDataType.Auto) { no.text = "Auto"; //セーブはできない if (isSave) { listViewItem.IsEnableButton = false; } } }
/// <summary> /// 初期化 /// </summary> /// <param name="data">セーブデータ</param> /// <param name="index">インデックス</param> /// <param name="isSave">セーブ画面用ならtrue、ロード画面用ならfalse</param> public virtual void Init(AdvSaveData data, Action <UtageUguiSaveLoadItem> ButtonClickedEvent, int index, bool isSave) { this.data = data; this.index = index; this.button = this.GetComponent <UnityEngine.UI.Button>(); this.button.onClick.AddListener(() => ButtonClickedEvent(this)); Refresh(isSave); }
/// <summary> /// リストビューのアイテムが作成されるときに呼ばれるコールバック /// </summary> /// <param name="go">作成されたアイテムのGameObject</param> /// <param name="index">作成されたアイテムのインデックス</param> void CallBackCreateItem(GameObject go, int index) { UtageUiSaveLoadItem item = go.GetComponent <UtageUiSaveLoadItem>(); AdvSaveData data = itemDataList[index]; item.Init(data, index, isSave); Button button = go.GetComponent <Button>(); button.Target = this.gameObject; }
/// <summary> /// 各アイテムが押された /// </summary> /// <param name="button">押されたアイテム</param> void OnTap(Button button) { AdvSaveData data = itemDataList[button.Index]; if (isSave) { UtageUiSaveLoadItem item = button.GetComponent <UtageUiSaveLoadItem>(); //セーブ画面なら、セーブ処理 Engine.WriteSaveData(data); item.Init(data, button.Index, isSave); } else { //ロード画面 if (data.IsSaved) { //セーブ済みのデータならこの画面は閉じてロードをする Close(); mainGame.OpenLoadGame(data); } } }
//起動データをクリア void ClearBootData() { bootType = BootType.Default; isInit = false; loadData = null; }
IEnumerator LoadChaptersAsync(int chapterIndex) { //追加シナリオがDLがされないうちにオートセーブされると、未DLの部分のシステムセーブがない状態で上書きされしまうので //デフォルトの「AdvEnigne SystemSaveData IsAutoSaveOnQuit」はオフにしてある必要がある。 if (this.Engine.SystemSaveData.IsAutoSaveOnQuit) { Debug.LogError("Check Off AdvEnigne SystemSaveData IsAutoSaveOnQuit"); //DL中はオートセーブを解除する this.Engine.SystemSaveData.IsAutoSaveOnQuit = false; } //今のパラメーターをバイナリデータとしてとっておく //パラメーターをリセットせずに章を追加ロードしたいときに byte[] bufferDefaultParam = null; byte[] bufferSystemParam = null; if (!resetParam) { bufferDefaultParam = BinaryUtil.BinaryWrite((writer) => engine.Param.Write(writer, AdvParamData.FileType.Default)); bufferSystemParam = BinaryUtil.BinaryWrite((writer) => engine.Param.Write(writer, AdvParamData.FileType.System)); } //指定した章よりも前の章はロードする必要がある for (int i = 0; i < chapterIndex + 1; ++i) { string url = chapterUrlList[i]; //もう設定済みならロードしない if (this.Engine.ExitsChapter(url)) { continue; } //ロード自体はこれだけ //ただし、URLは // http://madnesslabo.net/Utage3Chapter/Windows/chapter2.chapter.asset //のように、Windowsなどのプラットフォーム別にフォルダわけなどを終えた絶対URLが必要 yield return(this.Engine.LoadChapterAsync(url)); } //設定データを反映 this.Engine.GraphicManager.Remake(this.Engine.DataManager.SettingDataManager.LayerSetting); //パラメーターをデフォルト値でリセット //これは場合によってはリセットしたくない場合もあるので、あえて外にだす this.Engine.Param.InitDefaultAll(this.Engine.DataManager.SettingDataManager.DefaultParam); //パラメーターの引継ぎ方法は以下のように、いろいろある //(ややこしいが、ゲーム起動時なのか、ゲームの最中なのか、そもそもチャプター機能をどう使うかを宴側からは制御できないのでこうなる) //その1。メモリ内にとってある場合 //バイナリデータから読み取る if (!resetParam) { BinaryUtil.BinaryRead(bufferDefaultParam, (reader) => engine.Param.Read(reader, AdvParamData.FileType.Default)); BinaryUtil.BinaryRead(bufferSystemParam, (reader) => engine.Param.Read(reader, AdvParamData.FileType.System)); } //その2。オートセーブのパラメーターだけをロードする //同じやり方で任意のセーブファイルのパラメーターだけをロードするのも可能 if (readAutoSaveDataParamOnly) { //オートセーブデータをロード this.Engine.SaveManager.ReadAutoSaveData(); AdvSaveData autoSave = this.Engine.SaveManager.AutoSaveData; if (autoSave != null && autoSave.IsSaved) { autoSave.Buffer.Overrirde(this.Engine.Param.DefaultData); } } //その3。 //システムセーブデータをロードする //ファイルからロードするので、事前に書き込みされてないとダメ //チャプターロードを使う場合は、システムセーブデータの読み込みがされないので //一度はこれを使う if (readSystemSaveData) { this.Engine.SystemSaveData.Init(this.Engine); } //システムセーブデータのオートセーブはここで設定する this.Engine.SystemSaveData.IsAutoSaveOnQuit = this.isAutoSaveOnQuit; //リソースファイルのダウンロードを進めておく this.Engine.DataManager.DownloadAll(); //ロード待ちのための画面遷移 title.Close(); loadWait.OpenOnChapter(); loadWait.onClose.RemoveAllListeners(); loadWait.onClose.AddListener( () => { mainGame.Open(); //StartGameはシステム系以外のパラメーターがリセットされてしまうので //パラメーターを引き継がない場合のみStartGame if (resetParam && !readAutoSaveDataParamOnly) { this.Engine.StartGame(startLabel[chapterIndex]); } else { this.Engine.JumpScenario(startLabel[chapterIndex]); } } ); }
//起動データをクリア protected virtual void ClearBootData() { bootType = BootType.Default; isInit = false; loadData = null; }
private void ClearBootData() { this.bootType = BootType.Default; this.isInit = false; this.loadData = null; }
public void Init(AdvSaveData data, Action <UtageUguiSaveLoadItem> ButtonClickedEvent, int index, bool isSave) {