added sendPlayerAction

This commit is contained in:
betasteward 2015-06-23 22:08:39 -04:00
parent 7135cffc01
commit 8aeadf1143
5 changed files with 65 additions and 56 deletions

View file

@ -13,6 +13,7 @@ import io.netty.handler.codec.serialization.ObjectEncoder;
import io.netty.handler.ssl.SslContext;
import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
import io.netty.handler.timeout.IdleStateHandler;
import java.io.Serializable;
import java.util.List;
import java.util.Set;
import java.util.UUID;
@ -23,7 +24,6 @@ import mage.constants.PlayerAction;
import mage.game.match.MatchOptions;
import mage.game.tournament.TournamentOptions;
import mage.interfaces.ServerState;
import mage.players.net.UserSkipPrioritySteps;
import mage.remote.Connection;
import mage.utils.MageVersion;
import mage.view.DraftPickView;
@ -34,11 +34,10 @@ import mage.view.UserDataView;
import mage.view.UserView;
import org.apache.log4j.Logger;
import org.mage.network.handlers.ExceptionHandler;
import org.mage.network.handlers.MessageHandler;
import org.mage.network.handlers.client.HeartbeatHandler;
import org.mage.network.handlers.PingMessageHandler;
import org.mage.network.handlers.client.ClientMessageHandler;
import org.mage.network.handlers.client.ClientRegisteredMessageHandler;
import org.mage.network.handlers.client.HeartbeatHandler;
import org.mage.network.interfaces.MageClient;
import org.mage.network.model.MessageType;
@ -279,8 +278,12 @@ public class Client {
}
}
public void sendPlayerAction(PlayerAction passPriorityAction, UUID gameId, Object data) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
public void sendPlayerAction(PlayerAction passPriorityAction, UUID gameId, Serializable data) {
try {
clientMessageHandler.sendPlayerAction(passPriorityAction, gameId, data);
} catch (Exception ex) {
logger.error("Error swaping seats", ex);
}
}
public TableView getTable(UUID roomId, UUID tableId) {

View file

@ -1,18 +1,15 @@
package org.mage.network.handlers.client;
import org.mage.network.model.SendPlayerManaTypeRequest;
import org.mage.network.model.SendPlayerIntegerRequest;
import org.mage.network.model.SendPlayerStringRequest;
import org.mage.network.model.SendPlayerUUIDRequest;
import org.mage.network.model.SendPlayerBooleanRequest;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import java.io.Serializable;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import mage.cards.decks.DeckCardLists;
import mage.constants.ManaType;
import mage.constants.PlayerAction;
import mage.game.match.MatchOptions;
import mage.view.RoomView;
import mage.view.TableView;
@ -28,7 +25,13 @@ import org.mage.network.model.JoinGameRequest;
import org.mage.network.model.JoinTableRequest;
import org.mage.network.model.LeaveChatRequest;
import org.mage.network.model.LeaveTableRequest;
import org.mage.network.model.PlayerActionRequest;
import org.mage.network.model.RemoveTableRequest;
import org.mage.network.model.SendPlayerBooleanRequest;
import org.mage.network.model.SendPlayerIntegerRequest;
import org.mage.network.model.SendPlayerManaTypeRequest;
import org.mage.network.model.SendPlayerStringRequest;
import org.mage.network.model.SendPlayerUUIDRequest;
import org.mage.network.model.ServerMessagesRequest;
import org.mage.network.model.StartMatchRequest;
import org.mage.network.model.SwapSeatRequest;
@ -181,4 +184,8 @@ public class ClientMessageHandler extends SimpleChannelInboundHandler<ClientMess
ctx.writeAndFlush(new SendPlayerManaTypeRequest(gameId, playerId, manaType)).addListener(WriteListener.getInstance());
}
public void sendPlayerAction(PlayerAction action, UUID gameId, Serializable data) {
ctx.writeAndFlush(new PlayerActionRequest(action, gameId, data)).addListener(WriteListener.getInstance());
}
}

View file

