diff --git a/core/Callbacks/Callbacks.php b/core/Callbacks/Callbacks.php index 622a9508..3fddc9e2 100644 --- a/core/Callbacks/Callbacks.php +++ b/core/Callbacks/Callbacks.php @@ -30,11 +30,11 @@ interface Callbacks { */ //NEW Callbacks - const XMLRPC_CALLBACKSLIST = 'Callbacks.XmlRpcCallbacksList'; - const MP_STARTSERVERSTART = 'Callbacks.ManiaPlanetStartServerStart'; - const MP_STARTSERVEREND = 'Callbacks.ManiaPlanetStartServerEnd'; - const MP_STARTMATCHSTART = 'Callbacks.ManiaPlanetStartMatchStart'; - const MP_STARTMATCHEND = 'Callbacks.ManiaPlanetStartMatchEnd'; + const XMLRPC_CALLBACKSLIST = 'Callbacks.XmlRpcCallbacksList'; + const MP_STARTSERVERSTART = 'Callbacks.ManiaPlanetStartServerStart'; + const MP_STARTSERVEREND = 'Callbacks.ManiaPlanetStartServerEnd'; + const MP_STARTMATCHSTART = 'Callbacks.ManiaPlanetStartMatchStart'; + const MP_STARTMATCHEND = 'Callbacks.ManiaPlanetStartMatchEnd'; //const MP_STARTMAPSTART = 'Callbacks.ManiaPlanetStartMapStart'; //const MP_STARTMAPEND = 'Callbacks.ManiaPlanetStartMapEnd'; const MP_STARTROUNDSTART = 'Callbacks.ManiaPlanetStartRoundStart'; @@ -43,22 +43,40 @@ interface Callbacks { const MP_STARTTURNEND = 'Callbacks.ManiaPlanetStartTurnEnd'; const MP_STARTPLAYLOOPSTART = 'Callbacks.ManiaPlanetStartPlayLoopStart'; const MP_STARTPLAYLOOPEND = 'Callbacks.ManiaPlanetStartPlayLoopEnd'; - const MP_ENDTURNSTART = 'Callbacks.ManiaPlanetEndTurnStart'; + const MP_ENDTURNSTART = 'Callbacks.ManiaPlanetEndTurnStart'; const MP_ENDTURNEND = 'Callbacks.ManiaPlanetEndTurnEnd'; const MP_ENDROUNDSTART = 'Callbacks.ManiaPlanetEndRoundStart'; const MP_ENDROUNDEND = 'Callbacks.ManiaPlanetEndRoundEnd'; - const MP_ENDMAPSTART = 'Callbacks.ManiaPlanetEndMapStart'; - const MP_ENDMAPEND = 'Callbacks.ManiaPlanetEndMapEnd'; - const MP_ENDMATCHSTART = 'Callbacks.ManiaPlanetEndMatchStart'; - const MP_ENDMATCHEND = 'Callbacks.ManiaPlanetEndMatchEnd'; - const MP_ENDSERVERSTART = 'Callbacks.ManiaPlanetEndServerStart'; - const MP_ENDSERVEREND = 'Callbacks.ManiaPlanetEndServerEnd'; - const MP_LOADINGMAPSTART = 'Callbacks.ManiaPlanetLoadingMapStart'; - const MP_LOADINGMAPEND = 'Callbacks.ManiaPlanetLoadingMapEnd'; - const MP_UNLOADINGMAPSTART = 'Callbacks.ManiaPlanetUnLoadingMapStart'; - const MP_UNLOADINGMAPEND = 'Callbacks.ManiaPlanetUnLoadingMapEnd'; - const MP_PODIUMSTART = 'Callbacks.ManiaPlanetPodiumStart'; - const MP_PODIUMEND = 'Callbacks.ManiaPlanetPodiumEnd'; + //const MP_ENDMAPSTART = 'Callbacks.ManiaPlanetEndMapStart'; + //const MP_ENDMAPEND = 'Callbacks.ManiaPlanetEndMapEnd'; + const MP_ENDMATCHSTART = 'Callbacks.ManiaPlanetEndMatchStart'; + const MP_ENDMATCHEND = 'Callbacks.ManiaPlanetEndMatchEnd'; + const MP_ENDSERVERSTART = 'Callbacks.ManiaPlanetEndServerStart'; + const MP_ENDSERVEREND = 'Callbacks.ManiaPlanetEndServerEnd'; + const MP_LOADINGMAPSTART = 'Callbacks.ManiaPlanetLoadingMapStart'; + const MP_LOADINGMAPEND = 'Callbacks.ManiaPlanetLoadingMapEnd'; + const MP_UNLOADINGMAPSTART = 'Callbacks.ManiaPlanetUnLoadingMapStart'; + const MP_UNLOADINGMAPEND = 'Callbacks.ManiaPlanetUnLoadingMapEnd'; + const MP_PODIUMSTART = 'Callbacks.ManiaPlanetPodiumStart'; + const MP_PODIUMEND = 'Callbacks.ManiaPlanetPodiumEnd'; + + const SM_EVENTDEFAULT = "Shootmania.Event.Default"; + const SM_ONSHOOT = "Shootmania.Event.OnShoot"; + const SM_ONHIT = "Shootmania.Event.OnHit"; + const SM_ONNEARMISS = "Shootmania.Event.OnNearMiss"; + const SM_ONARMOREMPTY = "Shootmania.Event.OnArmorEmpty"; + const SM_ONCAPTURE = "Shootmania.Event.OnCapture"; + const SM_ONSHOTDENY = "Shootmania.Event.OnShotDeny"; + const SM_ONFALLDAMAGE = "Shootmania.Event.OnFallDamage"; + const SM_ONCOMMAND = "Shootmania.Event.OnCommand"; + //Shootmania.Event.OnPlayerRemoved Shootmania.Event.OnPlayerAdded not needed yet + const SM_ONPLAYERREQUESTRESAWPN = "Shootmania.Event.OnPlayerRequestRespawn"; + const SM_ONACTIONCUSTOMEVENT = "Shootmania.Event.OnActionCustomEvent"; + const SM_ONACTIONEVENT = "Shootmania.Event.OnActionEvent"; + const SM_ONPLAYERTOUCHESOBJECT = "Shootmania.Event.OnPlayerTouchesObject"; + const SM_ONPLAYERTRIGGERSSECTOR = "Shootmania.Event.OnPlayerTriggersSector"; + const SM_ONPLAYERTHROWSOBJECT = "Shootmania.Event.OnPlayerThrowsObject"; + const SM_ONPLAYERREQUESTACTIONCHANGE = "Shootmania.Event.OnPlayerRequestActionChange"; //ManiaControl Callbacks /** BeginMap Callback: Map */ diff --git a/core/Callbacks/EchoManager.php b/core/Callbacks/EchoManager.php index faa2e716..49af62db 100644 --- a/core/Callbacks/EchoManager.php +++ b/core/Callbacks/EchoManager.php @@ -69,8 +69,8 @@ class EchoManager implements CallbackListener, EchoListener { $this->echoListenings[$echoName] = array(); } - $listening = new Listening($listener, $method); - array_push($this->echoListenings[$echoName], $listening); + $listening = new Listening($listener, $method); + $this->echoListenings[$echoName] = $listening; return true; } diff --git a/core/Callbacks/ShootManiaCallbacks.php b/core/Callbacks/ShootManiaCallbacks.php index 8d394975..4ed857b8 100644 --- a/core/Callbacks/ShootManiaCallbacks.php +++ b/core/Callbacks/ShootManiaCallbacks.php @@ -4,6 +4,9 @@ namespace ManiaControl\Callbacks; use ManiaControl\Callbacks\Models\RecordCallback; use ManiaControl\Callbacks\Structures\EliteBeginTurnStructure; +use ManiaControl\Callbacks\Structures\ShootMania\DefaultEventStructure; +use ManiaControl\Callbacks\Structures\ShootMania\OnHitStructure; +use ManiaControl\Callbacks\Structures\ShootMania\OnShootStructure; use ManiaControl\ManiaControl; /** @@ -49,6 +52,18 @@ class ShootManiaCallbacks implements CallbackListener { */ public function handleScriptCallbacks($name, $data) { switch ($name) { + //MP4 New Callbacks + case Callbacks::SM_EVENTDEFAULT: + $this->maniaControl->getCallbackManager()->triggerCallback(Callbacks::SM_EVENTDEFAULT, new DefaultEventStructure($this->maniaControl, $data)); + break; + case Callbacks::SM_ONSHOOT: + $this->maniaControl->getCallbackManager()->triggerCallback(Callbacks::SM_ONSHOOT, new OnShootStructure($this->maniaControl, $data)); + break; + case Callbacks::SM_ONHIT: + $this->maniaControl->getCallbackManager()->triggerCallback(Callbacks::SM_ONHIT, new OnHitStructure($this->maniaControl, $data)); + break; + + //Old Callbacks case 'LibXmlRpc_Rankings': $this->maniaControl->getServer()->getRankingManager()->updateRankings($data[0]); break; diff --git a/core/Callbacks/Structures/ShootMania/DefaultEventStructure.php b/core/Callbacks/Structures/ShootMania/DefaultEventStructure.php index 71d68f6a..e65bc5ac 100644 --- a/core/Callbacks/Structures/ShootMania/DefaultEventStructure.php +++ b/core/Callbacks/Structures/ShootMania/DefaultEventStructure.php @@ -14,8 +14,27 @@ use ManiaControl\ManiaControl; * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 */ class DefaultEventStructure extends BaseStructure { + public $time; + public $type; + public function __construct(ManiaControl $maniaControl, $data) { parent::__construct($maniaControl, $data); + $this->time = $this->getPlainJsonObject()->time; + $this->type = $this->getPlainJsonObject()->type; + } + + /** + * @return int + */ + public function getTime() { + return $this->time; + } + + /** + * @return string + */ + public function getType() { + return $this->type; } } \ No newline at end of file diff --git a/core/Callbacks/Structures/ShootMania/OnHitStructure.php b/core/Callbacks/Structures/ShootMania/OnHitStructure.php new file mode 100644 index 00000000..666f5aa8 --- /dev/null +++ b/core/Callbacks/Structures/ShootMania/OnHitStructure.php @@ -0,0 +1,110 @@ + + * @copyright 2014-2017 ManiaControl Team + * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 + */ +class OnHitStructure extends BaseStructure { + public $time; + public $weapon; + public $damage; + public $shooterPosition; + public $victimPosition; + + protected $shooter; + protected $victim; + + //private $shooterPoints; (was in mp3) + //private $hitDistance; (was in mp3) + + + /** + * Construct a new On Hit Structure + * + * @param ManiaControl $maniaControl + * @param array $data + */ + public function __construct(ManiaControl $maniaControl, $data) { + parent::__construct($maniaControl, $data); + + $this->time = $this->getPlainJsonObject()->time; + $this->weapon = $this->getPlainJsonObject()->weapon; + $this->damage = $this->getPlainJsonObject()->damage; + $this->shooterPosition = $this->getPlainJsonObject()->shooterPosition; + $this->victimPosition = $this->getPlainJsonObject()->victimPosition; + + $this->shooter = $this->maniaControl->getPlayerManager()->getPlayer($this->getPlainJsonObject()->shooter); + $this->victim = $this->maniaControl->getPlayerManager()->getPlayer($this->getPlainJsonObject()->victim); + } + + /** + * @return int + */ + public function getTime() { + return $this->time; + } + + /** + * @return int + */ + public function getWeapon() { + return $this->weapon; + } + + /** + * @return int + */ + public function getDamage() { + return $this->damage; + } + + /** + * TODO Position Object + * + * @return Object + */ + public function getShooterPosition() { + return $this->shooterPosition; + } + + /** + * TODO Position Object + * + * @return Object + */ + public function getVictimPosition() { + return $this->victimPosition; + } + + /** + * @return Player + */ + public function getShooter() { + return $this->shooter; + } + + /** + * @return Player + */ + public function getVictim() { + return $this->victim; + } + + /** Dumps the Object with some Information */ + public function dump() { + parent::dump(); + var_dump("With getShooter() you get a Player Object"); + var_dump("With getVictim() you get a Player Object"); + } +} \ No newline at end of file diff --git a/core/Callbacks/Structures/ShootMania/OnShootStructure.php b/core/Callbacks/Structures/ShootMania/OnShootStructure.php new file mode 100644 index 00000000..2f2e9dcc --- /dev/null +++ b/core/Callbacks/Structures/ShootMania/OnShootStructure.php @@ -0,0 +1,54 @@ +time = $this->getPlainJsonObject()->time; + $this->weapon = $this->getPlainJsonObject()->weapon; + + $this->shooter = $this->maniaControl->getPlayerManager()->getPlayer($this->getPlainJsonObject()->shooter); + } + + /** + * @return int + */ + public function getTime() { + return $this->time; + } + + /** + * @return int + */ + public function getWeapon() { + return $this->weapon; + } + + /** + * @return Player + */ + public function getShooter() { + return $this->shooter; + } + + /** Dumps the Object with some Information */ + public function dump() { + parent::dump(); + var_dump("With getShooter() you get a Player Object"); + } +} \ No newline at end of file diff --git a/core/Callbacks/Structures/ShootMania/Position.php b/core/Callbacks/Structures/ShootMania/Position.php new file mode 100644 index 00000000..85df4951 --- /dev/null +++ b/core/Callbacks/Structures/ShootMania/Position.php @@ -0,0 +1,9 @@ +time = $this->getPlainJsonObject()->time; + $this->type = $this->getPlainJsonObject()->type; + } + + /** + * @return int + */ + public function getTime() { + return $this->time; + } + + /** + * @return string + */ + public function getType() { + return $this->type; } } \ No newline at end of file diff --git a/core/Callbacks/Structures/XmlRpc/CallbacksListStructure.php b/core/Callbacks/Structures/XmlRpc/CallbacksListStructure.php index 71734037..c37c3cc7 100644 --- a/core/Callbacks/Structures/XmlRpc/CallbacksListStructure.php +++ b/core/Callbacks/Structures/XmlRpc/CallbacksListStructure.php @@ -19,7 +19,7 @@ class CallbacksListStructure extends BaseStructure { public $callbacks; /** - * Construct a new Armor Empty Structure + * Construct a new Callbacks List Structure * * @param ManiaControl $maniaControl * @param array $data