diff --git a/world/src/civ/mod.rs b/world/src/civ/mod.rs index b34b39931a..e00e407078 100644 --- a/world/src/civ/mod.rs +++ b/world/src/civ/mod.rs @@ -1264,7 +1264,8 @@ fn walk_in_dir( Some((a + dir, 1.0 + hill_cost + water_cost + wild_cost)) } else if dir.x == 0 || dir.y == 0 { (4..=5).find_map(|i| { - loc_suitable_for_walking(sim, a + dir * i).then(|| (a + dir * i, 120.0 + (i - 4) as f32 * 10.0)) + loc_suitable_for_walking(sim, a + dir * i) + .then(|| (a + dir * i, 120.0 + (i - 4) as f32 * 10.0)) }) } else { None diff --git a/world/src/site2/gen.rs b/world/src/site2/gen.rs index 8b6aaae367..f6657bc52a 100644 --- a/world/src/site2/gen.rs +++ b/world/src/site2/gen.rs @@ -1073,10 +1073,13 @@ impl Painter { pub fn vault(&self, aabb: Aabb, dir: Dir) -> PrimitiveRef { let h = dir.orthogonal().select(Vec3::from(aabb.size()).xy()); - let mut prim = self.horizontal_cylinder(Aabb { - min: aabb.min.with_z(aabb.max.z - h), - max: aabb.max, - }, dir); + let mut prim = self.horizontal_cylinder( + Aabb { + min: aabb.min.with_z(aabb.max.z - h), + max: aabb.max, + }, + dir, + ); if aabb.size().d < h { prim = prim.intersect(self.aabb(aabb)); @@ -1085,7 +1088,8 @@ impl Painter { self.aabb(Aabb { min: aabb.min, max: aabb.max.with_z(aabb.max.z - h / 2), - }).union(prim) + }) + .union(prim) } /// Place aabbs around another aabb in a symmetric and distributed manner. diff --git a/world/src/site2/plot/bridge.rs b/world/src/site2/plot/bridge.rs index cc853b02d4..12c457ce5f 100644 --- a/world/src/site2/plot/bridge.rs +++ b/world/src/site2/plot/bridge.rs @@ -56,26 +56,30 @@ impl BridgeKind { rng: &mut impl Rng, start: Vec3, start_dist: i32, - center: Vec3, end: Vec3, end_dist: i32, water_alt: i32, - - name: &str, ) -> BridgeKind { let len = (start.xy() - end.xy()).map(|e| e.abs()).reduce_max(); let height = end.z - start.z; let down = start.z - water_alt; - let res = (0..=4) + (0..=4) .filter_map(|bridge| match bridge { 0 if height >= 16 => Some(BridgeKind::Tower(match rng.gen_range(0..=2) { 0 => RoofKind::Crenelated, _ => RoofKind::Hipped, })), - 1 if len < 60 => { println!("possible short"); Some(BridgeKind::Short)}, - 2 if len >= 50 && height < 13 && down < 20 && ((start_dist > 13 && end_dist > 13) || (start_dist - end_dist).abs() < 6) => Some(BridgeKind::HeightenedViaduct( - HeightenedViaduct::random(rng, height), - )), + 1 if len < 60 => Some(BridgeKind::Short), + 2 if len >= 50 + && height < 13 + && down < 20 + && ((start_dist > 13 && end_dist > 13) + || (start_dist - end_dist).abs() < 6) => + { + Some(BridgeKind::HeightenedViaduct(HeightenedViaduct::random( + rng, height, + ))) + }, 3 if height < 10 && down > 10 => Some(BridgeKind::HangBridge), 4 if down > 8 => Some(BridgeKind::Flat), _ => None, @@ -83,16 +87,7 @@ impl BridgeKind { .collect::>() .into_iter() .choose(rng) - .unwrap_or_else(|| BridgeKind::Flat); - - match &res { - BridgeKind::Flat => println!("Flat {name}"), - BridgeKind::Tower(_) => println!("Tower {name}"), - BridgeKind::Short => println!("Short {name}"), - BridgeKind::HeightenedViaduct(_) => println!("HeightenedViaduct {name}"), - BridgeKind::HangBridge => println!("HangBridge {name}"), - } - res + .unwrap_or(BridgeKind::Flat) } fn width(&self) -> i32 { @@ -287,13 +282,15 @@ fn render_flat(bridge: &Bridge, painter: &Painter) { .aabb(aabb( aabr.min.with_z(bridge.end.z + 1), aabr.max.with_z(bridge.end.z + 8), - )).clear(); + )) + .clear(); painter .aabb(aabb( aabr.min.with_z(bridge.end.z), aabr.max.with_z(bridge.end.z), - )).fill(rock); + )) + .fill(rock); } fn render_heightened_viaduct(bridge: &Bridge, painter: &Painter, data: &HeightenedViaduct) { @@ -510,7 +507,6 @@ fn render_heightened_viaduct(bridge: &Bridge, painter: &Painter, data: &Heighten .with_asset_expect("common.entity.wild.aggressive.swamp_troll", &mut rng), ); } - } fn render_tower(bridge: &Bridge, painter: &Painter, roof_kind: &RoofKind) { @@ -878,14 +874,17 @@ impl Bridge { let start = site.tile_wpos(start); let end = site.tile_wpos(end); - let min_water_dist = 6; + let min_water_dist = 5; let find_edge = |start: Vec2, end: Vec2| { let mut test_start = start; let dir = Dir::from_vector(end - start).to_vec2(); let mut last_alt = if let Some(col) = land.column_sample(start, index) { col.alt as i32 } else { - return (test_start.with_z(land.get_alt_approx(start) as i32), i32::MAX); + return ( + test_start.with_z(land.get_alt_approx(start) as i32), + i32::MAX, + ); }; let mut step = 0; loop { @@ -897,7 +896,6 @@ impl Bridge { { break (test_start.with_z(last_alt), water_dist); } else { - test_start += step * dir; if water_dist <= min_water_dist { @@ -928,7 +926,7 @@ impl Bridge { let col = land.column_sample(center, index).unwrap(); let center = center.with_z(col.alt as i32); let water_alt = col.water_level as i32; - let bridge = BridgeKind::random(rng, start, start_dist, center, end, end_dist, water_alt, site.name()); + let bridge = BridgeKind::random(rng, start, start_dist, end, end_dist, water_alt); Self { start, end,