mirror of
https://github.com/ProjectSWGCore/Holocore.git
synced 2026-10-02 17:12:57 -04:00
Fixed CORE-221 'Fixed LD title applied after relogging.'
This commit is contained in:
@@ -41,6 +41,7 @@ import intents.PlayerEventIntent;
|
||||
import intents.network.CloseConnectionIntent;
|
||||
import intents.network.ForceDisconnectIntent;
|
||||
import intents.network.GalacticPacketIntent;
|
||||
import intents.player.ZonePlayerSwapIntent;
|
||||
import resources.control.Intent;
|
||||
import resources.control.Service;
|
||||
import resources.objects.creature.CreatureObject;
|
||||
@@ -104,6 +105,7 @@ public class ConnectionService extends Service {
|
||||
registerForIntent(PlayerEventIntent.TYPE);
|
||||
registerForIntent(GalacticPacketIntent.TYPE);
|
||||
registerForIntent(ForceDisconnectIntent.TYPE);
|
||||
registerForIntent(ZonePlayerSwapIntent.TYPE);
|
||||
return super.initialize();
|
||||
}
|
||||
|
||||
@@ -133,6 +135,8 @@ public class ConnectionService extends Service {
|
||||
onGalacticPacketIntent((GalacticPacketIntent) i);
|
||||
else if (i instanceof ForceDisconnectIntent)
|
||||
onForceDisconnectIntent((ForceDisconnectIntent) i);
|
||||
else if (i instanceof ZonePlayerSwapIntent)
|
||||
onZonePlayerSwapIntent((ZonePlayerSwapIntent) i);
|
||||
}
|
||||
|
||||
private void onPlayerEventIntent(PlayerEventIntent pei) {
|
||||
@@ -174,6 +178,19 @@ public class ConnectionService extends Service {
|
||||
disappear(fdi.getPlayer(), fdi.getDisconnectReason());
|
||||
}
|
||||
|
||||
private void onZonePlayerSwapIntent(ZonePlayerSwapIntent zpsi) {
|
||||
Player before = zpsi.getBeforePlayer();
|
||||
Player after = zpsi.getAfterPlayer();
|
||||
CreatureObject creature = zpsi.getCreature();
|
||||
removeFromLists(before);
|
||||
updatePlayTime(before);
|
||||
creature.getPlayerObject().clearFlagBitmask(PlayerFlags.LD);
|
||||
new PlayerEventIntent(before, before.getGalaxyName(), PlayerEvent.PE_LOGGED_OUT).broadcast();
|
||||
before.setPlayerState(PlayerState.DISCONNECTED);
|
||||
before.setCreatureObject(null);
|
||||
creature.setOwner(after);
|
||||
}
|
||||
|
||||
private void removeFromLists(Player player) {
|
||||
synchronized (zonedInPlayers) {
|
||||
Iterator <Player> zonedIterator = zonedInPlayers.iterator();
|
||||
@@ -215,12 +232,12 @@ public class ConnectionService extends Service {
|
||||
if (p.getPlayerObject() != null)
|
||||
p.getPlayerObject().setFlagBitmask(PlayerFlags.LD);
|
||||
p.setPlayerState(PlayerState.LOGGED_OUT);
|
||||
new PlayerEventIntent(p, p.getGalaxyName(), PlayerEvent.PE_LOGGED_OUT).broadcast();
|
||||
if (addToDisappear) {
|
||||
synchronized (disappearPlayers) {
|
||||
disappearPlayers.add(new DisappearPlayer(System.nanoTime(), p));
|
||||
}
|
||||
updateService.schedule(disappearRunnable, (long) DISAPPEAR_THRESHOLD, TimeUnit.MILLISECONDS);
|
||||
new PlayerEventIntent(p, p.getGalaxyName(), PlayerEvent.PE_LOGGED_OUT).broadcast();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -36,14 +36,13 @@ import java.util.Map;
|
||||
|
||||
import network.packets.Packet;
|
||||
import network.packets.soe.SessionRequest;
|
||||
import network.packets.soe.Disconnect.DisconnectReason;
|
||||
import network.packets.swg.login.ClientIdMsg;
|
||||
import network.packets.swg.zone.insertion.SelectCharacter;
|
||||
import intents.NotifyPlayersPacketIntent;
|
||||
import intents.PlayerEventIntent;
|
||||
import intents.network.ForceDisconnectIntent;
|
||||
import intents.network.GalacticPacketIntent;
|
||||
import intents.network.InboundPacketIntent;
|
||||
import intents.player.ZonePlayerSwapIntent;
|
||||
import resources.Terrain;
|
||||
import resources.control.Intent;
|
||||
import resources.control.Manager;
|
||||
@@ -182,7 +181,7 @@ public class PlayerManager extends Manager {
|
||||
while (it.hasNext()) {
|
||||
Player p = it.next();
|
||||
if (p != player && p.getCreatureObject() != null && p.getCreatureObject().getObjectId() == charId) {
|
||||
new ForceDisconnectIntent(p, DisconnectReason.NEW_CONNECTION_ATTEMPT, true).broadcast();
|
||||
new ZonePlayerSwapIntent(p, player, p.getCreatureObject()).broadcast();
|
||||
it.remove();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user