mirror of
https://github.com/magefree/mage.git
synced 2025-12-25 13:02:06 -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
|
|
@ -54,13 +54,8 @@ import mage.server.util.ServerMessagesUtil;
|
|||
import mage.server.util.ThreadExecutor;
|
||||
import mage.utils.CompressUtil;
|
||||
import mage.utils.MageVersion;
|
||||
import mage.view.*;
|
||||
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;
|
||||
|
||||
/**
|
||||
|
|
@ -83,7 +78,6 @@ public class MageServerImpl implements MageServer {
|
|||
|
||||
@Override
|
||||
public boolean registerClient(String userName, String sessionId, MageVersion version) throws MageException {
|
||||
|
||||
try {
|
||||
if (version.compareTo(Main.getVersion()) != 0)
|
||||
throw new MageVersionException(version, Main.getVersion());
|
||||
|
|
@ -95,7 +89,17 @@ public class MageServerImpl implements MageServer {
|
|||
}
|
||||
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
|
||||
public boolean registerAdmin(String password, String sessionId, MageVersion version) throws MageException {
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -32,6 +32,9 @@ import java.util.Date;
|
|||
import java.util.UUID;
|
||||
import mage.MageException;
|
||||
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.jboss.remoting.callback.AsynchInvokerCallbackHandler;
|
||||
import org.jboss.remoting.callback.Callback;
|
||||
|
|
@ -86,8 +89,32 @@ public class Session {
|
|||
public void registerAdmin() {
|
||||
this.isAdmin = true;
|
||||
User user = UserManager.getInstance().createUser("Admin", host);
|
||||
user.setUserData(new UserData(UserGroup.ADMIN, 0));
|
||||
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() {
|
||||
return sessionId;
|
||||
|
|
|
|||
|
|
@ -30,9 +30,11 @@ package mage.server;
|
|||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import mage.MageException;
|
||||
import mage.players.net.UserData;
|
||||
import mage.players.net.UserGroup;
|
||||
import mage.view.UserDataView;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.jboss.remoting.callback.InvokerCallbackHandler;
|
||||
|
||||
|
|
@ -80,6 +82,15 @@ public class SessionManager {
|
|||
}
|
||||
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) {
|
||||
Session session = sessions.get(sessionId);
|
||||
|
|
|
|||
|
|
@ -27,16 +27,15 @@
|
|||
*/
|
||||
package mage.server;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.UUID;
|
||||
import mage.cards.decks.Deck;
|
||||
import mage.game.Table;
|
||||
import mage.interfaces.callback.ClientCallback;
|
||||
import mage.players.net.UserData;
|
||||
import mage.server.draft.DraftSession;
|
||||
import mage.server.game.GameManager;
|
||||
import mage.server.game.GameSession;
|
||||
|
|
@ -66,6 +65,8 @@ public class User {
|
|||
private Map<UUID, TournamentSession> tournamentSessions = new HashMap<UUID, TournamentSession>();
|
||||
private Map<UUID, TournamentSession> constructing = new HashMap<UUID, TournamentSession>();
|
||||
private Map<UUID, Deck> sideboarding = new HashMap<UUID, Deck>();
|
||||
|
||||
private UserData userData;
|
||||
|
||||
public User(String userName, String host) {
|
||||
this.userName = userName;
|
||||
|
|
@ -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.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import mage.players.net.UserData;
|
||||
import mage.view.ChatMessage.MessageColor;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ package mage.server.game;
|
|||
import java.io.BufferedOutputStream;
|
||||
|
||||
import mage.MageException;
|
||||
import mage.server.TableManager;
|
||||
import mage.server.*;
|
||||
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
|
|
@ -59,9 +59,6 @@ import mage.game.events.PlayerQueryEvent;
|
|||
import mage.game.events.TableEvent;
|
||||
import mage.game.permanent.Permanent;
|
||||
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.Splitter;
|
||||
import mage.server.util.ThreadExecutor;
|
||||
|
|
@ -190,7 +187,9 @@ public class GameController implements GameCallback {
|
|||
UUID playerId = userPlayerMap.get(userId);
|
||||
GameSession gameSession = new GameSession(game, userId, playerId);
|
||||
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());
|
||||
ChatManager.getInstance().broadcast(chatId, "", game.getPlayer(playerId).getName() + " has joined the game", MessageColor.BLACK);
|
||||
checkStart();
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ import mage.cards.Cards;
|
|||
import mage.game.Game;
|
||||
import mage.interfaces.callback.ClientCallback;
|
||||
import mage.players.Player;
|
||||
import mage.players.net.UserData;
|
||||
import mage.server.User;
|
||||
import mage.server.UserManager;
|
||||
import mage.server.util.ConfigSettings;
|
||||
|
|
@ -60,6 +61,8 @@ public class GameSession extends GameWatcher {
|
|||
private ScheduledFuture<?> futureTimeout;
|
||||
protected static ScheduledExecutorService timeoutExecutor = ThreadExecutor.getInstance().getTimeoutExecutor();
|
||||
|
||||
private UserData userData;
|
||||
|
||||
public GameSession(Game game, UUID userId, UUID playerId) {
|
||||
super(userId, game);
|
||||
this.playerId = playerId;
|
||||
|
|
@ -196,6 +199,7 @@ public class GameSession extends GameWatcher {
|
|||
@Override
|
||||
public GameView getGameView() {
|
||||
Player player = game.getPlayer(playerId);
|
||||
player.setUserData(this.userData);
|
||||
GameView gameView = new GameView(game.getState(), game);
|
||||
gameView.setHand(new SimpleCardsView(player.getHand().getCards(game)));
|
||||
|
||||
|
|
@ -234,4 +238,7 @@ public class GameSession extends GameWatcher {
|
|||
game.quit(playerId);
|
||||
}
|
||||
|
||||
public void setUserData(UserData userData) {
|
||||
this.userData = userData;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue