class_name PlayerInteractionResult extends RefCounted const KIND_ANIMAL := &"animal" const KIND_RESOURCE := &"resource" const KIND_PANTRY := &"pantry" const KIND_DEPOSIT := &"deposit" 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 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, interaction_blocked_reason := "" ) -> 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 = interaction_blocked_reason 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, ] ) )