added some shootmania callbacks

This commit is contained in:
kremsy 2017-03-24 22:49:43 +01:00
parent 7a668b53ba
commit f15dab5d42
9 changed files with 265 additions and 21 deletions

View File

@ -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 */

View File

@ -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;
}

View File

@ -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;

View File

@ -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;
}
}

View File

@ -0,0 +1,110 @@
<?php
namespace ManiaControl\Callbacks\Structures\ShootMania;
use ManiaControl\Callbacks\Structures\BaseStructure;
use ManiaControl\ManiaControl;
use ManiaControl\Players\Player;
/**
* Structure Class for the OnHit Structure Callback
*
* @author ManiaControl Team <mail@maniacontrol.com>
* @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");
}
}

View File

@ -0,0 +1,54 @@
<?php
namespace ManiaControl\Callbacks\Structures\ShootMania;
use ManiaControl\Callbacks\Structures\BaseStructure;
use ManiaControl\ManiaControl;
use ManiaControl\Players\Player;
class OnShootStructure extends BaseStructure {
public $time;
public $weapon;
/**
* @var Player $shooter
*/
private $shooter;
//TODO test
public function __construct(ManiaControl $maniaControl, $data) {
parent::__construct($maniaControl, $data);
$this->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");
}
}

View File

@ -0,0 +1,9 @@
<?php
namespace ManiaControl\Callbacks\Structures\ShootMania;
class Position {
//TODO x y z positions
}

View File

@ -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;
}
}

View File

@ -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