summaryrefslogtreecommitdiffstats
path: root/includes/mapoftheday.php
blob: c5b98346f10b71bd1fa9abdf4f224f5f4743c8b5 (plain)
1
<?PHP

include_once('maps.php');
include_once('db.inc.php');


function mapOfTheDay($type = 1) {
	ignore_user_abort(true);
	
	if ($type <= 8)
		$expire = 2;
	if ($type <= 4)
		$expire = 1;
	
	$sql = "
SELECT 
	maps.ID, 
	maps.code
FROM `mapOfTheDay`, `maps`
WHERE `mapType` = $type AND
	DATEDIFF(CURDATE(), mapOfTheDay.mapDate) < $expire AND
	mapID = maps.ID
	";
	$result = mysql_query($sql);
	//No map for today?
	if (mysql_num_rows($result) == 0) {
		// If you want to modify the maps created! This is the line
		//GenerateMap($rows, $cols, $rockchance, $numBlocks = -1, $cp = -1, $tp = -1) {
		switch ($type) {
			case 1:		//Easy
			$map = GenerateMap(13, 7, 12, rand(7,10), rand(0, 1), 0);
			break;
			
			case 2:		//Normal
			$map = GenerateMap(15, 9, 7, rand(11,13), rand(1,3) + rand(0,1), 0);
			break;
			
			case 3:		//Hard
			$map = GenerateMap(19, 9, rand(7, 9), rand(14,16), rand(2,5), rand(1,2));
			break;
			
			case 4:		//Full random map
			$map = getRandomSpecialMap();
			break;
			
			case 5:
			// TEST MAP...
			$ultraComplex[] = "soooooooooooooooooooooooooooor";
			$ultraComplex[] = "ro??????????????????????????of";
			$ultraComplex[] = "so??????????????????????????or";
			$ultraComplex[] = "ro??????????????????????????of";
			$ultraComplex[] = "so??????????????????????????or";
			$ultraComplex[] = "ro??????????????????????????of";
			$ultraComplex[] = "so??????????????????????????or";
			$ultraComplex[] = "ro??????????????????????????of";
			$ultraComplex[] = "so??????????????????????????or";
			$ultraComplex[] = "ro??????????????????????????of";
			$ultraComplex[] = "so??????????????????????????or";
			$ultraComplex[] = "roooooooooooooooooooooooooooof";

			$ultraComplex = insertPoint($ultraComplex, 'abcde');
			$ultraComplex = insertPoint($ultraComplex, 'tumngh');
			$ultraComplex = insertPoint($ultraComplex, 'ppppppppppp');

			$myparams['checkpoints'] = 5;
			$myparams['teleports'] = 3;
			$myparams['rockchance'] = 9;
			$myparams['walls'] = 38;
			$myparams['name'] = 'Ultra Complex';
			$map = GenerateShapedMap($ultraComplex, $myparams);

			break;
			
			default:
			$map = GenerateMap(rand(13, 18), rand(10, 14), rand(6, 9));
			break;
		}

		//Double check... $sql is already set
		$result = mysql_query($sql);
		//Are you SURE there's no map?
		if (mysql_num_rows($result) != 0)
			return mapOfTheDay($type);
	
		$code = GenerateMapCode($map);
		$sql = "INSERT INTO `maps` (`code`)
		VALUES ('$code')";
		
		$result = mysql_query($sql);
		if (!$result) 
			die("Error on inserting map");
		$mapID = mysql_insert_id();
		$r['code'] = $code;
		$r['map'] = $map;
		$r['id'] = $mapID;
		
		$sql = "INSERT INTO `mapOfTheDay` (`mapID`, `mapType`, `mapDate`)
		VALUES ('$mapID', '$type', CURDATE()) ";
		$result = mysql_query($sql);
		if (!$result) 
			die("Error on insert into mapOfTheDay");
		
		// ---------- Track statistics for 'yesterdays' map.
		trackMOTDstats($type);
		
		return $r;
	}
	$r['code'] = mysql_result($result, 0, 'code');
	$r['map'] = GenerateMapByCode($r['code']);
   $r['id'] = mysql_result($result, 0, 'ID');
	return $r;
}

//Select from yesterday
function getYesterdaysMap() {
	$sql = "
	select `ID`, `code` from `maps`
	WHERE ( 
		DAY(dateCreated) = DAY(NOW()) - 1 
		AND 
		MONTH(dateCreated) = MONTH(NOW()) 
		AND
		YEAR(dateCreated) = YEAR(NOW())
	)
	";
	$result = mysql_query($sql);
	//No map for today?
	if (mysql_num_rows($result) == 0) {
		return -1;
	}
	$r['code'] = mysql_result($result, 0, 'code');
   $r['id'] = mysql_result($result, 0, 'ID');
	return $r;
}


