mirror of
https://github.com/2006-Scape/apollo.git
synced 2026-07-07 08:39:17 +00:00
Fix IdAssignment issue.
This commit is contained in:
@@ -148,14 +148,21 @@ public final class GameService extends Service {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers a player (may block!).
|
* Registers a {@link Player} (may block!).
|
||||||
*
|
*
|
||||||
* @param player The player.
|
* @param player The Player.
|
||||||
|
* @param session The {@link GameSession} of the Player.
|
||||||
|
* @param reconnecting The reconnecting flag.
|
||||||
* @return A {@link RegistrationStatus}.
|
* @return A {@link RegistrationStatus}.
|
||||||
*/
|
*/
|
||||||
public RegistrationStatus registerPlayer(Player player) {
|
public RegistrationStatus registerPlayer(Player player, GameSession session, boolean reconnecting) {
|
||||||
synchronized (this) {
|
synchronized (this) {
|
||||||
return World.getWorld().register(player);
|
RegistrationStatus status = World.getWorld().register(player);
|
||||||
|
if (status == RegistrationStatus.OK) {
|
||||||
|
player.setSession(session, reconnecting);
|
||||||
|
}
|
||||||
|
|
||||||
|
return status;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -85,37 +85,33 @@ public final class LoginSession extends Session {
|
|||||||
* @param response The response.
|
* @param response The response.
|
||||||
*/
|
*/
|
||||||
public void handlePlayerLoaderResponse(LoginRequest request, PlayerLoaderResponse response) {
|
public void handlePlayerLoaderResponse(LoginRequest request, PlayerLoaderResponse response) {
|
||||||
GameService gameService = serverContext.getService(GameService.class);
|
GameService service = serverContext.getService(GameService.class);
|
||||||
Channel channel = getChannel();
|
Channel channel = getChannel();
|
||||||
|
|
||||||
Optional<Player> responsePlayer = response.getPlayer();
|
Optional<Player> optional = response.getPlayer();
|
||||||
int status = response.getStatus(), rights = 0;
|
int status = response.getStatus(), rights = 0;
|
||||||
boolean flagged = false;
|
boolean flagged = false;
|
||||||
|
|
||||||
if (responsePlayer.isPresent()) {
|
if (optional.isPresent()) {
|
||||||
Player player = responsePlayer.get();
|
Player player = optional.get();
|
||||||
rights = player.getPrivilegeLevel().toInteger();
|
rights = player.getPrivilegeLevel().toInteger();
|
||||||
|
|
||||||
GameSession session = new GameSession(channel, serverContext, player);
|
GameSession session = new GameSession(channel, serverContext, player);
|
||||||
player.setSession(session, false /* TODO */);
|
RegistrationStatus registration = service.registerPlayer(player, session, request.isReconnecting());
|
||||||
|
|
||||||
RegistrationStatus registrationStatus = gameService.registerPlayer(player);
|
if (registration != RegistrationStatus.OK) {
|
||||||
|
optional = Optional.empty();
|
||||||
if (registrationStatus != RegistrationStatus.OK) {
|
|
||||||
responsePlayer = Optional.empty();
|
|
||||||
rights = 0;
|
rights = 0;
|
||||||
if (registrationStatus == RegistrationStatus.ALREADY_ONLINE) {
|
|
||||||
status = LoginConstants.STATUS_ACCOUNT_ONLINE;
|
status = (registration == RegistrationStatus.ALREADY_ONLINE) ? LoginConstants.STATUS_ACCOUNT_ONLINE
|
||||||
} else {
|
: LoginConstants.STATUS_SERVER_FULL;
|
||||||
status = LoginConstants.STATUS_SERVER_FULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ChannelFuture future = channel.writeAndFlush(new LoginResponse(status, rights, flagged));
|
ChannelFuture future = channel.writeAndFlush(new LoginResponse(status, rights, flagged));
|
||||||
destroy();
|
destroy();
|
||||||
|
|
||||||
if (responsePlayer.isPresent()) {
|
if (optional.isPresent()) {
|
||||||
IsaacRandomPair randomPair = request.getRandomPair();
|
IsaacRandomPair randomPair = request.getRandomPair();
|
||||||
Release release = serverContext.getRelease();
|
Release release = serverContext.getRelease();
|
||||||
|
|
||||||
@@ -129,7 +125,7 @@ public final class LoginSession extends Session {
|
|||||||
channel.pipeline().remove("loginDecoder");
|
channel.pipeline().remove("loginDecoder");
|
||||||
channel.pipeline().remove("loginEncoder");
|
channel.pipeline().remove("loginEncoder");
|
||||||
|
|
||||||
channelContext.attr(NetworkConstants.SESSION_KEY).set(responsePlayer.get().getSession());
|
channelContext.attr(NetworkConstants.SESSION_KEY).set(optional.get().getSession());
|
||||||
} else {
|
} else {
|
||||||
future.addListener(ChannelFutureListener.CLOSE);
|
future.addListener(ChannelFutureListener.CLOSE);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user