From 0c6d978442b244ca3f29c1ffdd44b5007ae7ad93 Mon Sep 17 00:00:00 2001 From: Ilion Beyst Date: Wed, 29 Dec 2021 21:24:57 +0100 Subject: separate out visualizer library --- web/planetwars-rs/src/types.rs | 45 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 web/planetwars-rs/src/types.rs (limited to 'web/planetwars-rs/src/types.rs') diff --git a/web/planetwars-rs/src/types.rs b/web/planetwars-rs/src/types.rs new file mode 100644 index 0000000..2d7d8c0 --- /dev/null +++ b/web/planetwars-rs/src/types.rs @@ -0,0 +1,45 @@ +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Expedition { + pub id: u64, + pub ship_count: u64, + pub origin: String, + pub destination: String, + pub owner: u64, + pub turns_remaining: u64, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Planet { + pub ship_count: u64, + pub x: f32, + pub y: f32, + pub owner: Option, + pub name: String, +} + +use std::hash::{Hash, Hasher}; +use std::mem; + +impl Hash for Planet { + fn hash(&self, state: &mut H) { + unsafe { + let x: u32 = mem::transmute_copy(&self.x); + let y: u32 = mem::transmute_copy(&self.y); + state.write_u32(x); + state.write_u32(y); + } + } +} + +impl PartialEq for Planet { + fn eq(&self, other: &Self) -> bool { + (self.x - other.x).abs() < 0.0001 && (self.y - other.y).abs() < 0.0001 + } +} +impl Eq for Planet {} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct State { + pub planets: Vec, + pub expeditions: Vec, +} -- cgit v1.2.3