From d208be32c88246007200e8308229719c74c8ac8d Mon Sep 17 00:00:00 2001 From: kremsy Date: Fri, 9 May 2014 12:14:25 +0200 Subject: [PATCH] cleanedup endMap / beginMap bugs --- .../core/Callbacks/CallbackManager.php | 6 ++-- .../Callbacks/LibXmlRpcCallbackManager.php | 4 +-- application/core/Maps/MapManager.php | 33 +++++++++++++------ 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/application/core/Callbacks/CallbackManager.php b/application/core/Callbacks/CallbackManager.php index 203b4406..c92fb6ce 100644 --- a/application/core/Callbacks/CallbackManager.php +++ b/application/core/Callbacks/CallbackManager.php @@ -185,10 +185,8 @@ class CallbackManager { $this->maniaControl->mapManager->handleBeginMap($callback); $this->triggerCallback($callbackName, $callback); break; - case 'ManiaPlanet.EndMatch': // TODO temporary fix - if ($this->maniaControl->mapManager->getCurrentMap()->getGame() == 'sm') { - $this->triggerCallback($callbackName, $callback); - } + case 'ManiaPlanet.EndMatch': + $this->triggerCallback($callbackName, $callback); break; case 'ManiaPlanet.EndMap': $this->maniaControl->mapManager->handleEndMap($callback); diff --git a/application/core/Callbacks/LibXmlRpcCallbackManager.php b/application/core/Callbacks/LibXmlRpcCallbackManager.php index eb941f1a..4ce196d4 100644 --- a/application/core/Callbacks/LibXmlRpcCallbackManager.php +++ b/application/core/Callbacks/LibXmlRpcCallbackManager.php @@ -45,7 +45,7 @@ class LibXmlRpcCallbackManager implements CallbackListener { break; case 'BeginMap': case 'LibXmlRpc_BeginMap': - $this->maniaControl->mapManager->handleScriptBeginMap($data[0]); + $this->maniaControl->mapManager->handleScriptBeginMap($data[1], $data[2]); break; case 'LibXmlRpc_BeginSubmatch': $this->maniaControl->callbackManager->triggerCallback(Callbacks::BEGINSUBMATCH, $data[0]); @@ -64,7 +64,7 @@ class LibXmlRpcCallbackManager implements CallbackListener { break; case 'EndMap': case 'LibXmlRpc_EndMap': - $this->maniaControl->mapManager->handleScriptEndMap($data[0]); + $this->maniaControl->mapManager->handleScriptEndMap($data[1]); break; case 'LibXmlRpc_EndMatch': $this->maniaControl->callbackManager->triggerCallback(Callbacks::ENDMATCH, $data[0]); diff --git a/application/core/Maps/MapManager.php b/application/core/Maps/MapManager.php index 6f9615b6..5d3b39cf 100644 --- a/application/core/Maps/MapManager.php +++ b/application/core/Maps/MapManager.php @@ -635,29 +635,33 @@ class MapManager implements CallbackListener { /** * Handle Script BeginMap callback * - * @param int $mapNumber + * @param $mapUid + * @param $restart */ - public function handleScriptBeginMap($mapNumber) { - $this->handleBeginMap(array()); + public function handleScriptBeginMap($mapUid, $restart) { + $this->beginMap($mapUid, $restart); } /** - * Handle BeginMap callback + * Manage the begin Of a Map * - * @param array $callback + * @param $uid + * @param bool $restart */ - public function handleBeginMap(array $callback) { + private function beginMap($uid, $restart = false) { + if ($restart) { + $this->handleEndMap(array()); + } + if ($this->mapBegan) { return; } $this->mapBegan = true; $this->mapEnded = false; - if (!isset($callback[1][0]["UId"])) { - $this->currentMap = $this->fetchCurrentMap(); - } else if (array_key_exists($callback[1][0]["UId"], $this->maps)) { + if (array_key_exists($uid, $this->maps)) { // Map already exists, only update index - $this->currentMap = $this->maps[$callback[1][0]["UId"]]; + $this->currentMap = $this->maps[$uid]; if (!$this->currentMap->nbCheckpoints || !$this->currentMap->nbLaps) { $rpcMap = $this->maniaControl->client->getCurrentMapInfo(); $this->currentMap->nbLaps = $rpcMap->nbLaps; @@ -677,6 +681,15 @@ class MapManager implements CallbackListener { $this->maniaControl->callbackManager->triggerCallback(Callbacks::BEGINMAP, $this->currentMap); } + /** + * Handle BeginMap callback + * + * @param array $callback + */ + public function handleBeginMap(array $callback) { + $this->beginMap($callback[1][0]["UId"]); + } + /** * Handle Script EndMap Callback *