mirror of
https://github.com/magefree/mage.git
synced 2025-12-22 11:32:00 -08:00
Sending user data. Sending avatar to server on connect.
This commit is contained in:
parent
32d4d854f4
commit
bf1a49dd0b
27 changed files with 202 additions and 38 deletions
|
|
@ -209,4 +209,14 @@ public class HoverButton extends JPanel implements MouseListener {
|
||||||
public void drawSet() {
|
public void drawSet() {
|
||||||
this.drawSet = true;
|
this.drawSet = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void update(String text, Image image, Image hover, Image selected, Image disabled, Rectangle size) {
|
||||||
|
this.image = image;
|
||||||
|
this.hoverImage = hover;
|
||||||
|
this.selectedImage = selected;
|
||||||
|
this.disabledImage = disabled;
|
||||||
|
this.imageSize = size;
|
||||||
|
this.text = text;
|
||||||
|
repaint();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -94,6 +94,8 @@ public class PlayerPanelExt extends javax.swing.JPanel {
|
||||||
|
|
||||||
private static final Dimension topCardDimension = new Dimension(40, 56);
|
private static final Dimension topCardDimension = new Dimension(40, 56);
|
||||||
|
|
||||||
|
private int avatarId = -1;
|
||||||
|
|
||||||
/** Creates new form PlayerPanel */
|
/** Creates new form PlayerPanel */
|
||||||
public PlayerPanelExt(boolean me) {
|
public PlayerPanelExt(boolean me) {
|
||||||
initComponents(me);
|
initComponents(me);
|
||||||
|
|
@ -115,6 +117,23 @@ public class PlayerPanelExt extends javax.swing.JPanel {
|
||||||
libraryLabel.setText(Integer.toString(player.getLibraryCount()));
|
libraryLabel.setText(Integer.toString(player.getLibraryCount()));
|
||||||
graveLabel.setText(Integer.toString(player.getGraveyard().size()));
|
graveLabel.setText(Integer.toString(player.getGraveyard().size()));
|
||||||
|
|
||||||
|
if (avatarId == -1) {
|
||||||
|
avatarId = player.getUserData().getAvatarId();
|
||||||
|
if (avatarId > 0) {
|
||||||
|
String path = "/avatars/" + String.valueOf(avatarId) + ".jpg";
|
||||||
|
if (avatarId == 64) {
|
||||||
|
path = "/avatars/i64.jpg";
|
||||||
|
} else if (avatarId >= 1000) {
|
||||||
|
avatarId = avatarId-1000;
|
||||||
|
path = "/avatars/special/" + String.valueOf(avatarId) + ".gif";
|
||||||
|
}
|
||||||
|
Image image = ImageHelper.getImageFromResources(path);
|
||||||
|
Rectangle r = new Rectangle(80, 80);
|
||||||
|
BufferedImage resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r);
|
||||||
|
this.avatar.update("player", resized, resized, resized, resized, r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.avatar.setText(player.getName());
|
this.avatar.setText(player.getName());
|
||||||
if (player.isActive()) {
|
if (player.isActive()) {
|
||||||
this.avatar.setBorder(greenBorder);
|
this.avatar.setBorder(greenBorder);
|
||||||
|
|
@ -175,12 +194,7 @@ public class PlayerPanelExt extends javax.swing.JPanel {
|
||||||
add(panelBackground);
|
add(panelBackground);
|
||||||
|
|
||||||
Rectangle r = new Rectangle(80, 80);
|
Rectangle r = new Rectangle(80, 80);
|
||||||
Random rand = new Random();
|
Image image = ImageHelper.getImageFromResources("/avatars/51.jpg");
|
||||||
Integer index = me ? 51 : rand.nextInt(AVATAR_COUNT) + 1;
|
|
||||||
if (index == 64 || index == 65) {
|
|
||||||
index += 2;
|
|
||||||
}
|
|
||||||
Image image = ImageHelper.getImageFromResources("/avatars/face" + index + ".jpg");
|
|
||||||
|
|
||||||
topCardPanel = Plugins.getInstance().getMageCard(new CardView(Sets.findCard("Forest")), bigCard, topCardDimension, gameId, true);
|
topCardPanel = Plugins.getInstance().getMageCard(new CardView(Sets.findCard("Forest")), bigCard, topCardDimension, gameId, true);
|
||||||
topCardPanel.setVisible(false);
|
topCardPanel.setVisible(false);
|
||||||
|
|
|
||||||
|
|
@ -36,12 +36,7 @@ import mage.cards.decks.DeckCardLists;
|
||||||
import mage.game.GameException;
|
import mage.game.GameException;
|
||||||
import mage.game.tournament.TournamentOptions;
|
import mage.game.tournament.TournamentOptions;
|
||||||
import mage.utils.MageVersion;
|
import mage.utils.MageVersion;
|
||||||
import mage.view.DraftPickView;
|
import mage.view.*;
|
||||||
import mage.view.TableView;
|
|
||||||
import mage.view.GameView;
|
|
||||||
import mage.view.MatchView;
|
|
||||||
import mage.view.TournamentView;
|
|
||||||
import mage.view.UserView;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
@ -53,6 +48,7 @@ public interface MageServer {
|
||||||
public boolean registerAdmin(String password, String sessionId, MageVersion version) throws MageException;
|
public boolean registerAdmin(String password, String sessionId, MageVersion version) throws MageException;
|
||||||
public void deregisterClient(String sessionId) throws MageException;
|
public void deregisterClient(String sessionId) throws MageException;
|
||||||
|
|
||||||
|
public boolean setUserData(String userName, String sessionId, UserDataView userDataView) throws MageException;
|
||||||
public ServerState getServerState() throws MageException;
|
public ServerState getServerState() throws MageException;
|
||||||
|
|
||||||
//table methods
|
//table methods
|
||||||
|
|
|
||||||
|
|
@ -47,13 +47,7 @@ import mage.interfaces.MageServer;
|
||||||
import mage.interfaces.ServerState;
|
import mage.interfaces.ServerState;
|
||||||
import mage.interfaces.callback.ClientCallback;
|
import mage.interfaces.callback.ClientCallback;
|
||||||
import mage.utils.CompressUtil;
|
import mage.utils.CompressUtil;
|
||||||
import mage.view.DraftPickView;
|
import mage.view.*;
|
||||||
import mage.view.GameTypeView;
|
|
||||||
import mage.view.MatchView;
|
|
||||||
import mage.view.TableView;
|
|
||||||
import mage.view.TournamentTypeView;
|
|
||||||
import mage.view.TournamentView;
|
|
||||||
import mage.view.UserView;
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.jboss.remoting.Client;
|
import org.jboss.remoting.Client;
|
||||||
import org.jboss.remoting.ConnectionListener;
|
import org.jboss.remoting.ConnectionListener;
|
||||||
|
|
@ -153,10 +147,14 @@ public class Session {
|
||||||
|
|
||||||
this.sessionId = callbackClient.getSessionId();
|
this.sessionId = callbackClient.getSessionId();
|
||||||
boolean registerResult = false;
|
boolean registerResult = false;
|
||||||
if (connection.getPassword() == null)
|
if (connection.getPassword() == null) {
|
||||||
|
UserDataView userDataView = new UserDataView(0);
|
||||||
|
// for backward compatibility. don't remove twice call - first one does nothing but for version checking
|
||||||
registerResult = server.registerClient(connection.getUsername(), sessionId, client.getVersion());
|
registerResult = server.registerClient(connection.getUsername(), sessionId, client.getVersion());
|
||||||
else
|
server.setUserData(connection.getUsername(), sessionId, userDataView);
|
||||||
|
} else {
|
||||||
registerResult = server.registerAdmin(connection.getPassword(), sessionId, client.getVersion());
|
registerResult = server.registerAdmin(connection.getPassword(), sessionId, client.getVersion());
|
||||||
|
}
|
||||||
if (registerResult) {
|
if (registerResult) {
|
||||||
sessionState = SessionState.CONNECTED;
|
sessionState = SessionState.CONNECTED;
|
||||||
serverState = server.getServerState();
|
serverState = server.getServerState();
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,7 @@ public class PlayerView implements Serializable {
|
||||||
private SimpleCardsView graveyard = new SimpleCardsView();
|
private SimpleCardsView graveyard = new SimpleCardsView();
|
||||||
private Map<UUID, PermanentView> battlefield = new HashMap<UUID, PermanentView>();
|
private Map<UUID, PermanentView> battlefield = new HashMap<UUID, PermanentView>();
|
||||||
private CardView topCard;
|
private CardView topCard;
|
||||||
|
private UserDataView userDataView;
|
||||||
|
|
||||||
public PlayerView(Player player, GameState state, Game game) {
|
public PlayerView(Player player, GameState state, Game game) {
|
||||||
this.playerId = player.getId();
|
this.playerId = player.getId();
|
||||||
|
|
@ -80,6 +81,11 @@ public class PlayerView implements Serializable {
|
||||||
}
|
}
|
||||||
this.topCard = player.isTopCardRevealed() && player.getLibrary().size() > 0 ?
|
this.topCard = player.isTopCardRevealed() && player.getLibrary().size() > 0 ?
|
||||||
new CardView(player.getLibrary().getFromTop(game)) : null;
|
new CardView(player.getLibrary().getFromTop(game)) : null;
|
||||||
|
if (player.getUserData() != null) {
|
||||||
|
this.userDataView = new UserDataView(player.getUserData());
|
||||||
|
} else {
|
||||||
|
this.userDataView = new UserDataView(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean showInBattlefield(Permanent permanent, GameState state) {
|
private boolean showInBattlefield(Permanent permanent, GameState state) {
|
||||||
|
|
@ -143,4 +149,8 @@ public class PlayerView implements Serializable {
|
||||||
public CardView getTopCard() {
|
public CardView getTopCard() {
|
||||||
return this.topCard;
|
return this.topCard;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public UserDataView getUserData() {
|
||||||
|
return this.userDataView;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -83,6 +83,8 @@ import mage.game.tournament.Tournament;
|
||||||
import mage.player.ai.utils.RateCard;
|
import mage.player.ai.utils.RateCard;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
import mage.players.PlayerImpl;
|
import mage.players.PlayerImpl;
|
||||||
|
import mage.players.net.UserData;
|
||||||
|
import mage.players.net.UserGroup;
|
||||||
import mage.sets.Sets;
|
import mage.sets.Sets;
|
||||||
import mage.target.Target;
|
import mage.target.Target;
|
||||||
import mage.target.TargetAmount;
|
import mage.target.TargetAmount;
|
||||||
|
|
@ -113,6 +115,7 @@ public class ComputerPlayer<T extends ComputerPlayer<T>> extends PlayerImpl<T> i
|
||||||
public ComputerPlayer(String name, RangeOfInfluence range) {
|
public ComputerPlayer(String name, RangeOfInfluence range) {
|
||||||
super(name, range);
|
super(name, range);
|
||||||
human = false;
|
human = false;
|
||||||
|
userData = new UserData(UserGroup.COMPUTER, 64);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected ComputerPlayer(UUID id) {
|
protected ComputerPlayer(UUID id) {
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -54,13 +54,8 @@ import mage.server.util.ServerMessagesUtil;
|
||||||
import mage.server.util.ThreadExecutor;
|
import mage.server.util.ThreadExecutor;
|
||||||
import mage.utils.CompressUtil;
|
import mage.utils.CompressUtil;
|
||||||
import mage.utils.MageVersion;
|
import mage.utils.MageVersion;
|
||||||
|
import mage.view.*;
|
||||||
import mage.view.ChatMessage.MessageColor;
|
import mage.view.ChatMessage.MessageColor;
|
||||||
import mage.view.DraftPickView;
|
|
||||||
import mage.view.GameView;
|
|
||||||
import mage.view.MatchView;
|
|
||||||
import mage.view.TableView;
|
|
||||||
import mage.view.TournamentView;
|
|
||||||
import mage.view.UserView;
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -83,7 +78,6 @@ public class MageServerImpl implements MageServer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean registerClient(String userName, String sessionId, MageVersion version) throws MageException {
|
public boolean registerClient(String userName, String sessionId, MageVersion version) throws MageException {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (version.compareTo(Main.getVersion()) != 0)
|
if (version.compareTo(Main.getVersion()) != 0)
|
||||||
throw new MageVersionException(version, Main.getVersion());
|
throw new MageVersionException(version, Main.getVersion());
|
||||||
|
|
@ -96,6 +90,16 @@ public class MageServerImpl implements MageServer {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean setUserData(String userName, String sessionId, UserDataView userDataView) throws MageException {
|
||||||
|
try {
|
||||||
|
return SessionManager.getInstance().setUserData(userName, sessionId, userDataView);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
handleException(ex);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean registerAdmin(String password, String sessionId, MageVersion version) throws MageException {
|
public boolean registerAdmin(String password, String sessionId, MageVersion version) throws MageException {
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,9 @@ import java.util.Date;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.MageException;
|
import mage.MageException;
|
||||||
import mage.interfaces.callback.ClientCallback;
|
import mage.interfaces.callback.ClientCallback;
|
||||||
|
import mage.players.net.UserData;
|
||||||
|
import mage.players.net.UserGroup;
|
||||||
|
import mage.view.UserDataView;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.jboss.remoting.callback.AsynchInvokerCallbackHandler;
|
import org.jboss.remoting.callback.AsynchInvokerCallbackHandler;
|
||||||
import org.jboss.remoting.callback.Callback;
|
import org.jboss.remoting.callback.Callback;
|
||||||
|
|
@ -86,9 +89,33 @@ public class Session {
|
||||||
public void registerAdmin() {
|
public void registerAdmin() {
|
||||||
this.isAdmin = true;
|
this.isAdmin = true;
|
||||||
User user = UserManager.getInstance().createUser("Admin", host);
|
User user = UserManager.getInstance().createUser("Admin", host);
|
||||||
|
user.setUserData(new UserData(UserGroup.ADMIN, 0));
|
||||||
this.userId = user.getId();
|
this.userId = user.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean setUserData(String userName, UserDataView userDataView) {
|
||||||
|
User user = UserManager.getInstance().findUser(userName);
|
||||||
|
if (user != null) {
|
||||||
|
UserData userData = new UserData(UserGroup.PLAYER, userDataView.getAvatarId());
|
||||||
|
updateAvatar(userName, userData);
|
||||||
|
user.setUserData(userData);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateAvatar(String userName, UserData userData) {
|
||||||
|
//TODO: move to separate class
|
||||||
|
//TODO: add for checking for private key
|
||||||
|
if (userName.equals("nantuko")) {
|
||||||
|
userData.setAvatarId(1000);
|
||||||
|
} else if (userName.equals("i_no_k")) {
|
||||||
|
userData.setAvatarId(1002);
|
||||||
|
} else if (userName.equals("Askael")) {
|
||||||
|
userData.setAvatarId(1003);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public String getId() {
|
public String getId() {
|
||||||
return sessionId;
|
return sessionId;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,9 +30,11 @@ package mage.server;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import mage.MageException;
|
import mage.MageException;
|
||||||
|
import mage.players.net.UserData;
|
||||||
|
import mage.players.net.UserGroup;
|
||||||
|
import mage.view.UserDataView;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.jboss.remoting.callback.InvokerCallbackHandler;
|
import org.jboss.remoting.callback.InvokerCallbackHandler;
|
||||||
|
|
||||||
|
|
@ -81,6 +83,15 @@ public class SessionManager {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean setUserData(String userName, String sessionId, UserDataView userDataView) throws MageException {
|
||||||
|
Session session = sessions.get(sessionId);
|
||||||
|
if (session != null) {
|
||||||
|
session.setUserData(userName, userDataView);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public synchronized void disconnect(String sessionId, boolean voluntary) {
|
public synchronized void disconnect(String sessionId, boolean voluntary) {
|
||||||
Session session = sessions.get(sessionId);
|
Session session = sessions.get(sessionId);
|
||||||
if (session != null) {
|
if (session != null) {
|
||||||
|
|
|
||||||
|
|
@ -27,16 +27,15 @@
|
||||||
*/
|
*/
|
||||||
package mage.server;
|
package mage.server;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.cards.decks.Deck;
|
import mage.cards.decks.Deck;
|
||||||
import mage.game.Table;
|
import mage.game.Table;
|
||||||
import mage.interfaces.callback.ClientCallback;
|
import mage.interfaces.callback.ClientCallback;
|
||||||
|
import mage.players.net.UserData;
|
||||||
import mage.server.draft.DraftSession;
|
import mage.server.draft.DraftSession;
|
||||||
import mage.server.game.GameManager;
|
import mage.server.game.GameManager;
|
||||||
import mage.server.game.GameSession;
|
import mage.server.game.GameSession;
|
||||||
|
|
@ -67,6 +66,8 @@ public class User {
|
||||||
private Map<UUID, TournamentSession> constructing = new HashMap<UUID, TournamentSession>();
|
private Map<UUID, TournamentSession> constructing = new HashMap<UUID, TournamentSession>();
|
||||||
private Map<UUID, Deck> sideboarding = new HashMap<UUID, Deck>();
|
private Map<UUID, Deck> sideboarding = new HashMap<UUID, Deck>();
|
||||||
|
|
||||||
|
private UserData userData;
|
||||||
|
|
||||||
public User(String userName, String host) {
|
public User(String userName, String host) {
|
||||||
this.userName = userName;
|
this.userName = userName;
|
||||||
this.host = host;
|
this.host = host;
|
||||||
|
|
@ -263,4 +264,12 @@ public class User {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setUserData(UserData userData) {
|
||||||
|
this.userData = userData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UserData getUserData() {
|
||||||
|
return this.userData;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,12 +29,13 @@ package mage.server;
|
||||||
|
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import mage.players.net.UserData;
|
||||||
import mage.view.ChatMessage.MessageColor;
|
import mage.view.ChatMessage.MessageColor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ package mage.server.game;
|
||||||
import java.io.BufferedOutputStream;
|
import java.io.BufferedOutputStream;
|
||||||
|
|
||||||
import mage.MageException;
|
import mage.MageException;
|
||||||
import mage.server.TableManager;
|
import mage.server.*;
|
||||||
|
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
@ -59,9 +59,6 @@ import mage.game.events.PlayerQueryEvent;
|
||||||
import mage.game.events.TableEvent;
|
import mage.game.events.TableEvent;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
import mage.server.ChatManager;
|
|
||||||
import mage.server.Main;
|
|
||||||
import mage.server.UserManager;
|
|
||||||
import mage.server.util.SystemUtil;
|
import mage.server.util.SystemUtil;
|
||||||
import mage.server.util.Splitter;
|
import mage.server.util.Splitter;
|
||||||
import mage.server.util.ThreadExecutor;
|
import mage.server.util.ThreadExecutor;
|
||||||
|
|
@ -190,7 +187,9 @@ public class GameController implements GameCallback {
|
||||||
UUID playerId = userPlayerMap.get(userId);
|
UUID playerId = userPlayerMap.get(userId);
|
||||||
GameSession gameSession = new GameSession(game, userId, playerId);
|
GameSession gameSession = new GameSession(game, userId, playerId);
|
||||||
gameSessions.put(playerId, gameSession);
|
gameSessions.put(playerId, gameSession);
|
||||||
UserManager.getInstance().getUser(userId).addGame(playerId, gameSession);
|
User user = UserManager.getInstance().getUser(userId);
|
||||||
|
gameSession.setUserData(user.getUserData());
|
||||||
|
user.addGame(playerId, gameSession);
|
||||||
logger.info("player " + playerId + " has joined game " + game.getId());
|
logger.info("player " + playerId + " has joined game " + game.getId());
|
||||||
ChatManager.getInstance().broadcast(chatId, "", game.getPlayer(playerId).getName() + " has joined the game", MessageColor.BLACK);
|
ChatManager.getInstance().broadcast(chatId, "", game.getPlayer(playerId).getName() + " has joined the game", MessageColor.BLACK);
|
||||||
checkStart();
|
checkStart();
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ import mage.cards.Cards;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.interfaces.callback.ClientCallback;
|
import mage.interfaces.callback.ClientCallback;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
|
import mage.players.net.UserData;
|
||||||
import mage.server.User;
|
import mage.server.User;
|
||||||
import mage.server.UserManager;
|
import mage.server.UserManager;
|
||||||
import mage.server.util.ConfigSettings;
|
import mage.server.util.ConfigSettings;
|
||||||
|
|
@ -60,6 +61,8 @@ public class GameSession extends GameWatcher {
|
||||||
private ScheduledFuture<?> futureTimeout;
|
private ScheduledFuture<?> futureTimeout;
|
||||||
protected static ScheduledExecutorService timeoutExecutor = ThreadExecutor.getInstance().getTimeoutExecutor();
|
protected static ScheduledExecutorService timeoutExecutor = ThreadExecutor.getInstance().getTimeoutExecutor();
|
||||||
|
|
||||||
|
private UserData userData;
|
||||||
|
|
||||||
public GameSession(Game game, UUID userId, UUID playerId) {
|
public GameSession(Game game, UUID userId, UUID playerId) {
|
||||||
super(userId, game);
|
super(userId, game);
|
||||||
this.playerId = playerId;
|
this.playerId = playerId;
|
||||||
|
|
@ -196,6 +199,7 @@ public class GameSession extends GameWatcher {
|
||||||
@Override
|
@Override
|
||||||
public GameView getGameView() {
|
public GameView getGameView() {
|
||||||
Player player = game.getPlayer(playerId);
|
Player player = game.getPlayer(playerId);
|
||||||
|
player.setUserData(this.userData);
|
||||||
GameView gameView = new GameView(game.getState(), game);
|
GameView gameView = new GameView(game.getState(), game);
|
||||||
gameView.setHand(new SimpleCardsView(player.getHand().getCards(game)));
|
gameView.setHand(new SimpleCardsView(player.getHand().getCards(game)));
|
||||||
|
|
||||||
|
|
@ -234,4 +238,7 @@ public class GameSession extends GameWatcher {
|
||||||
game.quit(playerId);
|
game.quit(playerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setUserData(UserData userData) {
|
||||||
|
this.userData = userData;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -61,11 +61,13 @@ import mage.game.draft.Draft;
|
||||||
import mage.game.match.Match;
|
import mage.game.match.Match;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
import mage.game.tournament.Tournament;
|
import mage.game.tournament.Tournament;
|
||||||
|
import mage.players.net.UserData;
|
||||||
import mage.target.Target;
|
import mage.target.Target;
|
||||||
import mage.target.TargetAmount;
|
import mage.target.TargetAmount;
|
||||||
import mage.target.TargetCard;
|
import mage.target.TargetCard;
|
||||||
import mage.target.common.TargetCardInLibrary;
|
import mage.target.common.TargetCardInLibrary;
|
||||||
import mage.util.Copyable;
|
import mage.util.Copyable;
|
||||||
|
import org.w3c.dom.UserDataHandler;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
@ -103,6 +105,8 @@ public interface Player extends MageItem, Copyable<Player> {
|
||||||
public Set<UUID> getInRange();
|
public Set<UUID> getInRange();
|
||||||
public boolean isTopCardRevealed();
|
public boolean isTopCardRevealed();
|
||||||
public void setTopCardRevealed(boolean topCardRevealed);
|
public void setTopCardRevealed(boolean topCardRevealed);
|
||||||
|
public UserData getUserData();
|
||||||
|
public void setUserData(UserData userData);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a set of players which turns under you control.
|
* Returns a set of players which turns under you control.
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,7 @@ import mage.game.events.DamagedPlayerEvent;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
import mage.game.events.GameEvent;
|
import mage.game.events.GameEvent;
|
||||||
import mage.game.stack.StackAbility;
|
import mage.game.stack.StackAbility;
|
||||||
|
import mage.players.net.UserData;
|
||||||
import mage.target.common.TargetCardInLibrary;
|
import mage.target.common.TargetCardInLibrary;
|
||||||
import mage.target.common.TargetDiscard;
|
import mage.target.common.TargetDiscard;
|
||||||
import mage.watchers.Watcher;
|
import mage.watchers.Watcher;
|
||||||
|
|
@ -103,8 +104,11 @@ public abstract class PlayerImpl<T extends PlayerImpl<T>> implements Player, Ser
|
||||||
protected boolean isGameUnderControl = true;
|
protected boolean isGameUnderControl = true;
|
||||||
protected UUID turnController;
|
protected UUID turnController;
|
||||||
protected Set<UUID> playersUnderYourControl = new HashSet<UUID>();
|
protected Set<UUID> playersUnderYourControl = new HashSet<UUID>();
|
||||||
|
|
||||||
protected boolean topCardRevealed = false;
|
protected boolean topCardRevealed = false;
|
||||||
|
|
||||||
|
protected UserData userData;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public abstract T copy();
|
public abstract T copy();
|
||||||
|
|
||||||
|
|
@ -149,6 +153,7 @@ public abstract class PlayerImpl<T extends PlayerImpl<T>> implements Player, Ser
|
||||||
for (UUID id: player.inRange) {
|
for (UUID id: player.inRange) {
|
||||||
this.inRange.add(id);
|
this.inRange.add(id);
|
||||||
}
|
}
|
||||||
|
this.userData = player.userData;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -1153,4 +1158,14 @@ public abstract class PlayerImpl<T extends PlayerImpl<T>> implements Player, Ser
|
||||||
public void setTopCardRevealed(boolean topCardRevealed) {
|
public void setTopCardRevealed(boolean topCardRevealed) {
|
||||||
this.topCardRevealed = topCardRevealed;
|
this.topCardRevealed = topCardRevealed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public UserData getUserData() {
|
||||||
|
return this.userData;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setUserData(UserData userData) {
|
||||||
|
this.userData = userData;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
34
Mage/src/mage/players/net/UserData.java
Normal file
34
Mage/src/mage/players/net/UserData.java
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
package mage.players.net;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* User data that is passed during connection to the server.
|
||||||
|
*
|
||||||
|
* @author ayrat
|
||||||
|
*/
|
||||||
|
public class UserData {
|
||||||
|
|
||||||
|
protected int groupId;
|
||||||
|
protected int avatarId;
|
||||||
|
protected String privateKey;
|
||||||
|
|
||||||
|
public UserData(UserGroup userGroup, int avatarId) {
|
||||||
|
this.groupId = userGroup.getGroupId();
|
||||||
|
this.avatarId = avatarId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGroupId(int groupId) {
|
||||||
|
this.groupId = groupId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getGroupId() {
|
||||||
|
return groupId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getAvatarId() {
|
||||||
|
return avatarId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAvatarId(int avatarId) {
|
||||||
|
this.avatarId = avatarId;
|
||||||
|
}
|
||||||
|
}
|
||||||
22
Mage/src/mage/players/net/UserGroup.java
Normal file
22
Mage/src/mage/players/net/UserGroup.java
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
package mage.players.net;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author ayrat
|
||||||
|
*/
|
||||||
|
public enum UserGroup {
|
||||||
|
|
||||||
|
COMPUTER(0),
|
||||||
|
PLAYER(1),
|
||||||
|
MAGE(3),
|
||||||
|
ADMIN(7);
|
||||||
|
|
||||||
|
private int groupId;
|
||||||
|
|
||||||
|
UserGroup(int groupId) {
|
||||||
|
this.groupId = groupId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getGroupId() {
|
||||||
|
return this.groupId;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue