mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Make it compile without feature(worldgen)
+ move settings check to toggling mode segment
This commit is contained in:
@ -3108,28 +3108,36 @@ fn handle_battlemode(
|
|||||||
) -> CmdResult<()> {
|
) -> CmdResult<()> {
|
||||||
let ecs = server.state.ecs();
|
let ecs = server.state.ecs();
|
||||||
let settings = ecs.read_resource::<Settings>();
|
let settings = ecs.read_resource::<Settings>();
|
||||||
if !settings.battle_mode.allow_choosing() {
|
|
||||||
return Err("Toggling battlemode is disabled.".to_owned());
|
|
||||||
}
|
|
||||||
if let Some(mode) = parse_args!(args, String) {
|
if let Some(mode) = parse_args!(args, String) {
|
||||||
let world = &server.world;
|
if !settings.battle_mode.allow_choosing() {
|
||||||
let index = &server.index;
|
return Err("Toggling battlemode is disabled.".to_owned());
|
||||||
let sim = world.sim();
|
|
||||||
let pos = position(server, target, "target")?;
|
|
||||||
let chunk_pos = Vec2::from(pos.0).map(|x: f32| x as i32);
|
|
||||||
let chunk = sim
|
|
||||||
.get(chunk_pos)
|
|
||||||
.ok_or("Cannot get current chunk for target")?;
|
|
||||||
let site_ids = &chunk.sites;
|
|
||||||
let mut in_town = false;
|
|
||||||
for site_id in site_ids.iter() {
|
|
||||||
let site = index.sites.get(*site_id);
|
|
||||||
if matches!(site.kind, SiteKind::Settlement(_)) {
|
|
||||||
in_town = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "worldgen")]
|
||||||
|
let in_town = {
|
||||||
|
let world = &server.world;
|
||||||
|
let index = &server.index;
|
||||||
|
let sim = world.sim();
|
||||||
|
let pos = position(server, target, "target")?;
|
||||||
|
let chunk_pos = Vec2::from(pos.0).map(|x: f32| x as i32);
|
||||||
|
let chunk = sim
|
||||||
|
.get(chunk_pos)
|
||||||
|
.ok_or("Cannot get current chunk for target")?;
|
||||||
|
let site_ids = &chunk.sites;
|
||||||
|
let mut in_town = false;
|
||||||
|
for site_id in site_ids.iter() {
|
||||||
|
let site = index.sites.get(*site_id);
|
||||||
|
if matches!(site.kind, SiteKind::Settlement(_)) {
|
||||||
|
in_town = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
in_town
|
||||||
|
};
|
||||||
|
// just skip this check, if worldgen is disabled
|
||||||
|
#[cfg(not(feature = "worldgen"))]
|
||||||
|
let in_town = true;
|
||||||
|
|
||||||
if !in_town {
|
if !in_town {
|
||||||
return Err("You can change battle_mode only in town".to_owned());
|
return Err("You can change battle_mode only in town".to_owned());
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user