diff options
author | Patrick Davison <snapwilliam@gmail.com> | 2013-01-08 22:45:33 -0800 |
---|---|---|
committer | Patrick Davison <snapwilliam@gmail.com> | 2013-01-08 22:45:33 -0800 |
commit | e04ac8f4c4db236005ac045a9dbb36b163f227ee (patch) | |
tree | c89696a0cd9e6e9296cf31d5382b1c6bc27ce0a2 /includes/mapclass.php | |
parent | 6b8c58ac2d4de502421acef48f4434bee605633f (diff) | |
download | pathery-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.php | 154 |
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; + } + +} + + + + + + + + + + + + + + +?> |