diff --git a/Beu/SmallTextOverlay.php b/Beu/SmallTextOverlay.php new file mode 100644 index 0000000..e2a8f6a --- /dev/null +++ b/Beu/SmallTextOverlay.php @@ -0,0 +1,176 @@ +maniaControl = $maniaControl; + + $this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_PRIMARY_TEXT, "Primary Text"); + $this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_SECONDARY_TEXT, "Secondary Text"); + + $this->maniaControl->getCallbackManager()->registerCallbackListener(PlayerManager::CB_PLAYERCONNECT, $this, 'handlePlayerConnect'); + $this->maniaControl->getCallbackManager()->registerCallbackListener(SettingManager::CB_SETTING_CHANGED, $this, 'updateSettings'); + + $this->generateManialink(); + $this->maniaControl->getManialinkManager()->sendManialink($this->manialink); + + $this->maniaControl->getTimerManager()->registerTimerListening($this, 'handle5Minutes', 300000); + } + + /** + * Handle when a player connects + * + * @param Player $player + */ + public function handlePlayerConnect(Player $player) { + $this->maniaControl->getManialinkManager()->sendManialink($this->manialink, $player->login); + } + + /** + * updateSettings + * + * @param Setting $setting + * @return void + */ + public function updateSettings(Setting $setting = null) { + if ($setting !== null && !$setting->belongsToClass($this)) { + return; + } + $this->generateManialink(); + $this->maniaControl->getManialinkManager()->sendManialink($this->manialink); + } + + /** + * handle5Minutes + * + * @return void + */ + public function handle5Minutes() { + // update UI if updated by an another + $this->generateManialink(); + $this->maniaControl->getManialinkManager()->sendManialink($this->manialink); + } + + /** + * generateManialink + * + * @return void + */ + private function generateManialink() { + $manialink = new ManiaLink(self::MLID_SMALLTEXTAD); + + $frame = new Frame(); + $manialink->addChild($frame); + $frame->setX(159.); + $frame->setY(-60.); + + $primaryLabel = new Label(); + $frame->addChild($primaryLabel); + $primaryLabel->setTextSize(3.5); + $primaryLabel->setTextFont("GameFontExtraBold"); + $primaryLabel->setTextEmboss(true); + $primaryLabel->setHorizontalAlign(Control::RIGHT); + $primaryLabel->setText($this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_PRIMARY_TEXT)); + + $secondaryLabel = new Label(); + $frame->addChild($secondaryLabel); + $secondaryLabel->setY(-6.); + $secondaryLabel->setTextSize(2.5); + $secondaryLabel->setTextFont("GameFontExtraBold"); + $secondaryLabel->setTextEmboss(true); + $secondaryLabel->setHorizontalAlign(Control::RIGHT); + $secondaryLabel->setText($this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_SECONDARY_TEXT)); + + $this->manialink = $manialink; + } + + /** + * Unload the plugin and its Resources + */ + public function unload() { + $this->maniaControl->getManialinkManager()->hideManialink(self::MLID_SMALLTEXTAD); + } +} \ No newline at end of file