summaryrefslogtreecommitdiffstats
path: root/includes/mapclass.php
diff options
context:
space:
mode:
authorPatrick Davison <snapwilliam@gmail.com>2013-01-08 22:45:33 -0800
committerPatrick Davison <snapwilliam@gmail.com>2013-01-08 22:45:33 -0800
commite04ac8f4c4db236005ac045a9dbb36b163f227ee (patch)
treec89696a0cd9e6e9296cf31d5382b1c6bc27ce0a2 /includes/mapclass.php
parent6b8c58ac2d4de502421acef48f4434bee605633f (diff)
downloadpathery-e04ac8f4c4db236005ac045a9dbb36b163f227ee.tar.xz
Updating.php for use when making updates to the main server.
Also some nice buttons :)
Diffstat (limited to 'includes/mapclass.php')
-rw-r--r--includes/mapclass.php154
1 files changed, 154 insertions, 0 deletions
diff --git a/includes/mapclass.php b/includes/mapclass.php
new file mode 100644
index 0000000..ddf08cd
--- /dev/null
+++ b/includes/mapclass.php
@@ -0,0 +1,154 @@
+<?
+// MAP CLASS OBJECT
+// Snap - 12/14/2012
+
+//Remember, $this->value NOT $this->$value;
+
+//Our psuedo enums.
+define("TileType", 0);
+define("TileValue", 1);
+
+define("TileEmpty", 'o');
+define("TileStart", 's');
+define("TileFinish", 'f');
+define("TileCheckpoint", 'c');
+define("TileRock", 'r');
+define("TileTeleportIn", 't');
+define("TileTeleportOut", 'u');
+define("TileUnbuildable", 'q');
+define("TileSinglePath", 'x');
+
+class map {
+ public $name;
+ public $tiles;
+
+ public $teleports;
+ public $checkpoints;
+ public $height;
+ public $width;
+ public $isBlind;
+ public $isMultiPath;
+
+ public $code;
+
+ public function __construct($code = NULL) {
+ if ($code !== NULL)
+ $this->applyMapFromOldCode($code);
+ //echo "Construct complete";
+ }
+
+ public function applyMapFromOldCode($code) {
+ //echo "decoding mapcode: [$code]";
+ unset($this->tiles);
+
+ $tmp = explode( ":", $code);
+ $headers = explode( '.', $tmp[0]);
+ $splitCode = explode( '.', $tmp[1]);
+
+ $dimensions = explode( 'x', $headers[0]);
+ $this->width = $dimensions[0];
+ $this->height = $dimensions[1];
+ $this->name = $headers[5]; //Map Name
+
+ //Make assumptions:
+ $this->isMultiPath = false;
+ $this->isBlind = false;
+ $this->teleports = 0;
+ $this->checkpoints = 0;
+
+ $t = -1;
+ $index = 0;
+ for ($y = 0; $y < $this->height; $y++) { //Number of Rows
+ for ($x = 0; $x < $this->width; $x++) { //Number of Columns
+ $t++;
+ $next = substr($splitCode[$index], 0, strlen($splitCode[$index]) - 1);
+
+ //Are we at the next target, if there is one.
+ if ($next == $t AND $next != '') {
+
+ //Update tile.
+ $type = substr($splitCode[$index], -1, 1);
+
+ $value = '';
+ // Count checkpoints and etc.
+ switch ($type) {
+ case 'S':
+ $this->isMultiPath = true;
+ $value = 1;
+ $type = 's';
+ break;
+ case 'R':
+ $value = 1;
+ $type = 'r';
+ break;
+ case 'q':
+ $value = 2;
+ $type = 'r';
+ break;
+ //Probably a more intelligent way to do this; but it works:
+ case 'a': $value = ''; $type = 'c'; break;
+ case 'b': $value = 2; $type = 'c'; break;
+ case 'c': $value = 3; $type = 'c'; break;
+ case 'd': $value = 4; $type = 'c'; break;
+ case 'e': $value = 5; $type = 'c'; break;
+
+ case 't': $value = ''; $type = 't'; break;
+ case 'm': $value = 2; $type = 't'; break;
+ case 'g': $value = 3; $type = 't'; break;
+ case 'i': $value = 4; $type = 't'; break;
+ case 'k': $value = 5; $type = 't'; break;
+
+ case 'u': $value = ''; $type = 'u'; break;
+ case 'n': $value = 2; $type = 'u'; break;
+ case 'h': $value = 3; $type = 'u'; break;
+ case 'j': $value = 4; $type = 'u'; break;
+ case 'l': $value = 5; $type = 'u'; break;
+ }
+
+ $this->tiles[$y][$x][TileType] = $type;
+ $this->tiles[$y][$x][TileValue] = $value;
+ $index++;
+ //Start from 0 again.
+ $t = -1;
+
+ } else {
+ $this->tiles[$y][$x][TileType] = 'o'; //Empty Tile
+ }
+ }
+ }
+ }
+
+ //Creates the map based on a new code.
+ public function applyMapFromNewCode($code) {
+ $this->code = $code;
+ }
+
+ //Outputs the new code.
+ public function getCode() {
+ //If we already have the code on hand...
+ if ($this->code)
+ return $this->code;
+ //Otherwise we need to build the code:
+ }
+
+ //Other "Magical" functions.
+ public function __toString() {
+ return $this->name;
+ }
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+?>