diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/save.pas	Sun Dec 08 19:39:15 2013 +0100
@@ -0,0 +1,102 @@
+{ Save and load routines. }
+
+UNIT save;
+
+INTERFACE
+
+USES Global;
+
+PROCEDURE SaveGame;
+PROCEDURE LoadGame;
+
+IMPLEMENTATION
+
+USES Gzio, Strings, Console;
+
+CONST	NL=#13+#10;
+
+VAR	f: GzFile;
+
+PROCEDURE Sav(s:STRING);
+VAR	t: pChar;
+BEGIN
+	s:=Concat(s,NL);
+	GzWrite(f,@(s[1]),Length(s));
+END;
+
+PROCEDURE SavePlayer;
+BEGIN
+	Sav('# Player character info:');
+	Sav('# ----------------------');
+	Sav(Concat('CHAR_ID ',playchr^.def^.nam));
+	Sav(Concat('CHAR_HP ',Num(playchr^.hp),' ',Num(playchr^.def^.hp)));
+	Sav(Concat('CHAR_POSITION ',Num(playchr^.x),' ',Num(playchr^.y)));
+END;
+
+PROCEDURE SaveLevel;
+BEGIN
+	Sav('# Level info:');
+	Sav('# -----------');
+
+END;
+
+PROCEDURE SaveKnowledge;
+BEGIN
+	Sav('# Items knowledge:');
+	Sav('# -----------');
+END;
+
+PROCEDURE SaveItems;
+BEGIN
+	Sav('# Items info:');
+	Sav('# -----------');
+END;
+
+PROCEDURE SaveMonsters;
+VAR	p: pCreat;
+BEGIN
+	Sav('# Creatures info:');
+	Sav('# ---------------');
+	p:=allmonsters;
+	WHILE p<>NIL DO BEGIN
+		Sav(Concat('MONSTER ',Num(p^.def^.id),' # ',p^.def^.nam));
+		Sav(Concat('MON_POSITION ',Num(p^.x),' ',Num(p^.x)));
+		Sav(Concat('MON_HP ',Num(p^.hp)));
+		Sav(Concat('MON_NEXTMOVE ',Num(p^.mov)));
+		p:=p^.next;
+	END;
+END;
+
+
+PROCEDURE SaveGame;
+BEGIN
+	Msg(msgs[34]);
+	
+	f:=GzOpen('savegame.gz','wf');
+	IF f=NIL THEN Exit;
+
+	Sav('# This is save file.');
+	Sav('# ==================');
+	
+	Sav(Concat('VERSION "',VERSION,'"'));
+
+	SavePlayer;
+	SaveKnowledge;
+	SaveItems;
+	SaveMonsters;
+	SaveLevel;
+
+		
+	Sav('# End of file.');
+	Sav('# ------------');
+	Sav('END');	
+	
+	GzFlush(f,1);
+	GzClose(f);
+END;
+
+PROCEDURE LoadGame;
+BEGIN
+END;
+
+END.
\ No newline at end of file