From e3a365f187eda2dacfae217c7ffcfb1b3c112445 Mon Sep 17 00:00:00 2001 From: Jocy Date: Fri, 19 May 2017 18:36:41 +0200 Subject: [PATCH] New SidebarMenuManager Version --- core/Admin/ActionsMenu.php | 221 ++++++++++-------- core/Manialinks/SidebarMenuEntry.php | 24 ++ ...rable.php => SidebarMenuEntryListener.php} | 7 +- core/Manialinks/SidebarMenuManager.php | 105 +++++---- core/Players/PlayerManager.php | 17 +- core/Plugins/PluginManager.php | 4 + plugins/MCTeam/CustomVotesPlugin.php | 17 +- plugins/MCTeam/DonationPlugin.php | 12 +- 8 files changed, 228 insertions(+), 179 deletions(-) create mode 100644 core/Manialinks/SidebarMenuEntry.php rename core/Manialinks/{SidebarMenuEntryRenderable.php => SidebarMenuEntryListener.php} (64%) diff --git a/core/Admin/ActionsMenu.php b/core/Admin/ActionsMenu.php index 30906aaa..fa52fac4 100644 --- a/core/Admin/ActionsMenu.php +++ b/core/Admin/ActionsMenu.php @@ -15,7 +15,7 @@ use ManiaControl\General\UsageInformationTrait; use ManiaControl\ManiaControl; use ManiaControl\Manialinks\ManialinkManager; use ManiaControl\Manialinks\ManialinkPageAnswerListener; -use ManiaControl\Manialinks\SidebarMenuEntryRenderable; +use ManiaControl\Manialinks\SidebarMenuEntryListener; use ManiaControl\Manialinks\SidebarMenuManager; use ManiaControl\Players\Player; use ManiaControl\Players\PlayerManager; @@ -30,7 +30,7 @@ use ManiaControl\Settings\SettingManager; * @copyright 2014-2017 ManiaControl Team * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 */ -class ActionsMenu implements SidebarMenuEntryRenderable, CallbackListener, ManialinkPageAnswerListener, UsageInformationAble { +class ActionsMenu implements SidebarMenuEntryListener, CallbackListener, ManialinkPageAnswerListener, UsageInformationAble { use UsageInformationTrait; /* @@ -45,6 +45,8 @@ class ActionsMenu implements SidebarMenuEntryRenderable, CallbackListener, Mania const ACTION_OPEN_PLAYER_MENU = 'ActionsMenu.OpenPlayerMenu'; const ADMIN_MENU_ID = 'ActionsMenu.AdminMenu'; const PLAYER_MENU_ID = 'ActionsMenu.PlayerMenu'; + const MLID_ADMIN_MENU = 'ActionsMenu.AdminMenuMLID'; + const MLID_PLAYER_MENU = 'ActionsMenu.PlayerMenuMLID'; /* * Private properties @@ -75,8 +77,20 @@ class ActionsMenu implements SidebarMenuEntryRenderable, CallbackListener, Mania $this->maniaControl->getCallbackManager()->registerCallbackListener(AuthenticationManager::CB_AUTH_LEVEL_CHANGED, $this, 'handlePlayerJoined'); $this->maniaControl->getCallbackManager()->registerCallbackListener(SettingManager::CB_SETTING_CHANGED, $this, 'handleSettingChanged'); - $this->maniaControl->getManialinkManager()->getSidebarMenuManager()->addMenuEntry($this,SidebarMenuManager::ORDER_ADMIN_MENU, self::ADMIN_MENU_ID); - $this->maniaControl->getManialinkManager()->getSidebarMenuManager()->addMenuEntry($this,SidebarMenuManager::ORDER_PLAYER_MENU, self::PLAYER_MENU_ID); + } + + /** + * Handle ManiaControl AfterInit callback + * + * @internal + */ + public function handleAfterInit() { + $this->initCompleted = true; + + $this->maniaControl->getManialinkManager()->getSidebarMenuManager()->addMenuEntry(SidebarMenuManager::ORDER_ADMIN_MENU, self::ADMIN_MENU_ID, $this, 'rebuildAndShowAdminMenu'); + $this->maniaControl->getManialinkManager()->getSidebarMenuManager()->addMenuEntry(SidebarMenuManager::ORDER_PLAYER_MENU, self::PLAYER_MENU_ID, $this, 'rebuildAndShowPlayerMenu'); + + $this->rebuildAndShowMenu(); } /** @@ -124,104 +138,49 @@ class ActionsMenu implements SidebarMenuEntryRenderable, CallbackListener, Mania } //Send Menu to Admins - $admins = $this->maniaControl->getAuthenticationManager()->getConnectedAdmins(AuthenticationManager::AUTH_LEVEL_MODERATOR); - if (!empty($admins)) { - $manialink = $this->buildMenuIconsManialink(true); - $this->maniaControl->getManialinkManager()->sendManialink($manialink, $admins); - } + $this->rebuildAndShowAdminMenu(); //Send Menu to Players - Players with No Admin Permisssions - $players = $this->maniaControl->getAuthenticationManager()->getConnectedPlayers(); + $this->rebuildAndShowPlayerMenu(); + } + + + /** + * @internal + */ + public function rebuildAndShowAdminMenu() { + $admins = $this->maniaControl->getAuthenticationManager()->getConnectedAdmins(AuthenticationManager::AUTH_LEVEL_MODERATOR); + if (!empty($admins)) { + $manialink = $this->buildAdminMenuManiaLink(); + $this->maniaControl->getManialinkManager()->sendManialink($manialink, $admins); + } + } + + + /** + * @internal + */ + public function rebuildAndShowPlayerMenu() { + $players = $this->maniaControl->getPlayerManager()->getPlayers(); if (!empty($players)) { - $manialink = $this->buildMenuIconsManialink(false); + $manialink = $this->buildPlayerMenuManiaLink(); $this->maniaControl->getManialinkManager()->sendManialink($manialink, $players); } } - /** - * Builds the Manialink - * - * @param bool $admin - * @return \FML\ManiaLink - */ - private function buildMenuIconsManialink($admin = false) { - $adminPos = $this->maniaControl->getManialinkManager()->getSidebarMenuManager()->getEntryPosition(self::ADMIN_MENU_ID); - $playerPos = $this->maniaControl->getManialinkManager()->getSidebarMenuManager()->getEntryPosition(self::PLAYER_MENU_ID); + private function buildPlayerMenuManiaLink() { $itemSize = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_MENU_ITEMSIZE); $quadStyle = $this->maniaControl->getManialinkManager()->getStyleManager()->getDefaultQuadStyle(); $quadSubstyle = $this->maniaControl->getManialinkManager()->getStyleManager()->getDefaultQuadSubstyle(); $itemMarginFactorX = 1.3; $itemMarginFactorY = 1.2; - $maniaLink = new ManiaLink(self::MLID_MENU); + $maniaLink = new ManiaLink(self::MLID_PLAYER_MENU); $frame = new Frame(); $maniaLink->addChild($frame); $frame->setZ(ManialinkManager::MAIN_MANIALINK_Z_VALUE); - /* - * Admin Menu - */ - if ($admin) { - // Admin Menu Icon Frame - $iconFrame = new Frame(); - $frame->addChild($iconFrame); - $iconFrame->setPosition($adminPos->getX(), $adminPos->getY()); - - $backgroundQuad = new Quad(); - $iconFrame->addChild($backgroundQuad); - $backgroundQuad->setSize($itemSize * $itemMarginFactorX, $itemSize * $itemMarginFactorY); - $backgroundQuad->setStyles($quadStyle, $quadSubstyle); - - $itemQuad = new Quad_Icons64x64_1(); - $iconFrame->addChild($itemQuad); - $itemQuad->setSubStyle($itemQuad::SUBSTYLE_IconServers); - $itemQuad->setSize($itemSize, $itemSize); - - // Admin Menu Description - $descriptionLabel = new Label(); - $frame->addChild($descriptionLabel); - $descriptionLabel->setPosition($adminPos->getX() - count($this->adminMenuItems) * $itemSize * 1.05 - 5, $adminPos->getY()); - $descriptionLabel->setAlign($descriptionLabel::RIGHT, $descriptionLabel::TOP); - $descriptionLabel->setSize(40, 4); - $descriptionLabel->setTextSize(1.4); - $descriptionLabel->setTextColor('fff'); - - // Admin Menu - $popoutFrame = new Frame(); - $frame->addChild($popoutFrame); - $popoutFrame->setPosition($adminPos->getX() - $itemSize * 0.5, $adminPos->getY()); - $popoutFrame->setHorizontalAlign($popoutFrame::RIGHT); - $popoutFrame->setVisible(false); - - $backgroundQuad = new Quad(); - $popoutFrame->addChild($backgroundQuad); - $backgroundQuad->setHorizontalAlign($backgroundQuad::RIGHT); - $backgroundQuad->setStyles($quadStyle, $quadSubstyle); - $backgroundQuad->setSize(count($this->adminMenuItems) * $itemSize * 1.05 + 2, $itemSize * $itemMarginFactorY); - - $itemQuad->addToggleFeature($popoutFrame); - - // Add items - $itemPosX = -1; - foreach ($this->adminMenuItems as $menuItems) { - foreach ($menuItems as $menuItem) { - $menuQuad = $menuItem[0]; - /** @var Quad $menuQuad */ - $popoutFrame->addChild($menuQuad); - $menuQuad->setSize($itemSize, $itemSize); - $menuQuad->setX($itemPosX); - $menuQuad->setHorizontalAlign($menuQuad::RIGHT); - $itemPosX -= $itemSize * 1.05; - - if ($menuItem[1]) { - $menuQuad->removeAllScriptFeatures(); - $description = '$s' . $menuItem[1]; - $menuQuad->addTooltipLabelFeature($descriptionLabel, $description); - } - } - } - } - + $playerPos = $this->maniaControl->getManialinkManager()->getSidebarMenuManager()->getEntryPosition(self::PLAYER_MENU_ID); /* * Player Menu */ @@ -287,6 +246,82 @@ class ActionsMenu implements SidebarMenuEntryRenderable, CallbackListener, Mania return $maniaLink; } + private function buildAdminMenuManiaLink() { + $itemSize = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_MENU_ITEMSIZE); + $quadStyle = $this->maniaControl->getManialinkManager()->getStyleManager()->getDefaultQuadStyle(); + $quadSubstyle = $this->maniaControl->getManialinkManager()->getStyleManager()->getDefaultQuadSubstyle(); + $itemMarginFactorX = 1.3; + $itemMarginFactorY = 1.2; + + $maniaLink = new ManiaLink(self::MLID_ADMIN_MENU); + $frame = new Frame(); + $maniaLink->addChild($frame); + $frame->setZ(ManialinkManager::MAIN_MANIALINK_Z_VALUE); + + $adminPos = $this->maniaControl->getManialinkManager()->getSidebarMenuManager()->getEntryPosition(self::ADMIN_MENU_ID); + + // Admin Menu Icon Frame + $iconFrame = new Frame(); + $frame->addChild($iconFrame); + $iconFrame->setPosition($adminPos->getX(), $adminPos->getY()); + + $backgroundQuad = new Quad(); + $iconFrame->addChild($backgroundQuad); + $backgroundQuad->setSize($itemSize * $itemMarginFactorX, $itemSize * $itemMarginFactorY); + $backgroundQuad->setStyles($quadStyle, $quadSubstyle); + + $itemQuad = new Quad_Icons64x64_1(); + $iconFrame->addChild($itemQuad); + $itemQuad->setSubStyle($itemQuad::SUBSTYLE_IconServers); + $itemQuad->setSize($itemSize, $itemSize); + + // Admin Menu Description + $descriptionLabel = new Label(); + $frame->addChild($descriptionLabel); + $descriptionLabel->setPosition($adminPos->getX() - count($this->adminMenuItems) * $itemSize * 1.05 - 5, $adminPos->getY()); + $descriptionLabel->setAlign($descriptionLabel::RIGHT, $descriptionLabel::TOP); + $descriptionLabel->setSize(40, 4); + $descriptionLabel->setTextSize(1.4); + $descriptionLabel->setTextColor('fff'); + + // Admin Menu + $popoutFrame = new Frame(); + $frame->addChild($popoutFrame); + $popoutFrame->setPosition($adminPos->getX() - $itemSize * 0.5, $adminPos->getY()); + $popoutFrame->setHorizontalAlign($popoutFrame::RIGHT); + $popoutFrame->setVisible(false); + + $backgroundQuad = new Quad(); + $popoutFrame->addChild($backgroundQuad); + $backgroundQuad->setHorizontalAlign($backgroundQuad::RIGHT); + $backgroundQuad->setStyles($quadStyle, $quadSubstyle); + $backgroundQuad->setSize(count($this->adminMenuItems) * $itemSize * 1.05 + 2, $itemSize * $itemMarginFactorY); + + $itemQuad->addToggleFeature($popoutFrame); + + // Add items + $itemPosX = -1; + foreach ($this->adminMenuItems as $menuItems) { + foreach ($menuItems as $menuItem) { + $menuQuad = $menuItem[0]; + /** @var Quad $menuQuad */ + $popoutFrame->addChild($menuQuad); + $menuQuad->setSize($itemSize, $itemSize); + $menuQuad->setX($itemPosX); + $menuQuad->setHorizontalAlign($menuQuad::RIGHT); + $itemPosX -= $itemSize * 1.05; + + if ($menuItem[1]) { + $menuQuad->removeAllScriptFeatures(); + $description = '$s' . $menuItem[1]; + $menuQuad->addTooltipLabelFeature($descriptionLabel, $description); + } + } + } + + return $maniaLink; + } + /** * Add a new Admin Menu Item * @@ -324,16 +359,6 @@ class ActionsMenu implements SidebarMenuEntryRenderable, CallbackListener, Mania $this->rebuildAndShowMenu(); } - /** - * Handle ManiaControl AfterInit callback - * - * @internal - */ - public function handleAfterInit() { - $this->initCompleted = true; - $this->rebuildAndShowMenu(); - } - /** * Handle PlayerJoined callback * @@ -342,11 +367,11 @@ class ActionsMenu implements SidebarMenuEntryRenderable, CallbackListener, Mania */ public function handlePlayerJoined(Player $player) { if ($this->maniaControl->getAuthenticationManager()->checkRight($player, AuthenticationManager::AUTH_LEVEL_MODERATOR)) { - $maniaLink = $this->buildMenuIconsManialink(true); - } else { - $maniaLink = $this->buildMenuIconsManialink(false); + $maniaLink = $this->buildAdminMenuManiaLink(); + $this->maniaControl->getManialinkManager()->sendManialink($maniaLink, $player); } + $maniaLink = $this->buildPlayerMenuManiaLink(); $this->maniaControl->getManialinkManager()->sendManialink($maniaLink, $player); } diff --git a/core/Manialinks/SidebarMenuEntry.php b/core/Manialinks/SidebarMenuEntry.php new file mode 100644 index 00000000..103a0fcc --- /dev/null +++ b/core/Manialinks/SidebarMenuEntry.php @@ -0,0 +1,24 @@ +id; + } + + /** + * @param mixed $id + */ + public function setId($id) { + $this->id = $id; + } +} \ No newline at end of file diff --git a/core/Manialinks/SidebarMenuEntryRenderable.php b/core/Manialinks/SidebarMenuEntryListener.php similarity index 64% rename from core/Manialinks/SidebarMenuEntryRenderable.php rename to core/Manialinks/SidebarMenuEntryListener.php index db54dc93..d8e2629e 100644 --- a/core/Manialinks/SidebarMenuEntryRenderable.php +++ b/core/Manialinks/SidebarMenuEntryListener.php @@ -12,10 +12,5 @@ namespace ManiaControl\Manialinks; * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 */ -interface SidebarMenuEntryRenderable { - - /** - * Call here the function which updates the MenuIcon ManiaLink - */ - public function renderMenuEntry(); +interface SidebarMenuEntryListener { } \ No newline at end of file diff --git a/core/Manialinks/SidebarMenuManager.php b/core/Manialinks/SidebarMenuManager.php index 2b87ca89..ddc25ece 100644 --- a/core/Manialinks/SidebarMenuManager.php +++ b/core/Manialinks/SidebarMenuManager.php @@ -28,11 +28,10 @@ class SidebarMenuManager implements UsageInformationAble, CallbackListener { const ORDER_ADMIN_MENU = 10; const ORDER_PLAYER_MENU = 20; - /* @var $maniaControl ManiaControl */ + /** @var ManiaControl $maniaControl */ private $maniaControl; - private $menuEntries = array(); - private $yPositions = array(); - private $registeredClasses = array(); + /** @var \ManiaControl\Manialinks\SidebarMenuEntry[] $menuEntries */ + private $menuEntries = array(); /** * SidebarMenuManager constructor. @@ -74,10 +73,10 @@ class SidebarMenuManager implements UsageInformationAble, CallbackListener { * * @return int */ - private function getElementCountBeforeAdminMenu(){ + private function getElementCountBeforeAdminMenu() { $count = 0; - foreach($this->menuEntries as $k => $entry){ - if($k < SidebarMenuManager::ORDER_ADMIN_MENU){ + foreach ($this->menuEntries as $k => $entry) { + if ($k < SidebarMenuManager::ORDER_ADMIN_MENU) { $count++; } } @@ -87,9 +86,9 @@ class SidebarMenuManager implements UsageInformationAble, CallbackListener { /** * Returns PositionObject of a menu item of the sidebar, or null if it's not found * + * @api * @param string $id * @return Position|null - * @api */ public function getEntryPosition($id) { $itemSize = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_MENU_ITEMSIZE); @@ -99,15 +98,8 @@ class SidebarMenuManager implements UsageInformationAble, CallbackListener { $count = $this->getElementCountBeforeAdminMenu(); $pos->setY($pos->getY() + $itemSize * $itemMarginFactor * $count); - - if (isset($this->yPositions[$id])) { - $pos->setY($this->yPositions[$id]); - return $pos; - } - foreach ($this->menuEntries as $entry) { - if ($entry == $id) { - $this->yPositions[$id] = $pos->getY(); + if ($entry->getId() == $id) { return $pos; } $pos->setY($pos->getY() - $itemSize * $itemMarginFactor); @@ -123,62 +115,73 @@ class SidebarMenuManager implements UsageInformationAble, CallbackListener { * Get the associated position with getEntryPosition($id) * * @api - * @param SidebarMenuEntryRenderable $render - * @param $order - * @param $id + * @param $order + * @param $id + * @param \ManiaControl\Manialinks\SidebarMenuEntryListener $listener + * @param $renderMethod * @return bool */ - public function addMenuEntry(SidebarMenuEntryRenderable $render, $order, $id) { + public function addMenuEntry($order, $id, SidebarMenuEntryListener $listener, $renderMethod) { + if ((!is_string($renderMethod) || !method_exists($listener, $renderMethod)) && !is_callable($renderMethod)) { + trigger_error("Given Listener (" . get_class($listener) . ") can't handle Timer Callback (No Method '{$renderMethod}')!"); + return false; + } + if (isset($this->menuEntries[$order])) { - if ($this->menuEntries[$order] != $id) { - return $this->addMenuEntry($render, $order + 1, $id); + if ($this->menuEntries[$order]->getId() != $id) { + return $this->addMenuEntry($order + 1, $id, $listener, $renderMethod); } } - $this->menuEntries[$order] = $id; - $this->yPositions = array(); + + $entry = new SidebarMenuEntry($listener, $renderMethod); + $entry->setId($id); + + $this->menuEntries[$order] = $entry; ksort($this->menuEntries); - - $registered = false; - foreach ($this->registeredClasses as $class) { - $class->renderMenuEntry(); - if ($class == $render) { - $registered = true; - } - } - - if (!$registered) { - array_push($this->registeredClasses, $render); - $render->renderMenuEntry(); - } + $this->updateMenuEntries(); return true; } + /** + * Call all user functions + */ + private function updateMenuEntries() { + foreach ($this->menuEntries as $listening) { + + // Call the User Function + $listening->triggerCallback(); + } + } + /** * @api - * @param SidebarMenuEntryRenderable $render + * @param SidebarMenuEntryListener $listener * @param $id - * @param bool $unregisterClass */ - public function deleteMenuEntry(SidebarMenuEntryRenderable $render, $id, $unregisterClass = false) { + public function deleteMenuEntry(SidebarMenuEntryListener $listener, $id) { foreach ($this->menuEntries as $k => $entry) { - if ($entry == $id) { + if ($entry->getId() == $id) { + unset($this->menuEntries[$k]); + } + } + $this->updateMenuEntries(); + } + + /** + * @api + * @param \ManiaControl\Manialinks\SidebarMenuEntryListener $listener + */ + public function deleteMenuEntries(SidebarMenuEntryListener $listener) { + foreach ($this->menuEntries as $k => $entry) { + if ($entry->listener == $listener) { unset($this->menuEntries[$k]); - $this->yPositions = array(); } } - foreach ($this->registeredClasses as $k => $class) { - if ($class == $render && $unregisterClass) { - unset($this->registeredClasses[$k]); - }else{ - $class->renderMenuEntry(); - } - } - - + $this->updateMenuEntries(); } } \ No newline at end of file diff --git a/core/Players/PlayerManager.php b/core/Players/PlayerManager.php index a486b6ea..72d46b94 100644 --- a/core/Players/PlayerManager.php +++ b/core/Players/PlayerManager.php @@ -564,12 +564,23 @@ class PlayerManager implements CallbackListener, TimerListener, CommunicationLis } /** - * Get all Players + * Get all Players with or without spectators * * @api - * @return Player[] + * @param bool $withoutSpectators + * @return \ManiaControl\Players\Player[] */ - public function getPlayers() { + public function getPlayers($withoutSpectators = false) { + if($withoutSpectators){ + $players = array(); + foreach($this->players as $player){ + if(!$player->isSpectator){ + $players[] = $players; + } + } + + return $players; + } return $this->players; } diff --git a/core/Plugins/PluginManager.php b/core/Plugins/PluginManager.php index 1549fc50..69d9b3f6 100644 --- a/core/Plugins/PluginManager.php +++ b/core/Plugins/PluginManager.php @@ -11,6 +11,7 @@ use ManiaControl\Files\FileUtil; use ManiaControl\Logger; use ManiaControl\ManiaControl; use ManiaControl\Manialinks\ManialinkPageAnswerListener; +use ManiaControl\Manialinks\SidebarMenuEntryListener; use ManiaControl\Update\PluginUpdateManager; use ManiaControl\Utils\ClassUtil; use ReflectionClass; @@ -186,6 +187,9 @@ class PluginManager { if ($plugin instanceof TimerListener) { $this->maniaControl->getTimerManager()->unregisterTimerListenings($plugin); } + if($plugin instanceof SidebarMenuEntryListener){ + $this->maniaControl->getManialinkManager()->getSidebarMenuManager()->deleteMenuEntries($plugin); + } $this->savePluginStatus($pluginClass, false); diff --git a/plugins/MCTeam/CustomVotesPlugin.php b/plugins/MCTeam/CustomVotesPlugin.php index 54d55634..c3fab596 100644 --- a/plugins/MCTeam/CustomVotesPlugin.php +++ b/plugins/MCTeam/CustomVotesPlugin.php @@ -24,7 +24,7 @@ use ManiaControl\Commands\CommandListener; use ManiaControl\ManiaControl; use ManiaControl\Manialinks\ManialinkManager; use ManiaControl\Manialinks\ManialinkPageAnswerListener; -use ManiaControl\Manialinks\SidebarMenuEntryRenderable; +use ManiaControl\Manialinks\SidebarMenuEntryListener; use ManiaControl\Manialinks\SidebarMenuManager; use ManiaControl\Players\Player; use ManiaControl\Players\PlayerManager; @@ -47,7 +47,7 @@ use Maniaplanet\DedicatedServer\Xmlrpc\GameModeException; * @copyright 2014-2017 ManiaControl Team * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 */ -class CustomVotesPlugin implements SidebarMenuEntryRenderable, CommandListener, CallbackListener, ManialinkPageAnswerListener, TimerListener, Plugin { +class CustomVotesPlugin implements SidebarMenuEntryListener, CommandListener, CallbackListener, ManialinkPageAnswerListener, TimerListener, Plugin { /* * Constants */ @@ -162,8 +162,7 @@ class CustomVotesPlugin implements SidebarMenuEntryRenderable, CommandListener, $this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_SPECTATOR_ALLOW_START_VOTE, true); $this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_VOTE_TIME, 40); - $this->maniaControl->getManialinkManager()->getSidebarMenuManager()->addMenuEntry($this, SidebarMenuManager::ORDER_PLAYER_MENU + 5, self::CUSTOMVOTES_MENU_ID); - + $this->maniaControl->getManialinkManager()->getSidebarMenuManager()->addMenuEntry(SidebarMenuManager::ORDER_PLAYER_MENU + 5, self::CUSTOMVOTES_MENU_ID,$this,'showIcon'); //Define Votes $this->defineVote("teambalance", "Vote for Team Balance"); $this->defineVote("skipmap", "Vote for Skip Map")->setStopCallback(Callbacks::ENDMAP); @@ -268,7 +267,7 @@ class CustomVotesPlugin implements SidebarMenuEntryRenderable, CommandListener, * * @param bool $login */ - private function showIcon($login = false) { + public function showIcon($login = false) { $pos = $this->maniaControl->getManialinkManager()->getSidebarMenuManager()->getEntryPosition(self::CUSTOMVOTES_MENU_ID); $width = $this->maniaControl->getSettingManager()->getSettingValue($this->maniaControl->getManialinkManager()->getSidebarMenuManager(), SidebarMenuManager::SETTING_MENU_ITEMSIZE); $quadStyle = $this->maniaControl->getManialinkManager()->getStyleManager()->getDefaultQuadStyle(); @@ -372,7 +371,6 @@ class CustomVotesPlugin implements SidebarMenuEntryRenderable, CommandListener, $this->destroyVote(); $this->maniaControl->getManialinkManager()->hideManialink(self::MLID_ICON); - $this->maniaControl->getManialinkManager()->getSidebarMenuManager()->deleteMenuEntry($this, self::CUSTOMVOTES_MENU_ID, true); } /** @@ -799,13 +797,6 @@ class CustomVotesPlugin implements SidebarMenuEntryRenderable, CommandListener, $this->constructMenu(); } - - /** - * Call here the function which updates the MenuIcon Manialink - */ - public function renderMenuEntry() { - $this->showIcon(); - } } /** diff --git a/plugins/MCTeam/DonationPlugin.php b/plugins/MCTeam/DonationPlugin.php index 5e41dd13..7fac4f74 100644 --- a/plugins/MCTeam/DonationPlugin.php +++ b/plugins/MCTeam/DonationPlugin.php @@ -19,7 +19,7 @@ use ManiaControl\Commands\CommandListener; use ManiaControl\ManiaControl; use ManiaControl\Manialinks\LabelLine; use ManiaControl\Manialinks\ManialinkManager; -use ManiaControl\Manialinks\SidebarMenuEntryRenderable; +use ManiaControl\Manialinks\SidebarMenuEntryListener; use ManiaControl\Manialinks\SidebarMenuManager; use ManiaControl\Players\Player; use ManiaControl\Players\PlayerManager; @@ -32,7 +32,7 @@ use ManiaControl\Plugins\Plugin; * @copyright 2014-2017 ManiaControl Team * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 */ -class DonationPlugin implements CallbackListener, CommandListener, Plugin, SidebarMenuEntryRenderable { +class DonationPlugin implements CallbackListener, CommandListener, Plugin, SidebarMenuEntryListener { /* * Constants */ @@ -117,7 +117,7 @@ class DonationPlugin implements CallbackListener, CommandListener, Plugin, Sideb // Define player stats $this->maniaControl->getStatisticManager()->defineStatMetaData(self::STAT_PLAYER_DONATIONS); - $this->maniaControl->getManialinkManager()->getSidebarMenuManager()->addMenuEntry($this,SidebarMenuManager::ORDER_PLAYER_MENU, self::DONATIONPLUGIN_MENU_ID); + $this->maniaControl->getManialinkManager()->getSidebarMenuManager()->addMenuEntry(SidebarMenuManager::ORDER_PLAYER_MENU + 5,self::DONATIONPLUGIN_MENU_ID,$this,'displayDonateWidget'); $this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_DONATE_WIDGET_ACTIVATED, true); $this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_DONATION_VALUES, "20,50,100,500,1000,2000"); @@ -130,6 +130,7 @@ class DonationPlugin implements CallbackListener, CommandListener, Plugin, Sideb return true; } + /** * Display the widget */ @@ -234,7 +235,6 @@ class DonationPlugin implements CallbackListener, CommandListener, Plugin, Sideb */ public function unload() { $this->maniaControl->getManialinkManager()->hideManialink(self::MLID_DONATE_WIDGET); - $this->maniaControl->getManialinkManager()->getSidebarMenuManager()->deleteMenuEntry($this,self::DONATIONPLUGIN_MENU_ID,true); } /** @@ -531,8 +531,4 @@ class DonationPlugin implements CallbackListener, CommandListener, Plugin, Sideb // Render and display xml $this->maniaControl->getManialinkManager()->displayWidget($maniaLink, $player, 'TopDons'); } - - public function renderMenuEntry() { - $this->displayDonateWidget(); - } }