Refactor conversation stuff
This commit is contained in:
@@ -34,12 +34,21 @@ func addCallable(params:Dictionary) -> int:
|
||||
return params["position"]
|
||||
|
||||
|
||||
func addConversation(conversation:Array[ConversationElement]) -> Array[int]:
|
||||
func addCallables(params:Dictionary) -> Array[int]:
|
||||
assert(params.has("functions"))
|
||||
var indexes:Array[int] = []
|
||||
for element in conversation:
|
||||
indexes.append(addCallable({ 'function': element.start }))
|
||||
for element in params['functions']:
|
||||
var newDict = element.merged(params, false)
|
||||
newDict.erase('functions')
|
||||
indexes.append(addCallable(newDict))
|
||||
return indexes
|
||||
|
||||
func addConversation(resources:Array[ConversationResource]) -> Array[int]:
|
||||
var callables:Array[Dictionary] = []
|
||||
for resource in resources:
|
||||
callables.append(resource.toCallable())
|
||||
return addCallables({ 'functions': callables })
|
||||
|
||||
func start() -> void:
|
||||
if queue.size() == 0:
|
||||
return
|
||||
@@ -47,7 +56,7 @@ func start() -> void:
|
||||
assert(!running)
|
||||
running = true
|
||||
index = 0
|
||||
while true:
|
||||
while index < queue.size():
|
||||
var queueItem = queue[index]
|
||||
var result = await queueItem['function'].call(queueItem)
|
||||
|
||||
@@ -61,7 +70,7 @@ func start() -> void:
|
||||
_:
|
||||
index = result
|
||||
|
||||
if index >= queue.size() || index < 0:
|
||||
if index < 0:
|
||||
break
|
||||
|
||||
running = false
|
||||
|
||||
12
cutscene/conversation/ConversationAction.gd
Normal file
12
cutscene/conversation/ConversationAction.gd
Normal file
@@ -0,0 +1,12 @@
|
||||
class_name ConversationAction
|
||||
|
||||
static func textboxCallable(params:Dictionary) -> int:
|
||||
assert(params.has('label'))
|
||||
await UI.TEXTBOX.setTextAndWait(params['label'])
|
||||
return Cutscene.CUTSCENE_CONTINUE
|
||||
|
||||
static func getTextboxCallable(label:String) -> Dictionary:
|
||||
return {
|
||||
"function": textboxCallable,
|
||||
"label": label
|
||||
}
|
||||
1
cutscene/conversation/ConversationAction.gd.uid
Normal file
1
cutscene/conversation/ConversationAction.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dng7tgnex55wp
|
||||
@@ -1,9 +0,0 @@
|
||||
extends Resource
|
||||
class_name ConversationElement
|
||||
|
||||
@export_node_path("Entity") var entity:NodePath
|
||||
@export_multiline var label: String
|
||||
|
||||
func start(_params:Dictionary) -> int:
|
||||
await UI.TEXTBOX.setTextAndWait(label)
|
||||
return Cutscene.CUTSCENE_CONTINUE
|
||||
9
cutscene/conversation/ConversationResource.gd
Normal file
9
cutscene/conversation/ConversationResource.gd
Normal file
@@ -0,0 +1,9 @@
|
||||
extends Resource
|
||||
class_name ConversationResource
|
||||
const ConversationAction = preload("res://cutscene/conversation/ConversationAction.gd")
|
||||
|
||||
@export_node_path("Entity") var entity:NodePath
|
||||
@export_multiline var label: String
|
||||
|
||||
func toCallable() -> Dictionary:
|
||||
return ConversationAction.getTextboxCallable(label)
|
||||
1
cutscene/conversation/ConversationResource.gd.uid
Normal file
1
cutscene/conversation/ConversationResource.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://yn7kxdargafx
|
||||
16
cutscene/item/ItemAction.gd
Normal file
16
cutscene/item/ItemAction.gd
Normal file
@@ -0,0 +1,16 @@
|
||||
class_name ItemAction
|
||||
const ConversationAction = preload("res://cutscene/conversation/ConversationAction.gd")
|
||||
|
||||
static func itemGetCallable(params:Dictionary) -> int:
|
||||
assert(params.has('stack'))
|
||||
PARTY.BACKPACK.addStack(params['stack'])
|
||||
params['cutscene'].addCallable(ConversationAction.getTextboxCallable('TEST').merged({
|
||||
'position': Cutscene.CUTSCENE_ADD_NEXT,
|
||||
}))
|
||||
return Cutscene.CUTSCENE_CONTINUE
|
||||
|
||||
static func getItemCallable(itemStack:ItemStack) -> Dictionary:
|
||||
return {
|
||||
"function": itemGetCallable,
|
||||
"stack": itemStack
|
||||
}
|
||||
1
cutscene/item/ItemAction.gd.uid
Normal file
1
cutscene/item/ItemAction.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://de04o21rytdqk
|
||||
Reference in New Issue
Block a user