add markers comments

This commit is contained in:
Beu 2025-03-13 15:57:39 +01:00
parent d116abc4dc
commit 3eee022618

View File

@ -36,7 +36,9 @@ use ManiaControl\Callbacks\TimerListener; // for pause
* @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3
*/ */
class MatchManagerCore implements CallbackListener, CommandListener, TimerListener, CommunicationListener, Plugin { class MatchManagerCore implements CallbackListener, CommandListener, TimerListener, CommunicationListener, Plugin {
/*
* MARK: Constants
*/
const PLUGIN_ID = 152; const PLUGIN_ID = 152;
const PLUGIN_VERSION = 5.6; const PLUGIN_VERSION = 5.6;
const PLUGIN_NAME = 'MatchManager Core'; const PLUGIN_NAME = 'MatchManager Core';
@ -326,7 +328,7 @@ class MatchManagerCore implements CallbackListener, CommandListener, TimerListen
]; ];
/* /*
* Private properties * MARK: Private properties
*/ */
private $matchStarted = false; private $matchStarted = false;
/** @var ManiaControl $maniaControl */ /** @var ManiaControl $maniaControl */
@ -367,6 +369,9 @@ class MatchManagerCore implements CallbackListener, CommandListener, TimerListen
private $matchid = ""; private $matchid = "";
/*
* MARK: Functions
*/
/** /**
* @param ManiaControl $maniaControl * @param ManiaControl $maniaControl
* @see \ManiaControl\Plugins\Plugin::prepare() * @see \ManiaControl\Plugins\Plugin::prepare()
@ -601,6 +606,9 @@ class MatchManagerCore implements CallbackListener, CommandListener, TimerListen
} }
} }
/*
* MARK: Informational Functions
*/
public function getMatchStatus() { public function getMatchStatus() {
return $this->matchStarted; return $this->matchStarted;
} }
@ -653,6 +661,10 @@ class MatchManagerCore implements CallbackListener, CommandListener, TimerListen
return $this->pauseon; return $this->pauseon;
} }
/*
* MARK: Internal Functions
*/
/** /**
* Update Widgets on Setting Changes * Update Widgets on Setting Changes
* *
@ -1345,6 +1357,111 @@ class MatchManagerCore implements CallbackListener, CommandListener, TimerListen
} }
} }
/**
* Compute Current Scores properties
*
* @param OnScoresStructure $structure
* @return void
*/
private function computeCurrentScores(OnScoresStructure $structure) {
//
// Players Scores
//
$this->currentscore = array();
$results = $structure->getPlayerScores();
if ($this->currentgmbase == "RoyalTimeAttack") {
$this->maniaControl->getChat()->sendErrorToAdmins($this->chatprefix . "No data are save in RoyalTimeAttack for the moment, it's not implemented on server side. Waiting a fix from NADEO");
Logger::Log("No data are save in RoyalTimeAttack for the moment, it's not implemented on server side. Waiting a fix from NADEO");
}
$preendroundplayersscore = [];
$preendroundteamsscore = [];
if ($this->preendroundscore !== null) {
$preendroundplayersscore = $this->preendroundscore->getPlayerScores();
$preendroundteamsscore = $this->preendroundscore->getTeamScores();
}
$this->preendroundscore = null;
foreach ($results as $result) {
/** @var \ManiaControl\Callbacks\Structures\TrackMania\Models\PlayerScore $result */
$rank = $result->getRank();
$player = $result->getPlayer();
$matchpoints = $result->getMatchPoints();
$mappoints = $result->getMapPoints();
$roundpoints = $result->getRoundPoints();
$bestracetime = $result->getBestRaceTime();
$bestracecheckpoints = implode(",", $result->getBestRaceCheckpoints());
$bestlaptime = $result->getBestLapTime();
$bestlapcheckpoints = implode(",", $result->getBestLapCheckpoints());
$prevracetime = $result->getPrevRaceTime();
$prevracecheckpoints = implode(",", $result->getPrevRaceCheckpoints());
if (count($preendroundplayersscore) > 0) {
$preendroundarray = array_filter($preendroundplayersscore, function ($e) use ($player) { return $e->getPlayer() === $player ; });
foreach ($preendroundarray as $key => $preendround) {
if ($roundpoints == 0 && $preendround->getRoundPoints() != 0) {
$roundpoints = $preendround->getRoundPoints();
}
if ($mappoints == 0 && $preendround->getMapPoints() != 0) {
$mappoints = $preendround->getMapPoints();
}
unset($preendroundplayersscore[$key]);
break;
}
}
$this->currentscore = array_merge($this->currentscore, array(
array($rank, $player->login, $matchpoints, $mappoints, $roundpoints, $bestracetime, $bestracecheckpoints, $bestlaptime, $bestlapcheckpoints, $prevracetime, $prevracecheckpoints, $player->teamId)
));
}
//
// Teams Scores
//
$this->currentteamsscore = array();
$teamresults = $structure->getTeamScores();
if (count($teamresults) > 1) {
// Resort scores
usort($teamresults, function ($a, $b) { return -($a->getMatchPoints() <=> $b->getMatchPoints()); });
$rank = 1;
foreach ($teamresults as $teamresult) {
$teamid = $teamresult->getTeamId();
$teamname = $teamresult->getName();
$matchpoints = $teamresult->getMatchPoints();
$mappoints = $teamresult->getMapPoints();
$roundpoints = $teamresult->getRoundPoints();
if (count($preendroundteamsscore) > 0) {
$preendroundarray = array_filter($preendroundteamsscore, function ($e) use ($teamid) { return $e->getTeamId() === $teamid ; });
foreach ($preendroundarray as $key => $preendround) {
if ($roundpoints == 0 && $preendround->getRoundPoints() != 0) {
$roundpoints = $preendround->getRoundPoints();
}
if ($mappoints == 0 && $preendround->getMapPoints() != 0) {
$mappoints = $preendround->getMapPoints();
}
unset($preendroundteamsscore[$key]);
break;
}
}
$this->currentteamsscore = array_merge($this->currentteamsscore, array(
array($rank, $teamid, $teamname, $matchpoints, $mappoints, $roundpoints)
));
$rank++;
}
}
}
/*
* MARK: Pause Management
*/
/** /**
* Set pause * Set pause
* *
@ -1442,6 +1559,10 @@ class MatchManagerCore implements CallbackListener, CommandListener, TimerListen
$this->maniaControl->getManialinkManager()->hideManialink(self::MLID_MATCH_PAUSE_WIDGET, $login); $this->maniaControl->getManialinkManager()->hideManialink(self::MLID_MATCH_PAUSE_WIDGET, $login);
} }
/*
* MARK: On Game Callbacks
*/
/** /**
* Handle when a player connect * Handle when a player connect
* *
@ -1757,100 +1878,9 @@ class MatchManagerCore implements CallbackListener, CommandListener, TimerListen
} }
} }
private function computeCurrentScores(OnScoresStructure $structure) { /*
// * MARK: On Command Callbacks
// Players Scores */
//
$this->currentscore = array();
$results = $structure->getPlayerScores();
if ($this->currentgmbase == "RoyalTimeAttack") {
$this->maniaControl->getChat()->sendErrorToAdmins($this->chatprefix . "No data are save in RoyalTimeAttack for the moment, it's not implemented on server side. Waiting a fix from NADEO");
Logger::Log("No data are save in RoyalTimeAttack for the moment, it's not implemented on server side. Waiting a fix from NADEO");
}
$preendroundplayersscore = [];
$preendroundteamsscore = [];
if ($this->preendroundscore !== null) {
$preendroundplayersscore = $this->preendroundscore->getPlayerScores();
$preendroundteamsscore = $this->preendroundscore->getTeamScores();
}
$this->preendroundscore = null;
foreach ($results as $result) {
/** @var \ManiaControl\Callbacks\Structures\TrackMania\Models\PlayerScore $result */
$rank = $result->getRank();
$player = $result->getPlayer();
$matchpoints = $result->getMatchPoints();
$mappoints = $result->getMapPoints();
$roundpoints = $result->getRoundPoints();
$bestracetime = $result->getBestRaceTime();
$bestracecheckpoints = implode(",", $result->getBestRaceCheckpoints());
$bestlaptime = $result->getBestLapTime();
$bestlapcheckpoints = implode(",", $result->getBestLapCheckpoints());
$prevracetime = $result->getPrevRaceTime();
$prevracecheckpoints = implode(",", $result->getPrevRaceCheckpoints());
if (count($preendroundplayersscore) > 0) {
$preendroundarray = array_filter($preendroundplayersscore, function ($e) use ($player) { return $e->getPlayer() === $player ; });
foreach ($preendroundarray as $key => $preendround) {
if ($roundpoints == 0 && $preendround->getRoundPoints() != 0) {
$roundpoints = $preendround->getRoundPoints();
}
if ($mappoints == 0 && $preendround->getMapPoints() != 0) {
$mappoints = $preendround->getMapPoints();
}
unset($preendroundplayersscore[$key]);
break;
}
}
$this->currentscore = array_merge($this->currentscore, array(
array($rank, $player->login, $matchpoints, $mappoints, $roundpoints, $bestracetime, $bestracecheckpoints, $bestlaptime, $bestlapcheckpoints, $prevracetime, $prevracecheckpoints, $player->teamId)
));
}
//
// Teams Scores
//
$this->currentteamsscore = array();
$teamresults = $structure->getTeamScores();
if (count($teamresults) > 1) {
// Resort scores
usort($teamresults, function ($a, $b) { return -($a->getMatchPoints() <=> $b->getMatchPoints()); });
$rank = 1;
foreach ($teamresults as $teamresult) {
$teamid = $teamresult->getTeamId();
$teamname = $teamresult->getName();
$matchpoints = $teamresult->getMatchPoints();
$mappoints = $teamresult->getMapPoints();
$roundpoints = $teamresult->getRoundPoints();
if (count($preendroundteamsscore) > 0) {
$preendroundarray = array_filter($preendroundteamsscore, function ($e) use ($teamid) { return $e->getTeamId() === $teamid ; });
foreach ($preendroundarray as $key => $preendround) {
if ($roundpoints == 0 && $preendround->getRoundPoints() != 0) {
$roundpoints = $preendround->getRoundPoints();
}
if ($mappoints == 0 && $preendround->getMapPoints() != 0) {
$mappoints = $preendround->getMapPoints();
}
unset($preendroundteamsscore[$key]);
break;
}
}
$this->currentteamsscore = array_merge($this->currentteamsscore, array(
array($rank, $teamid, $teamname, $matchpoints, $mappoints, $roundpoints)
));
$rank++;
}
}
}
/** /**
* Command //matchstart for admins * Command //matchstart for admins