Blend generated terrain textures
This commit is contained in:
@@ -29,6 +29,7 @@ const BGM_BATTLE_PATH := "res://audio/bgm/battle_loop_placeholder.wav"
|
||||
const TITLE_BACKGROUND_PATH := "res://art/backgrounds/title_war_camp_dawn.png"
|
||||
const TITLE_PORTRAIT_PATH := "res://art/portraits/cao_cao.png"
|
||||
const TOOLBAR_ICON_PATH_TEMPLATE := "res://art/ui/icons/toolbar_%s.png"
|
||||
const TERRAIN_TEXTURE_PATH_TEMPLATE := "res://art/terrain/terrain_%s.png"
|
||||
const OPENING_PROLOGUE_REBELLION_PATH := "res://art/story/opening/yellow_turban_rebellion.png"
|
||||
const OPENING_PROLOGUE_RESOLVE_PATH := "res://art/story/opening/cao_cao_resolves.png"
|
||||
const OPENING_PROLOGUE_XIAHOU_DUN_PATH := "res://art/story/opening/xiahou_dun_joins.png"
|
||||
@@ -4366,6 +4367,7 @@ func _draw_map() -> void:
|
||||
var rect := _rect_for_cell(cell)
|
||||
var terrain_key := state.get_terrain_key(cell)
|
||||
draw_rect(rect, _terrain_fill_color(cell, terrain_key, has_background))
|
||||
_draw_terrain_texture(cell, rect, terrain_key, has_background)
|
||||
_draw_terrain_detail(cell, rect, terrain_key)
|
||||
_draw_terrain_edge_blend(cell, rect, terrain_key)
|
||||
draw_rect(rect, _map_grid_color(has_background), false, 1.0)
|
||||
@@ -4755,6 +4757,35 @@ func _map_grid_color(has_background: bool) -> Color:
|
||||
return color
|
||||
|
||||
|
||||
func _draw_terrain_texture(cell: Vector2i, rect: Rect2, terrain_key: String, has_background: bool) -> void:
|
||||
var texture := _load_terrain_texture(terrain_key)
|
||||
if texture == null:
|
||||
return
|
||||
var modulate := _terrain_texture_modulate(cell, terrain_key, has_background)
|
||||
draw_texture_rect(texture, rect.grow(-1.0), false, modulate)
|
||||
|
||||
|
||||
func _load_terrain_texture(terrain_key: String) -> Texture2D:
|
||||
var normalized_key := terrain_key.strip_edges().to_lower()
|
||||
if normalized_key.is_empty():
|
||||
return null
|
||||
return _load_art_texture(TERRAIN_TEXTURE_PATH_TEMPLATE % normalized_key)
|
||||
|
||||
|
||||
func _terrain_texture_modulate(cell: Vector2i, terrain_key: String, has_background: bool) -> Color:
|
||||
var alpha := 0.17 if has_background else 0.58
|
||||
if terrain_key == "W":
|
||||
alpha += 0.07 if has_background else 0.10
|
||||
elif terrain_key == "C" or terrain_key == "T":
|
||||
alpha += 0.08 if has_background else 0.12
|
||||
elif terrain_key == "R":
|
||||
alpha += 0.05 if has_background else 0.08
|
||||
elif terrain_key == "F" or terrain_key == "H" or terrain_key == "D":
|
||||
alpha += 0.03 if has_background else 0.06
|
||||
alpha *= 0.94 + _cell_noise(cell, 137) * 0.12
|
||||
return Color(1.0, 1.0, 1.0, clampf(alpha, 0.0, 0.82))
|
||||
|
||||
|
||||
func _draw_terrain_detail(cell: Vector2i, rect: Rect2, terrain_key: String) -> void:
|
||||
if terrain_key == "G":
|
||||
for index in range(3):
|
||||
|
||||
Reference in New Issue
Block a user