view 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 source

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