public void SaveVariable(int saveIndex, string savMes, VariableToken[] vars) { string filepath = getSaveDataPathV(saveIndex); EraBinaryDataWriter bWriter = null; FileStream fs = null; try { Config.CreateSavDir(); fs = new FileStream(filepath, FileMode.Create, FileAccess.Write); bWriter = new EraBinaryDataWriter(fs); bWriter.WriteHeader(); bWriter.WriteFileType(EraSaveFileType.Var); bWriter.WriteInt64(gamebase.ScriptUniqueCode); bWriter.WriteInt64(gamebase.ScriptVersion); bWriter.WriteString(savMes); for(int i = 0; i < vars.Length; i++) bWriter.WriteWithKey(vars[i].Name, vars[i].GetArray()); bWriter.WriteEOF(); RESULT = 1; return; } catch (Exception) { RESULT = 0; return; } finally { if (bWriter != null) bWriter.Close(); else if (fs != null) fs.Close(); } }
////これは理屈上VariableEvaluator上で動くはず //public EraDataResult checkData(int saveIndex) //{ // string filename = getSaveDataPath(saveIndex); // EraDataResult result = new EraDataResult(); // EraDataReader reader = null; // try // { // if (!File.Exists(filename)) // { // result.State = EraDataState.FILENOTFOUND; // result.DataMes = "----"; // return result; // } // reader = new EraDataReader(filename); // if (!gamebase.UniqueCodeEqualTo(reader.ReadInt64())) // { // result.State = EraDataState.GAME_ERROR; // result.DataMes = "異なるゲームのセーブデータです"; // return result; // } // Int64 version = reader.ReadInt64(); // if (!gamebase.CheckVersion(version)) // { // result.State = EraDataState.VIRSION_ERROR; // result.DataMes = "セーブデータのバーションが異なります"; // return result; // } // result.State = EraDataState.OK; // result.DataMes = reader.ReadString(); // return result; // } // catch (FileEE fee) // { // result.State = EraDataState.ETC_ERROR; // result.DataMes = fee.Message; // } // catch (Exception) // { // result.State = EraDataState.ETC_ERROR; // result.DataMes = "読み込み中にエラーが発生しました"; // } // finally // { // if (reader != null) // reader.Close(); // } // return result; //} public void SaveChara(int saveIndex, string savMes, int[] charas) { string filepath = getSaveDataPathC(saveIndex); EraBinaryDataWriter bWriter = null; FileStream fs = null; try { Config.CreateSavDir(); fs = new FileStream(filepath, FileMode.Create, FileAccess.Write); bWriter = new EraBinaryDataWriter(fs); bWriter.WriteHeader(); bWriter.WriteFileType(EraSaveFileType.CharVar); bWriter.WriteInt64(gamebase.ScriptUniqueCode); bWriter.WriteInt64(gamebase.ScriptVersion); bWriter.WriteString(savMes); bWriter.WriteInt64(charas.Length);//保存するキャラ数 for (int i = 0; i < charas.Length; i++) { varData.CharacterList[i].SaveToStreamBinary(bWriter, varData); } bWriter.WriteEOF(); RESULT = 1; return; } catch (SystemException) { RESULT = 0; return; } finally { if (bWriter != null) bWriter.Close(); else if (fs != null) fs.Close(); } }