refactor(*): DRY up arena scenes, game modes, and HUD instruments

Arenas inherit from a new arena_base.tscn instead of restating ~40 shared
lines each; only sky/ambient/glow/tint/decoration vary, exposed via new
Arena exports since nested Environment properties aren't overridable
through scene inheritance. Bot construction and score-keeping move onto
GameMode, shared by match and spectate modes while preserving their
differing GameSettings-override behavior and the HUD's score-row
duck-typing. HUD instruments share a HudInstrument base for the
smoothing-weight calc and angle-lerp helper. Also dedupes
MAIN_MENU_SCENE_PATH into ScenePaths and documents why DIFFICULTIES
tiers share one checkpoint.
This commit is contained in:
Josh Creek
2026-08-04 15:07:33 +01:00
parent b285d012dc
commit 08a0f74391
18 changed files with 203 additions and 268 deletions
+1 -3
View File
@@ -6,8 +6,6 @@ extends Control
# apply the next time an arena loads (see arena.gd), since they scale each
# arena's own tuned Environment values rather than something viewport-wide.
const MAIN_MENU_SCENE_PATH := "res://scenes/main_menu.tscn"
const AA_OPTIONS := [
{"name": "Off", "mode": VideoSettings.AAMode.OFF},
{"name": "FXAA", "mode": VideoSettings.AAMode.FXAA},
@@ -62,7 +60,7 @@ func _on_brightness_slider_value_changed(value: float) -> void:
func _on_back_pressed() -> void:
VideoSettings.save()
get_tree().change_scene_to_file(MAIN_MENU_SCENE_PATH)
get_tree().change_scene_to_file(ScenePaths.MAIN_MENU)
func _unhandled_input(event: InputEvent) -> void: