From 2e119828bcfc959d61ec18aa290313a58b90b55f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20Schro=CC=88der?= Date: Mon, 6 Jan 2014 18:50:26 +0100 Subject: [PATCH] improved map manager, actions, list --- application/core/Maps/MapCommands.php | 24 +- application/core/Maps/MapList.php | 4 +- application/core/Maps/MapManager.php | 126 ++++---- application/core/Players/PlayerList.php | 376 ++++++++++++------------ 4 files changed, 265 insertions(+), 265 deletions(-) diff --git a/application/core/Maps/MapCommands.php b/application/core/Maps/MapCommands.php index 2b38c9b3..16cddc93 100644 --- a/application/core/Maps/MapCommands.php +++ b/application/core/Maps/MapCommands.php @@ -15,7 +15,6 @@ use ManiaControl\ManiaControl; use ManiaControl\Manialinks\IconManager; use ManiaControl\Manialinks\ManialinkPageAnswerListener; use ManiaControl\Players\Player; -use WidgetPlugin; /** * Class offering commands to manage maps @@ -32,10 +31,9 @@ class MapCommands implements CommandListener, ManialinkPageAnswerListener, Callb const ACTION_SKIP_MAP = 'MapList.NextMap'; /** - * Private properties + * Private Properties */ private $maniaControl = null; - private $mapList = null; /** * Create MapCommands instance @@ -45,7 +43,6 @@ class MapCommands implements CommandListener, ManialinkPageAnswerListener, Callb public function __construct(ManiaControl $maniaControl) { $this->maniaControl = $maniaControl; $this->initActionsMenuButtons(); - $this->mapList = new MapList($this->maniaControl); // Register for admin chat commands $this->maniaControl->commandManager->registerCommandListener('nextmap', $this, 'command_NextMap', true); @@ -54,9 +51,8 @@ class MapCommands implements CommandListener, ManialinkPageAnswerListener, Callb $this->maniaControl->commandManager->registerCommandListener('removemap', $this, 'command_RemoveMap', true); // Register for player chat commands - $this->maniaControl->commandManager->registerCommandListener('xlist', $this, 'command_xList'); - $this->maniaControl->commandManager->registerCommandListener('list', $this, 'command_List'); - $this->maniaControl->commandManager->registerCommandListener('maps', $this, 'command_List'); + $this->maniaControl->commandManager->registerCommandListener(array('maps', 'list'), $this, 'command_List'); + $this->maniaControl->commandManager->registerCommandListener(array('xmaps', 'xlist'), $this, 'command_xList'); // Menu Buttons $this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_OPEN_XLIST, $this, 'command_xList'); @@ -75,13 +71,13 @@ class MapCommands implements CommandListener, ManialinkPageAnswerListener, Callb $itemQuad->setImageFocus($this->maniaControl->manialinkManager->iconManager->getIcon(IconManager::MX_ICON_MOVER)); $itemQuad->setAction(self::ACTION_OPEN_XLIST); $this->maniaControl->actionsMenu->addPlayerMenuItem($itemQuad, 5, 'Open MX List'); - + // Menu Open List $itemQuad = new Quad_Icons64x64_1(); $itemQuad->setSubStyle($itemQuad::SUBSTYLE_ToolRoot); $itemQuad->setAction(self::ACTION_OPEN_MAPLIST); $this->maniaControl->actionsMenu->addPlayerMenuItem($itemQuad, 10, 'Open MapList'); - + // Menu RestartMap $itemQuad = new Quad_UIConstruction_Buttons(); $itemQuad->setSubStyle($itemQuad::SUBSTYLE_Reload); @@ -132,7 +128,7 @@ class MapCommands implements CommandListener, ManialinkPageAnswerListener, Callb $this->maniaControl->authenticationManager->sendNotAllowed($player); return; } - // TODO: user mx fetcher + // TODO: Use MX fetcher $params = explode(' ', $chatCallback[1][2], 2); if (count($params) < 2) { $this->maniaControl->chat->sendUsageInfo('Usage example: //addmap 1234', $player->login); @@ -144,7 +140,7 @@ class MapCommands implements CommandListener, ManialinkPageAnswerListener, Callb } /** - * Handle nextmap command + * Handle /nextmap Command * * @param array $chat * @param \ManiaControl\Players\Player $player @@ -172,13 +168,13 @@ class MapCommands implements CommandListener, ManialinkPageAnswerListener, Callb } /** - * Handle list maps command + * Handle /maps command * * @param array $chatCallback * @param Player $player */ public function command_List(array $chatCallback, Player $player) { - $this->mapList->showMapList($player); + $this->maniaControl->mapManager->mapList->showMapList($player); } /** @@ -188,6 +184,6 @@ class MapCommands implements CommandListener, ManialinkPageAnswerListener, Callb * @param Player $player */ public function command_xList(array $chatCallback, Player $player) { - $this->mapList->showManiaExchangeList($chatCallback, $player); + $this->maniaControl->mapManager->mapList->showManiaExchangeList($chatCallback, $player); } } diff --git a/application/core/Maps/MapList.php b/application/core/Maps/MapList.php index 74aac42c..aca7ffce 100644 --- a/application/core/Maps/MapList.php +++ b/application/core/Maps/MapList.php @@ -62,7 +62,7 @@ class MapList implements ManialinkPageAnswerListener, CallbackListener { $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MP_PLAYERMANIALINKPAGEANSWER, $this, 'handleManialinkPageAnswer'); $this->maniaControl->callbackManager->registerCallbackListener(MapQueue::CB_MAPQUEUE_CHANGED, $this, 'updateWidget'); - $this->maniaControl->callbackManager->registerCallbackListener(MapManager::CB_MAPLIST_UPDATED, $this, 'updateWidget'); + $this->maniaControl->callbackManager->registerCallbackListener(MapManager::CB_MAPS_UPDATED, $this, 'updateWidget'); $this->maniaControl->callbackManager->registerCallbackListener(MapManager::CB_KARMA_UPDATED, $this, 'updateWidget'); $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MC_BEGINMAP, $this, 'updateWidget'); // TODO not working yet @@ -232,7 +232,7 @@ class MapList implements ManialinkPageAnswerListener, CallbackListener { $height = $this->maniaControl->manialinkManager->styleManager->getListWidgetsHeight(); // Get Maplist - $mapList = $this->maniaControl->mapManager->getMapList(); + $mapList = $this->maniaControl->mapManager->getMaps(); $this->mapListShown[$player->login] = self::SHOW_MAP_LIST; diff --git a/application/core/Maps/MapManager.php b/application/core/Maps/MapManager.php index 51ce7c7e..e860a40a 100644 --- a/application/core/Maps/MapManager.php +++ b/application/core/Maps/MapManager.php @@ -7,7 +7,6 @@ use ManiaControl\Formatter; use ManiaControl\ManiaControl; use ManiaControl\Callbacks\CallbackListener; use ManiaControl\Callbacks\CallbackManager; -use MXInfoFetcher; require_once __DIR__ . '/Map.php'; require_once __DIR__ . '/MapCommands.php'; @@ -24,22 +23,23 @@ class MapManager implements CallbackListener { * Constants */ const TABLE_MAPS = 'mc_maps'; - const CB_MAPLIST_UPDATED = 'MapManager.MapListUpdated'; + const CB_MAPS_UPDATED = 'MapManager.MapsUpdated'; const CB_KARMA_UPDATED = 'MapManager.KarmaUpdated'; - /** - * Private Properties - */ - private $maniaControl = null; - private $mapCommands = null; - private $mapList = array(); - private $mapListUids = array(); - private $currentMap = null; - /** * Public Properties */ public $mapQueue = null; + public $mapCommands = null; + public $mapList = null; + + /** + * Private Properties + */ + private $maniaControl = null; + private $maps = array(); + private $mapsUids = array(); + private $currentMap = null; /** * Construct map manager @@ -48,18 +48,17 @@ class MapManager implements CallbackListener { */ public function __construct(ManiaControl $maniaControl) { $this->maniaControl = $maniaControl; - - // Init database tables $this->initTables(); // Create map commands instance + $this->mapList = new MapList($this->maniaControl); $this->mapCommands = new MapCommands($maniaControl); $this->mapQueue = new MapQueue($this->maniaControl); // Register for callbacks $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MC_ONINIT, $this, 'handleOnInit'); $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MC_BEGINMAP, $this, 'handleBeginMap'); - $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MP_MAPLISTMODIFIED, $this, 'mapListModified'); + $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MP_MAPLISTMODIFIED, $this, 'mapsModified'); } /** @@ -90,10 +89,10 @@ class MapManager implements CallbackListener { } /** - * Save map to the database + * Save a Map in the Database * * @param \ManiaControl\Maps\Map $map - * @return boolean + * @return bool */ private function saveMap(Map &$map) { $mysqli = $this->maniaControl->database->mysqli; @@ -126,82 +125,75 @@ class MapManager implements CallbackListener { } /** - * Add a map to the MapList + * Remove a Map * - * @param Map $map - * @return bool + * @param int $id + * @param string $uid + * @param bool $eraseFile */ - private function addMap(Map $map) { // TODO needed? - $this->saveMap($map); - $this->mapListUids[$map->uid] = $map; - $this->mapList[] = $map; - return true; - } - - /** - * Erases a Map - * - * @param $id - * @param $uid - */ - public function eraseMap($id, $uid) { - $map = $this->mapListUids[$uid]; + public function removeMap($id, $uid, $eraseFile = false) { + $map = $this->mapsUids[$uid]; $this->maniaControl->client->query('RemoveMap', $map->fileName); $this->maniaControl->chat->sendSuccess('Map $<' . $map->name . '$> removed!'); // TODO specified message, who done it? $this->maniaControl->log('Map $<' . $map->name . '$> removed!', true); - unset($this->mapListUids[$uid]); - unset($this->mapList[$id]); + unset($this->mapsUids[$uid]); + unset($this->maps[$id]); } /** * Updates the full Map list, needed on Init, addMap and on ShuffleMaps */ private function updateFullMapList() { - if (!$this->maniaControl->client->query('GetMapList', 100, 0)) { // fetch 100 Maps + if (!$this->maniaControl->client->query('GetMapList', 100, 0)) { 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"]]; + $maps = $this->maniaControl->client->getResponse(); + foreach ($maps as $rpcMap) { + if (array_key_exists($rpcMap["UId"], $this->mapsUids)) { + // Map already exists, only update index + $tempList[] = $this->mapsUids[$rpcMap["UId"]]; } else { // Insert Map Object $map = new Map($this->maniaControl, $rpcMap); $this->saveMap($map); $tempList[] = $map; - $this->mapListUids[$map->uid] = $map; + $this->mapsUids[$map->uid] = $map; } } // restore Sorted Maplist - $this->mapList = $tempList; + $this->maps = $tempList; // Trigger own callback - $this->maniaControl->callbackManager->triggerCallback(self::CB_MAPLIST_UPDATED, array(self::CB_MAPLIST_UPDATED)); + $this->maniaControl->callbackManager->triggerCallback(self::CB_MAPS_UPDATED, array(self::CB_MAPS_UPDATED)); } /** - * Fetch current map + * Fetch current Map * - * @return \ManiaControl\Maps\Map + * @return bool */ - private function fetchCurrentMapInfo() { + private function fetchCurrentMap() { if (!$this->maniaControl->client->query('GetCurrentMapInfo')) { trigger_error("Couldn't fetch map info. " . $this->maniaControl->getClientErrorText()); - return null; + return false; } $rpcMap = $this->maniaControl->client->getResponse(); - if (!array_key_exists($rpcMap["UId"], $this->mapListUids)) { - $map = new Map($this->maniaControl, $rpcMap); - $this->addMap($map); - return $map; + if (!array_key_exists($rpcMap["UId"], $this->mapsUids)) { + $this->currentMap = $this->mapsUids[$rpcMap["UId"]]; + return true; } - return $this->mapListUids[$rpcMap["UId"]]; + $map = new Map($this->maniaControl, $rpcMap); + $this->saveMap($map); + $this->mapsUids[$map->uid] = $map; + $this->maps[] = $map; + $this->currentMap = $map; + return true; } /** @@ -211,7 +203,7 @@ class MapManager implements CallbackListener { */ public function handleOnInit(array $callback) { $this->updateFullMapList(); - $this->currentMap = $this->fetchCurrentMapInfo(); + $this->fetchCurrentMap(); } /** @@ -230,7 +222,10 @@ class MapManager implements CallbackListener { * @return mixed */ public function getMapByUid($uid) { - return $this->mapListUids[$uid]; + if (!isset($this->mapsUids[$uid])) { + return null; + } + return $this->mapsUids[$uid]; } /** @@ -239,20 +234,22 @@ class MapManager implements CallbackListener { * @param array $callback */ public function handleBeginMap(array $callback) { - if (array_key_exists($callback[1][0]["UId"], $this->mapListUids)) { // Map already exists, only update index - $this->currentMap = $this->mapListUids[$callback[1][0]["UId"]]; + if (array_key_exists($callback[1][0]["UId"], $this->mapsUids)) { + // Map already exists, only update index + $this->currentMap = $this->mapsUids[$callback[1][0]["UId"]]; } - else { // can this ever happen? - $this->currentMap = $this->fetchCurrentMapInfo(); + else { + // can this ever happen? + $this->fetchCurrentMap(); } } /** - * MapList modified by other controller or web panels + * Handle Maps Modified Callback * * @param array $callback */ - public function mapListModified(array $callback) { + public function mapsModified(array $callback) { $this->updateFullMapList(); } @@ -260,8 +257,8 @@ class MapManager implements CallbackListener { * * @return array */ - public function getMapList() { - return $this->mapList; + public function getMaps() { + return $this->maps; } /** @@ -343,7 +340,8 @@ class MapManager implements CallbackListener { return; } // Add map to map list - if (!$this->maniaControl->client->query('InsertMap', $mapFileName)) { // TODO irgentein bug? + if (!$this->maniaControl->client->query('InsertMap', $mapFileName)) { + // TODO irgendein bug? $this->maniaControl->chat->sendError("Couldn't add map to match settings!", $login); return; } diff --git a/application/core/Players/PlayerList.php b/application/core/Players/PlayerList.php index e9618378..3c80ddee 100644 --- a/application/core/Players/PlayerList.php +++ b/application/core/Players/PlayerList.php @@ -29,164 +29,155 @@ use ManiaControl\Manialinks\ManialinkPageAnswerListener; * @author steeffeen & kremsy */ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { - /** * Constants */ - const ACTION_FORCE_RED = 'PlayerList.ForceRed'; - const ACTION_FORCE_BLUE = 'PlayerList.ForceBlue'; - const ACTION_FORCE_SPEC = 'PlayerList.ForceSpec'; - const ACTION_PLAYER_ADV = 'PlayerList.PlayerAdvancedActions'; - const ACTION_CLOSE_PLAYER_ADV = 'PlayerList.ClosePlayerAdvWidget'; - const ACTION_MUTE_PLAYER = 'PlayerList.MutePlayer'; - const ACTION_UNMUTE_PLAYER = 'PlayerList.UnMutePlayer'; - const ACTION_WARN_PLAYER = 'PlayerList.WarnPlayer'; - const ACTION_KICK_PLAYER = 'PlayerList.KickPlayer'; - const ACTION_BAN_PLAYER = 'PlayerList.BanPlayer'; - const ACTION_ADD_AS_MASTER = 'PlayerList.PlayerAddAsMaster'; - const ACTION_ADD_AS_ADMIN = 'PlayerList.PlayerAddAsAdmin'; - const ACTION_ADD_AS_MOD = 'PlayerList.PlayerAddAsModerator'; - const ACTION_REVOKE_RIGHTS = 'PlayerList.RevokeRights'; + const ACTION_FORCE_RED = 'PlayerList.ForceRed'; + const ACTION_FORCE_BLUE = 'PlayerList.ForceBlue'; + const ACTION_FORCE_SPEC = 'PlayerList.ForceSpec'; + const ACTION_PLAYER_ADV = 'PlayerList.PlayerAdvancedActions'; + const ACTION_CLOSE_PLAYER_ADV = 'PlayerList.ClosePlayerAdvWidget'; + const ACTION_MUTE_PLAYER = 'PlayerList.MutePlayer'; + const ACTION_UNMUTE_PLAYER = 'PlayerList.UnMutePlayer'; + const ACTION_WARN_PLAYER = 'PlayerList.WarnPlayer'; + const ACTION_KICK_PLAYER = 'PlayerList.KickPlayer'; + const ACTION_BAN_PLAYER = 'PlayerList.BanPlayer'; + const ACTION_ADD_AS_MASTER = 'PlayerList.PlayerAddAsMaster'; + const ACTION_ADD_AS_ADMIN = 'PlayerList.PlayerAddAsAdmin'; + const ACTION_ADD_AS_MOD = 'PlayerList.PlayerAddAsModerator'; + const ACTION_REVOKE_RIGHTS = 'PlayerList.RevokeRights'; const ACTION_OPEN_PLAYER_DETAILED = 'PlayerList.OpenPlayerDetailed'; - const ACTION_SPECTATE_PLAYER = 'PlayerList.SpectatePlayer'; - const SHOWN_MAIN_WINDOW = -1; + const ACTION_SPECTATE_PLAYER = 'PlayerList.SpectatePlayer'; + const SHOWN_MAIN_WINDOW = -1; + /** - * Private properties + * Private Properties */ private $maniaControl = null; - private $width; - private $height; - private $quadStyle; - private $quadSubstyle; private $playersListShown = array(); /** - * Create a PlayerList instance + * Create a PlayerList Instance * * @param ManiaControl $maniaControl */ public function __construct(ManiaControl $maniaControl) { $this->maniaControl = $maniaControl; - + $this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_CLOSE_PLAYER_ADV, $this, 'closePlayerAdvancedWidget'); $this->maniaControl->callbackManager->registerCallbackListener(ManialinkManager::CB_MAIN_WINDOW_CLOSED, $this, 'closeWidget'); - $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MP_PLAYERMANIALINKPAGEANSWER, $this, 'handleManialinkPageAnswer'); - + $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MP_PLAYERMANIALINKPAGEANSWER, $this, + 'handleManialinkPageAnswer'); + // Update Widget Events $this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERINFOCHANGED, $this, 'updateWidget'); $this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERDISCONNECTED, $this, 'updateWidget'); $this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERJOINED, $this, 'updateWidget'); $this->maniaControl->callbackManager->registerCallbackListener(AuthenticationManager::CB_AUTH_LEVEL_CHANGED, $this, 'updateWidget'); - - // settings - $this->width = $this->maniaControl->manialinkManager->styleManager->getListWidgetsWidth(); - $this->height = $this->maniaControl->manialinkManager->styleManager->getListWidgetsHeight(); - $this->quadStyle = $this->maniaControl->manialinkManager->styleManager->getDefaultMainWindowStyle(); - $this->quadSubstyle = $this->maniaControl->manialinkManager->styleManager->getDefaultMainWindowSubStyle(); - } public function addPlayerToShownList(Player $player, $showStatus = self::SHOWN_MAIN_WINDOW) { $this->playersListShown[$player->login] = $showStatus; } + /** + * Show the PlayerList Widget to the Player + * + * @param Player $player + */ public function showPlayerList(Player $player) { + $width = $this->maniaControl->manialinkManager->styleManager->getListWidgetsWidth(); + $height = $this->maniaControl->manialinkManager->styleManager->getListWidgetsHeight(); + $quadStyle = $this->maniaControl->manialinkManager->styleManager->getDefaultMainWindowStyle(); + $quadSubstyle = $this->maniaControl->manialinkManager->styleManager->getDefaultMainWindowSubStyle(); + $maniaLink = new ManiaLink(ManialinkManager::MAIN_MLID); - - // Create script and features - $script = new Script(); - $maniaLink->setScript($script); - - // mainframe + $script = $maniaLink->getScript(); + + // Main frame $frame = new Frame(); $maniaLink->add($frame); - $frame->setSize($this->width, $this->height); + $frame->setSize($width, $height); $frame->setPosition(0, 0); - - // Background Quad + + // Background $backgroundQuad = new Quad(); $frame->add($backgroundQuad); - $backgroundQuad->setSize($this->width, $this->height); - $backgroundQuad->setStyles($this->quadStyle, $this->quadSubstyle); - - // Add Close Quad (X) + $backgroundQuad->setSize($width, $height); + $backgroundQuad->setStyles($quadStyle, $quadSubstyle); + + // Close Quad (X) $closeQuad = new Quad_Icons64x64_1(); $frame->add($closeQuad); - $closeQuad->setPosition($this->width * 0.483, $this->height * 0.467, 3); + $closeQuad->setPosition($width * 0.483, $height * 0.467, 3); $closeQuad->setSize(6, 6); $closeQuad->setSubStyle(Quad_Icons64x64_1::SUBSTYLE_QuitRace); $closeQuad->setAction(ManialinkManager::ACTION_CLOSEWIDGET); - - + // Start offsets - $x = -$this->width / 2; - $y = $this->height / 2; - - - //Predefine Description Label + $x = -$width / 2; + $y = $height / 2; + + // Predefine 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->setPosition($x + 10, -$height / 2 + 5); + $descriptionLabel->setSize($width * 0.7, 4); $descriptionLabel->setTextSize(2); $descriptionLabel->setVisible(false); - + // Headline $headFrame = new Frame(); $frame->add($headFrame); $headFrame->setY($y - 5); // $array = array("Id" => $x + 5, "Nickname" => $x + 10, "Login" => $x + 40, "Ladder" => $x + 60,"Zone" => $x + 85); - if($this->maniaControl->authenticationManager->checkRight($player, AuthenticationManager::AUTH_LEVEL_MODERATOR)) { + if ($this->maniaControl->authenticationManager->checkRight($player, AuthenticationManager::AUTH_LEVEL_MODERATOR)) { $array = array("Id" => $x + 5, "Nickname" => $x + 18, "Login" => $x + 70, "Location" => $x + 101, "Actions" => $x + 135); - } else { + } + else { $array = array("Id" => $x + 5, "Nickname" => $x + 18, "Login" => $x + 70, "Location" => $x + 101); } $this->maniaControl->manialinkManager->labelLine($headFrame, $array); - + // get PlayerList $players = $this->maniaControl->playerManager->getPlayers(); - + $i = 1; $y -= 10; - foreach($players as $listPlayer) { + foreach ($players as $listPlayer) { /** * * @var Player $listPlayer */ - - $path = $listPlayer->getProvince(); + + $path = $listPlayer->getProvince(); $playerFrame = new Frame(); $frame->add($playerFrame); - - if($i % 2 != 0) { + + if ($i % 2 != 0) { $lineQuad = new Quad_BgsPlayerCard(); $playerFrame->add($lineQuad); - $lineQuad->setSize($this->width, 4); + $lineQuad->setSize($width, 4); $lineQuad->setSubStyle($lineQuad::SUBSTYLE_BgPlayerCardBig); $lineQuad->setZ(0.001); } - - $array = array($i => $x + 5, $listPlayer->nickname => $x + 18, $listPlayer->login => $x + 70, $path => $x + 101); + + $array = array($i => $x + 5, $listPlayer->nickname => $x + 18, $listPlayer->login => $x + 70, $path => $x + 101); $frames = $this->maniaControl->manialinkManager->labelLine($playerFrame, $array); - - /** @var Label $nicknameLabel */ - //$nicknameLabel = $frames[1]; - //$nicknameLabel->setAction(self::ACTION_OPEN_PLAYER_DETAILED . '.' . $listPlayer->login); - - + $playerFrame->setY($y); - + // Team Emblem - if($listPlayer->teamId >= 0) { + if ($listPlayer->teamId >= 0) { // Player is in a Team $teamQuad = new Quad_Emblems(); $playerFrame->add($teamQuad); $teamQuad->setX($x + 10); $teamQuad->setZ(0.1); $teamQuad->setSize(3.8, 3.8); - - switch($listPlayer->teamId) { + + switch ($listPlayer->teamId) { case 0: $teamQuad->setSubStyle($teamQuad::SUBSTYLE_1); break; @@ -194,7 +185,8 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $teamQuad->setSubStyle($teamQuad::SUBSTYLE_2); break; } - } else if($listPlayer->isSpectator) { + } + else if ($listPlayer->isSpectator) { // Player is in Spectator Mode $specQuad = new Quad_BgRaceScore2(); $playerFrame->add($specQuad); @@ -203,8 +195,8 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $specQuad->setSubStyle($specQuad::SUBSTYLE_Spectator); $specQuad->setSize(3.8, 3.8); } - - if(!$listPlayer->isFakePlayer()) { + + if (!$listPlayer->isFakePlayer()) { // Nation Quad $countryQuad = new Quad(); $playerFrame->add($countryQuad); @@ -213,10 +205,11 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $countryQuad->setX($x + 98); $countryQuad->setSize(4, 4); $countryQuad->setZ(-0.1); - - $script->addTooltip($countryQuad, $descriptionLabel, array(Script::OPTION_TOOLTIP_TEXT => $listPlayer->nickname . " from " . $listPlayer->path)); + + $script->addTooltip($countryQuad, $descriptionLabel, + array(Script::OPTION_TOOLTIP_TEXT => $listPlayer->nickname . " from " . $listPlayer->path)); } - + // Level Quad $rightQuad = new Quad_BgRaceScore2(); $playerFrame->add($rightQuad); @@ -224,16 +217,18 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $rightQuad->setZ(5); $rightQuad->setSubStyle($rightQuad::SUBSTYLE_CupFinisher); $rightQuad->setSize(7, 3.5); - + $rightLabel = new Label_Text(); $playerFrame->add($rightLabel); $rightLabel->setX($x + 13.9); $rightLabel->setTextSize(0.8); $rightLabel->setZ(10); - - $script->addTooltip($rightLabel, $descriptionLabel, array(Script::OPTION_TOOLTIP_TEXT => $this->maniaControl->authenticationManager->getAuthLevelName($listPlayer->authLevel) . " " . $listPlayer->nickname)); - - + + $script->addTooltip($rightLabel, $descriptionLabel, + array( + Script::OPTION_TOOLTIP_TEXT => $this->maniaControl->authenticationManager->getAuthLevelName($listPlayer->authLevel) . " " . + $listPlayer->nickname)); + // Player Statistics $playerQuad = new Quad_Icons64x64_1(); $playerFrame->add($playerQuad); @@ -243,8 +238,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $playerQuad->setSize(2.7, 2.7); $playerQuad->setAction(self::ACTION_OPEN_PLAYER_DETAILED . "." . $listPlayer->login); $script->addTooltip($playerQuad, $descriptionLabel, array(Script::OPTION_TOOLTIP_TEXT => "View Statistics of " . $listPlayer->nickname)); - - + // Camera Quad $playerQuad = new Quad_UIConstruction_Buttons(); $playerFrame->add($playerQuad); @@ -254,7 +248,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $playerQuad->setSize(3.8, 3.8); $script->addTooltip($playerQuad, $descriptionLabel, array(Script::OPTION_TOOLTIP_TEXT => "Spectate " . $listPlayer->nickname)); $playerQuad->setAction(self::ACTION_SPECTATE_PLAYER); - + // Player Profile Quad $playerQuad = new Quad_UIConstruction_Buttons(); $playerFrame->add($playerQuad); @@ -263,12 +257,12 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $playerQuad->setSubStyle($playerQuad::SUBSTYLE_Author); $playerQuad->setSize(3.8, 3.8); $script->addProfileButton($playerQuad, $listPlayer->login); - + // Description Label - $script->addTooltip($playerQuad, $descriptionLabel, array(Script::OPTION_TOOLTIP_TEXT => "View Player profile of " . $listPlayer->nickname)); - - - switch($listPlayer->authLevel) { + $script->addTooltip($playerQuad, $descriptionLabel, + array(Script::OPTION_TOOLTIP_TEXT => "View Player profile of " . $listPlayer->nickname)); + + switch ($listPlayer->authLevel) { case authenticationManager::AUTH_LEVEL_MASTERADMIN: $rightLabel->setText("MA"); break; @@ -281,10 +275,10 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { case authenticationManager::AUTH_LEVEL_MODERATOR: $rightLabel->setText("MOD"); } - + $rightLabel->setTextColor("fff"); - - if($this->maniaControl->authenticationManager->checkRight($player, AuthenticationManager::AUTH_LEVEL_MODERATOR)) { + + if ($this->maniaControl->authenticationManager->checkRight($player, AuthenticationManager::AUTH_LEVEL_MODERATOR)) { // Further Player actions Quad $playerQuad = new Quad_Icons64x64_1(); $playerFrame->add($playerQuad); @@ -293,10 +287,11 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $playerQuad->setSubStyle($playerQuad::SUBSTYLE_Buddy); $playerQuad->setSize(3.8, 3.8); $playerQuad->setAction(self::ACTION_PLAYER_ADV . "." . $listPlayer->login); - + // Description Label - $script->addTooltip($playerQuad, $descriptionLabel, array(Script::OPTION_TOOLTIP_TEXT => "Advanced Player Actions on " . $listPlayer->nickname)); - + $script->addTooltip($playerQuad, $descriptionLabel, + array(Script::OPTION_TOOLTIP_TEXT => "Advanced Player Actions on " . $listPlayer->nickname)); + // Force to Red-Team Quad $redQuad = new Quad_Emblems(); $playerFrame->add($redQuad); @@ -305,10 +300,11 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $redQuad->setSubStyle($redQuad::SUBSTYLE_2); $redQuad->setSize(3.8, 3.8); $redQuad->setAction(self::ACTION_FORCE_RED . "." . $listPlayer->login); - + // Force to Red-Team Description Label - $script->addTooltip($redQuad, $descriptionLabel, array(Script::OPTION_TOOLTIP_TEXT => "Force " . $listPlayer->nickname . '$z to Red Team!')); - + $script->addTooltip($redQuad, $descriptionLabel, + array(Script::OPTION_TOOLTIP_TEXT => "Force " . $listPlayer->nickname . '$z to Red Team!')); + // Force to Blue-Team Quad $blueQuad = new Quad_Emblems(); $playerFrame->add($blueQuad); @@ -317,10 +313,11 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $blueQuad->setSubStyle($blueQuad::SUBSTYLE_1); $blueQuad->setSize(3.8, 3.8); $blueQuad->setAction(self::ACTION_FORCE_BLUE . "." . $listPlayer->login); - + // Force to Blue-Team Description Label - $script->addTooltip($blueQuad, $descriptionLabel, array(Script::OPTION_TOOLTIP_TEXT => "Force " . $listPlayer->nickname . '$z to Blue Team!')); - + $script->addTooltip($blueQuad, $descriptionLabel, + array(Script::OPTION_TOOLTIP_TEXT => "Force " . $listPlayer->nickname . '$z to Blue Team!')); + // Force to Spectator Quad $spectatorQuad = new Quad_BgRaceScore2(); $playerFrame->add($spectatorQuad); @@ -329,21 +326,22 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $spectatorQuad->setSubStyle($spectatorQuad::SUBSTYLE_Spectator); $spectatorQuad->setSize(3.8, 3.8); $spectatorQuad->setAction(self::ACTION_FORCE_SPEC . "." . $listPlayer->login); - + // Force to Spectator Description Label - $script->addTooltip($spectatorQuad, $descriptionLabel, array(Script::OPTION_TOOLTIP_TEXT => "Force " . $listPlayer->nickname . '$z to Spectator!')); + $script->addTooltip($spectatorQuad, $descriptionLabel, + array(Script::OPTION_TOOLTIP_TEXT => "Force " . $listPlayer->nickname . '$z to Spectator!')); } $i++; $y -= 4; } - - // show advanced window - if($this->playersListShown[$player->login] != false && $this->playersListShown[$player->login] != self::SHOWN_MAIN_WINDOW) { + + // Show advanced window + if ($this->playersListShown[$player->login] && $this->playersListShown[$player->login] != self::SHOWN_MAIN_WINDOW) { $frame = $this->showAdvancedPlayerWidget($this->playersListShown[$player->login]); $maniaLink->add($frame); } - - // render and display xml + + // Render and display xml $this->maniaControl->manialinkManager->displayWidget($maniaLink, $player); } @@ -351,14 +349,14 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { * Displays the Advanced Player Window * * @param Player $caller - * @param $login + * @param $login */ public function advancedPlayerWidget(Player $caller, $login) { - if(!$caller) { - return; - } - $this->playersListShown[$caller->login] = $login; // Show a certain player - $this->showPlayerList($caller); // reopen playerlist + // Set status to target player login + $this->playersListShown[$caller->login] = $login; + + // Reopen playerlist + $this->showPlayerList($caller); } /** @@ -369,22 +367,26 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { */ public function showAdvancedPlayerWidget($login) { $player = $this->maniaControl->playerManager->getPlayer($login); - - // todo all configurable or as constants - $x = $this->width / 2 + 2.5; - $width = 35; - $height = $this->height * 0.75; - $hAlign = Control::LEFT; - $style = Label_Text::STYLE_TextCardSmall; - $textSize = 1.5; + $width = $this->maniaControl->manialinkManager->styleManager->getListWidgetsWidth(); + $height = $this->maniaControl->manialinkManager->styleManager->getListWidgetsHeight(); + $quadStyle = $this->maniaControl->manialinkManager->styleManager->getDefaultMainWindowStyle(); + $quadSubstyle = $this->maniaControl->manialinkManager->styleManager->getDefaultMainWindowSubStyle(); + + // TODO: all configurable or as constants + $x = $width / 2 + 2.5; + $width = 35; + $height = $height * 0.75; + $hAlign = Control::LEFT; + $style = Label_Text::STYLE_TextCardSmall; + $textSize = 1.5; $textColor = 'FFF'; $quadWidth = $width - 7; - + // mainframe $frame = new Frame(); $frame->setSize($width, $height); $frame->setPosition($x + $width / 2, 0); - + // Add Close Quad (X) $closeQuad = new Quad_Icons64x64_1(); $frame->add($closeQuad); @@ -392,14 +394,14 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $closeQuad->setSize(6, 6); $closeQuad->setSubStyle(Quad_Icons64x64_1::SUBSTYLE_QuitRace); $closeQuad->setAction(self::ACTION_CLOSE_PLAYER_ADV); - + // Background Quad $backgroundQuad = new Quad(); $frame->add($backgroundQuad); $backgroundQuad->setSize($width, $height); - $backgroundQuad->setStyles($this->quadStyle, $this->quadSubstyle); + $backgroundQuad->setStyles($quadStyle, $quadSubstyle); $backgroundQuad->setZ(0.1); - + // Show headline $label = new Label_Text(); $frame->add($label); @@ -410,7 +412,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $label->setTextSize($textSize); $label->setText("Advanced Actions"); $label->setTextColor($textColor); - + // Show Nickname $label = new Label_Text(); $frame->add($label); @@ -422,16 +424,16 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $label->setTextSize($textSize); $label->setText($player->nickname); $label->setTextColor($textColor); - - //Mute Player - $y = $height / 2 - 14; + + // Mute Player + $y = $height / 2 - 14; $quad = new Quad_BgsPlayerCard(); $frame->add($quad); $quad->setX(0); $quad->setY($y); $quad->setSubStyle($quad::SUBSTYLE_BgPlayerCardBig); $quad->setSize($quadWidth, 5); - + $label = new Label_Button(); $frame->add($label); $label->setX(0); @@ -440,111 +442,112 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $label->setStyle($style); $label->setTextSize($textSize); $label->setTextColor($textColor); - - if(!$this->maniaControl->playerManager->playerActions->isPlayerMuted($login)) { + + if (!$this->maniaControl->playerManager->playerActions->isPlayerMuted($login)) { $label->setText("Mute"); $quad->setAction(self::ACTION_MUTE_PLAYER . "." . $login); - } else { + } + else { $label->setText("UnMute"); $quad->setAction(self::ACTION_UNMUTE_PLAYER . "." . $login); } - - //Warn Player + + // Warn Player $y -= 5; $quad = clone $quad; $frame->add($quad); $quad->setY($y); $quad->setAction(self::ACTION_KICK_PLAYER . "." . $login); - + $label = clone $label; $frame->add($label); $label->setY($y); $label->setText("Warn"); $label->setTextColor($textColor); - + $y -= 5; - + // Show Kick $quad = clone $quad; $frame->add($quad); $quad->setY($y); $quad->setAction(self::ACTION_KICK_PLAYER . "." . $login); - + $label = clone $label; $frame->add($label); $label->setY($y); $label->setText("Kick"); $label->setTextColor("F90"); - + $y -= 5; // Show Ban $quad = clone $quad; $frame->add($quad); $quad->setY($y); $quad->setAction(self::ACTION_BAN_PLAYER . "." . $login); - + $label = clone $label; $frame->add($label); $label->setY($y); $label->setText("Ban"); $label->setTextColor("700"); - + $y -= 10; // Show Add as Master-Admin $quad = clone $quad; $frame->add($quad); $quad->setY($y); $quad->setAction(self::ACTION_ADD_AS_MASTER . "." . $login); - + $label = clone $label; $frame->add($label); $label->setY($y); - + $label->setText("Set SuperAdmin"); - + $label->setTextColor($textColor); - + $y -= 5; // Show Add as Admin $quad = clone $quad; $frame->add($quad); $quad->setY($y); $quad->setAction(self::ACTION_ADD_AS_ADMIN . "." . $login); - + $label = clone $label; $frame->add($label); $label->setY($y); $label->setText("Set Admin"); $label->setTextColor($textColor); - + $y -= 5; // Show Add as Moderator $quad = clone $quad; $frame->add($quad); $quad->setY($y); $quad->setAction(self::ACTION_ADD_AS_MOD . "." . $login); - + $label = clone $label; $frame->add($label); $label->setY($y); $label->setText("Set Moderator"); $label->setTextColor($textColor); - - if($this->maniaControl->authenticationManager->checkRight($player, AuthenticationManager::AUTH_LEVEL_MODERATOR)) { + + if ($this->maniaControl->authenticationManager->checkRight($player, AuthenticationManager::AUTH_LEVEL_MODERATOR)) { $y -= 5; // Revoke Rights $quad = clone $quad; $frame->add($quad); $quad->setY($y); $quad->setAction(self::ACTION_REVOKE_RIGHTS . "." . $login); - + $label = clone $label; $frame->add($label); $label->setY($y); $label->setText("Revoke Rights"); $label->setTextColor("700"); } - + return $frame; } @@ -561,7 +564,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { /** * Closes the player advanced widget widget * - * @param array $callback + * @param array $callback * @param Player $player */ public function closePlayerAdvancedWidget(array $callback, Player $player) { @@ -575,17 +578,16 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { * @param array $callback */ public function handleManialinkPageAnswer(array $callback) { - $actionId = $callback[1][2]; - $actionArray = explode(".", $actionId); - if(count($actionArray) <= 2) { - return; - } - $action = $actionArray[0] . "." . $actionArray[1]; - $adminLogin = $callback[1][1]; + $actionId = $callback[1][2]; + $actionArray = explode('.', $actionId); + if (count($actionArray) <= 2) return; + + $action = $actionArray[0] . "." . $actionArray[1]; + $adminLogin = $callback[1][1]; $targetLogin = $actionArray[2]; - - switch($action) { - case self::ACTION_SPECTATE_PLAYER: //TODO not working yet + + switch ($action) { + case self::ACTION_SPECTATE_PLAYER: // TODO not working yet $this->maniaControl->client->query('ForceSpectator', $adminLogin, PlayerActions::SPECTATOR_SPECTATOR); $this->maniaControl->client->query('ForceSpectatorTarget', $adminLogin, $targetLogin, 1); break; @@ -595,13 +597,14 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { unset($this->playersListShown[$player->login]); break; case self::ACTION_FORCE_BLUE: - $this->maniaControl->playerManager->playerActions->forcePlayerToTeam($adminLogin, $targetLogin, PlayerActions::BLUE_TEAM); + $this->maniaControl->playerManager->playerActions->forcePlayerToTeam($adminLogin, $targetLogin, PlayerActions::TEAM_BLUE); break; case self::ACTION_FORCE_RED: - $this->maniaControl->playerManager->playerActions->forcePlayerToTeam($adminLogin, $targetLogin, PlayerActions::RED_TEAM); + $this->maniaControl->playerManager->playerActions->forcePlayerToTeam($adminLogin, $targetLogin, PlayerActions::TEAM_RED); break; case self::ACTION_FORCE_SPEC: - $this->maniaControl->playerManager->playerActions->forcePlayerToSpectator($adminLogin, $targetLogin, PlayerActions::SPECTATOR_BUT_KEEP_SELECTABLE); + $this->maniaControl->playerManager->playerActions->forcePlayerToSpectator($adminLogin, $targetLogin, + PlayerActions::SPECTATOR_BUT_KEEP_SELECTABLE); break; case self::ACTION_MUTE_PLAYER: $this->maniaControl->playerManager->playerActions->mutePlayer($adminLogin, $targetLogin); @@ -625,13 +628,15 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $this->advancedPlayerWidget($admin, $targetLogin); break; case self::ACTION_ADD_AS_MASTER: - $this->maniaControl->playerManager->playerActions->grandAuthLevel($adminLogin, $targetLogin, AuthenticationManager::AUTH_LEVEL_SUPERADMIN); + $this->maniaControl->playerManager->playerActions->grandAuthLevel($adminLogin, $targetLogin, + AuthenticationManager::AUTH_LEVEL_SUPERADMIN); break; case self::ACTION_ADD_AS_ADMIN: $this->maniaControl->playerManager->playerActions->grandAuthLevel($adminLogin, $targetLogin, AuthenticationManager::AUTH_LEVEL_ADMIN); break; case self::ACTION_ADD_AS_MOD: - $this->maniaControl->playerManager->playerActions->grandAuthLevel($adminLogin, $targetLogin, AuthenticationManager::AUTH_LEVEL_MODERATOR); + $this->maniaControl->playerManager->playerActions->grandAuthLevel($adminLogin, $targetLogin, + AuthenticationManager::AUTH_LEVEL_MODERATOR); break; case self::ACTION_REVOKE_RIGHTS: $this->maniaControl->playerManager->playerActions->revokeAuthLevel($adminLogin, $targetLogin); @@ -645,16 +650,17 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { * @param array $callback */ public function updateWidget(array $callback) { - foreach($this->playersListShown as $login => $shown) { - if($shown) { + foreach ($this->playersListShown as $login => $shown) { + if ($shown) { // Check if Shown player still exists - if($shown != self::SHOWN_MAIN_WINDOW && $this->maniaControl->playerManager->getPlayer($shown) == null) { + if ($shown != self::SHOWN_MAIN_WINDOW && $this->maniaControl->playerManager->getPlayer($shown) == null) { $this->playersListShown[$login] = false; } $player = $this->maniaControl->playerManager->getPlayer($login); - if($player != null) { + if ($player != null) { $this->showPlayerList($player); - } else { + } + else { // if player with the open widget disconnected remove him from the shownlist unset($this->playersListShown[$login]); }