TrackManiaControl/application/core/mapHandler.php
2013-11-11 18:45:15 +01:00

78 lines
1.8 KiB
PHP

<?php
/**
* Handler for maps
*
* @author kremsy & steeffeen
*/
namespace ManiaControl;
class mapHandler {
/**
* Private properties
*/
private $maniaControl = null;
private $mapList = array();
/**
* Construct map handler
* @param ManiaControl $maniaControl
*/
//TODO: database init
//TODO: erasemap from server
//TODO: implement of a method which are called by xlist command and results maplists from maniaexcahnge (or extra class for it)
//TODO: admin add from maniaexchange, would handle it here
public function __construct(ManiaControl $maniaControl) {
$this->maniaControl = $maniaControl;
$this->initTables();
$this->maniaControl->callbacks->registerCallbackHandler(Callbacks::CB_MC_ONINIT, $this, 'onInit');
$this->maniaControl->callbacks->registerCallbackHandler(Callbacks::CB_MP_BEGINMAP, $this, 'beginMap');
$this->maniaControl->callbacks->registerCallbackHandler(Callbacks::CB_MP_ENDMAP, $this, 'endMap');
}
/**
* Initialize all necessary tables
*
* @return bool
*/
private function initTables() {
//TODO: Initialize database table
}
/**
* Handle OnInit callback
*
* @param array $callback
*/
public function onInit(){
$this->maniaControl->client->query('GetMapList', 300, 0);
$mapList = $this->maniaControl->client->getResponse();
foreach ($mapList as $map) {
$map = new Map($this->maniaControl, $map);
$this->addMap($map);
}
}
/**
* Add a map to the MapList
*
* @param Map $map
* @return bool
*/
private function addMap(Map $map) {
//TODO: ADD Maps to database
if (!$map) {
return false;
}
$this->mapList[$map->uid] = $map;
return true;
}
}