annotate save.pas @ 0:62966dd383ed default tip

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