Now saving checkpoints for localrecords
This commit is contained in:
parent
f50f29cd10
commit
a125deaf8d
@ -56,6 +56,7 @@ class LocalRecordsPlugin implements CallbackListener, CommandListener, TimerList
|
|||||||
*/
|
*/
|
||||||
private $maniaControl = null;
|
private $maniaControl = null;
|
||||||
private $updateManialink = false;
|
private $updateManialink = false;
|
||||||
|
private $checkpoints = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prepares the Plugin
|
* Prepares the Plugin
|
||||||
@ -92,6 +93,7 @@ class LocalRecordsPlugin implements CallbackListener, CommandListener, TimerList
|
|||||||
$this->maniaControl->callbackManager->registerCallbackListener(MapManager::CB_BEGINMAP, $this, 'handleMapBegin');
|
$this->maniaControl->callbackManager->registerCallbackListener(MapManager::CB_BEGINMAP, $this, 'handleMapBegin');
|
||||||
$this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_TM_PLAYERFINISH, $this, 'handlePlayerFinish');
|
$this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_TM_PLAYERFINISH, $this, 'handlePlayerFinish');
|
||||||
$this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERCONNECT, $this, 'handlePlayerConnect');
|
$this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERCONNECT, $this, 'handlePlayerConnect');
|
||||||
|
$this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_TM_PLAYERCHECKPOINT, $this, 'handlePlayerCheckpoint');
|
||||||
$this->maniaControl->callbackManager->registerCallbackListener(SettingManager::CB_SETTINGS_CHANGED, $this, 'handleSettingsChanged');
|
$this->maniaControl->callbackManager->registerCallbackListener(SettingManager::CB_SETTINGS_CHANGED, $this, 'handleSettingsChanged');
|
||||||
$this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MP_PLAYERMANIALINKPAGEANSWER, $this, 'handleManialinkPageAnswer');
|
$this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MP_PLAYERMANIALINKPAGEANSWER, $this, 'handleManialinkPageAnswer');
|
||||||
$this->maniaControl->commandManager->registerCommandListener('records', $this, 'showRecordsList');
|
$this->maniaControl->commandManager->registerCommandListener('records', $this, 'showRecordsList');
|
||||||
@ -127,6 +129,13 @@ class LocalRecordsPlugin implements CallbackListener, CommandListener, TimerList
|
|||||||
if ($mysqli->error) {
|
if ($mysqli->error) {
|
||||||
trigger_error($mysqli->error, E_USER_ERROR);
|
trigger_error($mysqli->error, E_USER_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$mysqli->query("ALTER TABLE `" . self::TABLE_RECORDS . "` ADD `checkpoints` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL");
|
||||||
|
if ($mysqli->error) {
|
||||||
|
if(!strstr($mysqli->error, 'Duplicate')) {
|
||||||
|
trigger_error($mysqli->error, E_USER_ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -202,6 +211,23 @@ class LocalRecordsPlugin implements CallbackListener, CommandListener, TimerList
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle PlayerCheckpoint callback
|
||||||
|
*
|
||||||
|
* @param $callback
|
||||||
|
*/
|
||||||
|
public function handlePlayerCheckpoint($callback) {
|
||||||
|
$data = $callback[1];
|
||||||
|
$login = $data[1];
|
||||||
|
$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;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle PlayerConnect callback
|
* Handle PlayerConnect callback
|
||||||
*
|
*
|
||||||
@ -262,13 +288,16 @@ class LocalRecordsPlugin implements CallbackListener, CommandListener, TimerList
|
|||||||
$query = "INSERT INTO `" . self::TABLE_RECORDS . "` (
|
$query = "INSERT INTO `" . self::TABLE_RECORDS . "` (
|
||||||
`mapIndex`,
|
`mapIndex`,
|
||||||
`playerIndex`,
|
`playerIndex`,
|
||||||
`time`
|
`time`,
|
||||||
|
`checkpoints`
|
||||||
) VALUES (
|
) VALUES (
|
||||||
{$map->index},
|
{$map->index},
|
||||||
{$player->index},
|
{$player->index},
|
||||||
{$time}
|
{$time},
|
||||||
|
'{$this->getCheckpoints($player->login)}'
|
||||||
) ON DUPLICATE KEY UPDATE
|
) ON DUPLICATE KEY UPDATE
|
||||||
`time` = VALUES(`time`);";
|
`time` = VALUES(`time`),
|
||||||
|
`checkpoints` = VALUES(`checkpoints`);";
|
||||||
$mysqli->query($query);
|
$mysqli->query($query);
|
||||||
if ($mysqli->error) {
|
if ($mysqli->error) {
|
||||||
trigger_error($mysqli->error);
|
trigger_error($mysqli->error);
|
||||||
@ -429,6 +458,27 @@ class LocalRecordsPlugin implements CallbackListener, CommandListener, TimerList
|
|||||||
$this->maniaControl->manialinkManager->displayWidget($maniaLink, $player, 'PlayerList');
|
$this->maniaControl->manialinkManager->displayWidget($maniaLink, $player, 'PlayerList');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get current checkpoint string for dedimania record
|
||||||
|
*
|
||||||
|
* @param string $login
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
private function getCheckpoints($login) {
|
||||||
|
if (!$login || !isset($this->checkpoints[$login])) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
$string = '';
|
||||||
|
$count = count($this->checkpoints[$login]);
|
||||||
|
foreach($this->checkpoints[$login] as $index => $check) {
|
||||||
|
$string .= $check;
|
||||||
|
if ($index < $count - 1) {
|
||||||
|
$string .= ',';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $string;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Build the local records manialink
|
* Build the local records manialink
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user