Set in transition on log in, now able to enter the game

The state is not set properly on logout though, so once you log out you can't log back in
This commit is contained in:
P0nk
2024-09-29 08:22:26 +02:00
parent 0bb14e415e
commit da4a467453
13 changed files with 88 additions and 38 deletions

View File

@@ -34,9 +34,11 @@ public class TransitionService {
private static final Logger log = LoggerFactory.getLogger(TransitionService.class);
private final Server server = Server.getInstance();
private final CharacterSaver chrSaver;
private final AccountService accountService;
public TransitionService(CharacterSaver characterSaver) {
public TransitionService(CharacterSaver characterSaver, AccountService accountService) {
this.chrSaver = characterSaver;
this.accountService = accountService;
}
public void changeChannel(Client c, int channel) {
@@ -88,7 +90,7 @@ public class TransitionService {
chrSaver.save(chr);
chr.setSessionTransitionState();
setInTransition(chr.getClient(), chr.getId());
try {
c.sendPacket(PacketCreator.getChannelChange(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1])));
} catch (IOException e) {
@@ -96,6 +98,11 @@ public class TransitionService {
}
}
public void setInTransition(Client c, int chrId) {
accountService.setInTransition(c);
Server.getInstance().setCharacteridInTransition(c, chrId);
}
public void disconnect(final Client c, final boolean shutdown) {
if (c.tryDisconnect()) {
ThreadManager.getInstance().newTask(() -> disconnectInternal(c, shutdown));