dedimania plugin update for new records callback class
This commit is contained in:
parent
ddc3f98715
commit
62c51eef5b
@ -12,6 +12,7 @@ use FML\Script\Features\Paging;
|
|||||||
use ManiaControl\Callbacks\CallbackListener;
|
use ManiaControl\Callbacks\CallbackListener;
|
||||||
use ManiaControl\Callbacks\CallbackManager;
|
use ManiaControl\Callbacks\CallbackManager;
|
||||||
use ManiaControl\Callbacks\Callbacks;
|
use ManiaControl\Callbacks\Callbacks;
|
||||||
|
use ManiaControl\Callbacks\Models\RecordCallback;
|
||||||
use ManiaControl\Callbacks\TimerListener;
|
use ManiaControl\Callbacks\TimerListener;
|
||||||
use ManiaControl\Commands\CommandListener;
|
use ManiaControl\Commands\CommandListener;
|
||||||
use ManiaControl\ManiaControl;
|
use ManiaControl\ManiaControl;
|
||||||
@ -135,11 +136,13 @@ class DedimaniaPlugin implements CallbackListener, CommandListener, TimerListene
|
|||||||
|
|
||||||
$this->maniaControl->callbackManager->registerCallbackListener(Callbacks::BEGINMAP, $this, 'handleBeginMap');
|
$this->maniaControl->callbackManager->registerCallbackListener(Callbacks::BEGINMAP, $this, 'handleBeginMap');
|
||||||
$this->maniaControl->callbackManager->registerCallbackListener(Callbacks::ENDMAP, $this, 'handleMapEnd');
|
$this->maniaControl->callbackManager->registerCallbackListener(Callbacks::ENDMAP, $this, 'handleMapEnd');
|
||||||
|
$this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MP_PLAYERMANIALINKPAGEANSWER, $this, 'handleManialinkPageAnswer');
|
||||||
$this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERCONNECT, $this, 'handlePlayerConnect');
|
$this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERCONNECT, $this, 'handlePlayerConnect');
|
||||||
$this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERDISCONNECT, $this, 'handlePlayerDisconnect');
|
$this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERDISCONNECT, $this, 'handlePlayerDisconnect');
|
||||||
$this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_TM_PLAYERCHECKPOINT, $this, 'handlePlayerCheckpoint');
|
$this->maniaControl->callbackManager->registerCallbackListener(RecordCallback::CHECKPOINT, $this, 'handleCheckpointCallback');
|
||||||
$this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_TM_PLAYERFINISH, $this, 'handlePlayerFinished');
|
$this->maniaControl->callbackManager->registerCallbackListener(RecordCallback::LAPFINISH, $this, 'handleLapFinishCallback');
|
||||||
$this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MP_PLAYERMANIALINKPAGEANSWER, $this, 'handleManialinkPageAnswer');
|
$this->maniaControl->callbackManager->registerCallbackListener(RecordCallback::FINISH, $this, 'handleFinishCallback');
|
||||||
|
|
||||||
$this->maniaControl->timerManager->registerTimerListening($this, 'updateEverySecond', 1000);
|
$this->maniaControl->timerManager->registerTimerListening($this, 'updateEverySecond', 1000);
|
||||||
$this->maniaControl->timerManager->registerTimerListening($this, 'handleEveryMinute', 1000 * 60);
|
$this->maniaControl->timerManager->registerTimerListening($this, 'handleEveryMinute', 1000 * 60);
|
||||||
$this->maniaControl->timerManager->registerTimerListening($this, 'updatePlayerList', 1000 * 60 * 3);
|
$this->maniaControl->timerManager->registerTimerListening($this, 'updatePlayerList', 1000 * 60 * 3);
|
||||||
@ -246,7 +249,6 @@ class DedimaniaPlugin implements CallbackListener, CommandListener, TimerListene
|
|||||||
$this->dedimaniaData->records = array();
|
$this->dedimaniaData->records = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$serverInfo = $this->getServerInfo();
|
$serverInfo = $this->getServerInfo();
|
||||||
$playerInfo = $this->getPlayerList();
|
$playerInfo = $this->getPlayerList();
|
||||||
$mapInfo = $this->getMapInfo();
|
$mapInfo = $this->getMapInfo();
|
||||||
@ -760,51 +762,54 @@ class DedimaniaPlugin implements CallbackListener, CommandListener, TimerListene
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle PlayerCheckpoint Callback
|
* Handle Checkpoint Callback
|
||||||
*
|
*
|
||||||
* @param array $callback
|
* @param RecordCallback $callback
|
||||||
*/
|
*/
|
||||||
public function handlePlayerCheckpoint(array $callback) {
|
public function handleCheckpointCallback(RecordCallback $callback) {
|
||||||
$data = $callback[1];
|
if ($callback->isLegacyCallback) {
|
||||||
$login = $data[1];
|
return;
|
||||||
$time = $data[2];
|
|
||||||
//$lap = $data[3];
|
|
||||||
$cpIndex = $data[4];
|
|
||||||
if (!isset($this->checkpoints[$login]) || $cpIndex <= 0) {
|
|
||||||
$this->checkpoints[$login] = array();
|
|
||||||
}
|
}
|
||||||
$this->checkpoints[$login][$cpIndex] = $time;
|
if (!isset($this->checkpoints[$callback->login])) {
|
||||||
|
$this->checkpoints[$callback->login] = array();
|
||||||
|
}
|
||||||
|
$this->checkpoints[$callback->login][$callback->lapCheckpoint] = $callback->lapTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle Player Finished Callback
|
* Handle LapFinish Callback
|
||||||
*
|
*
|
||||||
* @param array $callback
|
* @param RecordCallback $callback
|
||||||
*/
|
*/
|
||||||
public function handlePlayerFinished(array $callback) {
|
public function handleLapFinishCallback(RecordCallback $callback) {
|
||||||
//var_dump($callback);
|
$this->handleFinishCallback($callback);
|
||||||
$data = $callback[1];
|
}
|
||||||
if ($data[0] <= 0 || $data[2] <= 0) {
|
|
||||||
|
/**
|
||||||
|
* Handle Finish Callback
|
||||||
|
*
|
||||||
|
* @param RecordCallback $callback
|
||||||
|
*/
|
||||||
|
public function handleFinishCallback(RecordCallback $callback) {
|
||||||
|
if ($callback->isLegacyCallback) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ($callback->time <= 0) {
|
||||||
|
// Invalid time
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$login = $data[1];
|
$map = $this->maniaControl->mapManager->getCurrentMap();
|
||||||
$time = $data[2];
|
|
||||||
$map = $this->maniaControl->mapManager->getCurrentMap();
|
|
||||||
if (!$map) {
|
if (!$map) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$oldRecord = $this->getDedimaniaRecord($callback->login);
|
||||||
$oldRecord = $this->getDedimaniaRecord($login);
|
if ($oldRecord->nullRecord || $oldRecord && $oldRecord->best > $callback->lapTime) {
|
||||||
if ($oldRecord->nullRecord || $oldRecord && $oldRecord->best > $time) {
|
|
||||||
$player = $this->maniaControl->playerManager->getPlayer($login);
|
|
||||||
|
|
||||||
// Save time
|
// Save time
|
||||||
$newRecord = new RecordData(null);
|
$newRecord = new RecordData(null);
|
||||||
$newRecord->constructNewRecord($login, $player->nickname, $data[2], $this->getCheckpoints($login), true);
|
$newRecord->constructNewRecord($callback->login, $callback->player->nickname, $callback->lapTime, $this->getCheckpoints($callback->login), true);
|
||||||
if ($this->insertDedimaniaRecord($newRecord, $oldRecord)) {
|
if ($this->insertDedimaniaRecord($newRecord, $oldRecord)) {
|
||||||
|
|
||||||
// Get newly saved record
|
// Get newly saved record
|
||||||
foreach ($this->dedimaniaData->records as &$record) {
|
foreach ($this->dedimaniaData->records as &$record) {
|
||||||
/** @var RecordData $record */
|
/** @var RecordData $record */
|
||||||
@ -825,9 +830,9 @@ class DedimaniaPlugin implements CallbackListener, CommandListener, TimerListene
|
|||||||
// Only improved time
|
// Only improved time
|
||||||
$improvement = 'improved his/her';
|
$improvement = 'improved his/her';
|
||||||
}
|
}
|
||||||
$message = '$390$<$fff' . $player->nickname . '$> ' . $improvement . ' $<$ff0' . $newRecord->rank . '.$> Dedimania Record: $<$fff' . Formatter::formatTime($newRecord->best) . '$>';
|
$message = '$390$<$fff' . $callback->player->nickname . '$> ' . $improvement . ' $<$ff0' . $newRecord->rank . '.$> Dedimania Record: $<$fff' . Formatter::formatTime($newRecord->best) . '$>';
|
||||||
if (!$oldRecord->nullRecord) {
|
if (!$oldRecord->nullRecord) {
|
||||||
$message .= ' ($<$ff0' . $oldRecord->rank . '.$> $<$fff-' . Formatter::formatTime(($oldRecord->best - $time)) . '$>)';
|
$message .= ' ($<$ff0' . $oldRecord->rank . '.$> $<$fff-' . Formatter::formatTime(($oldRecord->best - $callback->lapTime)) . '$>)';
|
||||||
}
|
}
|
||||||
$this->maniaControl->chat->sendInformation($message . '!');
|
$this->maniaControl->chat->sendInformation($message . '!');
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user