Merge branch 'master' of ssh://sagitta.uberspace.de/~/git/ManiaControl
Conflicts: application/core/Plugins/PluginMenu.php
This commit is contained in:
		| @@ -33,6 +33,7 @@ require_once __DIR__ . '/ManiaExchange/mxinfosearcher.inc.php'; | ||||
| require_once __DIR__ . '/Manialinks/ManialinkManager.php'; | ||||
| require_once __DIR__ . '/Maps/Map.php'; | ||||
| require_once __DIR__ . '/Maps/MapManager.php'; | ||||
| require_once __DIR__ . '/Maps/MapList.php'; | ||||
| require_once __DIR__ . '/Players/PlayerManager.php'; | ||||
| require_once __DIR__ . '/Plugins/PluginManager.php'; | ||||
| require_once __DIR__ . '/Server/Server.php'; | ||||
|   | ||||
| @@ -61,7 +61,9 @@ class Map { | ||||
| 		$this->copperPrice = $rpc_infos['CopperPrice']; | ||||
| 		$this->mapType = $rpc_infos['MapType']; | ||||
| 		$this->mapStyle = $rpc_infos['MapStyle']; | ||||
| 		$this->nbCheckpoints = $rpc_infos['NbCheckpoints']; | ||||
| 		//$this->nbCheckpoints = $rpc_infos['NbCheckpoints']; //TODO check if key exists, only for trackmania | ||||
|  | ||||
| 		$this->authorNick = $this->authorLogin; //initialize (if nick from map cant get readen) | ||||
|  | ||||
| 		$mapsDirectory = $this->maniaControl->server->getMapsDirectory(); | ||||
| 		if ($this->maniaControl->server->checkAccess($mapsDirectory)) { | ||||
| @@ -72,6 +74,7 @@ class Map { | ||||
| 			catch (\Exception $e) { | ||||
| 				trigger_error($e->getMessage(), E_USER_WARNING); | ||||
| 			} | ||||
|  | ||||
| 			$this->authorNick = $this->mapFetcher->authorNick; | ||||
| 			$this->authorEInfo = $this->mapFetcher->authorEInfo; | ||||
| 			$this->authorZone = $this->mapFetcher->authorZone; | ||||
|   | ||||
| @@ -7,6 +7,7 @@ use ManiaControl\Admin\AuthenticationManager; | ||||
| use ManiaControl\Commands\CommandListener; | ||||
| use ManiaControl\FileUtil; | ||||
| use ManiaControl\Players\Player; | ||||
| use ManiaControl\Players\PlayerManager; | ||||
|  | ||||
| /** | ||||
|  * Class offering commands to manage maps | ||||
| @@ -31,6 +32,9 @@ class MapCommands implements CommandListener { | ||||
| 		$this->maniaControl->commandManager->registerCommandListener('restartmap', $this, 'command_RestartMap',true); | ||||
| 		$this->maniaControl->commandManager->registerCommandListener('addmap', $this, 'command_AddMap',true); | ||||
| 		$this->maniaControl->commandManager->registerCommandListener('removemap', $this, 'command_RemoveMap',true); | ||||
|  | ||||
| 		// Register for player commands | ||||
| 		$this->maniaControl->commandManager->registerCommandListener('list', $this, 'command_list'); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| @@ -183,6 +187,13 @@ class MapCommands implements CommandListener { | ||||
| 		} | ||||
| 		return $this->maniaControl->client->query('RestartMap'); | ||||
| 	} | ||||
|  | ||||
| 	public function command_list(array $chatCallback, Player $player){ | ||||
| 	//	var_dump($chatCallback); | ||||
|  | ||||
| 		$mapList = new MapList($this->maniaControl); | ||||
| 		$mapList->showMapList($player); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| ?> | ||||
|   | ||||
							
								
								
									
										170
									
								
								application/core/Maps/MapList.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										170
									
								
								application/core/Maps/MapList.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,170 @@ | ||||
| <?php | ||||
| /** | ||||
|  * Created by PhpStorm. | ||||
|  * User: Lukas | ||||
|  * Date: 14.12.13 | ||||
|  * Time: 19:42 | ||||
|  */ | ||||
|  | ||||
| namespace ManiaControl\Maps; | ||||
| use FML\Controls\Control; | ||||
| use FML\Controls\Label; | ||||
| use FML\Controls\Labels\Label_Text; | ||||
| use FML\Controls\Quads\Quad_Icons64x64_1; | ||||
| use ManiaControl\Manialinks\ManialinkPageAnswerListener; | ||||
| use ManiaControl\Maps\Map; | ||||
| use FML\Controls\Frame; | ||||
| use FML\Controls\Quad; | ||||
| use FML\Controls\Quads\Quad_BgRaceScore2; | ||||
| use FML\ManiaLink; | ||||
| use ManiaControl\ManiaControl; | ||||
| use ManiaControl\Players\Player; | ||||
|  | ||||
| class MapList implements ManialinkPageAnswerListener { | ||||
| 	const ACTION_CLOSEWIDGET = 'MapList.CloseWidget'; | ||||
| 	const MLID_WIDGET = 'MapList.WidgetId'; | ||||
|  | ||||
| 	/** | ||||
| 	 * Private properties | ||||
| 	 */ | ||||
| 	private $maniaControl = null; | ||||
|  | ||||
| 	/** | ||||
| 	 * Create a new server commands instance | ||||
| 	 * | ||||
| 	 * @param ManiaControl $maniaControl | ||||
| 	 */ | ||||
| 	public function __construct(ManiaControl $maniaControl) { | ||||
| 		$this->maniaControl = $maniaControl; | ||||
|  | ||||
|  | ||||
| 		$this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_CLOSEWIDGET , $this, | ||||
| 			'closeWidget'); | ||||
|  | ||||
| 		// Register for player commands | ||||
| 		//$this->maniaControl->commandManager->registerCommandListener('list', $this, 'command_list'); | ||||
| 	} | ||||
|  | ||||
|  | ||||
|  | ||||
| 	public function showMapList(Player $player){ | ||||
| 		$maniaLink = new ManiaLink(self::MLID_WIDGET); | ||||
|  | ||||
| 		//settings | ||||
| 		$width = 150; | ||||
| 		$height = 80; | ||||
| 		$quadStyle = Quad_BgRaceScore2::STYLE; //TODO add default menu style to style manager | ||||
| 		$quadSubstyle = Quad_BgRaceScore2::SUBSTYLE_HandleSelectable; | ||||
|  | ||||
| 		//mainframe | ||||
| 		$frame = new Frame(); | ||||
| 		$maniaLink->add($frame); | ||||
| 		$frame->setSize($width,$height); | ||||
| 		$frame->setPosition(0, 0); | ||||
|  | ||||
| 		//Background Quad | ||||
| 		$backgroundQuad = new Quad(); | ||||
| 		$frame->add($backgroundQuad); | ||||
| 		$backgroundQuad->setSize($width,$height); | ||||
| 		$backgroundQuad->setStyles($quadStyle, $quadSubstyle); | ||||
|  | ||||
| 		//TODO headline | ||||
| 		$mapList = $this->maniaControl->mapManager->getMapList(); | ||||
|  | ||||
| 		$id = 1; | ||||
| 		$y = $height / 2 - 10; | ||||
| 		foreach($mapList as $map){ | ||||
| 			$mapFrame = new Frame(); | ||||
| 			$frame->add($mapFrame); | ||||
| 			$this->displayMap($id, $map, $mapFrame, $width, $height); | ||||
| 			$mapFrame->setY($y); | ||||
| 			$y -= 4; | ||||
| 			$id++; | ||||
| 		} | ||||
|  | ||||
| 		// Add Close Quad (X) | ||||
| 		$closeQuad = new Quad_Icons64x64_1(); | ||||
| 		$frame->add($closeQuad); | ||||
| 		$closeQuad->setPosition($width * 0.483, $height * 0.467, 3); | ||||
| 		$closeQuad->setSize(6, 6); | ||||
| 		$closeQuad->setSubStyle(Quad_Icons64x64_1::SUBSTYLE_QuitRace); | ||||
| 		$closeQuad->setAction(self::ACTION_CLOSEWIDGET ); | ||||
|  | ||||
| 		//render and display xml | ||||
| 		$maniaLinkText = $maniaLink->render()->saveXML(); | ||||
| 		$this->maniaControl->manialinkManager->sendManialink($maniaLinkText, $player->login); | ||||
| 		$this->maniaControl->manialinkManager->disableAltMenu($player); | ||||
| 	} | ||||
|  | ||||
| 	private function displayMap($id, Map $map, Frame $frame, $width){ | ||||
|  | ||||
| 		$frame->setZ(-0.01); | ||||
|  | ||||
| 		$x = -$width / 2; | ||||
|  | ||||
| 		//TODO detailed mx info page with link to mx | ||||
| 		$x +=5; | ||||
| 		$idLabel = new Label_Text(); | ||||
| 		$frame->add($idLabel); | ||||
| 		$idLabel->setHAlign(Control::LEFT); | ||||
| 		$idLabel->setX($x); | ||||
| 		//	$mxIdLabel->setSize($width * 0.5, 2); | ||||
| 		$idLabel->setStyle($idLabel::STYLE_TextCardSmall); | ||||
| 		$idLabel->setTextSize(1.5); | ||||
| 		$idLabel->setText($id); | ||||
| 		$idLabel->setTextColor('FFF'); | ||||
|  | ||||
| 		//TODO detailed mx info page with link to mx | ||||
| 		$x +=5; | ||||
| 		$mxIdLabel = new Label_Text(); | ||||
| 		$frame->add($mxIdLabel); | ||||
| 		$mxIdLabel->setHAlign(Control::LEFT); | ||||
| 		$mxIdLabel->setX($x); | ||||
| 		//	$mxIdLabel->setSize($width * 0.5, 2); | ||||
| 		$mxIdLabel->setStyle($mxIdLabel::STYLE_TextCardSmall); | ||||
| 		$mxIdLabel->setTextSize(1.5); | ||||
| 		if(isset($map->mx->id)) | ||||
| 			$mxIdLabel->setText($map->mx->id); | ||||
| 		else | ||||
| 			$mxIdLabel->setText("-"); | ||||
| 		$mxIdLabel->setTextColor('FFF'); | ||||
|  | ||||
| 		//TODO action detailed map info | ||||
| 		$x +=10; | ||||
| 		$nameLabel = new Label_Text(); | ||||
| 		$frame->add($nameLabel); | ||||
| 		$nameLabel->setHAlign(Control::LEFT); | ||||
| 		$nameLabel->setX($x); | ||||
| 		//$nameLabel->setSize($width * 0.5, 2); | ||||
| 		$nameLabel->setStyle($nameLabel::STYLE_TextCardSmall); | ||||
| 		$nameLabel->setTextSize(1.5); | ||||
| 		$nameLabel->setText('$fff'.$map->name); | ||||
|  | ||||
| 		//TODO action detailed map info | ||||
| 		$x +=50; | ||||
| 		$authorLabel = new Label_Text(); | ||||
| 		$frame->add($authorLabel); | ||||
| 		$authorLabel->setHAlign(Control::LEFT); | ||||
| 		$authorLabel->setX($x); | ||||
| 		//$nameLabel->setSize($width * 0.5, 2); | ||||
| 		$authorLabel->setStyle($authorLabel::STYLE_TextCardSmall); | ||||
| 		$authorLabel->setTextSize(1.5); | ||||
| 		$authorLabel->setText($map->authorNick); | ||||
| 		$authorLabel->setTextColor('FFF'); | ||||
|  | ||||
|  | ||||
| 		//TODO later add buttons for jukebox, admin control buttons (remove map, change to map) | ||||
| 		//TODO side switch | ||||
| 		//var_dump($map); | ||||
| 	} | ||||
|  | ||||
|  | ||||
| 	public function closeWidget(array $callback, Player $player) { | ||||
| 		$emptyManialink = new ManiaLink(self::MLID_WIDGET); | ||||
| 		$manialinkText = $emptyManialink->render()->saveXML(); | ||||
| 		$this->maniaControl->manialinkManager->sendManialink($manialinkText, $player->login); | ||||
| 		$this->maniaControl->manialinkManager->enableAltMenu($player); | ||||
| 		unset($this->playersMenuShown[$player->login]); | ||||
| 	} | ||||
|  | ||||
| }  | ||||
| @@ -149,7 +149,18 @@ class MapManager implements CallbackListener { | ||||
| 		if (!$map) { | ||||
| 			return; | ||||
| 		} | ||||
| 		$this->addMap($map); | ||||
| 		$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); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| @@ -163,5 +174,16 @@ class MapManager implements CallbackListener { | ||||
| 			return; | ||||
| 		} | ||||
| 		$this->addMap($map); | ||||
|  | ||||
| 		//TODO restrucutre, make current as first | ||||
| 	} | ||||
|  | ||||
|  | ||||
| 	/** | ||||
| 	 * @return array | ||||
| 	 */ | ||||
| 	public function getMapList(){ | ||||
| 		return  $this->mapList; | ||||
| 	} | ||||
|  | ||||
| }  | ||||
|   | ||||
| @@ -2,6 +2,7 @@ | ||||
|  | ||||
| namespace ManiaControl\Players; | ||||
|  | ||||
| use FML\Controls\Quad; | ||||
| use ManiaControl\ManiaControl; | ||||
| use ManiaControl\Admin\AuthenticationManager; | ||||
| use ManiaControl\Commands\CommandListener; | ||||
| @@ -25,7 +26,7 @@ class PlayerCommands implements CommandListener { | ||||
| 	public function __construct(ManiaControl $maniaControl) { | ||||
| 		$this->maniaControl = $maniaControl; | ||||
| 		 | ||||
| 		// Register for commands | ||||
| 		// Register for admin commands | ||||
| 		$this->maniaControl->commandManager->registerCommandListener('teambalance', $this, 'command_TeamBalance',true); | ||||
| 		$this->maniaControl->commandManager->registerCommandListener('autoteambalance', $this, 'command_TeamBalance',true); | ||||
| 		$this->maniaControl->commandManager->registerCommandListener('kick', $this, 'command_Kick',true); | ||||
|   | ||||
| @@ -142,6 +142,7 @@ class PlayerManager implements CallbackListener { | ||||
| 	 */ | ||||
| 	public function playerDisconnect(array $callback) { | ||||
| 		$login = $callback[1][0]; | ||||
| 		//TODO check for fakeplayers | ||||
| 		$player = $this->removePlayer($login); | ||||
|  | ||||
| 		$played = Formatter::formatTimeH(time() - $player->joinTime); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user