66 lines
1.8 KiB
GDScript
66 lines
1.8 KiB
GDScript
@tool
|
|
extends BeehaveTree
|
|
|
|
func _ready():
|
|
# Only create tree in game, not in editor
|
|
if Engine.is_editor_hint():
|
|
return
|
|
|
|
# Create the root selector
|
|
var root_selector = BeehaveSelector.new()
|
|
root_selector.name = "RootSelector"
|
|
add_child(root_selector)
|
|
|
|
# Add the main sequences
|
|
var arrange_sequence = create_arrange_sequence()
|
|
var grab_sequence = create_grab_sequence()
|
|
var put_sequence = create_put_sequence()
|
|
var move_sequence = create_move_sequence()
|
|
|
|
root_selector.add_child(arrange_sequence)
|
|
root_selector.add_child(grab_sequence)
|
|
root_selector.add_child(put_sequence)
|
|
root_selector.add_child(move_sequence)
|
|
|
|
func create_arrange_sequence() -> BeehaveSequence:
|
|
var sequence = BeehaveSequence.new()
|
|
sequence.name = "ArrangeSequence"
|
|
|
|
# Conditions
|
|
var has_enough_ap = BeehaveCondition.new()
|
|
has_enough_ap.set_script(load("res://scripts/conditions/has_enough_ap.gd"))
|
|
|
|
var needs_arrangement = BeehaveCondition.new()
|
|
needs_arrangement.set_script(load("res://scripts/conditions/needs_arrangement.gd"))
|
|
|
|
# Action
|
|
var arrange_action = BeehaveAction.new()
|
|
arrange_action.set_script(load("res://scripts/actions/arrange_action.gd"))
|
|
|
|
sequence.add_child(has_enough_ap)
|
|
sequence.add_child(needs_arrangement)
|
|
sequence.add_child(arrange_action)
|
|
|
|
return sequence
|
|
|
|
func create_grab_sequence() -> BeehaveSequence:
|
|
var sequence = BeehaveSequence.new()
|
|
sequence.name = "GrabSequence"
|
|
|
|
# Conditions
|
|
var has_ap = BeehaveCondition.new()
|
|
has_ap.set_script(load("res://scripts/conditions/has_ap.gd"))
|
|
|
|
var can_grab = BeehaveCondition.new()
|
|
can_grab.set_script(load("res://scripts/conditions/can_grab.gd"))
|
|
|
|
# Action
|
|
var grab_action = BeehaveAction.new()
|
|
grab_action.set_script(load("res://scripts/actions/grab_action.gd"))
|
|
|
|
sequence.add_child(has_ap)
|
|
sequence.add_child(can_grab)
|
|
sequence.add_child(grab_action)
|
|
|
|
return sequence
|