@@ -33,10 +33,10 @@ class AgentDomainBuilder final : public BaseDomainBuilder
3333 }
3434 AgentDomainBuilder (StringType n) : BaseDomainBuilder(n) {}
3535
36- // TODO Implement Extra HasState, SetState
37-
3836 // ======================================================//
37+ //
3938 // Encapsulated HTN Tasks
39+ //
4040 // ======================================================//
4141 // TODO Implement Encapsulated HTN Tasks
4242
@@ -51,9 +51,10 @@ class AgentDomainBuilder final : public BaseDomainBuilder
5151 {
5252 if (agentNode->has_method (" moveTo" ))
5353 {
54+ // Call the
5455 Variant result = agentNode->call (" moveTo" );
55- // Variant result = agent->call("moveTo");
56- // UtilityFunctions::print(result);
56+
57+ // ? Can print output using: UtilityFunctions::print(result);
5758 if (result)
5859 {
5960 return TaskStatus::Success;
@@ -65,18 +66,24 @@ class AgentDomainBuilder final : public BaseDomainBuilder
6566 }
6667 else
6768 {
68- // UtilityFunctions::print("AgentDomainBuilder : No Function moveTo");
69+ // ? Can print output using: UtilityFunctions::print("AgentDomainBuilder : No Function moveTo");
6970 return TaskStatus::Failure;
7071 }
7172 }
7273 }
7374
7475 void MoveTo ()
7576 {
77+ AddCondition (" AgentNewPos" , [=](IContext &ctx)
78+ { return static_cast <AgentContext &>(ctx).HasState (WsAgent::wsAgentMovement, (int )(AgentMovement::NewPosition)); });
7679 AddAction (" MoveTo" );
7780
7881 AddOperator (std::bind (&AgentDomainBuilder::MoveToOperator, this , std::placeholders::_1));
7982
80- // UtilityFunctions::print("Added MoveTo Operator");
83+ AddEffect (" ArrivedAtNewPos" , FluidEffectType::Permanent, [=](IContext &ctx, FluidEffectType effectType)
84+ { return static_cast <AgentContext &>(ctx).SetState (
85+ WsAgent::wsAgentMovement, (int )(AgentMovement::Arrived), true , effectType); });
86+
87+ End ();
8188 }
8289};
0 commit comments