public int evaluate() { Map<UUID, Integer> damage = new HashMap<UUID, Integer>(); int result = 0; for (CombatGroupSimulator group : groups) { if (!damage.containsKey(group.defenderId)) { damage.put(group.defenderId, group.unblockedDamage); } else { damage.put(group.defenderId, damage.get(group.defenderId) + group.unblockedDamage); } } // check for lethal damage to player for (Entry<UUID, Integer> entry : playersLife.entrySet()) { if (damage.containsKey(entry.getKey()) && entry.getValue() <= damage.get(entry.getKey())) { // TODO: check for protection // NOTE: not applicable for mulitplayer games return Integer.MAX_VALUE; } } for (CombatGroupSimulator group : groups) { result += group.evaluateCombat(); } rating = result; return result; }
public void simulate() { for (CombatGroupSimulator group : groups) { group.simulateCombat(); } }