1use core::convert::TryFrom;
2use minicbor::{Decode, Encode};
3
4pub use oc_wasm_helpers::{
5 error::TryFromInt as TryFromIntError,
6 fluid::{Fluid, Tank},
7 inventory::ItemStack,
8 sides::{Absolute as AbsoluteSide, Relative as RelativeSide, Side, BLOCK_SIDES},
9 Lockable,
10};
11
12#[derive(Clone, Copy, Debug, Decode, Encode, Eq, Hash, Ord, PartialEq, PartialOrd)]
14#[cbor(array)]
15pub struct Dimension {
16 #[n(0)]
18 pub width: u32,
19
20 #[n(1)]
22 pub height: u32,
23}
24
25#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
27pub struct Point {
28 pub x: u32,
30
31 pub y: u32,
33}
34
35#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
37pub struct Vector2 {
38 pub x: i32,
40
41 pub y: i32,
43}
44
45pub const COLOURS: usize = 16;
47
48#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
50pub enum Colour {
51 White,
52 Orange,
53 Magenta,
54 LightBlue,
55 Yellow,
56 Lime,
57 Pink,
58 Grey,
59 LightGrey,
60 Cyan,
61 Purple,
62 Blue,
63 Brown,
64 Green,
65 Red,
66 Black,
67}
68
69impl From<Colour> for u8 {
70 fn from(x: Colour) -> u8 {
71 match x {
72 Colour::White => 0,
73 Colour::Orange => 1,
74 Colour::Magenta => 2,
75 Colour::LightBlue => 3,
76 Colour::Yellow => 4,
77 Colour::Lime => 5,
78 Colour::Pink => 6,
79 Colour::Grey => 7,
80 Colour::LightGrey => 8,
81 Colour::Cyan => 9,
82 Colour::Purple => 10,
83 Colour::Blue => 11,
84 Colour::Brown => 12,
85 Colour::Green => 13,
86 Colour::Red => 14,
87 Colour::Black => 15,
88 }
89 }
90}
91
92impl From<Colour> for usize {
93 fn from(x: Colour) -> usize {
94 u8::from(x) as usize
95 }
96}
97
98impl TryFrom<u8> for Colour {
99 type Error = oc_wasm_helpers::error::TryFromInt;
100
101 fn try_from(x: u8) -> Result<Self, Self::Error> {
102 match x {
103 0 => Ok(Colour::White),
104 1 => Ok(Colour::Orange),
105 2 => Ok(Colour::Magenta),
106 3 => Ok(Colour::LightBlue),
107 4 => Ok(Colour::Yellow),
108 5 => Ok(Colour::Lime),
109 6 => Ok(Colour::Pink),
110 7 => Ok(Colour::Grey),
111 8 => Ok(Colour::LightGrey),
112 9 => Ok(Colour::Cyan),
113 10 => Ok(Colour::Purple),
114 11 => Ok(Colour::Blue),
115 12 => Ok(Colour::Brown),
116 13 => Ok(Colour::Green),
117 14 => Ok(Colour::Red),
118 15 => Ok(Colour::Black),
119 _ => Err(oc_wasm_helpers::error::TryFromInt),
120 }
121 }
122}
123
124#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
126pub struct Rgb(pub u32);