From ffa7c6f5c007dfc826aef0ca27d23bb69bbeed7e Mon Sep 17 00:00:00 2001
From: Fibinger Ádám <adam.fibinger@wup.hu>
Date: Thu, 04 Jun 2020 23:10:08 +0200
Subject: [PATCH] BO pöttyök + BestOf kupa típus

---
 EOG/Models/Stripe.php |  111 ++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 92 insertions(+), 19 deletions(-)

diff --git a/EOG/Models/Stripe.php b/EOG/Models/Stripe.php
index 0f91067..3250137 100644
--- a/EOG/Models/Stripe.php
+++ b/EOG/Models/Stripe.php
@@ -15,29 +15,41 @@
 		'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'];
+		'valkyrie', 'vigil', 'warden', 'ying', 'zofia', 'wamai', 'kali', 'iana', 'oryx', 'no-ban', 'no-ban2'];
 	protected $state = [
 		'stripe' => [
 			'class' => 'team',
 		],
 		'cup'    => [
-			'number' => '#75',
+			'number' => '#76',
 			'name'   => '5on5 Open Cup',
+			'bestof'   => '5',
 		],
 		'team'   => [
 			'orange' =>
 				[
-					'name' => 'Narancs Csapat',
-					'ban'  => [
+					'name'  => 'Narancs Csapat',
+					'ban'   => [
 						'mira',
 						'jackal'
+					],
+					'score' => [
+						true,
+						true,
+						true
 					]
+
 				],
 			'blue'   => [
-				'name' => 'Kék csapat',
-				'ban'  => [
+				'name'  => 'Kék csapat',
+				'ban'   => [
 					'rook',
 					'blitz'
+				],
+				'score' => [
+					true,
+					true,
+					true
 				]
 			]
 		]
@@ -50,11 +62,6 @@
 			throw new \InvalidArgumentException("Given class " . $class . " not allowed. Allowed classes: " . implode(', ', $this->allowedStripeClasses));
 		}
 
-		if ($class === 'simple')
-		{
-			$this->setSimpleStripe();
-		}
-
 		$this->state['stripe']['class'] = $class;
 
 		return $this;
@@ -65,10 +72,16 @@
 		unset($this->state['team']);
 	}
 
-	public function setCup(string $number, string $name)
+	public function setScore(string $team, int $number, bool $score)
+	{
+		$this->state['team'][$team]['score'][$number] = $score;
+	}
+
+	public function setCup(string $number, string $name, int $bestOf = 1)
 	{
 		$this->state['cup']['number'] = $number;
 		$this->state['cup']['name'] = $name;
+		$this->state['cup']['bestof'] = $bestOf;
 	}
 
 	/**
@@ -80,17 +93,17 @@
 	{
 		if (!in_array($color, $this->allowedColors))
 		{
-			throw new \InvalidArgumentException("Given colour " . $team_color . " not allowed. Allowed colours: " . implode(', ', $this->allowedColors));
+			throw new \InvalidArgumentException("Given colour " . $color . " not allowed. Allowed colours: " . implode(', ', $this->allowedColors));
 		}
 	}
 
-	public function setTeamName(string $team_color = self::TEAM_BLUE, $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)
+	public function addTeamBan(string $team_color = self::TEAM_BLUE, $operator = '')
 	{
 		$this->testColor($team_color);
 		if (!in_array($operator, $this->allowedOperators))
@@ -98,6 +111,13 @@
 			//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.");
+		}
+
+		$this->state['team'][$team_color]['ban'][] = $operator;
 	}
 
 	public function __get($name)
@@ -115,21 +135,58 @@
 		return isset($this->state[$name]);
 	}
 
-	public function loadJson(string $json)
+	public function loadFromJson(string $json)
 	{
 		$state = json_decode($json);
+		$this->loadFromArray($state);
+	}
 
+	public function loadFromArray(array $state)
+	{
 		unset($this->state);
 		$this->state = [];
+
+		if (!empty($state['team']['orange']['score'][0]))
+		{
+			$this->setScore('orange', 0, true);
+		}
+
+		if (!empty($state['team']['orange']['score'][1]))
+		{
+			$this->setScore('orange', 1, true);
+		}
+
+		if (!empty($state['team']['orange']['score'][2]))
+		{
+			$this->setScore('orange', 2, true);
+		}
+
+		if (!empty($state['team']['blue']['score'][0]))
+		{
+			$this->setScore('blue', 0, true);
+		}
+
+		if (!empty($state['team']['blue']['score'][1]))
+		{
+			$this->setScore('blue', 1, true);
+		}
+
+		if (!empty($state['team']['blue']['score'][2]))
+		{
+			$this->setScore('blue', 2, true);
+		}
 
 		if (!empty($state['stripe']["class"]))
 		{
 			$this->setClass($state['stripe']["class"]);
 		}
 
-		if (!empty($state['cup']['name']) && !empty($state['cup']['number']))
+		if (!empty($state['cup']['name']) || !empty($state['cup']['number']) || !empty($state['cup']['bestof']))
 		{
-			$this->setCup($state['cup']['number'], $state['cup']['name']);
+			$cupNum = $state['cup']['number'] ?? '';
+			$cupName = $state['cup']['name'] ?? '';
+			$bestOf = (int) $state['cup']['bestof'] ?? 1;
+			$this->setCup($cupNum, $cupName, $bestOf);
 		}
 
 		if (!empty($state['team']))
@@ -157,7 +214,23 @@
 		return json_encode($this->state);
 	}
 
-	public function getOperators() {
+	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