@@ -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