Current section

Files

Jump to
erlang_behaviour_trees src samples tasks lift_task.erl
Raw

src/samples/tasks/lift_task.erl

-module(lift_task).
-behaviour(bt_task).
-export([
get_params/0,
run/3
]).
get_params() ->
["bid", "direction"].
run(#{"bid" := BId_key, "direction" := Direction_key}, BB, _Event) ->
BId = blackboard:eval(BId_key, BB),
Direction = blackboard:eval(Direction_key, BB),
case gproc:lookup_local_name({dummy_navigator, BId}) of
undefined ->
io:format("Could not lift: navigator not found for bulter ~p~n", [BId]),
{failure, BB};
Pid ->
DirectionAtom = list_to_atom(Direction),
ButlerLiftState = dummy_navigator:get_lift_state(Pid),
if
DirectionAtom =:= ButlerLiftState ->
io:format("Not doing any lifting."),
{success, BB};
true ->
io:format("Lifting butler ~p in direction ~p~n", [BId, DirectionAtom]),
dummy_navigator:lift(Pid, DirectionAtom),
{running, BB}
end
end.