@Override public Input handle(Action action, String actorID) { final Hunt act = (Hunt) action; final Food food = dmodel.getFoodById(act.getFoodTypeId()); // This line gets the agents datamodel // Just trust me on that one :P final PublicAgentDataModel am = ((AbstractAgent) sim.getPlayer(actorID)).getDataModel(); if (am.getHuntingTeam() == null) { Input result; if (food.getHuntersRequired() <= 1) { result = new HuntResult(actorID, food.getNutrition(), food.getNutrition(), dmodel.getTime()); } else { result = new HuntResult(actorID, 0, 0, dmodel.getTime()); } sim.getPlayer(actorID).enqueueInput(result); } else { if (!storedHuntResults.containsKey(am.getHuntingTeam())) { storedHuntResults.put(am.getHuntingTeam(), new LinkedList<TeamHuntEvent>()); } storedHuntResults.get(am.getHuntingTeam()).add(new TeamHuntEvent(act, actorID)); } logger.log( Level.FINE, "Agent {0} hunted {1}{2}", new Object[] { nameOf(actorID), food.getName(), am.getHuntingTeam() == null ? " alone." : " with team " + am.getHuntingTeam().hashCode() }); return null; }
/** * Creates a new Team Hunt Event record based off the data passed to the {@link HuntHandler}, * namely the Hunt and the ActorID * * @param hunt The hunt object * @param actorID The hunter's id */ TeamHuntEvent(Hunt hunt, String actorID) { this.food = dmodel.getFoodById(hunt.getFoodTypeId()); this.agent = actorID; }