ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
Deck.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
24use ILIAS\UI\Implementation\Component\ComponentHelper;
26
27class Deck implements D\Deck
28{
29 use ComponentHelper;
30
31 private static array $sizes = [
32 self::SIZE_FULL,
33 self::SIZE_XL,
34 self::SIZE_L,
35 self::SIZE_M,
36 self::SIZE_S,
37 self::SIZE_XS
38 ];
39
43 protected array $cards;
44 protected int $size;
45
49 public function __construct(array $cards, int $size)
50 {
51 $classes = [Card::class];
52 $this->checkArgListElements("cards", $cards, $classes);
53 $this->checkArgIsElement("size", $size, self::$sizes, "size type");
54
55 $this->cards = $cards;
56 $this->size = $size;
57 }
58
62 public function withCards(array $cards): D\Deck
63 {
64 $classes = [Card::class];
65 $this->checkArgListElements("sections", $cards, $classes);
66
67 $clone = clone $this;
68 $clone->cards = $cards;
69 return $clone;
70 }
71
75 public function getCards(): array
76 {
77 return $this->cards;
78 }
79
83 public function withExtraSmallCardsSize(): D\Deck
84 {
85 return $this->withCardsSize(self::SIZE_XS);
86 }
87
91 public function withSmallCardsSize(): D\Deck
92 {
93 return $this->withCardsSize(self::SIZE_S);
94 }
98 public function withNormalCardsSize(): D\Deck
99 {
100 return $this->withCardsSize(self::SIZE_M);
101 }
102
106 public function withLargeCardsSize(): D\Deck
107 {
108 return $this->withCardsSize(self::SIZE_L);
109 }
110
114 public function withExtraLargeCardsSize(): D\Deck
115 {
116 return $this->withCardsSize(self::SIZE_XL);
117 }
118
122 public function withFullSizedCardsSize(): D\Deck
123 {
124 return $this->withCardsSize(self::SIZE_FULL);
125 }
126
127 protected function withCardsSize(int $size): D\Deck
128 {
129 $this->checkArgIsElement("size", $size, self::$sizes, "size type");
130
131 $clone = clone $this;
132 $clone->size = $size;
133 return $clone;
134 }
135
139 public function getCardsSize(): int
140 {
141 return $this->size;
142 }
143
149 {
150 return $this->getCardsSizeForDisplaySize(self::SIZE_S);
151 }
152
157 public function getCardsSizeForDisplaySize(int $display_size): int
158 {
172 $sizes = [
173 self::SIZE_XS => [
174 self::SIZE_XS => 4,
175 self::SIZE_S => 2,
176 self::SIZE_M => 2,
177 self::SIZE_L => 1
178 ],
179 self::SIZE_S => [
180 self::SIZE_XS => 6,
181 self::SIZE_S => 3,
182 self::SIZE_M => 3,
183 self::SIZE_L => 2
184 ],
185 self::SIZE_M => [
186 self::SIZE_XS => 12,
187 self::SIZE_S => 6,
188 self::SIZE_M => 4,
189 self::SIZE_L => 3
190 ],
191 self::SIZE_L => [
192 self::SIZE_XS => 12,
193 self::SIZE_S => 6,
194 self::SIZE_M => 6,
195 self::SIZE_L => 4
196 ],
197 self::SIZE_XL => [
198 self::SIZE_XS => 12,
199 self::SIZE_S => 12,
200 self::SIZE_M => 6,
201 self::SIZE_L => 6
202 ],
203 self::SIZE_FULL => [
204 self::SIZE_XS => 12,
205 self::SIZE_S => 12,
206 self::SIZE_M => 12,
207 self::SIZE_L => 12
208 ],
209 ];
210
211 return $sizes[$this->getCardsSize()][$display_size];
212 }
213}
__construct(array $cards, int $size)
Definition: Deck.php:49
getCardsSizeForDisplaySize(int $display_size)
Definition: Deck.php:157