From d7348fd41204cf72f0ba7a26866284d34b4866d1 Mon Sep 17 00:00:00 2001 From: Jocy Date: Thu, 11 May 2017 20:02:09 +0200 Subject: [PATCH] Added SidebarMenuManager Fixed https://github.com/ManiaControl/ManiaControl/issues/97 --- core/Manialinks/SidebarMenuManager.php | 106 +++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 core/Manialinks/SidebarMenuManager.php diff --git a/core/Manialinks/SidebarMenuManager.php b/core/Manialinks/SidebarMenuManager.php new file mode 100644 index 00000000..9559125d --- /dev/null +++ b/core/Manialinks/SidebarMenuManager.php @@ -0,0 +1,106 @@ +maniaControl = $maniaControl; + $this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_SIDEBAR_POSX, 156); + $this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_SIDEBAR_POSY_SHOOTMANIA, -37); + $this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_SIDEBAR_POSY_TRACKMANIA, 17); + $this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_MENU_ITEMSIZE, 6); + + } + + public function addMenuEntry(SidebarMenuEntry $entry, $order) { + if (isset($this->menuEntries[$order])) { + $this->addMenuEntry($entry, $order + 1); + } + array_push($menuEntries, $entry); + ksort($this->menuEntries); + $this->updateManiaLink(); + } + + private function itemsBeforeAdmin() { + $count = 0; + foreach ($this->menuEntries as $key => $entry) { + if ($key < self::ADMIN_MENU_ORDER) { + $count++; + } + } + return $count; + } + + + private function updateManiaLink() { + $itemSize = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_MENU_ITEMSIZE); + $posX = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_SIDEBAR_POSX); + if ($this->maniaControl->getMapManager()->getCurrentMap()->getGame() === 'sm') { + $posY = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_SIDEBAR_POSY_SHOOTMANIA); + } else { + $posY = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_SIDEBAR_POSY_TRACKMANIA); + } + $quadStyle = $this->maniaControl->getManialinkManager()->getStyleManager()->getDefaultQuadStyle(); + $quadSubstyle = $this->maniaControl->getManialinkManager()->getStyleManager()->getDefaultQuadSubstyle(); + $itemMarginFactorX = 1.3; + $itemMarginFactorY = 1.2; + + //Calculate X relative to AdminMenu + $posX -= $itemSize * 1.05 * $this->itemsBeforeAdmin(); + + $maniaLink = new ManiaLink(self::SIDEBAR_MANIALINK_ID); + $frame = new Frame(); + $maniaLink->addChild($frame); + $frame->setZ(ManialinkManager::MAIN_MANIALINK_Z_VALUE); + $frame->setPosition($posX, $posY); + + $posX = 0; + /** @var SidebarMenuEntry $entry */ + foreach ($this->menuEntries as $entry) { + $iconFrame = new Frame(); + $frame->addChild($iconFrame); + $iconFrame->setX($posX); + + $background = new Quad(); + $frame->addChild($background); + $background->setStyles($quadStyle, $quadSubstyle); + $background->setSize($itemSize * $itemMarginFactorX, $itemSize * $itemMarginFactorY); + + $icon = $entry->getIcon(); + $frame->addChild($icon); + if($entry->getDescription()){ + + } + } + + + $this->maniaControl->getManialinkManager()->sendManialink($maniaLink); + } + +} \ No newline at end of file