From ddeead67703d8bb04b06fdb82fa3a5e9c09667f6 Mon Sep 17 00:00:00 2001 From: Joshua Barretto Date: Mon, 8 Jul 2019 17:41:20 +0100 Subject: [PATCH] Added acacia trees, desert bones, fixed minor worldgen issues --- .../world/structure/natural/ribcage-small.vox | Bin 0 -> 2728 bytes .../world/structure/natural/skull-large.vox | Bin 0 -> 8464 bytes world/src/block/mod.rs | 2 +- world/src/block/natural.rs | 24 ++++++++++++++++-- world/src/lib.rs | 2 +- world/src/sim/mod.rs | 2 +- 6 files changed, 25 insertions(+), 5 deletions(-) create mode 100644 assets/world/structure/natural/ribcage-small.vox create mode 100644 assets/world/structure/natural/skull-large.vox diff --git a/assets/world/structure/natural/ribcage-small.vox b/assets/world/structure/natural/ribcage-small.vox new file mode 100644 index 0000000000000000000000000000000000000000..5b888ae0dba152ef95d25a8319e60a9606132a66 GIT binary patch literal 2728 zcmeH|zm6m|5XN1$+yBa*neCpN*(2gr4hfxBCqM!T9T)RR2$2wxBasr2@CL;97$k06 zT7FH&E1(_e+poG@?Q(rx<^A@n_n-b~jQQft)0dF>p&0Yc(}&ON@xbo{J^{z``|mzH zeIGFR{UrQZOg8~UGfXnO$!3}YE4~Uh_yo?_7x=++D`r=3cCpyj><)-Cy9Ex2$IrSu zV%Xma+GM(9IK$*u@`=L42REbzbQf)&g_3-{T#Y;X}HaE4#!y?-_i43 z7dUpig<-FOni6M>U3?tYrS5#DA9MFE@7|Z)q&Q8C^m-aTDrZd8oQF-s#nNpmyGu%6 zX6olWmA#bOG@=Q)DzTcnt!Z}$GqSOA*EZZa<&buq3gEL-xi-GhwbTZXI0Cb0VTeGU`Gvb zv|U4@7CY4u=cE@aLq&R{Piw|rmtHG=`a;oJkNe`dI|4I7?<@UUtq1Jqh_L~U7PMJd z3(N_#<{~qjSYJTc^WF7)JAej{=*Txx`oBEL%y4`ZG!X6$^tpNT@iX6-neG8CBXun^ z-qIfLhaCWOeYd@YvbX4l#)JKAVSyJoj1~iTL!_?AJrU6$^h)hDCSnfG)Rc+wXvltR zLPNA=4r+;eR)upfMfaj*mQr};Jxw#?tD2`4_E2!Fsoz`TF595@%y(8fWyDfByFT@sFRM|NiUO|IGSv1N;Lwq@EuD literal 0 HcmV?d00001 diff --git a/assets/world/structure/natural/skull-large.vox b/assets/world/structure/natural/skull-large.vox new file mode 100644 index 0000000000000000000000000000000000000000..3011d3083e06a9dc43cdd66e3a370ef0027e5b0a GIT binary patch literal 8464 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 R|Nf_c`NzNe9XaU${|8zn7}Nj& literal 0 HcmV?d00001 diff --git a/world/src/block/mod.rs b/world/src/block/mod.rs index 0fb4ab3396..b76624c0da 100644 --- a/world/src/block/mod.rs +++ b/world/src/block/mod.rs @@ -366,7 +366,7 @@ pub struct ZCache<'a> { impl<'a> ZCache<'a> { pub fn get_z_limits(&self) -> (f32, f32) { let cave_depth = if self.sample.cave_xy.abs() > 0.9 { - (self.sample.alt - self.sample.cave_alt) + 8.0 + (self.sample.alt - self.sample.cave_alt + 8.0).max(0.0) } else { 0.0 }; diff --git a/world/src/block/natural.rs b/world/src/block/natural.rs index 563f21eca0..9003c21f89 100644 --- a/world/src/block/natural.rs +++ b/world/src/block/natural.rs @@ -3,6 +3,7 @@ use crate::{ all::ForestKind, column::{ColumnGen, ColumnSample}, util::{HashCache, RandomPerm, Sampler}, + CONFIG, }; use common::{assets, terrain::Structure}; use lazy_static::lazy_static; @@ -43,11 +44,15 @@ pub fn structure_gen<'a>( let st_pos3d = Vec3::new(st_pos.x, st_pos.y, wheight as i32); let volumes: &'static [_] = if QUIRKY_RAND.get(st_seed) % 64 == 17 { - &QUIRKY + if st_sample.temp > CONFIG.tropical_temp { + &QUIRKY_DRY + } else { + &QUIRKY + } } else { match st_sample.forest_kind { ForestKind::Palm => &PALMS, - ForestKind::Savannah => &PALMS, + ForestKind::Savannah => &ACACIAS, ForestKind::Oak if QUIRKY_RAND.get(st_seed) % 16 == 7 => &OAK_STUMPS, ForestKind::Oak => &OAKS, ForestKind::Pine => &PINES, @@ -356,6 +361,16 @@ lazy_static! { st_asset("world/tree/snow_pine/7.vox", (16, 15, 12)), st_asset("world/tree/snow_pine/8.vox", (12, 10, 12)), ]; + + pub static ref ACACIAS: Vec> = vec![ + // snow pines + st_asset("world/tree/acacia/1.vox", (16, 17, 1)), + st_asset("world/tree/acacia/2.vox", (5, 6, 1)), + st_asset("world/tree/acacia/3.vox", (5, 6, 1)), + st_asset("world/tree/acacia/4.vox", (15, 16, 1)), + st_asset("world/tree/acacia/5.vox", (19, 18, 1)), + ]; + /* // snow birches -> need roots! assets::load_map("world/tree/snow_birch/1.vox", |s: Structure| s @@ -408,4 +423,9 @@ lazy_static! { st_asset("world/structure/natural/tower-ruin.vox", (11, 14, 5)), st_asset("world/structure/natural/witch-hut.vox", (10, 13, 3)), ]; + + pub static ref QUIRKY_DRY: Vec> = vec![ + st_asset("world/structure/natural/ribcage-small.vox", (7, 13, 4)), + st_asset("world/structure/natural/skull-large.vox", (15, 20, 4)), + ]; } diff --git a/world/src/lib.rs b/world/src/lib.rs index 2f0d76323c..b3dd6071c7 100644 --- a/world/src/lib.rs +++ b/world/src/lib.rs @@ -92,7 +92,7 @@ impl World { let (min_z, max_z) = z_cache.get_z_limits(); - for z in base_z..(min_z as i32).max(base_z) { + for z in base_z..min_z as i32 { let _ = chunk.set(Vec3::new(x, y, z), stone); } diff --git a/world/src/sim/mod.rs b/world/src/sim/mod.rs index 5cb20482f9..e45be1a799 100644 --- a/world/src/sim/mod.rs +++ b/world/src/sim/mod.rs @@ -439,7 +439,7 @@ impl SimChunk { forest_kind: if temp > 0.0 { if temp > CONFIG.desert_temp { ForestKind::Palm - } else if temp > CONFIG.desert_temp { + } else if temp > CONFIG.tropical_temp { ForestKind::Savannah } else { ForestKind::Oak