diff --git a/application/core/Manialinks/ManialinkManager.php b/application/core/Manialinks/ManialinkManager.php index e9410a8f..7ed547b2 100644 --- a/application/core/Manialinks/ManialinkManager.php +++ b/application/core/Manialinks/ManialinkManager.php @@ -91,7 +91,7 @@ class ManialinkManager implements ManialinkPageAnswerListener, CallbackListener */ public function unregisterManialinkPageAnswerListener(ManialinkPageAnswerListener $listener) { $keys = array_keys($this->pageAnswerListeners, $listener); - foreach ($keys as $key) { + foreach($keys as $key) { unset($this->pageAnswerListeners[$key]); } @@ -112,7 +112,7 @@ class ManialinkManager implements ManialinkPageAnswerListener, CallbackListener return; } // Inform page answer listeners - foreach ($this->pageAnswerListeners[$actionId] as $listener) { + foreach($this->pageAnswerListeners[$actionId] as $listener) { call_user_func(array($listener[0], $listener[1]), $callback, $player); } } @@ -135,7 +135,7 @@ class ManialinkManager implements ManialinkPageAnswerListener, CallbackListener } if(is_array($logins)) { $success = true; - foreach ($logins as $login) { + foreach($logins as $login) { $subSuccess = $this->maniaControl->client->query('SendDisplayManialinkPageToLogin', $login, $manialinkText, $timeout, $hideOnClick); if(!$subSuccess) { $success = false; @@ -212,7 +212,7 @@ class ManialinkManager implements ManialinkPageAnswerListener, CallbackListener * @param Frame $frame * @param array $labelStrings * @param array $properties - * @return array Returns the frames (to add special Properties later) + * @return array Returns the labels (to add special Properties later) */ public function labelLine(Frame $frame, array $labelStrings, array $properties = array()) { // TODO overwrite standard properties with properties from array @@ -225,8 +225,8 @@ class ManialinkManager implements ManialinkPageAnswerListener, CallbackListener $profile = (isset($properties['profile']) ? $properties['profile'] : false); $script = (isset($properties['script']) ? $properties['script'] : null); - $frames = array(); - foreach ($labelStrings as $text => $x) { + $labels = array(); + foreach($labelStrings as $text => $x) { $label = new Label_Text(); $frame->add($label); $label->setHAlign($hAlign); @@ -240,9 +240,9 @@ class ManialinkManager implements ManialinkPageAnswerListener, CallbackListener $script->addProfileButton($label, $profile); } - $frames[] = $frame; // add Frame to the frames array + $labels[] = $label; // add Label to the labels array } - return $frames; + return $labels; } } diff --git a/application/core/Players/Player.php b/application/core/Players/Player.php index 183679d8..fa2e49fd 100644 --- a/application/core/Players/Player.php +++ b/application/core/Players/Player.php @@ -41,6 +41,7 @@ class Player { if(!$rpcInfos) { return; } + $this->pid = $rpcInfos['PlayerId']; $this->login = $rpcInfos['Login']; $this->nickname = Formatter::stripDirtyCodes($rpcInfos['NickName']); diff --git a/application/core/Players/PlayerDetailed.php b/application/core/Players/PlayerDetailed.php index 053ab108..693f2621 100644 --- a/application/core/Players/PlayerDetailed.php +++ b/application/core/Players/PlayerDetailed.php @@ -1,14 +1,83 @@ maniaControl = $maniaControl; + + /* $this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_CLOSE_PLAYER_ADV, $this, 'closePlayerAdvancedWidget'); + $this->maniaControl->callbackManager->registerCallbackListener(ManialinkManager::CB_MAIN_WINDOW_CLOSED, $this, 'closeWidget'); + $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MP_PLAYERMANIALINKPAGEANSWER, $this, 'handleManialinkPageAnswer'); + + // Update Widget Events + $this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERINFOCHANGED, $this, 'updateWidget'); + $this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERDISCONNECTED, $this, 'updateWidget'); + $this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERJOINED, $this, 'updateWidget'); + $this->maniaControl->callbackManager->registerCallbackListener(AuthenticationManager::CB_AUTH_LEVEL_CHANGED, $this, 'updateWidget'); */ + + // settings + $this->width = $this->maniaControl->manialinkManager->styleManager->getListWidgetsWidth(); + $this->height = $this->maniaControl->manialinkManager->styleManager->getListWidgetsHeight(); + $this->quadStyle = $this->maniaControl->manialinkManager->styleManager->getDefaultMainWindowStyle(); + $this->quadSubstyle = $this->maniaControl->manialinkManager->styleManager->getDefaultMainWindowSubStyle(); + + } + + + public function showPlayerDetailed(Player $player, $targetLogin) { + var_dump($player); + $maniaLink = new ManiaLink(ManialinkManager::MAIN_MLID); + + // Create script and features + $script = new Script(); + $maniaLink->setScript($script); + + // mainframe + $frame = new Frame(); + $maniaLink->add($frame); + $frame->setSize($this->width, $this->height); + $frame->setPosition(0, 0); + + // Background Quad + $backgroundQuad = new Quad(); + $frame->add($backgroundQuad); + $backgroundQuad->setSize($this->width, $this->height); + $backgroundQuad->setStyles($this->quadStyle, $this->quadSubstyle); + + // Add Close Quad (X) + $closeQuad = new Quad_Icons64x64_1(); + $frame->add($closeQuad); + $closeQuad->setPosition($this->width * 0.483, $this->height * 0.467, 3); + $closeQuad->setSize(6, 6); + $closeQuad->setSubStyle(Quad_Icons64x64_1::SUBSTYLE_QuitRace); + $closeQuad->setAction(ManialinkManager::ACTION_CLOSEWIDGET); + + // render and display xml + $this->maniaControl->manialinkManager->displayWidget($maniaLink, $player); + } } \ No newline at end of file diff --git a/application/core/Players/PlayerList.php b/application/core/Players/PlayerList.php index a89ad3aa..4e5d69c5 100644 --- a/application/core/Players/PlayerList.php +++ b/application/core/Players/PlayerList.php @@ -33,21 +33,22 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { /** * Constants */ - const ACTION_FORCE_RED = 'PlayerList.ForceRed'; - const ACTION_FORCE_BLUE = 'PlayerList.ForceBlue'; - const ACTION_FORCE_SPEC = 'PlayerList.ForceSpec'; - const ACTION_PLAYER_ADV = 'PlayerList.PlayerAdvancedActions'; - const ACTION_CLOSE_PLAYER_ADV = 'PlayerList.ClosePlayerAdvWidget'; - const ACTION_MUTE_PLAYER = 'PlayerList.MutePlayer'; - const ACTION_UNMUTE_PLAYER = 'PlayerList.UnMutePlayer'; - const ACTION_WARN_PLAYER = 'PlayerList.WarnPlayer'; - const ACTION_KICK_PLAYER = 'PlayerList.KickPlayer'; - const ACTION_BAN_PLAYER = 'PlayerList.BanPlayer'; - const ACTION_ADD_AS_MASTER = 'PlayerList.PlayerAddAsMaster'; - const ACTION_ADD_AS_ADMIN = 'PlayerList.PlayerAddAsAdmin'; - const ACTION_ADD_AS_MOD = 'PlayerList.PlayerAddAsModerator'; - const ACTION_REVOKE_RIGHTS = 'PlayerList.RevokeRights'; - const SHOWN_MAIN_WINDOW = -1; + const ACTION_FORCE_RED = 'PlayerList.ForceRed'; + const ACTION_FORCE_BLUE = 'PlayerList.ForceBlue'; + const ACTION_FORCE_SPEC = 'PlayerList.ForceSpec'; + const ACTION_PLAYER_ADV = 'PlayerList.PlayerAdvancedActions'; + const ACTION_CLOSE_PLAYER_ADV = 'PlayerList.ClosePlayerAdvWidget'; + const ACTION_MUTE_PLAYER = 'PlayerList.MutePlayer'; + const ACTION_UNMUTE_PLAYER = 'PlayerList.UnMutePlayer'; + const ACTION_WARN_PLAYER = 'PlayerList.WarnPlayer'; + const ACTION_KICK_PLAYER = 'PlayerList.KickPlayer'; + const ACTION_BAN_PLAYER = 'PlayerList.BanPlayer'; + const ACTION_ADD_AS_MASTER = 'PlayerList.PlayerAddAsMaster'; + const ACTION_ADD_AS_ADMIN = 'PlayerList.PlayerAddAsAdmin'; + const ACTION_ADD_AS_MOD = 'PlayerList.PlayerAddAsModerator'; + const ACTION_REVOKE_RIGHTS = 'PlayerList.RevokeRights'; + const ACTION_OPEN_PLAYER_DETAILED = 'PlayerList.OpenPlayerDetailed'; + const SHOWN_MAIN_WINDOW = -1; /** * Private properties */ @@ -59,7 +60,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { private $playersListShown = array(); /** - * Create a new server commands instance + * Create a PlayerList instance * * @param ManiaControl $maniaControl */ @@ -164,11 +165,14 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $lineQuad->setZ(0.001); } - // $array = array($i => $x + 5, $listPlayer->nickname => $x + 10, $listPlayer->login => $x + 50, $listPlayer->ladderRank => - // $x + 60, $listPlayer->ladderScore => $x + 70, $path => $x + 85); $array = array($i => $x + 5, $listPlayer->nickname => $x + 18, $listPlayer->login => $x + 60, $path => $x + 91); - // $properties = array('profile' => $listPlayer->login, 'script' => $script); - $this->maniaControl->manialinkManager->labelLine($playerFrame, $array); + $frames = $this->maniaControl->manialinkManager->labelLine($playerFrame, $array); + + /** @var Label $nicknameLabel */ + $nicknameLabel = $frames[1]; + $nicknameLabel->setAction(self::ACTION_OPEN_PLAYER_DETAILED . '.' . $listPlayer->login); + + $playerFrame->setY($y); // Team Emblem @@ -576,7 +580,12 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener { $adminLogin = $callback[1][1]; $targetLogin = $actionArray[2]; + var_dump($action); switch($action) { + case self::ACTION_OPEN_PLAYER_DETAILED: + $player = $this->maniaControl->playerManager->getPlayer($adminLogin); + $this->maniaControl->playerManager->playerDetailed->showPlayerDetailed($player, $targetLogin); + break; case self::ACTION_FORCE_BLUE: $this->maniaControl->playerManager->playerActions->forcePlayerToTeam($adminLogin, $targetLogin, PlayerActions::BLUE_TEAM); break; diff --git a/application/core/Players/PlayerManager.php b/application/core/Players/PlayerManager.php index 65a8fd86..0b4c0287 100644 --- a/application/core/Players/PlayerManager.php +++ b/application/core/Players/PlayerManager.php @@ -4,6 +4,7 @@ namespace ManiaControl\Players; require_once __DIR__ . '/Player.php'; require_once __DIR__ . '/PlayerCommands.php'; +require_once __DIR__ . '/PlayerDetailed.php'; use ManiaControl\Callbacks\CallbackListener; use ManiaControl\Callbacks\CallbackManager; @@ -33,6 +34,7 @@ class PlayerManager implements CallbackListener { */ public $playerActions = null; public $playerCommands = null; + public $playerDetailed = null; public $playerList = array(); /** @@ -51,6 +53,7 @@ class PlayerManager implements CallbackListener { $this->playerCommands = new PlayerCommands($maniaControl); $this->playerActions = new PlayerActions($maniaControl); + $this->playerDetailed = new PlayerDetailed($maniaControl); // Init settings $this->maniaControl->settingManager->initSetting($this, self::SETTING_JOIN_LEAVE_MESSAGES, true);