Subversion Repositories spacemission

Rev

Rev 15 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
15 daniel-mar 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);
30 daniel-mar 32
    if (sl.Strings[0] = '; SpaceMission 1.0') and
33
       (sl.Strings[1] = '; SAV-File') then
15 daniel-mar 34
    begin
30 daniel-mar 35
      FScore    := StrToInt(sl.Strings[2]);
36
      FLife     := StrToInt(sl.Strings[3]);
37
      FLevel    := StrToInt(sl.Strings[4]);
15 daniel-mar 38
      FGameMode := TGameMode(StrToInt(sl.Strings[5]));
39
    end
30 daniel-mar 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
15 daniel-mar 47
    else
48
    begin
30 daniel-mar 49
      raise Exception.Create('Spielstand-Format nicht unterstützt oder Datei beschädigt');
15 daniel-mar 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
30 daniel-mar 62
    sl.Add('[SpaceMission Savegame, Format 1.2]');
15 daniel-mar 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.