aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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();
+}
+
+?>