From 27efcabb6e013215c95da5f5b43dd36a23200f32 Mon Sep 17 00:00:00 2001 From: kremsy Date: Fri, 10 Oct 2014 16:19:46 +0200 Subject: [PATCH] callback improvements, new structures for shootmania callbacks --- core/Callbacks/Callbacks.php | 9 ++- core/Callbacks/LibXmlRpcCallbacks.php | 18 +++++- .../Structures/ArmorEmptyStructure.php | 62 +++++++++++++++++++ .../Callbacks/Structures/CaptureStructure.php | 29 +++++++++ .../Structures/NearMissStructure.php | 4 +- .../Structures/PlayerHitStructure.php | 4 +- 6 files changed, 120 insertions(+), 6 deletions(-) create mode 100644 core/Callbacks/Structures/ArmorEmptyStructure.php create mode 100644 core/Callbacks/Structures/CaptureStructure.php diff --git a/core/Callbacks/Callbacks.php b/core/Callbacks/Callbacks.php index f204da55..18d7dcd4 100644 --- a/core/Callbacks/Callbacks.php +++ b/core/Callbacks/Callbacks.php @@ -84,12 +84,19 @@ interface Callbacks { /** Returns if the GameMode has Warmup activated, returned after param1 Scores */ //returned after TODO const WARMUPSTATUS = 'Callbacks.WarmupStatus'; + /** OnShoot Callback: Player, WeaponNumber (see Weapons Structure) */ const ONSHOOT = 'Callbacks.OnShoot'; - /** OnShoot Callback: PlayerHitStructure */ + /** OnHit Callback: PlayerHitStructure */ const ONHIT = 'Callbacks.OnHit'; /** OnNearMiss Callback: NearMissStructure */ const ONNEARMISS = 'Callbacks.OnNearMiss'; + /** OnArmorEmpty Callback: ArmorEmptyStructure */ + const ONARMOREMPTY = 'Callbacks.OnArmorEmpty'; + /** OnCapture Callback: CaptureStructure */ + const ONCAPTURE = 'Callbacks.OnCapture'; + /** OnPlayerRequestRespawn Callback: Player */ + const ONPLAYERREQUESTRESPAWN = 'Callbacks.OnPlayerRequestRespawn'; /* * TrackMania Callbacks diff --git a/core/Callbacks/LibXmlRpcCallbacks.php b/core/Callbacks/LibXmlRpcCallbacks.php index da5c4e80..8e02b1dc 100644 --- a/core/Callbacks/LibXmlRpcCallbacks.php +++ b/core/Callbacks/LibXmlRpcCallbacks.php @@ -2,6 +2,9 @@ namespace ManiaControl\Callbacks; +use ManiaControl\Callbacks\Structures\ArmorEmptyStructure; +use ManiaControl\Callbacks\Structures\CaptureStructure; +use ManiaControl\Callbacks\Structures\NearMissStructure; use ManiaControl\Callbacks\Structures\PlayerHitStructure; use ManiaControl\ManiaControl; @@ -115,13 +118,26 @@ class LibXmlRpcCallbacks implements CallbackListener { case 'LibXmlRpc_OnStunt': $this->maniaControl->getCallbackManager()->triggerCallback(Callbacks::ONSTUNT, $data); break; - case 'LibXmlRpc_OnShoot': //TODO testing + case 'LibXmlRpc_OnShoot': $player = $this->maniaControl->getPlayerManager()->getPlayer($data[0]); $this->maniaControl->getCallbackManager()->triggerCallback(Callbacks::ONSHOOT, $player, $data[1]); break; case 'LibXmlRpc_OnHit': $this->maniaControl->getCallbackManager()->triggerCallback(Callbacks::ONHIT, new PlayerHitStructure($this->maniaControl, $data)); break; + case 'LibXmlRpc_OnNearMiss': + $this->maniaControl->getCallbackManager()->triggerCallback(Callbacks::ONHIT, new NearMissStructure($this->maniaControl, $data)); + break; + case 'LibXmlRpc_OnArmorEmpty': + $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)); + break; + case 'LibXmlRpc_OnPlayerRequestRespawn': + $player = $this->maniaControl->getPlayerManager()->getPlayer($data[0]); + $this->maniaControl->getCallbackManager()->triggerCallback(Callbacks::ONARMOREMPTY, $player); + break; } } diff --git a/core/Callbacks/Structures/ArmorEmptyStructure.php b/core/Callbacks/Structures/ArmorEmptyStructure.php new file mode 100644 index 00000000..e1cc716b --- /dev/null +++ b/core/Callbacks/Structures/ArmorEmptyStructure.php @@ -0,0 +1,62 @@ +shooter = $data[0]; + $this->victim = $data[1]; + $this->damage = $data[2]; + $this->weapon = $data[3]; + $this->shooterPoints = $data[4]; + } + + /** + * @return Player + */ + public function getShooter() { + $shooter = $this->maniaControl->getPlayerManager()->getPlayer($this->shooter); + return $shooter; + } + + /** + * @return Player + */ + public function getVictim() { + $victim = $this->maniaControl->getPlayerManager()->getPlayer($this->victim); + return $victim; + } + + /** + * @return int + */ + public function getDamage() { + return $this->damage; + } + + /** + * @return int + */ + public function getShooterPoints() { + return $this->shooterPoints; + } + + /** + * @return int + */ + public function getWeapon() { //TODO any way of returning type "Weapon?" + return $this->weapon; + } +} \ No newline at end of file diff --git a/core/Callbacks/Structures/CaptureStructure.php b/core/Callbacks/Structures/CaptureStructure.php new file mode 100644 index 00000000..480d390e --- /dev/null +++ b/core/Callbacks/Structures/CaptureStructure.php @@ -0,0 +1,29 @@ +playerArray = $data; + } + + /** + * @return mixed + */ + public function getLoginArray() { + return $this->playerArray; + } + + /** + * @return Player[] + */ + public function getPlayerArray() { + //TODO build array with player objects + return $this->playerArray; + } +} \ No newline at end of file diff --git a/core/Callbacks/Structures/NearMissStructure.php b/core/Callbacks/Structures/NearMissStructure.php index b3f4ed16..fb77b55c 100644 --- a/core/Callbacks/Structures/NearMissStructure.php +++ b/core/Callbacks/Structures/NearMissStructure.php @@ -23,7 +23,7 @@ class NearMissStructure { } /** - * @return Player + * @return Player|null */ public function getShooter() { $shooter = $this->maniaControl->getPlayerManager()->getPlayer($this->shooter); @@ -31,7 +31,7 @@ class NearMissStructure { } /** - * @return Player + * @return Player|null */ public function getVictim() { $victim = $this->maniaControl->getPlayerManager()->getPlayer($this->victim); diff --git a/core/Callbacks/Structures/PlayerHitStructure.php b/core/Callbacks/Structures/PlayerHitStructure.php index 4bb6d15b..da8ff8dc 100644 --- a/core/Callbacks/Structures/PlayerHitStructure.php +++ b/core/Callbacks/Structures/PlayerHitStructure.php @@ -24,7 +24,7 @@ class PlayerHitStructure { } /** - * @return Player + * @return Player|null */ public function getShooter() { $shooter = $this->maniaControl->getPlayerManager()->getPlayer($this->shooter); @@ -32,7 +32,7 @@ class PlayerHitStructure { } /** - * @return Player + * @return Player|null */ public function getVictim() { $victim = $this->maniaControl->getPlayerManager()->getPlayer($this->victim);