Subversion Repositories spacemission

Rev

Rev 15 | Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. unit ComSaveGameReader;
  2.  
  3. interface
  4.  
  5. type
  6.   TGameMode = (gmUnknown, gmLevels, gmRandom);
  7.  
  8.   TSaveData = class(TObject)
  9.   public
  10.     FScore: integer;
  11.     FLife: integer;
  12.     FLevel: integer;
  13.     FGameMode: TGameMode;
  14.     procedure Load(filename: string);
  15.     procedure Save(filename: string);
  16.   end;
  17.  
  18. implementation
  19.  
  20. uses
  21.   Classes, SysUtils;
  22.  
  23. { TSaveData }
  24.  
  25. procedure TSaveData.Load(filename: string);
  26. var
  27.   sl: TStringList;
  28. begin
  29.   sl := TStringList.Create;
  30.   try
  31.     sl.LoadFromFile(filename);
  32.     if (sl.Strings[0] = '; SpaceMission 1.0') and
  33.        (sl.Strings[1] = '; SAV-File') then
  34.     begin
  35.       FScore    := StrToInt(sl.Strings[2]);
  36.       FLife     := StrToInt(sl.Strings[3]);
  37.       FLevel    := StrToInt(sl.Strings[4]);
  38.       FGameMode := TGameMode(StrToInt(sl.Strings[5]));
  39.     end
  40.     else if (sl.Strings[0] = '[SpaceMission Savegame, Format 1.2]') then
  41.     begin
  42.       FScore    := StrToInt(sl.Strings[1]);
  43.       FLife     := StrToInt(sl.Strings[2]);
  44.       FLevel    := StrToInt(sl.Strings[3]);
  45.       FGameMode := TGameMode(StrToInt(sl.Strings[4]));
  46.     end
  47.     else
  48.     begin
  49.       raise Exception.Create('Spielstand-Format nicht unterstützt oder Datei beschädigt');
  50.     end;
  51.   finally
  52.     FreeAndNil(sl);
  53.   end;
  54. end;
  55.  
  56. procedure TSaveData.Save(filename: string);
  57. var
  58.   sl: TStringList;
  59. begin
  60.   sl := TStringList.Create;
  61.   try
  62.     sl.Add('[SpaceMission Savegame, Format 1.2]');
  63.     sl.Add(IntToStr(FScore));
  64.     sl.Add(IntToStr(FLife));
  65.     sl.Add(IntToStr(FLevel));
  66.     sl.Add(IntToStr(Ord(FGameMode)));
  67.     sl.SaveToFile(filename);
  68.   finally
  69.     FreeAndNil(sl);
  70.   end;
  71. end;
  72.  
  73. end.
  74.