forked from External/mage
Introducing Optionals
This commit is contained in:
parent
97261fdcca
commit
f98afdf4ad
21 changed files with 407 additions and 483 deletions
|
|
@ -34,13 +34,8 @@ import java.io.ObjectOutput;
|
|||
import java.io.ObjectOutputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.Serializable;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
|
@ -49,6 +44,7 @@ import java.util.concurrent.ScheduledExecutorService;
|
|||
import java.util.concurrent.ScheduledFuture;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.zip.GZIPOutputStream;
|
||||
|
||||
import mage.MageException;
|
||||
import mage.abilities.Ability;
|
||||
import mage.cards.Card;
|
||||
|
|
@ -91,7 +87,6 @@ import mage.view.PermanentView;
|
|||
import org.apache.log4j.Logger;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
*/
|
||||
public class GameController implements GameCallback {
|
||||
|
|
@ -282,7 +277,7 @@ public class GameController implements GameCallback {
|
|||
* We create a timer that will run every 250 ms individually for a player
|
||||
* decreasing his internal game counter. Later on this counter is used to
|
||||
* get time left to play the whole match.
|
||||
*
|
||||
* <p>
|
||||
* What we also do here is passing Action to PriorityTimer that is the
|
||||
* action that will be executed once game timer is over.
|
||||
*
|
||||
|
|
@ -311,7 +306,7 @@ public class GameController implements GameCallback {
|
|||
|
||||
public void join(UUID userId) {
|
||||
UUID playerId = userPlayerMap.get(userId);
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
Optional<User> user = UserManager.getInstance().getUser(userId);
|
||||
if (userId == null || playerId == null) {
|
||||
logger.fatal("Join game failed!");
|
||||
logger.fatal("- gameId: " + game.getId());
|
||||
|
|
@ -332,7 +327,7 @@ public class GameController implements GameCallback {
|
|||
} else {
|
||||
joinType = "rejoined";
|
||||
}
|
||||
user.addGame(playerId, gameSession);
|
||||
user.get().addGame(playerId, gameSession);
|
||||
logger.debug("Player " + player.getName() + " " + playerId + " has " + joinType + " gameId: " + game.getId());
|
||||
ChatManager.getInstance().broadcast(chatId, "", game.getPlayer(playerId).getLogName() + " has " + joinType + " the game", MessageColor.ORANGE, true, MessageType.GAME, null);
|
||||
checkStart();
|
||||
|
|
@ -351,7 +346,7 @@ public class GameController implements GameCallback {
|
|||
private void sendInfoAboutPlayersNotJoinedYet() {
|
||||
for (Player player : game.getPlayers().values()) {
|
||||
if (!player.hasLeft() && player.isHuman()) {
|
||||
User user = getUserByPlayerId(player.getId());
|
||||
User user = getUserByPlayerId(player.getId()).get();
|
||||
if (user != null) {
|
||||
if (!user.isConnected()) {
|
||||
if (gameSessions.get(player.getId()) == null) {
|
||||
|
|
@ -377,13 +372,13 @@ public class GameController implements GameCallback {
|
|||
checkStart();
|
||||
}
|
||||
|
||||
private User getUserByPlayerId(UUID playerId) {
|
||||
private Optional<User> getUserByPlayerId(UUID playerId) {
|
||||
for (Map.Entry<UUID, UUID> entry : userPlayerMap.entrySet()) {
|
||||
if (entry.getValue().equals(playerId)) {
|
||||
return UserManager.getInstance().getUser(entry.getKey());
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
private void checkStart() {
|
||||
|
|
@ -397,9 +392,9 @@ public class GameController implements GameCallback {
|
|||
private boolean allJoined() {
|
||||
for (Player player : game.getPlayers().values()) {
|
||||
if (!player.hasLeft()) {
|
||||
User user = getUserByPlayerId(player.getId());
|
||||
if (user != null) {
|
||||
if (!user.isConnected()) {
|
||||
Optional<User> user = getUserByPlayerId(player.getId());
|
||||
if (user.isPresent()) {
|
||||
if (!user.get().isConnected()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -420,22 +415,20 @@ public class GameController implements GameCallback {
|
|||
// You can't watch a game if you already watch it
|
||||
return;
|
||||
}
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
UserManager.getInstance().getUser(userId).ifPresent(user -> {
|
||||
GameSessionWatcher gameWatcher = new GameSessionWatcher(userId, game, false);
|
||||
watchers.put(userId, gameWatcher);
|
||||
gameWatcher.init();
|
||||
user.addGameWatchInfo(game.getId());
|
||||
ChatManager.getInstance().broadcast(chatId, user.getName(), " has started watching", MessageColor.BLUE, true, ChatMessage.MessageType.STATUS, null);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void stopWatching(UUID userId) {
|
||||
watchers.remove(userId);
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
UserManager.getInstance().getUser(userId).ifPresent(user -> {
|
||||
ChatManager.getInstance().broadcast(chatId, user.getName(), " has stopped watching", MessageColor.BLUE, true, ChatMessage.MessageType.STATUS, null);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void quitMatch(UUID userId) {
|
||||
|
|
@ -576,10 +569,10 @@ public class GameController implements GameCallback {
|
|||
private int requestPermissionToRollback(UUID userIdRequester, int numberTurns) {
|
||||
int requests = 0;
|
||||
for (Player player : game.getState().getPlayers().values()) {
|
||||
User requestedUser = getUserByPlayerId(player.getId());
|
||||
Optional<User> requestedUser = getUserByPlayerId(player.getId());
|
||||
if (player.isInGame() && player.isHuman()
|
||||
&& requestedUser != null
|
||||
&& !requestedUser.getId().equals(userIdRequester)) {
|
||||
&& requestedUser.isPresent()
|
||||
&& !requestedUser.get().getId().equals(userIdRequester)) {
|
||||
requests++;
|
||||
GameSessionPlayer gameSession = gameSessions.get(player.getId());
|
||||
if (gameSession != null) {
|
||||
|
|
@ -603,10 +596,9 @@ public class GameController implements GameCallback {
|
|||
gameSession.requestPermissionToSeeHandCards(userIdRequester);
|
||||
} else {
|
||||
// player does not allow the request
|
||||
User requester = UserManager.getInstance().getUser(userIdRequester);
|
||||
if (requester != null) {
|
||||
UserManager.getInstance().getUser(userIdRequester).ifPresent(requester -> {
|
||||
requester.showUserMessage("Request to show hand cards", "Player " + grantingPlayer.getName() + " does not allow to request to show hand cards!");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -616,14 +608,13 @@ public class GameController implements GameCallback {
|
|||
}
|
||||
} else {
|
||||
// user can already see the cards
|
||||
User requester = UserManager.getInstance().getUser(userIdRequester);
|
||||
if (requester != null) {
|
||||
UserManager.getInstance().getUser(userIdRequester).ifPresent(requester -> {
|
||||
requester.showUserMessage("Request to show hand cards", "You can see already the hand cards of player " + grantingPlayer.getName() + "!");
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void cheat(UUID userId, UUID playerId, DeckCardLists deckList) {
|
||||
|
|
|
|||
|
|
@ -27,15 +27,6 @@
|
|||
*/
|
||||
package mage.server.game;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import mage.cards.Cards;
|
||||
import mage.choices.Choice;
|
||||
import mage.constants.ManaType;
|
||||
|
|
@ -47,17 +38,15 @@ import mage.players.Player;
|
|||
import mage.server.User;
|
||||
import mage.server.UserManager;
|
||||
import mage.server.util.ThreadExecutor;
|
||||
import mage.view.AbilityPickerView;
|
||||
import mage.view.CardsView;
|
||||
import mage.view.GameClientMessage;
|
||||
import mage.view.GameView;
|
||||
import mage.view.LookedAtView;
|
||||
import mage.view.SimpleCardsView;
|
||||
import mage.view.UserRequestMessage;
|
||||
import mage.view.*;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
*/
|
||||
public class GameSessionPlayer extends GameSessionWatcher {
|
||||
|
|
@ -80,99 +69,87 @@ public class GameSessionPlayer extends GameSessionWatcher {
|
|||
|
||||
public void ask(final String question, final Map<String, Serializable> options) {
|
||||
if (!killed) {
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
user.fireCallback(new ClientCallback("gameAsk", game.getId(), new GameClientMessage(getGameView(), question, options)));
|
||||
}
|
||||
UserManager.getInstance().getUser(userId).ifPresent(user -> user.fireCallback(new ClientCallback("gameAsk", game.getId(), new GameClientMessage(getGameView(), question, options)))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public void target(final String question, final CardsView cardView, final Set<UUID> targets, final boolean required, final Map<String, Serializable> options) {
|
||||
if (!killed) {
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
UserManager.getInstance().getUser(userId).ifPresent(user -> {
|
||||
user.fireCallback(new ClientCallback("gameTarget", game.getId(), new GameClientMessage(getGameView(), question, cardView, targets, required, options)));
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void select(final String message, final Map<String, Serializable> options) {
|
||||
if (!killed) {
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
user.fireCallback(new ClientCallback("gameSelect", game.getId(), new GameClientMessage(getGameView(), message, options)));
|
||||
}
|
||||
UserManager.getInstance().getUser(userId).ifPresent(user -> user.fireCallback(new ClientCallback("gameSelect", game.getId(), new GameClientMessage(getGameView(), message, options))));
|
||||
}
|
||||
;
|
||||
}
|
||||
|
||||
public void chooseAbility(final AbilityPickerView abilities) {
|
||||
if (!killed) {
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
user.fireCallback(new ClientCallback("gameChooseAbility", game.getId(), abilities));
|
||||
}
|
||||
UserManager.getInstance().getUser(userId).ifPresent(user ->
|
||||
user.fireCallback(new ClientCallback("gameChooseAbility", game.getId(), abilities)));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void choosePile(final String message, final CardsView pile1, final CardsView pile2) {
|
||||
if (!killed) {
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
user.fireCallback(new ClientCallback("gameChoosePile", game.getId(), new GameClientMessage(message, pile1, pile2)));
|
||||
}
|
||||
UserManager.getInstance().getUser(userId).ifPresent(user ->
|
||||
user.fireCallback(new ClientCallback("gameChoosePile", game.getId(), new GameClientMessage(message, pile1, pile2))));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void chooseChoice(final Choice choice) {
|
||||
if (!killed) {
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
user.fireCallback(new ClientCallback("gameChooseChoice", game.getId(), new GameClientMessage(choice)));
|
||||
}
|
||||
UserManager.getInstance().getUser(userId).ifPresent(user ->
|
||||
user.fireCallback(new ClientCallback("gameChooseChoice", game.getId(), new GameClientMessage(choice))));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void playMana(final String message, final Map<String, Serializable> options) {
|
||||
if (!killed) {
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
user.fireCallback(new ClientCallback("gamePlayMana", game.getId(), new GameClientMessage(getGameView(), message, options)));
|
||||
}
|
||||
UserManager.getInstance().getUser(userId).ifPresent(user ->
|
||||
user.fireCallback(new ClientCallback("gamePlayMana", game.getId(), new GameClientMessage(getGameView(), message, options))));
|
||||
}
|
||||
}
|
||||
|
||||
public void playXMana(final String message) {
|
||||
if (!killed) {
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
user.fireCallback(new ClientCallback("gamePlayXMana", game.getId(), new GameClientMessage(getGameView(), message)));
|
||||
}
|
||||
UserManager.getInstance().getUser(userId).ifPresent(user ->
|
||||
user.fireCallback(new ClientCallback("gamePlayXMana", game.getId(), new GameClientMessage(getGameView(), message))));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void getAmount(final String message, final int min, final int max) {
|
||||
if (!killed) {
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
UserManager.getInstance().getUser(userId).ifPresent(user -> {
|
||||
|
||||
user.fireCallback(new ClientCallback("gameSelectAmount", game.getId(), new GameClientMessage(message, min, max)));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public void endGameInfo(Table table) {
|
||||
if (!killed) {
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
user.fireCallback(new ClientCallback("endGameInfo", game.getId(), getGameEndView(playerId, table)));
|
||||
}
|
||||
UserManager.getInstance().getUser(userId).ifPresent(user -> user.fireCallback(new ClientCallback("endGameInfo", game.getId(), getGameEndView(playerId, table))));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void requestPermissionToRollbackTurn(UUID requestingUserId, int numberTurns) {
|
||||
if (!killed) {
|
||||
User requestingUser = UserManager.getInstance().getUser(requestingUserId);
|
||||
User requestedUser = UserManager.getInstance().getUser(userId);
|
||||
if (requestedUser != null && requestingUser != null) {
|
||||
Optional<User> requestingUser = UserManager.getInstance().getUser(requestingUserId);
|
||||
Optional<User> requestedUser = UserManager.getInstance().getUser(userId);
|
||||
if (!requestedUser.isPresent() && !requestingUser.isPresent()) {
|
||||
String message;
|
||||
switch (numberTurns) {
|
||||
case 0:
|
||||
|
|
@ -185,30 +162,30 @@ public class GameSessionPlayer extends GameSessionWatcher {
|
|||
message = "Allow to rollback " + numberTurns + " turns?";
|
||||
}
|
||||
UserRequestMessage userRequestMessage = new UserRequestMessage(
|
||||
"Request by " + requestedUser.getName(), message);
|
||||
userRequestMessage.setRelatedUser(requestingUserId, requestingUser.getName());
|
||||
"Request by " + requestedUser.get().getName(), message);
|
||||
userRequestMessage.setRelatedUser(requestingUserId, requestingUser.get().getName());
|
||||
userRequestMessage.setGameId(game.getId());
|
||||
userRequestMessage.setButton1("Accept", PlayerAction.ADD_PERMISSION_TO_ROLLBACK_TURN);
|
||||
userRequestMessage.setButton2("Deny", PlayerAction.DENY_PERMISSON_TO_ROLLBACK_TURN);
|
||||
requestedUser.fireCallback(new ClientCallback("userRequestDialog", game.getId(), userRequestMessage));
|
||||
requestedUser.get().fireCallback(new ClientCallback("userRequestDialog", game.getId(), userRequestMessage));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void requestPermissionToSeeHandCards(UUID watcherId) {
|
||||
if (!killed) {
|
||||
User watcher = UserManager.getInstance().getUser(watcherId);
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null && watcher != null) {
|
||||
Optional<User> watcher = UserManager.getInstance().getUser(watcherId);
|
||||
Optional<User> user = UserManager.getInstance().getUser(userId);
|
||||
if (user.isPresent() && watcher.isPresent()) {
|
||||
UserRequestMessage userRequestMessage = new UserRequestMessage(
|
||||
"User request",
|
||||
"Allow user <b>" + watcher.getName() + "</b> for this match to see your hand cards?<br>"
|
||||
+ "(You can revoke this every time using related popup menu item of your battlefield.)");
|
||||
userRequestMessage.setRelatedUser(watcherId, watcher.getName());
|
||||
"Allow user <b>" + watcher.get().getName() + "</b> for this match to see your hand cards?<br>"
|
||||
+ "(You can revoke this every time using related popup menu item of your battlefield.)");
|
||||
userRequestMessage.setRelatedUser(watcherId, watcher.get().getName());
|
||||
userRequestMessage.setGameId(game.getId());
|
||||
userRequestMessage.setButton1("Accept", PlayerAction.ADD_PERMISSION_TO_SEE_HAND_CARDS);
|
||||
userRequestMessage.setButton2("Reject", null);
|
||||
user.fireCallback(new ClientCallback("userRequestDialog", game.getId(), userRequestMessage));
|
||||
user.get().fireCallback(new ClientCallback("userRequestDialog", game.getId(), userRequestMessage));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -267,10 +244,8 @@ public class GameSessionPlayer extends GameSessionWatcher {
|
|||
}
|
||||
|
||||
public void removeGame() {
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
user.removeGame(playerId);
|
||||
}
|
||||
UserManager.getInstance().getUser(userId).ifPresent(user -> user.removeGame(playerId));
|
||||
|
||||
}
|
||||
|
||||
public UUID getGameId() {
|
||||
|
|
|
|||
|
|
@ -30,7 +30,9 @@ package mage.server.game;
|
|||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.game.Game;
|
||||
import mage.game.Table;
|
||||
import mage.interfaces.callback.ClientCallback;
|
||||
|
|
@ -44,7 +46,6 @@ import mage.view.SimpleCardsView;
|
|||
import org.apache.log4j.Logger;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
*/
|
||||
public class GameSessionWatcher {
|
||||
|
|
@ -64,9 +65,9 @@ public class GameSessionWatcher {
|
|||
|
||||
public boolean init() {
|
||||
if (!killed) {
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
user.fireCallback(new ClientCallback("gameInit", game.getId(), getGameView()));
|
||||
Optional<User> user = UserManager.getInstance().getUser(userId);
|
||||
if (user.isPresent()) {
|
||||
user.get().fireCallback(new ClientCallback("gameInit", game.getId(), getGameView()));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -75,44 +76,36 @@ public class GameSessionWatcher {
|
|||
|
||||
public void update() {
|
||||
if (!killed) {
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
user.fireCallback(new ClientCallback("gameUpdate", game.getId(), getGameView()));
|
||||
}
|
||||
UserManager.getInstance().getUser(userId).ifPresent(user -> user.fireCallback(new ClientCallback("gameUpdate", game.getId(), getGameView())));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void inform(final String message) {
|
||||
if (!killed) {
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
user.fireCallback(new ClientCallback("gameInform", game.getId(), new GameClientMessage(getGameView(), message)));
|
||||
}
|
||||
UserManager.getInstance().getUser(userId).ifPresent(user -> user.fireCallback(new ClientCallback("gameInform", game.getId(), new GameClientMessage(getGameView(), message))));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void informPersonal(final String message) {
|
||||
if (!killed) {
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
user.fireCallback(new ClientCallback("gameInformPersonal", game.getId(), new GameClientMessage(getGameView(), message)));
|
||||
}
|
||||
UserManager.getInstance().getUser(userId).ifPresent(user -> user.fireCallback(new ClientCallback("gameInformPersonal", game.getId(), new GameClientMessage(getGameView(), message))));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void gameOver(final String message) {
|
||||
if (!killed) {
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
UserManager.getInstance().getUser(userId).ifPresent(user -> {
|
||||
user.removeGameWatchInfo(game.getId());
|
||||
user.fireCallback(new ClientCallback("gameOver", game.getId(), message));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Cleanup if Session ends
|
||||
*
|
||||
*/
|
||||
public void cleanUp() {
|
||||
|
||||
|
|
@ -120,10 +113,8 @@ public class GameSessionWatcher {
|
|||
|
||||
public void gameError(final String message) {
|
||||
if (!killed) {
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
user.fireCallback(new ClientCallback("gameError", game.getId(), message));
|
||||
}
|
||||
UserManager.getInstance().getUser(userId).ifPresent(user -> user.fireCallback(new ClientCallback("gameError", game.getId(), message)));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -140,13 +131,14 @@ public class GameSessionWatcher {
|
|||
|
||||
protected void processWatchedHands(UUID userId, GameView gameView) {
|
||||
Map<String, SimpleCardsView> handCards = new HashMap<>();
|
||||
for (Player player: game.getPlayers().values()) {
|
||||
for (Player player : game.getPlayers().values()) {
|
||||
if (player.hasUserPermissionToSeeHand(userId)) {
|
||||
handCards.put(player.getName(), new SimpleCardsView(player.getHand().getCards(game), true));
|
||||
gameView.setWatchedHands(handCards);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public GameEndView getGameEndView(UUID playerId, Table table) {
|
||||
return new GameEndView(game.getState(), game, playerId, table);
|
||||
}
|
||||
|
|
@ -154,5 +146,5 @@ public class GameSessionWatcher {
|
|||
public boolean isPlayer() {
|
||||
return isPlayer;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@ public class GamesRoomImpl extends RoomImpl implements GamesRoom, Serializable {
|
|||
}
|
||||
}
|
||||
|
||||
users.sort(new UserNameSorter());
|
||||
users.sort((one, two) -> one.getUserName().compareToIgnoreCase(two.getUserName()));
|
||||
List<RoomUsersView> roomUserInfo = new ArrayList<>();
|
||||
roomUserInfo.add(new RoomUsersView(users,
|
||||
GameManager.getInstance().getNumberActiveGames(),
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ public class ReplayManager {
|
|||
public void replayGame(UUID gameId, UUID userId) {
|
||||
ReplaySession replaySession = new ReplaySession(gameId, userId);
|
||||
replaySessions.put(gameId.toString() + userId.toString(), replaySession);
|
||||
UserManager.getInstance().getUser(userId).ccReplayGame(gameId);
|
||||
UserManager.getInstance().getUser(userId).ifPresent(user->user.ccReplayGame(gameId));
|
||||
}
|
||||
|
||||
public void startReplay(UUID gameId, UUID userId) {
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
package mage.server.game;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.game.Game;
|
||||
import mage.game.GameState;
|
||||
import mage.interfaces.callback.ClientCallback;
|
||||
|
|
@ -37,7 +38,6 @@ import mage.server.UserManager;
|
|||
import mage.view.GameView;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
*/
|
||||
public class ReplaySession implements GameCallback {
|
||||
|
|
@ -52,10 +52,9 @@ public class ReplaySession implements GameCallback {
|
|||
|
||||
public void replay() {
|
||||
replay.start();
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
user.fireCallback(new ClientCallback("replayInit", replay.getGame().getId(), new GameView(replay.next(), replay.getGame(), null, null)));
|
||||
}
|
||||
UserManager.getInstance().getUser(userId).ifPresent(user ->
|
||||
user.fireCallback(new ClientCallback("replayInit", replay.getGame().getId(), new GameView(replay.next(), replay.getGame(), null, null))));
|
||||
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
|
|
@ -79,22 +78,19 @@ public class ReplaySession implements GameCallback {
|
|||
|
||||
@Override
|
||||
public void gameResult(final String result) {
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
user.fireCallback(new ClientCallback("replayDone", replay.getGame().getId(), result));
|
||||
}
|
||||
UserManager.getInstance().getUser(userId).ifPresent(user ->
|
||||
user.fireCallback(new ClientCallback("replayDone", replay.getGame().getId(), result)));
|
||||
|
||||
ReplayManager.getInstance().endReplay(replay.getGame().getId(), userId);
|
||||
}
|
||||
|
||||
private void updateGame(final GameState state, Game game) {
|
||||
if (state == null) {
|
||||
gameResult("game ended");
|
||||
}
|
||||
else {
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
user.fireCallback(new ClientCallback("replayUpdate", replay.getGame().getId(), new GameView(state, game, null, null)));
|
||||
}
|
||||
} else {
|
||||
UserManager.getInstance().getUser(userId).ifPresent(user ->
|
||||
user.fireCallback(new ClientCallback("replayUpdate", replay.getGame().getId(), new GameView(state, game, null, null))));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue