exceptions spectator actions

This commit is contained in:
kremsy 2014-01-16 21:51:25 +01:00 committed by Steffen Schröder
parent 671c934f2b
commit e71b763075
2 changed files with 28 additions and 8 deletions

View File

@ -11,6 +11,8 @@ use ManiaControl\Admin\AuthenticationManager;
use ManiaControl\Formatter; use ManiaControl\Formatter;
use ManiaControl\ManiaControl; use ManiaControl\ManiaControl;
use ManiaControl\Manialinks\ManialinkManager; use ManiaControl\Manialinks\ManialinkManager;
use Maniaplanet\DedicatedServer\InvalidArgumentException;
use Maniaplanet\DedicatedServer\Xmlrpc\Exception;
/** /**
* PlayerActions Class * PlayerActions Class
@ -82,15 +84,20 @@ class PlayerActions {
return; return;
} }
$success = $this->maniaControl->client->forceSpectator($target->login, self::SPECTATOR_PLAYER); try {
if(!$success) { $this->maniaControl->client->forceSpectator($target->login, self::SPECTATOR_PLAYER);
} catch(Exception $e) {
//TODO $e error text
$this->maniaControl->chat->sendError('Error occurred: ' . $this->maniaControl->getClientErrorText(), $admin->login); $this->maniaControl->chat->sendError('Error occurred: ' . $this->maniaControl->getClientErrorText(), $admin->login);
return; return;
} }
if($userIsAbleToSelect) { if($userIsAbleToSelect) {
$success = $this->maniaControl->client->forceSpectator($target->login, self::SPECTATOR_USER_SELECTABLE); try {
if(!$success) { $this->maniaControl->client->forceSpectator($target->login, self::SPECTATOR_USER_SELECTABLE);
} catch(Exception $e) {
//TODO $e error text
$this->maniaControl->chat->sendError('Error occurred: ' . $this->maniaControl->getClientErrorText(), $admin->login); $this->maniaControl->chat->sendError('Error occurred: ' . $this->maniaControl->getClientErrorText(), $admin->login);
return; return;
} }
@ -161,8 +168,10 @@ class PlayerActions {
} }
$target = $this->maniaControl->playerManager->getPlayer($targetLogin); $target = $this->maniaControl->playerManager->getPlayer($targetLogin);
$success = $this->maniaControl->client->forceSpectator($target->login, $spectatorState); try {
if(!$success) { $this->maniaControl->client->forceSpectator($target->login, $spectatorState);
} catch(Exception $e) {
//TODO error message from $e
$this->maniaControl->chat->sendError('Error occurred: ' . $this->maniaControl->getClientErrorText(), $admin->login); $this->maniaControl->chat->sendError('Error occurred: ' . $this->maniaControl->getClientErrorText(), $admin->login);
return; return;
} }
@ -174,7 +183,12 @@ class PlayerActions {
if($releaseSlot) { if($releaseSlot) {
// Free player slot // Free player slot
//$this->maniaControl->client->spectatorReleasePlayerSlot($target->login); //TODO not in spec exception mp crash try {
$this->maniaControl->client->spectatorReleasePlayerSlot($target->login);
} catch(InvalidArgumentException $e) {
//TODO error message from $e
$this->maniaControl->chat->sendError('Error occurred: ' . $this->maniaControl->getClientErrorText(), $admin->login);
}
} }
} }

View File

@ -22,6 +22,8 @@ use ManiaControl\Formatter;
use ManiaControl\ManiaControl; use ManiaControl\ManiaControl;
use ManiaControl\Manialinks\ManialinkManager; use ManiaControl\Manialinks\ManialinkManager;
use ManiaControl\Manialinks\ManialinkPageAnswerListener; use ManiaControl\Manialinks\ManialinkPageAnswerListener;
use Maniaplanet\DedicatedServer\InvalidArgumentException;
use Maniaplanet\DedicatedServer\Xmlrpc\Exception;
/** /**
* PlayerList Widget Class * PlayerList Widget Class
@ -593,7 +595,11 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener {
switch($action) { switch($action) {
case self::ACTION_SPECTATE_PLAYER: case self::ACTION_SPECTATE_PLAYER:
$this->maniaControl->client->forceSpectator($adminLogin, PlayerActions::SPECTATOR_BUT_KEEP_SELECTABLE); $this->maniaControl->client->forceSpectator($adminLogin, PlayerActions::SPECTATOR_BUT_KEEP_SELECTABLE);
//$this->maniaControl->client->forceSpectatorTarget($adminLogin, $targetLogin, 1); //TODO mc crash player is not a spectator try {
$this->maniaControl->client->forceSpectatorTarget($adminLogin, $targetLogin, 1); //TODO mc crash player is not a spectator
} catch(Exception $e) {
//TODO error message from $e
}
break; break;
case self::ACTION_OPEN_PLAYER_DETAILED: case self::ACTION_OPEN_PLAYER_DETAILED:
$player = $this->maniaControl->playerManager->getPlayer($adminLogin); $player = $this->maniaControl->playerManager->getPlayer($adminLogin);