Add new plugin

This commit is contained in:
Beu 2023-09-25 10:54:19 +02:00
parent 83a05de5c6
commit f359fe1ba9
1 changed files with 176 additions and 0 deletions

176
Beu/SmallTextOverlay.php Normal file
View File

@ -0,0 +1,176 @@
<?php
namespace Beu;
use FML\Controls\Control;
use FML\Controls\Frame;
use FML\Controls\Label;
use FML\ManiaLink;
use ManiaControl\ManiaControl;
use ManiaControl\Plugins\Plugin;
use ManiaControl\Players\PlayerManager;
use ManiaControl\Callbacks\CallbackListener;
use ManiaControl\Callbacks\TimerListener;
use ManiaControl\Players\Player;
use ManiaControl\Settings\Setting;
use ManiaControl\Settings\SettingManager;
/**
* SmallTextOverlay
*
* @author Beu
* @license http://www.gnu.org/licenses/ GNU General Public License, Version 3
*/
class SmallTextOverlay implements TimerListener, CallbackListener, Plugin {
/*
* Constants
*/
const PLUGIN_ID = 195;
const PLUGIN_VERSION = 1.0;
const PLUGIN_NAME = 'SmallTextOverlay';
const PLUGIN_AUTHOR = 'Beu';
const SETTING_PRIMARY_TEXT = "Primary Text";
const SETTING_SECONDARY_TEXT = "Secondary Text";
const MLID_SMALLTEXTAD = "SmallTextOverlay";
/*
* Private properties
*/
/** @var ManiaControl $maniaControl */
private $maniaControl = null;
private $manialink = null;
/**
* @see \ManiaControl\Plugins\Plugin::prepare()
*/
public static function prepare(ManiaControl $maniaControl) {
}
/**
* @see \ManiaControl\Plugins\Plugin::getId()
*/
public static function getId() {
return self::PLUGIN_ID;
}
/**
* @see \ManiaControl\Plugins\Plugin::getName()
*/
public static function getName() {
return self::PLUGIN_NAME;
}
/**
* @see \ManiaControl\Plugins\Plugin::getVersion()
*/
public static function getVersion() {
return self::PLUGIN_VERSION;
}
/**
* @see \ManiaControl\Plugins\Plugin::getAuthor()
*/
public static function getAuthor() {
return self::PLUGIN_AUTHOR;
}
/**
* @see \ManiaControl\Plugins\Plugin::getDescription()
*/
public static function getDescription() {
return "Just add 2 text value on the bottom right of the screen, with settings as value";
}
/**
* @see \ManiaControl\Plugins\Plugin::load()
*/
public function load(ManiaControl $maniaControl) {
$this->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);
}
}