slight performance improve of manialinks

This commit is contained in:
kremsy
2017-05-09 13:15:16 +02:00
parent a15fcefba5
commit fc02be2352
5 changed files with 55 additions and 34 deletions

View File

@ -116,20 +116,30 @@ class ActionsMenu implements CallbackListener, ManialinkPageAnswerListener, Usag
if (!$this->initCompleted) {
return;
}
$players = $this->maniaControl->getPlayerManager()->getPlayers();
foreach ($players as $player) {
$manialink = $this->buildMenuIconsManialink($player);
$this->maniaControl->getManialinkManager()->sendManialink($manialink, $player->login);
//Send Menu to Admins
$admins = $this->maniaControl->getAuthenticationManager()->getConnectedAdmins(AuthenticationManager::AUTH_LEVEL_MODERATOR);
if (!empty($admins)) {
$manialink = $this->buildMenuIconsManialink(true);
$this->maniaControl->getManialinkManager()->sendManialink($manialink, $admins);
}
//Send Menu to Players - Players with No Admin Permisssions
$players = $this->maniaControl->getAuthenticationManager()->getConnectedPlayers();
if (!empty($players)) {
$manialink = $this->buildMenuIconsManialink(false);
$this->maniaControl->getManialinkManager()->sendManialink($manialink, $players);
}
}
/**
* Builds the Manialink
*
* @param Player $player
* @param $admin
* @return ManiaLink
*/
private function buildMenuIconsManialink(Player $player) {
private function buildMenuIconsManialink($admin = false) {
$posX = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_MENU_POSX);
$itemSize = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_MENU_ITEMSIZE);
$quadStyle = $this->maniaControl->getManialinkManager()->getStyleManager()->getDefaultQuadStyle();
@ -147,7 +157,7 @@ class ActionsMenu implements CallbackListener, ManialinkPageAnswerListener, Usag
/*
* Admin Menu
*/
if ($this->maniaControl->getAuthenticationManager()->checkRight($player, AuthenticationManager::AUTH_LEVEL_MODERATOR)) {
if ($admin) {
// Admin Menu Icon Frame
$iconFrame = new Frame();
$frame->addChild($iconFrame);
@ -327,7 +337,12 @@ class ActionsMenu implements CallbackListener, ManialinkPageAnswerListener, Usag
* @param Player $player
*/
public function handlePlayerJoined(Player $player) {
$maniaLink = $this->buildMenuIconsManialink($player);
if ($this->maniaControl->getAuthenticationManager()->checkPermission($player, AuthenticationManager::AUTH_LEVEL_MODERATOR)) {
$maniaLink = $this->buildMenuIconsManialink(true);
} else {
$maniaLink = $this->buildMenuIconsManialink(false);
}
$this->maniaControl->getManialinkManager()->sendManialink($maniaLink, $player);
}

View File

@ -287,6 +287,24 @@ class AuthenticationManager implements CallbackListener, EchoListener, Communica
return $admins;
}
/**
* Get all connected Players with less permission than the given Auth Level
*
* @api
* @param int $authLevel
* @return Player[]
*/
public function getConnectedPlayers($authLevel = self::AUTH_LEVEL_MODERATOR) {
$players = $this->maniaControl->getPlayerManager()->getPlayers();
$playerArray = array();
foreach ($players as $player) {
if (!self::checkRight($player, $authLevel)) {
array_push($playerArray, $player);
}
}
return $playerArray;
}
/**
* Check whether the Player has enough Rights
*