Skip to content

Commit 7b64d19

Browse files
author
Jasper Geurtz
committed
Fix Game.getForces index 0 exclusion and refresh allies/enemies/observers per frame
1 parent dc5f9c0 commit 7b64d19

1 file changed

Lines changed: 17 additions & 9 deletions

File tree

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

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,9 @@ void init() {
162162
forces[id] = new Force(gameData().getForces(id), id, this);
163163
}
164164

165-
forceSet = Collections.unmodifiableList(Arrays.asList(forces));
165+
forceSet = forceCount > 1
166+
? Collections.unmodifiableList(Arrays.asList(forces).subList(1, forceCount))
167+
: Collections.emptyList();
166168

167169
final int playerCount = gameData().getPlayerCount();
168170
players = new Player[playerCount];
@@ -270,21 +272,26 @@ void init() {
270272
mapPixelWidth = mapWidth * TilePosition.SIZE_IN_PIXELS;
271273
mapPixelHeight = mapHeight * TilePosition.SIZE_IN_PIXELS;
272274

273-
if (isReplay()) {
275+
updatePlayers();
276+
setLatCom(!configuration.getAsync());
277+
}
278+
279+
private void updatePlayers() {
280+
if (isReplay() || self() == null) {
274281
enemies = Collections.emptyList();
275282
allies = Collections.emptyList();
276283
observers = Collections.emptyList();
277-
}
278-
else {
279-
enemies = playerSet.stream().filter(p -> !p.equals(self()) && self().isEnemy(p))
284+
} else {
285+
enemies = playerSet.stream()
286+
.filter(p -> !p.leftGame() && !p.isDefeated() && !p.equals(self()) && self().isEnemy(p))
280287
.collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
281-
allies = playerSet.stream().filter(p -> !p.equals(self()) && self().isAlly(p))
288+
allies = playerSet.stream()
289+
.filter(p -> !p.leftGame() && !p.isDefeated() && !p.equals(self()) && self().isAlly(p))
282290
.collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
283-
284-
observers = playerSet.stream().filter(p -> !p.equals(self()) && p.isObserver())
291+
observers = playerSet.stream()
292+
.filter(p -> !p.leftGame() && !p.isDefeated() && !p.equals(self()) && p.isObserver())
285293
.collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
286294
}
287-
setLatCom(!configuration.getAsync());
288295
}
289296

290297
void unitCreate(final int id) {
@@ -317,6 +324,7 @@ void onFrame(final int frame) {
317324
.collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
318325
}
319326
getAllUnits().forEach(u -> u.updatePosition(frame));
327+
updatePlayers();
320328
}
321329

322330
/**

0 commit comments

Comments
 (0)