86 lines
1.4 KiB
GDScript
86 lines
1.4 KiB
GDScript
@tool
|
|
class_name CabinetProfile
|
|
extends Resource
|
|
|
|
|
|
@export var cabinet_id: StringName = &""
|
|
@export var display_name: String = ""
|
|
|
|
@export var capabilities: Array[StringName] = []
|
|
|
|
@export var hardware_config: HardwareConfig
|
|
|
|
const FEET_TO_METERS: float = 0.3048
|
|
const METERS_TO_FEET: float = 1.0 / FEET_TO_METERS
|
|
|
|
|
|
#
|
|
# Stored internally in meters for compatibility with the
|
|
# existing room/layout system.
|
|
#
|
|
@export_storage
|
|
var footprint_width_m: float = 0.80
|
|
|
|
@export_storage
|
|
var footprint_depth_m: float = 0.75
|
|
|
|
@export_storage
|
|
var height_m: float = 1.80
|
|
|
|
|
|
#
|
|
# Designer-facing dimensions.
|
|
#
|
|
@export_group("Physical Dimensions")
|
|
|
|
@export_range(0.25, 12.0, 0.01, "suffix: ft")
|
|
var footprint_width_ft: float:
|
|
get:
|
|
return (
|
|
footprint_width_m
|
|
* METERS_TO_FEET
|
|
)
|
|
set(value):
|
|
footprint_width_m = (
|
|
value
|
|
* FEET_TO_METERS
|
|
)
|
|
|
|
|
|
@export_range(0.25, 12.0, 0.01, "suffix: ft")
|
|
var footprint_depth_ft: float:
|
|
get:
|
|
return (
|
|
footprint_depth_m
|
|
* METERS_TO_FEET
|
|
)
|
|
set(value):
|
|
footprint_depth_m = (
|
|
value
|
|
* FEET_TO_METERS
|
|
)
|
|
|
|
|
|
@export_range(0.25, 20.0, 0.01, "suffix: ft")
|
|
var height_ft: float:
|
|
get:
|
|
return (
|
|
height_m
|
|
* METERS_TO_FEET
|
|
)
|
|
set(value):
|
|
height_m = (
|
|
value
|
|
* FEET_TO_METERS
|
|
)
|
|
|
|
@export_group("Physical Appearance")
|
|
|
|
@export var editor_texture: Texture2D = null
|
|
|
|
@export_range(0.1, 4.0, 0.05)
|
|
var editor_texture_scale: float = 1.0
|
|
|
|
func has_capability(capability: StringName) -> bool:
|
|
return capabilities.has(capability)
|