public void WriteFileType(EraSaveFileType type) { writer.Write((byte)type); }
public CheckdataMethod(string name, EraSaveFileType type) { ReturnType = typeof(Int64); argumentTypeArray = new Type[] { typeof(Int64) }; CanRestructure = false; this.name = name; this.type = type; }
public EraDataResult CheckData(int saveIndex, EraSaveFileType type) { string filename = null; switch (type) { case EraSaveFileType.Normal: filename = getSaveDataPath(saveIndex); break; case EraSaveFileType.Global: filename = getSaveDataPathG(); break; case EraSaveFileType.Var: filename = getSaveDataPathV(saveIndex); break; case EraSaveFileType.CharVar: filename = getSaveDataPathC(saveIndex); break; } EraDataResult result = new EraDataResult(); if (!File.Exists(filename)) { result.State = EraDataState.FILENOTFOUND; result.DataMes = "----"; return result; } FileStream fs = null; EraBinaryDataReader bReader = null; EraDataReader reader = null; Int64 version = 0; try { fs = new FileStream(filename, FileMode.Open, FileAccess.Read); bReader = EraBinaryDataReader.CreateReader(fs); if (bReader == null)//eramaker形式 { reader = new EraDataReader(fs); if (!gamebase.UniqueCodeEqualTo(reader.ReadInt64())) { result.State = EraDataState.GAME_ERROR; result.DataMes = "異なるゲームのセーブデータです"; return result; } 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; //result.State = EraDataState.ETC_ERROR; //result.DataMes = "セーブデータが壊れています"; //return result; } EraSaveFileType fileType = bReader.ReadFileType(); if (type != fileType) { result.State = EraDataState.ETC_ERROR; result.DataMes = "セーブデータが壊れています"; return result; } if (!gamebase.UniqueCodeEqualTo(bReader.ReadInt64())) { result.State = EraDataState.GAME_ERROR; result.DataMes = "異なるゲームのセーブデータです"; return result; } version = bReader.ReadInt64(); if (!gamebase.CheckVersion(version)) { result.State = EraDataState.VIRSION_ERROR; result.DataMes = "セーブデータのバーションが異なります"; return result; } result.State = EraDataState.OK; result.DataMes = bReader.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(); else if (bReader != null) bReader.Close(); else if (fs != null) fs.Close(); } return result; }