/** * Get advice for a calling {@link AbstractAgent agent} from a remote agent as the best option for * hunting * * @param agent The source agent * @param authToken The token used to verify the source agent's identification * @param fromAgent The agent that is to advise the source agent * @param agentsTeam The team that the source agent is a member of * @return The food that they are advised to hunt * @see AbstractAgent#advise(java.lang.String, ise.mace.models.HuntingTeam) * @see AbstractAgent#seekAvice(java.lang.String) * @see AbstractAgent#giveAdvice(java.lang.String, ise.mace.models.HuntingTeam) */ Food seekAdvice(String agent, UUID authToken, String fromAgent, HuntingTeam agentsTeam) { if (authenticator.get(agent) != authToken) { throw new IllegalAccessError("Incorrect access credentials"); } AbstractAgent a = (AbstractAgent) sim.getPlayer(fromAgent); AbstractAgent b = (AbstractAgent) sim.getPlayer(agent); String ga = a.getDataModel().getGroupId(); String gb = b.getDataModel().getGroupId(); if (ga == null ? gb != null : !ga.equals(gb)) { return null; } return a.advise(agent, agentsTeam); }