summaryrefslogtreecommitdiff
path: root/server/src/server.rs
diff options
context:
space:
mode:
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 })