76 lines
1.1 KiB
GDScript
76 lines
1.1 KiB
GDScript
@tool
|
|
class_name RoomDeviceDefinition
|
|
extends Resource
|
|
|
|
|
|
enum DeviceType {
|
|
GENERIC,
|
|
COIN_RELEASE,
|
|
LIGHT,
|
|
DOOR_LOCK,
|
|
DRAWER_LOCK,
|
|
BUZZER
|
|
}
|
|
|
|
|
|
enum Behavior {
|
|
MOMENTARY,
|
|
LATCHED
|
|
}
|
|
|
|
|
|
@export var device_id: StringName = &""
|
|
@export var display_name: String = ""
|
|
|
|
@export var device_type: DeviceType = DeviceType.GENERIC
|
|
@export var behavior: Behavior = Behavior.MOMENTARY
|
|
|
|
@export var initial_active: bool = false
|
|
|
|
|
|
@export_group("Layout")
|
|
@export var position: Vector2 = Vector2.ZERO
|
|
|
|
const FEET_TO_METERS: float = 0.3048
|
|
const METERS_TO_FEET: float = 1.0 / FEET_TO_METERS
|
|
|
|
|
|
#
|
|
# Internal/storage representation.
|
|
#
|
|
@export_storage
|
|
var physical_size_m: Vector2 = Vector2(
|
|
0.25,
|
|
0.25
|
|
)
|
|
|
|
|
|
#
|
|
# Designer-facing representation.
|
|
#
|
|
@export_group("Physical Dimensions")
|
|
|
|
@export_custom(
|
|
PROPERTY_HINT_NONE,
|
|
"suffix: ft"
|
|
)
|
|
var physical_size_ft: Vector2:
|
|
get:
|
|
return (
|
|
physical_size_m
|
|
* METERS_TO_FEET
|
|
)
|
|
set(value):
|
|
physical_size_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
|