From a286655da54bc5be4fd18d7cfb4ec283adcbd570 Mon Sep 17 00:00:00 2001 From: kremsy Date: Tue, 14 Jan 2014 20:35:31 +0100 Subject: [PATCH] nextmap command --- application/core/Maps/MapCommands.php | 24 ++++++++++++++++++++++++ application/core/Maps/MapQueue.php | 14 ++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/application/core/Maps/MapCommands.php b/application/core/Maps/MapCommands.php index c95f19c3..8977adf7 100644 --- a/application/core/Maps/MapCommands.php +++ b/application/core/Maps/MapCommands.php @@ -49,6 +49,7 @@ class MapCommands implements CommandListener, ManialinkPageAnswerListener, Callb $this->maniaControl->commandManager->registerCommandListener(array('shufflemaps', 'shuffle'), $this, 'command_ShuffleMaps', true); // Register for player chat commands + $this->maniaControl->commandManager->registerCommandListener('nextmap', $this, 'command_showNextMap'); $this->maniaControl->commandManager->registerCommandListener(array('maps', 'list'), $this, 'command_List'); $this->maniaControl->commandManager->registerCommandListener(array('xmaps', 'xlist'), $this, 'command_xList'); @@ -89,6 +90,29 @@ class MapCommands implements CommandListener, ManialinkPageAnswerListener, Callb $this->maniaControl->actionsMenu->addAdminMenuItem($itemQuad, 2, 'Skip Map'); } + /** + * Shows which map is the next + * + * @param array $chat + * @param Player $player + */ + public function command_ShowNextMap(array $chat, Player $player) { + $nextQueued = $this->maniaControl->mapManager->mapQueue->getNextQueuedMap(); + if($nextQueued != null) { + /** @var Player $requester */ + $requester = $nextQueued[0]; + /** @var Map $map */ + $map = $nextQueued[1]; + $this->maniaControl->chat->sendInformation("Next map is $<" . $map->name . "$> from $<" . $map->authorNick . "$> requested by $<" . $requester->nickname . "$>.", $player->login); + } else { + $this->maniaControl->client->query('GetNextMapIndex'); + $mapIndex = $this->maniaControl->client->getResponse(); + $maps = $this->maniaControl->mapManager->getMaps(); + $map = $maps[$mapIndex]; + $this->maniaControl->chat->sendInformation("Next map is $<" . $map->name . "$> from $<" . $map->authorNick . "$>.", $player->login); + } + } + /** * Handle removemap command * diff --git a/application/core/Maps/MapQueue.php b/application/core/Maps/MapQueue.php index 451700da..9582d96a 100644 --- a/application/core/Maps/MapQueue.php +++ b/application/core/Maps/MapQueue.php @@ -169,6 +169,20 @@ class MapQueue implements CallbackListener, CommandListener { return $this->nextMap; } + + /** + * Returns the first Queued Map + * + * @return array(Player $player, Map $map) + */ + public function getNextQueuedMap() { + foreach($this->queuedMaps as $queuedMap) { + //return the first Queued Map + return $queuedMap; + } + return null; + } + /** * Returns a list with the indexes of the queued maps *