From 019ab9ccdd0f0d57bd16885cb980648da8f4db52 Mon Sep 17 00:00:00 2001 From: kremsy Date: Thu, 2 Jan 2014 18:06:27 +0100 Subject: [PATCH] added donation icon --- application/core/Admin/ActionsMenu.php | 42 ----------- application/plugins/Donations.php | 96 +++++++++++++++++++++++++- 2 files changed, 94 insertions(+), 44 deletions(-) diff --git a/application/core/Admin/ActionsMenu.php b/application/core/Admin/ActionsMenu.php index 16edfbb1..7dd2606b 100644 --- a/application/core/Admin/ActionsMenu.php +++ b/application/core/Admin/ActionsMenu.php @@ -221,48 +221,6 @@ class ActionsMenu implements CallbackListener, ManialinkPageAnswerListener { return $manialink; } - private function playerMenuManialink(Player $player) { - - $posX = $this->maniaControl->settingManager->getSetting($this, self::SETTING_MENU_POSX); - $posY = $this->maniaControl->settingManager->getSetting($this, self::SETTING_MENU_POSY); - $itemSize = $this->maniaControl->settingManager->getSetting($this, self::SETTING_MENU_ITEMSIZE); - $quadStyle = $this->maniaControl->manialinkManager->styleManager->getDefaultQuadStyle(); - $quadSubstyle = $this->maniaControl->manialinkManager->styleManager->getDefaultQuadSubstyle(); - - $itemCount = count($this->playerMenuItems); - - $manialink = new ManiaLink(self::MLID_MENU); - $itemMarginFactorX = 1.3; - $itemMarginFactorY = 1.2; - - $frame = new Frame(); - $manialink->add($frame); - $frame->setPosition($posX, $posY); - - $backgroundQuad = new Quad(); - $frame->add($backgroundQuad); - $backgroundQuad->setSize($itemCount * $itemSize * $itemMarginFactorX, $itemSize * $itemMarginFactorY); - $backgroundQuad->setStyles($quadStyle, $quadSubstyle); - - $itemsFrame = new Frame(); - $frame->add($itemsFrame); - - // Add items - $x = 0.5 * $itemSize * $itemMarginFactorX; - foreach($this->menuItems as $menuItems) { - foreach($menuItems as $menuItem) { - $menuItem->setSize($itemSize, $itemSize); - $itemsFrame->add($menuItem); - - $x += $itemSize * $itemMarginFactorX; - } - } - - $maniaLinkText = $manialink->render()->saveXML(); - $this->maniaControl->manialinkManager->sendManialink($maniaLinkText, $player->login); - - } - private function buildMenuIconsManialink2() { $posX = $this->maniaControl->settingManager->getSetting($this, self::SETTING_MENU_POSX); $posY = $this->maniaControl->settingManager->getSetting($this, self::SETTING_MENU_POSY); diff --git a/application/plugins/Donations.php b/application/plugins/Donations.php index d2611681..8c4cf1e5 100644 --- a/application/plugins/Donations.php +++ b/application/plugins/Donations.php @@ -1,4 +1,9 @@ maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MP_BILLUPDATED, $this, 'handleBillUpdated'); + $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MC_ONINIT, $this, 'handleOnInit'); + $this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERJOINED, $this, 'handlePlayerConnect'); // Define player stats $this->maniaControl->statisticManager->defineStatMetaData(self::STAT_PLAYER_DONATIONS); + + $this->maniaControl->settingManager->initSetting($this, self::SETTING_DONATE_WIDGET_ACTIVATED, true); + $this->maniaControl->settingManager->initSetting($this, self::SETTING_DONATE_WIDGET_POSX, 156.); + $this->maniaControl->settingManager->initSetting($this, self::SETTING_DONATE_WIDGET_POSY, -51.4); + $this->maniaControl->settingManager->initSetting($this, self::SETTING_DONATE_WIDGET_WIDTH, 6); + $this->maniaControl->settingManager->initSetting($this, self::SETTING_DONATE_WIDGET_HEIGHT, 6); + return true; } @@ -98,6 +120,76 @@ class DonationPlugin implements CallbackListener, CommandListener, Plugin { return 'Plugin offering commands like /donate, /pay and /getplanets and a donation widget.'; } + /** + * Handle ManiaControl OnInit callback + * + * @param array $callback + */ + public function handleOnInit(array $callback) { + if($this->maniaControl->settingManager->getSetting($this, self::SETTING_DONATE_WIDGET_ACTIVATED)) { + $this->displayDonateWidget(); + } + } + + /** + * Handle PlayerConnect callback + * + * @param array $callback + */ + public function handlePlayerConnect(array $callback) { + $player = $callback[1]; + // Display Map Widget + if($this->maniaControl->settingManager->getSetting($this, self::SETTING_DONATE_WIDGET_ACTIVATED)) { + $this->displayDonateWidget($player->login); + } + } + + /** + * Displays the Donate Widget + * + * @param bool $login + */ + public function displayDonateWidget($login = false) { + $posX = $this->maniaControl->settingManager->getSetting($this, self::SETTING_DONATE_WIDGET_POSX); + $posY = $this->maniaControl->settingManager->getSetting($this, self::SETTING_DONATE_WIDGET_POSY); + $width = $this->maniaControl->settingManager->getSetting($this, self::SETTING_DONATE_WIDGET_WIDTH); + $height = $this->maniaControl->settingManager->getSetting($this, self::SETTING_DONATE_WIDGET_HEIGHT); + $quadStyle = $this->maniaControl->manialinkManager->styleManager->getDefaultQuadStyle(); + $quadSubstyle = $this->maniaControl->manialinkManager->styleManager->getDefaultQuadSubstyle(); + $itemMarginFactorX = 1.3; + $itemMarginFactorY = 1.2; + + $itemSize = $width; + + $maniaLink = new ManiaLink(self::MLID_DONATE_WIDGET); + + $script = new Script(); + $maniaLink->setScript($script); + + //Donate Menu Icon Frame + $frame = new Frame(); + $maniaLink->add($frame); + $frame->setPosition($posX, $posY); + + $backgroundQuad = new Quad(); + $frame->add($backgroundQuad); + $backgroundQuad->setSize($width * $itemMarginFactorX, $height * $itemMarginFactorY); + $backgroundQuad->setStyles($quadStyle, $quadSubstyle); + + $iconFrame = new Frame(); + $frame->add($iconFrame); + + $iconFrame->setSize($itemSize, $itemSize); + $itemQuad = new Quad_Icons128x128_1(); + $itemQuad->setSubStyle($itemQuad::SUBSTYLE_Coppers); + $itemQuad->setSize($itemSize, $itemSize); + $iconFrame->add($itemQuad); + + // Send manialink + $manialinkText = $maniaLink->render()->saveXML(); + $this->maniaControl->manialinkManager->sendManialink($manialinkText, $login); + } + /** * Handle /donate command * @@ -218,7 +310,7 @@ class DonationPlugin implements CallbackListener, CommandListener, Plugin { $amount = $billData[3]; if($donation) { $player = $this->maniaControl->playerManager->getPlayer($login); - + // Donation if(strlen($receiver) > 0) { // To player