Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions scripts/autoload/ambient_narrator.gd
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,12 @@ func _ready() -> void:
_connect_signals()


func _exit_tree() -> void:
var eb: _EventBus = AutoloadHelper.event_bus()
if eb and eb.room_entered.is_connected(_on_room_entered):
eb.room_entered.disconnect(_on_room_entered)


func _connect_signals() -> void:
var eb: _EventBus = AutoloadHelper.event_bus()
if eb:
Expand Down
6 changes: 6 additions & 0 deletions scripts/autoload/burden_caption_driver.gd
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@ func _ready() -> void:
_print_debug("BurdenCaptionDriver ready")


func _exit_tree() -> void:
var am: _AudioMiddleware = AutoloadHelper.get_autoload("AudioMiddleware") as _AudioMiddleware
if am != null and am.is_connected("stem_event_detected", _on_stem_event):
am.stem_event_detected.disconnect(_on_stem_event)


func _process(delta: float) -> void:
if _cooldowns.is_empty():
return
Expand Down
8 changes: 8 additions & 0 deletions scripts/autoload/burden_event_coordinator.gd
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,14 @@ func _ready() -> void:
_print_debug("BurdenEventCoordinator ready")


func _exit_tree() -> void:
if BurdenManager:
if BurdenManager.is_connected("burden_event_triggered", _on_burden_event_triggered):
BurdenManager.disconnect("burden_event_triggered", _on_burden_event_triggered)
if BurdenManager.is_connected("burden_active_changed", _on_burden_active_changed):
BurdenManager.disconnect("burden_active_changed", _on_burden_active_changed)


# ── Internal ────────────────────────────────────────────────────────────────


Expand Down
8 changes: 8 additions & 0 deletions scripts/autoload/burden_shader_manager.gd
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,14 @@ func _ready() -> void:
call_deferred("_on_burden_active_changed", BurdenManager.burden_active)


func _exit_tree() -> void:
if (
BurdenManager
and BurdenManager.is_connected("burden_active_changed", _on_burden_active_changed)
):
BurdenManager.disconnect("burden_active_changed", _on_burden_active_changed)


