Rejigging Item slots (#4933)

* itemslot overhaul

* remove "shared" prefix

* handle component shutdown

* comments, cleanup, tests

* comments and minor tweak

* rename ItemSlotManagerState

* fix swapping

* fix merge

* Add ItemSlot verb text override

* fix merge  (IEntity -> entityUid)

* Fix merge (LabelSystem)

* Fix merge (nuke disk)

* fix test
This commit is contained in:
Leon Friedrich
2021-11-20 18:26:01 +13:00
committed by GitHub
parent 19c5fed53a
commit 91b185e3c2
28 changed files with 805 additions and 554 deletions

View File

@@ -1,4 +1,2 @@
item-slots-try-insert-no-hands = You have no hands.
# EjectItemVerb
eject-item-verb-text-default = Eject {$item}
take-item-verb-text = Take {$subject}
place-item-verb-text = Place {$subject}

View File

@@ -22,18 +22,16 @@
mask:
- VaultImpassable
- type: Nuke
diskSlot:
name: Disk
insertSound:
path: /Audio/Machines/terminal_insert_disc.ogg
ejectSound:
path: /Audio/Machines/terminal_insert_disc.ogg
whitelist:
tags:
- NukeDisk
- type: InteractionOutline
- type: ItemSlots
slots:
DiskSlot:
name: Disk
insertSound:
path: /Audio/Machines/terminal_insert_disc.ogg
ejectSound:
path: /Audio/Machines/terminal_insert_disc.ogg
whitelist:
tags:
- NukeDisk
- type: UserInterface
interfaces:
- key: enum.NukeUiKey.Key

View File

@@ -34,23 +34,19 @@
type: PDABoundUserInterface
- key: enum.UplinkUiKey.Key
type: UplinkBoundUserInterface
- type: ItemSlots
slots:
pdaPenSlot:
item: "Pen"
whitelist:
tags:
- Write
pdaIdSlot:
name: ID Card
insertSound:
path: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg
ejectSound:
path: /Audio/Machines/id_swipe.ogg
whitelist:
components:
- IdCard
- type: PDA
penSlot:
startingItem: Pen
whitelist:
tags:
- Write
idSlot:
name: ID Card
ejectSound: /Audio/Machines/id_swipe.ogg
insertSound: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg
whitelist:
components:
- IdCard
- type: DoorBumpOpener
- type: entity
@@ -100,6 +96,15 @@
components:
- type: PDA
idCard: ClownIDCard
penSlot:
startingItem: CrayonOrange # no pink crayon?!?
# Maybe this is a bad idea.
# At least they can't just spam alt-click it.
# You need to remove the ID & alternate between inserting and ejecting
ejectSound: /Audio/Items/bikehorn.ogg
whitelist:
tags:
- Write
- type: Appearance
visuals:
- type: PDAVisualizer
@@ -135,6 +140,11 @@
components:
- type: PDA
idCard: MimeIDCard
idSlot:
name: ID Card
whitelist:
components:
- IdCard
- type: Appearance
visuals:
- type: PDAVisualizer

View File

@@ -33,6 +33,8 @@
capacity: 5
- type: Tag
tags:
- Write
- Crayon
- CrayonWhite
- type: entity
@@ -52,6 +54,8 @@
capacity: 5
- type: Tag
tags:
- Write
- Crayon
- CrayonWhite
- type: entity
@@ -71,6 +75,8 @@
capacity: 5
- type: Tag
tags:
- Write
- Crayon
- CrayonBlack
- type: entity
@@ -90,6 +96,8 @@
capacity: 5
- type: Tag
tags:
- Write
- Crayon
- CrayonRed
- type: entity
@@ -109,6 +117,8 @@
capacity: 5
- type: Tag
tags:
- Write
- Crayon
- CrayonOrange
- type: entity
@@ -128,6 +138,8 @@
capacity: 5
- type: Tag
tags:
- Write
- Crayon
- CrayonYellow
- type: entity
@@ -147,6 +159,8 @@
capacity: 5
- type: Tag
tags:
- Write
- Crayon
- CrayonGreen
- type: entity
@@ -166,6 +180,8 @@
capacity: 5
- type: Tag
tags:
- Write
- Crayon
- CrayonBlue
- type: entity
@@ -185,6 +201,8 @@
capacity: 5
- type: Tag
tags:
- Write
- Crayon
- CrayonPurple
- type: entity

View File

@@ -34,12 +34,12 @@
openSound:
path: /Audio/Misc/zip.ogg
- type: PaperLabel
- type: ItemSlots
slots:
labelSlot:
whitelist:
components:
- Paper
labelSlot:
insertVerbText: Attach Label
ejectVerbText: Remove Label
whitelist:
components:
- Paper
- type: Appearance
visuals:
- type: StorageVisualizer

View File

@@ -54,9 +54,9 @@
state_open: crate_open
state_closed: crate_door
- type: PaperLabel
- type: ItemSlots
slots:
labelSlot:
whitelist:
components:
- Paper
labelSlot:
insertVerbText: Attach Label
ejectVerbText: Remove Label
whitelist:
components:
- Paper

View File

@@ -18,6 +18,11 @@
- state: closed
map: ["enum.ItemCabinetVisualLayers.Door"]
- type: ItemCabinet
cabinetSlot:
ejectOnInteract: true
whitelist:
components:
- FireExtinguisher
doorSound:
path: /Audio/Machines/machine_switch.ogg
- type: Appearance
@@ -25,12 +30,6 @@
- type: ItemCabinetVisualizer
openState: open
closedState: closed
- type: ItemSlots
slots:
cabinetSlot:
whitelist:
components:
- FireExtinguisher
placement:
mode: SnapgridCenter
@@ -48,14 +47,12 @@
suffix: Filled
components:
- type: ItemCabinet
spawnPrototype: FireExtinguisher
- type: ItemSlots
slots:
cabinetSlot:
item: FireExtinguisher
whitelist:
components:
- FireExtinguisher
cabinetSlot:
ejectOnInteract: true
startingItem: FireExtinguisher
whitelist:
components:
- FireExtinguisher
- type: entity
id: ExtinguisherCabinetFilledOpen

View File

@@ -16,6 +16,11 @@
- state: glass
map: ["enum.ItemCabinetVisualLayers.Door"]
- type: ItemCabinet
cabinetSlot:
ejectOnInteract: true
whitelist:
tags:
- FireAxe
doorSound:
path: /Audio/Machines/machine_switch.ogg
- type: Appearance
@@ -23,12 +28,6 @@
- type: ItemCabinetVisualizer
closedState: glass
openState: glass-up
- type: ItemSlots
slots:
cabinetSlot:
whitelist:
tags:
- FireAxe
placement:
mode: SnapgridCenter
@@ -46,13 +45,12 @@
suffix: Filled
components:
- type: ItemCabinet
- type: ItemSlots
slots:
cabinetSlot:
item: FireAxe
whitelist:
tags:
- FireAxe
cabinetSlot:
startingItem: FireAxe
ejectOnInteract: true
whitelist:
tags:
- FireAxe
- type: entity
id: FireAxeCabinetFilledOpen

Binary file not shown.

After

Width:  |  Height:  |  Size: 587 B

View File

@@ -0,0 +1,4 @@
# For now, this icon is literally just the pickup icon rotated 180 degrees.
# But maybe this will change in the future?
sample:
filter: true