Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
 ////これは理屈上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();
     }
 }