From 4647299ec89bd2364178a531a3b1a45db352988d Mon Sep 17 00:00:00 2001 From: kremsy Date: Fri, 4 Jul 2014 18:25:09 +0200 Subject: [PATCH] adding check if the mode uses warmup to add the buttons in the menu --- application/core/Admin/ActionsMenu.php | 12 ++++-- .../core/Callbacks/ShootManiaCallbacks.php | 3 ++ application/core/Server/ServerCommands.php | 43 +++++++++++++------ 3 files changed, 42 insertions(+), 16 deletions(-) diff --git a/application/core/Admin/ActionsMenu.php b/application/core/Admin/ActionsMenu.php index a60ee1f8..ed053f6e 100644 --- a/application/core/Admin/ActionsMenu.php +++ b/application/core/Admin/ActionsMenu.php @@ -123,7 +123,9 @@ class ActionsMenu implements CallbackListener, ManialinkPageAnswerListener { $itemMarginFactorY = 1.2; // If game is shootmania lower the icons position by 20 - if ($this->maniaControl->mapManager->getCurrentMap()->getGame() === 'sm') { + if ($this->maniaControl->mapManager->getCurrentMap() + ->getGame() === 'sm' + ) { $posY -= $shootManiaOffset; } @@ -284,9 +286,13 @@ class ActionsMenu implements CallbackListener, ManialinkPageAnswerListener { */ public function removeMenuItem($order, $playerAction = true) { if ($playerAction) { - unset($this->playerMenuItems[$order]); + if ($this->playerMenuItems[$order]) { + unset($this->playerMenuItems[$order]); + } } else { - unset($this->adminMenuItems[$order]); + if ($this->playerMenuItems[$order]) { + unset($this->adminMenuItems[$order]); + } } $this->rebuildAndShowMenu(); } diff --git a/application/core/Callbacks/ShootManiaCallbacks.php b/application/core/Callbacks/ShootManiaCallbacks.php index a925cd90..32461e4c 100644 --- a/application/core/Callbacks/ShootManiaCallbacks.php +++ b/application/core/Callbacks/ShootManiaCallbacks.php @@ -56,6 +56,9 @@ class ShootManiaCallbacks implements CallbackListener { case 'LibAFK_IsAFK': $this->triggerAfkStatus($data[0]); break; + case 'WarmUp_Status': + $this->maniaControl->callbackManager->triggerCallback(Callbacks::WARMUPSTATUS, $data[0]); + break; case self::CB_TIMEATTACK_ONCHECKPOINT: $this->handleTimeAttackOnCheckpoint($name, $data); break; diff --git a/application/core/Server/ServerCommands.php b/application/core/Server/ServerCommands.php index 6f0c5c91..5c50dff7 100644 --- a/application/core/Server/ServerCommands.php +++ b/application/core/Server/ServerCommands.php @@ -56,6 +56,8 @@ class ServerCommands implements CallbackListener, CommandListener, ManialinkPage // Register for callbacks $this->maniaControl->timerManager->registerTimerListening($this, 'each5Seconds', 5000); $this->maniaControl->callbackManager->registerCallbackListener(Callbacks::ONINIT, $this, 'handleOnInit'); + $this->maniaControl->callbackManager->registerCallbackListener(Callbacks::WARMUPSTATUS, $this, 'handleWarmUpStatus'); + // Register for commands $this->maniaControl->commandManager->registerCommandListener('setservername', $this, 'command_SetServerName', true, 'Sets the ServerName.'); @@ -82,19 +84,9 @@ class ServerCommands implements CallbackListener, CommandListener, ManialinkPage $this->maniaControl->authenticationManager->definePermissionLevel(self::SETTING_PERMISSION_CANCEL_VOTE, AuthenticationManager::AUTH_LEVEL_MODERATOR); $this->maniaControl->authenticationManager->definePermissionLevel(self::SETTING_PERMISSION_HANDLE_WARMUP, AuthenticationManager::AUTH_LEVEL_MODERATOR); - // Extend WarmUp - $this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_EXTEND_WARMUP, $this, 'command_extendWarmup'); - $itemQuad = new Quad_BgRaceScore2(); - $itemQuad->setSubStyle($itemQuad::SUBSTYLE_SendScore); - $itemQuad->setAction(self::ACTION_EXTEND_WARMUP); - $this->maniaControl->actionsMenu->addMenuItem($itemQuad, false, 14, 'Extend Warmup'); - - // Stop WarmUp - $this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_END_WARMUP, $this, 'command_endWarmup'); - $itemQuad = new Quad_Icons64x64_1(); - $itemQuad->setSubStyle($itemQuad::SUBSTYLE_ArrowGreen); - $itemQuad->setAction(self::ACTION_END_WARMUP); - $this->maniaControl->actionsMenu->addMenuItem($itemQuad, false, 15, 'End Warmup'); + //Check if there is WarmUp Enabled in this Mode + //TODO handle the Modescriptevents + answer by an own callback class (answer via closure or dunno) + $this->maniaControl->client->triggerModeScriptEvent("WarmUp_GetStatus"); // Action cancel Vote $this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_CANCEL_VOTE, $this, 'command_cancelVote'); @@ -126,6 +118,31 @@ class ServerCommands implements CallbackListener, CommandListener, ManialinkPage } } + /** + * Handeling the WarmupStatus Callback, and removes or adds the Menu Items for extending / Stopping warmup + * + * @param $warmupEnabled + */ + public function handleWarmUpStatus($warmupEnabled) { + if ($warmupEnabled) { + // Extend WarmUp + $this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_EXTEND_WARMUP, $this, 'command_extendWarmup'); + $itemQuad = new Quad_BgRaceScore2(); + $itemQuad->setSubStyle($itemQuad::SUBSTYLE_SendScore); + $itemQuad->setAction(self::ACTION_EXTEND_WARMUP); + $this->maniaControl->actionsMenu->addMenuItem($itemQuad, false, 14, 'Extend Warmup'); + + // Stop WarmUp + $this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_END_WARMUP, $this, 'command_endWarmup'); + $itemQuad = new Quad_Icons64x64_1(); + $itemQuad->setSubStyle($itemQuad::SUBSTYLE_ArrowGreen); + $itemQuad->setAction(self::ACTION_END_WARMUP); + $this->maniaControl->actionsMenu->addMenuItem($itemQuad, false, 15, 'End Warmup'); + } else { + $this->maniaControl->actionsMenu->removeMenuItem(14, false); + $this->maniaControl->actionsMenu->removeMenuItem(15, false); + } + } /** * Handle //cancelvote command