mirror of
https://github.com/magefree/mage.git
synced 2025-12-22 11:32:00 -08:00
Improved reconnect and tournament handling. Reconnect time is now shown for disconneted players on player list and tournament panel. You can now reconnect (during 3 minutes) to a tournament also if meanwhile new game (after sideboarding ended) or round was started. Conceding the complete match in a tournament can no longer result in a draw, if you won games before. Quitting a tournament does now always end all active games of that quitting player.
This commit is contained in:
parent
c76529bf91
commit
9ff5bcbd92
29 changed files with 282 additions and 109 deletions
|
|
@ -34,44 +34,62 @@ public class LoadCallbackClient implements CallbackClient {
|
|||
controlCount = 0;
|
||||
log.info(callback.getMethod());
|
||||
callback.setData(CompressUtil.decompress(callback.getData()));
|
||||
if (callback.getMethod().equals("startGame")) {
|
||||
TableClientMessage message = (TableClientMessage) callback.getData();
|
||||
gameId = message.getGameId();
|
||||
playerId = message.getPlayerId();
|
||||
session.joinGame(message.getGameId());
|
||||
startControlThread();
|
||||
} else if (callback.getMethod().equals("gameInform")) {
|
||||
GameClientMessage message = (GameClientMessage) callback.getData();
|
||||
log.info("Inform: " + message.getMessage());
|
||||
gameView = message.getGameView();
|
||||
} else if (callback.getMethod().equals("gameInit")) {
|
||||
|
||||
} else if (callback.getMethod().equals("gameTarget")) {
|
||||
GameClientMessage message = (GameClientMessage) callback.getData();
|
||||
log.info("Target: " + message.getMessage());
|
||||
if (message.getMessage().equals("Select a starting player")) {
|
||||
session.sendPlayerUUID(gameId, playerId);
|
||||
} else if (message.getMessage().equals("Select a card to discard")) {
|
||||
log.info("hand size: " + gameView.getHand().size());
|
||||
SimpleCardView card = gameView.getHand().values().iterator().next();
|
||||
session.sendPlayerUUID(gameId, card.getId());
|
||||
}
|
||||
} else if (callback.getMethod().equals("gameAsk")) {
|
||||
GameClientMessage message = (GameClientMessage) callback.getData();
|
||||
log.info("Ask: " + message.getMessage());
|
||||
if (message.getMessage().equals("Do you want to take a mulligan?")) {
|
||||
session.sendPlayerBoolean(gameId, false);
|
||||
}
|
||||
} else if (callback.getMethod().equals("gameSelect")) {
|
||||
GameClientMessage message = (GameClientMessage) callback.getData();
|
||||
log.info("Select: " + message.getMessage());
|
||||
if (LoadPhaseManager.getInstance().isSkip(message.getGameView(), message.getMessage(), playerId)) {
|
||||
log.info("Skipped: " + message.getMessage());
|
||||
session.sendPlayerBoolean(gameId, false);
|
||||
}
|
||||
} else if (callback.getMethod().equals("gameOver")) {
|
||||
log.info("Game over");
|
||||
gameOver = true;
|
||||
switch (callback.getMethod()) {
|
||||
case "startGame":
|
||||
{
|
||||
TableClientMessage message = (TableClientMessage) callback.getData();
|
||||
gameId = message.getGameId();
|
||||
playerId = message.getPlayerId();
|
||||
session.joinGame(message.getGameId());
|
||||
startControlThread();
|
||||
break;
|
||||
}
|
||||
case "gameInform":
|
||||
{
|
||||
GameClientMessage message = (GameClientMessage) callback.getData();
|
||||
log.info("Inform: " + message.getMessage());
|
||||
gameView = message.getGameView();
|
||||
break;
|
||||
}
|
||||
case "gameInit":
|
||||
break;
|
||||
case "gameTarget":
|
||||
{
|
||||
GameClientMessage message = (GameClientMessage) callback.getData();
|
||||
log.info("Target: " + message.getMessage());
|
||||
switch (message.getMessage()) {
|
||||
case "Select a starting player":
|
||||
session.sendPlayerUUID(gameId, playerId);
|
||||
break;
|
||||
case "Select a card to discard":
|
||||
log.info("hand size: " + gameView.getHand().size());
|
||||
SimpleCardView card = gameView.getHand().values().iterator().next();
|
||||
session.sendPlayerUUID(gameId, card.getId());
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "gameAsk":
|
||||
{
|
||||
GameClientMessage message = (GameClientMessage) callback.getData();
|
||||
log.info("Ask: " + message.getMessage());
|
||||
if (message.getMessage().equals("Do you want to take a mulligan?")) {
|
||||
session.sendPlayerBoolean(gameId, false);
|
||||
} break;
|
||||
}
|
||||
case "gameSelect":
|
||||
{
|
||||
GameClientMessage message = (GameClientMessage) callback.getData();
|
||||
log.info("Select: " + message.getMessage());
|
||||
if (LoadPhaseManager.getInstance().isSkip(message.getGameView(), message.getMessage(), playerId)) {
|
||||
log.info("Skipped: " + message.getMessage());
|
||||
session.sendPlayerBoolean(gameId, false);
|
||||
} break;
|
||||
}
|
||||
case "gameOver":
|
||||
log.info("Game over");
|
||||
gameOver = true;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue