Files
Cozypaw-Hospital/scripts/objects/room_chest_config.gd
T
2026-05-09 01:01:50 +02:00

108 lines
4.1 KiB
GDScript

## RoomChestConfig — static item configuration for all room chests.
## Maps chest_id strings to ChestItemData arrays. No assets needed: item_id strings only.
class_name RoomChestConfig
const _OFFSET_LEFT: Vector2 = Vector2(-70.0, -60.0)
const _OFFSET_CENTER: Vector2 = Vector2(0.0, -80.0)
const _OFFSET_RIGHT: Vector2 = Vector2(70.0, -60.0)
const _OFFSET_LEFT_2: Vector2 = Vector2(-50.0, -60.0)
const _OFFSET_RIGHT_2: Vector2 = Vector2(50.0, -60.0)
static func get_items(chest_id: String) -> Array[ChestItemData]:
match chest_id:
"reception_desk":
return _make([
["clipboard", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_LEFT],
["pen", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_CENTER],
["bandage", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_RIGHT],
])
"giftshop_shelf":
return _make([
["gift_box", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_LEFT],
["ribbon", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_CENTER],
["balloon", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_RIGHT],
])
"restaurant_counter":
return _make([
["teacup", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_LEFT],
["plate", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_CENTER],
["spoon", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_RIGHT],
])
"emergency_cabinet":
return _make([
["bandage_roll", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_LEFT],
["syringe", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_CENTER],
["ice_pack", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_RIGHT],
])
"xray_cabinet":
return _make([
["xray_sheet", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_LEFT],
["lead_apron", ChestItemData.ItemType.OUTFIT, 1, _OFFSET_CENTER],
["marker", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_RIGHT],
])
"pharmacy_medicine":
return _make([
["pill_bottle", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_LEFT_2],
["syrup", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_RIGHT_2],
])
"pharmacy_tools":
return _make([
["mortar", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_LEFT_2],
["spatula", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_RIGHT_2],
])
"lab_bench":
return _make([
["test_tube", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_LEFT],
["pipette", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_CENTER],
["microscope_slide", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_RIGHT],
])
"patient_cabinet":
return _make([
["thermometer", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_LEFT],
["stethoscope", ChestItemData.ItemType.OUTFIT, 2, _OFFSET_CENTER],
["pillow", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_RIGHT],
])
"ultrasound_cart":
return _make([
["gel_tube", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_LEFT],
["probe", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_CENTER],
["towel", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_RIGHT],
])
"delivery_cabinet":
return _make([
["swaddle", ChestItemData.ItemType.OUTFIT, 1, _OFFSET_LEFT],
["scissors", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_CENTER],
["cord_clamp", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_RIGHT],
])
"nursery_shelf":
return _make([
["bottle", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_LEFT],
["rattle", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_CENTER],
["blanket", ChestItemData.ItemType.OUTFIT, 1, _OFFSET_RIGHT],
])
"garden_table":
return _make([
["teapot", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_LEFT_2],
["cake", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_RIGHT_2],
])
"garden_storage":
return _make([
["confetti", ChestItemData.ItemType.HOLDABLE, 1, _OFFSET_LEFT_2],
["party_hat", ChestItemData.ItemType.OUTFIT, 1, _OFFSET_RIGHT_2],
])
return []
static func _make(data: Array) -> Array[ChestItemData]:
var result: Array[ChestItemData] = []
for entry: Array in data:
assert(entry.size() == 4, "ChestItemData entry must have 4 elements: " + str(entry))
var d: ChestItemData = ChestItemData.new()
d.item_id = entry[0]
d.item_type = entry[1]
d.outfit_layer = entry[2]
d.spawn_offset = entry[3]
result.append(d)
return result