diff --git a/Beu/ClimbTheMap.php b/Beu/ClimbTheMap.php index 2bebbd3..6591acd 100644 --- a/Beu/ClimbTheMap.php +++ b/Beu/ClimbTheMap.php @@ -17,7 +17,6 @@ use ManiaControl\Manialinks\ManialinkManager; use ManiaControl\Players\Player; use ManiaControl\Callbacks\TimerListener; - use ManiaControl\Manialinks\ManialinkPageAnswerListener; use ManiaControl\Maps\Map; use ManiaControl\Utils\Formatter; @@ -43,6 +42,7 @@ class ClimbTheMap implements ManialinkPageAnswerListener, TimerListener, Command // Callbacks const CB_UPDATEPBS = 'Trackmania.ClimbTheMap.UpdatePBs'; + const CB_REQUESTPB = 'Trackmania.ClimbTheMap.RequestPB'; // Methods const M_SETPLAYERSPB = 'Trackmania.ClimbTheMap.SetPlayersPB'; @@ -115,6 +115,7 @@ class ClimbTheMap implements ManialinkPageAnswerListener, TimerListener, Command $this->maniaControl->getCallbackManager()->registerCallbackListener(Callbacks::TM_ONFINISHLINE, $this, 'handleFinishCallback'); $this->maniaControl->getCallbackManager()->registerScriptCallbackListener(self::CB_UPDATEPBS, $this, 'handleUpdatePBs'); + $this->maniaControl->getCallbackManager()->registerScriptCallbackListener(self::CB_REQUESTPB, $this, 'handleRequestPB'); $this->maniaControl->getManialinkManager()->registerManialinkPageAnswerListener(self::A_SHOW_ALTITUDE_RECORDS, $this, 'handleShowAltitudeRecords'); $this->maniaControl->getCommandManager()->registerCommandListener('records', $this, 'handleShowAltitudeRecords', false); @@ -144,16 +145,6 @@ class ClimbTheMap implements ManialinkPageAnswerListener, TimerListener, Command public function handleAfterInit() { $this->handleStartRound(); } - - /** - * Handle when a player connects - * - * @param Player $player - */ - public function handlePlayerConnect(Player $player) { - $mysqli = $this->maniaControl->getDatabase()->getMysqli(); - - } public function handleStartRound() { $map = $this->maniaControl->getMapManager()->getCurrentMap(); @@ -224,6 +215,24 @@ class ClimbTheMap implements ManialinkPageAnswerListener, TimerListener, Command } } + /** + * Handle when a player connects + * Can't use the C++ Callback because the it's received by Maniacontrol before that the Maniascript initialized the Player + * + * @param Player $player + */ + public function handleRequestPB(array $data) { + $login = $data[1][0]; + $map = $this->maniaControl->getMapManager()->getCurrentMap(); + if ($map === null) return; + + // Send PB + $pbs = $this->getPlayersPB($map->index, [$login]); + if (count($pbs) > 0) { + $this->maniaControl->getClient()->triggerModeScriptEvent(self::M_SETPLAYERSPB, [json_encode($pbs)]); + } + } + public function handle1Minute() { $map = $this->maniaControl->getMapManager()->getCurrentMap(); if ($map === null) return;