diff --git a/application/core/ManiaControl.php b/application/core/ManiaControl.php index b47c7d95..8e2d77f1 100644 --- a/application/core/ManiaControl.php +++ b/application/core/ManiaControl.php @@ -36,6 +36,7 @@ require_once __DIR__ . '/Maps/Map.php'; require_once __DIR__ . '/Maps/MapManager.php'; require_once __DIR__ . '/Maps/MapList.php'; require_once __DIR__ . '/Players/PlayerManager.php'; +require_once __DIR__ . '/Players/PlayerActions.php'; require_once __DIR__ . '/Plugins/PluginManager.php'; require_once __DIR__ . '/Players/PlayerList.php'; require_once __DIR__ . '/Server/Server.php'; diff --git a/application/core/Players/PlayerActions.php b/application/core/Players/PlayerActions.php new file mode 100644 index 00000000..359a275c --- /dev/null +++ b/application/core/Players/PlayerActions.php @@ -0,0 +1,59 @@ +maniaControl = $maniaControl; + } + + /** + * Forces a Player to a certain team + * @param $adminLogin + * @param $login + * @param $teamId + */ + public function forcePlayerToTeam($adminLogin, $login, $teamId){ + $this->maniaControl->client->query('ForcePlayerTeam', $login, $teamId); //TODO bestätigung und chatnachricht + } + + /** + * Forces a Player to spectator + * @param $adminLogin + * @param $login + * @param int $spectatorState + */ + public function forcePlayerToSpectator($adminLogin, $login, $spectatorState = self::SPECTATOR_BUT_KEEP_SELECTABLE){ + $this->maniaControl->client->query('ForceSpectator', $login, $spectatorState); //TODO bestätigung und chatnachricht + } + + public function warnPlayer($adminLogin, $login, $message = ''){ + + } + + public function kickPlayer($adminLogin, $login, $message = ''){ + + } + + public function banPlayer($adminLogin, $login, $message = ''){ + + } +} \ No newline at end of file diff --git a/application/core/Players/PlayerList.php b/application/core/Players/PlayerList.php index cec1e26d..1e4809a0 100644 --- a/application/core/Players/PlayerList.php +++ b/application/core/Players/PlayerList.php @@ -477,7 +477,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $label->setY($y); $label->setStyle($style); $label->setTextSize($textSize); - $label->setText("Add Operator"); + $label->setText("Add Moderator"); $label->setTextColor($textColor); //render and display xml @@ -511,29 +511,43 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { */ public function handleManialinkPageAnswer(array $callback){ $actionId = $callback[1][2]; - $forceBlue = (strpos($actionId, self::ACTION_FORCE_BLUE) === 0); - $forceRed = (strpos($actionId, self::ACTION_FORCE_RED) === 0); - $forceSpec = (strpos($actionId, self::ACTION_FORCE_SPEC) === 0); - $playerAdvanced = (strpos($actionId, self::ACTION_PLAYER_ADV) === 0); - - if(!$forceBlue && !$forceRed && !$forceSpec && !$playerAdvanced) - return; - $actionArray = explode(".", $actionId); - //TODO maybe with ids isntead of logins, lower network traffic - if($forceBlue){ - $this->maniaControl->client->query('ForcePlayerTeam', $actionArray[2], 0); //TODO bestätigung - }else if($forceRed){ - $this->maniaControl->client->query('ForcePlayerTeam', $actionArray[2], 1); //TODO bestätigung - }else if($forceSpec){ - $this->maniaControl->client->query('ForceSpectator', $actionArray[2], 3); //TODO bestätigung - }else if($playerAdvanced){ - $player = $this->maniaControl->playerManager->getPlayer($callback[1][1]); - $this->advancedPlayerWidget($callback, $player, $actionArray[2]); - + //TODO maybe with ids instead of logins, lower network traffic + switch($actionArray[0].".".$actionArray[1]){ + case self::ACTION_FORCE_BLUE: + $this->maniaControl->playerManager->playerActions->forcePlayerToTeam($callback[1][1],$actionArray[2],playerActions::BLUE_TEAM); + break; + case self::ACTION_FORCE_RED: + $this->maniaControl->playerManager->playerActions->forcePlayerToTeam($callback[1][1],$actionArray[2],playerActions::RED_TEAM); + break; + case self::ACTION_FORCE_SPEC: + $this->maniaControl->playerManager->playerActions->forcePlayerToSpectator($callback[1][1],$actionArray[2],playerActions::SPECTATOR_BUT_KEEP_SELECTABLE); + break; + case self::ACTION_WARN_PLAYER: + $this->maniaControl->playerManager->playerActions->warnPlayer($callback[1][1],$actionArray[2]); + break; + case self::ACTION_KICK_PLAYER: + $this->maniaControl->playerManager->playerActions->kickPlayer($callback[1][1],$actionArray[2]); + break; + case self::ACTION_BAN_PLAYER: + $this->maniaControl->playerManager->playerActions->banPlayer($callback[1][1],$actionArray[2]); + break; + case self::ACTION_PLAYER_ADV: + $player = $this->maniaControl->playerManager->getPlayer($callback[1][1]); + $this->advancedPlayerWidget($callback, $player, $actionArray[2]); + break; } + + /* + $addMaster = (strpos($actionId, self::ACTION_ADD_AS_MASTER) === 0); + $addAdmin = (strpos($actionId, self::ACTION_ADD_AS_ADMIN) === 0); + $addModerator = (strpos($actionId, self::ACTION_ADD_AS_MOD) === 0); + */ + + + } /** diff --git a/application/core/Players/PlayerManager.php b/application/core/Players/PlayerManager.php index 4b2e58bc..8da4ad24 100644 --- a/application/core/Players/PlayerManager.php +++ b/application/core/Players/PlayerManager.php @@ -5,6 +5,7 @@ namespace ManiaControl\Players; require_once __DIR__ . '/Player.php'; require_once __DIR__ . '/PlayerCommands.php'; +use FML\Controls\Quad; use ManiaControl\Formatter; use ManiaControl\ManiaControl; use ManiaControl\Callbacks\CallbackListener; @@ -24,7 +25,7 @@ class PlayerManager implements CallbackListener { const CB_PLAYERINFOCHANGED = 'PlayerManagerCallback.PlayerInfoChanged'; const TABLE_PLAYERS = 'mc_players'; const SETTING_JOIN_LEAVE_MESSAGES = 'Enable Join & Leave Messages'; - + /** * Private properties */ @@ -32,6 +33,7 @@ class PlayerManager implements CallbackListener { private $playerCommands = null; private $playerList = array(); + public $playerActions = null; /** * Construct player manager * @@ -42,7 +44,9 @@ class PlayerManager implements CallbackListener { $this->initTables(); $this->playerCommands = new PlayerCommands($maniaControl); - + + $this->playerActions = new PlayerActions($maniaControl); + // Init settings $this->maniaControl->settingManager->initSetting($this, self::SETTING_JOIN_LEAVE_MESSAGES, true); @@ -51,6 +55,7 @@ class PlayerManager implements CallbackListener { $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MP_PLAYERCONNECT, $this, 'playerConnect'); $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MP_PLAYERDISCONNECT, $this, 'playerDisconnect'); $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MP_PLAYERINFOCHANGED, $this, 'playerInfoChanged'); + } /** @@ -104,7 +109,7 @@ class PlayerManager implements CallbackListener { $player = new Player($playerInfo); $this->addPlayer($player); } - + // Trigger own callback $this->maniaControl->callbackManager->triggerCallback(self::CB_ONINIT, array(self::CB_ONINIT)); }