package iamrescue.agent.police.newstrategy; import iamrescue.belief.IAMWorldModel; import iamrescue.util.comparators.EntityIDComparator; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; import rescuecore2.standard.entities.StandardEntity; import rescuecore2.standard.entities.StandardEntityURN; import rescuecore2.worldmodel.EntityID; public class TeamSplitter { public static StandardEntityURN getMyPreferredTarget( IAMWorldModel worldModel, EntityID myID, int policeProportion, int ambulanceProportion, int fireProportion) { Collection<StandardEntity> police = worldModel .getEntitiesOfType(StandardEntityURN.POLICE_FORCE); List<StandardEntity> list = new ArrayList<StandardEntity>(police); Collections.sort(list, EntityIDComparator.DEFAULT_INSTANCE); double total = policeProportion + ambulanceProportion + fireProportion; int toFire = (int) (list.size() * fireProportion / total); int toAmbulance = (int) (list.size() * ambulanceProportion / total); // int toRefuge = list.size() - toFire - toAmbulance; for (int i = 0; i < list.size(); i++) { if (list.get(i).equals(myID)) { if (i < toFire) { return StandardEntityURN.FIRE_BRIGADE; } else if (i < toAmbulance) { return StandardEntityURN.AMBULANCE_TEAM; } else { return StandardEntityURN.POLICE_FORCE; } } } return StandardEntityURN.POLICE_FORCE; } }