fix php 8.4 compatibility + improve logging / chat messages
This commit is contained in:
@ -19,8 +19,8 @@ use ManiaControl\Utils\WebReader;
|
||||
|
||||
|
||||
if (!class_exists('MatchManagerSuite\MatchManagerCore')) {
|
||||
$this->maniaControl->getChat()->sendErrorToAdmins('MatchManager Core is required to use one of MatchManager plugin. Install it and restart Maniacontrol');
|
||||
Logger::logError('MatchManager Core is required to use one of MatchManager plugin. Install it and restart Maniacontrol');
|
||||
$this->maniaControl->getChat()->sendErrorToAdmins('MatchManager Core is required to use MatchManagerTMWTDuoIntegration plugin. Install it and restart Maniacontrol');
|
||||
Logger::logError('MatchManager Core is required to use MatchManagerTMWTDuoIntegration plugin. Install it and restart Maniacontrol');
|
||||
return false;
|
||||
}
|
||||
use MatchManagerSuite\MatchManagerCore;
|
||||
@ -37,10 +37,12 @@ class MatchManagerTMWTDuoIntegration implements CallbackListener, ManialinkPageA
|
||||
* Constants
|
||||
*/
|
||||
const PLUGIN_ID = 211;
|
||||
const PLUGIN_VERSION = 1.0;
|
||||
const PLUGIN_VERSION = 1.1;
|
||||
const PLUGIN_NAME = 'MatchManager TMWT Duo Integration';
|
||||
const PLUGIN_AUTHOR = 'Beu';
|
||||
|
||||
const LOG_PREFIX = '[MatchManagerTMWTDuoIntegration] ';
|
||||
|
||||
// Other MatchManager plugin
|
||||
const MATCHMANAGERCORE_PLUGIN = 'MatchManagerSuite\MatchManagerCore';
|
||||
const MATCHMANAGERADMINUI_PLUGIN = 'MatchManagerSuite\MatchManagerAdminUI';
|
||||
@ -62,6 +64,7 @@ class MatchManagerTMWTDuoIntegration implements CallbackListener, ManialinkPageA
|
||||
const SETTING_PICKANDBAN_ENABLE = 'Enable Pick & Ban';
|
||||
const SETTING_PICKANDBAN_STEPCONFIG = 'Pick & Ban: Step config';
|
||||
const SETTING_PICKANDBAN_STEPDURATION = 'Pick & Ban: Step duration';
|
||||
const SETTING_PICKANDBAN_OVERRIDEMAPORDER = 'Pick & Ban: Override Map Order';
|
||||
const SETTING_PICKANDBAN_RESULTDURATION = 'Pick & Ban: Result duration';
|
||||
|
||||
const STATE_NOTHING = 0;
|
||||
@ -74,6 +77,7 @@ class MatchManagerTMWTDuoIntegration implements CallbackListener, ManialinkPageA
|
||||
*/
|
||||
/** @var ManiaControl $maniaControl */
|
||||
private $maniaControl = null;
|
||||
/** @var MatchManagerCore $MatchManagerCore */
|
||||
private $MatchManagerCore = null;
|
||||
private $state = 0;
|
||||
|
||||
@ -139,7 +143,8 @@ class MatchManagerTMWTDuoIntegration implements CallbackListener, ManialinkPageA
|
||||
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_PICKANDBAN_ENABLE, false, '', 20);
|
||||
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_PICKANDBAN_STEPCONFIG, '', 'Similar syntax as the ofiicial Competition Tool. e.g: b:1,b:0,p:0,p:1,p:1,p:0,b:0,b:1,p:r');
|
||||
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_PICKANDBAN_STEPDURATION, 60000, 'Each step duration in ms', 110);
|
||||
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_PICKANDBAN_RESULTDURATION, 10000, 'result duration in ms', 120);
|
||||
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_PICKANDBAN_OVERRIDEMAPORDER, '', 'Override map order received by the server. e.g: 1,2,4,3,5', 120);
|
||||
$this->maniaControl->getSettingManager()->initSetting($this, self::SETTING_PICKANDBAN_RESULTDURATION, 10000, 'result duration in ms', 130);
|
||||
|
||||
// Callbacks
|
||||
$this->maniaControl->getManialinkManager()->registerManialinkPageAnswerListener(self::ML_ACTION_OPENSETTINGS, $this, 'handleActionOpenSettings');
|
||||
@ -157,6 +162,24 @@ class MatchManagerTMWTDuoIntegration implements CallbackListener, ManialinkPageA
|
||||
$this->updateAdminUIMenuItems();
|
||||
}
|
||||
|
||||
/**
|
||||
* Custom log function to add prefix
|
||||
*
|
||||
* @param mixed $message
|
||||
*/
|
||||
private function log(mixed $message) {
|
||||
Logger::log(self::LOG_PREFIX . $message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Custom logError function to add prefix
|
||||
*
|
||||
* @param mixed $message
|
||||
*/
|
||||
private function logError(mixed $message) {
|
||||
Logger::logError(self::LOG_PREFIX . $message);
|
||||
}
|
||||
|
||||
/**
|
||||
* handle Plugin Loaded
|
||||
*
|
||||
@ -221,20 +244,20 @@ class MatchManagerTMWTDuoIntegration implements CallbackListener, ManialinkPageA
|
||||
*/
|
||||
public function canStartMatch() {
|
||||
if ($this->maniaControl->getSettingManager()->getSettingValue($this->MatchManagerCore, 'S_TeamsUrl') === '') {
|
||||
$this->maniaControl->getChat()->sendErrorToAdmins($this->MatchManagerCore->getChatPrefix() . " S_TeamsUrl must be defined");
|
||||
$this->maniaControl->getChat()->sendErrorToAdmins($this->MatchManagerCore->getChatPrefix() . "S_TeamsUrl must be defined");
|
||||
return false;
|
||||
}
|
||||
if (
|
||||
$this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_TEAM1) === '' ||
|
||||
$this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_TEAM2) === ''
|
||||
) {
|
||||
$this->maniaControl->getChat()->sendErrorToAdmins($this->MatchManagerCore->getChatPrefix() . " Team Id must be defined");
|
||||
$this->maniaControl->getChat()->sendErrorToAdmins($this->MatchManagerCore->getChatPrefix() . "Team Id must be defined");
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_PICKANDBAN_ENABLE)) {
|
||||
if ($this->maniaControl->getSettingManager()->getSettingValue($this->MatchManagerCore, $this->MatchManagerCore::SETTING_MATCH_SETTINGS_MODE) !== "All from the plugin") {
|
||||
$this->maniaControl->getChat()->sendErrorToAdmins('TMWT Pick and bans are only supported in Match Manager Core "All from the plugin" mode');
|
||||
$this->maniaControl->getChat()->sendErrorToAdmins($this->MatchManagerCore->getChatPrefix() .'TMWT Pick and bans are only supported in MatchManagerCore "All from the plugin" mode');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -254,8 +277,8 @@ class MatchManagerTMWTDuoIntegration implements CallbackListener, ManialinkPageA
|
||||
if ($setting !== null && !$setting->value) {
|
||||
$setting->value = true;
|
||||
$this->maniaControl->getSettingManager()->saveSetting($setting);
|
||||
Logger::logWarning('Remplacing S_IsMatchmaking setting value in MatchManagerCore for TMWT integration');
|
||||
$this->maniaControl->getChat()->sendErrorToAdmins('Remplacing S_IsMatchmaking setting value in MatchManagerCore for TMWT integration');
|
||||
$this->logError('Remplacing S_IsMatchmaking setting value in MatchManagerCore for TMWT integration');
|
||||
$this->maniaControl->getChat()->sendErrorToAdmins($this->MatchManagerCore->getChatPrefix() .'Remplacing S_IsMatchmaking setting value in MatchManagerCore for TMWT integration');
|
||||
}
|
||||
|
||||
if ($this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_PICKANDBAN_ENABLE)) {
|
||||
@ -263,8 +286,8 @@ class MatchManagerTMWTDuoIntegration implements CallbackListener, ManialinkPageA
|
||||
if ($setting !== null && !$setting->value) {
|
||||
$setting->value = true;
|
||||
$this->maniaControl->getSettingManager()->saveSetting($setting);
|
||||
Logger::logWarning('Remplacing S_PickAndBan_Enable setting value in MatchManagerCore for TMWT integration');
|
||||
$this->maniaControl->getChat()->sendErrorToAdmins('Remplacing S_PickAndBan_Enable setting value in MatchManagerCore for TMWT integration');
|
||||
$this->logError('Remplacing S_PickAndBan_Enable setting value in MatchManagerCore for TMWT integration');
|
||||
$this->maniaControl->getChat()->sendErrorToAdmins($this->MatchManagerCore->getChatPrefix() .'Remplacing S_PickAndBan_Enable setting value in MatchManagerCore for TMWT integration');
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -317,14 +340,14 @@ class MatchManagerTMWTDuoIntegration implements CallbackListener, ManialinkPageA
|
||||
if ($team->Id === $team1) {
|
||||
$team1 = null;
|
||||
foreach ($team->Players as $player) {
|
||||
Logger::log($player->AccountId ." added to team 1");
|
||||
$this->log($player->AccountId ." added to team 1");
|
||||
$this->maniaControl->getClient()->triggerModeScriptEvent(self::XMLRPC_METHOD_ADDPLAYER, [$player->AccountId, "1"], true);
|
||||
}
|
||||
}
|
||||
if ($team->Id === $team2) {
|
||||
$team2 = null;
|
||||
foreach ($team->Players as $player) {
|
||||
Logger::log($player->AccountId ." added to team 2");
|
||||
$this->log($player->AccountId ." added to team 2");
|
||||
$this->maniaControl->getClient()->triggerModeScriptEvent(self::XMLRPC_METHOD_ADDPLAYER, [$player->AccountId, "2"], true);
|
||||
}
|
||||
}
|
||||
@ -333,8 +356,8 @@ class MatchManagerTMWTDuoIntegration implements CallbackListener, ManialinkPageA
|
||||
}
|
||||
|
||||
if ($this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_PICKANDBAN_ENABLE)) {
|
||||
Logger::log('Starting Pick & ban in 10 seconds');
|
||||
$this->maniaControl->getChat()->sendSuccess('Starting pick & ban in 10 seconds');
|
||||
$this->log('Starting Pick & ban in 10 seconds');
|
||||
$this->maniaControl->getChat()->sendSuccess($this->MatchManagerCore->getChatPrefix() .'Starting pick & ban in 10 seconds');
|
||||
$this->maniaControl->getTimerManager()->registerOneTimeListening($this, function () {
|
||||
$payload = [
|
||||
'stepDuration' => $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_PICKANDBAN_STEPDURATION),
|
||||
@ -364,12 +387,12 @@ class MatchManagerTMWTDuoIntegration implements CallbackListener, ManialinkPageA
|
||||
|
||||
$json = json_encode($payload);
|
||||
|
||||
Logger::log('Starting Pick & ban: '. $json);
|
||||
$this->log('Starting Pick & ban: '. $json);
|
||||
$this->maniaControl->getClient()->triggerModeScriptEvent(self::XMLRPC_METHOD_STARTPICKANDBAN, [$json], true);
|
||||
}, 5000);
|
||||
} else {
|
||||
$this->state = self::STATE_MATCH;
|
||||
Logger::log('Sending match start callback');
|
||||
$this->log('Sending match start callback');
|
||||
$this->maniaControl->getClient()->triggerModeScriptEvent(self::XMLRPC_METHOD_MATCHSTARTED, [], true);
|
||||
}
|
||||
}
|
||||
@ -385,13 +408,30 @@ class MatchManagerTMWTDuoIntegration implements CallbackListener, ManialinkPageA
|
||||
*/
|
||||
public function handlePickAndBanComplete(array $structure) {
|
||||
if (!$this->MatchManagerCore->getMatchStatus()) return;
|
||||
Logger::log('Received picks: '. $structure[1][0]);
|
||||
$this->log('Received picks: '. $structure[1][0]);
|
||||
|
||||
$this->maniaControl->getTimerManager()->registerOneTimeListening($this, function () use ($structure) {
|
||||
try {
|
||||
$json = json_decode($structure[1][0]);
|
||||
|
||||
$mapUids = array_column($json->playlist, 'uid');
|
||||
|
||||
$order = explode(',', $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_PICKANDBAN_OVERRIDEMAPORDER));
|
||||
|
||||
if (count($order) === count($mapUids)) {
|
||||
$this->log("Re-ordering maps");
|
||||
try {
|
||||
$orderedMapUid = [];
|
||||
foreach ($order as $number) {
|
||||
$orderedMapUid[] = $mapUids[$number - 1];
|
||||
}
|
||||
$mapUids = $orderedMapUid;
|
||||
} catch (\Throwable $th) {
|
||||
$this->logError("Invalid Map order setting");
|
||||
$this->maniaControl->getChat()->sendErrorToAdmins($this->MatchManagerCore->getChatPrefix() ."Invalid Map order setting");
|
||||
}
|
||||
}
|
||||
|
||||
$mapList = [];
|
||||
foreach ($this->maniaControl->getMapManager()->getMaps() as $map) {
|
||||
$index = array_search($map->uid, $mapUids);
|
||||
@ -404,19 +444,19 @@ class MatchManagerTMWTDuoIntegration implements CallbackListener, ManialinkPageA
|
||||
}
|
||||
|
||||
if (count($mapUids) !== count($mapList)) {
|
||||
Logger::logError("Missing maps: ". implode(' ', array_diff($mapUids, $mapList)));
|
||||
$this->logError("Missing maps: ". implode(' ', array_diff($mapUids, $mapList)));
|
||||
}
|
||||
|
||||
ksort($mapList);
|
||||
|
||||
$this->maniaControl->getClient()->chooseNextMapList(array_values($mapList));
|
||||
} catch (\Throwable $th) {
|
||||
Logger::logError("Can't apply map list: ". $th->getMessage());
|
||||
$this->maniaControl->getChat()->sendError("Can't apply map list: ". $th->getMessage());
|
||||
$this->logError("Can't apply map list: ". $th->getMessage());
|
||||
$this->maniaControl->getChat()->sendError($this->MatchManagerCore->getChatPrefix() ."Can't apply map list: ". $th->getMessage());
|
||||
}
|
||||
|
||||
$this->state = self::STATE_MATCH;
|
||||
Logger::log('Sending match start callback');
|
||||
$this->log('Sending match start callback');
|
||||
$this->maniaControl->getClient()->triggerModeScriptEvent(self::XMLRPC_METHOD_MATCHSTARTED, [], true);
|
||||
$this->maniaControl->getMapManager()->getMapActions()->skipMap();
|
||||
}, $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_PICKANDBAN_RESULTDURATION));
|
||||
@ -431,8 +471,8 @@ class MatchManagerTMWTDuoIntegration implements CallbackListener, ManialinkPageA
|
||||
*/
|
||||
public function handlePluginUnloaded(string $pluginClass, Plugin $plugin) {
|
||||
if ($pluginClass == self::MATCHMANAGERCORE_PLUGIN) {
|
||||
$this->maniaControl->getChat()->sendErrorToAdmins(self::PLUGIN_NAME . " disabled because MatchManager Core is now disabled");
|
||||
$this->maniaControl->getPluginManager()->deactivatePlugin((get_class()));
|
||||
$this->maniaControl->getChat()->sendErrorToAdmins($this->MatchManagerCore->getChatPrefix() .self::PLUGIN_NAME . " disabled because MatchManager Core is now disabled");
|
||||
$this->maniaControl->getPluginManager()->deactivatePlugin((get_class($this)));
|
||||
}
|
||||
}
|
||||
|
||||
@ -446,7 +486,7 @@ class MatchManagerTMWTDuoIntegration implements CallbackListener, ManialinkPageA
|
||||
if ($setting->setting === self::SETTING_PICKANDBAN_ENABLE || $setting->setting === $this->MatchManagerCore::SETTING_MATCH_SETTINGS_MODE) {
|
||||
if ($this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_PICKANDBAN_ENABLE)) {
|
||||
if ($this->maniaControl->getSettingManager()->getSettingValue($this->MatchManagerCore, $this->MatchManagerCore::SETTING_MATCH_SETTINGS_MODE) !== "All from the plugin") {
|
||||
$this->maniaControl->getChat()->sendErrorToAdmins('TMWT Pick and bans are only supported in Match Manager Core "All from the plugin" mode');
|
||||
$this->maniaControl->getChat()->sendErrorToAdmins($this->MatchManagerCore->getChatPrefix() .'TMWT Pick and bans are only supported in Match Manager Core "All from the plugin" mode');
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -456,7 +496,7 @@ class MatchManagerTMWTDuoIntegration implements CallbackListener, ManialinkPageA
|
||||
* @see \ManiaControl\Plugins\Plugin::unload()
|
||||
*/
|
||||
public function unload() {
|
||||
$this->MatchManagerCore->removeCanStartFunction($this, 'canStartMatch');
|
||||
if ($this->MatchManagerCore !== null) $this->MatchManagerCore->removeCanStartFunction($this, 'canStartMatch');
|
||||
/** @var \MatchManagerSuite\MatchManagerAdminUI|null */
|
||||
$adminUIPlugin = $this->maniaControl->getPluginManager()->getPlugin(self::MATCHMANAGERADMINUI_PLUGIN);
|
||||
if ($adminUIPlugin !== null) {
|
||||
|
Reference in New Issue
Block a user