renamed server commands class and improved code

This commit is contained in:
Steffen Schröder 2014-07-19 23:29:20 +02:00
parent 57106efa46
commit b5715ebe66
3 changed files with 67 additions and 61 deletions

View File

@ -37,6 +37,8 @@ class Commands implements CallbackListener, CommandListener, ManialinkPageAnswer
const SETTING_PERMISSION_SHOW_SYSTEMINFO = 'Show SystemInfo';
const SETTING_PERMISSION_SHUTDOWN_SERVER = 'Shutdown Server';
const SETTING_PERMISSION_CHANGE_SERVERSETTINGS = 'Change ServerSettings';
const COMMAND_EXTEND_WARMUP = 'WarmUp_Extend';
const COMMAND_FORCE_WARMUP = 'Command_ForceWarmUp';
/*
* Private Properties
@ -58,25 +60,28 @@ class Commands implements CallbackListener, CommandListener, ManialinkPageAnswer
$this->maniaControl->callbackManager->registerCallbackListener(Callbacks::ONINIT, $this, 'handleOnInit');
$this->maniaControl->callbackManager->registerCallbackListener(Callbacks::WARMUPSTATUS, $this, 'handleWarmUpStatus');
// Register for commands
$this->maniaControl->commandManager->registerCommandListener('setservername', $this, 'command_SetServerName', true, 'Sets the ServerName.');
$this->maniaControl->commandManager->registerCommandListener('setpwd', $this, 'command_SetPwd', true, 'Sets play password.');
$this->maniaControl->commandManager->registerCommandListener('setspecpwd', $this, 'command_SetSpecPwd', true, 'Sets spectator password.');
$this->maniaControl->commandManager->registerCommandListener('setmaxplayers', $this, 'command_SetMaxPlayers', true, 'Sets the maximum number of players.');
$this->maniaControl->commandManager->registerCommandListener('setmaxspectators', $this, 'command_SetMaxSpectators', true, 'Sets the maximum number of spectators.');
$this->maniaControl->commandManager->registerCommandListener('shutdownserver', $this, 'command_ShutdownServer', true, 'Shuts down the ManiaPlanet server.');
$this->maniaControl->commandManager->registerCommandListener('systeminfo', $this, 'command_SystemInfo', true, 'Shows system information.');
$this->maniaControl->commandManager->registerCommandListener('setservername', $this, 'commandSetServerName', true, 'Sets the ServerName.');
$this->maniaControl->commandManager->registerCommandListener('setpwd', $this, 'commandSetPwd', true, 'Sets play password.');
$this->maniaControl->commandManager->registerCommandListener('setspecpwd', $this, 'commandSetSpecPwd', true, 'Sets spectator password.');
$this->maniaControl->commandManager->registerCommandListener('setmaxplayers', $this, 'commandSetMaxPlayers', true, 'Sets the maximum number of players.');
$this->maniaControl->commandManager->registerCommandListener('setmaxspectators', $this, 'commandSetMaxSpectators', true, 'Sets the maximum number of spectators.');
$this->maniaControl->commandManager->registerCommandListener('shutdownserver', $this, 'commandShutdownServer', true, 'Shuts down the ManiaPlanet server.');
$this->maniaControl->commandManager->registerCommandListener('systeminfo', $this, 'commandSystemInfo', true, 'Shows system information.');
$this->maniaControl->commandManager->registerCommandListener('cancel', $this, 'commandCancelVote', true, 'Cancels the current vote.');
$this->maniaControl->commandManager->registerCommandListener('cancel', $this, 'command_CancelVote', true, 'Cancels the current vote.');
// Register for page actions
$this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_SET_PAUSE, $this, 'setPause');
$this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_EXTEND_WARMUP, $this, 'commandExtendWarmup');
$this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_END_WARMUP, $this, 'commandEndWarmup');
$this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_CANCEL_VOTE, $this, 'commandCancelVote');
}
/**
* Handle ManiaControl OnInit Callback
*/
public function handleOnInit() {
//Define Permissions
// Define Permissions
$this->maniaControl->authenticationManager->definePermissionLevel(self::SETTING_PERMISSION_SHUTDOWN_SERVER, AuthenticationManager::AUTH_LEVEL_SUPERADMIN);
$this->maniaControl->authenticationManager->definePermissionLevel(self::SETTING_PERMISSION_SHOW_SYSTEMINFO, AuthenticationManager::AUTH_LEVEL_SUPERADMIN);
$this->maniaControl->authenticationManager->definePermissionLevel(self::SETTING_PERMISSION_CHANGE_SERVERSETTINGS, AuthenticationManager::AUTH_LEVEL_ADMIN);
@ -84,56 +89,61 @@ class Commands implements CallbackListener, CommandListener, ManialinkPageAnswer
$this->maniaControl->authenticationManager->definePermissionLevel(self::SETTING_PERMISSION_CANCEL_VOTE, AuthenticationManager::AUTH_LEVEL_MODERATOR);
$this->maniaControl->authenticationManager->definePermissionLevel(self::SETTING_PERMISSION_HANDLE_WARMUP, AuthenticationManager::AUTH_LEVEL_MODERATOR);
//Check if there is WarmUp Enabled in this Mode
//TODO handle the Modescriptevents + answer by an own callback class (answer via closure or dunno)
$this->maniaControl->client->triggerModeScriptEvent("WarmUp_GetStatus");
$this->updateCancelVoteMenuItem();
$this->updateWarmUpMenuItems();
}
// Action cancel Vote
$this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_CANCEL_VOTE, $this, 'command_cancelVote');
/**
* Add the cancel vote menu item
*/
private function updateCancelVoteMenuItem() {
$itemQuad = new Quad_Icons64x64_1();
$itemQuad->setSubStyle($itemQuad::SUBSTYLE_ArrowRed);
$itemQuad->setAction(self::ACTION_CANCEL_VOTE);
$this->maniaControl->actionsMenu->addMenuItem($itemQuad, false, 30, 'Cancel Vote');
}
//Check if Pause exists in current GameMode
/**
* Manage the WarmUp related menu items
*/
private function updateWarmUpMenuItems() {
$pauseExists = false;
try {
$scriptInfos = $this->maniaControl->client->getModeScriptInfo();
} catch (GameModeException $e) {
return;
}
$pauseExists = false;
foreach ($scriptInfos->commandDescs as $param) {
if ($param->name === 'Command_ForceWarmUp') {
$pauseExists = true;
break;
foreach ($scriptInfos->commandDescs as $param) {
if ($param->name === self::COMMAND_FORCE_WARMUP) {
$pauseExists = true;
break;
}
}
$this->maniaControl->client->triggerModeScriptEvent("WarmUp_GetStatus");
} catch (GameModeException $e) {
}
// Set Pause
// Add pause menu item
if ($pauseExists) {
$itemQuad = new Quad_Icons128x32_1();
$itemQuad->setSubStyle($itemQuad::SUBSTYLE_ManiaLinkSwitch);
$itemQuad->setAction(self::ACTION_SET_PAUSE);
$this->maniaControl->actionsMenu->addAdminMenuItem($itemQuad, 13, 'Pauses the current game');
$this->maniaControl->actionsMenu->addAdminMenuItem($itemQuad, 13, 'Pause the current game');
}
}
/**
* Handeling the WarmupStatus Callback, and removes or adds the Menu Items for extending / Stopping warmup
* Handle the WarmupStatus Callback, and removes or adds the Menu Items for extending / Stopping warmup
*
* @param $warmupEnabled
*/
public function handleWarmUpStatus($warmupEnabled) {
if ($warmupEnabled) {
// Extend WarmUp
$this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_EXTEND_WARMUP, $this, 'command_extendWarmup');
// Extend WarmUp menu item
$itemQuad = new Quad_BgRaceScore2();
$itemQuad->setSubStyle($itemQuad::SUBSTYLE_SendScore);
$itemQuad->setAction(self::ACTION_EXTEND_WARMUP);
$this->maniaControl->actionsMenu->addMenuItem($itemQuad, false, 14, 'Extend Warmup');
// Stop WarmUp
$this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_END_WARMUP, $this, 'command_endWarmup');
// Stop WarmUp menu item
$itemQuad = new Quad_Icons64x64_1();
$itemQuad->setSubStyle($itemQuad::SUBSTYLE_ArrowGreen);
$itemQuad->setAction(self::ACTION_END_WARMUP);
@ -150,27 +160,28 @@ class Commands implements CallbackListener, CommandListener, ManialinkPageAnswer
* @param array $chatCallback
* @param Player $player
*/
public function command_CancelVote(array $chatCallback, Player $player) {
public function commandCancelVote(array $chatCallback, Player $player) {
if (!$this->maniaControl->authenticationManager->checkPermission($player, self::SETTING_PERMISSION_CANCEL_VOTE)) {
$this->maniaControl->authenticationManager->sendNotAllowed($player);
return;
}
$this->maniaControl->client->cancelVote();
$this->maniaControl->chat->sendInformation('$<' . $player->nickname . '$> canceled the Vote!');
// Trigger callback
$this->maniaControl->callbackManager->triggerCallback(self::CB_VOTE_CANCELED, $player);
if ($this->maniaControl->client->cancelVote()) {
$this->maniaControl->chat->sendInformation($player->getEscapedNickname() . ' canceled the Vote!');
$this->maniaControl->callbackManager->triggerCallback(self::CB_VOTE_CANCELED, $player);
} else {
$this->maniaControl->chat->sendInformation("There's no vote running currently!", $player);
}
}
/**
* Extends the Warmup
* Extend the WarmUp
*
* @param array $callback
* @param Player $player
*/
public function command_extendWarmup(array $callback, Player $player) {
public function commandExtendWarmup(array $callback, Player $player) {
if (!$this->maniaControl->authenticationManager->checkPermission($player, self::SETTING_PERMISSION_HANDLE_WARMUP)) {
$this->maniaControl->authenticationManager->sendNotAllowed($player);
return;
@ -178,20 +189,18 @@ class Commands implements CallbackListener, CommandListener, ManialinkPageAnswer
try {
$this->maniaControl->client->triggerModeScriptEvent('WarmUp_Extend', '10');
$this->maniaControl->chat->sendInformation('$<' . $player->nickname . '$> extended the WarmUp by 10 seconds!');
} catch (GameModeException $e) {
return;
}
$this->maniaControl->chat->sendInformation('$<' . $player->nickname . '$> extended the WarmUp by 10 seconds!');
}
/**
* Ends the Warmup
* End the WarmUp
*
* @param array $callback
* @param Player $player
*/
public function command_endWarmup(array $callback, Player $player) {
public function commandEndWarmup(array $callback, Player $player) {
if (!$this->maniaControl->authenticationManager->checkPermission($player, self::SETTING_PERMISSION_HANDLE_WARMUP)) {
$this->maniaControl->authenticationManager->sendNotAllowed($player);
return;
@ -199,11 +208,9 @@ class Commands implements CallbackListener, CommandListener, ManialinkPageAnswer
try {
$this->maniaControl->client->triggerModeScriptEvent('WarmUp_Stop', '');
$this->maniaControl->chat->sendInformation('$<' . $player->nickname . '$> stopped the WarmUp!');
} catch (GameModeException $e) {
return;
}
$this->maniaControl->chat->sendInformation('$<' . $player->nickname . '$> stopped the WarmUp!');
}
/**
@ -219,17 +226,16 @@ class Commands implements CallbackListener, CommandListener, ManialinkPageAnswer
}
try {
$this->maniaControl->client->sendModeScriptCommands(array('Command_ForceWarmUp' => true));
$this->maniaControl->chat->sendInformation('$<' . $player->nickname . '$> paused the Game!');
} catch (GameModeException $e) {
return;
}
$this->maniaControl->chat->sendInformation('$<' . $player->nickname . '$> paused the Game!');
}
/**
* Check Stuff each 5 Seconds
*/
public function each5Seconds() {
// TODO: move empty & delayed shutdown code into server class
// Empty shutdown
if ($this->serverShutdownEmpty) {
if ($this->maniaControl->playerManager->getPlayerCount(false) <= 0) {
@ -261,7 +267,7 @@ class Commands implements CallbackListener, CommandListener, ManialinkPageAnswer
* @param array $chat
* @param Player $player
*/
public function command_SystemInfo(array $chat, Player $player) {
public function commandSystemInfo(array $chat, Player $player) {
if (!$this->maniaControl->authenticationManager->checkPermission($player, self::SETTING_PERMISSION_SHOW_SYSTEMINFO)) {
$this->maniaControl->authenticationManager->sendNotAllowed($player);
return;
@ -277,7 +283,7 @@ class Commands implements CallbackListener, CommandListener, ManialinkPageAnswer
* @param array $chat
* @param Player $player
*/
public function command_ShutdownServer(array $chat, Player $player) {
public function commandShutdownServer(array $chat, Player $player) {
if (!$this->maniaControl->authenticationManager->checkPermission($player, self::SETTING_PERMISSION_SHUTDOWN_SERVER)) {
$this->maniaControl->authenticationManager->sendNotAllowed($player);
return;
@ -316,7 +322,7 @@ class Commands implements CallbackListener, CommandListener, ManialinkPageAnswer
* @param array $chat
* @param Player $player
*/
public function command_SetServerName(array $chat, Player $player) {
public function commandSetServerName(array $chat, Player $player) {
if (!$this->maniaControl->authenticationManager->checkPermission($player, self::SETTING_PERMISSION_CHANGE_SERVERSETTINGS)) {
$this->maniaControl->authenticationManager->sendNotAllowed($player);
return;
@ -337,7 +343,7 @@ class Commands implements CallbackListener, CommandListener, ManialinkPageAnswer
* @param array $chatCallback
* @param Player $player
*/
public function command_SetPwd(array $chatCallback, Player $player) {
public function commandSetPwd(array $chatCallback, Player $player) {
if (!$this->maniaControl->authenticationManager->checkPermission($player, self::SETTING_PERMISSION_CHANGE_SERVERSETTINGS)) {
$this->maniaControl->authenticationManager->sendNotAllowed($player);
return;
@ -359,7 +365,7 @@ class Commands implements CallbackListener, CommandListener, ManialinkPageAnswer
* @param array $chatCallback
* @param Player $player
*/
public function command_SetSpecPwd(array $chatCallback, Player $player) {
public function commandSetSpecPwd(array $chatCallback, Player $player) {
if (!$this->maniaControl->authenticationManager->checkPermission($player, self::SETTING_PERMISSION_CHANGE_SERVERSETTINGS)) {
$this->maniaControl->authenticationManager->sendNotAllowed($player);
return;
@ -381,7 +387,7 @@ class Commands implements CallbackListener, CommandListener, ManialinkPageAnswer
* @param array $chatCallback
* @param Player $player
*/
public function command_SetMaxPlayers(array $chatCallback, Player $player) {
public function commandSetMaxPlayers(array $chatCallback, Player $player) {
if (!$this->maniaControl->authenticationManager->checkPermission($player, self::SETTING_PERMISSION_CHANGE_SERVERSETTINGS)) {
$this->maniaControl->authenticationManager->sendNotAllowed($player);
return;
@ -411,7 +417,7 @@ class Commands implements CallbackListener, CommandListener, ManialinkPageAnswer
* @param array $chatCallback
* @param Player $player
*/
public function command_SetMaxSpectators(array $chatCallback, Player $player) {
public function commandSetMaxSpectators(array $chatCallback, Player $player) {
if (!$this->maniaControl->authenticationManager->checkPermission($player, self::SETTING_PERMISSION_CHANGE_SERVERSETTINGS)) {
$this->maniaControl->authenticationManager->sendNotAllowed($player);
return;

View File

@ -35,7 +35,7 @@ class Server implements CallbackListener {
public $login = null;
public $titleId = null;
public $directory = null;
public $serverCommands = null;
public $commands = null;
public $usageReporter = null;
public $rankingManager = null;
public $scriptManager = null;
@ -56,7 +56,7 @@ class Server implements CallbackListener {
$this->initTables();
$this->directory = new Directory($maniaControl);
$this->serverCommands = new ServerCommands($maniaControl);
$this->commands = new Commands($maniaControl);
$this->usageReporter = new UsageReporter($maniaControl);
$this->rankingManager = new RankingManager($maniaControl);
$this->scriptManager = new ScriptManager($maniaControl);

View File

@ -26,7 +26,7 @@ use ManiaControl\Players\Player;
use ManiaControl\Players\PlayerManager;
use ManiaControl\Plugins\Plugin;
use ManiaControl\Server\Server;
use ManiaControl\Server\ServerCommands;
use ManiaControl\Server\Commands;
use ManiaControl\Utils\ColorUtil;
use Maniaplanet\DedicatedServer\Structures\VoteRatio;
use Maniaplanet\DedicatedServer\Xmlrpc\ChangeInProgressException;
@ -134,7 +134,7 @@ class CustomVotesPlugin implements CommandListener, CallbackListener, ManialinkP
$this->maniaControl->commandManager->registerCommandListener('vote', $this, 'chat_vote', false, 'Starts a new vote.');
$this->maniaControl->timerManager->registerTimerListening($this, 'handle1Second', 1000);
$this->maniaControl->callbackManager->registerCallbackListener(ServerCommands::CB_VOTE_CANCELED, $this, 'handleVoteCanceled');
$this->maniaControl->callbackManager->registerCallbackListener(Commands::CB_VOTE_CANCELED, $this, 'handleVoteCanceled');
$this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_POSITIVE_VOTE, $this, 'handlePositiveVote');
$this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_NEGATIVE_VOTE, $this, 'handleNegativeVote');