callback improvements

This commit is contained in:
kremsy 2014-12-20 18:43:51 +01:00
parent 609337434d
commit 5f7eff0660
5 changed files with 88 additions and 2 deletions

View File

@ -98,6 +98,11 @@ interface Callbacks {
/** OnPlayerRequestRespawn Callback: Player */
const ONPLAYERREQUESTRESPAWN = 'Callbacks.OnPlayerRequestRespawn';
/** Elite OnBeginTurn Callback: EliteBeginTurnStructure */
const ELITE_ONBEGINTURN = "Callbacks.EliteOnBeginTurn";
/** Elite OnEndTurn Callback: integer (VictoryTypes) */
const ELITE_ONENDTURN = "Callbacks.EliteOnEndTurn";
/*
* TrackMania Callbacks
*/
@ -111,4 +116,5 @@ interface Callbacks {
const ONRESPAWN = 'Callbacks.OnRespawn';
/** OnStunt Callback */
const ONSTUNT = 'Callbacks.OnStunt';
}

View File

@ -61,6 +61,9 @@ class LibXmlRpcCallbacks implements CallbackListener {
case 'LibXmlRpc_BeginTurn':
$this->maniaControl->getCallbackManager()->triggerCallback(Callbacks::BEGINTURN, $data[0]);
break;
case 'LibXmlRpc_BeginRound':
$this->maniaControl->getCallbackManager()->triggerCallback(Callbacks::BEGINROUND, $data[0]);
break;
case 'LibXmlRpc_BeginPlaying':
$this->maniaControl->getCallbackManager()->triggerCallback(Callbacks::BEGINPLAYING);
break;
@ -71,6 +74,7 @@ class LibXmlRpcCallbacks implements CallbackListener {
$this->maniaControl->getCallbackManager()->triggerCallback(Callbacks::ENDTURN, $data[0]);
break;
case 'LibXmlRpc_EndRound':
var_dump("test");
$this->maniaControl->getCallbackManager()->triggerCallback(Callbacks::ENDROUND, $data[0]);
break;
case 'LibXmlRpc_EndSubmatch':
@ -131,11 +135,11 @@ class LibXmlRpcCallbacks implements CallbackListener {
$this->maniaControl->getCallbackManager()->triggerCallback(Callbacks::ONARMOREMPTY, new ArmorEmptyStructure($this->maniaControl, $data));
break;
case 'LibXmlRpc_OnCapture':
$this->maniaControl->getCallbackManager()->triggerCallback(Callbacks::ONARMOREMPTY, new CaptureStructure($this->maniaControl, $data));
$this->maniaControl->getCallbackManager()->triggerCallback(Callbacks::ONCAPTURE, new CaptureStructure($this->maniaControl, $data));
break;
case 'LibXmlRpc_OnPlayerRequestRespawn':
$player = $this->maniaControl->getPlayerManager()->getPlayer($data[0]);
$this->maniaControl->getCallbackManager()->triggerCallback(Callbacks::ONARMOREMPTY, $player);
$this->maniaControl->getCallbackManager()->triggerCallback(Callbacks::ONPLAYERREQUESTRESPAWN, $player);
break;
}
}

View File

@ -3,6 +3,7 @@
namespace ManiaControl\Callbacks;
use ManiaControl\Callbacks\Models\RecordCallback;
use ManiaControl\Callbacks\Structures\EliteBeginTurnStructure;
use ManiaControl\ManiaControl;
/**
@ -60,6 +61,12 @@ class ShootManiaCallbacks implements CallbackListener {
case 'WarmUp_Status':
$this->maniaControl->getCallbackManager()->triggerCallback(Callbacks::WARMUPSTATUS, $data[0]);
break;
case 'Elite_BeginTurn':
$this->maniaControl->getCallbackManager()->triggerCallback(Callbacks::ELITE_ONBEGINTURN, new EliteBeginTurnStructure($this->maniaControl, $data));
break;
case 'Elite_EndTurn':
$this->maniaControl->getCallbackManager()->triggerCallback(Callbacks::ELITE_ONENDTURN, $data[0]);
break;
case self::CB_TIMEATTACK_ONCHECKPOINT:
$this->handleTimeAttackOnCheckpoint($name, $data);
break;

View File

@ -0,0 +1,52 @@
<?php
namespace ManiaControl\Callbacks\Structures;
use ManiaControl\ManiaControl;
use ManiaControl\Players\Player;
class EliteBeginTurnStructure {
/*
* Private properties
*/
private $attackerLogin;
private $defenderLogins;
/** @var ManiaControl $maniaControl */
private $maniaControl;
/**
* Construct a new Elite BeginTurnStructure
*
* @param ManiaControl $maniaControl
* @param array $data
*/
public function __construct(ManiaControl $maniaControl, array $data) {
$this->maniaControl = $maniaControl;
$this->attackerLogin = $data[0];
$this->defenderLogins = $data[1];
}
/**
* Get the attacker
*
* @return Player
*/
public function getAttacker() {
return $this->maniaControl->getPlayerManager()->getPlayer($this->attackerLogin);
}
/**
* Get the defenders as an Player Array
*
* @return Player[]
*/
public function getDefenders() {
$defenders = array();
foreach (explode(";", $this->defenderLogins) as $defenderLogin) {
$defenders[] = $this->maniaControl->getPlayerManager()->getPlayer($defenderLogin);
}
return $defenders;
}
}

View File

@ -0,0 +1,17 @@
<?php
namespace ManiaControl\Callbacks\Structures;
/**
* VictoryTypes Interface (only available in Elite atm)
*
* @author ManiaControl Team <mail@maniacontrol.com>
* @copyright 2014 ManiaControl Team
* @license http://www.gnu.org/licenses/ GNU General Public License, Version 3
*/
interface VictoryTypes {
const TIME_LIMIT = 1;
const CAPTURE = 2;
const ATTACKER_ELIMINATED = 3;
const DEFENDERS_ELIMINATED = 4;
}