godot-plateformer/_shared/room_system.gd

36 lines
803 B
GDScript3
Raw Normal View History

2025-12-29 11:54:31 +08:00
extends Node
var current_room_id: int = 0
var defalut_room_id: int = 10001
signal room_changed(room_id: int)
func _ready() -> void:
init_room()
##更新房间id
func update_current_room_id(room_id: int) -> bool:
if room_id == current_room_id:
return false
reset_all_room_camera_property()
current_room_id = room_id
room_changed.emit(room_id)
return true
##重置所有房间的room property
func reset_all_room_camera_property() -> void:
get_tree().call_group(&"ROOM",&"reset_priority")
##初始化相机房间
func init_room() -> void:
for r in get_tree().get_nodes_in_group(&"ROOM"):
if r._room_id == defalut_room_id:
if r.is_node_ready():
update_current_room_id(defalut_room_id)
break
else:
await r.ready
update_current_room_id(defalut_room_id)
break