maniaControl = $maniaControl; // Register for callbacks $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MC_ONINIT, $this, 'handleOnInit'); $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MC_BEGINMAP, $this, 'handleOnBeginMap'); $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MC_ENDMAP, $this, 'handleOnEndMap'); $this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERJOINED, $this, 'handlePlayerConnect'); $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MC_1_MINUTE, $this, 'handleEveryMinute'); $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_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); return true; } /** * Unload the plugin and its resources */ public function unload(){ $this->maniaControl->callbackManager->unregisterCallbackListener($this); unset($this->maniaControl); } 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); $localTime = date("H:i", time()); $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->setText($localTime); $label->setTextColor("FFF"); //Send manialink $manialinkText = $maniaLink->render()->saveXML(); $this->maniaControl->manialinkManager->sendManialink($manialinkText, $login); } /** * 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 juked Map $jukedMap = $this->maniaControl->mapManager->jukebox->getNextMap(); $requester = null; //if the nextmap is not a juked map, get it from map info if($jukedMap == null){ $this->maniaControl->client->query("GetNextMapInfo"); $map = $this->maniaControl->client->getResponse(); $name = $map['Name']; $author = $map['Author']; }else{ $requester = $jukedMap[0]; $map = $jukedMap[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 != null){ $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 $manialinkText = $maniaLink->render()->saveXML(); $this->maniaControl->manialinkManager->sendManialink($manialinkText, $login); } /** * Displays the Map Widget * @param $login */ public function displayMapWidget($login = false){ $xml = " "; $this->maniaControl->manialinkManager->sendManialink($xml); $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); //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); $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($map->name); $label->setTextColor("FFF"); $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"); //Send manialink $manialinkText = $maniaLink->render()->saveXML(); $this->maniaControl->manialinkManager->sendManialink($manialinkText, $login); } /** * Closes a Widget * @param $widgetId */ public function closeWidget($widgetId){ $emptyManialink = new ManiaLink($widgetId); $manialinkText = $emptyManialink->render()->saveXML(); $this->maniaControl->manialinkManager->sendManialink($manialinkText); } /** * Handle ManiaControl OnInit callback * * @param array $callback */ public function handleOnInit(array $callback) { //Display Map Widget if($this->maniaControl->settingManager->getSetting($this, self::SETTING_MAP_WIDGET_ACTIVATED)){ $this->displayMapWidget(); } if($this->maniaControl->settingManager->getSetting($this, self::SETTING_CLOCK_WIDGET_ACTIVATED)){ $this->displayClockWidget(); } } /** * Handle on Begin Map * * @param array $callback */ public function handleOnBeginMap(array $callback) { //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 array $callback */ public function handleOnEndMap(array $callback) { //Display Map Widget if($this->maniaControl->settingManager->getSetting($this, self::SETTING_NEXTMAP_WIDGET_ACTIVATED)){ $this->displayNextMapWidget(); } } /** * 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_MAP_WIDGET_ACTIVATED)){ $this->displayMapWidget($player->login); } if($this->maniaControl->settingManager->getSetting($this, self::SETTING_CLOCK_WIDGET_ACTIVATED)){ $this->displayClockWidget(); } } /** * Aktualize the clock widget every minute * @param array $callback */ public function handleEveryMinute(array $callback) { if($this->maniaControl->settingManager->getSetting($this, self::SETTING_CLOCK_WIDGET_ACTIVATED)){ $this->displayClockWidget(); } } /** * 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 null; } }