Subversion Repositories spacemission

Rev

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' then
  33.     begin
  34.       if sl.Strings[1] <> '; SAV-File' then
  35.       begin
  36.         raise Exception.Create('Dies ist kein SpaceMission-Spielstand.');
  37.       end;
  38.       FScore := StrToInt(sl.Strings[2]);
  39.       FLife := StrToInt(sl.Strings[3]);
  40.       FLevel := StrToInt(sl.Strings[4]);
  41.       FGameMode := TGameMode(StrToInt(sl.Strings[5]));
  42.     end
  43.     else
  44.     begin
  45.       raise Exception.CreateFmt('Spielstand-Format "%s" nicht unterstützt', [Copy(sl.Strings[0], 3, Length(sl.Strings[0])-2)]);
  46.     end;
  47.   finally
  48.     FreeAndNil(sl);
  49.   end;
  50. end;
  51.  
  52. procedure TSaveData.Save(filename: string);
  53. var
  54.   sl: TStringList;
  55. begin
  56.   sl := TStringList.Create;
  57.   try
  58.     sl.Add('; SpaceMission 1.0');
  59.     sl.Add('; SAV-File');
  60.     sl.Add(IntToStr(FScore));
  61.     sl.Add(IntToStr(FLife));
  62.     sl.Add(IntToStr(FLevel));
  63.     sl.Add(IntToStr(Ord(FGameMode)));
  64.     sl.SaveToFile(filename);
  65.   finally
  66.     FreeAndNil(sl);
  67.   end;
  68. end;
  69.  
  70. end.
  71.