30 lines
1.0 KiB
GDScript
30 lines
1.0 KiB
GDScript
class_name ItemAction
|
|
const DialogueAction = preload("res://cutscene/dialogue/DialogueAction.gd")
|
|
|
|
# Passed as extra_game_states so {{item_name}} and {{quantity}} resolve in the .dialogue file.
|
|
class ItemDialogueState:
|
|
var item_name:String
|
|
var quantity:int
|
|
func _init(name:String, qty:int) -> void:
|
|
item_name = name
|
|
quantity = qty
|
|
|
|
static var PICKUP_DIALOGUE:DialogueResource = preload("res://dialogue/item/pickup.dialogue")
|
|
|
|
static func itemGetCallable(params:Dictionary) -> int:
|
|
assert(params.has('stack'))
|
|
var stack:ItemStack = params['stack']
|
|
PARTY.BACKPACK.addStack(stack)
|
|
|
|
var state = ItemDialogueState.new(Item.getItemName(stack.item), stack.quantity)
|
|
var dialogueParams:Dictionary = DialogueAction.getDialogueCallable(PICKUP_DIALOGUE, 'start', [state])
|
|
dialogueParams['position'] = Cutscene.CUTSCENE_ADD_NEXT
|
|
params['cutscene'].addCallable(dialogueParams)
|
|
return Cutscene.CUTSCENE_CONTINUE
|
|
|
|
static func getItemCallable(itemStack:ItemStack) -> Dictionary:
|
|
return {
|
|
'function': itemGetCallable,
|
|
'stack': itemStack,
|
|
}
|