Beispiel #1
0
bool
SoccerBase::GetAgentStates(const zeitgeist::Leaf& base,
                           TAgentStateList& agentStates,
                           TTeamIndex idx)
{
    static boost::shared_ptr<GameControlServer> gameCtrl;

    if (gameCtrl.get() == 0)
    {
        GetGameControlServer(base, gameCtrl);

        if (gameCtrl.get() == 0)
        {
            base.GetLog()->Error() << "(SoccerBase) ERROR: can't get "
                                   << "GameControlServer\n";
            return false;
        }
    }

    GameControlServer::TAgentAspectList aspectList;
    gameCtrl->GetAgentAspectList(aspectList);

    GameControlServer::TAgentAspectList::iterator iter;
    boost::shared_ptr<AgentState> agentState;

    for (
         iter = aspectList.begin();
         iter != aspectList.end();
         ++iter
         )
        {
            agentState = shared_dynamic_cast<AgentState>((*iter)->GetChild("AgentState", true));

            if (
                agentState.get() != 0 &&
                (
                 agentState->GetTeamIndex() == idx ||
                 idx == TI_NONE
                 )
                )
                {
                    agentStates.push_back(agentState);
                }
        }

    return true;
}