arrowarrow current map, starting restructuring mapmanager
This commit is contained in:
		@@ -13,6 +13,7 @@ use FML\Controls\Labels\Label_Text;
 | 
				
			|||||||
use FML\Controls\Quads\Quad_Icons64x64_1;
 | 
					use FML\Controls\Quads\Quad_Icons64x64_1;
 | 
				
			||||||
use FML\Script\Script;
 | 
					use FML\Script\Script;
 | 
				
			||||||
use FML\Script\Tooltips;
 | 
					use FML\Script\Tooltips;
 | 
				
			||||||
 | 
					use ManiaControl\Admin\AuthenticationManager;
 | 
				
			||||||
use ManiaControl\Callbacks\CallbackListener;
 | 
					use ManiaControl\Callbacks\CallbackListener;
 | 
				
			||||||
use ManiaControl\Callbacks\CallbackManager;
 | 
					use ManiaControl\Callbacks\CallbackManager;
 | 
				
			||||||
use ManiaControl\Manialinks\ManialinkManager;
 | 
					use ManiaControl\Manialinks\ManialinkManager;
 | 
				
			||||||
@@ -72,11 +73,10 @@ class MapList implements ManialinkPageAnswerListener, CallbackListener {
 | 
				
			|||||||
	 */
 | 
						 */
 | 
				
			||||||
	public function showManiaExchangeList(array $chatCallback, Player $player){
 | 
						public function showManiaExchangeList(array $chatCallback, Player $player){
 | 
				
			||||||
		$params = explode(' ', $chatCallback[1][2]);
 | 
							$params = explode(' ', $chatCallback[1][2]);
 | 
				
			||||||
		//$commandCount = count(explode(' ', $chatCallback[1][2]));
 | 
					 | 
				
			||||||
		//var_dump($chatCallback[1][2]);
 | 
					 | 
				
			||||||
		//echo $commandCount;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		$section = 'SM'; //TODO get from mc
 | 
							$serverInfo = $this->maniaControl->server->getSystemInfo();
 | 
				
			||||||
 | 
							$title = strtoupper(substr($serverInfo['TitleId'], 0, 2));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		$mapName = '';
 | 
							$mapName = '';
 | 
				
			||||||
		$author = '';
 | 
							$author = '';
 | 
				
			||||||
		$environment = ''; //TODO also get actual environment
 | 
							$environment = ''; //TODO also get actual environment
 | 
				
			||||||
@@ -102,7 +102,7 @@ class MapList implements ManialinkPageAnswerListener, CallbackListener {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// search for matching maps
 | 
							// search for matching maps
 | 
				
			||||||
		$maps = new MXInfoSearcher($section, $mapName, $author, $environment, $recent);
 | 
							$maps = new MXInfoSearcher($title, $mapName, $author, $environment, $recent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		//check if there are any results
 | 
							//check if there are any results
 | 
				
			||||||
		if(!$maps->valid()){
 | 
							if(!$maps->valid()){
 | 
				
			||||||
@@ -143,27 +143,27 @@ class MapList implements ManialinkPageAnswerListener, CallbackListener {
 | 
				
			|||||||
			$this->maniaControl->manialinkManager->labelLine($mapFrame,$array);
 | 
								$this->maniaControl->manialinkManager->labelLine($mapFrame,$array);
 | 
				
			||||||
			$mapFrame->setY($y);
 | 
								$mapFrame->setY($y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			//TODO only for admins:
 | 
								if($this->maniaControl->authenticationManager->checkRight($player, AuthenticationManager::AUTH_LEVEL_ADMIN)){ //todoSET as setting who can add maps
 | 
				
			||||||
			//Add-Map-Button
 | 
									//Add-Map-Button
 | 
				
			||||||
			$addQuad = new Quad_Icons64x64_1();
 | 
									$addQuad = new Quad_Icons64x64_1();
 | 
				
			||||||
			$mapFrame->add($addQuad);
 | 
									$mapFrame->add($addQuad);
 | 
				
			||||||
			$addQuad->setX($x + 15);
 | 
									$addQuad->setX($x + 15);
 | 
				
			||||||
			$addQuad->setZ(-0.1);
 | 
									$addQuad->setZ(-0.1);
 | 
				
			||||||
			$addQuad->setSubStyle($addQuad::SUBSTYLE_Add);
 | 
									$addQuad->setSubStyle($addQuad::SUBSTYLE_Add);
 | 
				
			||||||
			$addQuad->setSize(4,4);
 | 
									$addQuad->setSize(4,4);
 | 
				
			||||||
			$addQuad->setAction(self::ACTION_ADD_MAP . "." .$map->id);
 | 
									$addQuad->setAction(self::ACTION_ADD_MAP . "." .$map->id);
 | 
				
			||||||
 | 
					 | 
				
			||||||
			//Description Label
 | 
					 | 
				
			||||||
			$descriptionLabel = new Label();
 | 
					 | 
				
			||||||
			$frame->add($descriptionLabel);
 | 
					 | 
				
			||||||
			$descriptionLabel->setAlign(Control::LEFT, Control::TOP);
 | 
					 | 
				
			||||||
			$descriptionLabel->setPosition($x + 10, -$this->height / 2 + 5);
 | 
					 | 
				
			||||||
			$descriptionLabel->setSize($this->width * 0.7, 4);
 | 
					 | 
				
			||||||
			$descriptionLabel->setTextSize(2);
 | 
					 | 
				
			||||||
			$descriptionLabel->setVisible(false);
 | 
					 | 
				
			||||||
			$descriptionLabel->setText("Add-Map: {$map->name}");
 | 
					 | 
				
			||||||
			$tooltips->add($addQuad, $descriptionLabel);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									//Description Label
 | 
				
			||||||
 | 
									$descriptionLabel = new Label();
 | 
				
			||||||
 | 
									$frame->add($descriptionLabel);
 | 
				
			||||||
 | 
									$descriptionLabel->setAlign(Control::LEFT, Control::TOP);
 | 
				
			||||||
 | 
									$descriptionLabel->setPosition($x + 10, -$this->height / 2 + 5);
 | 
				
			||||||
 | 
									$descriptionLabel->setSize($this->width * 0.7, 4);
 | 
				
			||||||
 | 
									$descriptionLabel->setTextSize(2);
 | 
				
			||||||
 | 
									$descriptionLabel->setVisible(false);
 | 
				
			||||||
 | 
									$descriptionLabel->setText("Add-Map: {$map->name}");
 | 
				
			||||||
 | 
									$tooltips->add($addQuad, $descriptionLabel);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			$y -= 4;
 | 
								$y -= 4;
 | 
				
			||||||
			$i++;
 | 
								$i++;
 | 
				
			||||||
@@ -252,11 +252,20 @@ class MapList implements ManialinkPageAnswerListener, CallbackListener {
 | 
				
			|||||||
	 * @param Frame $frame
 | 
						 * @param Frame $frame
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	private function displayMap($id, Map $map, Frame $frame){
 | 
						private function displayMap($id, Map $map, Frame $frame){
 | 
				
			||||||
		$frame->setZ(-0.01);
 | 
							$frame->setZ(0.1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		//set starting x-value
 | 
							//set starting x-value
 | 
				
			||||||
		$x = -$this->width / 2;
 | 
							$x = -$this->width / 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if($this->maniaControl->mapManager->getCurrentMap() == $map){
 | 
				
			||||||
 | 
								echo "test";
 | 
				
			||||||
 | 
								$currentQuad = new Quad_Icons64x64_1();
 | 
				
			||||||
 | 
								$frame->add($currentQuad);
 | 
				
			||||||
 | 
								$currentQuad->setX($x + 3.5);
 | 
				
			||||||
 | 
								$currentQuad->setZ(0.2);
 | 
				
			||||||
 | 
								$currentQuad->setSize(4, 4);
 | 
				
			||||||
 | 
								$currentQuad->setSubStyle($currentQuad::SUBSTYLE_ArrowBlue);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		$mxId = '';
 | 
							$mxId = '';
 | 
				
			||||||
		if(isset($map->mx->id))
 | 
							if(isset($map->mx->id))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,9 +9,7 @@ use ManiaControl\FileUtil;
 | 
				
			|||||||
use ManiaControl\ManiaControl;
 | 
					use ManiaControl\ManiaControl;
 | 
				
			||||||
use ManiaControl\Callbacks\CallbackListener;
 | 
					use ManiaControl\Callbacks\CallbackListener;
 | 
				
			||||||
use ManiaControl\Callbacks\CallbackManager;
 | 
					use ManiaControl\Callbacks\CallbackManager;
 | 
				
			||||||
use ManiaControl\Players\Player;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TODO: xlist command
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Manager for maps
 | 
					 * Manager for maps
 | 
				
			||||||
@@ -30,6 +28,8 @@ class MapManager implements CallbackListener {
 | 
				
			|||||||
	private $maniaControl = null;
 | 
						private $maniaControl = null;
 | 
				
			||||||
	private $mapCommands = null;
 | 
						private $mapCommands = null;
 | 
				
			||||||
	private $mapList = array();
 | 
						private $mapList = array();
 | 
				
			||||||
 | 
						private $mapListUids = array();
 | 
				
			||||||
 | 
						private $currentMap = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * Construct map manager
 | 
						 * Construct map manager
 | 
				
			||||||
@@ -119,19 +119,47 @@ class MapManager implements CallbackListener {
 | 
				
			|||||||
	 * @param \ManiaControl\Maps\Map $map        	
 | 
						 * @param \ManiaControl\Maps\Map $map        	
 | 
				
			||||||
	 * @return bool
 | 
						 * @return bool
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	private function addMap(Map $map) {
 | 
						private function addMap(Map $map) { //TODO needed?
 | 
				
			||||||
		$this->saveMap($map);
 | 
							$this->saveMap($map);
 | 
				
			||||||
		$this->mapList[$map->uid] = $map;
 | 
							$this->mapListUids[$map->uid] = $map;
 | 
				
			||||||
 | 
							$this->mapList[] = $map;
 | 
				
			||||||
		return true;
 | 
							return true;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Updates the full Map list, needed on Init, addMap and on ShuffleMaps
 | 
				
			||||||
 | 
						 * @return null
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						private function updateFullMapList(){
 | 
				
			||||||
 | 
							if(!$this->maniaControl->client->query('GetMapList', 100,0)){ //fetch 100 Maps
 | 
				
			||||||
 | 
								trigger_error("Couldn't fetch mapList. " . $this->maniaControl->getClientErrorText());
 | 
				
			||||||
 | 
								return null;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$tempList = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$mapList = $this->maniaControl->client->getResponse();
 | 
				
			||||||
 | 
							foreach($mapList as $rpcMap){
 | 
				
			||||||
 | 
								if(array_key_exists($rpcMap["UId"], $this->mapListUids)){ //Map already exists, only update index
 | 
				
			||||||
 | 
									$tempList[] = $this->mapListUids[$rpcMap["UId"]];
 | 
				
			||||||
 | 
								}else{ //Insert Map Object
 | 
				
			||||||
 | 
									$map = new Map($this->maniaControl, $rpcMap);
 | 
				
			||||||
 | 
									$this->saveMap($map);
 | 
				
			||||||
 | 
									$tempList[] = $map;
 | 
				
			||||||
 | 
									$this->mapListUids[$map->uid] = $map;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//restore Sorted Maplist
 | 
				
			||||||
 | 
							$this->mapList = $tempList;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * Fetch current map
 | 
						 * Fetch current map
 | 
				
			||||||
	 *
 | 
						 *
 | 
				
			||||||
	 * @return \ManiaControl\Maps\Map
 | 
						 * @return \ManiaControl\Maps\Map
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	public function getCurrentMap() {
 | 
						private function fetchCurrentMapInfo() {
 | 
				
			||||||
		if (!$this->maniaControl->client->query('GetCurrentMapInfo')) {
 | 
							if (!$this->maniaControl->client->query('GetCurrentMapInfo')) {
 | 
				
			||||||
			trigger_error("Couldn't fetch map info. " . $this->maniaControl->getClientErrorText());
 | 
								trigger_error("Couldn't fetch map info. " . $this->maniaControl->getClientErrorText());
 | 
				
			||||||
			return null;
 | 
								return null;
 | 
				
			||||||
@@ -148,41 +176,34 @@ class MapManager implements CallbackListener {
 | 
				
			|||||||
	 * @param array $callback        	
 | 
						 * @param array $callback        	
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	public function handleOnInit(array $callback) {
 | 
						public function handleOnInit(array $callback) {
 | 
				
			||||||
		$map = $this->getCurrentMap();
 | 
							$this->updateFullMapList();
 | 
				
			||||||
		if (!$map) {
 | 
							$this->currentMap = $this->fetchCurrentMapInfo();
 | 
				
			||||||
			return;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		$this->addMap($map); //TODO needed?
 | 
					 | 
				
			||||||
		//var_dump($map);
 | 
					 | 
				
			||||||
		//add Maplist on Init once
 | 
					 | 
				
			||||||
		if(!$this->maniaControl->client->query('GetMapList', 100,0)){ //fetch 100 maps, first map is always current map
 | 
					 | 
				
			||||||
			trigger_error("Couldn't fetch mapList. " . $this->maniaControl->getClientErrorText());
 | 
					 | 
				
			||||||
			return null;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		$mapList = $this->maniaControl->client->getResponse();
 | 
					 | 
				
			||||||
		foreach($mapList as $rpcMap){
 | 
					 | 
				
			||||||
			$map = new Map($this->maniaControl, $rpcMap);
 | 
					 | 
				
			||||||
			$this->addMap($map);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * @return null
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public function getCurrentMap(){
 | 
				
			||||||
 | 
							return $this->currentMap;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * Handle BeginMap callback
 | 
						 * Handle BeginMap callback
 | 
				
			||||||
	 *
 | 
						 *
 | 
				
			||||||
	 * @param array $callback        	
 | 
						 * @param array $callback        	
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	public function handleBeginMap(array $callback) {
 | 
						public function handleBeginMap(array $callback) {
 | 
				
			||||||
		$map = $this->getCurrentMap();
 | 
							if(array_key_exists($callback[1][0]["UId"], $this->mapListUids)){ //Map already exists, only update index
 | 
				
			||||||
		if (!$map) {
 | 
								$this->currentMap = $this->mapListUids[$rpcMap["UId"]];
 | 
				
			||||||
			return;
 | 
							}else{ //can this ever happen?
 | 
				
			||||||
 | 
								$this->currentMap = $this->fetchCurrentMapInfo();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		$this->addMap($map);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		//TODO restrucutre, make current as first
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * @return array
 | 
						 * @return array
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
@@ -266,7 +287,8 @@ class MapManager implements CallbackListener {
 | 
				
			|||||||
				return;
 | 
									return;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			$this->maniaControl->chat->sendSuccess('Map $<' . $mapInfo['Name'] . '$> added!');
 | 
								$this->maniaControl->chat->sendSuccess('Map $<' . $mapInfo['Name'] . '$> added!');
 | 
				
			||||||
			return;
 | 
					
 | 
				
			||||||
 | 
								$this->updateFullMapList();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		// TODO: add local map by filename
 | 
							// TODO: add local map by filename
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user