aboutsummaryrefslogtreecommitdiff
path: root/server/src/entity/tram.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-10-11 22:25:31 +0200
committermetamuffin <metamuffin@disroot.org>2025-10-11 22:25:31 +0200
commit516546c3d20e1715370073acf2e6b8114351f8e9 (patch)
tree19ebabed6785372015d801adfe744be778c00a05 /server/src/entity/tram.rs
parentcdaa8e800276e28c720f846c91e144af97227db7 (diff)
downloadhurrycurry-516546c3d20e1715370073acf2e6b8114351f8e9.tar
hurrycurry-516546c3d20e1715370073acf2e6b8114351f8e9.tar.bz2
hurrycurry-516546c3d20e1715370073acf2e6b8114351f8e9.tar.zst
Improve server logging and use central player id counter (close #450)
Diffstat (limited to 'server/src/entity/tram.rs')
-rw-r--r--server/src/entity/tram.rs24
1 files changed, 10 insertions, 14 deletions
diff --git a/server/src/entity/tram.rs b/server/src/entity/tram.rs
index 391d16a9..2d6aa8c1 100644
--- a/server/src/entity/tram.rs
+++ b/server/src/entity/tram.rs
@@ -1,5 +1,3 @@
-use std::random::random;
-
/*
Hurry Curry! - a game about cooking
Copyright (C) 2025 Hurry Curry! Contributors
@@ -36,18 +34,16 @@ impl Entity for Tram {
false
}
fn tick(&mut self, c: EntityContext<'_>) -> Result<()> {
- if self.ids.is_empty() {
- for i in 0..self.length {
- let id = PlayerID(random(..));
- c.packet_in.push_back(PacketS::Join {
- name: format!("Tram {i}"),
- character: self.character,
- class: PlayerClass::Tram,
- id: Some(id),
- position: self.points.first().copied(),
- });
- self.ids.push(id);
- }
+ if self.ids.len() < self.length {
+ let id = c.game.get_unused_player_id();
+ c.packet_in.push_back(PacketS::Join {
+ id: Some(id),
+ name: format!("Tram {}", self.ids.len()),
+ character: self.character,
+ class: PlayerClass::Tram,
+ position: self.points.first().copied(),
+ });
+ self.ids.push(id);
}
for (i, id) in self.ids.iter().enumerate() {