diff options
author | metamuffin <metamuffin@disroot.org> | 2024-09-02 00:13:04 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-09-02 00:37:54 +0200 |
commit | 5b14aab4341f099c9f5b59ad6aec08c4a58827c3 (patch) | |
tree | 5597105e74abcc5a562442b5922a6654bd5e93fe /server/src/entity/mod.rs | |
parent | e864abcf6469c877087e53525de632b89546659d (diff) | |
download | hurrycurry-5b14aab4341f099c9f5b59ad6aec08c4a58827c3.tar hurrycurry-5b14aab4341f099c9f5b59ad6aec08c4a58827c3.tar.bz2 hurrycurry-5b14aab4341f099c9f5b59ad6aec08c4a58827c3.tar.zst |
campaign lobby map link entity
Diffstat (limited to 'server/src/entity/mod.rs')
-rw-r--r-- | server/src/entity/mod.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/server/src/entity/mod.rs b/server/src/entity/mod.rs index d8fa5654..7180d1a7 100644 --- a/server/src/entity/mod.rs +++ b/server/src/entity/mod.rs @@ -16,6 +16,7 @@ */ pub mod bot; +pub mod campaign; pub mod conveyor; pub mod customers; pub mod environment_effect; @@ -24,6 +25,7 @@ pub mod player_portal; use crate::data::ItemTileRegistry; use anyhow::{anyhow, Result}; +use campaign::Map; use conveyor::Conveyor; use customers::Customers; use environment_effect::{EnvironmentController, EnvironmentEffect, EnvironmentEffectController}; @@ -45,6 +47,7 @@ pub struct EntityContext<'a> { pub packet_out: &'a mut VecDeque<PacketC>, pub packet_in: &'a mut VecDeque<PacketS>, pub score_changed: &'a mut bool, + pub load_map: &'a mut Option<String>, pub dt: f32, } @@ -95,6 +98,10 @@ pub enum EntityDecl { to: Vec2, }, Customers {}, + Map { + name: String, + location: Option<Vec2>, + }, EnvironmentEffect(EnvironmentEffect), Environment(Vec<String>), } @@ -136,6 +143,12 @@ pub fn construct_entity( cooldown: 0., }) } + EntityDecl::Map { name, location } => Box::new(Map { + location: location + .or(pos.map(|p| p.as_vec2() + 0.5)) + .ok_or(anyhow!("no location"))?, + name, + }), EntityDecl::Customers {} => Box::new(Customers::new()?), EntityDecl::EnvironmentEffect(config) => Box::new(EnvironmentEffectController::new(config)), EntityDecl::Environment(names) => Box::new(EnvironmentController(names)), |