From 6d5062b61c8238ff9a06aa2b700639be3233a91b Mon Sep 17 00:00:00 2001 From: kremsy Date: Fri, 31 Jan 2014 15:41:01 +0100 Subject: [PATCH] statslist improvements --- application/core/Players/PlayerList.php | 10 +++++ .../core/Statistics/SimpleStatsList.php | 39 ++++++++++++++++++- .../core/Statistics/StatisticManager.php | 6 +++ 3 files changed, 53 insertions(+), 2 deletions(-) diff --git a/application/core/Players/PlayerList.php b/application/core/Players/PlayerList.php index 2e9ee449..9bfda355 100644 --- a/application/core/Players/PlayerList.php +++ b/application/core/Players/PlayerList.php @@ -163,6 +163,16 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener, Timer $playerFrame->setY($y); + //Show current Player Arrow + if ($listPlayer->index == $player->index) { + $currentQuad = new Quad_Icons64x64_1(); + $playerFrame->add($currentQuad); + $currentQuad->setX($x + 3.5); + $currentQuad->setZ(0.2); + $currentQuad->setSize(4, 4); + $currentQuad->setSubStyle($currentQuad::SUBSTYLE_ArrowBlue); + } + // Team Emblem if ($listPlayer->teamId >= 0) { // Player is in a Team diff --git a/application/core/Statistics/SimpleStatsList.php b/application/core/Statistics/SimpleStatsList.php index 47dbdbb4..528400f7 100644 --- a/application/core/Statistics/SimpleStatsList.php +++ b/application/core/Statistics/SimpleStatsList.php @@ -28,6 +28,7 @@ class SimpleStatsList implements ManialinkPageAnswerListener, CallbackListener, * Constants */ const ACTION_OPEN_STATSLIST = 'SimpleStatsList.OpenStatsList'; + const ACTION_SORT_STATS = 'SimpleStatsList.SortStats'; /** * Private Properties @@ -44,6 +45,7 @@ class SimpleStatsList implements ManialinkPageAnswerListener, CallbackListener, public function __construct(ManiaControl $maniaControl) { $this->maniaControl = $maniaControl; + $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MP_PLAYERMANIALINKPAGEANSWER, $this, 'handleManialinkPageAnswer'); $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MC_ONINIT, $this, 'handleOnInit'); } @@ -173,6 +175,8 @@ class SimpleStatsList implements ManialinkPageAnswerListener, CallbackListener, //Description Label $i = 2; foreach($this->statArray as $statArray) { + /** @var Label_Text $labels [] */ + $labels[$i]->setAction(self::ACTION_SORT_STATS . '.' . $statArray["Name"]); $script->addTooltip($labels[$i], $descriptionLabel, array(Script::OPTION_TOOLTIP_TEXT => '$o ' . $statArray["Name"])); $i++; } @@ -191,11 +195,19 @@ class SimpleStatsList implements ManialinkPageAnswerListener, CallbackListener, break; } - /** @var Player $listPlayer * */ - $playerFrame = new Frame(); $frame->add($playerFrame); + //Show current Player Arrow + if ($playerId == $player->index) { + $currentQuad = new Quad_Icons64x64_1(); + $playerFrame->add($currentQuad); + $currentQuad->setX($xStart + 3.5); + $currentQuad->setZ(0.2); + $currentQuad->setSize(4, 4); + $currentQuad->setSubStyle($currentQuad::SUBSTYLE_ArrowBlue); + } + $displayArray = array(); foreach($this->statArray as $stat) { @@ -249,4 +261,27 @@ class SimpleStatsList implements ManialinkPageAnswerListener, CallbackListener, // Render and display xml $this->maniaControl->manialinkManager->displayWidget($maniaLink, $player, 'SimpleStatsList'); } + + /** + * Called on ManialinkPageAnswer + * + * @param array $callback + */ + public function handleManialinkPageAnswer(array $callback) { + $actionId = $callback[1][2]; + $actionArray = explode('.', $actionId, 3); + if (count($actionArray) <= 2) { + return; + } + + $action = $actionArray[0] . "." . $actionArray[1]; + + switch($action) { + case self::ACTION_SORT_STATS: + $playerLogin = $callback[1][1]; + $player = $this->maniaControl->playerManager->getPlayer($playerLogin); + $this->showStatsList($player, $actionArray[2]); + break; + } + } } \ No newline at end of file diff --git a/application/core/Statistics/StatisticManager.php b/application/core/Statistics/StatisticManager.php index 7c11aeb5..6590eed8 100644 --- a/application/core/Statistics/StatisticManager.php +++ b/application/core/Statistics/StatisticManager.php @@ -150,6 +150,7 @@ class StatisticManager { } $statsArray[$key] = intval($kills[$key]) / intval($death); } + arsort($statsArray); break; case self::SPECIAL_STAT_HITS_PH: $hits = $this->getStatsRanking(StatisticCollector::STAT_ON_HIT, $serverIndex); @@ -160,6 +161,7 @@ class StatisticManager { } $statsArray[$key] = intval($hits[$key]) / (intval($time) / 3600); } + arsort($statsArray); break; case self::SPECIAL_STAT_ARROW_ACC: $hits = $this->getStatsRanking(StatisticCollector::STAT_ARROW_HIT, $serverIndex); @@ -170,6 +172,7 @@ class StatisticManager { } $statsArray[$key] = intval($hits[$key]) / (intval($shot)); } + arsort($statsArray); break; case self::SPECIAL_STAT_LASER_ACC: $hits = $this->getStatsRanking(StatisticCollector::STAT_LASER_HIT, $serverIndex); @@ -180,6 +183,7 @@ class StatisticManager { } $statsArray[$key] = intval($hits[$key]) / (intval($shot)); } + arsort($statsArray); break; case self::SPECIAL_STAT_ROCKET_ACC: $hits = $this->getStatsRanking(StatisticCollector::STAT_ROCKET_HIT, $serverIndex); @@ -190,6 +194,7 @@ class StatisticManager { } $statsArray[$key] = intval($hits[$key]) / (intval($shot)); } + arsort($statsArray); break; case self::SPECIAL_STAT_NUCLEUS_ACC: $hits = $this->getStatsRanking(StatisticCollector::STAT_NUCLEUS_HIT, $serverIndex); @@ -200,6 +205,7 @@ class StatisticManager { } $statsArray[$key] = intval($hits[$key]) / (intval($shot)); } + arsort($statsArray); break; } return $statsArray;