New setting for local-only votes

This commit is contained in:
Alexander Nell 2020-05-19 15:19:42 +02:00
parent 7dd6aa096e
commit 7089fa1de6

View File

@ -34,13 +34,15 @@ class KarmaPlugin implements CallbackListener, TimerListener, Plugin {
* Constants
*/
const ID = 2;
const VERSION = 0.1;
const VERSION = 0.2;
const NAME = 'Karma Plugin';
const AUTHOR = 'MCTeam';
const MLID_KARMA = 'KarmaPlugin.MLID';
const TABLE_KARMA = 'mc_karma';
const CB_KARMA_CHANGED = 'KarmaPlugin.Changed';
const CB_KARMA_MXUPDATED = 'KarmaPlugin.MXUpdated';
const DEFAULT_LOCAL_RECORDS_PLUGIN = 'MCTeam\LocalRecordsPlugin';
const SETTING_ALLOW_ON_LOCAL = 'Player can only vote when having a local record';
const SETTING_AVAILABLE_VOTES = 'Available Votes (X-Y: Comma separated)';
const SETTING_WIDGET_ENABLE = 'Enable Karma Widget';
const SETTING_WIDGET_TITLE = 'Widget-Title';
@ -143,6 +145,7 @@ class KarmaPlugin implements CallbackListener, TimerListener, Plugin {
$this->initTables();
// Settings
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_ALLOW_ON_LOCAL, false);
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_AVAILABLE_VOTES, '-2,2');
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_WIDGET_ENABLE, true);
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_WIDGET_TITLE, 'Map-Karma');
@ -587,6 +590,21 @@ class KarmaPlugin implements CallbackListener, TimerListener, Plugin {
if ($countPositive <= 0 && $countNegative <= 0) {
return;
}
// we have a vote-message
if ($this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_ALLOW_ON_LOCAL)) {
$localRecordPlugin = $this->maniaControl->getPluginManager()->getPlugin(self::DEFAULT_LOCAL_RECORDS_PLUGIN);
if (!$localRecordPlugin) {
return;
}
$currentMap = $this->maniaControl->getMapManager()->getCurrentMap();
$localRecord = $localRecordPlugin->getLocalRecord($currentMap, $player);
if ($localRecord === null) {
$this->maniaControl->getChat()->sendError('You need to have a local record on this map before voting.', $player->login);
return;
}
}
$vote = $countPositive - $countNegative;
$success = $this->handleVote($player, $vote);
if (!$success) {