75 lines
2.0 KiB
GDScript
75 lines
2.0 KiB
GDScript
class_name PlayerInteractionResult
|
|
extends RefCounted
|
|
|
|
const KIND_ANIMAL := &"animal"
|
|
const KIND_RESOURCE := &"resource"
|
|
const KIND_PANTRY := &"pantry"
|
|
const KIND_STORAGE_DEPOSIT := &"storage_deposit"
|
|
const KIND_ACTIVITY := &"activity"
|
|
const KIND_DIALOGUE := &"dialogue"
|
|
const KIND_DEPOSIT := &"deposit"
|
|
const KIND_TALK := &"talk"
|
|
const KIND_GUARD := &"guard"
|
|
const KIND_STUDY := &"study"
|
|
|
|
var kind: StringName
|
|
var action_id: StringName
|
|
var target_id: StringName
|
|
var display_name: String
|
|
var prompt_text: String
|
|
var detail_text: String
|
|
var blocked_reason: String
|
|
var target_node: Node
|
|
var expected_state_revision: int
|
|
var target_generation: int
|
|
var target_context_id: StringName
|
|
var target_registry_instance_id: int
|
|
|
|
|
|
func _init(
|
|
interaction_kind: StringName,
|
|
interaction_action_id: StringName,
|
|
interaction_target_id: StringName,
|
|
interaction_display_name: String,
|
|
interaction_prompt_text: String,
|
|
interaction_detail_text: String,
|
|
interaction_target_node: Node,
|
|
metadata: Dictionary = {}
|
|
) -> void:
|
|
kind = interaction_kind
|
|
action_id = interaction_action_id
|
|
target_id = interaction_target_id
|
|
display_name = interaction_display_name
|
|
prompt_text = interaction_prompt_text
|
|
detail_text = interaction_detail_text
|
|
target_node = interaction_target_node
|
|
blocked_reason = String(metadata.get("blocked_reason", ""))
|
|
expected_state_revision = int(metadata.get("expected_state_revision", -1))
|
|
target_generation = int(metadata.get("target_generation", -1))
|
|
target_context_id = StringName(metadata.get("target_context_id", &""))
|
|
target_registry_instance_id = int(metadata.get("target_registry_instance_id", 0))
|
|
|
|
|
|
func is_available() -> bool:
|
|
return blocked_reason.is_empty()
|
|
|
|
|
|
func cache_key() -> String:
|
|
return (
|
|
"|"
|
|
. join(
|
|
[
|
|
String(kind),
|
|
String(action_id),
|
|
String(target_id),
|
|
prompt_text,
|
|
detail_text,
|
|
blocked_reason,
|
|
str(expected_state_revision),
|
|
str(target_generation),
|
|
String(target_context_id),
|
|
str(target_registry_instance_id),
|
|
]
|
|
)
|
|
)
|