diff --git a/application/plugins/WidgetPlugin.php b/application/plugins/WidgetPlugin.php index 79187138..e69de29b 100644 --- a/application/plugins/WidgetPlugin.php +++ b/application/plugins/WidgetPlugin.php @@ -1,592 +0,0 @@ - - * @copyright 2014 ManiaControl Team - * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 - */ -class WidgetPlugin implements CallbackListener, TimerListener, Plugin { - - /** - * Constants - */ - const PLUGIN_ID = 1; - const PLUGIN_VERSION = 0.1; - const PLUGIN_NAME = 'WidgetPlugin'; - const PLUGIN_AUTHOR = 'kremsy'; - - // MapWidget Properties - const MLID_MAPWIDGET = 'WidgetPlugin.MapWidget'; - const SETTING_MAP_WIDGET_ACTIVATED = 'Map-Widget Activated'; - const SETTING_MAP_WIDGET_POSX = 'Map-Widget-Position: X'; - const SETTING_MAP_WIDGET_POSY = 'Map-Widget-Position: Y'; - const SETTING_MAP_WIDGET_WIDTH = 'Map-Widget-Size: Width'; - const SETTING_MAP_WIDGET_HEIGHT = 'Map-Widget-Size: Height'; - - // ClockWidget Properties - const MLID_CLOCKWIDGET = 'WidgetPlugin.ClockWidget'; - const SETTING_CLOCK_WIDGET_ACTIVATED = 'Clock-Widget Activated'; - const SETTING_CLOCK_WIDGET_POSX = 'Clock-Widget-Position: X'; - const SETTING_CLOCK_WIDGET_POSY = 'Clock-Widget-Position: Y'; - const SETTING_CLOCK_WIDGET_WIDTH = 'Clock-Widget-Size: Width'; - const SETTING_CLOCK_WIDGET_HEIGHT = 'Clock-Widget-Size: Height'; - - // NextMapWidget Properties - const MLID_NEXTMAPWIDGET = 'WidgetPlugin.NextMapWidget'; - const SETTING_NEXTMAP_WIDGET_ACTIVATED = 'Nextmap-Widget Activated'; - const SETTING_NEXTMAP_WIDGET_POSX = 'Nextmap-Widget-Position: X'; - const SETTING_NEXTMAP_WIDGET_POSY = 'Nextmap-Widget-Position: Y'; - const SETTING_NEXTMAP_WIDGET_WIDTH = 'Nextmap-Widget-Size: Width'; - const SETTING_NEXTMAP_WIDGET_HEIGHT = 'Nextmap-Widget-Size: Height'; - - // ServerInfoWidget Properties - const MLID_SERVERINFOWIDGET = 'WidgetPlugin.ServerInfoWidget'; - const SETTING_SERVERINFO_WIDGET_ACTIVATED = 'ServerInfo-Widget Activated'; - const SETTING_SERVERINFO_WIDGET_POSX = 'ServerInfo-Widget-Position: X'; - const SETTING_SERVERINFO_WIDGET_POSY = 'ServerInfo-Widget-Position: Y'; - const SETTING_SERVERINFO_WIDGET_WIDTH = 'ServerInfo-Widget-Size: Width'; - const SETTING_SERVERINFO_WIDGET_HEIGHT = 'ServerInfo-Widget-Size: Height'; - - /** - * Private Properties - */ - /** - * @var maniaControl $maniaControl - */ - private $maniaControl = null; - - /** - * Prepares the Plugin - * - * @param ManiaControl $maniaControl - * @return mixed - */ - public static function prepare(ManiaControl $maniaControl) { - //do nothing - } - - /** - * Get plugin id - * - * @return int - */ - public static function getId() { - return self::PLUGIN_ID; - } - - /** - * Get Plugin Name - * - * @return string - */ - public static function getName() { - return self::PLUGIN_NAME; - } - - /** - * Get Plugin Version - * - * @return float,, - */ - public static function getVersion() { - return self::PLUGIN_VERSION; - } - - /** - * Get Plugin Author - * - * @return string - */ - public static function getAuthor() { - return self::PLUGIN_AUTHOR; - } - - /** - * Get Plugin Description - * - * @return string - */ - public static function getDescription() { - return 'Plugin offers some Widgets'; - } - - /** - * Load the plugin - * - * @param ManiaControl $maniaControl - * @return bool - */ - public function load(ManiaControl $maniaControl) { - $this->maniaControl = $maniaControl; - - // Set CustomUI Setting - $this->maniaControl->manialinkManager->customUIManager->setChallengeInfoVisible(false); - - // Register for callbacks - $this->maniaControl->callbackManager->registerCallbackListener(Callbacks::BEGINMAP, $this, 'handleOnBeginMap'); - $this->maniaControl->callbackManager->registerCallbackListener(Callbacks::ENDMAP, $this, 'handleOnEndMap'); - $this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERCONNECT, $this, 'handlePlayerConnect'); - $this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERDISCONNECT, $this, 'handlePlayerDisconnect'); - - $this->maniaControl->settingManager->initSetting($this, self::SETTING_MAP_WIDGET_ACTIVATED, true); - $this->maniaControl->settingManager->initSetting($this, self::SETTING_MAP_WIDGET_POSX, 160 - 20); - $this->maniaControl->settingManager->initSetting($this, self::SETTING_MAP_WIDGET_POSY, 90 - 4.5); - $this->maniaControl->settingManager->initSetting($this, self::SETTING_MAP_WIDGET_WIDTH, 40); - $this->maniaControl->settingManager->initSetting($this, self::SETTING_MAP_WIDGET_HEIGHT, 9.); - - $this->maniaControl->settingManager->initSetting($this, self::SETTING_SERVERINFO_WIDGET_ACTIVATED, true); - $this->maniaControl->settingManager->initSetting($this, self::SETTING_SERVERINFO_WIDGET_POSX, -160 + 17.5); - $this->maniaControl->settingManager->initSetting($this, self::SETTING_SERVERINFO_WIDGET_POSY, 90 - 4.5); - $this->maniaControl->settingManager->initSetting($this, self::SETTING_SERVERINFO_WIDGET_WIDTH, 35); - $this->maniaControl->settingManager->initSetting($this, self::SETTING_SERVERINFO_WIDGET_HEIGHT, 9.); - - $this->maniaControl->settingManager->initSetting($this, self::SETTING_NEXTMAP_WIDGET_ACTIVATED, true); - $this->maniaControl->settingManager->initSetting($this, self::SETTING_NEXTMAP_WIDGET_POSX, 160 - 20); - $this->maniaControl->settingManager->initSetting($this, self::SETTING_NEXTMAP_WIDGET_POSY, 90 - 25.5); - $this->maniaControl->settingManager->initSetting($this, self::SETTING_NEXTMAP_WIDGET_WIDTH, 40); - $this->maniaControl->settingManager->initSetting($this, self::SETTING_NEXTMAP_WIDGET_HEIGHT, 12.); - - $this->maniaControl->settingManager->initSetting($this, self::SETTING_CLOCK_WIDGET_ACTIVATED, true); - $this->maniaControl->settingManager->initSetting($this, self::SETTING_CLOCK_WIDGET_POSX, 160 - 5); - $this->maniaControl->settingManager->initSetting($this, self::SETTING_CLOCK_WIDGET_POSY, 90 - 11); - $this->maniaControl->settingManager->initSetting($this, self::SETTING_CLOCK_WIDGET_WIDTH, 10); - $this->maniaControl->settingManager->initSetting($this, self::SETTING_CLOCK_WIDGET_HEIGHT, 5.5); - - $this->displayWidgets(); - - return true; - } - - /** - * Display the Widgets - */ - private function displayWidgets() { - // Display Map Widget - if ($this->maniaControl->settingManager->getSetting($this, self::SETTING_MAP_WIDGET_ACTIVATED)) { - $this->maniaControl->client->triggerModeScriptEventArray("Siege_SetProgressionLayerPosition", array("160.", "-67.", "0.")); - $this->displayMapWidget(); - } - if ($this->maniaControl->settingManager->getSetting($this, self::SETTING_CLOCK_WIDGET_ACTIVATED)) { - $this->displayClockWidget(); - } - if ($this->maniaControl->settingManager->getSetting($this, self::SETTING_SERVERINFO_WIDGET_ACTIVATED)) { - $this->displayServerInfoWidget(); - } - } - - /** - * Display the Map Widget - * - * @param string $login - */ - public function displayMapWidget($login = null) { - $pos_x = $this->maniaControl->settingManager->getSetting($this, self::SETTING_MAP_WIDGET_POSX); - $pos_y = $this->maniaControl->settingManager->getSetting($this, self::SETTING_MAP_WIDGET_POSY); - $width = $this->maniaControl->settingManager->getSetting($this, self::SETTING_MAP_WIDGET_WIDTH); - $height = $this->maniaControl->settingManager->getSetting($this, self::SETTING_MAP_WIDGET_HEIGHT); - $quadStyle = $this->maniaControl->manialinkManager->styleManager->getDefaultQuadStyle(); - $quadSubstyle = $this->maniaControl->manialinkManager->styleManager->getDefaultQuadSubstyle(); - - $maniaLink = new ManiaLink(self::MLID_MAPWIDGET); - $script = new Script(); - $maniaLink->setScript($script); - - // mainframe - $frame = new Frame(); - $maniaLink->add($frame); - $frame->setSize($width, $height); - $frame->setPosition($pos_x, $pos_y); - - // Background Quad - $backgroundQuad = new Quad(); - $frame->add($backgroundQuad); - $backgroundQuad->setSize($width, $height); - $backgroundQuad->setStyles($quadStyle, $quadSubstyle); - $backgroundQuad->addMapInfoFeature(); - - $map = $this->maniaControl->mapManager->getCurrentMap(); - - $label = new Label_Text(); - $frame->add($label); - $label->setY(1.5); - $label->setX(0); - $label->setAlign(Control::CENTER, Control::CENTER); - $label->setZ(0.2); - $label->setTextSize(1.3); - $label->setText(Formatter::stripDirtyCodes($map->name)); - $label->setTextColor("FFF"); - $label->setSize($width - 5, $height); - - $label = new Label_Text(); - $frame->add($label); - $label->setX(0); - $label->setY(-1.4); - - $label->setAlign(Control::CENTER, Control::CENTER); - $label->setZ(0.2); - $label->setTextSize(1); - $label->setScale(0.8); - $label->setText($map->authorLogin); - $label->setTextColor("FFF"); - $label->setSize($width - 5, $height); - - if (isset($map->mx->pageurl)) { - $quad = new Quad(); - $frame->add($quad); - $quad->setImageFocus($this->maniaControl->manialinkManager->iconManager->getIcon(IconManager::MX_ICON_MOVER)); - $quad->setImage($this->maniaControl->manialinkManager->iconManager->getIcon(IconManager::MX_ICON)); - $quad->setPosition(-$width / 2 + 4, -1.5, -0.5); - $quad->setSize(4, 4); - $quad->setHAlign(Control::CENTER); - $quad->setUrl($map->mx->pageurl); - } - - // Send manialink - $this->maniaControl->manialinkManager->sendManialink($maniaLink, $login); - } - - /** - * Displays the Clock Widget - * - * @param bool $login - */ - public function displayClockWidget($login = false) { - $pos_x = $this->maniaControl->settingManager->getSetting($this, self::SETTING_CLOCK_WIDGET_POSX); - $pos_y = $this->maniaControl->settingManager->getSetting($this, self::SETTING_CLOCK_WIDGET_POSY); - $width = $this->maniaControl->settingManager->getSetting($this, self::SETTING_CLOCK_WIDGET_WIDTH); - $height = $this->maniaControl->settingManager->getSetting($this, self::SETTING_CLOCK_WIDGET_HEIGHT); - $quadStyle = $this->maniaControl->manialinkManager->styleManager->getDefaultQuadStyle(); - $quadSubstyle = $this->maniaControl->manialinkManager->styleManager->getDefaultQuadSubstyle(); - - $maniaLink = new ManiaLink(self::MLID_CLOCKWIDGET); - - // mainframe - $frame = new Frame(); - $maniaLink->add($frame); - $frame->setSize($width, $height); - $frame->setPosition($pos_x, $pos_y); - - // Background Quad - $backgroundQuad = new Quad(); - $frame->add($backgroundQuad); - $backgroundQuad->setSize($width, $height); - $backgroundQuad->setStyles($quadStyle, $quadSubstyle); - - $label = new Label_Text(); - $frame->add($label); - $label->setY(1.5); - $label->setX(0); - $label->setAlign(Control::CENTER, Control::TOP); - $label->setZ(0.2); - $label->setTextSize(1); - $label->setTextColor("FFF"); - $label->addClockFeature(false); - - // Send manialink - $this->maniaControl->manialinkManager->sendManialink($maniaLink, $login); - } - - /** - * Display the Server Info Widget - * - * @param string $login - */ - public function displayServerInfoWidget($login = null) { - $pos_x = $this->maniaControl->settingManager->getSetting($this, self::SETTING_SERVERINFO_WIDGET_POSX); - $pos_y = $this->maniaControl->settingManager->getSetting($this, self::SETTING_SERVERINFO_WIDGET_POSY); - $width = $this->maniaControl->settingManager->getSetting($this, self::SETTING_SERVERINFO_WIDGET_WIDTH); - $height = $this->maniaControl->settingManager->getSetting($this, self::SETTING_SERVERINFO_WIDGET_HEIGHT); - $quadStyle = $this->maniaControl->manialinkManager->styleManager->getDefaultQuadStyle(); - $quadSubstyle = $this->maniaControl->manialinkManager->styleManager->getDefaultQuadSubstyle(); - - $maniaLink = new ManiaLink(self::MLID_SERVERINFOWIDGET); - - // mainframe - $frame = new Frame(); - $maniaLink->add($frame); - $frame->setSize($width, $height); - $frame->setPosition($pos_x, $pos_y); - - // Background Quad - $backgroundQuad = new Quad(); - $frame->add($backgroundQuad); - $backgroundQuad->setSize($width, $height); - $backgroundQuad->setStyles($quadStyle, $quadSubstyle); - - $maxPlayers = $this->maniaControl->client->getMaxPlayers(); - - $maxSpectators = $this->maniaControl->client->getMaxSpectators(); - - $serverName = $this->maniaControl->client->getServerName(); - - $players = $this->maniaControl->playerManager->getPlayers(); - $playerCount = 0; - $spectatorCount = 0; - /** - * @var Player $player - */ - foreach ($players as $player) { - if ($player->isSpectator) { - $spectatorCount++; - } else { - $playerCount++; - } - } - - $label = new Label_Text(); - $frame->add($label); - $label->setPosition(0, 1.5, 0.2); - $label->setAlign(Control::CENTER, Control::CENTER); - $label->setSize($width - 5, $height); - $label->setTextSize(1.3); - $label->setText(Formatter::stripDirtyCodes($serverName)); - $label->setTextColor("FFF"); - //$label->setAutoNewLine(true); - // Player Quad / Label - $label = new Label_Text(); - $frame->add($label); - $label->setPosition(-$width / 2 + 9, -1.5, 0.2); - $label->setAlign(Control::LEFT, Control::CENTER); - $label->setTextSize(1); - $label->setScale(0.8); - $label->setText($playerCount . " / " . $maxPlayers['NextValue']); - $label->setTextColor("FFF"); - - $quad = new Quad_Icons128x128_1(); - $frame->add($quad); - $quad->setSubStyle($quad::SUBSTYLE_Multiplayer); - $quad->setPosition(-$width / 2 + 7, -1.6, 0.2); - $quad->setSize(2.5, 2.5); - $quad->setHAlign(Control::CENTER); - - // Spectator Quad / Label - $label = new Label_Text(); - $frame->add($label); - $label->setPosition(2, -1.5, 0.2); - $label->setAlign(Control::LEFT, Control::CENTER); - $label->setTextSize(1); - $label->setScale(0.8); - $label->setText($spectatorCount . " / " . $maxSpectators['NextValue']); - $label->setTextColor("FFF"); - - $quad = new Quad_Icons64x64_1(); - $frame->add($quad); - $quad->setSubStyle($quad::SUBSTYLE_Camera); - $quad->setPosition(0, -1.6, 0.2); - $quad->setSize(3.3, 2.5); - $quad->setHAlign(Control::CENTER); - - // Favorite quad - $quad = new Quad_Icons64x64_1(); - $frame->add($quad); - $quad->setSubStyle($quad::SUBSTYLE_StateFavourite); - $quad->setPosition($width / 2 - 4, -1.5, -0.5); - $quad->setSize(3, 3); - $quad->setHAlign(Control::CENTER); - $quad->setManialink('mcontrol?favorite=' . urlencode($this->maniaControl->server->login)); - - // Send manialink - $this->maniaControl->manialinkManager->sendManialink($maniaLink, $login); - } - - /** - * Unload the plugin and its resources - */ - public function unload() { - //Restore Siege Progression Layer - $this->maniaControl->client->triggerModeScriptEventArray("Siege_SetProgressionLayerPosition", array("160.", "90.", "0.")); - - $this->closeWidget(self::MLID_CLOCKWIDGET); - $this->closeWidget(self::MLID_SERVERINFOWIDGET); - $this->closeWidget(self::MLID_MAPWIDGET); - $this->closeWidget(self::MLID_NEXTMAPWIDGET); - $this->maniaControl->callbackManager->unregisterCallbackListener($this); - $this->maniaControl->timerManager->unregisterTimerListenings($this); - unset($this->maniaControl); - } - - /** - * Closes a Widget - * - * @param $widgetId - */ - public function closeWidget($widgetId) { - $emptyManialink = new ManiaLink($widgetId); - $this->maniaControl->manialinkManager->sendManialink($emptyManialink); - } - - /** - * Handle on Begin Map - * - * @param Map $map - */ - public function handleOnBeginMap(Map $map) { - // Display Map Widget - if ($this->maniaControl->settingManager->getSetting($this, self::SETTING_MAP_WIDGET_ACTIVATED)) { - $this->displayMapWidget(); - } - $this->closeWidget(self::MLID_NEXTMAPWIDGET); - } - - /** - * Handle on End Map - * - * @param Map $map - */ - public function handleOnEndMap(Map $map) { - // Display Map Widget - if ($this->maniaControl->settingManager->getSetting($this, self::SETTING_NEXTMAP_WIDGET_ACTIVATED)) { - $this->displayNextMapWidget(); - } - } - - /** - * Displays the Next Map (Only at the end of the Map) - * - * @param bool $login - */ - public function displayNextMapWidget($login = false) { - $pos_x = $this->maniaControl->settingManager->getSetting($this, self::SETTING_NEXTMAP_WIDGET_POSX); - $pos_y = $this->maniaControl->settingManager->getSetting($this, self::SETTING_NEXTMAP_WIDGET_POSY); - $width = $this->maniaControl->settingManager->getSetting($this, self::SETTING_NEXTMAP_WIDGET_WIDTH); - $height = $this->maniaControl->settingManager->getSetting($this, self::SETTING_NEXTMAP_WIDGET_HEIGHT); - $quadStyle = $this->maniaControl->manialinkManager->styleManager->getDefaultQuadStyle(); - $quadSubstyle = $this->maniaControl->manialinkManager->styleManager->getDefaultQuadSubstyle(); - $labelStyle = $this->maniaControl->manialinkManager->styleManager->getDefaultLabelStyle(); - - $maniaLink = new ManiaLink(self::MLID_NEXTMAPWIDGET); - - // mainframe - $frame = new Frame(); - $maniaLink->add($frame); - $frame->setSize($width, $height); - $frame->setPosition($pos_x, $pos_y); - - // Background Quad - $backgroundQuad = new Quad(); - $frame->add($backgroundQuad); - $backgroundQuad->setSize($width, $height); - $backgroundQuad->setStyles($quadStyle, $quadSubstyle); - - // Check if the Next Map is a queued Map - $queuedMap = $this->maniaControl->mapManager->mapQueue->getNextMap(); - - /** - * @var Player $requester - */ - $requester = null; - // if the nextmap is not a queued map, get it from map info - if (!$queuedMap) { - $map = $this->maniaControl->client->getNextMapInfo(); - $name = Formatter::stripDirtyCodes($map->name); - $author = $map->author; - } else { - $requester = $queuedMap[0]; - $map = $queuedMap[1]; - $name = $map->name; - $author = $map->authorLogin; - } - - $label = new Label_Text(); - $frame->add($label); - $label->setY($height / 2 - 2.3); - $label->setX(0); - $label->setAlign(Control::CENTER, Control::CENTER); - $label->setZ(0.2); - $label->setTextSize(1); - $label->setText("Next Map"); - $label->setTextColor("FFF"); - $label->setStyle($labelStyle); - - $label = new Label_Text(); - $frame->add($label); - $label->setY($height / 2 - 5.5); - $label->setX(0); - $label->setAlign(Control::CENTER, Control::CENTER); - $label->setZ(0.2); - $label->setTextSize(1.3); - $label->setText($name); - $label->setTextColor("FFF"); - - $label = new Label_Text(); - $frame->add($label); - $label->setX(0); - $label->setY(-$height / 2 + 4); - - $label->setAlign(Control::CENTER, Control::CENTER); - $label->setZ(0.2); - $label->setTextSize(1); - $label->setScale(0.8); - $label->setText($author); - $label->setTextColor("FFF"); - - if ($requester) { - $label = new Label_Text(); - $frame->add($label); - $label->setX(0); - $label->setY(-$height / 2 + 2); - $label->setAlign(Control::CENTER, Control::CENTER); - $label->setZ(0.2); - $label->setTextSize(1); - $label->setScale(0.7); - $label->setText($author); - $label->setTextColor("F80"); - $label->setText("Requested by " . $requester->nickname); - } - - // Send manialink - $this->maniaControl->manialinkManager->sendManialink($maniaLink, $login); - } - - /** - * Handle PlayerConnect callback - * - * @param Player $player - */ - public function handlePlayerConnect(Player $player) { - // Display Map Widget - if ($this->maniaControl->settingManager->getSetting($this, self::SETTING_MAP_WIDGET_ACTIVATED)) { - $this->displayMapWidget($player->login); - } - if ($this->maniaControl->settingManager->getSetting($this, self::SETTING_CLOCK_WIDGET_ACTIVATED)) { - $this->displayClockWidget($player->login); - } - if ($this->maniaControl->settingManager->getSetting($this, self::SETTING_SERVERINFO_WIDGET_ACTIVATED)) { - $this->displayServerInfoWidget(); - } - } - - /** - * Handle PlayerConnect callback - * - * @param Player $player - */ - public function handlePlayerDisconnect(Player $player) { - if ($this->maniaControl->settingManager->getSetting($this, self::SETTING_SERVERINFO_WIDGET_ACTIVATED)) { - $this->displayServerInfoWidget(); - } - } -} \ No newline at end of file