From e9ed9d910cc76952d659db12f28d56c5742ab40b Mon Sep 17 00:00:00 2001 From: kremsy Date: Thu, 30 Mar 2017 19:39:23 +0200 Subject: [PATCH] refactored Scores Structure --- .../Common/CommonScoresStructure.php | 119 ++++++++++++++++++ .../Common/Models/CommonPlayerScore.php | 88 +++++++++++++ .../Common/Models/CommonTeamScore.php | 93 ++++++++++++++ .../ShootMania/Models/PlayerScore.php | 82 +----------- .../ShootMania/Models/TeamScore.php | 84 +------------ .../ShootMania/OnScoresStructure.php | 86 +------------ .../TrackMania/Models/PlayerScore.php | 110 +++++----------- .../TrackMania/Models/TeamScore.php | 84 +------------ .../TrackMania/OnScoresStructure.php | 86 +------------ 9 files changed, 353 insertions(+), 479 deletions(-) create mode 100644 core/Callbacks/Structures/Common/CommonScoresStructure.php create mode 100644 core/Callbacks/Structures/Common/Models/CommonPlayerScore.php create mode 100644 core/Callbacks/Structures/Common/Models/CommonTeamScore.php diff --git a/core/Callbacks/Structures/Common/CommonScoresStructure.php b/core/Callbacks/Structures/Common/CommonScoresStructure.php new file mode 100644 index 00000000..60cec626 --- /dev/null +++ b/core/Callbacks/Structures/Common/CommonScoresStructure.php @@ -0,0 +1,119 @@ + + * @copyright 2014-2017 ManiaControl Team + * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 + */ +class CommonScoresStructure extends BaseStructure { + protected $responseId; + protected $section; + protected $useTeams; + protected $winnerTeam; + protected $winnerPlayer; + protected $teamScores = array(); + protected $playerScores = array(); + + //TODO test + public function __construct(ManiaControl $maniaControl, $data) { + parent::__construct($maniaControl, $data); + + $jsonObj = $this->getPlainJsonObject(); + + $this->responseId = $jsonObj->responseId; + $this->section = $jsonObj->section; + $this->useTeams = $jsonObj->useTeams; + $this->winnerTeam = $jsonObj->winnerTeam; + + $this->winnerPlayer = $this->maniaControl->getPlayerManager()->getPlayer($jsonObj->winnerplayer); + + foreach ($jsonObj->teams as $team) { + if ($this instanceof \ManiaControl\Callbacks\Structures\TrackMania\OnScoresStructure) { + $teamScore = new \ManiaControl\Callbacks\Structures\TrackMania\Models\TeamScore(); + } else { + $teamScore = new \ManiaControl\Callbacks\Structures\ShootMania\Models\TeamScore(); + } + + $teamScore->setId($team->id); + $teamScore->setName($team->name); + $teamScore->setRoundPoints($team->roundpoints); + $teamScore->setMatchPoints($team->matchpoints); + $teamScore->setMapPoints($team->mappoints); + + $this->teamScores[$team->id] = $teamScore; //TODO verify that different teams have different ids + } + } + + /** + * Get the Winner Player Object + * + * @return \ManiaControl\Players\Player + */ + public function getWinnerPlayer() { + return $this->winnerPlayer; + } + + /** + * Get the Response Id + * + * @return string + */ + public function getResponseId() { + return $this->responseId; + } + + /** + * < Current progress of the match. Can be "" | "EndRound" | "EndMap" | "EndMatch" + * + * @return string + */ + public function getSection() { + return $this->section; + } + + /** + * Returns if the GameMode uses Teams or not + * + * @return boolean + */ + public function getUseTeams() { + return $this->useTeams; + } + + /** + * Get the Winner Team Id + * + * @return int + */ + public function getWinnerTeamId() { + return $this->winnerTeam; + } + + /** + * Returns the TeamScores + * + * @return TeamScore[] + */ + public function getTeamScores() { + return $this->teamScores; + } + + /** + * Get the Player Scores + * + * @return CommonPlayerScore[] + */ + public function getPlayerScores() { + return $this->playerScores; + } +} \ No newline at end of file diff --git a/core/Callbacks/Structures/Common/Models/CommonPlayerScore.php b/core/Callbacks/Structures/Common/Models/CommonPlayerScore.php new file mode 100644 index 00000000..2b575184 --- /dev/null +++ b/core/Callbacks/Structures/Common/Models/CommonPlayerScore.php @@ -0,0 +1,88 @@ +player; + } + + /** + * @param \ManiaControl\Players\Player $player + */ + public function setPlayer(Player $player) { + $this->player = $player; + } + + /** + * Returns the Rank + * + * @return int + */ + public function getRank() { + return $this->rank; + } + + /** + * Sets the Rank + * + * @param int $rank + */ + public function setRank($rank) { + $this->rank = $rank; + } + + /** + * Gets the Round Points + * + * @return int + */ + public function getRoundPoints() { + return $this->roundPoints; + } + + /** + * Sets the RoundPoints + * + * @param int $roundPoints + */ + public function setRoundPoints($roundPoints) { + $this->roundPoints = $roundPoints; + } + + /** + * Gets the Map Points + * + * @return int + */ + public function getMapPoints() { + return $this->mapPoints; + } + + /** + * Sets the Map Points + * + * @param int $mapPoints + */ + public function setMapPoints($mapPoints) { + $this->mapPoints = $mapPoints; + } + +} \ No newline at end of file diff --git a/core/Callbacks/Structures/Common/Models/CommonTeamScore.php b/core/Callbacks/Structures/Common/Models/CommonTeamScore.php new file mode 100644 index 00000000..362e5d04 --- /dev/null +++ b/core/Callbacks/Structures/Common/Models/CommonTeamScore.php @@ -0,0 +1,93 @@ + + * @copyright 2014-2017 ManiaControl Team + * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 + */ +class CommonTeamScore implements UsageInformationAble { + use UsageInformationTrait; + + private $id; + private $name; + private $roundPoints; + private $mapPoints; + private $matchPoints; + + /** + * @return mixed + */ + public function getId() { + return $this->id; + } + + /** + * @param mixed $id + */ + public function setId($id) { + $this->id = $id; + } + + /** + * @return mixed + */ + public function getName() { + return $this->name; + } + + /** + * @param mixed $name + */ + public function setName($name) { + $this->name = $name; + } + + /** + * @return mixed + */ + public function getRoundPoints() { + return $this->roundPoints; + } + + /** + * @param mixed $roundPoints + */ + public function setRoundPoints($roundPoints) { + $this->roundPoints = $roundPoints; + } + + /** + * @return mixed + */ + public function getMapPoints() { + return $this->mapPoints; + } + + /** + * @param mixed $mapPoints + */ + public function setMapPoints($mapPoints) { + $this->mapPoints = $mapPoints; + } + + /** + * @return mixed + */ + public function getMatchPoints() { + return $this->matchPoints; + } + + /** + * @param mixed $matchPoints + */ + public function setMatchPoints($matchPoints) { + $this->matchPoints = $matchPoints; + } +} \ No newline at end of file diff --git a/core/Callbacks/Structures/ShootMania/Models/PlayerScore.php b/core/Callbacks/Structures/ShootMania/Models/PlayerScore.php index 8e695dbc..0b03101d 100644 --- a/core/Callbacks/Structures/ShootMania/Models/PlayerScore.php +++ b/core/Callbacks/Structures/ShootMania/Models/PlayerScore.php @@ -2,9 +2,8 @@ namespace ManiaControl\Callbacks\Structures\ShootMania\Models; -use ManiaControl\General\UsageInformationAble; -use ManiaControl\General\UsageInformationTrait; -use ManiaControl\Players\Player; +use ManiaControl\Callbacks\Structures\Common\Models\CommonPlayerScore; + /** * PlayerScore Model @@ -13,81 +12,6 @@ use ManiaControl\Players\Player; * @copyright 2014-2017 ManiaControl Team * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 */ -class PlayerScore implements UsageInformationAble { - use UsageInformationTrait; +class PlayerScore extends CommonPlayerScore { - private $player; - private $rank; - private $roundPoints; - private $mapPoints; - - /** - * Returns the Player - * - * @return Player - */ - public function getPlayer() { - return $this->player; - } - - /** - * @param \ManiaControl\Players\Player $player - */ - public function setPlayer(Player $player) { - $this->player = $player; - } - - /** - * Returns the Rank - * - * @return int - */ - public function getRank() { - return $this->rank; - } - - /** - * Sets the Rank - * - * @param int $rank - */ - public function setRank($rank) { - $this->rank = $rank; - } - - /** - * Gets the Round Points - * - * @return int - */ - public function getRoundPoints() { - return $this->roundPoints; - } - - /** - * Sets the RoundPoints - * - * @param int $roundPoints - */ - public function setRoundPoints($roundPoints) { - $this->roundPoints = $roundPoints; - } - - /** - * Gets the Map Points - * - * @return int - */ - public function getMapPoints() { - return $this->mapPoints; - } - - /** - * Sets the Map Points - * - * @param int $mapPoints - */ - public function setMapPoints($mapPoints) { - $this->mapPoints = $mapPoints; - } } \ No newline at end of file diff --git a/core/Callbacks/Structures/ShootMania/Models/TeamScore.php b/core/Callbacks/Structures/ShootMania/Models/TeamScore.php index b1557bb5..e1e1a80b 100644 --- a/core/Callbacks/Structures/ShootMania/Models/TeamScore.php +++ b/core/Callbacks/Structures/ShootMania/Models/TeamScore.php @@ -2,92 +2,14 @@ namespace ManiaControl\Callbacks\Structures\ShootMania\Models; -use ManiaControl\General\UsageInformationAble; -use ManiaControl\General\UsageInformationTrait; +use ManiaControl\Callbacks\Structures\Common\Models\CommonTeamScore; /** - * TeamScore Model + * Shootmania TeamScore Model * * @author ManiaControl Team * @copyright 2014-2017 ManiaControl Team * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 */ -class TeamScore implements UsageInformationAble { - use UsageInformationTrait; - - private $id; - private $name; - private $roundPoints; - private $mapPoints; - private $matchPoints; - - /** - * @return mixed - */ - public function getId() { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getName() { - return $this->name; - } - - /** - * @param mixed $name - */ - public function setName($name) { - $this->name = $name; - } - - /** - * @return mixed - */ - public function getRoundPoints() { - return $this->roundPoints; - } - - /** - * @param mixed $roundPoints - */ - public function setRoundPoints($roundPoints) { - $this->roundPoints = $roundPoints; - } - - /** - * @return mixed - */ - public function getMapPoints() { - return $this->mapPoints; - } - - /** - * @param mixed $mapPoints - */ - public function setMapPoints($mapPoints) { - $this->mapPoints = $mapPoints; - } - - /** - * @return mixed - */ - public function getMatchPoints() { - return $this->matchPoints; - } - - /** - * @param mixed $matchPoints - */ - public function setMatchPoints($matchPoints) { - $this->matchPoints = $matchPoints; - } +class TeamScore extends CommonTeamScore { } \ No newline at end of file diff --git a/core/Callbacks/Structures/ShootMania/OnScoresStructure.php b/core/Callbacks/Structures/ShootMania/OnScoresStructure.php index a759d015..1a396224 100644 --- a/core/Callbacks/Structures/ShootMania/OnScoresStructure.php +++ b/core/Callbacks/Structures/ShootMania/OnScoresStructure.php @@ -3,41 +3,28 @@ namespace ManiaControl\Callbacks\Structures\ShootMania; -use ManiaControl\Callbacks\Structures\BaseStructure; +use ManiaControl\Callbacks\Structures\Common\CommonScoresStructure; use ManiaControl\Callbacks\Structures\ShootMania\Models\PlayerScore; use ManiaControl\Callbacks\Structures\ShootMania\Models\TeamScore; use ManiaControl\ManiaControl; + /** - * Structure Class for the OnScores Structure Callback + * Structure Class for the Shootmania OnScores Structure Callback * * @author ManiaControl Team * @copyright 2014-2017 ManiaControl Team * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 */ -class OnScoresStructure extends BaseStructure { - private $responseId; - private $section; - private $useTeams; - private $winnerTeam; - private $winnerPlayer; - private $teamScores = array(); - private $playerScores = array(); +class OnScoresStructure extends CommonScoresStructure { - //TODO test public function __construct(ManiaControl $maniaControl, $data) { parent::__construct($maniaControl, $data); $jsonObj = $this->getPlainJsonObject(); - $this->responseId = $jsonObj->responseId; - $this->section = $jsonObj->section; - $this->useTeams = $jsonObj->useTeams; - $this->winnerTeam = $jsonObj->winnerTeam; - - $this->winnerPlayer = $this->maniaControl->getPlayerManager()->getPlayer($jsonObj->winnerplayer); - foreach ($jsonObj->teams as $team) { + //if($this instanceof OnScoresStructure) $teamScore = new TeamScore(); $teamScore->setId($team->id); $teamScore->setName($team->name); @@ -59,67 +46,4 @@ class OnScoresStructure extends BaseStructure { } } - - /** - * Get the Winner Player Object - * - * @return \ManiaControl\Players\Player - */ - public function getWinnerPlayer() { - return $this->winnerPlayer; - } - - /** - * Get the Response Id - * - * @return string - */ - public function getResponseId() { - return $this->responseId; - } - - /** - * < Current progress of the match. Can be "" | "EndRound" | "EndMap" | "EndMatch" - * - * @return string - */ - public function getSection() { - return $this->section; - } - - /** - * Returns if the GameMode uses Teams or not - * - * @return boolean - */ - public function getUseTeams() { - return $this->useTeams; - } - - /** - * Get the Winner Team Id - * - * @return int - */ - public function getWinnerTeamId() { - return $this->winnerTeam; - } - - /** - * Returns the TeamScores - * - * @return TeamScore[] - */ - public function getTeamScores() { - return $this->teamScores; - } - - /** - * Get the Player Scores - * - * @return PlayerScore[] - */ - public function getPlayerScores() { - return $this->playerScores; - } } \ No newline at end of file diff --git a/core/Callbacks/Structures/TrackMania/Models/PlayerScore.php b/core/Callbacks/Structures/TrackMania/Models/PlayerScore.php index 0eb07753..c955172c 100644 --- a/core/Callbacks/Structures/TrackMania/Models/PlayerScore.php +++ b/core/Callbacks/Structures/TrackMania/Models/PlayerScore.php @@ -2,10 +2,10 @@ namespace ManiaControl\Callbacks\Structures\TrackMania\Models; -use ManiaControl\General\UsageInformationAble; -use ManiaControl\General\UsageInformationTrait; +use ManiaControl\Callbacks\Structures\Common\Models\CommonPlayerScore; + use ManiaControl\Players\Player; -//TODO proper return descriptions on getter methods +//TODO proper return descriptions on getter methods -> use autogenerate for setter/getter + docs /** * PlayerScore Model * @@ -13,33 +13,12 @@ use ManiaControl\Players\Player; * @copyright 2014-2017 ManiaControl Team * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 */ -class PlayerScore implements UsageInformationAble { - use UsageInformationTrait; +class PlayerScore extends CommonPlayerScore { - private $player; - private $rank; - private $roundPoints; - private $mapPoints; - private $matchPoints; - private $bestraceTime; - private $bestlapTime; + private $bestRaceTime; + private $bestLapTime; private $stuntScore; - /** - * Returns the Player - * - * @return Player - */ - public function getPlayer() { - return $this->player; - } - - /** - * @param \ManiaControl\Players\Player $player - */ - public function setPlayer(Player $player) { - $this->player = $player; - } /** * Returns the Rank @@ -59,68 +38,24 @@ class PlayerScore implements UsageInformationAble { $this->rank = $rank; } - /** - * Gets the Round Points - * - * @return int - */ - public function getRoundPoints() { - return $this->roundPoints; - } - /** - * Sets the RoundPoints - * - * @param int $roundPoints - */ - public function setRoundPoints($roundPoints) { - $this->roundPoints = $roundPoints; - } - /** - * Gets the Map Points - * - * @return int - */ - public function getMapPoints() { - return $this->mapPoints; - } - - /** - * Sets the Map Points - * - * @param int $mapPoints - */ - public function setMapPoints($mapPoints) { - $this->mapPoints = $mapPoints; - } - /** * Gets the bestRaceTime * * @param int $bestraceTime */ - public function getbestraceTime(){ - return $this->bestraceTime; + public function getBestraceTime(){ + return $this->bestRaceTime; } - - /** - * Gets the MapPoints - * - * @return int - */ - public function getMatchPoints(){ - return $this->matchPoints; - } - /** * Gets the bestlapTime * * @param int $bestlapTime */ - public function getbestlapTime(){ - return $this->bestlapTime; + public function getBestlapTime(){ + return $this->bestLapTime; } /** @@ -128,8 +63,29 @@ class PlayerScore implements UsageInformationAble { * * @param int $bestraceTime */ - public function getstuntScore(){ + public function getStuntScore(){ return $this->stuntScore; } - + + /** + * @param mixed $bestRaceTime + */ + public function setBestRaceTime($bestRaceTime) { + $this->bestRaceTime = $bestRaceTime; + } + + /** + * @param mixed $bestLapTime + */ + public function setBestLapTime($bestLapTime) { + $this->bestLapTime = $bestLapTime; + } + + /** + * @param mixed $stuntScore + */ + public function setStuntScore($stuntScore) { + $this->stuntScore = $stuntScore; + } + } \ No newline at end of file diff --git a/core/Callbacks/Structures/TrackMania/Models/TeamScore.php b/core/Callbacks/Structures/TrackMania/Models/TeamScore.php index 07fe30a3..756721b9 100644 --- a/core/Callbacks/Structures/TrackMania/Models/TeamScore.php +++ b/core/Callbacks/Structures/TrackMania/Models/TeamScore.php @@ -2,92 +2,14 @@ namespace ManiaControl\Callbacks\Structures\TrackMania\Models; -use ManiaControl\General\UsageInformationAble; -use ManiaControl\General\UsageInformationTrait; +use ManiaControl\Callbacks\Structures\Common\Models\CommonTeamScore; /** - * TeamScore Model + * Shootmania TeamScore Model * * @author ManiaControl Team * @copyright 2014-2017 ManiaControl Team * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 */ -class TeamScore implements UsageInformationAble { - use UsageInformationTrait; - - private $id; - private $name; - private $roundPoints; - private $mapPoints; - private $matchPoints; - - /** - * @return mixed - */ - public function getId() { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getName() { - return $this->name; - } - - /** - * @param mixed $name - */ - public function setName($name) { - $this->name = $name; - } - - /** - * @return mixed - */ - public function getRoundPoints() { - return $this->roundPoints; - } - - /** - * @param mixed $roundPoints - */ - public function setRoundPoints($roundPoints) { - $this->roundPoints = $roundPoints; - } - - /** - * @return mixed - */ - public function getMapPoints() { - return $this->mapPoints; - } - - /** - * @param mixed $mapPoints - */ - public function setMapPoints($mapPoints) { - $this->mapPoints = $mapPoints; - } - - /** - * @return mixed - */ - public function getMatchPoints() { - return $this->matchPoints; - } - - /** - * @param mixed $matchPoints - */ - public function setMatchPoints($matchPoints) { - $this->matchPoints = $matchPoints; - } +class TeamScore extends CommonTeamScore { } \ No newline at end of file diff --git a/core/Callbacks/Structures/TrackMania/OnScoresStructure.php b/core/Callbacks/Structures/TrackMania/OnScoresStructure.php index 1ce1bb14..fac4ad5f 100644 --- a/core/Callbacks/Structures/TrackMania/OnScoresStructure.php +++ b/core/Callbacks/Structures/TrackMania/OnScoresStructure.php @@ -2,41 +2,25 @@ namespace ManiaControl\Callbacks\Structures\TrackMania; - -use ManiaControl\Callbacks\Structures\BaseStructure; +use ManiaControl\Callbacks\Structures\Common\CommonScoresStructure; use ManiaControl\Callbacks\Structures\TrackMania\Models\PlayerScore; use ManiaControl\Callbacks\Structures\TrackMania\Models\TeamScore; use ManiaControl\ManiaControl; /** - * Structure Class for the OnScores Structure Callback + * Structure Class for the Trackmania OnScores Structure Callback * * @author ManiaControl Team * @copyright 2014-2017 ManiaControl Team * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 */ -class OnScoresStructure extends BaseStructure { - private $responseId; - private $section; - private $useTeams; - private $winnerTeam; - private $winnerPlayer; - private $teamScores = array(); - private $playerScores = array(); +class OnScoresStructure extends CommonScoresStructure { - //TODO test public function __construct(ManiaControl $maniaControl, $data) { parent::__construct($maniaControl, $data); $jsonObj = $this->getPlainJsonObject(); - $this->responseId = $jsonObj->responseid; - $this->section = $jsonObj->section; - $this->useTeams = $jsonObj->useteams; - $this->winnerTeam = $jsonObj->winnerteam; - - $this->winnerPlayer = $this->maniaControl->getPlayerManager()->getPlayer($jsonObj->winnerplayer); - foreach ($jsonObj->teams as $team) { $teamScore = new TeamScore(); $teamScore->setId($team->id); @@ -54,72 +38,14 @@ class OnScoresStructure extends BaseStructure { $playerScore->setRank($jsonPlayer->rank); $playerScore->setRoundPoints($jsonPlayer->roundpoints); $playerScore->setMapPoints($jsonPlayer->mappoints); + $playerScore->setBestRaceTime($jsonPlayer->bestracetime); + $playerScore->setBestLapTime($jsonPlayer->bestlaptime); + $playerScore->setStuntScore($jsonPlayer->stuntscore); $this->playerScores[$jsonPlayer->login] = $playerScore; } } - /** - * Get the Winner Player Object - * - * @return \ManiaControl\Players\Player - */ - public function getWinnerPlayer() { - return $this->winnerPlayer; - } - /** - * Get the Response Id - * - * @return string - */ - public function getResponseId() { - return $this->responseId; - } - - /** - * < Current progress of the match. Can be "" | "EndRound" | "EndMap" | "EndMatch" - * - * @return string - */ - public function getSection() { - return $this->section; - } - - /** - * Returns if the GameMode uses Teams or not - * - * @return boolean - */ - public function getUseTeams() { - return $this->useTeams; - } - - /** - * Get the Winner Team Id - * - * @return int - */ - public function getWinnerTeamId() { - return $this->winnerTeam; - } - - /** - * Returns the TeamScores - * - * @return TeamScore[] - */ - public function getTeamScores() { - return $this->teamScores; - } - - /** - * Get the Player Scores - * - * @return PlayerScore[] - */ - public function getPlayerScores() { - return $this->playerScores; - } } \ No newline at end of file