mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 10:40:06 -08:00
Handled null pointer exception for "info about player not joined yet"
This commit is contained in:
parent
f4108f4e72
commit
368858cc95
1 changed files with 75 additions and 71 deletions
|
|
@ -157,64 +157,64 @@ public class GameController implements GameCallback {
|
||||||
|
|
||||||
private void init() {
|
private void init() {
|
||||||
game.addTableEventListener(
|
game.addTableEventListener(
|
||||||
new Listener<TableEvent> () {
|
new Listener<TableEvent>() {
|
||||||
@Override
|
@Override
|
||||||
public void event(TableEvent event) {
|
public void event(TableEvent event) {
|
||||||
try {
|
try {
|
||||||
PriorityTimer timer;
|
PriorityTimer timer;
|
||||||
UUID playerId;
|
UUID playerId;
|
||||||
switch (event.getEventType()) {
|
switch (event.getEventType()) {
|
||||||
case UPDATE:
|
case UPDATE:
|
||||||
updateGame();
|
updateGame();
|
||||||
break;
|
break;
|
||||||
case INFO:
|
case INFO:
|
||||||
ChatManager.getInstance().inform(chatId, event.getMessage(), MessageColor.BLACK, true, ChatMessage.MessageType.GAME);
|
ChatManager.getInstance().inform(chatId, event.getMessage(), MessageColor.BLACK, true, ChatMessage.MessageType.GAME);
|
||||||
logger.trace(game.getId() + " " + event.getMessage());
|
logger.trace(game.getId() + " " + event.getMessage());
|
||||||
break;
|
break;
|
||||||
case STATUS:
|
case STATUS:
|
||||||
ChatManager.getInstance().inform(chatId, event.getMessage(), MessageColor.ORANGE, event.getWithTime(), ChatMessage.MessageType.GAME);
|
ChatManager.getInstance().inform(chatId, event.getMessage(), MessageColor.ORANGE, event.getWithTime(), ChatMessage.MessageType.GAME);
|
||||||
logger.trace(game.getId() + " " + event.getMessage());
|
logger.trace(game.getId() + " " + event.getMessage());
|
||||||
break;
|
break;
|
||||||
case ERROR:
|
case ERROR:
|
||||||
error(event.getMessage(), event.getException());
|
error(event.getMessage(), event.getException());
|
||||||
break;
|
break;
|
||||||
case END_GAME_INFO:
|
case END_GAME_INFO:
|
||||||
endGameInfo();
|
endGameInfo();
|
||||||
break;
|
break;
|
||||||
case INIT_TIMER:
|
case INIT_TIMER:
|
||||||
final UUID initPlayerId = event.getPlayerId();
|
final UUID initPlayerId = event.getPlayerId();
|
||||||
if (initPlayerId == null) {
|
if (initPlayerId == null) {
|
||||||
throw new MageException("INIT_TIMER: playerId can't be null");
|
throw new MageException("INIT_TIMER: playerId can't be null");
|
||||||
}
|
|
||||||
createPlayerTimer(event.getPlayerId(), game.getPriorityTime());
|
|
||||||
break;
|
|
||||||
case RESUME_TIMER:
|
|
||||||
playerId = event.getPlayerId();
|
|
||||||
if (playerId == null) {
|
|
||||||
throw new MageException("RESUME_TIMER: playerId can't be null");
|
|
||||||
}
|
|
||||||
timer = timers.get(playerId);
|
|
||||||
if (timer == null) {
|
|
||||||
Player player = game.getState().getPlayer(playerId);
|
|
||||||
if (player != null) {
|
|
||||||
timer = createPlayerTimer(event.getPlayerId(), player.getPriorityTimeLeft());
|
|
||||||
} else {
|
|
||||||
throw new MageException("RESUME_TIMER: player can't be null");
|
|
||||||
}
|
}
|
||||||
}
|
createPlayerTimer(event.getPlayerId(), game.getPriorityTime());
|
||||||
timer.resume();
|
break;
|
||||||
break;
|
case RESUME_TIMER:
|
||||||
case PAUSE_TIMER:
|
playerId = event.getPlayerId();
|
||||||
playerId = event.getPlayerId();
|
if (playerId == null) {
|
||||||
if (playerId == null) {
|
throw new MageException("RESUME_TIMER: playerId can't be null");
|
||||||
throw new MageException("PAUSE_TIMER: playerId can't be null");
|
}
|
||||||
}
|
timer = timers.get(playerId);
|
||||||
timer = timers.get(playerId);
|
if (timer == null) {
|
||||||
if (timer == null) {
|
Player player = game.getState().getPlayer(playerId);
|
||||||
throw new MageException("PAUSE_TIMER: couldn't find timer for player: " + playerId);
|
if (player != null) {
|
||||||
}
|
timer = createPlayerTimer(event.getPlayerId(), player.getPriorityTimeLeft());
|
||||||
timer.pause();
|
} else {
|
||||||
break;
|
throw new MageException("RESUME_TIMER: player can't be null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timer.resume();
|
||||||
|
break;
|
||||||
|
case PAUSE_TIMER:
|
||||||
|
playerId = event.getPlayerId();
|
||||||
|
if (playerId == null) {
|
||||||
|
throw new MageException("PAUSE_TIMER: playerId can't be null");
|
||||||
|
}
|
||||||
|
timer = timers.get(playerId);
|
||||||
|
if (timer == null) {
|
||||||
|
throw new MageException("PAUSE_TIMER: couldn't find timer for player: " + playerId);
|
||||||
|
}
|
||||||
|
timer.pause();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
} catch (MageException ex) {
|
} catch (MageException ex) {
|
||||||
logger.fatal("Table event listener error ", ex);
|
logger.fatal("Table event listener error ", ex);
|
||||||
|
|
@ -375,7 +375,11 @@ public class GameController implements GameCallback {
|
||||||
logger.debug("Player " + player.getName() + " (disconnected) has joined gameId: " + game.getId());
|
logger.debug("Player " + player.getName() + " (disconnected) has joined gameId: " + game.getId());
|
||||||
}
|
}
|
||||||
Session session = SessionManager.getInstance().getSession(user.getSessionId());
|
Session session = SessionManager.getInstance().getSession(user.getSessionId());
|
||||||
ChatManager.getInstance().broadcast(chatId, user, session.getPingInfo() + " is pending to join the game", MessageColor.BLUE, true, ChatMessage.MessageType.STATUS);
|
if (session != null) {
|
||||||
|
ChatManager.getInstance().broadcast(chatId, user, session.getPingInfo() + " is pending to join the game", MessageColor.BLUE, true, ChatMessage.MessageType.STATUS);
|
||||||
|
} else {
|
||||||
|
logger.debug("Player " + player.getName() + " - not possible to get session gameId: " + game.getId());
|
||||||
|
}
|
||||||
if (user.getSecondsDisconnected() > 240) {
|
if (user.getSecondsDisconnected() > 240) {
|
||||||
// Cancel player join possibility lately after 4 minutes
|
// Cancel player join possibility lately after 4 minutes
|
||||||
logger.debug("Player " + player.getName() + " - canceled game (after 240 seconds) gameId: " + game.getId());
|
logger.debug("Player " + player.getName() + " - canceled game (after 240 seconds) gameId: " + game.getId());
|
||||||
|
|
@ -407,12 +411,12 @@ public class GameController implements GameCallback {
|
||||||
if (allJoined()) {
|
if (allJoined()) {
|
||||||
joinWaitingExecutor.shutdownNow();
|
joinWaitingExecutor.shutdownNow();
|
||||||
ThreadExecutor.getInstance().getCallExecutor().execute(
|
ThreadExecutor.getInstance().getCallExecutor().execute(
|
||||||
new Runnable() {
|
new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
startGame();
|
startGame();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1072,13 +1076,13 @@ public class GameController implements GameCallback {
|
||||||
}
|
}
|
||||||
cancelTimeout();
|
cancelTimeout();
|
||||||
futureTimeout = timeoutIdleExecutor.schedule(new Runnable() {
|
futureTimeout = timeoutIdleExecutor.schedule(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
idleTimeout(playerId);
|
idleTimeout(playerId);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
ServerMain.getInstance().isTestMode() ? 3600 :ConfigSettings.getInstance().getMaxSecondsIdle(),
|
ServerMain.getInstance().isTestMode() ? 3600 : ConfigSettings.getInstance().getMaxSecondsIdle(),
|
||||||
TimeUnit.SECONDS
|
TimeUnit.SECONDS
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue