From 9f809ec9d3e80590a5340f7e9628bd14b62a6fcf Mon Sep 17 00:00:00 2001 From: kremsy Date: Thu, 4 Jun 2015 00:23:29 +0200 Subject: [PATCH] new good solution for labelline issues --- core/Admin/AdminLists.php | 6 +-- core/Manialinks/ManialinkManager.php | 68 ++++++++++++++++++---------- core/Players/PlayerList.php | 8 ++-- plugins/MCTeam/DonationPlugin.php | 7 ++- 4 files changed, 57 insertions(+), 32 deletions(-) diff --git a/core/Admin/AdminLists.php b/core/Admin/AdminLists.php index ff144ad2..3266a384 100644 --- a/core/Admin/AdminLists.php +++ b/core/Admin/AdminLists.php @@ -133,9 +133,9 @@ class AdminLists implements ManialinkPageAnswerListener, CallbackListener { $lineQuad->setZ(0.001); } - $array = array($index => $posX + 5, $admin->nickname => $posX + 18, $admin->login => $posX + 70); - $this->maniaControl->getManialinkManager()->labelLine($playerFrame, $array); - + $positions = array($posX + 5, $posX + 18, $posX + 70); + $texts = array($index, $admin->nickname, $admin->login); + $this->maniaControl->getManialinkManager()->labelLine($playerFrame, array($positions, $texts)); // Level Quad $rightQuad = new Quad_BgRaceScore2(); diff --git a/core/Manialinks/ManialinkManager.php b/core/Manialinks/ManialinkManager.php index 23e91741..1261d6cd 100644 --- a/core/Manialinks/ManialinkManager.php +++ b/core/Manialinks/ManialinkManager.php @@ -352,15 +352,15 @@ class ManialinkManager implements ManialinkPageAnswerListener, CallbackListener /** * Adds a line of labels - * NOTE ALWAYS SET posIsKey Manually to true + * LabelLine should be an array with the following structure: array(array(positions), array(texts)) + * or array($text1 => $pos1, $text2 => $pos2 ...) * - * @param Frame $frame - * @param array $labelStrings if(posIsKey) array($pos => $value) - * @param array $properties - * @param boolean $posIsKey + * @param Frame $frame + * @param array $labelStrings + * @param array $properties * @return Label_Text[] */ - public function labelLine(Frame $frame, array $labelStrings, array $properties = array(), $posIsKey = false) { + public function labelLine(Frame $frame, array $labelStrings, array $properties = array()) { // define standard properties $hAlign = (isset($properties['hAlign']) ? $properties['hAlign'] : Control::LEFT); $style = (isset($properties['style']) ? $properties['style'] : Label_Text::STYLE_TextCardSmall); @@ -369,29 +369,49 @@ class ManialinkManager implements ManialinkPageAnswerListener, CallbackListener $profile = (isset($properties['profile']) ? $properties['profile'] : false); $labels = array(); - foreach ($labelStrings as $key => $value) { - if ($posIsKey) { - $x = $key; - $text = $value; - } else { - $x = $value; - $text = $key; + + //If you call LabelLine with array(array(positions), array(texts)) + if (count($labelStrings) == 2 && array_key_exists(0, $labelStrings) && array_key_exists(1, $labelStrings) && array_key_exists(0, $labelStrings[0]) && array_key_exists(0, $labelStrings[1])) { + $positions = $labelStrings[0]; + $texts = $labelStrings[1]; + + if (count($positions) != count($texts)) { + trigger_error("LabelLine Position length is not equal to Text Length", E_USER_ERROR); } - $label = new Label_Text(); - $frame->add($label); - $label->setHAlign($hAlign); - $label->setX($x); - $label->setStyle($style); - $label->setTextSize($textSize); - $label->setText($text); - $label->setTextColor($textColor); + foreach ($positions as $key => $x) { + $label = new Label_Text(); + $frame->add($label); + $label->setHAlign($hAlign); + $label->setX($x); + $label->setStyle($style); + $label->setTextSize($textSize); + $label->setText($texts[$key]); + $label->setTextColor($textColor); - if ($profile) { - $label->addPlayerProfileFeature($profile); + if ($profile) { + $label->addPlayerProfileFeature($profile); + } + + array_push($labels, $label); } + } else { + foreach ($labelStrings as $text => $x) { + $label = new Label_Text(); + $frame->add($label); + $label->setHAlign($hAlign); + $label->setX($x); + $label->setStyle($style); + $label->setTextSize($textSize); + $label->setText($text); + $label->setTextColor($textColor); - array_push($labels, $label); + if ($profile) { + $label->addPlayerProfileFeature($profile); + } + + array_push($labels, $label); + } } return $labels; diff --git a/core/Players/PlayerList.php b/core/Players/PlayerList.php index 7daf363b..253a01df 100644 --- a/core/Players/PlayerList.php +++ b/core/Players/PlayerList.php @@ -62,7 +62,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener, Timer * Private properties */ /** @var ManiaControl $maniaControl */ - private $maniaControl = null; + private $maniaControl = null; private $playersListShown = array(); /** @@ -163,6 +163,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener, Timer $headFrame = new Frame(); $frame->add($headFrame); $headFrame->setY($posY - 5); + $labelLineArray = array('Id' => $posX + 5, 'Nickname' => $posX + 18, 'Login' => $posX + 70, 'Location' => $posX + 101); if ($this->maniaControl->getAuthenticationManager()->checkRight($player, AuthenticationManager::AUTH_LEVEL_MODERATOR) ) { @@ -195,8 +196,9 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener, Timer $lineQuad->setZ(0.001); } - $array = array($index => $posX + 5, $listPlayer->nickname => $posX + 18, $listPlayer->login => $posX + 70, $path => $posX + 101); - $this->maniaControl->getManialinkManager()->labelLine($playerFrame, $array); + $positions = array($posX + 5, $posX + 18, $posX + 70, $posX + 101); + $texts = array($index, $listPlayer->nickname, $listPlayer->login, $path); + $this->maniaControl->getManialinkManager()->labelLine($playerFrame, array($positions, $texts)); $playerFrame->setY($posY); diff --git a/plugins/MCTeam/DonationPlugin.php b/plugins/MCTeam/DonationPlugin.php index 7dc8ab05..05cf24a7 100644 --- a/plugins/MCTeam/DonationPlugin.php +++ b/plugins/MCTeam/DonationPlugin.php @@ -281,6 +281,7 @@ class DonationPlugin implements CallbackListener, CommandListener, Plugin { return; } + //FIXME if you write "/donate 50 hallo" than comes Message: Donate to Hallo if (!$receiverName) { $serverName = $this->maniaControl->getClient()->getServerName(); $message = 'Donate ' . $amount . ' Planets to $<' . $serverName . '$>?'; @@ -519,8 +520,10 @@ class DonationPlugin implements CallbackListener, CommandListener, Plugin { } $donatingPlayer = $this->maniaControl->getPlayerManager()->getPlayerByIndex($playerIndex); - $array = array($index => $posX + 5, $donatingPlayer->nickname => $posX + 18, $donatingPlayer->login => $posX + 70, $donations => $posX + 110); - $this->maniaControl->getManialinkManager()->labelLine($playerFrame, $array); + + $positions = array($posX + 5, $posX + 18, $posX + 70, $posX + 110); + $texts = array($index, $donatingPlayer->nickname, $donatingPlayer->login, $donations); + $this->maniaControl->getManialinkManager()->labelLine($playerFrame, array($positions, $texts)); $posY -= 4; $index++;