tooltips for overmap tiles, and distinct fg-bg offsets
This commit is contained in:
parent
2890c16a3c
commit
537e19c4e7
8 changed files with 84 additions and 43 deletions
|
|
@ -12,20 +12,25 @@ pub fn get_tile_renderables_for_id(
|
|||
other_pos: Option<Point>,
|
||||
debug: Option<bool>
|
||||
) -> (rltk::FontCharType, RGB, RGB) {
|
||||
let (glyph, mut fg, mut bg, offsets, bg_main_col) = match map.id {
|
||||
let (glyph, mut fg, mut bg, offsets) = match map.id {
|
||||
ID_TOWN2 => get_forest_theme_renderables(idx, map, debug),
|
||||
_ => get_default_theme_renderables(idx, map, debug),
|
||||
};
|
||||
|
||||
// If one of the colours was left blank, make them the same.
|
||||
let mut same_col: bool = false;
|
||||
if fg == RGB::new() {
|
||||
fg = bg;
|
||||
same_col = true;
|
||||
} else if bg == RGB::new() {
|
||||
bg = fg;
|
||||
same_col = true;
|
||||
}
|
||||
|
||||
fg = fg.add(map.additional_fg_offset);
|
||||
(fg, bg) = apply_colour_offset(fg, bg, map, idx, offsets, bg_main_col);
|
||||
if same_col {
|
||||
fg = fg.add(map.additional_fg_offset);
|
||||
}
|
||||
(fg, bg) = apply_colour_offset(fg, bg, map, idx, offsets);
|
||||
if CONFIG.visuals.with_scanlines && WITH_SCANLINES_BRIGHTEN_AMOUNT > 0.0 {
|
||||
(fg, bg) = brighten_by(fg, bg, WITH_SCANLINES_BRIGHTEN_AMOUNT);
|
||||
}
|
||||
|
|
@ -61,20 +66,20 @@ pub fn get_tile_renderables_for_id(
|
|||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
pub fn get_default_theme_renderables(idx: usize, map: &Map, debug: Option<bool>) -> (rltk::FontCharType, RGB, RGB, (i32, i32, i32), bool) {
|
||||
pub fn get_default_theme_renderables(idx: usize, map: &Map, debug: Option<bool>) -> (rltk::FontCharType, RGB, RGB, ((i32, i32, i32), (i32, i32, i32))) {
|
||||
let glyph: rltk::FontCharType;
|
||||
#[allow(unused_assignments)]
|
||||
let mut fg: RGB = RGB::new();
|
||||
#[allow(unused_assignments)]
|
||||
let mut bg: RGB = RGB::new();
|
||||
let mut offsets: (i32, i32, i32) = (0, 0, 0);
|
||||
let mut bg_main_col = true;
|
||||
let mut bg_offsets: (i32, i32, i32) = (-1, -1, -1);
|
||||
|
||||
match map.tiles[idx] {
|
||||
TileType::Floor => { glyph = rltk::to_cp437(FLOOR_GLYPH); fg = RGB::named(FLOOR_COLOUR); bg = RGB::named(DEFAULT_BG_COLOUR); offsets = FLOOR_OFFSETS; }
|
||||
TileType::WoodFloor => { glyph = rltk::to_cp437(WOOD_FLOOR_GLYPH); bg = RGB::named(WOOD_FLOOR_COLOUR); offsets = WOOD_FLOOR_OFFSETS; }
|
||||
TileType::Fence => { glyph = rltk::to_cp437(FENCE_GLYPH); fg = RGB::named(FENCE_FG_COLOUR); bg = RGB::named(FENCE_COLOUR); offsets = FENCE_OFFSETS; }
|
||||
TileType::Wall => { let x = idx as i32 % map.width; let y = idx as i32 / map.width; glyph = wall_glyph(&*map, x, y, debug); fg = RGB::named(WALL_COLOUR); bg = RGB::named(DEFAULT_BG_COLOUR); offsets = WALL_OFFSETS; bg_main_col = false; }
|
||||
TileType::Wall => { let x = idx as i32 % map.width; let y = idx as i32 / map.width; glyph = wall_glyph(&*map, x, y, debug); fg = RGB::named(WALL_COLOUR); bg = RGB::named(DEFAULT_BG_COLOUR); offsets = WALL_OFFSETS; bg_offsets = DEFAULT_BG_OFFSETS }
|
||||
TileType::DownStair => { glyph = rltk::to_cp437(DOWN_STAIR_GLYPH); fg = RGB::named(STAIR_COLOUR); bg = RGB::named(DEFAULT_BG_COLOUR); offsets = STAIR_OFFSETS;}
|
||||
TileType::UpStair => { glyph = rltk::to_cp437(UP_STAIR_GLYPH); fg = RGB::named(STAIR_COLOUR); bg = RGB::named(DEFAULT_BG_COLOUR); offsets = STAIR_OFFSETS; }
|
||||
TileType::Bridge => { glyph = rltk::to_cp437(BRIDGE_GLYPH); bg = RGB::named(BRIDGE_COLOUR); offsets = BRIDGE_OFFSETS; }
|
||||
|
|
@ -88,30 +93,35 @@ pub fn get_default_theme_renderables(idx: usize, map: &Map, debug: Option<bool>)
|
|||
TileType::DeepWater => { glyph = rltk::to_cp437(DEEP_WATER_GLYPH); bg = RGB::named(DEEP_WATER_COLOUR); offsets = DEEP_WATER_OFFSETS; }
|
||||
TileType::Bars => { glyph = rltk::to_cp437(BARS_GLYPH); fg = RGB::named(BARS_COLOUR); bg = RGB::named(FLOOR_COLOUR); }
|
||||
TileType::ImpassableMountain => { glyph = rltk::to_cp437(IMPASSABLE_MOUNTAIN_GLYPH); bg = RGB::named(IMPASSABLE_MOUNTAIN_COLOUR); offsets = IMPASSABLE_MOUNTAIN_OFFSETS }
|
||||
TileType::ToOvermap(_) => { glyph = rltk::to_cp437(TO_OVERMAP_GLYPH); fg = RGB::named(TO_OVERMAP_COLOUR); bg = RGB::named(DEFAULT_BG_COLOUR); bg_main_col = false; }
|
||||
TileType::ToLocal(_) => { glyph = rltk::to_cp437(TO_TOWN_GLYPH); fg = RGB::named(TO_TOWN_COLOUR); bg = RGB::named(DEFAULT_BG_COLOUR); bg_main_col = false; }
|
||||
TileType::ToOvermap(_) => { glyph = rltk::to_cp437(TO_OVERMAP_GLYPH); fg = RGB::named(TO_OVERMAP_COLOUR); bg = RGB::named(GRASS_COLOUR); }
|
||||
TileType::ToLocal(_) => { glyph = rltk::to_cp437(TO_TOWN_GLYPH); fg = RGB::named(TO_TOWN_COLOUR); bg = RGB::named(GRASS_COLOUR); }
|
||||
}
|
||||
return (glyph, fg, bg, offsets, bg_main_col);
|
||||
if bg_offsets == (-1, -1, -1) {
|
||||
bg_offsets = offsets;
|
||||
}
|
||||
return (glyph, fg, bg, (offsets, bg_offsets));
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
fn get_forest_theme_renderables(idx:usize, map: &Map, debug: Option<bool>) -> (rltk::FontCharType, RGB, RGB, (i32, i32, i32), bool) {
|
||||
fn get_forest_theme_renderables(idx:usize, map: &Map, debug: Option<bool>) -> (rltk::FontCharType, RGB, RGB, ((i32, i32, i32), (i32, i32, i32))) {
|
||||
let glyph;
|
||||
#[allow(unused_assignments)]
|
||||
let mut fg = RGB::new();
|
||||
#[allow(unused_assignments)]
|
||||
let mut bg = RGB::new();
|
||||
let mut offsets: (i32, i32, i32) = (0, 0, 0);
|
||||
let mut bg_main_col = true;
|
||||
let mut bg_offsets: (i32, i32, i32) = (-1, -1, -1);
|
||||
|
||||
match map.tiles[idx] {
|
||||
TileType::Wall => { glyph = rltk::to_cp437(FOREST_WALL_GLYPH); fg = RGB::named(FOREST_WALL_COLOUR); bg = RGB::named(GRASS_COLOUR) }
|
||||
TileType::Wall => { glyph = rltk::to_cp437(FOREST_WALL_GLYPH); fg = RGB::named(FOREST_WALL_COLOUR); bg = RGB::named(GRASS_COLOUR); offsets = GRASS_OFFSETS; }
|
||||
TileType::Road => { glyph = rltk::to_cp437(ROAD_GLYPH); bg = RGB::named(ROAD_COLOUR); }
|
||||
TileType::ShallowWater => { glyph = rltk::to_cp437(SHALLOW_WATER_GLYPH); bg = RGB::named(SHALLOW_WATER_COLOUR); }
|
||||
_ => { (glyph, fg, _, offsets, bg_main_col) = get_default_theme_renderables(idx, map, debug); bg = RGB::named(GRASS_COLOUR) }
|
||||
TileType::ShallowWater => { glyph = rltk::to_cp437(SHALLOW_WATER_GLYPH); bg = RGB::named(SHALLOW_WATER_COLOUR); offsets = SHALLOW_WATER_OFFSETS; }
|
||||
_ => { (glyph, fg, _, (offsets, bg_offsets)) = get_default_theme_renderables(idx, map, debug); bg = RGB::named(GRASS_COLOUR); bg_offsets = GRASS_OFFSETS; }
|
||||
}
|
||||
|
||||
(glyph, fg, bg, offsets, bg_main_col)
|
||||
if bg_offsets == (-1, -1, -1) {
|
||||
bg_offsets = offsets;
|
||||
}
|
||||
return (glyph, fg, bg, (offsets, bg_offsets));
|
||||
}
|
||||
|
||||
fn is_revealed_and_wall(map: &Map, x: i32, y: i32, debug: Option<bool>) -> bool {
|
||||
|
|
@ -261,24 +271,21 @@ fn apply_colour_offset(
|
|||
mut bg: RGB,
|
||||
map: &Map,
|
||||
idx: usize,
|
||||
offset: (i32, i32, i32),
|
||||
bg_main_col: bool
|
||||
offset: ((i32, i32, i32), (i32, i32, i32))
|
||||
) -> (RGB, RGB) {
|
||||
let offset_mod = map.colour_offset[idx];
|
||||
let fg_offset = (
|
||||
(offset.0 as f32) * offset_mod.0.0,
|
||||
(offset.1 as f32) * offset_mod.0.1,
|
||||
(offset.2 as f32) * offset_mod.0.2,
|
||||
(offset.0.0 as f32) * offset_mod.0.0,
|
||||
(offset.0.1 as f32) * offset_mod.0.1,
|
||||
(offset.0.2 as f32) * offset_mod.0.2,
|
||||
);
|
||||
fg = add_i32_offsets(fg, fg_offset);
|
||||
if bg_main_col {
|
||||
let bg_offset = (
|
||||
(offset.0 as f32) * offset_mod.1.0,
|
||||
(offset.1 as f32) * offset_mod.1.1,
|
||||
(offset.2 as f32) * offset_mod.1.2,
|
||||
);
|
||||
bg = add_i32_offsets(bg, bg_offset);
|
||||
}
|
||||
let bg_offset = (
|
||||
(offset.1.0 as f32) * offset_mod.1.0,
|
||||
(offset.1.1 as f32) * offset_mod.1.1,
|
||||
(offset.1.2 as f32) * offset_mod.1.2,
|
||||
);
|
||||
bg = add_i32_offsets(bg, bg_offset);
|
||||
|
||||
return (fg, bg);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue