aboutsummaryrefslogtreecommitdiff
path: root/server/src/server.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-06-03 19:45:05 +0200
committermetamuffin <metamuffin@disroot.org>2025-06-03 19:45:08 +0200
commit9ee7eef2919feffe4e0695494d4027e8ec011808 (patch)
tree4fbb5347e7166911d08ae31dd3c20556b61c943e /server/src/server.rs
parent63f7321e50b251d19f20dc929fc37a45cccdbb38 (diff)
downloadhurrycurry-9ee7eef2919feffe4e0695494d4027e8ec011808.tar
hurrycurry-9ee7eef2919feffe4e0695494d4027e8ec011808.tar.bz2
hurrycurry-9ee7eef2919feffe4e0695494d4027e8ec011808.tar.zst
Add pedestrians (and custom spawn locations)
Diffstat (limited to 'server/src/server.rs')
-rw-r--r--server/src/server.rs11
1 files changed, 8 insertions, 3 deletions
diff --git a/server/src/server.rs b/server/src/server.rs
index a06f4f36..f9342add 100644
--- a/server/src/server.rs
+++ b/server/src/server.rs
@@ -76,6 +76,7 @@ pub trait GameServerExt {
character: i32,
class: PlayerClass,
serverdata: &Serverdata,
+ custom_position: Option<Vec2>,
packet_out: Option<&mut VecDeque<PacketC>>,
);
fn prime_client(&self) -> Vec<PacketC>;
@@ -143,7 +144,7 @@ impl GameServerExt for Game {
}
}
for (id, (name, character, class)) in players {
- self.join_player(id, name, character, class, serverdata, None);
+ self.join_player(id, name, character, class, serverdata, None, None);
}
packet_out.extend(self.prime_client());
@@ -247,12 +248,13 @@ impl GameServerExt for Game {
character: i32,
class: PlayerClass,
serverdata: &Serverdata,
+ custom_position: Option<Vec2>,
packet_out: Option<&mut VecDeque<PacketC>>,
) {
- let position = match class {
+ let position = custom_position.unwrap_or(match class {
PlayerClass::Customer => serverdata.customer_spawn,
PlayerClass::Bot | PlayerClass::Chef => serverdata.chef_spawn,
- } + (Vec2::new(random(), random()) - 0.5);
+ }) + (Vec2::new(random(), random()) - 0.5);
self.players.insert(
id,
Player {
@@ -353,6 +355,7 @@ impl Server {
load_map: &mut None,
});
}
+ self.tick(0.);
self.game.load(
gamedata,
&serverdata,
@@ -375,6 +378,7 @@ impl Server {
character,
id,
class,
+ position,
} => {
if name.chars().count() > 32 || name.len() > 64 {
return Err(tre!(
@@ -397,6 +401,7 @@ impl Server {
character,
class,
&self.data,
+ position,
Some(&mut self.packet_out),
);
replies.push(PacketC::Joined { id })