1#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
2pub struct Reserves<const N: usize> {
3 pub stones: u8,
4 pub caps: u8,
5}
6
7impl Default for Reserves<3> {
8 fn default() -> Self {
9 Self {
10 stones: 10,
11 caps: 0,
12 }
13 }
14}
15
16impl Default for Reserves<4> {
17 fn default() -> Self {
18 Self {
19 stones: 15,
20 caps: 0,
21 }
22 }
23}
24
25impl Default for Reserves<5> {
26 fn default() -> Self {
27 Self {
28 stones: 21,
29 caps: 1,
30 }
31 }
32}
33
34impl Default for Reserves<6> {
35 fn default() -> Self {
36 Self {
37 stones: 30,
38 caps: 1,
39 }
40 }
41}
42
43impl Default for Reserves<7> {
44 fn default() -> Self {
45 Self {
46 stones: 40,
47 caps: 2,
48 }
49 }
50}
51
52impl Default for Reserves<8> {
53 fn default() -> Self {
54 Self {
55 stones: 50,
56 caps: 2,
57 }
58 }
59}
60
61impl<const N: usize> Reserves<N> {
62 #[must_use]
63 pub const fn depleted(self) -> bool {
64 self.caps == 0 && self.stones == 0
65 }
66}