Basic dialogue components

This commit is contained in:
Rendo 2025-08-10 22:23:44 +05:00
commit 3cbdc58a72
8 changed files with 60 additions and 0 deletions

View file

@ -0,0 +1,7 @@
@tool
extends Resource
class_name BranchingResource
func get_next() -> Variant:
return null

View file

@ -0,0 +1 @@
uid://bit3qw47h3q5c

View file

@ -0,0 +1,32 @@
@tool
extends BranchingResource
## Ресурс для диалога.
class_name Dialogue
## Энум триггера для сюжета. Пример: опция "я ненавижу тебя", очевидно, должна
## заставить отношение персонажа ухудшится.
## TODO: Дополнять по возможности
enum TriggerType
{
NONE = 0,
CHAT_END = 1,
REPUTATION = 2
}
## Уникальный идентификатор диалоговой опции
@export var id : StringName
## TODO: Заменить инт на класс/энум персонажа
@export var person : int
## Ключ в таблице локализаций
@export var text_key : StringName
## Следующий BranchingResource
@export var next_branch : BranchingResource
## Тип триггера, если есть
@export var trigger_type : TriggerType = TriggerType.NONE
## Опционально: данные для триггера. Чтобы узнать, какие ключи требуются, см. TriggerType
@export var trigger_data : Dictionary
func get_next() -> Variant:
return next_branch

View file

@ -0,0 +1 @@
uid://bijvyonpnv4mp

View file

@ -0,0 +1,9 @@
@tool
extends BranchingResource
class_name MultiOption
@export var options : Array[BranchingResource]
func get_next() -> Variant:
return options

View file

@ -0,0 +1 @@
uid://dwr4x3a1gnkt1

View file

@ -0,0 +1,8 @@
@tool
extends BranchingResource
class_name MultiTrigger
@export var triggers : Array[Dialogue.TriggerType]
@export var trigger_data : Array[Dictionary]

View file

@ -0,0 +1 @@
uid://i84xirdqv5e1