lobby cam

This commit is contained in:
2026-08-27 21:34:18 +03:00
parent 170d8ff3f1
commit 32ac46f840
4 changed files with 23 additions and 3 deletions
+2
View File
@@ -5,6 +5,7 @@ extends Node3D
## previous module first, so no old mesh or collider can survive into the next fight.
@onready var _level_root: Node3D = $LevelRoot
@onready var _camera: IsoCamera = $Player/Camera3D
func _ready() -> void:
@@ -23,4 +24,5 @@ func load_active_level() -> void:
if level == null or level.level_scene == null:
push_warning("game_shell: active level has no level_scene")
return
_camera.set_framing_scale(level.camera_zoom)
_level_root.add_child(level.level_scene.instantiate())
+4
View File
@@ -17,6 +17,10 @@ extends Resource
@export var level_scene: PackedScene = null
## Placeholder pip tint on the map until per-level icon art exists.
@export var color: Color = Color(0.80, 0.62, 0.24)
## Camera framing multiplier when this level loads — 1.0 is the shell camera's default
## shot; >1 dollies the camera back for a wider view (the lobby pulls out so the whole
## hub reads). Applied by game_shell; independent of the player's scroll-wheel zoom.
@export var camera_zoom: float = 1.0
## A boss level caps a run — its node is drawn larger and clearing it ends the map.
@export var is_boss: bool = false
## The enemy this level pits the bull against. Null → the usual matador wave (the
+2
View File
@@ -61,6 +61,8 @@ func _ready() -> void:
_bear.enemy_scene = _BEAR_SCENE
# The lobby is a fightless hub — no enemy_scene, so no wave spawns and no win/lose.
_lobby = _make_level(&"lobby", "Lobby", _LOBBY_LEVEL, Color(0.62, 0.66, 0.72), false)
# It's a roomy hub with nothing to fight — pull the camera back so more of it reads.
_lobby.camera_zoom = 1.6
func _make_level(