1: <?php
2: 3: 4: 5: 6: 7: 8:
9:
10: namespace ManiaLive\Features;
11:
12: use DedicatedApi\Connection;
13: use ManiaLive\DedicatedApi\Callback\Event;
14: use ManiaLive\DedicatedApi\Callback\Listener;
15: use ManiaLive\DedicatedApi\Config;
16: use ManiaLive\Event\Dispatcher;
17:
18: class EchoHandler extends \ManiaLib\Utils\Singleton implements Listener
19: {
20:
21: private $connection;
22:
23: private $identifier;
24:
25: protected function __construct()
26: {
27: $this->identifier = 'ManiaLive '.\ManiaLiveApplication\Version;
28: $config = Config::getInstance();
29: $this->connection = Connection::factory(
30: $config->host,
31: $config->port,
32: $config->timeout,
33: $config->user,
34: $config->password
35: );
36: Dispatcher::register(Event::getClass(), $this, Event::ON_ECHO);
37: }
38:
39: public function onEcho($internal, $public)
40: {
41: $call = explode(':', substr($internal, 1), 2);
42: if(isset($call[1]) && $call[1] != $this->identifier)
43: return;
44:
45: if(substr($internal, 0, 1) == '?')
46: {
47: switch($call[0])
48: {
49: case 'census':
50: $this->connection->dedicatedEcho($this->identifier, '!census:'.$public);
51: break;
52: case 'stop':
53: \ManiaLiveApplication\Application::getInstance()->kill();
54: break;
55: }
56: }
57: }
58:
59: public function onBeginMap($map, $warmUp, $matchContinuation) {}
60: public function onBeginMatch() {}
61: public function onBeginRound() {}
62: public function onBillUpdated($billId, $state, $stateName, $transactionId) {}
63: public function onEndMap($rankings, $map, $wasWarmUp, $matchContinuesOnNextMap, $restartMap) {}
64: public function onEndMatch($rankings, $winnerTeamOrMap) {}
65: public function onEndRound() {}
66: public function onManualFlowControlTransition($transition) {}
67: public function onMapListModified($curMapIndex, $nextMapIndex, $isListModified) {}
68: public function onModeScriptCallback($param1, $param2) {}
69: public function onPlayerChat($playerUid, $login, $text, $isRegistredCmd) {}
70: public function onPlayerCheckpoint($playerUid, $login, $timeOrScore, $curLap, $checkpointIndex) {}
71: public function onPlayerConnect($login, $isSpectator) {}
72: public function onPlayerDisconnect($login) {}
73: public function onPlayerFinish($playerUid, $login, $timeOrScore) {}
74: public function onPlayerIncoherence($playerUid, $login) {}
75: public function onPlayerInfoChanged($playerInfo) {}
76: public function onPlayerManialinkPageAnswer($playerUid, $login, $answer, array $entries) {}
77: public function onServerStart() {}
78: public function onServerStop() {}
79: public function onStatusChanged($statusCode, $statusName) {}
80: public function onTunnelDataReceived($playerUid, $login, $data) {}
81: public function onVoteUpdated($stateName, $login, $cmdName, $cmdParam) {}
82: }
83:
84: ?>
85: