aboutsummaryrefslogtreecommitdiffstats
path: root/inc
diff options
context:
space:
mode:
authorpiernov <piernov@piernov.org>2016-04-27 20:39:59 +0200
committerpiernov <piernov@piernov.org>2016-04-27 20:39:59 +0200
commit5f3b810b6a141cf70b575430d08c5a57e3acc5ce (patch)
treee13a90f6fcbfa7215e3cc7f88417cba67f5715f1 /inc
parent043009630b775251ea20dcfb9316ac68585d1d3a (diff)
downloadcandybox-5f3b810b6a141cf70b575430d08c5a57e3acc5ce.tar.gz
candybox-5f3b810b6a141cf70b575430d08c5a57e3acc5ce.tar.bz2
candybox-5f3b810b6a141cf70b575430d08c5a57e3acc5ce.tar.xz
candybox-5f3b810b6a141cf70b575430d08c5a57e3acc5ce.zip
Add savegame.inc with methods for saving the game
Diffstat (limited to 'inc')
-rw-r--r--inc/savegame.inc44
1 files changed, 44 insertions, 0 deletions
diff --git a/inc/savegame.inc b/inc/savegame.inc
new file mode 100644
index 0000000..f3b6da6
--- /dev/null
+++ b/inc/savegame.inc
@@ -0,0 +1,44 @@
+<?php
+
+require_once("inc/messages.inc");
+
+define("SAVEDIR", "data/save");
+
+function genXML($v, $k, $xml) {
+ if(is_object($v))
+ {
+ if(is_callable(array($v, "addToXML")))
+ $v->addToXML($xml->addChild($k));
+ }
+ else
+ $xml->addChild($k, $v);
+}
+
+function genSave() {
+ header("Content-Type: application/xml");
+ $save = new SimpleXMLElement("<save/>");
+
+ array_walk_recursive($_SESSION, "genXML", $save);
+ return $save;
+ echo $save->asXML();
+}
+
+function genFilename() {
+ return "craftmine-".date("d-m-Y_H-i-s").".save.xml";
+}
+
+function saveGame() {
+ $save = genSave();
+ if($save->asXML(SAVEDIR."/".genFilename())) sendInfo("gamesave_ok");
+ else sendError("gamesave_error");
+}
+
+function downSave() {
+ $save = genSave();
+ header("Content-Type: application/xml");
+ header("Content-Disposition: attachment; filename=".genFilename());
+ header("Pragma: no-cache");
+ echo $save->asXML();
+}
+
+?>