@ -1,9 +1,11 @@
package org.mage.network.interfaces;
import java.io.Serializable;
import java.util.List;
import java.util.UUID;
import mage.cards.decks.DeckCardLists;
import mage.constants.ManaType;
import mage.constants.PlayerAction;
import mage.game.match.MatchOptions;
import mage.interfaces.ServerState;
import mage.remote.Connection;
@ -45,6 +47,7 @@ public interface MageServer {
void sendPlayerManaType(UUID gameId, UUID playerId, String sessionId, ManaType data);
void sendPlayerBoolean(UUID gameId, String sessionId, Boolean data);
void sendPlayerInteger(UUID gameId, String sessionId, Integer data);
void sendPlayerAction(PlayerAction playerAction, UUID gameId, String sessionId, Serializable data);
void pingTime(long milliSeconds, String sessionId);

View file

@ -0,0 +1,30 @@
package org.mage.network.model;
import io.netty.channel.ChannelHandlerContext;
import java.io.Serializable;
import java.util.UUID;
import mage.constants.PlayerAction;
import org.mage.network.interfaces.MageServer;
/**
*
* @author BetaSteward
*/
public class PlayerActionRequest extends ServerRequest {
private final PlayerAction playerAction;
private final UUID gameId;
private final Serializable data;
public PlayerActionRequest(PlayerAction playerAction, UUID gameId, Serializable data) {
this.playerAction = playerAction;
this.gameId = gameId;
this.data = data;
}
@Override
public void handleMessage(MageServer server, ChannelHandlerContext ctx) {
server.sendPlayerAction(playerAction, gameId, ctx.channel().id().asLongText(), data);
}
}

View file

@ -28,88 +28,59 @@
package mage.server;
import io.netty.channel.ChannelId;
import java.io.File;
import java.io.FilenameFilter;
import java.io.Serializable;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ExecutorService;
import mage.MageException;
import mage.cards.decks.DeckCardLists;
import mage.cards.repository.CardInfo;
import mage.cards.repository.CardRepository;
import mage.cards.repository.CardScanner;
import mage.cards.repository.ExpansionInfo;
import mage.cards.repository.ExpansionRepository;
import mage.choices.Choice;
import mage.constants.ManaType;
import mage.constants.PlayerAction;
import mage.constants.TableState;
import mage.game.GameException;
import mage.game.Table;
import mage.game.match.MatchOptions;
import mage.game.match.MatchType;
import mage.game.tournament.TournamentOptions;
import mage.game.tournament.TournamentType;
import mage.interfaces.Action;
import mage.interfaces.ActionWithResult;
//import mage.interfaces.MageServer;
import org.mage.network.interfaces.MageServer;
import mage.interfaces.ServerState;
//import mage.interfaces.callback.ClientCallback;
import mage.remote.Connection;
import mage.remote.DisconnectReason;
import mage.remote.MageVersionException;
import mage.server.draft.CubeFactory;
import mage.server.draft.DraftManager;
import mage.server.game.DeckValidatorFactory;
import mage.server.game.GameFactory;
import mage.server.game.GameManager;
import mage.server.game.GamesRoom;
import mage.server.game.GamesRoomManager;
import mage.server.game.PlayerFactory;
import mage.server.game.ReplayManager;
import mage.server.services.LogKeys;
import mage.server.services.impl.FeedbackServiceImpl;
import mage.server.services.impl.LogServiceImpl;
import mage.server.tournament.TournamentFactory;
import mage.server.tournament.TournamentManager;
import mage.server.util.ConfigSettings;
import mage.server.util.PluginClassLoader;
import mage.server.util.ServerMessagesUtil;
import mage.server.util.SystemUtil;
import mage.server.util.ThreadExecutor;
import mage.server.util.config.GamePlugin;
import mage.server.util.config.Plugin;
import mage.utils.ActionWithBooleanResult;
import mage.utils.ActionWithNullNegativeResult;
import mage.utils.ActionWithTableViewResult;
import mage.utils.CompressUtil;
import mage.utils.MageVersion;
import mage.view.AbilityPickerView;
import mage.view.CardsView;
import mage.view.ChatMessage;
import mage.view.ChatMessage.MessageColor;
import mage.view.DraftPickView;
import mage.view.GameEndView;
import mage.view.GameView;
import mage.view.MatchView;
import mage.view.RoomUsersView;
import mage.view.RoomView;
import mage.view.TableView;
import mage.view.TournamentView;
import mage.view.UserDataView;
import mage.view.UserRequestMessage;
import mage.view.UserView;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.log4j.Logger;
import org.mage.network.Server;
import org.mage.network.interfaces.MageServer;
import org.mage.network.model.MessageType;
/**
@ -791,22 +762,17 @@ public class ServerMain implements MageServer {
// }
// });
// }
//
// @Override
// public void sendPlayerAction(final PlayerAction playerAction, final UUID gameId, final String sessionId, final Object data) throws MageException {
// execute("sendPlayerAction", sessionId, new Action() {
// @Override
// public void execute() {
// Session session = SessionManager.getInstance().getSession(sessionId);
// if (session == null) {
// logger.error("Session not found sessionId: "+ sessionId + " gameId:" + gameId);
// return;
// }
// GameManager.getInstance().sendPlayerAction(playerAction, gameId, session.getUserId(), data);
// }
// });
// }
//
@Override
public void sendPlayerAction(final PlayerAction playerAction, final UUID gameId, final String sessionId, final Serializable data) {
Session session = SessionManager.getInstance().getSession(sessionId);
if (session == null) {
logger.error("Session not found sessionId: "+ sessionId + " gameId:" + gameId);
return;
}
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() {