package mage.client;
import mage.cards.decks.DeckCardLists;
import mage.client.chat.LocalCommands;
import mage.constants.ManaType;
import mage.constants.PlayerAction;
import mage.game.match.MatchOptions;
import mage.game.tournament.TournamentOptions;
import mage.players.PlayerType;
import mage.players.net.UserData;
import mage.remote.Connection;
import mage.remote.MageRemoteException;
import mage.remote.Session;
import mage.remote.SessionImpl;
import mage.view.*;
import java.util.*;
/**
* Created by IGOUDT on 15-9-2016.
*/
public final class SessionHandler {
private static Session session;
public static void startSession(MageFrame mageFrame) {
session = new SessionImpl(mageFrame);
}
public static void ping() {
session.ping();
}
public static Session getSession() {
return session;
}
public static boolean isConnected() {
return session.isConnected();
}
public static String getVersionInfo() {
return session.getVersionInfo();
}
public static boolean connect(Connection connection) {
return session.connect(connection);
}
public static boolean stopConnecting() {
return session.stopConnecting();
}
public static void disconnect(boolean showmessage) {
session.disconnect(showmessage);
}
public static void sendPlayerAction(PlayerAction playerAction, UUID gameId, Object relatedUserId) {
session.sendPlayerAction(playerAction, gameId, relatedUserId);
}
public static void quitTournament(UUID tournamentId) {
session.quitTournament(tournamentId);
}
public static void quitDraft(UUID tournamentId) {
session.quitDraft(tournamentId);
}
public static void quitMatch(UUID gameId) {
session.quitMatch(gameId);
}
public static void stopWatching(UUID gameId) {
session.stopWatching(gameId);
}
public static void removeTable(UUID roomId, UUID tableId) {
session.removeTable(roomId, tableId);
}
public static void stopReplay(UUID gameId) {
session.stopReplay(gameId);
}
public static void sendPlayerUUID(UUID gameId, UUID id) {
session.sendPlayerUUID(gameId, id);
}
public static void sendPlayerBoolean(UUID gameId, boolean b) {
session.sendPlayerBoolean(gameId, b);
}
public static PlayerType[] getPlayerTypes() {
return session.getPlayerTypes();
}
public static boolean joinTournamentTable(UUID roomId, UUID tableId, String text, PlayerType selectedItem, Integer integer, DeckCardLists deckCardLists, String s) {
return session.joinTournamentTable(roomId, tableId, text, selectedItem, integer, deckCardLists, s);
}
public static void sendPlayerInteger(UUID gameId, int data) {
session.sendPlayerInteger(gameId, data);
}
public static void sendPlayerString(UUID gameId, String data) {
session.sendPlayerString(gameId, data);
}
public static boolean sendFeedback(String title, String type, String message, String email) {
return session.sendFeedback(title, type, message, email);
}
public static void swapSeats(UUID roomId, UUID tableId, int row, int targetrow) {
session.swapSeats(roomId, tableId, row, targetrow);
}
public static boolean leaveTable(UUID roomId, UUID tableId) {
return session.leaveTable(roomId, tableId);
}
public static void updatePreferencesForServer(UserData userData) {
session.updatePreferencesForServer(userData);
}
public static boolean isTableOwner(UUID roomId, UUID tableId) {
return session.isTableOwner(roomId, tableId);
}
public static Optional<UUID> getTableChatId(UUID tableId) {
return session.getTableChatId(tableId);
}
public static boolean startTournament(UUID roomId, UUID tableId) {
return session.startTournament(roomId, tableId);
}
public static boolean startMatch(UUID roomId, UUID tableId) {
return session.startMatch(roomId, tableId);
}
public static Optional<UUID> getGameChatId(UUID gameId) {
return session.getGameChatId(gameId);
}
public static boolean joinGame(UUID gameId) {
return session.joinGame(gameId);
}
public static boolean startReplay(UUID gameId) {
return session.startReplay(gameId);
}
public static void watchTournamentTable(UUID tableId) {
session.watchTournamentTable(tableId);
}
public static boolean joinTournament(UUID tournamentId) {
return session.joinTournament(tournamentId);
}
public static Optional<UUID> getTournamentChatId(UUID tournamentId) {
return session.getTournamentChatId(tournamentId);
}
public static TournamentView getTournament(UUID tournamentId) {
try {
return session.getTournament(tournamentId);
} catch (MageRemoteException e) {
e.printStackTrace();
return null;
}
}
public static String getUserName() {
return session.getUserName();
}
public static boolean watchGame(UUID gameId) {
return session.watchGame(gameId);
}
public static void nextPlay(UUID gameId) {
session.nextPlay(gameId);
}
public static void previousPlay(UUID gameId) {
session.previousPlay(gameId);
}
public static void skipForward(UUID gameId, int i) {
session.skipForward(gameId, i);
}
public static boolean isTestMode() {
return session.isTestMode();
}
public static void cheat(UUID gameId, UUID playerId, DeckCardLists deckCardLists) {
session.cheat(gameId, playerId, deckCardLists);
}
public static String getSessionId() {
return session.getSessionId();
}
public static List<TournamentTypeView> getTournamentTypes() {
return session.getTournamentTypes();
}
public static boolean submitDeck(UUID tableId, DeckCardLists deckCardLists) {
return session.submitDeck(tableId, deckCardLists);
}
public static String[] getDeckTypes() {
return session.getDeckTypes();
}
public static String[] getDraftCubes() {
return session.getDraftCubes();
}
public static List<GameTypeView> getTournamentGameTypes() {
return session.getTournamentGameTypes();
}
public static TableView createTournamentTable(UUID roomId, TournamentOptions tOptions) {
return session.createTournamentTable(roomId, tOptions);
}
public static TableView createTable(UUID roomId, MatchOptions options) {
return session.createTable(roomId, options);
}
public static boolean joinTable(UUID roomId, UUID tableId, String playerName, PlayerType human, int skill, DeckCardLists deckCardLists, String text) {
return session.joinTable(roomId, tableId, playerName, human, skill, deckCardLists, text);
}
public static List<GameTypeView> getGameTypes() {
return session.getGameTypes();
}
public static boolean joinDraft(UUID draftId) {
return session.joinDraft(draftId);
}
public static DraftPickView sendCardPick(UUID draftId, UUID id, Set<UUID> cardsHidden) {
return session.sendCardPick(draftId, id, cardsHidden);
}
public static void sendCardMark(UUID draftId, UUID id) {
session.sendCardMark(draftId, id);
}
public static Optional<UUID> getRoomChatId(UUID roomId) {
return session.getRoomChatId(roomId);
}
public static Collection<RoomUsersView> getRoomUsers(UUID roomId) {
try {
return session.getRoomUsers(roomId);
} catch (MageRemoteException e) {
e.printStackTrace();
return Collections.emptyList();
}
}
public static Collection<MatchView> getFinishedMatches(UUID roomId) {
try {
return session.getFinishedMatches(roomId);
} catch (MageRemoteException e) {
e.printStackTrace();
return new ArrayList<>();
}
}
public static void replayGame(UUID id) {
session.replayGame(id);
}
public static void watchTable(UUID roomId, UUID tableId) {
session.watchTable(roomId, tableId);
}
public static Collection<TableView> getTables(UUID roomId) {
try {
return session.getTables(roomId);
} catch (MageRemoteException e) {
e.printStackTrace();
return new ArrayList<>();
}
}
public static List<String> getServerMessages() {
return session.getServerMessages();
}
public static boolean joinChat(UUID chatId) {
return session.joinChat(chatId);
}
public static boolean leaveChat(UUID chatId) {
return session.leaveChat(chatId);
}
public static boolean sendChatMessage(UUID chatId, String text) {
if (!LocalCommands.handleLocalCommands(chatId, text)) {
return session.sendChatMessage(chatId, text);
} else {
return false;
}
}
public static boolean sendPlayerManaType(UUID gameId, UUID playerId, ManaType data) {
return session.sendPlayerManaType(gameId, playerId, data);
}
public static Optional<TableView> getTable(UUID roomId, UUID tableId) {
return session.getTable(roomId, tableId);
}
public static void updateDeck(UUID tableId, DeckCardLists deckCardLists) {
session.updateDeck(tableId, deckCardLists);
}
public static boolean emailAuthToken(Connection connection) {
return session.emailAuthToken(connection);
}
public static boolean resetPassword(Connection connection) {
return session.resetPassword(connection);
}
public static boolean register(Connection connection) {
return session.register(connection);
}
}