summaryrefslogtreecommitdiff
path: root/server/src/protocol.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-06-20 01:38:00 +0200
committermetamuffin <metamuffin@disroot.org>2024-06-23 19:21:49 +0200
commit720bb2e4f53d4467832ba59f97c9b6b6786181e7 (patch)
tree10ea600436adf2c101d9a1ccbf64808414bbc354 /server/src/protocol.rs
parent6f7b995dd9fa3bea95be8c24e2452f015b410839 (diff)
downloadhurrycurry-720bb2e4f53d4467832ba59f97c9b6b6786181e7.tar
hurrycurry-720bb2e4f53d4467832ba59f97c9b6b6786181e7.tar.bz2
hurrycurry-720bb2e4f53d4467832ba59f97c9b6b6786181e7.tar.zst
type safe indecies
Diffstat (limited to 'server/src/protocol.rs')
-rw-r--r--server/src/protocol.rs21
1 files changed, 16 insertions, 5 deletions
diff --git a/server/src/protocol.rs b/server/src/protocol.rs
index 24fe2468..a629ffbf 100644
--- a/server/src/protocol.rs
+++ b/server/src/protocol.rs
@@ -2,11 +2,22 @@ use crate::data::Gamedata;
use glam::{IVec2, Vec2};
use serde::{Deserialize, Serialize};
-pub type PlayerID = i64;
-pub type ItemIndex = usize;
-pub type TileIndex = usize;
-pub type RecipeIndex = usize;
-pub type DemandIndex = usize;
+#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)]
+#[serde(transparent)]
+pub struct PlayerID(pub i64);
+
+#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)]
+#[serde(transparent)]
+pub struct ItemIndex(pub usize);
+#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)]
+#[serde(transparent)]
+pub struct TileIndex(pub usize);
+#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)]
+#[serde(transparent)]
+pub struct RecipeIndex(pub usize);
+#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)]
+#[serde(transparent)]
+pub struct DemandIndex(pub usize);
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case", tag = "type")]