dedimania plugin update for new records callback class
This commit is contained in:
		| @@ -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 . '!'); | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user