update
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user