0
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
1 { Save and load routines. }
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
2
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
3 UNIT save;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
4
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
5 INTERFACE
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
6
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
7 USES Global;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
8
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
9 PROCEDURE SaveGame;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
10 PROCEDURE LoadGame;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
11
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
12 IMPLEMENTATION
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
13
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
14 USES Gzio, Strings, Console;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
15
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
16 CONST NL=#13+#10;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
17
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
18 VAR f: GzFile;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
19
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
20 PROCEDURE Sav(s:STRING);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
21 VAR t: pChar;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
22 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
23 s:=Concat(s,NL);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
24 GzWrite(f,@(s[1]),Length(s));
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
25 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
26
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
27 PROCEDURE SavePlayer;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
28 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
29 Sav('# Player character info:');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
30 Sav('# ----------------------');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
31 Sav(Concat('CHAR_ID ',playchr^.def^.nam));
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
32 Sav(Concat('CHAR_HP ',Num(playchr^.hp),' ',Num(playchr^.def^.hp)));
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
33 Sav(Concat('CHAR_POSITION ',Num(playchr^.x),' ',Num(playchr^.y)));
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
34 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
35
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
36 PROCEDURE SaveLevel;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
37 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
38 Sav('# Level info:');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
39 Sav('# -----------');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
40
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
41 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
42
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
43 PROCEDURE SaveKnowledge;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
44 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
45 Sav('# Items knowledge:');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
46 Sav('# -----------');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
47 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
48
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
49 PROCEDURE SaveItems;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
50 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
51 Sav('# Items info:');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
52 Sav('# -----------');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
53 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
54
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
55 PROCEDURE SaveMonsters;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
56 VAR p: pCreat;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
57 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
58 Sav('# Creatures info:');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
59 Sav('# ---------------');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
60 p:=allmonsters;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
61 WHILE p<>NIL DO BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
62 Sav(Concat('MONSTER ',Num(p^.def^.id),' # ',p^.def^.nam));
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
63 Sav(Concat('MON_POSITION ',Num(p^.x),' ',Num(p^.x)));
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
64 Sav(Concat('MON_HP ',Num(p^.hp)));
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
65 Sav(Concat('MON_NEXTMOVE ',Num(p^.mov)));
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
66 p:=p^.next;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
67 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
68 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
69
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
70
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
71 PROCEDURE SaveGame;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
72 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
73 Msg(msgs[34]);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
74
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
75 f:=GzOpen('savegame.gz','wf');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
76 IF f=NIL THEN Exit;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
77
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
78 Sav('# This is save file.');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
79 Sav('# ==================');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
80
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
81 Sav(Concat('VERSION "',VERSION,'"'));
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
82
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
83 SavePlayer;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
84 SaveKnowledge;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
85 SaveItems;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
86 SaveMonsters;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
87 SaveLevel;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
88
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
89
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
90 Sav('# End of file.');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
91 Sav('# ------------');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
92 Sav('END');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
93
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
94 GzFlush(f,1);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
95 GzClose(f);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
96 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
97
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
98 PROCEDURE LoadGame;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
99 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
100 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
101
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
102 END. |