From c5946f44341c29594803c5b2ca64dcaf335fbca3 Mon Sep 17 00:00:00 2001 From: Fibinger Ádám <adam.fibinger@wup.hu> Date: Wed, 27 Nov 2019 21:03:23 +0100 Subject: [PATCH] Némi refaktor és új overlay --- EOG/Models/Stripe.php | 266 ++++++++++++++++++++++++++++++++-------------------- 1 files changed, 164 insertions(+), 102 deletions(-) diff --git a/EOG/Models/Stripe.php b/EOG/Models/Stripe.php index dce29c0..a3bd134 100644 --- a/EOG/Models/Stripe.php +++ b/EOG/Models/Stripe.php @@ -4,123 +4,185 @@ class Stripe { - const TEAM_BLUE = 'blue'; - const TEAM_ORANGE = 'orange'; + const TEAM_BLUE = 'blue'; + const TEAM_ORANGE = 'orange'; - private $allowedColors = [self::TEAM_BLUE, self::TEAM_ORANGE]; - private $allowedStripeClasses = ['team', 'simple']; - private $allowedOperators = [ - 'alibi', 'amaru', 'ash', 'bandit', 'blackbeard', 'blitz', 'buck', 'capitao', 'castle', - 'caveira', 'clash', 'doc', 'dokkaebi', 'echo', 'ela', 'finka', 'frost', 'fuze', - 'glaz', 'goyo', 'gridlock', 'hibana', 'iq', 'jackal', 'jager', 'kaid', 'kapkan', - 'lesion', 'lion', 'maestro', 'maverick', 'mira', 'montagne', 'mozzie', 'mute', 'nokk', - 'nomad', 'pulse', 'rook', 'sledge', 'smoke', 'tachanka', 'thatcher', 'thermite', 'twitch', - 'valkyrie', 'vigil', 'warden', 'ying', 'zofia']; - protected $state = [ - 'stripe' => [ - 'class' => 'team', - ], - 'cup' => [ - 'number' => '#75', - 'name' => '5on5 Open Cup', - ], - 'team' => [ - 'orange' => - [ - 'name' => 'Narancs Csapat', - 'ban' => [ - 'mira', - 'jackal' - ] - ], - 'blue' => [ - 'name' => 'Kék csapat', - 'ban' => [ - 'rook', - 'blitz' - ] - ] - ] - ]; + private $allowedColors = [self::TEAM_BLUE, self::TEAM_ORANGE]; + private $allowedStripeClasses = ['team', 'simple', 'team-ban']; + private $allowedOperators = [ + 'alibi', 'amaru', 'ash', 'bandit', 'blackbeard', 'blitz', 'buck', 'capitao', 'castle', + 'caveira', 'clash', 'doc', 'dokkaebi', 'echo', 'ela', 'finka', 'frost', 'fuze', + 'glaz', 'goyo', 'gridlock', 'hibana', 'iq', 'jackal', 'jager', 'kaid', 'kapkan', + 'lesion', 'lion', 'maestro', 'maverick', 'mira', 'montagne', 'mozzie', 'mute', 'nokk', + 'nomad', 'pulse', 'rook', 'sledge', 'smoke', 'tachanka', 'thatcher', 'thermite', 'twitch', + 'valkyrie', 'vigil', 'warden', 'ying', 'zofia']; + protected $state = [ + 'stripe' => [ + 'class' => 'team', + ], + 'cup' => [ + 'number' => '#76', + 'name' => '5on5 Open Cup', + ], + 'team' => [ + 'orange' => + [ + 'name' => 'Narancs Csapat', + 'ban' => [ + 'mira', + 'jackal' + ] + ], + 'blue' => [ + 'name' => 'Kék csapat', + 'ban' => [ + 'rook', + 'blitz' + ] + ] + ] + ]; - public function setClass(string $class): self - { - if (!in_array($class, $this->allowedStripeClasses)) { - throw new \InvalidArgumentException("Given class " . $class . " not allowed. Allowed classes: " . implode(', ', $this->allowedStripeClasses)); - } + public function setClass(string $class): self + { + if (!in_array($class, $this->allowedStripeClasses)) + { + throw new \InvalidArgumentException("Given class " . $class . " not allowed. Allowed classes: " . implode(', ', $this->allowedStripeClasses)); + } - if ($class === 'simple') { - $this->setSimpleStripe(); - } + $this->state['stripe']['class'] = $class; - $this->state['stripe']['class'] = $class; + return $this; + } - return $this; - } + private function setSimpleStripe() + { + unset($this->state['team']); + } - private function setSimpleStripe() - { - unset($this->state['team']); - } + public function setCup(string $number, string $name) + { + $this->state['cup']['number'] = $number; + $this->state['cup']['name'] = $name; + } - public function setCup(string $number, string $name) - { - $this->state['cup']['number'] = $number; - $this->state['cup']['name'] = $name; - } + /** + * @param string $color Csapat szín validáció + * + * Dob egy Exception-t ha nem orange / blue + */ + private function testColor(string $color) + { + if (!in_array($color, $this->allowedColors)) + { + throw new \InvalidArgumentException("Given colour " . $team_color . " not allowed. Allowed colours: " . implode(', ', $this->allowedColors)); + } + } - /** - * @param string $color Csapat szín validáció - * - * Dob egy Exception-t ha nem orange / blue - */ - private function testColor(string $color) - { - if (!in_array($color, $this->allowedColors)) { - throw new \InvalidArgumentException("Given colour " . $team_color . " not allowed. Allowed colours: " . implode(', ', $this->allowedColors)); - } - } + public function setTeamName(string $team_color = self::TEAM_BLUE, $name) + { + $this->testColor($team_color); + $this->state['team'][$team_color]['name'] = $name; + } - public function setTeamName(string $team_color = self::TEAM_BLUE, $name) - { - $this->testColor($team_color); - $this->state['team'][$team_color]['name'] = $name; - } + public function addTeamBan(string $team_color = self::TEAM_BLUE, $operator) + { + $this->testColor($team_color); + if (!in_array($operator, $this->allowedOperators)) + { + //FIXME: védő és támadó operátorok külön + throw new \InvalidArgumentException("Given operator not allowed: " . $operator . " Allowed operators: " . implode(', ', $this->allowedOperators)); + } - public function addTeamBan(string $team_color = self::TEAM_BLUE, $operator) - { - $this->testColor($team_color); - if (!in_array($operator, $this->allowedOperators)) { - //FIXME: védő és támadó operátorok külön - throw new \InvalidArgumentException("Given operator not allowed: " . $operator . " Allowed operators: " . implode(', ', $this->allowedOperators)); - } - } + if (isset($this->state['team'][$team_color]['ban']) && count($this->state['team'][$team_color]['ban']) > 1) + { + throw new \InvalidArgumentException("Team " . $team_color . " already has 2 operators."); + } - public function __get($name) - { - if ($this->__isset($name)) { - return $this->state[$name]; - } + $this->state['team'][$team_color]['ban'][] = $operator; + } - return null; - } + public function __get($name) + { + if ($this->__isset($name)) + { + return $this->state[$name]; + } - public function __isset($name) - { - return isset($this->state[$name]); - } + return null; + } - public function loadJson(string $json) - { - $state = json_decode($json); + public function __isset($name) + { + return isset($this->state[$name]); + } - if (!empty($state['stripe']["class"])) { - $this->setClass($state['stripe']["class"]); - } + public function loadFromJson(string $json) + { + $state = json_decode($json); + $this->loadFromArray($state); + } - if (!empty($state['cup']['name']) && !empty($state['cup']['number'])) { - $this->setCup($state['cup']['number'], $state['cup']['name']); - } + public function loadFromArray(array $state) + { - } + unset($this->state); + $this->state = []; + + if (!empty($state['stripe']["class"])) + { + $this->setClass($state['stripe']["class"]); + } + + if (!empty($state['cup']['name']) || !empty($state['cup']['number'])) + { + $cupNum = $state['cup']['number'] ?? ''; + $cupName = $state['cup']['name'] ?? ''; + $this->setCup($cupNum, $cupName); + } + + if (!empty($state['team'])) + { + foreach ([self::TEAM_BLUE, self::TEAM_ORANGE] as $color) + { + if (!empty($state['team'][$color]['name'])) + { + $this->setTeamName($color, $state['team'][$color]['name']); + } + + if (!empty($state['team'][$color]['ban']) && is_array($state['team'][$color]['ban'])) + { + foreach ($state['team'][$color]['ban'] as $operator) + { + $this->addTeamBan($color, $operator); + } + } + } + } + } + + public function getJson() + { + return json_encode($this->state); + } + + public function getOperators() + { + return $this->allowedOperators; + } + + public function getState() + { + return $this->state; + } + + public function getType() + { + if (empty($this->state['stripe']['class'])) + { + return null; + } + + return $this->state['stripe']['class']; + } } \ No newline at end of file -- Gitblit v1.8.0