func _allocate_static_pool() -> void:
# Pre-allocate the 512 KB VRAM scratch buffer at boot (Static pool allocation)
var img: Image = Image.create(
Expand Down
9 changes: 9 additions & 0 deletions scripts/autoload/level_up_manager.gd
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,15 @@ func _connect_signals() -> void:
event_bus.biome_echo_triggered.connect(_on_biome_echo_triggered)


func _exit_tree() -> void:
var event_bus: _EventBus = AutoloadHelper.event_bus()
if event_bus:
if event_bus.spare_or_execute.is_connected(_on_spare_or_execute):
event_bus.spare_or_execute.disconnect(_on_spare_or_execute)
if event_bus.biome_echo_triggered.is_connected(_on_biome_echo_triggered):
event_bus.biome_echo_triggered.disconnect(_on_biome_echo_triggered)


func grant_experience(entity: Entity, amount: int, reason: String = "") -> void:
if amount <= 0:
return
Expand Down
11 changes: 11 additions & 0 deletions scripts/autoload/secret_room_trigger.gd
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,17 @@ func _ready() -> void:
_connect_signals()


func _exit_tree() -> void:
var eb: _EventBus = AutoloadHelper.event_bus()
if eb:
if eb.room_entered.is_connected(_on_room_entered):
eb.room_entered.disconnect(_on_room_entered)
if eb.combat_resolved_signal.is_connected(_on_combat_resolved):
eb.combat_resolved_signal.disconnect(_on_combat_resolved)
if eb.spare_or_execute.is_connected(_on_spare_or_execute):
eb.spare_or_execute.disconnect(_on_spare_or_execute)


func _connect_signals() -> void:
var eb: _EventBus = AutoloadHelper.event_bus()
if eb:
Expand Down
7 changes: 7 additions & 0 deletions scripts/autoload/toast_manager.gd
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,13 @@ func _ready() -> void:
LayerManager.modal_closed.connect(_on_modal_closed)


func _exit_tree() -> void:
if LayerManager.modal_opened.is_connected(_on_modal_opened):
LayerManager.modal_opened.disconnect(_on_modal_opened)
if LayerManager.modal_closed.is_connected(_on_modal_closed):
LayerManager.modal_closed.disconnect(_on_modal_closed)


func show_toast(text_key: String, type: ToastType = ToastType.T_01) -> void:
_queue.append({"key": text_key, "type": type})
_process_queue()
Expand Down
5 changes: 5 additions & 0 deletions scripts/combat/turn_manager.gd
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,11 @@ func _ready() -> void:
_lifecycle.connect("entity_state_changed", _on_entity_state_changed)


func _exit_tree() -> void:
if _lifecycle and _lifecycle.is_connected("entity_state_changed", _on_entity_state_changed):
_lifecycle.disconnect("entity_state_changed", _on_entity_state_changed)


# ── Public API ──────────────────────────────────────────────────────
func start_combat(p_player: Node2D, p_enemies: Array[Node2D]) -> void:
_player = p_player
Expand Down
6 changes: 6 additions & 0 deletions scripts/core/combat_room.gd
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,12 @@ func _ready() -> void:
_setup_camera()


func _exit_tree() -> void:
var run_manager := AutoloadHelper.run_manager()
if run_manager and run_manager.room_entered.is_connected(_on_room_entered):
run_manager.room_entered.disconnect(_on_room_entered)


func _on_room_entered(_room_index: int, room_data: Dictionary) -> void:
# Clear existing entities if any
for child in entity_container.get_children():
Expand Down
8 changes: 8 additions & 0 deletions scripts/entities/apparition_renderer.gd
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,14 @@ func _ready() -> void:
_refresh_stack()


func _exit_tree() -> void:
if BurdenManager:
if BurdenManager.kill_history_changed.is_connected(_on_kill_history_changed):
BurdenManager.kill_history_changed.disconnect(_on_kill_history_changed)
if BurdenManager.burden_active_changed.is_connected(_on_burden_active_changed):
BurdenManager.burden_active_changed.disconnect(_on_burden_active_changed)


func _process(delta: float) -> void:
if state_machine:
state_machine.update(delta)
Expand Down
6 changes: 6 additions & 0 deletions scripts/entities/burden_visuals.gd
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@ func _ready() -> void:
BurdenManager.burden_event_triggered.connect(on_entity_burden_triggered)


func _exit_tree() -> void:
if BurdenManager:
if BurdenManager.burden_event_triggered.is_connected(on_entity_burden_triggered):
BurdenManager.burden_event_triggered.disconnect(on_entity_burden_triggered)


func on_entity_burden_triggered(_result: RefCounted) -> void:
# Wire router reset or other logic here if needed.
# For DON-223, this is a requested hook.
Expand Down
5 changes: 5 additions & 0 deletions scripts/state_machine/run_manager.gd
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,11 @@ func _ready() -> void:
_entity_lifecycle.connect("mwt_reached", _on_mwt_reached)


func _exit_tree() -> void:
if _entity_lifecycle and _entity_lifecycle.is_connected("mwt_reached", _on_mwt_reached):
_entity_lifecycle.disconnect("mwt_reached", _on_mwt_reached)


func _on_mwt_reached(_moral_flag: int, _remaining: int) -> void:
# When MWT is reached, the Burden Event system takes over.
_moral_eval_waiting_burden = true
Expand Down
25 changes: 25 additions & 0 deletions scripts/ui/combat_hud.gd
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,31 @@ func _ready() -> void:
end_turn_button.pressed.connect(_on_end_turn_pressed)


func _exit_tree() -> void:
if SafeZoneManager.safe_area_changed.is_connected(_on_safe_area_changed):
SafeZoneManager.safe_area_changed.disconnect(_on_safe_area_changed)
if SafeZoneManager.aspect_ratio_changed.is_connected(_on_aspect_ratio_changed):
SafeZoneManager.aspect_ratio_changed.disconnect(_on_aspect_ratio_changed)

if _player_entity:
if _player_entity.hp_changed.is_connected(_on_hp_changed):
_player_entity.hp_changed.disconnect(_on_hp_changed)
if _player_entity.ap_changed.is_connected(_on_ap_changed):
_player_entity.ap_changed.disconnect(_on_ap_changed)

if _turn_manager:
if _turn_manager.turn_started.is_connected(_on_turn_started):
_turn_manager.turn_started.disconnect(_on_turn_started)
if _turn_manager.round_started.is_connected(_on_round_started):
_turn_manager.round_started.disconnect(_on_round_started)

if _combat_input:
if _combat_input.targeting_started.is_connected(_on_targeting_started):
_combat_input.targeting_started.disconnect(_on_targeting_started)
if _combat_input.attack_executed.is_connected(_on_attack_executed):
_combat_input.attack_executed.disconnect(_on_attack_executed)


func setup(player_entity: Entity, turn_manager: TurnManager, combat_input: CombatInput) -> void:
_player_entity = player_entity
_turn_manager = turn_manager
Expand Down
10 changes: 10 additions & 0 deletions scripts/ui/hotbar.gd
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,16 @@ func _ready() -> void:
_refresh_hotbar()


func _exit_tree() -> void:
if get_tree() and get_tree().root:
if get_tree().root.size_changed.is_connected(_on_viewport_resized):
get_tree().root.size_changed.disconnect(_on_viewport_resized)

var eb: _EventBus = AutoloadHelper.event_bus()
if eb and eb.run_started.is_connected(_on_run_started):
eb.run_started.disconnect(_on_run_started)


func _on_run_started(_seed: int) -> void:
_refresh_hotbar()

Expand Down
7 changes: 7 additions & 0 deletions scripts/ui/main_menu.gd
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,13 @@ func _on_safe_area_changed(_rect: Rect2) -> void:
_apply_safe_area()


func _exit_tree() -> void:
if InputRouter.device_changed.is_connected(_on_device_changed):
InputRouter.device_changed.disconnect(_on_device_changed)
if SafeZoneManager.safe_area_changed.is_connected(_on_safe_area_changed):
SafeZoneManager.safe_area_changed.disconnect(_on_safe_area_changed)


func _apply_safe_area() -> void:
var margins: Dictionary = SafeZoneManager.get_safe_margins() as Dictionary
margin_container.add_theme_constant_override("margin_left", int(margins.get("left", 0)))
Expand Down
7 changes: 7 additions & 0 deletions scripts/ui/pause_menu.gd
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,13 @@ func _ready() -> void:
_apply_safe_area()


func _exit_tree() -> void:
if InputRouter.device_changed.is_connected(_on_device_changed):
InputRouter.device_changed.disconnect(_on_device_changed)
if SafeZoneManager.safe_area_changed.is_connected(_on_safe_area_changed):
SafeZoneManager.safe_area_changed.disconnect(_on_safe_area_changed)


func _on_safe_area_changed(_rect: Rect2) -> void:
_apply_safe_area()

Expand Down
8 changes: 8 additions & 0 deletions scripts/ui/remap_panel.gd
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,14 @@ func _ready() -> void:
call_deferred("_focus_first_item")


func _exit_tree() -> void:
if (
InputRouter.has_signal("device_changed")
and InputRouter.device_changed.is_connected(_on_device_changed)
):
InputRouter.device_changed.disconnect(_on_device_changed)


func _focus_first_item() -> void:
if not action_list:
return
Expand Down
5 changes: 5 additions & 0 deletions scripts/ui/settings_panel.gd
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,11 @@ func _load_ui_from_settings() -> void:
_remap_panel.call("refresh")


func _exit_tree() -> void:
if SafeZoneManager.safe_area_changed.is_connected(_on_safe_area_changed):
SafeZoneManager.safe_area_changed.disconnect(_on_safe_area_changed)


func _connect_signals() -> void:
_master_slider.value_changed.connect(_on_audio_changed.bind("master_volume"))
_music_slider.value_changed.connect(_on_audio_changed.bind("music_volume"))
Expand Down
9 changes: 9 additions & 0 deletions scripts/ui/turn_banner.gd
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,15 @@ func _ready() -> void:
eb.turn_started.connect(_on_turn_started)


func _exit_tree() -> void:
var eb: _EventBus = AutoloadHelper.event_bus()
if eb:
if eb.room_entered.is_connected(_on_combat_started):
eb.room_entered.disconnect(_on_combat_started)
if eb.turn_started.is_connected(_on_turn_started):
eb.turn_started.disconnect(_on_turn_started)


func display_message(p_text: String, p_color: Color = Color.WHITE) -> void:
turn_label.text = p_text
turn_label.modulate = p_color
Expand Down
5 changes: 5 additions & 0 deletions scripts/ui/ui_root.gd
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ func _ready() -> void:
_settings_panel.hide()


func _exit_tree() -> void:
if get_viewport() and get_viewport().size_changed.is_connected(_apply_safe_area):
get_viewport().size_changed.disconnect(_apply_safe_area)


func _input(event: InputEvent) -> void:
if event.is_action_pressed("ui_cancel"):
if _settings_panel.visible:
Expand Down
12 changes: 11 additions & 1 deletion scripts/version_label.gd
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,17 @@ extends Label
func _ready() -> void:
text = "v0.1.0-sprint1"
_apply_notch_offset()
SafeZoneManager.safe_area_changed.connect(func(_r: Rect2) -> void: _apply_notch_offset())
if not SafeZoneManager.safe_area_changed.is_connected(_on_safe_area_changed):
SafeZoneManager.safe_area_changed.connect(_on_safe_area_changed)


func _exit_tree() -> void:
if SafeZoneManager.safe_area_changed.is_connected(_on_safe_area_changed):
SafeZoneManager.safe_area_changed.disconnect(_on_safe_area_changed)


func _on_safe_area_changed(_r: Rect2) -> void:
_apply_notch_offset()


func _apply_notch_offset() -> void:
Expand Down
4 changes: 4 additions & 0 deletions scripts/visual/entity_visual_proxy.gd
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,10 @@ func _ready() -> void:
global_position = _target_position # Snap initially


func _exit_tree() -> void:
_disconnect_entity_signals()


func _process(delta: float) -> void:
if global_position.distance_to(_target_position) > 0.1:
var weight: float = minf(delta * lerp_speed, 1.0)
Expand Down
Loading