Skip to content

Commit 50eca43

Browse files
author
Jasper Geurtz
committed
Simplify Game.updatePlayers to single loop
1 parent e5a830f commit 50eca43

1 file changed

Lines changed: 21 additions & 10 deletions

File tree

‎src/main/java/bwapi/Game.java‎

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -280,17 +280,28 @@ private void updatePlayers() {
280280
enemies = Collections.emptyList();
281281
allies = Collections.emptyList();
282282
observers = Collections.emptyList();
283-
} else {
284-
enemies = playerSet.stream()
285-
.filter(p -> !p.leftGame() && !p.isDefeated() && !p.equals(self()) && self().isEnemy(p))
286-
.collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
287-
allies = playerSet.stream()
288-
.filter(p -> !p.leftGame() && !p.isDefeated() && !p.equals(self()) && self().isAlly(p))
289-
.collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
290-
observers = playerSet.stream()
291-
.filter(p -> !p.leftGame() && !p.isDefeated() && !p.equals(self()) && p.isObserver())
292-
.collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
283+
return;
284+
}
285+
final List<Player> newEnemies = new ArrayList<>();
286+
final List<Player> newAllies = new ArrayList<>();
287+
final List<Player> newObservers = new ArrayList<>();
288+
for (final Player p : playerSet) {
289+
if (p.leftGame() || p.isDefeated() || p.equals(self())) {
290+
continue;
291+
}
292+
if (self().isAlly(p)) {
293+
newAllies.add(p);
294+
}
295+
if (self().isEnemy(p)) {
296+
newEnemies.add(p);
297+
}
298+
if (p.isObserver()) {
299+
newObservers.add(p);
300+
}
293301
}
302+
enemies = Collections.unmodifiableList(newEnemies);
303+
allies = Collections.unmodifiableList(newAllies);
304+
observers = Collections.unmodifiableList(newObservers);
294305
}
295306

296307
void unitCreate(final int id) {

0 commit comments

Comments
 (0)