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. |