Gated safe zone behind a server setting, removed unneeded function.

This commit is contained in:
Sam 2021-04-17 17:54:11 -04:00
parent 416fe5c2af
commit c8d4c4ff84
5 changed files with 11 additions and 14 deletions

View File

@ -255,7 +255,3 @@ pub fn handle_create_waypoint(server: &mut Server, pos: Vec3<f32>) {
)])) )]))
.build(); .build();
} }
pub fn handle_create_safezone(server: &mut Server, range: Option<f32>, pos: Pos) {
server.state.create_safezone(range, pos).build();
}

View File

@ -2,9 +2,8 @@ use crate::{state_ext::StateExt, Server};
use common::event::{EventBus, ServerEvent}; use common::event::{EventBus, ServerEvent};
use common_base::span; use common_base::span;
use entity_creation::{ use entity_creation::{
handle_beam, handle_create_npc, handle_create_safezone, handle_create_ship, handle_beam, handle_create_npc, handle_create_ship, handle_create_waypoint,
handle_create_waypoint, handle_initialize_character, handle_loaded_character_data, handle_initialize_character, handle_loaded_character_data, handle_shockwave, handle_shoot,
handle_shockwave, handle_shoot,
}; };
use entity_manipulation::{ use entity_manipulation::{
handle_aura, handle_buff, handle_combo_change, handle_damage, handle_delete, handle_destroy, handle_aura, handle_buff, handle_combo_change, handle_damage, handle_delete, handle_destroy,
@ -20,7 +19,7 @@ use interaction::{
use inventory_manip::handle_inventory; use inventory_manip::handle_inventory;
use invite::{handle_invite, handle_invite_response}; use invite::{handle_invite, handle_invite_response};
use player::{handle_client_disconnect, handle_exit_ingame}; use player::{handle_client_disconnect, handle_exit_ingame};
use specs::{Entity as EcsEntity, WorldExt}; use specs::{Builder, Entity as EcsEntity, WorldExt};
use trade::{cancel_trade_for, handle_process_trade_action}; use trade::{cancel_trade_for, handle_process_trade_action};
mod entity_creation; mod entity_creation;
@ -214,7 +213,7 @@ impl Server {
max_range, max_range,
} => handle_teleport_to(&self, entity, target, max_range), } => handle_teleport_to(&self, entity, target, max_range),
ServerEvent::CreateSafezone { range, pos } => { ServerEvent::CreateSafezone { range, pos } => {
handle_create_safezone(self, range, pos) self.state.create_safezone(range, pos).build();
}, },
} }
} }

View File

@ -43,6 +43,7 @@ pub struct Settings {
pub max_player_group_size: u32, pub max_player_group_size: u32,
pub client_timeout: Duration, pub client_timeout: Duration,
pub spawn_town: Option<String>, pub spawn_town: Option<String>,
pub safe_spawn: bool,
} }
impl Default for Settings { impl Default for Settings {
@ -61,6 +62,7 @@ impl Default for Settings {
max_player_group_size: 6, max_player_group_size: 6,
client_timeout: Duration::from_secs(40), client_timeout: Duration::from_secs(40),
spawn_town: None, spawn_town: None,
safe_spawn: true,
} }
} }
} }

View File

@ -325,12 +325,10 @@ impl StateExt for State {
use comp::{ use comp::{
aura::{Aura, AuraKind, AuraTarget, Auras}, aura::{Aura, AuraKind, AuraTarget, Auras},
buff::{BuffCategory, BuffData, BuffKind, BuffSource}, buff::{BuffCategory, BuffData, BuffKind, BuffSource},
object, Body,
}; };
self.ecs_mut() self.ecs_mut()
.create_entity_synced() .create_entity_synced()
.with(pos) .with(pos)
.with(Body::Object(object::Body::BoltNature))
.with(Auras::new(vec![Aura::new( .with(Auras::new(vec![Aura::new(
AuraKind::Buff { AuraKind::Buff {
kind: BuffKind::Invulnerability, kind: BuffKind::Invulnerability,

View File

@ -1,6 +1,6 @@
use crate::{ use crate::{
chunk_generator::ChunkGenerator, client::Client, presence::Presence, rtsim::RtSim, SpawnPoint, chunk_generator::ChunkGenerator, client::Client, presence::Presence, rtsim::RtSim,
Tick, settings::Settings, SpawnPoint, Tick,
}; };
use common::{ use common::{
comp::{ comp::{
@ -35,6 +35,7 @@ impl<'a> System<'a> for Sys {
Read<'a, EventBus<ServerEvent>>, Read<'a, EventBus<ServerEvent>>,
Read<'a, Tick>, Read<'a, Tick>,
Read<'a, SpawnPoint>, Read<'a, SpawnPoint>,
Read<'a, Settings>,
WriteExpect<'a, ChunkGenerator>, WriteExpect<'a, ChunkGenerator>,
WriteExpect<'a, TerrainGrid>, WriteExpect<'a, TerrainGrid>,
Write<'a, TerrainChanges>, Write<'a, TerrainChanges>,
@ -54,6 +55,7 @@ impl<'a> System<'a> for Sys {
server_event_bus, server_event_bus,
tick, tick,
spawn_point, spawn_point,
server_settings,
mut chunk_generator, mut chunk_generator,
mut terrain, mut terrain,
mut terrain_changes, mut terrain_changes,
@ -223,7 +225,7 @@ impl<'a> System<'a> for Sys {
} }
// Insert a safezone if chunk contains the spawn position // Insert a safezone if chunk contains the spawn position
if is_spawn_chunk(key, *spawn_point, &terrain) { if server_settings.safe_spawn && is_spawn_chunk(key, *spawn_point, &terrain) {
server_emitter.emit(ServerEvent::CreateSafezone { server_emitter.emit(ServerEvent::CreateSafezone {
range: Some(100.0), range: Some(100.0),
pos: Pos(spawn_point.0), pos: Pos(spawn_point.0),