Files

87 lines
1.5 KiB
GDScript

@tool
class_name RoomDefinition
extends Resource
@export var room_id: StringName = &""
@export var display_name: String = ""
@export var cabinet_placements: Array[CabinetPlacement] = []
@export var devices: Array[RoomDeviceDefinition] = []
@export var bindings: Array[RoomDeviceBinding] = []
@export_group("Geometry")
@export var boundary_points: PackedVector2Array = PackedVector2Array()
@export var walls: Array[RoomWallDefinition] = []
@export_group("Logic")
@export var logic_rules: Array[RoomLogicRule] = []
func get_device(
device_id: StringName
) -> RoomDeviceDefinition:
for device in devices:
if device == null:
continue
if device.device_id == device_id:
return device
return null
func get_cabinet_placement(
cabinet_id: StringName
) -> CabinetPlacement:
for placement in cabinet_placements:
if placement == null:
continue
if placement.cabinet_id == cabinet_id:
return placement
return null
func get_device_for_action(
cabinet_id: StringName,
action_id: StringName
) -> RoomDeviceDefinition:
for binding in bindings:
if binding == null:
continue
if (
binding.cabinet_id == cabinet_id
and
binding.hardware_action_id == action_id
):
return get_device(binding.device_id)
return null
func get_wall(
wall_id: StringName
) -> RoomWallDefinition:
for wall in walls:
if wall == null:
continue
if wall.wall_id == wall_id:
return wall
return null
func has_wall(
wall_id: StringName
) -> bool:
return get_wall(
wall_id
) != null