diff options
Diffstat (limited to 'server/src')
| -rw-r--r-- | server/src/commands.rs | 10 | ||||
| -rw-r--r-- | server/src/entity/bot.rs | 8 | ||||
| -rw-r--r-- | server/src/entity/customers.rs | 8 | ||||
| -rw-r--r-- | server/src/entity/mod.rs | 12 | ||||
| -rw-r--r-- | server/src/entity/pedestrians.rs | 11 | ||||
| -rw-r--r-- | server/src/entity/tram.rs | 4 | ||||
| -rw-r--r-- | server/src/main.rs | 4 | ||||
| -rw-r--r-- | server/src/server.rs | 8 | 
8 files changed, 41 insertions, 24 deletions
| diff --git a/server/src/commands.rs b/server/src/commands.rs index b5645c8c..5be9e662 100644 --- a/server/src/commands.rs +++ b/server/src/commands.rs @@ -24,7 +24,9 @@ use crate::{  use anyhow::Result;  use clap::{Parser, ValueEnum};  use hurrycurry_bot::algos::ALGO_CONSTRUCTORS; -use hurrycurry_protocol::{DocumentElement, Menu, Message, PacketC, PlayerClass, PlayerID}; +use hurrycurry_protocol::{ +    Character, DocumentElement, Menu, Message, PacketC, PlayerClass, PlayerID, +};  use std::{fmt::Write, time::Duration};  #[derive(Parser)] @@ -242,7 +244,11 @@ impl Server {                  let algo = cons();                  self.entities.push(Box::new(BotDriver::new(                      format!("{}-bot", name.unwrap_or((*aname).to_owned())), -                    51, +                    Character { +                        color: 0, +                        hairstyle: 0, +                        headwear: 0, +                    },                      PlayerClass::Bot,                      algo,                  ))); diff --git a/server/src/entity/bot.rs b/server/src/entity/bot.rs index 922cc55e..8d3994cb 100644 --- a/server/src/entity/bot.rs +++ b/server/src/entity/bot.rs @@ -18,7 +18,7 @@  use super::{Entity, EntityContext};  use anyhow::Result;  use hurrycurry_bot::{BotAlgo, DynBotAlgo}; -use hurrycurry_protocol::{Hand, PacketS, PlayerClass, PlayerID}; +use hurrycurry_protocol::{Character, Hand, PacketS, PlayerClass, PlayerID};  use log::info;  use rand::random;  use std::any::Any; @@ -27,14 +27,14 @@ pub type DynBotDriver = BotDriver<DynBotAlgo>;  pub struct BotDriver<T> {      algo: T, -    join_data: Option<(String, i32, PlayerClass)>, +    join_data: Option<(String, Character, PlayerClass)>,      id: PlayerID,      interacting: bool,      left: bool,  }  impl<T: BotAlgo> BotDriver<T> { -    pub fn new(name: String, character: i32, class: PlayerClass, algo: T) -> Self { +    pub fn new(name: String, character: Character, class: PlayerClass, algo: T) -> Self {          Self {              algo,              id: PlayerID(0), @@ -51,7 +51,7 @@ impl<T: BotAlgo + Any> Entity for BotDriver<T> {      fn tick(&mut self, c: EntityContext<'_>) -> Result<()> {          if let Some((name, character, class)) = self.join_data.take() {              self.id = PlayerID(random()); // TODO bad code, can collide -            info!("spawn {:?} ({name:?}, {character})", self.id); +            info!("spawn {:?} ({name:?})", self.id);              c.packet_in.push_back(PacketS::Join {                  name,                  character, diff --git a/server/src/entity/customers.rs b/server/src/entity/customers.rs index 02051901..05246a54 100644 --- a/server/src/entity/customers.rs +++ b/server/src/entity/customers.rs @@ -18,7 +18,7 @@  use super::{bot::BotDriver, Entity, EntityContext};  use anyhow::Result;  use hurrycurry_bot::algos::{Customer, CustomerConfig}; -use hurrycurry_protocol::PlayerClass; +use hurrycurry_protocol::{Character, PlayerClass};  use rand::random;  pub struct Customers { @@ -56,7 +56,11 @@ impl Entity for Customers {              self.spawn_cooldown = 10. + random::<f32>() * 10.;              let bot = BotDriver::new(                  "".to_string(), -                -1 - random::<u16>() as i32, +                Character { +                    color: random(), +                    hairstyle: random(), +                    headwear: 0, +                },                  PlayerClass::Customer,                  Customer::new(CustomerConfig {                      unknown_order: !c.serverdata.flags.disable_unknown_orders, diff --git a/server/src/entity/mod.rs b/server/src/entity/mod.rs index 75ea0e9b..2eadc0ff 100644 --- a/server/src/entity/mod.rs +++ b/server/src/entity/mod.rs @@ -42,7 +42,7 @@ use environment_effect::{EnvironmentController, EnvironmentEffect, EnvironmentEf  use hurrycurry_client_lib::Game;  use hurrycurry_protocol::{      glam::{IVec2, Vec2}, -    PacketC, PacketS, PlayerID, +    Character, PacketC, PacketS, PlayerID,  };  use item_portal::ItemPortal;  use player_portal::PlayerPortal; @@ -142,7 +142,7 @@ pub enum EntityDecl {      },      Tram {          length: usize, -        character: Option<i32>, +        color: Option<i32>,          points: Vec<Vec2>,          spacing: f32,          smoothing: f32, @@ -219,13 +219,17 @@ pub fn construct_entity(          EntityDecl::Environment(names) => Box::new(EnvironmentController(names)),          EntityDecl::Tram {              length, -            character, +            color,              points,              smoothing,              spacing,          } => Box::new(Tram {              length, -            character: character.unwrap_or(51), +            character: Character { +                color: color.unwrap_or_default(), +                hairstyle: 0, +                headwear: 0, +            },              ids: Vec::new(),              points,              progress: 0., diff --git a/server/src/entity/pedestrians.rs b/server/src/entity/pedestrians.rs index 9b433ded..64adf57b 100644 --- a/server/src/entity/pedestrians.rs +++ b/server/src/entity/pedestrians.rs @@ -1,5 +1,3 @@ -use std::collections::HashMap; -  /*      Hurry Curry! - a game about cooking      Copyright 2025 metamuffin @@ -19,9 +17,10 @@ use std::collections::HashMap;  */  use super::{Entity, EntityContext};  use anyhow::Result; -use hurrycurry_protocol::{glam::Vec2, PacketS, PlayerClass, PlayerID}; +use hurrycurry_protocol::{glam::Vec2, Character, PacketS, PlayerClass, PlayerID};  use rand::{random, rng};  use rand_distr::Distribution; +use std::collections::HashMap;  pub struct Pedestrians {      pub players: HashMap<PlayerID, usize>, @@ -40,7 +39,11 @@ impl Entity for Pedestrians {              let id = PlayerID(random());              c.packet_in.push_back(PacketS::Join {                  name: "Pedestrian".to_string(), -                character: 0, +                character: Character { +                    color: random(), +                    hairstyle: random(), +                    headwear: 0, +                },                  class: PlayerClass::Customer,                  id: Some(id),                  position: self.points.get(0).copied(), diff --git a/server/src/entity/tram.rs b/server/src/entity/tram.rs index 26a191aa..76ce6dbd 100644 --- a/server/src/entity/tram.rs +++ b/server/src/entity/tram.rs @@ -17,12 +17,12 @@  */  use super::{Entity, EntityContext};  use anyhow::Result; -use hurrycurry_protocol::{glam::Vec2, PacketS, PlayerClass, PlayerID}; +use hurrycurry_protocol::{glam::Vec2, Character, PacketS, PlayerClass, PlayerID};  use rand::random;  pub struct Tram {      pub length: usize, -    pub character: i32, +    pub character: Character,      pub ids: Vec<PlayerID>,      pub points: Vec<Vec2>,      pub progress: f32, diff --git a/server/src/main.rs b/server/src/main.rs index cc5bcb52..d476fc30 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -304,7 +304,7 @@ async fn run(args: Args) -> anyhow::Result<()> {  #[cfg(test)]  mod test { -    use hurrycurry_protocol::{PacketS, PlayerClass, PlayerID}; +    use hurrycurry_protocol::{Character, PacketS, PlayerClass, PlayerID};      use hurrycurry_server::{data::DATA_DIR, server::Server, ConnectionID};      use std::future::Future;      use tokio::sync::broadcast; @@ -360,7 +360,7 @@ mod test {                      ConnectionID(conn.try_into().unwrap()),                      PacketS::Join {                          name: format!("test {conn}"), -                        character: 1, +                        character: Character::default(),                          class: PlayerClass::Chef,                          id: None,                          position: None, diff --git a/server/src/server.rs b/server/src/server.rs index 3823c0ca..c30f54a4 100644 --- a/server/src/server.rs +++ b/server/src/server.rs @@ -28,8 +28,8 @@ use hurrycurry_client_lib::{Game, Involvement, Item, Player, Tile};  use hurrycurry_protocol::{      glam::{IVec2, Vec2},      movement::MovementBase, -    Gamedata, Hand, ItemLocation, Menu, MessageTimeout, PacketC, PacketS, PlayerClass, PlayerID, -    Score, TileIndex, +    Character, Gamedata, Hand, ItemLocation, Menu, MessageTimeout, PacketC, PacketS, PlayerClass, +    PlayerID, Score, TileIndex,  };  use log::{info, warn};  use rand::random; @@ -73,7 +73,7 @@ pub trait GameServerExt {          &mut self,          id: PlayerID,          name: String, -        character: i32, +        character: Character,          class: PlayerClass,          serverdata: &Serverdata,          custom_position: Option<Vec2>, @@ -245,7 +245,7 @@ impl GameServerExt for Game {          &mut self,          id: PlayerID,          name: String, -        character: i32, +        character: Character,          class: PlayerClass,          serverdata: &Serverdata,          custom_position: Option<Vec2>, | 