function getRandomSpecialMap() {

	//This can be used to add additional weight to certain maps that we like.
	$random = weight(0, 1, 2, 3, 4, 5, 6, 7, 8);
	
	$shape = array();
	$params = array();

	switch ($random) {

		//=====================================
		case 0:
		//Thirty
		$map = GenerateMap(
			18, 14, 20						,  		//width, height, rocks
			weight(30)						,			//Walls
			weight(1)						,			//Checkpoints
			weight(1)						,			//Teleports
			'Thirty'
		);	
		break;
		//=====================================
		case 1:
		//Simple
		$map = GenerateMap(
			18, 9, 7							,  		//width, height, rocks
			weight(15,16,17)				,			//Walls
			weight(0)						,			//Checkpoints
			weight(0)						,			//Teleports
			'Finite'
		);	
		break;
		//=====================================
		case 2:
		//ABC's
		$map = GenerateMap(
			19, 11, 12						,  		//width, height, rocks
			weight(20,21,22,22,23)		,			//Walls
			weight(3)						,			//Checkpoints
			weight(0)						,			//Teleports
			"ABC's "
		);	
		break;
		//=====================================
		case 3:
		//Tele Madness
		$map = GenerateMap(
			17, 12, 10					,  		//width, height, rocks
			weight(17,18)				,			//Walls
			weight(1)					,			//Checkpoints
			weight(5)					,			//Teleports
			'Teleport Madness'
		);
		break;
		//=====================================
		case 4:	//Thursday
		//Rocky Maze
		$map = GenerateMap(
			19, 15, 5					,  		//width, height, rocks
			weight(16,17,18)			,			//Walls
			weight(1,2,2,2,3,3)		,			//Checkpoints
			weight(0)					,			//Teleports
			'Rocky Maze'
		);		
		break;
		//=====================================
		case 5:	//Friday
		//Side to Side
		$map = GenerateMap(
			26, 6, 12				,  		//width, height, rocks
			weight(17,18,19)		,			//Walls
			weight(2,2,2,3,3)		,			//Checkpoints
			weight(3,3,3,4)		,			//Teleports
			'Side to Side'
		);	
		break;
		
		//=====================================
		case 6:
		//Ultimate's Random map:
		//Create shape
		$shape[] = "??????????????????";
		$shape[] = "??????????????????";
		$shape[] = "??????????????????";
		$shape[] = "??????????????????";
		$shape[] = "??????????????????";
		$shape[] = "??????????????????";
		$shape[] = "??????????????????";
		$shape[] = "??????????????????";
		$shape[] = "??????????????????";
		$shape[] = "??????????????????";
		//Insert points
		$shape = insertPoint($shape, "sfabcr", $target = '?');
		$shape = insertPoint($shape, weight("tu", "d", "tu", "", ""), $target = '?');
		//Set params
		$params['rockchance'] = 10;
		$params['walls'] = weight(21, 20, 22, 20, 21);
		$params['name'] = 'Ultimate Random';
		//Put it all together.
		$map = GenerateShapedMap($shape, $params);

		break;
		//=====================================
		
		//=====================================
		case 7:
		//Dual map
		$dualmapa[] = "s???????????????????f";
		$dualmapa[] = "s???????????????????f";
		$dualmapa[] = "s???????????????????f";
		$dualmapa[] = "s???????????????????f";
		$dualmapa[] = "s???????????????????f";
		$dualmapa[] = "s???????????????????f";
		$dualmapa[] = "oqqqqqqqqqqqqqqqqqqqo";
		$dualmapb[] = "s???????????????????f";
		$dualmapb[] = "s???????????????????f";
		$dualmapb[] = "s???????????????????f";
		$dualmapb[] = "s???????????????????f";
		$dualmapb[] = "s???????????????????f";
		$dualmapb[] = "s???????????????????f";

		$dualmapa = insertPoint($dualmapa, 'abc');
		$dualmapb = insertPoint($dualmapb, 'abc');
		$dualmap = array_merge($dualmapa, $dualmapb);
		$dualmap = insertPoint($dualmap, 'tu');

		$myparams['checkpoints'] = 3;
		$myparams['teleports'] = 1;
		$myparams['rockchance'] = 9;
		$myparams['walls'] = weight(20, 20, 21, 21, 22, 23);
		$myparams['name'] = 'Seeing Double';
		$map = GenerateShapedMap($dualmap, $myparams);
		break;
		//=====================================
		
		//=====================================
		case 8:
		//Centralized
		$myshape[] = "ooooooooooooooooooo";
		$myshape[] = "o?????????????????o";
		$myshape[] = "o?????????????????o";
		$myshape[] = "o?????????????????o";
		$myshape[] = "o???????fos???????o";
		$myshape[] = "o?????????????????o";
		$myshape[] = "o?????????????????o";
		$myshape[] = "o?????????????????o";
		$myshape[] = "ooooooooooooooooooo";

		$myshape = insertPoint($myshape, "abc", $target = '?');
		$myshape = insertPoint($myshape, weight("tu", "d", "tud", ""), $target = '?');
		$myparams['rockchance'] = 7;
		$myparams['walls'] = weight(17, 18, 19, 18, 17);
		$myparams['name'] = 'Centralized';
		$map = GenerateShapedMap($myshape, $myparams);
		break;
		//=====================================
		
		
	}
	return $map;
}



?>