SidebarMenuManager now uses the Position object instead of an array

This commit is contained in:
Jocy 2017-05-12 10:27:26 +02:00
parent 6be20432ba
commit 023581c195
4 changed files with 38 additions and 32 deletions

View File

@ -141,8 +141,8 @@ class ActionsMenu implements SidebarMenuEntryRenderable, CallbackListener, Mania
/** /**
* Builds the Manialink * Builds the Manialink
* *
* @param Player $player * @param bool $admin
* @return ManiaLink * @return \FML\ManiaLink
*/ */
private function buildMenuIconsManialink($admin = false) { private function buildMenuIconsManialink($admin = false) {
$adminPos = $this->maniaControl->getManialinkManager()->getSidebarMenuManager()->getEntryPosition(self::ADMIN_MENU_ID); $adminPos = $this->maniaControl->getManialinkManager()->getSidebarMenuManager()->getEntryPosition(self::ADMIN_MENU_ID);
@ -165,7 +165,7 @@ class ActionsMenu implements SidebarMenuEntryRenderable, CallbackListener, Mania
// Admin Menu Icon Frame // Admin Menu Icon Frame
$iconFrame = new Frame(); $iconFrame = new Frame();
$frame->addChild($iconFrame); $frame->addChild($iconFrame);
$iconFrame->setPosition($adminPos['x'], $adminPos['y']); $iconFrame->setPosition($adminPos->getX(), $adminPos->getY());
$backgroundQuad = new Quad(); $backgroundQuad = new Quad();
$iconFrame->addChild($backgroundQuad); $iconFrame->addChild($backgroundQuad);
@ -180,7 +180,7 @@ class ActionsMenu implements SidebarMenuEntryRenderable, CallbackListener, Mania
// Admin Menu Description // Admin Menu Description
$descriptionLabel = new Label(); $descriptionLabel = new Label();
$frame->addChild($descriptionLabel); $frame->addChild($descriptionLabel);
$descriptionLabel->setPosition($adminPos['x'] - count($this->adminMenuItems) * $itemSize * 1.05 - 5, $adminPos['y']); $descriptionLabel->setPosition($adminPos->getX() - count($this->adminMenuItems) * $itemSize * 1.05 - 5, $adminPos->getY());
$descriptionLabel->setAlign($descriptionLabel::RIGHT, $descriptionLabel::TOP); $descriptionLabel->setAlign($descriptionLabel::RIGHT, $descriptionLabel::TOP);
$descriptionLabel->setSize(40, 4); $descriptionLabel->setSize(40, 4);
$descriptionLabel->setTextSize(1.4); $descriptionLabel->setTextSize(1.4);
@ -189,7 +189,7 @@ class ActionsMenu implements SidebarMenuEntryRenderable, CallbackListener, Mania
// Admin Menu // Admin Menu
$popoutFrame = new Frame(); $popoutFrame = new Frame();
$frame->addChild($popoutFrame); $frame->addChild($popoutFrame);
$popoutFrame->setPosition($adminPos['x'] - $itemSize * 0.5, $adminPos['y']); $popoutFrame->setPosition($adminPos->getX() - $itemSize * 0.5, $adminPos->getY());
$popoutFrame->setHorizontalAlign($popoutFrame::RIGHT); $popoutFrame->setHorizontalAlign($popoutFrame::RIGHT);
$popoutFrame->setVisible(false); $popoutFrame->setVisible(false);
@ -228,7 +228,7 @@ class ActionsMenu implements SidebarMenuEntryRenderable, CallbackListener, Mania
// Player Menu Icon Frame // Player Menu Icon Frame
$iconFrame = new Frame(); $iconFrame = new Frame();
$frame->addChild($iconFrame); $frame->addChild($iconFrame);
$iconFrame->setPosition($playerPos['x'], $playerPos['y']); $iconFrame->setPosition($playerPos->getX(), $playerPos->getY());
$backgroundQuad = new Quad(); $backgroundQuad = new Quad();
$iconFrame->addChild($backgroundQuad); $iconFrame->addChild($backgroundQuad);
@ -243,7 +243,7 @@ class ActionsMenu implements SidebarMenuEntryRenderable, CallbackListener, Mania
// Player Menu Description // Player Menu Description
$descriptionLabel = new Label(); $descriptionLabel = new Label();
$frame->addChild($descriptionLabel); $frame->addChild($descriptionLabel);
$descriptionLabel->setPosition($playerPos['x'] - count($this->playerMenuItems) * $itemSize * 1.05 - 5, $playerPos['y']); $descriptionLabel->setPosition($playerPos->getX() - count($this->playerMenuItems) * $itemSize * 1.05 - 5, $playerPos->getY());
$descriptionLabel->setAlign($descriptionLabel::RIGHT, $descriptionLabel::TOP); $descriptionLabel->setAlign($descriptionLabel::RIGHT, $descriptionLabel::TOP);
$descriptionLabel->setSize(40, 4); $descriptionLabel->setSize(40, 4);
$descriptionLabel->setTextSize(1.4); $descriptionLabel->setTextSize(1.4);
@ -252,7 +252,7 @@ class ActionsMenu implements SidebarMenuEntryRenderable, CallbackListener, Mania
// Player Menu // Player Menu
$popoutFrame = new Frame(); $popoutFrame = new Frame();
$frame->addChild($popoutFrame); $frame->addChild($popoutFrame);
$popoutFrame->setPosition($playerPos['x'] - $itemSize * 0.5, $playerPos['y']); $popoutFrame->setPosition($playerPos->getX() - $itemSize * 0.5, $playerPos->getY());
$popoutFrame->setHorizontalAlign($popoutFrame::RIGHT); $popoutFrame->setHorizontalAlign($popoutFrame::RIGHT);
$popoutFrame->setVisible(false); $popoutFrame->setVisible(false);

View File

@ -3,6 +3,7 @@
namespace ManiaControl\Manialinks; namespace ManiaControl\Manialinks;
use ManiaControl\Callbacks\CallbackListener; use ManiaControl\Callbacks\CallbackListener;
use ManiaControl\Callbacks\Structures\ShootMania\Models\Position;
use ManiaControl\General\UsageInformationAble; use ManiaControl\General\UsageInformationAble;
use ManiaControl\General\UsageInformationTrait; use ManiaControl\General\UsageInformationTrait;
use ManiaControl\ManiaControl; use ManiaControl\ManiaControl;
@ -47,9 +48,9 @@ class SidebarMenuManager implements UsageInformationAble, CallbackListener {
} }
/** /**
* Returns array('x' => xPosition, 'y' => yPosition) of the Sidebar * Returns Position of the Sidebar (PositionObject with x and y)
* *
* @return array * @return Position
* @api * @api
*/ */
public function getSidebarPosition() { public function getSidebarPosition() {
@ -61,32 +62,36 @@ class SidebarMenuManager implements UsageInformationAble, CallbackListener {
$posY = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_SIDEBAR_POSY_TRACKMANIA); $posY = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_SIDEBAR_POSY_TRACKMANIA);
} }
return array('x' => $posX, 'y' => $posY); $pos = new Position();
$pos->setX($posX);
$pos->setY($posY);
return $pos;
} }
/** /**
* Returns array('x' => xPosition, 'y' => yPosition) of a menu item of the sidebar * Returns PositionObject of a menu item of the sidebar, or null if it's not found
* *
* @param string $id * @param string $id
* @return array|null * @return Position|null
* @api * @api
*/ */
public function getEntryPosition($id) { public function getEntryPosition($id) {
$itemSize = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_MENU_ITEMSIZE); $itemSize = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_MENU_ITEMSIZE);
$itemMarginFactor = 1.2;
$pos = $this->getSidebarPosition(); $pos = $this->getSidebarPosition();
$posX = $pos['x'];
$posY = $pos['y'];
if (isset($this->yPositions[$id])) { if (isset($this->yPositions[$id])) {
return array('x' => $posX, 'y' => $this->yPositions[$id]); $pos->setY($this->yPositions[$id]);
return $pos;
} }
foreach ($this->menuEntries as $entry) { foreach ($this->menuEntries as $entry) {
if ($entry == $id) { if ($entry == $id) {
$this->yPositions[$id] = $posY; $this->yPositions[$id] = $pos->getY();
return array('x' => $posX, 'y' => $posY); return $pos;
} }
$posY -= $itemSize * 1.05; $pos->setY($pos->getY() - $itemSize * $itemMarginFactor);
} }
$this->maniaControl->getErrorHandler()->triggerDebugNotice('SidebarMenuEntry id:' . $id . ' not found'); $this->maniaControl->getErrorHandler()->triggerDebugNotice('SidebarMenuEntry id:' . $id . ' not found');
@ -133,7 +138,7 @@ class SidebarMenuManager implements UsageInformationAble, CallbackListener {
/** /**
* @param \ManiaControl\Manialinks\SidebarMenuEntryRenderable $render * @param SidebarMenuEntryRenderable $render
* @param $id * @param $id
* @param bool $unregisterClass * @param bool $unregisterClass
* @api * @api
@ -146,13 +151,15 @@ class SidebarMenuManager implements UsageInformationAble, CallbackListener {
} }
} }
if($unregisterClass){
foreach ($this->registeredClasses as $k => $class) { foreach ($this->registeredClasses as $k => $class) {
if($class == $render){ if ($class == $render && $unregisterClass) {
array_splice($this->registeredClasses, $k, 1); array_splice($this->registeredClasses, $k, 1);
} }else{
} $class->renderMenuEntry();
} }
} }
}
} }

View File

@ -283,7 +283,7 @@ class CustomVotesPlugin implements SidebarMenuEntryRenderable, CommandListener,
//Custom Vote Menu Iconsframe //Custom Vote Menu Iconsframe
$frame = new Frame(); $frame = new Frame();
$maniaLink->addChild($frame); $maniaLink->addChild($frame);
$frame->setPosition($pos['x'], $pos['y']); $frame->setPosition($pos->getX(), $pos->getY());
$frame->setZ(ManialinkManager::MAIN_MANIALINK_Z_VALUE); $frame->setZ(ManialinkManager::MAIN_MANIALINK_Z_VALUE);
$backgroundQuad = new Quad(); $backgroundQuad = new Quad();
@ -304,7 +304,7 @@ class CustomVotesPlugin implements SidebarMenuEntryRenderable, CommandListener,
$menuEntries = count($this->voteMenuItems); $menuEntries = count($this->voteMenuItems);
$descriptionFrame = new Frame(); $descriptionFrame = new Frame();
$maniaLink->addChild($descriptionFrame); $maniaLink->addChild($descriptionFrame);
$descriptionFrame->setPosition($pos['x'] - $menuEntries * $itemSize * 1.05 - 5, $pos['y']); $descriptionFrame->setPosition($pos->getX() - $menuEntries * $itemSize * 1.05 - 5, $pos->getY());
$descriptionLabel = new Label(); $descriptionLabel = new Label();
$descriptionFrame->addChild($descriptionLabel); $descriptionFrame->addChild($descriptionLabel);
@ -316,7 +316,7 @@ class CustomVotesPlugin implements SidebarMenuEntryRenderable, CommandListener,
//Popout Frame //Popout Frame
$popoutFrame = new Frame(); $popoutFrame = new Frame();
$maniaLink->addChild($popoutFrame); $maniaLink->addChild($popoutFrame);
$popoutFrame->setPosition($pos['x'] - $itemSize * 0.5, $pos['y']); $popoutFrame->setPosition($pos->getX() - $itemSize * 0.5, $pos->getY());
$popoutFrame->setHorizontalAlign($popoutFrame::RIGHT); $popoutFrame->setHorizontalAlign($popoutFrame::RIGHT);
$popoutFrame->setSize(4 * $itemSize * $itemMarginFactorX, $itemSize * $itemMarginFactorY); $popoutFrame->setSize(4 * $itemSize * $itemMarginFactorX, $itemSize * $itemMarginFactorY);
$popoutFrame->setVisible(false); $popoutFrame->setVisible(false);
@ -350,7 +350,6 @@ class CustomVotesPlugin implements SidebarMenuEntryRenderable, CommandListener,
} }
} }
// Send manialink // Send manialink
$this->maniaControl->getManialinkManager()->sendManialink($maniaLink, $login); $this->maniaControl->getManialinkManager()->sendManialink($maniaLink, $login);
} }

View File

@ -159,7 +159,7 @@ class DonationPlugin implements CallbackListener, CommandListener, Plugin, Sideb
// Donate Menu Icon Frame // Donate Menu Icon Frame
$frame = new Frame(); $frame = new Frame();
$maniaLink->addChild($frame); $maniaLink->addChild($frame);
$frame->setPosition($pos['x'], $pos['y']); $frame->setPosition($pos->getX(), $pos->getY());
$frame->setZ(ManialinkManager::MAIN_MANIALINK_Z_VALUE); $frame->setZ(ManialinkManager::MAIN_MANIALINK_Z_VALUE);
$backgroundQuad = new Quad(); $backgroundQuad = new Quad();