From 78e9af633132b8e098ca1e4ea4eee893ee63372e Mon Sep 17 00:00:00 2001 From: Yejun Kang Date: Fri, 4 Aug 2023 13:55:59 -0700 Subject: [PATCH] fix game end player removal error --- .../server/ServerAcceptClients.java | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/wordhunter/server/ServerAcceptClients.java b/src/main/java/com/wordhunter/server/ServerAcceptClients.java index 9800524..dc379db 100644 --- a/src/main/java/com/wordhunter/server/ServerAcceptClients.java +++ b/src/main/java/com/wordhunter/server/ServerAcceptClients.java @@ -54,18 +54,24 @@ public void removePlayer(int index) { playerColorListLock.acquire(); // remove from server lists - Player removedPlayer = ServerMain.playerList.remove(index); - colorIds.add(removedPlayer.getColor()); - // store for allowing reconnect attempt - disconnectedPlayerList.add(removedPlayer); + try { + Player removedPlayer = ServerMain.playerList.remove(index); + colorIds.add(removedPlayer.getColor()); + // store for allowing reconnect attempt + disconnectedPlayerList.add(removedPlayer); + + // broadcast updated player list and color ids + ServerMain.broadcast("playerDisconnect" + ServerMain.messageDelimiter + + "playerList" + ServerMain.messageDelimiter + + "," + + PlayerConversion.fromPlayers(ServerMain.playerList) + + ServerMain.messageDelimiter); + playerColorListLock.release(); + } + catch (ArrayIndexOutOfBoundsException e){ + System.out.println("Game has already ended, no players to remove."); + } - // broadcast updated player list and color ids - ServerMain.broadcast("playerDisconnect" + ServerMain.messageDelimiter - + "playerList" + ServerMain.messageDelimiter - + "," - + PlayerConversion.fromPlayers(ServerMain.playerList) - + ServerMain.messageDelimiter); - playerColorListLock.release(); } catch (InterruptedException ignored) { } }