/// <summary> /// 保存 /// </summary> public void Save() { this.ioTime = Time.realtimeSinceStartup; this.accessTime = 0f; // 保存設定(※デモ用の設定変更) this.procSettings = this.usedSettings.Clone() as UserSettings; this.saveAllyStatus = this.saveAllyStatus.Clone() as SaveAllyStatus; UserSettings us = this.procSettings; SaveAllyStatus sas = this.procSaveAllyStatus; us.format = this.control.saveJson.isOn ? FORMAT.JSON : FORMAT.BINARY; us.encrypt = this.control.saveEncrypt.isOn; us.backup = this.control.saveBackup.isOn; // 内容更新(適当に内容を更新) System.DateTime date = System.DateTime.Now; us.date = date.ToBinary(); us.count += 1; us.saveAllyStatus.StatusCopy(this.allyStatus); sas.format = this.control.saveJson.isOn ? FORMAT.JSON : FORMAT.BINARY; sas.encrypt = this.control.saveEncrypt.isOn; sas.backup = this.control.saveBackup.isOn; // 内容更新(適当に内容を更新) sas.StatusCopy(this.allyStatus); // 保存(※FinishHandlerはnullでも可) bool async = this.control.saveAsync.isOn; if (async) { this.accessMessage = "Now Saving"; } this.storageManager.Save(this.procSettings, this.ioHandler, async); this.storageManager.Save(this.procSaveAllyStatus, this.ioHandler, async); }
/// <summary> /// 初期化 /// </summary> void Start() { this.control = this.GetComponent <StorageControl>(); this.ioHandler = new FinishHandler(this.IOHandler); this.storageManager = new StorageManager(); this.usedSettings = this.procSettings = new UserSettings(); this.saveAllyStatus = this.procSaveAllyStatus = new SaveAllyStatus(); // 例外 this.UpdateDataInfo((IO_RESULT)999); }
/// <summary> /// 簡易リセット /// </summary> public void Clear() { #if DEMO this.format_ = Storage.FORMAT.BINARY; this.encrypt_ = false; this.backup_ = false; #endif this.date = System.DateTime.MinValue.ToBinary(); this.count = 0; this.saveAllyStatus = new SaveAllyStatus(); }
// ステータスをセーブ用にコピー public void StatusLoad(SaveAllyStatus saveAllyStatus) { // キャラクターの名前 SetCharacterName(saveAllyStatus.GetCharacterName()); SetPoisonState(saveAllyStatus.IsPoisonState()); SetNumbness(saveAllyStatus.IsNumbnessState()); // キャラクターのレベル SetLevel(saveAllyStatus.GetLevel()); // 素早さ SetAgility(saveAllyStatus.GetAgility()); // 力 SetPower(saveAllyStatus.GetPower()); // 打たれ強さ SetStrikingStrength(saveAllyStatus.GetStrikingStrength()); // 魔法力 SetMagicPower(saveAllyStatus.GetMagicPower()); // 最大HP SetMaxHp(); // HP SetHp(saveAllyStatus.GetHp()); // 最大MP SetMaxMp(); // MP SetMp(saveAllyStatus.GetMp()); // 持っているスキル SetSkillList(saveAllyStatus.GetSkillList()); //属性カット率 SetCutFlame(saveAllyStatus.GetCutFlame()); SetCutThunder(saveAllyStatus.GetCutThunder()); SetCutIce(saveAllyStatus.GetcutIce()); // 獲得経験値 SetEarnedExperience(saveAllyStatus.GetEarnedExperience()); // 装備している武器 SetEquipWeapon(saveAllyStatus.GetEquipWeapon()); // 装備している鎧 SetEquipArmor(saveAllyStatus.GetEquipArmor()); //装備しているアクセサリ SetEquipAccessory1(saveAllyStatus.GetEquipAccessory1()); SetEquipAccessory2(saveAllyStatus.GetEquipAccessory2()); // 攻撃力 SetAttackPower(saveAllyStatus.GetAttackPower()); // 守備力 SetDefencePower(saveAllyStatus.GetDefencePower()); }
/// <summary> /// データ情報更新 /// </summary> /// <param name="result">結果</param> private void UpdateDataInfo(IO_RESULT result) { UserSettings us = this.usedSettings = this.procSettings; SaveAllyStatus sas = this.saveAllyStatus = this.procSaveAllyStatus; //us.format = this.control.saveJson.isOn ? FORMAT.JSON : FORMAT.BINARY; //us.encrypt = this.control.saveEncrypt.isOn; //us.backup = this.control.saveBackup.isOn; if (us.count > 0) { this.control.dataInfo.text = string.Format(INFO_FORMAT, us.version, us.encrypt, us.format, us.backup, System.DateTime.FromBinary(us.date).ToString(), us.count); this.control.filePath.text = Application.persistentDataPath + us.fileName; } else { this.control.dataInfo.text = string.Format(INFO_FORMAT, "--", "--", "--", "--", "-/-/---- --:--:--", "--"); this.control.filePath.text = "----"; } this.state = STATE.IDLE; switch (result) { case IO_RESULT.NONE: this.accessMessage = "NOTHING"; break; case IO_RESULT.SAVE_SUCCESS: case IO_RESULT.LOAD_SUCCESS: this.accessMessage = "SUCCESS"; break; case IO_RESULT.SAVE_FAILED: case IO_RESULT.LOAD_FAILED: this.accessMessage = "FAILED"; break; default: this.accessMessage = "NOTHING"; break; } this.control.access.text = this.accessMessage; }
/// <summary> /// 完了コールバック /// </summary> /// <param name="ret">結果</param> /// <param name="dataInfo">結果情報</param> private void IOHandler(IO_RESULT ret, ref DataInfo dataInfo) { this.result = ret; switch (ret) { case IO_RESULT.SAVE_SUCCESS: // 保存成功 if (dataInfo.async) { this.state = STATE.ASYNC_WAIT; break; } this.UpdateDataInfo(ret); this.state = STATE.IDLE; break; case IO_RESULT.SAVE_FAILED: // 保存失敗 if (dataInfo.async) { this.state = STATE.ASYNC_WAIT; break; } this.state = STATE.IDLE; break; case IO_RESULT.LOAD_SUCCESS: // 読込成功 /* * this.procSettings = dataInfo.serializer as UserSettings; * this.procSettings.encrypt = dataInfo.encrypt; * this.procSettings.format = dataInfo.format; * this.procSettings.backup = dataInfo.backup; */ this.procSaveAllyStatus = dataInfo.serializer as SaveAllyStatus; this.procSaveAllyStatus.encrypt = dataInfo.encrypt; this.procSaveAllyStatus.format = dataInfo.format; this.procSaveAllyStatus.backup = dataInfo.backup; this.allyStatus.StatusLoad(this.procSaveAllyStatus); if (dataInfo.async) { this.state = STATE.ASYNC_WAIT; break; } this.UpdateDataInfo(ret); this.state = STATE.IDLE; break; case IO_RESULT.LOAD_FAILED: // 読込失敗 if (dataInfo.async) { this.state = STATE.ASYNC_WAIT; break; } this.state = STATE.IDLE; break; case IO_RESULT.NONE: // データ不備 this.state = STATE.IDLE; break; } }