diff options
author | Brendan Hickey <brendan@bhickey.net> | 2013-01-19 22:45:29 -0800 |
---|---|---|
committer | Brendan Hickey <brendan@bhickey.net> | 2013-01-19 22:47:19 -0800 |
commit | fb643e29a818395adcb1d1ea940de67a5e5be81d (patch) | |
tree | e344a66fb5323110f0a0c276f3d15f1be7d88774 /crawl-ref/source/dgn-proclayouts.cc | |
parent | 868325f05bb1c21463f441010e1633279be5b3d5 (diff) | |
download | crawl-ref-fb643e29a818395adcb1d1ea940de67a5e5be81d.tar.gz crawl-ref-fb643e29a818395adcb1d1ea940de67a5e5be81d.zip |
Abyss: The Wastes
A very rare (0.0004% by area) layout that's very sparse and rapidly changing.
Diffstat (limited to 'crawl-ref/source/dgn-proclayouts.cc')
-rw-r--r-- | crawl-ref/source/dgn-proclayouts.cc | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/crawl-ref/source/dgn-proclayouts.cc b/crawl-ref/source/dgn-proclayouts.cc index 46434a4ee4..893a3b21eb 100644 --- a/crawl-ref/source/dgn-proclayouts.cc +++ b/crawl-ref/source/dgn-proclayouts.cc @@ -13,17 +13,6 @@ #include "mpr.h" -bool less_dense_than(const dungeon_feature_type &a, const dungeon_feature_type &b) -{ - return true; - // Is only one feature solid? - if (feat_is_solid(a) ^ feat_is_solid(b)) - return feat_is_solid(b); - if (feat_is_water(a) || feat_is_lava(a) || feat_is_statue_or_idol(a) && b == DNGN_FLOOR) - return true; - return false; -} - dungeon_feature_type _pick_pseudorandom_wall(uint64_t val) { static dungeon_feature_type features[] = { @@ -145,6 +134,22 @@ RoilingChaosLayout::operator()(const coord_def &p, const uint32_t offset) const } ProceduralSample +WastesLayout::operator()(const coord_def &p, const uint32_t offset) const +{ + double x = p.x; + double y = p.y; + double z = offset / 3; + worley::noise_datum n = worley::noise(x, y, z); + const uint32_t changepoint = offset + _get_changepoint(n, 3); + ProceduralSample sample = ChaosLayout(n.id[0], 10)(p, offset); + dungeon_feature_type feat = feat_is_solid(sample.feat()) + ? DNGN_ROCK_WALL : DNGN_FLOOR; + return ProceduralSample(p, feat, min(sample.changepoint(), changepoint)); +} + + + +ProceduralSample RiverLayout::operator()(const coord_def &p, const uint32_t offset) const { const double scale = 10000; |