add copy buttons + rework some interfaces

This commit is contained in:
Beu
2025-07-25 17:13:33 +02:00
parent fd252c28d2
commit acc8c231c1
5 changed files with 207 additions and 47 deletions

View File

@@ -3,8 +3,10 @@
namespace ManiaControl\Admin;
use FML\Controls\Frame;
use FML\Controls\Label;
use FML\Controls\Labels\Label_Button;
use FML\Controls\Labels\Label_Text;
use FML\Controls\Quad;
use FML\Controls\Quads\Quad_BgRaceScore2;
use FML\Controls\Quads\Quad_BgsPlayerCard;
use FML\Controls\Quads\Quad_UIConstruction_Buttons;
@@ -20,6 +22,7 @@ use ManiaControl\Manialinks\LabelLine;
use ManiaControl\Manialinks\ManialinkManager;
use ManiaControl\Manialinks\ManialinkPageAnswerListener;
use ManiaControl\Players\Player;
use ManiaControl\Utils\Formatter;
/**
* Widget Class listing Authorized Players
@@ -118,11 +121,14 @@ class AdminLists implements ManialinkPageAnswerListener, CallbackListener, Usage
$frame->addChild($headFrame);
$headFrame->setY($posY - 5);
$mainFieldWidth = (($width - 45) / 3) - 2;
$labelLine = new LabelLine($headFrame);
$labelLine->addLabelEntryText('Id', $posX + 5);
$labelLine->addLabelEntryText('Nickname', $posX + 18);
$labelLine->addLabelEntryText('Login', $posX + 70);
$labelLine->addLabelEntryText('Actions', $posX + 120);
$labelLine->addLabelEntryText('Login', $posX + 18 + $mainFieldWidth + 2);
$labelLine->addLabelEntryText('Location', $posX + 18 + ($mainFieldWidth + 2) * 2);
$labelLine->addLabelEntryText('Actions', $posX + $width - 18);
$labelLine->render();
$index = 1;
@@ -151,10 +157,13 @@ class AdminLists implements ManialinkPageAnswerListener, CallbackListener, Usage
$lineQuad->setZ(-0.1);
}
$path = $admin->getProvince();
$labelLine = new LabelLine($playerFrame);
$labelLine->addLabelEntryText($index, $posX + 5, 13);
$labelLine->addLabelEntryText($admin->nickname, $posX + 18, 52);
$labelLine->addLabelEntryText($admin->login, $posX + 70, 48);
$labelLine->addLabelEntryText($admin->nickname, $posX + 18, $mainFieldWidth - 10);
$labelLine->addLabelEntryText($admin->login, $posX + 18 + $mainFieldWidth + 2, $mainFieldWidth - 6);
$labelLine->addLabelEntryText($path, $posX + 18 + ($mainFieldWidth + 2) * 2 + 5, $mainFieldWidth - 2, '', true);
$labelLine->render();
// Level Quad
@@ -174,6 +183,52 @@ class AdminLists implements ManialinkPageAnswerListener, CallbackListener, Usage
$description = $this->maniaControl->getAuthenticationManager()->getAuthLevelName($admin) . " " . $admin->nickname;
$rightLabel->addTooltipLabelFeature($descriptionLabel, $description);
// Copy admin name
$quad = new Quad();
$playerFrame->addChild($quad);
$quad->setX($posX + 18 + $mainFieldWidth - 3);
$quad->setSize(3., 3.);
$quad->setStyle('UICommon64_1');
$quad->setSubStyle('Copy_light');
$quad->addClipboardFeature($admin->nickname);
$description = 'Copy player name';
$quad->addTooltipLabelFeature($descriptionLabel, $description);
// Trackmania.io button
$label = new Label();
$playerFrame->addChild($label);
$label->setX($posX + 18 + ($mainFieldWidth + 2) * 2 - 3);
$label->setSize(3., 3.);
$label->setText('$28d');
$label->setTextSize(.8);
$label->setAreaColor('00000000');
$label->setUrl('https://trackmania.io/#/player/'. $admin->login);
$description = 'Open player profile on Trackmania.io';
$label->addTooltipLabelFeature($descriptionLabel, $description);
// Copy admin login
$quad = new Quad();
$playerFrame->addChild($quad);
$quad->setX($posX + 18 + ($mainFieldWidth + 2) * 2 - 6);
$quad->setSize(3., 3.);
$quad->setStyle('UICommon64_1');
$quad->setSubStyle('Copy_light');
$quad->addClipboardFeature($admin->login);
$description = 'Copy player login';
$quad->addTooltipLabelFeature($descriptionLabel, $description);
$countryCode = Formatter::mapCountry($admin->getCountry());
if ($countryCode !== 'OTH') {
// Nation Quad
$countryQuad = new Quad();
$playerFrame->addChild($countryQuad);
$countryQuad->setImageUrl("file://ZoneFlags/Login/{$admin->login}/country");
$countryQuad->setX($posX + 18 + ($mainFieldWidth + 2) * 2 + 2);
$countryQuad->setSize(4, 4);
$countryQuad->addTooltipLabelFeature($descriptionLabel, '$<' . $admin->nickname . '$> from ' . $admin->path);
}
//Revoke Button
if ($admin->authLevel > 0
&& $this->maniaControl->getAuthenticationManager()->checkRight($player, $admin->authLevel + 1)
@@ -188,7 +243,7 @@ class AdminLists implements ManialinkPageAnswerListener, CallbackListener, Usage
$quad = new Quad_BgsPlayerCard();
$playerFrame->addChild($quad);
$quad->setZ(11);
$quad->setX($posX + 130);
$quad->setX($posX + $width - 12.5);
$quad->setSubStyle($quad::SUBSTYLE_BgPlayerCardBig);
$quad->setSize($quadWidth, $quadHeight);
$quad->setAction(self::ACTION_REVOKE_RIGHTS . "." . $admin->login);
@@ -196,7 +251,7 @@ class AdminLists implements ManialinkPageAnswerListener, CallbackListener, Usage
//Label
$label = new Label_Button();
$playerFrame->addChild($label);
$label->setX($posX + 130);
$label->setX($posX + $width - 12.5);
$quad->setZ(12);
$label->setStyle($style);
$label->setTextSize(1);

View File

@@ -3,6 +3,7 @@
namespace ManiaControl\Commands;
use FML\Controls\Frame;
use FML\Controls\Quad;
use FML\Controls\Quads\Quad_BgsPlayerCard;
use FML\Controls\Quads\Quad_UIConstruction_Buttons;
use FML\ManiaLink;
@@ -232,7 +233,7 @@ class HelpManager implements CommandListener, CallbackListener, ManialinkPageAns
$labelLine = new LabelLine($headFrame);
$labelLine->addLabelEntryText('Command', $posX + 5);
$labelLine->addLabelEntryText('Description', $posX + 50);
$labelLine->addLabelEntryText('Description', $posX + 5 + $width / 3 + 5);
$labelLine->render();
$index = 1;
@@ -261,10 +262,27 @@ class HelpManager implements CommandListener, CallbackListener, ManialinkPageAns
}
$labelLine = new LabelLine($playerFrame);
$labelLine->addLabelEntryText($command['Name'], $posX + 5, 45);
$labelLine->addLabelEntryText($command['Description'], $posX + 50, $width / 2 - $posX + 50);
$labelLine->addLabelEntryText($command['Name'], $posX + 5, $width / 3 - 5);
$labelLine->addLabelEntryText($command['Description'], $posX + 5 + $width / 3 + 5, $width / 3 * 2 - 15);
$labelLine->render();
$clipboardValue = '/';
if ($command['IsAdminCommand']) {
$clipboardValue .= '/';
}
$clipboardValue .= explode('|', $command['Name'])[0] . ' ';
// Copy command
$playerQuad = new Quad();
$playerFrame->addChild($playerQuad);
$playerQuad->setX($posX + 5 + $width / 3);
$playerQuad->setSize(3., 3.);
$playerQuad->setStyle('UICommon64_1');
$playerQuad->setSubStyle('Copy_light');
$playerQuad->addClipboardFeature($clipboardValue);
$description = 'Copy Command';
$playerQuad->addTooltipLabelFeature($descriptionLabel, $description);
$posY -= 4;
$index++;
}
@@ -284,9 +302,9 @@ class HelpManager implements CommandListener, CallbackListener, ManialinkPageAns
public function registerCommand($name, $adminCommand = false, $description = '', $method = '') {
// TODO replace with new class Command
if ($adminCommand) {
array_push($this->adminCommands, array("Name" => $name, "Description" => $description, "Method" => $method));
array_push($this->adminCommands, array("Name" => $name, "Description" => $description, "Method" => $method, "IsAdminCommand" => true));
} else {
array_push($this->playerCommands, array("Name" => $name, "Description" => $description, "Method" => $method));
array_push($this->playerCommands, array("Name" => $name, "Description" => $description, "Method" => $method, "IsAdminCommand" => false));
}
}
}

View File

@@ -210,12 +210,15 @@ class MapList implements ManialinkPageAnswerListener, CallbackListener {
$headFrame->setY($height / 2 - 5);
$posX = -$width / 2;
$mainFieldTotalWidth = $width - 45;
$labelLine = new LabelLine($headFrame);
$labelLine->addLabelEntryText('Id', $posX + 5);
$labelLine->addLabelEntryText('Mx Id', $posX + 10);
$labelLine->addLabelEntryText('Map Name', $posX + 20);
$labelLine->addLabelEntryText('Author', $width / 2 - 56);
$labelLine->addLabelEntryText('Actions', $width / 2 - 16);
$labelLine->addLabelEntryText('Map Uid', $posX + 20 + $mainFieldTotalWidth * 0.4);
$labelLine->addLabelEntryText('Author', $posX + 20 + $mainFieldTotalWidth * 0.4 + $mainFieldTotalWidth * 0.35);
$labelLine->addLabelEntryText('Actions', $posX + $width - 16);
$labelLine->setY(-7);
$labelLine->render();
@@ -285,7 +288,7 @@ class MapList implements ManialinkPageAnswerListener, CallbackListener {
$mxQuad->setSize(3, 3);
$mxQuad->setImageUrl($mxIcon);
$mxQuad->setImageFocusUrl($mxIconHover);
$mxQuad->setX($width / 2 - 63);
$mxQuad->setX($posX + $width - 16);
$mxQuad->setUrl($map->mx->pageurl);
$mxQuad->setZ(0.01);
$description = 'View ' . $map->getEscapedName() . ' on Mania-Exchange';
@@ -297,7 +300,7 @@ class MapList implements ManialinkPageAnswerListener, CallbackListener {
$mxQuad->setSize(3, 3);
$mxQuad->setImageUrl($mxIconGreen);
$mxQuad->setImageFocusUrl($mxIconGreenHover);
$mxQuad->setX($width / 2 - 60);
$mxQuad->setX($posX + $width - 19);
$mxQuad->setUrl($map->mx->pageurl);
$mxQuad->setZ(0.01);
$description = 'Update for ' . $map->getEscapedName() . ' available on Mania-Exchange!';
@@ -312,15 +315,16 @@ class MapList implements ManialinkPageAnswerListener, CallbackListener {
// Display Maps
$labelLine = new LabelLine($mapFrame);
$labelLine->addLabelEntryText($mapListId, $posX + 5, 5);
$labelLine->addLabelEntryText($mxId, $posX + 10, 10);
$labelLine->addLabelEntryText(Formatter::stripDirtyCodes($map->name), $posX + 20, $width - 20 - 56 - 5);
$labelLine->addLabelEntryText($mapListId, $posX + 5, 4);
$labelLine->addLabelEntryText($mxId, $posX + 10, 9);
$labelLine->addLabelEntryText(Formatter::stripDirtyCodes($map->name), $posX + 20, $mainFieldTotalWidth * 0.4 - 5);
$labelLine->addLabelEntryText($map->uid, $posX + 20 + $mainFieldTotalWidth * 0.4, $mainFieldTotalWidth * 0.35 - 8);
$label = new Label_Text();
$mapFrame->addChild($label);
$label->setText($map->authorNick);
$label->setX($width / 2 - 56);
$label->setSize(47, 0);
$label->setX($posX + 20 + $mainFieldTotalWidth * 0.4 + $mainFieldTotalWidth * 0.35);
$label->setSize($mainFieldTotalWidth * 0.25, 0);
$label->setAction(MapCommands::ACTION_SHOW_AUTHOR . $map->authorLogin);
$description = 'Click to checkout all maps by $<' . $map->authorLogin . '$>!';
$label->addTooltipLabelFeature($descriptionLabel, $description);
@@ -328,13 +332,47 @@ class MapList implements ManialinkPageAnswerListener, CallbackListener {
$labelLine->render();
// Copy Map Uid
$label = new Label();
$mapFrame->addChild($label);
$label->setX($posX + 20 + $mainFieldTotalWidth * 0.4 + $mainFieldTotalWidth * 0.35 - 3);
$label->setSize(3., 3.);
$label->setText('$28d');
$label->setTextSize(.8);
$label->setAreaColor('00000000');
$label->setUrl('https://trackmania.io/#/leaderboard/'. $map->uid);
$description = 'Open map leaderboard on Trackmania.io';
$label->addTooltipLabelFeature($descriptionLabel, $description);
// Copy Map Uid
$quad = new Quad();
$mapFrame->addChild($quad);
$quad->setX($posX + 20 + $mainFieldTotalWidth * 0.4 + $mainFieldTotalWidth * 0.35 - 6);
$quad->setSize(3., 3.);
$quad->setStyle('UICommon64_1');
$quad->setSubStyle('Copy_light');
$quad->addClipboardFeature($map->uid);
$description = 'Copy Map Uid';
$quad->addTooltipLabelFeature($descriptionLabel, $description);
// Copy Author Login
$quad = new Quad();
$mapFrame->addChild($quad);
$quad->setX($posX + $width - 23);
$quad->setSize(3., 3.);
$quad->setStyle('UICommon64_1');
$quad->setSubStyle('Copy_light');
$quad->addClipboardFeature($map->authorLogin);
$description = 'Copy Author login';
$quad->addTooltipLabelFeature($descriptionLabel, $description);
// TODO action detailed map info including mx info
// Map-Queue-Map-Label
if (isset($queuedMaps[$map->uid])) {
$label = new Label_Text();
$mapFrame->addChild($label);
$label->setX($width / 2 - 13);
$label->setX($posX + $width - 13);
$label->setZ(0.2);
$label->setTextSize(1.5);
$label->setText($queuedMaps[$map->uid]);
@@ -378,7 +416,7 @@ class MapList implements ManialinkPageAnswerListener, CallbackListener {
// remove map button
$removeButton = new Label_Button();
$mapFrame->addChild($removeButton);
$removeButton->setX($width / 2 - 5);
$removeButton->setX($posX + $width - 5);
$removeButton->setZ(0.2);
$removeButton->setSize(3, 3);
$removeButton->setTextSize(1);
@@ -395,7 +433,7 @@ class MapList implements ManialinkPageAnswerListener, CallbackListener {
// Switch to button
$switchLabel = new Label_Button();
$mapFrame->addChild($switchLabel);
$switchLabel->setX($width / 2 - 9);
$switchLabel->setX($posX + $width - 9);
$switchLabel->setZ(0.2);
$switchLabel->setSize(3, 3);
$switchLabel->setTextSize(2);
@@ -413,7 +451,7 @@ class MapList implements ManialinkPageAnswerListener, CallbackListener {
// Switch Map Voting for Admins
$switchQuad = new Quad_UIConstruction_Buttons();
$mapFrame->addChild($switchQuad);
$switchQuad->setX($width / 2 - 17);
$switchQuad->setX($posX + $width - 21);
$switchQuad->setZ(0.2);
$switchQuad->setSubStyle($switchQuad::SUBSTYLE_Validate_Step2);
$switchQuad->setSize(3.8, 3.8);
@@ -424,7 +462,7 @@ class MapList implements ManialinkPageAnswerListener, CallbackListener {
// Switch Map Voting for Player
$switchLabel = new Label_Button();
$mapFrame->addChild($switchLabel);
$switchLabel->setX($width / 2 - 7);
$switchLabel->setX($posX + $width - 7);
$switchLabel->setZ(0.2);
$switchLabel->setSize(3, 3);
$switchLabel->setTextSize(2);

View File

@@ -3,6 +3,7 @@
namespace ManiaControl\Players;
use FML\Controls\Frame;
use FML\Controls\Label;
use FML\Controls\Labels\Label_Text;
use FML\Controls\Quad;
use FML\Controls\Quads\Quad_BgRaceScore2;
@@ -189,13 +190,15 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener, Timer
$frame->addChild($headFrame);
$headFrame->setY($posY - 5);
$mainFieldWidth = (($width - 30) / 3) - 2;
$labelLine = new LabelLine($headFrame);
$labelLine->addLabelEntryText('Id', $posX + 5);
$labelLine->addLabelEntryText('Nickname', $posX + 18);
$labelLine->addLabelEntryText('Login', $posX + 70);
$labelLine->addLabelEntryText('Location', $posX + 101);
$labelLine->addLabelEntryText('Login', $posX + 18 + $mainFieldWidth + 2);
$labelLine->addLabelEntryText('Location', $posX + 18 + ($mainFieldWidth + 2) * 2);
if ($this->maniaControl->getAuthenticationManager()->checkRight($player, AuthenticationManager::AUTH_LEVEL_MODERATOR)) {
$labelLine->addLabelEntryText('Actions', $posX + 135);
$labelLine->addLabelEntryText('Actions', $posX + $width - 15);
}
$labelLine->render();
@@ -220,6 +223,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener, Timer
}
$path = $listPlayer->getProvince();
$playerFrame = new Frame();
$pageFrame->addChild($playerFrame);
@@ -233,16 +237,16 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener, Timer
$labelLine = new LabelLine($playerFrame);
$labelLine->addLabelEntryText($playerIndex, $posX + 5, 13);
$labelLine->addLabelEntryText($listPlayer->nickname, $posX + 18, 43);
$labelLine->addLabelEntryText($listPlayer->login, $posX + 70, 26);
$labelLine->addLabelEntryText($path, $posX + 101, 27);
$labelLine->addLabelEntryText($listPlayer->nickname, $posX + 18, $mainFieldWidth - 10);
$labelLine->addLabelEntryText($listPlayer->login, $posX + 18 + $mainFieldWidth + 2, $mainFieldWidth - 6);
$labelLine->addLabelEntryText($path, $posX + 18 + ($mainFieldWidth + 2) * 2 + 5, $mainFieldWidth - 8);
$labelLine->render();
$playerFrame->setY($posY);
// Show current Player Arrow
if ($listPlayer->index === $player->index) {
if ($listPlayer->index === $player->index) {
$currentQuad = new Quad_Icons64x64_1();
$playerFrame->addChild($currentQuad);
$currentQuad->setX($posX + 3.5);
@@ -281,7 +285,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener, Timer
$countryQuad = new Quad();
$playerFrame->addChild($countryQuad);
$countryQuad->setImageUrl("file://ZoneFlags/Login/{$listPlayer->login}/country");
$countryQuad->setX($posX + 98);
$countryQuad->setX($posX + 18 + ($mainFieldWidth + 2) * 2 + 2);
$countryQuad->setSize(4, 4);
$countryQuad->addTooltipLabelFeature($descriptionLabel, '$<' . $listPlayer->nickname . '$> from ' . $listPlayer->path);
@@ -305,10 +309,21 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener, Timer
$description = $this->maniaControl->getAuthenticationManager()->getAuthLevelName($listPlayer) . ' ' . $listPlayer->nickname;
$rightLabel->addTooltipLabelFeature($descriptionLabel, $description);
// Copy player name
$playerQuad = new Quad();
$playerFrame->addChild($playerQuad);
$playerQuad->setX($posX + 18 + $mainFieldWidth - 10);
$playerQuad->setSize(3., 3.);
$playerQuad->setStyle('UICommon64_1');
$playerQuad->setSubStyle('Copy_light');
$playerQuad->addClipboardFeature($listPlayer->nickname);
$description = 'Copy player name';
$playerQuad->addTooltipLabelFeature($descriptionLabel, $description);
// Player Statistics
$playerQuad = new Quad_Icons64x64_1();
$playerFrame->addChild($playerQuad);
$playerQuad->setX($posX + 61);
$playerQuad->setX($posX + 18 + $mainFieldWidth - 7);
$playerQuad->setSize(2.7, 2.7);
$playerQuad->setSubStyle($playerQuad::SUBSTYLE_TrackInfo);
$playerQuad->setAction(self::ACTION_OPEN_PLAYER_DETAILED . '.' . $listPlayer->login);
@@ -316,32 +331,57 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener, Timer
$playerQuad->addTooltipLabelFeature($descriptionLabel, $description);
// Camera Quad
$playerQuad = new Quad_UIConstruction_Buttons();
$playerQuad = new Quad();
$playerFrame->addChild($playerQuad);
$playerQuad->setX($posX + 64.5);
$playerQuad->setX($posX + 18 + $mainFieldWidth - 4);
$playerQuad->setSize(3.8, 3.8);
$playerQuad->setSubStyle($playerQuad::SUBSTYLE_Camera);
$playerQuad->setStyle('UICommon64_1');
$playerQuad->setSubStyle('Camera_light');
$description = 'Spectate $<' . $listPlayer->nickname . '$>';
$playerQuad->addTooltipLabelFeature($descriptionLabel, $description);
$playerQuad->setAction(self::ACTION_SPECTATE_PLAYER . '.' . $listPlayer->login);
// Player Profile Quad
$playerQuad = new Quad_UIConstruction_Buttons();
$playerQuad = new Quad();
$playerFrame->addChild($playerQuad);
$playerQuad->setX($posX + 68);
$playerQuad->setX($posX + 18 + $mainFieldWidth - 1);
$playerQuad->setSize(3.8, 3.8);
$playerQuad->setSubStyle($playerQuad::SUBSTYLE_Author);
$playerQuad->setStyle('UICommon64_1');
$playerQuad->setSubStyle('User_light');
$playerQuad->addPlayerProfileFeature($listPlayer->login);
// Description Label
$description = 'View Player Profile of $<' . $listPlayer->nickname . '$>';
$playerQuad->addTooltipLabelFeature($descriptionLabel, $description);
// Trackmania.io button
$label = new Label();
$playerFrame->addChild($label);
$label->setX($posX + 18 + ($mainFieldWidth + 2) * 2 - 3);
$label->setSize(3., 3.);
$label->setText('$28d');
$label->setTextSize(.8);
$label->setAreaColor('00000000');
$label->setUrl('https://trackmania.io/#/player/'. $listPlayer->login);
$description = 'Open player profile on Trackmania.io';
$label->addTooltipLabelFeature($descriptionLabel, $description);
// Copy player login
$playerQuad = new Quad();
$playerFrame->addChild($playerQuad);
$playerQuad->setX($posX + 18 + ($mainFieldWidth + 2) * 2 - 6);
$playerQuad->setSize(3., 3.);
$playerQuad->setStyle('UICommon64_1');
$playerQuad->setSubStyle('Copy_light');
$playerQuad->addClipboardFeature($listPlayer->login);
$description = 'Copy player login';
$playerQuad->addTooltipLabelFeature($descriptionLabel, $description);
if ($this->maniaControl->getAuthenticationManager()->checkRight($player, AuthenticationManager::AUTH_LEVEL_MODERATOR)) {
// Further Player actions Quad
$playerQuad = new Quad_Icons64x64_1();
$playerFrame->addChild($playerQuad);
$playerQuad->setX($posX + 132);
$playerQuad->setX($posX + $width - 15);
$playerQuad->setSize(3.8, 3.8);
$playerQuad->setSubStyle($playerQuad::SUBSTYLE_Buddy);
$playerQuad->setAction(self::ACTION_PLAYER_ADV . '.' . $listPlayer->login);
@@ -356,7 +396,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener, Timer
// Force to Red-Team Quad
$redQuad = new Quad_Emblems();
$playerFrame->addChild($redQuad);
$redQuad->setX($posX + 144);
$redQuad->setX($posX + $width - 15 + 12);
$redQuad->setSize(3.8, 3.8);
$redQuad->setSubStyle($redQuad::SUBSTYLE_2);
$redQuad->setAction(self::ACTION_FORCE_RED . '.' . $listPlayer->login);
@@ -368,7 +408,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener, Timer
// Force to Blue-Team Quad
$blueQuad = new Quad_Emblems();
$playerFrame->addChild($blueQuad);
$blueQuad->setX($posX + 140);
$blueQuad->setX($posX + $width - 15 + 8);
$blueQuad->setSize(3.8, 3.8);
$blueQuad->setSubStyle($blueQuad::SUBSTYLE_1);
$blueQuad->setAction(self::ACTION_FORCE_BLUE . '.' . $listPlayer->login);
@@ -381,7 +421,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener, Timer
// Kick Player Vote
$kickQuad = new Quad_UIConstruction_Buttons();
$playerFrame->addChild($kickQuad);
$kickQuad->setX($posX + 140);
$kickQuad->setX($posX + $width - 15 + 8);
$kickQuad->setSize(3.8, 3.8);
$kickQuad->setSubStyle($kickQuad::SUBSTYLE_Validate_Step2);
$kickQuad->setAction(self::ACTION_KICK_PLAYER_VOTE . '.' . $listPlayer->login);
@@ -394,7 +434,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener, Timer
// Force to Play
$playQuad = new Quad_Emblems();
$playerFrame->addChild($playQuad);
$playQuad->setX($posX + 142);
$playQuad->setX($posX + $width - 15 + 8);
$playQuad->setSize(3.8, 3.8);
$playQuad->setSubStyle($playQuad::SUBSTYLE_2);
$playQuad->setAction(self::ACTION_FORCE_PLAY . '.' . $listPlayer->login);
@@ -408,7 +448,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener, Timer
// Force to Spectator Quad
$spectatorQuad = new Quad_BgRaceScore2();
$playerFrame->addChild($spectatorQuad);
$spectatorQuad->setX($posX + 136);
$spectatorQuad->setX($posX + $width - 15 + 4);
$spectatorQuad->setSize(3.8, 3.8);
$spectatorQuad->setSubStyle($spectatorQuad::SUBSTYLE_Spectator);
$spectatorQuad->setAction(self::ACTION_FORCE_SPEC . '.' . $listPlayer->login);
@@ -420,7 +460,7 @@ class PlayerList implements ManialinkPageAnswerListener, CallbackListener, Timer
// Force to Spectator Quad
$spectatorQuad = new Quad_BgRaceScore2();
$playerFrame->addChild($spectatorQuad);
$spectatorQuad->setX($posX + 136);
$spectatorQuad->setX($posX + $width - 15 + 4);
$spectatorQuad->setSize(3.8, 3.8);
$spectatorQuad->setSubStyle($spectatorQuad::SUBSTYLE_Spectator);
$spectatorQuad->setAction(self::ACTION_FORCE_SPEC_VOTE . '.' . $listPlayer->login);

View File

@@ -380,6 +380,15 @@ class ServerOptionsMenu implements CallbackListener, ConfiguratorMenu, TimerList
}
}");
$optionsFrame->addChild($checkBox);
// Copy player name
$quad = new Quad();
$quad->setX($width - $width * 0.3 - 7);
$quad->setSize(3., 3.);
$quad->setStyle('UICommon64_1');
$quad->setSubStyle('Copy_light');
$quad->addClipboardFeature($value);
$optionsFrame->addChild($quad);
}
}