begin Maplist widget
This commit is contained in:
parent
a1104c327a
commit
6bb13fb2df
@ -33,6 +33,7 @@ require_once __DIR__ . '/ManiaExchange/mxinfosearcher.inc.php';
|
||||
require_once __DIR__ . '/Manialinks/ManialinkManager.php';
|
||||
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__ . '/Plugins/PluginManager.php';
|
||||
require_once __DIR__ . '/Server/Server.php';
|
||||
|
@ -61,7 +61,9 @@ class Map {
|
||||
$this->copperPrice = $rpc_infos['CopperPrice'];
|
||||
$this->mapType = $rpc_infos['MapType'];
|
||||
$this->mapStyle = $rpc_infos['MapStyle'];
|
||||
$this->nbCheckpoints = $rpc_infos['NbCheckpoints'];
|
||||
//$this->nbCheckpoints = $rpc_infos['NbCheckpoints']; //TODO check if key exists, only for trackmania
|
||||
|
||||
$this->authorNick = $this->authorLogin; //initialize (if nick from map cant get readen)
|
||||
|
||||
$mapsDirectory = $this->maniaControl->server->getMapsDirectory();
|
||||
if ($this->maniaControl->server->checkAccess($mapsDirectory)) {
|
||||
@ -72,6 +74,7 @@ class Map {
|
||||
catch (\Exception $e) {
|
||||
trigger_error($e->getMessage(), E_USER_WARNING);
|
||||
}
|
||||
|
||||
$this->authorNick = $this->mapFetcher->authorNick;
|
||||
$this->authorEInfo = $this->mapFetcher->authorEInfo;
|
||||
$this->authorZone = $this->mapFetcher->authorZone;
|
||||
|
@ -7,6 +7,7 @@ use ManiaControl\Admin\AuthenticationManager;
|
||||
use ManiaControl\Commands\CommandListener;
|
||||
use ManiaControl\FileUtil;
|
||||
use ManiaControl\Players\Player;
|
||||
use ManiaControl\Players\PlayerManager;
|
||||
|
||||
/**
|
||||
* Class offering commands to manage maps
|
||||
@ -31,6 +32,9 @@ class MapCommands implements CommandListener {
|
||||
$this->maniaControl->commandManager->registerCommandListener('restartmap', $this, 'command_RestartMap',true);
|
||||
$this->maniaControl->commandManager->registerCommandListener('addmap', $this, 'command_AddMap',true);
|
||||
$this->maniaControl->commandManager->registerCommandListener('removemap', $this, 'command_RemoveMap',true);
|
||||
|
||||
// Register for player commands
|
||||
$this->maniaControl->commandManager->registerCommandListener('list', $this, 'command_list');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -183,6 +187,13 @@ class MapCommands implements CommandListener {
|
||||
}
|
||||
return $this->maniaControl->client->query('RestartMap');
|
||||
}
|
||||
|
||||
public function command_list(array $chatCallback, Player $player){
|
||||
// var_dump($chatCallback);
|
||||
|
||||
$mapList = new MapList($this->maniaControl);
|
||||
$mapList->showMapList($player);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
170
application/core/Maps/MapList.php
Normal file
170
application/core/Maps/MapList.php
Normal file
@ -0,0 +1,170 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Lukas
|
||||
* Date: 14.12.13
|
||||
* Time: 19:42
|
||||
*/
|
||||
|
||||
namespace ManiaControl\Maps;
|
||||
use FML\Controls\Control;
|
||||
use FML\Controls\Label;
|
||||
use FML\Controls\Labels\Label_Text;
|
||||
use FML\Controls\Quads\Quad_Icons64x64_1;
|
||||
use ManiaControl\Manialinks\ManialinkPageAnswerListener;
|
||||
use ManiaControl\Maps\Map;
|
||||
use FML\Controls\Frame;
|
||||
use FML\Controls\Quad;
|
||||
use FML\Controls\Quads\Quad_BgRaceScore2;
|
||||
use FML\ManiaLink;
|
||||
use ManiaControl\ManiaControl;
|
||||
use ManiaControl\Players\Player;
|
||||
|
||||
class MapList implements ManialinkPageAnswerListener {
|
||||
const ACTION_CLOSEWIDGET = 'MapList.CloseWidget';
|
||||
const MLID_WIDGET = 'MapList.WidgetId';
|
||||
|
||||
/**
|
||||
* Private properties
|
||||
*/
|
||||
private $maniaControl = null;
|
||||
|
||||
/**
|
||||
* Create a new server commands instance
|
||||
*
|
||||
* @param ManiaControl $maniaControl
|
||||
*/
|
||||
public function __construct(ManiaControl $maniaControl) {
|
||||
$this->maniaControl = $maniaControl;
|
||||
|
||||
|
||||
$this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_CLOSEWIDGET , $this,
|
||||
'closeWidget');
|
||||
|
||||
// Register for player commands
|
||||
//$this->maniaControl->commandManager->registerCommandListener('list', $this, 'command_list');
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function showMapList(Player $player){
|
||||
$maniaLink = new ManiaLink(self::MLID_WIDGET);
|
||||
|
||||
//settings
|
||||
$width = 150;
|
||||
$height = 80;
|
||||
$quadStyle = Quad_BgRaceScore2::STYLE; //TODO add default menu style to style manager
|
||||
$quadSubstyle = Quad_BgRaceScore2::SUBSTYLE_HandleSelectable;
|
||||
|
||||
//mainframe
|
||||
$frame = new Frame();
|
||||
$maniaLink->add($frame);
|
||||
$frame->setSize($width,$height);
|
||||
$frame->setPosition(0, 0);
|
||||
|
||||
//Background Quad
|
||||
$backgroundQuad = new Quad();
|
||||
$frame->add($backgroundQuad);
|
||||
$backgroundQuad->setSize($width,$height);
|
||||
$backgroundQuad->setStyles($quadStyle, $quadSubstyle);
|
||||
|
||||
//TODO headline
|
||||
$mapList = $this->maniaControl->mapManager->getMapList();
|
||||
|
||||
$id = 1;
|
||||
$y = $height / 2 - 10;
|
||||
foreach($mapList as $map){
|
||||
$mapFrame = new Frame();
|
||||
$frame->add($mapFrame);
|
||||
$this->displayMap($id, $map, $mapFrame, $width, $height);
|
||||
$mapFrame->setY($y);
|
||||
$y -= 4;
|
||||
$id++;
|
||||
}
|
||||
|
||||
// Add Close Quad (X)
|
||||
$closeQuad = new Quad_Icons64x64_1();
|
||||
$frame->add($closeQuad);
|
||||
$closeQuad->setPosition($width * 0.483, $height * 0.467, 3);
|
||||
$closeQuad->setSize(6, 6);
|
||||
$closeQuad->setSubStyle(Quad_Icons64x64_1::SUBSTYLE_QuitRace);
|
||||
$closeQuad->setAction(self::ACTION_CLOSEWIDGET );
|
||||
|
||||
//render and display xml
|
||||
$maniaLinkText = $maniaLink->render()->saveXML();
|
||||
$this->maniaControl->manialinkManager->sendManialink($maniaLinkText, $player->login);
|
||||
$this->maniaControl->manialinkManager->disableAltMenu($player);
|
||||
}
|
||||
|
||||
private function displayMap($id, Map $map, Frame $frame, $width){
|
||||
|
||||
$frame->setZ(-0.01);
|
||||
|
||||
$x = -$width / 2;
|
||||
|
||||
//TODO detailed mx info page with link to mx
|
||||
$x +=5;
|
||||
$idLabel = new Label_Text();
|
||||
$frame->add($idLabel);
|
||||
$idLabel->setHAlign(Control::LEFT);
|
||||
$idLabel->setX($x);
|
||||
// $mxIdLabel->setSize($width * 0.5, 2);
|
||||
$idLabel->setStyle($idLabel::STYLE_TextCardSmall);
|
||||
$idLabel->setTextSize(1.5);
|
||||
$idLabel->setText($id);
|
||||
$idLabel->setTextColor('FFF');
|
||||
|
||||
//TODO detailed mx info page with link to mx
|
||||
$x +=5;
|
||||
$mxIdLabel = new Label_Text();
|
||||
$frame->add($mxIdLabel);
|
||||
$mxIdLabel->setHAlign(Control::LEFT);
|
||||
$mxIdLabel->setX($x);
|
||||
// $mxIdLabel->setSize($width * 0.5, 2);
|
||||
$mxIdLabel->setStyle($mxIdLabel::STYLE_TextCardSmall);
|
||||
$mxIdLabel->setTextSize(1.5);
|
||||
if(isset($map->mx->id))
|
||||
$mxIdLabel->setText($map->mx->id);
|
||||
else
|
||||
$mxIdLabel->setText("-");
|
||||
$mxIdLabel->setTextColor('FFF');
|
||||
|
||||
//TODO action detailed map info
|
||||
$x +=10;
|
||||
$nameLabel = new Label_Text();
|
||||
$frame->add($nameLabel);
|
||||
$nameLabel->setHAlign(Control::LEFT);
|
||||
$nameLabel->setX($x);
|
||||
//$nameLabel->setSize($width * 0.5, 2);
|
||||
$nameLabel->setStyle($nameLabel::STYLE_TextCardSmall);
|
||||
$nameLabel->setTextSize(1.5);
|
||||
$nameLabel->setText($map->name);
|
||||
|
||||
//TODO action detailed map info
|
||||
$x +=50;
|
||||
$authorLabel = new Label_Text();
|
||||
$frame->add($authorLabel);
|
||||
$authorLabel->setHAlign(Control::LEFT);
|
||||
$authorLabel->setX($x);
|
||||
//$nameLabel->setSize($width * 0.5, 2);
|
||||
$authorLabel->setStyle($authorLabel::STYLE_TextCardSmall);
|
||||
$authorLabel->setTextSize(1.5);
|
||||
$authorLabel->setText($map->authorNick);
|
||||
$authorLabel->setTextColor('FFF');
|
||||
|
||||
|
||||
//TODO later add buttons for jukebox, admin control buttons (remove map, change to map)
|
||||
//TODO side switch
|
||||
//var_dump($map);
|
||||
}
|
||||
|
||||
|
||||
public function closeWidget(array $callback, Player $player) {
|
||||
$emptyManialink = new ManiaLink(self::MLID_WIDGET);
|
||||
$manialinkText = $emptyManialink->render()->saveXML();
|
||||
$this->maniaControl->manialinkManager->sendManialink($manialinkText, $player->login);
|
||||
$this->maniaControl->manialinkManager->enableAltMenu($player);
|
||||
unset($this->playersMenuShown[$player->login]);
|
||||
}
|
||||
|
||||
}
|
@ -149,7 +149,18 @@ class MapManager implements CallbackListener {
|
||||
if (!$map) {
|
||||
return;
|
||||
}
|
||||
$this->addMap($map);
|
||||
$this->addMap($map); //TODO needed?
|
||||
//var_dump($map);
|
||||
//add Maplist on Init once
|
||||
if(!$this->maniaControl->client->query('GetMapList', 100,0)){ //fetch 100 maps, first map is always current map
|
||||
trigger_error("Couldn't fetch mapList. " . $this->maniaControl->getClientErrorText());
|
||||
return null;
|
||||
}
|
||||
$mapList = $this->maniaControl->client->getResponse();
|
||||
foreach($mapList as $rpcMap){
|
||||
$map = new Map($this->maniaControl, $rpcMap);
|
||||
$this->addMap($map);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -163,5 +174,16 @@ class MapManager implements CallbackListener {
|
||||
return;
|
||||
}
|
||||
$this->addMap($map);
|
||||
|
||||
//TODO restrucutre, make current as first
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getMapList(){
|
||||
return $this->mapList;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
namespace ManiaControl\Players;
|
||||
|
||||
use FML\Controls\Quad;
|
||||
use ManiaControl\ManiaControl;
|
||||
use ManiaControl\Admin\AuthenticationManager;
|
||||
use ManiaControl\Commands\CommandListener;
|
||||
@ -25,7 +26,7 @@ class PlayerCommands implements CommandListener {
|
||||
public function __construct(ManiaControl $maniaControl) {
|
||||
$this->maniaControl = $maniaControl;
|
||||
|
||||
// Register for commands
|
||||
// Register for admin commands
|
||||
$this->maniaControl->commandManager->registerCommandListener('teambalance', $this, 'command_TeamBalance',true);
|
||||
$this->maniaControl->commandManager->registerCommandListener('autoteambalance', $this, 'command_TeamBalance',true);
|
||||
$this->maniaControl->commandManager->registerCommandListener('kick', $this, 'command_Kick',true);
|
||||
|
Loading…
Reference in New Issue
Block a user