finished and tested first version of echomanager

This commit is contained in:
kremsy
2015-06-19 18:30:44 +02:00
parent 7527561263
commit 351a0b424c
5 changed files with 64 additions and 22 deletions

View File

@ -32,6 +32,24 @@ class EchoManager implements CallbackListener, EchoListener {
$this->maniaControl->getCallbackManager()->registerCallbackListener(CallbackManager::CB_MP_ECHO, $this, 'handleEchos');
}
/**
* Sends an Echo Message
*
* @param string $name
* @param mixed $data (can be array, object or string)
* @return bool
* @throws \Maniaplanet\DedicatedServer\InvalidArgumentException
*/
public function sendEcho($name, $data) {
if (is_string($data)) {
$success = $this->maniaControl->getClient()->dedicatedEcho($data, $name);
} else {
$success = $this->maniaControl->getClient()->dedicatedEcho(json_encode($data), $name);
}
return $success;
}
/**
* Register a new Echo Listener
*
@ -101,29 +119,28 @@ class EchoManager implements CallbackListener, EchoListener {
$params = func_get_args();
$params = array_slice($params, 1, null, true);
var_dump($params);
//var_dump($params);
foreach ($this->echoListenings[$callbackName] as $listening) {
/** @var Listening $listening */
$listening->triggerCallbackWithParams($params);
}
}
//TODO temporary testmethod, remove
public function test() {
// $this->maniaControl->getEchoManager()->test();
$msg = json_encode(array("player" => "abc"));
//$callback = array("test1", "test2");
$this->maniaControl->getClient()->dedicatedEcho($msg, "ManiaControl.PlayerManager.WarnPlayer");
}
/**
* Handle the given Callback
*
* @param array $callback
*/
public function handleEchos($param) {
$name = $param[1][0];
$message = json_decode($param[1][1]);
$name = $param[1][0];
if (is_object($decode = json_decode($param[1][1]))) {
$message = $decode;
} else {
$message = $param[1][1];
}
var_dump($name);
var_dump($message);
switch ($name) {
case 'ManiaControl.Restart':
$this->maniaControl->restart($message);