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); } ?>