mirror of
https://github.com/magefree/mage.git
synced 2025-12-25 04:52:07 -08:00
added watch game methods
This commit is contained in:
parent
8225a4080c
commit
4bb7ffd452
22 changed files with 235 additions and 114 deletions
|
|
@ -703,55 +703,30 @@ public class ServerMain implements MageServer {
|
|||
GameManager.getInstance().sendPlayerAction(playerAction, gameId, session.getUserId(), data);
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public boolean watchTable(final String sessionId, final UUID roomId, final UUID tableId) throws MageException {
|
||||
// return executeWithResult("setUserData", sessionId, new ActionWithBooleanResult() {
|
||||
// @Override
|
||||
// public Boolean execute() throws MageException {
|
||||
// UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId();
|
||||
// return GamesRoomManager.getInstance().getRoom(roomId).watchTable(userId, tableId);
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public boolean watchTournamentTable(final String sessionId, final UUID tableId) throws MageException {
|
||||
// return executeWithResult("setUserData", sessionId, new ActionWithBooleanResult() {
|
||||
// @Override
|
||||
// public Boolean execute() throws MageException {
|
||||
// UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId();
|
||||
// return TableManager.getInstance().watchTable(userId, tableId);
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void watchGame(final UUID gameId, final String sessionId) throws MageException {
|
||||
// execute("watchGame", sessionId, new Action() {
|
||||
// @Override
|
||||
// public void execute() {
|
||||
// UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId();
|
||||
// GameManager.getInstance().watchGame(gameId, userId);
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void stopWatching(final UUID gameId, final String sessionId) throws MageException {
|
||||
// execute("stopWatching", sessionId, new Action() {
|
||||
// @Override
|
||||
// public void execute() {
|
||||
// UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId();
|
||||
// User user = UserManager.getInstance().getUser(userId);
|
||||
// if (user != null) {
|
||||
// GameManager.getInstance().stopWatching(gameId, userId);
|
||||
// user.removeGameWatchInfo(gameId);
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
//
|
||||
@Override
|
||||
public void watchTable(final String sessionId, final UUID roomId, final UUID tableId) {
|
||||
UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId();
|
||||
GamesRoomManager.getInstance().getRoom(roomId).watchTable(userId, tableId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void watchTournamentTable(final String sessionId, final UUID tableId) {
|
||||
UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId();
|
||||
TableManager.getInstance().watchTable(userId, tableId);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void stopWatching(final UUID gameId, final String sessionId) {
|
||||
UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId();
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
GameManager.getInstance().stopWatching(gameId, userId);
|
||||
user.removeGameWatchInfo(gameId);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public void replayGame(final UUID gameId, final String sessionId) throws MageException {
|
||||
// execute("replayGame", sessionId, new Action() {
|
||||
|
|
@ -1244,24 +1219,12 @@ public class ServerMain implements MageServer {
|
|||
server.showTournament(sessionId, tournamentId);
|
||||
}
|
||||
|
||||
// public void tournamentInit(String sessionId, UUID tournamentId, TournamentView tournamentView) {
|
||||
// server.tournamentInit(sessionId, tournamentId, tournamentView);
|
||||
// }
|
||||
|
||||
// public void tournamentUpdate(String sessionId, UUID tournamentId, TournamentView tournamentView) {
|
||||
// server.tournamentUpdate(sessionId, tournamentId, tournamentView);
|
||||
// }
|
||||
//
|
||||
// public void tournamentOver(String sessionId, UUID tournamentId) {
|
||||
// server.tournamentOver(sessionId, tournamentId);
|
||||
// }
|
||||
|
||||
public void showGameEndDialog(String sessionId, UUID gameId) {
|
||||
server.showGameEndDialog(sessionId, gameId);
|
||||
}
|
||||
|
||||
public void watchGame(String sessionId, UUID gameId) {
|
||||
server.watchGame(sessionId, gameId);
|
||||
public void watchGame(String sessionId, UUID gameId, UUID chatId, GameView game) {
|
||||
server.watchGame(sessionId, gameId, chatId, game);
|
||||
}
|
||||
|
||||
public void replayGame(String sessionId, UUID gameId) {
|
||||
|
|
|
|||
|
|
@ -434,22 +434,21 @@ public class TableController {
|
|||
}
|
||||
}
|
||||
|
||||
public boolean watchTable(UUID userId) {
|
||||
public void watchTable(UUID userId) {
|
||||
if (table.isTournament()) {
|
||||
UserManager.getInstance().getUser(userId).showTournament(table.getTournament().getId());
|
||||
return true;
|
||||
} else {
|
||||
if (table.isTournamentSubTable() && !table.getTournament().getOptions().isWatchingAllowed()) {
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
if (table.getState() != TableState.DUELING) {
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
// you can't watch your own game
|
||||
if (userPlayerMap.get(userId) != null) {
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
return UserManager.getInstance().getUser(userId).watchGame(match.getGame().getId());
|
||||
UserManager.getInstance().getUser(userId).watchGame(match.getGame().getId(), getChatId());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -270,11 +270,10 @@ public class TableManager {
|
|||
}
|
||||
}
|
||||
|
||||
public boolean watchTable(UUID userId, UUID tableId) {
|
||||
public void watchTable(UUID userId, UUID tableId) {
|
||||
if (controllers.containsKey(tableId)) {
|
||||
return controllers.get(tableId).watchTable(userId);
|
||||
controllers.get(tableId).watchTable(userId);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// public boolean replayTable(UUID userId, UUID tableId) {
|
||||
|
|
|
|||
|
|
@ -330,9 +330,10 @@ public class User {
|
|||
ServerMain.getInstance().informClient(sessionId, title, message, MessageType.ERROR);
|
||||
}
|
||||
|
||||
public boolean watchGame(final UUID gameId) {
|
||||
ServerMain.getInstance().watchGame(sessionId, gameId);
|
||||
return true;
|
||||
public void watchGame(final UUID gameId, UUID chatId) {
|
||||
GameView game = GameManager.getInstance().watchGame(gameId, userId);
|
||||
if (game != null)
|
||||
ServerMain.getInstance().watchGame(sessionId, gameId, chatId, game);
|
||||
}
|
||||
|
||||
public void replayGame(final UUID gameId) {
|
||||
|
|
|
|||
|
|
@ -433,14 +433,14 @@ public class GameController implements GameCallback {
|
|||
return true;
|
||||
}
|
||||
|
||||
public void watch(UUID userId) {
|
||||
public GameView watch(UUID userId) {
|
||||
if (userPlayerMap.get(userId) != null) {
|
||||
// You can't watch a game if you already a player in it
|
||||
return;
|
||||
return null;
|
||||
}
|
||||
if (watchers.get(userId) != null) {
|
||||
// You can't watch a game if you already watch it
|
||||
return;
|
||||
return null;
|
||||
}
|
||||
User user = UserManager.getInstance().getUser(userId);
|
||||
if (user != null) {
|
||||
|
|
@ -449,7 +449,9 @@ public class GameController implements GameCallback {
|
|||
gameWatcher.init();
|
||||
user.addGameWatchInfo(game.getId());
|
||||
ChatManager.getInstance().broadcast(chatId, user, " has started watching", MessageColor.BLUE, true, ChatMessage.MessageType.STATUS);
|
||||
return watchers.get(userId).getGameView();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void stopWatching(UUID userId) {
|
||||
|
|
|
|||
|
|
@ -122,11 +122,12 @@ public class GameManager {
|
|||
}
|
||||
}
|
||||
|
||||
public void watchGame(UUID gameId, UUID userId) {
|
||||
public GameView watchGame(UUID gameId, UUID userId) {
|
||||
GameController gameController = gameControllers.get(gameId);
|
||||
if (gameController != null) {
|
||||
gameController.watch(userId);
|
||||
return gameController.watch(userId);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void stopWatching(UUID gameId, UUID userId) {
|
||||
|
|
|
|||
|
|
@ -29,7 +29,6 @@
|
|||
package mage.server.game;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageException;
|
||||
import mage.cards.decks.DeckCardLists;
|
||||
import mage.game.match.MatchOptions;
|
||||
import mage.game.tournament.TournamentOptions;
|
||||
|
|
@ -51,7 +50,7 @@ public interface GamesRoom extends Room {
|
|||
void removeTable(UUID tableId);
|
||||
TableView getTable(UUID tableId);
|
||||
void leaveTable(UUID userId, UUID tableId);
|
||||
boolean watchTable(UUID userId, UUID tableId) throws MageException;
|
||||
void watchTable(UUID userId, UUID tableId);
|
||||
|
||||
public RoomView getRoomView();
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,6 @@ import java.util.concurrent.ScheduledExecutorService;
|
|||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.locks.ReadWriteLock;
|
||||
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
||||
import mage.MageException;
|
||||
import mage.cards.decks.DeckCardLists;
|
||||
import mage.constants.TableState;
|
||||
import mage.game.Table;
|
||||
|
|
@ -200,8 +199,8 @@ public class GamesRoomImpl extends RoomImpl implements GamesRoom, Serializable {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean watchTable(UUID userId, UUID tableId) throws MageException {
|
||||
return TableManager.getInstance().watchTable(userId, tableId);
|
||||
public void watchTable(UUID userId, UUID tableId) {
|
||||
TableManager.getInstance().watchTable(userId, tableId);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue