aboutsummaryrefslogtreecommitdiffstats
path: root/inc/savegame.inc
diff options
context:
space:
mode:
authorpiernov <piernov@piernov.org>2016-04-27 20:53:43 +0200
committerpiernov <piernov@piernov.org>2016-04-27 20:53:43 +0200
commit807e528d6a1ae40ab118f711fe2e8c2bb7df915a (patch)
tree1d4fbde95ff281d5bb628dcc545401146e26ff15 /inc/savegame.inc
parent2b0a84a41eeb90094d42c3c516bf99837d08a745 (diff)
parentcaf62cfe0e439fc13f7c297954c4aeb21112a2ec (diff)
downloadcandybox-807e528d6a1ae40ab118f711fe2e8c2bb7df915a.tar.gz
candybox-807e528d6a1ae40ab118f711fe2e8c2bb7df915a.tar.bz2
candybox-807e528d6a1ae40ab118f711fe2e8c2bb7df915a.tar.xz
candybox-807e528d6a1ae40ab118f711fe2e8c2bb7df915a.zip
Merge branch 'feat/savegame' into piernov
Diffstat (limited to 'inc/savegame.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();
+}
+
+?>