Implement start of Mushroom Forest entrance
This commit is contained in:
parent
c1b72b22a1
commit
eef254e2be
@ -15,6 +15,9 @@ pub const BLACK: RGB = new(0., 0., 0.);
|
|||||||
/// RGB: (102, 102, 102)
|
/// RGB: (102, 102, 102)
|
||||||
pub const DARK_GRAY: RGB = new(0.4, 0.4, 0.4);
|
pub const DARK_GRAY: RGB = new(0.4, 0.4, 0.4);
|
||||||
|
|
||||||
|
/// RGB: (128, 128, 128)
|
||||||
|
pub const MID_GRAY: RGB = new(0.5, 0.5, 0.5);
|
||||||
|
|
||||||
/// HEX: #999
|
/// HEX: #999
|
||||||
/// RGB: (153, 153, 153)
|
/// RGB: (153, 153, 153)
|
||||||
pub const BOX_GRAY: RGB = new(0.6, 0.6, 0.6);
|
pub const BOX_GRAY: RGB = new(0.6, 0.6, 0.6);
|
||||||
@ -70,9 +73,6 @@ pub const GREEN: RGB = new(0., 1., 0.);
|
|||||||
/// RGB: (255, 0, 255)
|
/// RGB: (255, 0, 255)
|
||||||
pub const MAGENTA: RGB = new(1., 0., 1.);
|
pub const MAGENTA: RGB = new(1., 0., 1.);
|
||||||
|
|
||||||
/// RGB: (128, 128, 128)
|
|
||||||
pub const MID_GRAY: RGB = new(0.5, 0.5, 0.5);
|
|
||||||
|
|
||||||
/// RGB: (255, 165, 0)
|
/// RGB: (255, 165, 0)
|
||||||
pub const ORANGE: RGB = new(1., 0.647, 0.);
|
pub const ORANGE: RGB = new(1., 0.647, 0.);
|
||||||
|
|
||||||
|
@ -6,6 +6,14 @@ use crate::colors;
|
|||||||
|
|
||||||
pub fn tile_glyph(idx: usize, map: &Map) -> (FontCharType, RGB, RGB) {
|
pub fn tile_glyph(idx: usize, map: &Map) -> (FontCharType, RGB, RGB) {
|
||||||
let (glyph, mut fg, mut bg) = match map.depth {
|
let (glyph, mut fg, mut bg) = match map.depth {
|
||||||
|
7 => {
|
||||||
|
let x = idx as i32 % map.width;
|
||||||
|
if x > map.width - 16 {
|
||||||
|
get_tile_glyph_default(idx, map)
|
||||||
|
} else {
|
||||||
|
get_mushroom_glyph(idx, map)
|
||||||
|
}
|
||||||
|
}
|
||||||
5 => {
|
5 => {
|
||||||
let x = idx as i32 % map.width;
|
let x = idx as i32 % map.width;
|
||||||
if x < map.width / 2 {
|
if x < map.width / 2 {
|
||||||
@ -74,7 +82,26 @@ fn get_forest_glyph(idx: usize, map: &Map) -> (FontCharType, RGB, RGB) {
|
|||||||
(glyph, fg, bg)
|
(glyph, fg, bg)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_tile_glyph_default(idx: usize, map: &Map) -> (rltk::FontCharType, RGB, RGB) {
|
fn get_mushroom_glyph(idx: usize, map: &Map) -> (FontCharType, RGB, RGB) {
|
||||||
|
let bg = colors::BLACK;
|
||||||
|
|
||||||
|
let (glyph, fg) = match map.tiles[idx] {
|
||||||
|
TileType::Wall => (to_cp437('♠'), colors::MAGENTA),
|
||||||
|
TileType::Bridge => (to_cp437('.'), colors::GREEN),
|
||||||
|
TileType::Road => (to_cp437('≡'), colors::CHOCOLATE),
|
||||||
|
TileType::Grass => (to_cp437('"'), colors::GREEN),
|
||||||
|
TileType::ShallowWater => (to_cp437('~'), colors::CYAN),
|
||||||
|
TileType::DeepWater => (to_cp437('~'), colors::BLUE),
|
||||||
|
TileType::Gravel => (to_cp437(';'), colors::MID_GRAY),
|
||||||
|
TileType::DownStairs => (to_cp437('>'), colors::CYAN),
|
||||||
|
TileType::UpStairs => (to_cp437('<'), colors::CYAN),
|
||||||
|
_ => (to_cp437('"'), colors::FOREST_GREEN),
|
||||||
|
};
|
||||||
|
|
||||||
|
(glyph, fg, bg)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_tile_glyph_default(idx: usize, map: &Map) -> (FontCharType, RGB, RGB) {
|
||||||
let mut bg = colors::BLACK;
|
let mut bg = colors::BLACK;
|
||||||
|
|
||||||
let (glyph, mut fg) = match map.tiles[idx] {
|
let (glyph, mut fg) = match map.tiles[idx] {
|
||||||
|
@ -13,6 +13,7 @@ mod dwarf_fort;
|
|||||||
mod forest;
|
mod forest;
|
||||||
mod limestone_cavern;
|
mod limestone_cavern;
|
||||||
mod maze;
|
mod maze;
|
||||||
|
mod mushroom_forest;
|
||||||
mod prefab_builder;
|
mod prefab_builder;
|
||||||
mod room_based_spawner;
|
mod room_based_spawner;
|
||||||
mod room_based_stairs;
|
mod room_based_stairs;
|
||||||
@ -50,6 +51,7 @@ use limestone_cavern::{
|
|||||||
limestone_cavern_builder, limestone_deep_cavern_builder, limestone_transition_builder,
|
limestone_cavern_builder, limestone_deep_cavern_builder, limestone_transition_builder,
|
||||||
};
|
};
|
||||||
use maze::MazeBuilder;
|
use maze::MazeBuilder;
|
||||||
|
use mushroom_forest::*;
|
||||||
use prefab_builder::PrefabBuilder;
|
use prefab_builder::PrefabBuilder;
|
||||||
use room_based_spawner::RoomBasedSpawner;
|
use room_based_spawner::RoomBasedSpawner;
|
||||||
use room_based_stairs::RoomBasedStairs;
|
use room_based_stairs::RoomBasedStairs;
|
||||||
@ -357,6 +359,7 @@ pub fn level_builder(
|
|||||||
4 => limestone_deep_cavern_builder(new_depth, rng, width, height),
|
4 => limestone_deep_cavern_builder(new_depth, rng, width, height),
|
||||||
5 => limestone_transition_builder(new_depth, rng, width, height),
|
5 => limestone_transition_builder(new_depth, rng, width, height),
|
||||||
6 => dwarf_fort_builder(new_depth, rng, width, height),
|
6 => dwarf_fort_builder(new_depth, rng, width, height),
|
||||||
|
7 => mushroom_entrance(new_depth, rng, width, height),
|
||||||
_ => random_builder(new_depth, rng, width, height),
|
_ => random_builder(new_depth, rng, width, height),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
26
src/map_builders/mushroom_forest.rs
Normal file
26
src/map_builders/mushroom_forest.rs
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
use super::prefab_builder::prefab_sections::UNDERGROUND_FORT;
|
||||||
|
use super::{
|
||||||
|
AreaEndingPosition, AreaStartingPosition, BuilderChain, CellularAutomataBuilder,
|
||||||
|
CullUnreachable, PrefabBuilder, VoronoiSpawning, WaveformCollapseBuilder, XEnd, XStart, YEnd,
|
||||||
|
YStart,
|
||||||
|
};
|
||||||
|
|
||||||
|
pub fn mushroom_entrance(
|
||||||
|
new_depth: i32,
|
||||||
|
_rng: &mut ::rltk::RandomNumberGenerator,
|
||||||
|
width: i32,
|
||||||
|
height: i32,
|
||||||
|
) -> BuilderChain {
|
||||||
|
let mut chain = BuilderChain::new(new_depth, width, height, "Into the Mushroom Grove");
|
||||||
|
chain
|
||||||
|
.start_with(CellularAutomataBuilder::new())
|
||||||
|
.with(WaveformCollapseBuilder::new())
|
||||||
|
.with(AreaStartingPosition::new(XStart::Center, YStart::Center))
|
||||||
|
.with(CullUnreachable::new())
|
||||||
|
.with(AreaStartingPosition::new(XStart::Right, YStart::Center))
|
||||||
|
.with(AreaEndingPosition::new(XEnd::Left, YEnd::Center))
|
||||||
|
.with(VoronoiSpawning::new())
|
||||||
|
.with(PrefabBuilder::sectional(UNDERGROUND_FORT));
|
||||||
|
|
||||||
|
chain
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user