Interaction Conditions
- Interaction conditions, only allow the interaction to trigger once its conditions are met.
- If you recall, the Interaction Node, checks all the conditions under the parent conditions node. Allowing the interaction to decide weather it should trigger the logics or not.
Base Class
extends Node
class_name InteractionCondition
func check() -> bool:
return true
Example Interaction Conditions
OR Condition
extends InteractionCondition
## If either of these interactions are triggered, this interaction will work
class_name InteractionConditionOr
@export var interaction_trigger_check : Interaction
@export var interaction_trigger_check_02 : Interaction
var interaction_triggered : bool = false
var interaction_triggered_02 : bool = false
func _ready():
interaction_trigger_check.interaction_triggered.connect(func(): interaction_triggered = true)
interaction_trigger_check_02.interaction_triggered.connect(func(): interaction_triggered_02 = true)
func check() -> bool:
return check_keys()
func check_keys():
return interaction_triggered or interaction_triggered_02
AND Condition
extends InteractionCondition
## Checks if two interactions have been triggerd, if not the interaction will not work
class_name InteractionConditionAnd
@export var interaction_trigger_check : Interaction
@export var interaction_trigger_check_02 : Interaction
var interaction_triggered : bool = false
var interaction_triggered_02 : bool = false
func _ready():
interaction_trigger_check.interaction_triggered.connect(func(): interaction_triggered = true)
interaction_trigger_check_02.interaction_triggered.connect(func(): interaction_triggered_02 = true)
func check() -> bool:
return check_keys()
func check_keys():
return interaction_triggered and interaction_triggered_02
MULTI Conditon
- Basically just AND, but with more than 1 or more interactions as a conditional
extends InteractionCondition
class_name InteractionConditionMulti
@export var interactions : Array[Interaction]
var interactions_mapping : Dictionary
func _ready() -> void:
setup()
func setup():
for interaction in interactions:
interactions_mapping.set(interaction, false)
interaction.interaction_triggered.connect(func(): interactions_mapping.set(interaction, true))
func check() -> bool:
for i in interactions_mapping:
if interactions_mapping.get(i) == false: return false
return true