1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10:
11:
12: namespace ManiaLive\Gui;
13:
14: use ManiaLive\Event\Dispatcher;
15: use ManiaLive\DedicatedApi\Callback\Listener as ServerListener;
16: use ManiaLive\DedicatedApi\Callback\Event as ServerEvent;
17:
18: 19: 20:
21: final class ActionHandler extends \ManiaLib\Utils\Singleton implements ServerListener
22: {
23: const NONE = 0xFFFFFFFF;
24:
25: protected $callbacks = array();
26: protected $lastAction = 0;
27:
28: protected function __construct()
29: {
30: Dispatcher::register(ServerEvent::getClass(), $this, ServerEvent::ON_PLAYER_MANIALINK_PAGE_ANSWER);
31: }
32:
33: function createAction($callback)
34: {
35: if(!is_array($callback) || !is_callable($callback))
36: throw new \InvalidArgumentException('Invalid callback');
37:
38: $args = func_get_args();
39: array_shift($args);
40: $callback = array($callback, $args);
41:
42: $action = array_search($callback, $this->callbacks, true);
43: if($action !== false)
44: return $action;
45:
46: $this->callbacks[++$this->lastAction] = $callback;
47: return $this->lastAction;
48: }
49:
50:
51:
52:
53: function deleteAction($action)
54: {
55: unset($this->callbacks[$action]);
56: }
57:
58: function onPlayerManialinkPageAnswer($playerUid, $login, $answer, array $entries)
59: {
60: if(isset($this->callbacks[$answer]))
61: {
62: $params = array($login);
63: array_splice($params, count($params), 0, $this->callbacks[$answer][1]);
64: if(count($entries))
65: {
66: $entryValues = array();
67: foreach($entries as $entry)
68: $entryValues[$entry['Name']] = $entry['Value'];
69: $params[] = $entryValues;
70: }
71: call_user_func_array($this->callbacks[$answer][0], $params);
72: }
73: }
74:
75: function onPlayerConnect($login, $isSpectator) {}
76: function onPlayerDisconnect($login) {}
77: function onPlayerChat($playerUid, $login, $text, $isRegistredCmd) {}
78: function onEcho($internal, $public) {}
79: function onServerStart() {}
80: function onServerStop() {}
81: function onBeginMatch() {}
82: function onEndMatch($rankings, $winnerTeamOrMap) {}
83: function onBeginMap($map, $warmUp, $matchContinuation) {}
84: function onEndMap($rankings, $map, $wasWarmUp, $matchContinuesOnNextMap, $restartMap) {}
85: function onBeginRound() {}
86: function onEndRound() {}
87: function onStatusChanged($statusCode, $statusName) {}
88: function onPlayerCheckpoint($playerUid, $login, $timeOrScore, $curLap, $checkpointIndex) {}
89: function onPlayerFinish($playerUid, $login, $timeOrScore) {}
90: function onPlayerIncoherence($playerUid, $login) {}
91: function onBillUpdated($billId, $state, $stateName, $transactionId) {}
92: function onTunnelDataReceived($playerUid, $login, $data) {}
93: function onMapListModified($curMapIndex, $nextMapIndex, $isListModified) {}
94: function onPlayerInfoChanged($playerInfo) {}
95: function onManualFlowControlTransition($transition) {}
96: function onVoteUpdated($stateName, $login, $cmdName, $cmdParam) {}
97: function onModeScriptCallback($param1, $param2) {}
98: }
99:
100: ?>