jukebox settings

This commit is contained in:
kremsy 2013-12-29 10:17:10 +01:00
parent 8752864ad0
commit da2aa3f17d

View File

@ -15,6 +15,8 @@ class Jukebox implements CallbackListener {
* Constants
*/
const CB_JUKEBOX_CHANGED = 'Jukebox.JukeBoxChanged';
const SETTING_SKIP_MAP_ON_LEAVE = 'Skip Map when the requester leaves';
const SETTING_SKIP_JUKED_ADMIN = 'Skip Map when admin leaves';
/**
* Private properties
@ -33,6 +35,9 @@ class Jukebox implements CallbackListener {
$this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MC_BEGINMAP, $this,'beginMap');
$this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MC_ENDMAP, $this,'endMap');
// Init settings
$this->maniaControl->settingManager->initSetting($this, self::SETTING_SKIP_MAP_ON_LEAVE, true);
$this->maniaControl->settingManager->initSetting($this, self::SETTING_SKIP_JUKED_ADMIN, false);
}
/**
@ -50,7 +55,7 @@ class Jukebox implements CallbackListener {
//TODO recently maps not able to add to jukebox setting, and management
//$this->jukedMapsUid[$uid] = array($login, $this->maniaControl->mapManager->getMapByUid($uid));
$this->jukedMaps[$uid] = array($login, $this->maniaControl->mapManager->getMapByUid($uid));
//TODO Message
@ -58,7 +63,6 @@ class Jukebox implements CallbackListener {
// Trigger callback
$this->maniaControl->callbackManager->triggerCallback(self::CB_JUKEBOX_CHANGED, array('add', $this->jukedMaps[$uid]));
$this->printAllMaps();
}
/**
@ -78,29 +82,37 @@ class Jukebox implements CallbackListener {
}
public function endMap(){
//TODO setting admin no skip
//TODO setting skip map if requester left
/**
* Called on endmap
* @param array $callback
*/
public function endMap(array $callback){
//Skip Map if requester has left
for($i = 0; $i < count($this->jukedMaps); $i++){
$jukedMap = reset($this->jukedMaps);
if($this->maniaControl->settingManager->getSetting($this, self::SETTING_SKIP_MAP_ON_LEAVE) == TRUE){
//Skip Map if requester has left
for($i = 0; $i < count($this->jukedMaps); $i++){
$jukedMap = reset($this->jukedMaps);
//found player, so play this map
if($this->maniaControl->playerManager->getPlayer($jukedMap[0]) != null){
break;
//found player, so play this map
if($this->maniaControl->playerManager->getPlayer($jukedMap[0]) != null){
break;
}
if($this->maniaControl->settingManager->getSetting($this, self::SETTING_SKIP_JUKED_ADMIN) == FALSE){
//TODO check in database if a the juker of the map is admin, and if he is, just break
}
// Trigger callback
$this->maniaControl->callbackManager->triggerCallback(self::CB_JUKEBOX_CHANGED, array('skip', $jukedMap[0]));
//Player not found, so remove the map from the jukebox
array_shift($this->jukedMaps);
//TODO Message, report skip
}
// Trigger callback
$this->maniaControl->callbackManager->triggerCallback(self::CB_JUKEBOX_CHANGED, array('skip', $jukedMap[0]));
//Player not found, so remove the map from the jukebox
array_shift($this->jukedMaps);
//TODO Message, report skip
}
$nextMap = array_shift($this->jukedMaps);
//Check if Jukebox is empty
@ -109,8 +121,6 @@ class Jukebox implements CallbackListener {
$nextMap = $nextMap[1];
//Set pointer back to last map
//end($this->jukedMaps);
$success = $this->maniaControl->client->query('ChooseNextMap', $nextMap->fileName);
if (!$success) {
@ -135,6 +145,9 @@ class Jukebox implements CallbackListener {
return $jukedMaps;
}
/**
* Dummy Function for testing
*/
public function printAllMaps(){
foreach($this->jukedMaps as $map){
$map = $map[1];