tiles);
//echo "---
";
//print_r(getJsonData($myNewMap));
if ($_GET['getmapobject'] == 'true') {
$mapID = $_GET['mapid'];
$code = getMapCode($mapID);
//echo $code;
$myMap = new map($code);
echo json_encode($myMap);
exit;
}
if ($_GET['getmapobjects'] == 'true') {
$tmp = explode(",", $_GET['mapids']);
foreach ($tmp as $mapID) {
$code = getMapCode($mapID);
//echo $code;
$myMap = new map($code);
$json['maps'][$mapID] = json_encode($myMap);
}
}
if ($_GET['getmapsbydaysago'] == 'true') {
$daysAgo = $_GET['daysago'];
$maps = getMapsPlayed($daysAgo);
$json['maps'] = $maps;
}
if ($_GET['getscores'] == 'true') {
foreach ($maps as $mapID => $map) {
$json['scores'][$mapID] = getScores($mapID, 1, 100);
}
}
echo json_encode($json);
function getMapsPlayed($daysAgo) {
$sql = "
SELECT `mapID`, `code`, `mapType`
FROM `mapOfTheDay`
INNER JOIN `maps` ON `mapID` = maps.ID
WHERE DATE_ADD(CURDATE(), INTERVAL -$daysAgo DAY) =
mapDate AND
`mapType` IN (1, 2, 3, 4)
";
$result = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($result) == 0)
return -1;
global $mapNamesByType;
$r = array();
while($data = mysql_fetch_array($result)) {
$code = $data['code'];
$mapID = $data['mapID'];
$mapType = $data['mapType'];
$map = new map($code);
if ($map->name == '')
$map->name = $mapNamesByType[$mapType];
$r[$mapID] = $map;
}
return $r;
}
exit;
echo json_encode($myNewMap);
//By Wrikken
function getJsonData($obj){
$var = get_object_vars($obj);
foreach($var as &$value) {
if(is_object($value) && method_exists($value,'getJsonData')) {
$value = $value->getJsonData();
}
}
return $var;
}
exit;
//Conditions for effectiveness.
//Yes:
echo ((20 & 4) == 4);
echo "
";
//Yes:
echo ((4 & 20) == 4);
echo "
";
//No:
echo ((4 & 20) == 20);
echo "
";
//No:
echo ((16 & 4) == 4);
echo "
";
//Yes:
echo ((37 & 4) == 4);
echo "
";
$format = '(%1$2d = %1$04b) = (%2$2d = %2$04b)'
. ' %3$s (%4$2d = %4$04b)' . "\n";
echo << $top)
continue;
if ($i <= $bottom)
continue;
}
if ($wallEmblem == '')
$wallEmblem = 'blank.png';
$cdate = $row['cdate'];
$cdate = date("g:i A (T)", strtotime($cdate));
$scoredDate = strtotime($row['cdate']);
$secondsSinceScored = strtotime("now") - $scoredDate ;
//Alternate background colors
$background = '#262631';
if ($i % 2 == 1)
$background = '#20202a';
if ($userPosition == $i) {
$background = '#343c57';
$foundUser = true;
}
$medal = 'none';
if ($moves == $bestMoves)
$medal = 'silver';
if ($i == 1)
$medal = 'gold';
// if is blind map.
if ($isBlindMap AND $myBestMoves < $moves)
$row['moves'] = '???';
$output['users'][$i] = $row;
$output['users'][$i]['rank'] = $i;
$output['users'][$i]['scoredDate'] = $cdate;
$output['users'][$i]['secondsSinceScored'] = $secondsSinceScored;
$output['users'][$i]['background'] = $background;
$output['users'][$i]['medal'] = $medal;
$output['users'][$i]['isUser'] = $userPosition == $i;
//$output['users'][$i]['debug'] = "Bestmoves: $bestMoves moves: $moves";
} // END WHILE
if ($foundUser) {
$userPage = ceil(($userPosition / $pageDivide));
$output['userPage'] = $userPage;
$output['userPosition'] = $userPosition;
}
$output['pageCount'] = ceil(($i / $pageDivide));
if ($prevPage > 0) {
$navi .= " << ";
$navi .= " < ";
} else {
$navi .= " << ";
$navi .= " <";
}
for ($x = 1; $x <= $pageCount; $x++) {
if ($x < $pageNumber - 3 OR $x > $pageNumber + 3)
continue;
if ($x == $pageNumber)
$navi .= " $x ";
elseif ($userPage == $x)
$navi .= " $x ";
else
$navi .= " $x ";
}
if ($nextPage <= $pageCount) {
$navi .= " > ";
$navi .= " >> ";
}
$output['users'] = array_values($output['users']);
return $output;
}
$prep['name'] = 'Active';
for($i = 1; $i <= 4; $i++) {
$map = MapOfTheDay($i);
$mapid = $map['id'];
$data['name'] = $map['map'][0][6];
$data['id'] = $map['id'];
$data['tiles'] = convertMapTiles($map['map']);
$prep['levels'][] = $data;
}
// $past['name'] = 'Past Maps';
// for($i = 2; $i <= 4; $i++) {
//$map = MapOfTheDay($i);
// $pastMap = pastMap(1, $i);
// $mapid = $pastMap;
// $mapcode = getMapCode($mapID);
// $map = GenerateMapByCode($mapcode);
// $mapid = $map['id'];
// $data['name'] = $map['map'][0][6];
// $data['id'] = $map['id'];
// $data['tiles'] = convertMapTiles($map['map']);
// $past['levels'][] = $data;
// }
$json['action'] = 'getLevelSets';
$json['response'] = 'ok';
$json['data']['levelSetsResponse']['sets'][] = $prep;
$json['data']['levelSetsResponse']['sets'][] = $past;
$encoded = json_encode($json);
die($encoded);
function convertMapTiles($map) {
$r = '';
for($i = 1; $i < count($map); $i++) {
if ($i !== 1)
$r .= ',';
for($j = 0; $j < count($map[$i]); $j++) {
switch($map[$i][$j]) {
case 'o': $r .= '00'; break;
case 's': $r .= '02'; break;
//Multipath:
case 'S': $r .= '99'; break;
//Path 1 and Path 2 allow-only rocks.
case 'X':
break;
case 'x':
break;
case 'f': $r .= '03';break;
case 't': $r .= '50';break;
case 'u': $r .= '60';break;
case 'm': $r .= '51';break;
case 'n': $r .= '61';break;
case 'g': $r .= '52';break;
case 'h': $r .= '63';break;
case 'i': $r .= '54';break;
case 'j': $r .= '64';break;
case 'k': $r .= '55';break;
case 'l': $r .= '65';break;
case 'a': $r .= '40';break;
case 'b': $r .= '41';break;
case 'c': $r .= '42';break;
case 'd': $r .= '43';break;
case 'e': $r .= '44';break;
case 'r': $r .= '00';break;
//Visually distinct rocks:
case 'R': $r .= '00';break;
case 'q': $r .= '00';break;
//Technically shouldn't ever be used to display a wall...
case 'w': $r .= '01';break;
}
}
}
return $r;
}
function translatemap($mapMatrix, $mapID) {
$mapdata['height'] = $mapMatrix[0][0];
$mapdata['width'] = $mapMatrix[0][1];
$waypoints = $mapMatrix[0][2];
$mapdata['rocks'] = $mapMatrix[0][3];
$walls = $mapMatrix[0][4];
$mapdata['teleports'] = $mapMatrix[0][5];
$r .= "";
$r .= "\n ";
$r .= "\n $mapID";
$r .= "\n $walls";
$r .= "\n $waypoints";
$r .= "\n ";
$r .= "\n ";
$r .= "\n ";
for ($i = 1; $i < count($mapMatrix); $i++) {
$r .= "\n ";
for ($j = 0; $j < count($mapMatrix[$i]); $j++) {
switch($mapMatrix[$i][$j]) {
case 's': $r .= "02 "; break;
case 'f': $r .= "03 "; break;
case 't': $r .= "50 "; break;
case 'u': $r .= "61 "; break;
//TP2
case 'm': $r .= "51 "; break;
case 'n': $r .= "62 "; break;
//TP3
case 'g': $r .= "52 "; break;
case 'h': $r .= "63 "; break;
//TP4
case 'i': $r .= "53 "; break;
case 'j': $r .= "64 "; break;
//TP5
case 'k': $r .= "54 "; break;
case 'l': $r .= "65 "; break;
case 'a': $r .= "40 "; break;
case 'b': $r .= "41 "; break;
case 'c': $r .= "42 "; break;
case 'd': $r .= "43 "; break;
case 'e': $r .= "44 "; break;
case 'r': $r .= "00 "; break; //rock
case 'w': $r .= "01 "; break; //wall
//default: $r .= "".$index." | ";
default: $r .= "10 ";
//default: $r .= "".$mapMatrix[$i][$j]." | ";
}
}
$r .= "
";
}
$r .= "\n ";
$r .= "\n ";
$r .= "\n";
return $r;
}
// encode array $json to JSON string
//echo "working...";
if ($_GET['act'] == "test") {
//header('Content-Type: text/xml');
header("Content-Type: text/plain");
if ($_POST['XMLRequest']) {
$string = $_POST['XMLRequest'];
} else {
$string = '
5
FiftyToo
50
';
}
$xml = simplexml_load_string($string);
//echo $xml->APIRequest->SubmitScore->MapID;
//print_r ($xml);
$score = $xml->APIRequest[0]->SubmitScore[0]->Score;
$username = $xml->APIRequest[0]->SubmitScore[0]->Username;
//echo $xml->getName() . "
";
// foreach($xml->children() as $child) {
// echo $child->getName() . ": " . $child . "
";
// }
//$score = 50;
$previousScore = 49;
$rank = 1;
//Begin XML Response
$w = new XMLWriter();
$w->openMemory();
$w->startDocument('1.0','UTF-8');
$w->startElement("BrainMazeAPI");
$w->writeAttribute("version", "0.1");
$w->startElement("APIResponse");
$w->startElement("SubmitScore");
$w->writeAttribute("result", "SUCCESS");
$w->startElement("rank");
$w->text($rank);
$w->endElement();
$w->startElement("update");
$w->text('true');
$w->endElement();
$w->startElement("UsernameUsed");
$w->text($username);
$w->endElement();
$w->startElement("SubmittedScore");
$w->text($score);
$w->endElement();
$w->startElement("PreviousHighScore");
$w->text($previousScore);
$w->endElement();
$w->endElement();
$w->endElement();
$w->endElement();
echo $w->outputMemory(true);
}
if ($_GET['act'] == "submit") {
header('Content-Type: text/xml');
echo '
5
50
49
';
}
$xml = '
5
FiftyToo
50
5
50
49
';
if ($_GET['act'] == "getmap") {
$maptype = $_GET['maptype'] + 0;
if (!is_int($maptype))
return;
if ($maptype > 4)
return;
if ($maptype < 1)
return;
$motd = MapOfTheDay($maptype);
$map = $motd['map'];
$mapID = $motd['id'];
//print_r($map);
echo translatemap($map, $mapID);
}
?>