feat(world-map): Introduce fog rendering logic with density and color controls for the world map scene

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Claude Code 2026-04-09 11:56:37 -07:00
parent d38738cbc2
commit 45137691bc

View file

@ -13,6 +13,7 @@ const CityRendererScript: GDScript = preload("res://engine/src/rendering/city_re
const LairOverlayRendererScript: GDScript = preload(
"res://engine/src/rendering/lair_overlay_renderer.gd"
)
const FogRendererScript: GDScript = preload("res://engine/src/rendering/fog_renderer.gd")
const CityScreenScene: PackedScene = preload("res://engine/scenes/city/city_screen.tscn")
const ChroniclePanelScene: PackedScene = preload("res://engine/scenes/hud/chronicle_panel.tscn")
const WorldMapCombatScript: GDScript = preload("res://engine/scenes/world_map/world_map_combat.gd")
@ -29,6 +30,7 @@ var _hex_renderer: Node2D = null
var _unit_renderer: Node2D = null
var _city_renderer: Node2D = null
var _lair_overlay: Node2D = null
var _fog_renderer: Node2D = null
var _city_screen: CanvasLayer = null
var _chronicle_panel: CanvasLayer = null
var _combat: RefCounted = null
@ -62,6 +64,9 @@ func _setup_renderers() -> void:
_lair_overlay = LairOverlayRendererScript.new()
_lair_overlay.name = "LairOverlayRenderer"
$OverlayLayer.add_child(_lair_overlay)
_fog_renderer = FogRendererScript.new()
_fog_renderer.name = "FogRenderer"
$FogLayer.add_child(_fog_renderer)
_city_screen = CityScreenScene.instantiate()
add_child(_city_screen)
_chronicle_panel = ChroniclePanelScene.instantiate()
@ -105,6 +110,13 @@ func _start_game() -> void:
_hex_renderer.render_map(game_map)
_lair_overlay.refresh()
var local_player: int = 0
if not GameState.players.is_empty():
var first_player: RefCounted = GameState.get_player(0)
if first_player != null:
local_player = first_player.index
_fog_renderer.initialize(game_map, local_player)
var bg_camera: Camera2D = _viewport_manager.get_background_camera()
bg_camera.setup_bounds(game_map.width, game_map.height)
@ -196,6 +208,7 @@ func _update_fog(player: RefCounted, game_map: RefCounted) -> void:
elif vis == 1:
fog_positions.append(pos)
_hex_renderer.update_fog(visible_positions, fog_positions)
_fog_renderer.update_all(game_map)
func _sync_units() -> void: