This commit is contained in:
2025-01-28 14:17:29 +08:00
parent a43811fe77
commit 9640283964
22 changed files with 512 additions and 10 deletions
+120
View File
@@ -0,0 +1,120 @@
@tool
extends BeehaveTree
func _ready():
if Engine.is_editor_hint():
return
# Only setup for bots
if not get_parent().is_in_group("Bots"):
return
# Create root selector
var selector = SelectorComposite.new()
add_child(selector)
# Add sequences
selector.add_child(create_arrange_sequence())
selector.add_child(create_grab_sequence())
selector.add_child(create_put_sequence())
selector.add_child(create_move_sequence())
func create_arrange_sequence() -> SequenceComposite:
var sequence = SequenceComposite.new()
sequence.name = "ArrangeSequence"
# Has enough action points?
var check_ap = ConditionLeaf.new()
check_ap.name = "HasEnoughAP"
check_ap.set_script(preload("res://scripts/behaviors/conditions/has_ap.gd"))
# Can arrange items?
var can_arrange = ConditionLeaf.new()
can_arrange.name = "CanArrange"
can_arrange.set_script(preload("res://scripts/behaviors/conditions/can_arrange.gd"))
# Do arrange action
var do_arrange = ActionLeaf.new()
do_arrange.name = "DoArrange"
do_arrange.set_script(preload("res://scripts/behaviors/actions/do_arrange.gd"))
sequence.add_child(check_ap)
sequence.add_child(can_arrange)
sequence.add_child(do_arrange)
return sequence
func create_grab_sequence() -> SequenceComposite:
var sequence = SequenceComposite.new()
sequence.name = "GrabSequence"
# Has enough action points?
var check_ap = ConditionLeaf.new()
check_ap.name = "HasAP"
check_ap.set_script(preload("res://scripts/behaviors/conditions/has_ap.gd"))
# Can grab item?
var can_grab = ConditionLeaf.new()
can_grab.name = "CanGrab"
can_grab.set_script(preload("res://scripts/behaviors/conditions/can_grab.gd"))
# Do grab action
var do_grab = ActionLeaf.new()
do_grab.name = "DoGrab"
do_grab.set_script(preload("res://scripts/behaviors/actions/do_grab.gd"))
sequence.add_child(check_ap)
sequence.add_child(can_grab)
sequence.add_child(do_grab)
return sequence
func create_put_sequence() -> SequenceComposite:
var sequence = SequenceComposite.new()
sequence.name = "PutSequence"
# Has enough action points?
var check_ap = ConditionLeaf.new()
check_ap.name = "HasAP"
check_ap.set_script(preload("res://scripts/behaviors/conditions/has_ap.gd"))
# Can put item?
var can_put = ConditionLeaf.new()
can_put.name = "CanPut"
can_put.set_script(preload("res://scripts/behaviors/conditions/can_put.gd"))
# Do put action
var do_put = ActionLeaf.new()
do_put.name = "DoPut"
do_put.set_script(preload("res://scripts/behaviors/actions/do_put.gd"))
sequence.add_child(check_ap)
sequence.add_child(can_put)
sequence.add_child(do_put)
return sequence
func create_move_sequence() -> SequenceComposite:
var sequence = SequenceComposite.new()
sequence.name = "MoveSequence"
# Has enough action points?
var check_ap = ConditionLeaf.new()
check_ap.name = "HasAP"
check_ap.set_script(preload("res://scripts/behaviors/conditions/has_ap.gd"))
# Should move?
var should_move = ConditionLeaf.new()
should_move.name = "ShouldMove"
should_move.set_script(preload("res://scripts/behaviors/conditions/should_move.gd"))
# Do move action
var do_move = ActionLeaf.new()
do_move.name = "DoMove"
do_move.set_script(preload("res://scripts/behaviors/actions/do_move.gd"))
sequence.add_child(check_ap)
sequence.add_child(should_move)
sequence.add_child(do_move)
return sequence