mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'src/team.rs')
-rw-r--r--src/team.rs76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/team.rs b/src/team.rs
new file mode 100644
index 0000000..5d2acd7
--- /dev/null
+++ b/src/team.rs
@@ -0,0 +1,76 @@
+use std::fmt;
+
+#[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
+pub struct Team(u8);
+
+impl Team
+{
+ pub fn of(id: u8) -> Self
+ {
+ Self(id)
+ }
+
+ pub fn get_id(&self) -> u8
+ {
+ self.0
+ }
+
+ pub fn is_base(&self) -> bool
+ {
+ self.0 < 6
+ }
+
+ pub fn get_name(&self) -> Option<&'static str>
+ {
+ match self.0
+ {
+ 0 => Some("derelict"),
+ 1 => Some("sharded"),
+ 2 => Some("crux"),
+ 3 => Some("malis"),
+ 4 => Some("green"),
+ 5 => Some("blue"),
+ _ => None,
+ }
+ }
+}
+
+impl From<u8> for Team
+{
+ fn from(value: u8) -> Self
+ {
+ Team::of(value)
+ }
+}
+
+impl From<Team> for u8
+{
+ fn from(value: Team) -> Self
+ {
+ value.0
+ }
+}
+
+impl fmt::Display for Team
+{
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result
+ {
+ match self.0
+ {
+ 0 => f.write_str("Derelict"),
+ 1 => f.write_str("Sharded"),
+ 2 => f.write_str("Crux"),
+ 3 => f.write_str("Malis"),
+ 4 => f.write_str("Green"),
+ 5 => f.write_str("Blue"),
+ id => write!(f, "Team #{id}"),
+ }
+ }
+}
+
+pub const DERELICT: Team = Team(0);
+pub const SHARDED: Team = Team(1);
+pub const CRUX: Team = Team(2);
+pub const MALIS: Team = Team(3);
+pub const GREEN: Team = Team(4);
+pub const BLUE: Team = Team(5);