replace with log in/out flags
This commit is contained in:
@@ -867,9 +867,12 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber
|
||||
{
|
||||
_logger.LogInformation("Starting DalamudUtilService");
|
||||
_framework.Update += FrameworkOnUpdate;
|
||||
if (IsLoggedIn)
|
||||
_clientState.Login += OnClientLogin;
|
||||
_clientState.Logout += OnClientLogout;
|
||||
|
||||
if (_clientState.IsLoggedIn)
|
||||
{
|
||||
_classJobId = _objectTable.LocalPlayer!.ClassJob.RowId;
|
||||
OnClientLogin();
|
||||
}
|
||||
|
||||
_logger.LogInformation("Started DalamudUtilService");
|
||||
@@ -882,6 +885,8 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber
|
||||
|
||||
Mediator.UnsubscribeAll(this);
|
||||
_framework.Update -= FrameworkOnUpdate;
|
||||
_clientState.Login -= OnClientLogin;
|
||||
_clientState.Logout -= OnClientLogout;
|
||||
if (_FocusPairIdent.HasValue)
|
||||
{
|
||||
if (_framework.IsInFrameworkUpdateThread)
|
||||
@@ -896,6 +901,45 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
private void OnClientLogin()
|
||||
{
|
||||
if (IsLoggedIn)
|
||||
return;
|
||||
|
||||
_ = RunOnFrameworkThread(() =>
|
||||
{
|
||||
if (IsLoggedIn)
|
||||
return;
|
||||
|
||||
var localPlayer = _objectTable.LocalPlayer;
|
||||
IsLoggedIn = true;
|
||||
_lastZone = _clientState.TerritoryType;
|
||||
if (localPlayer != null)
|
||||
{
|
||||
_lastWorldId = (ushort)localPlayer.CurrentWorld.RowId;
|
||||
_classJobId = localPlayer.ClassJob.RowId;
|
||||
}
|
||||
|
||||
_cid = RebuildCID();
|
||||
Mediator.Publish(new DalamudLoginMessage());
|
||||
});
|
||||
}
|
||||
|
||||
private void OnClientLogout(int type, int code)
|
||||
{
|
||||
if (!IsLoggedIn)
|
||||
return;
|
||||
_ = RunOnFrameworkThread(() =>
|
||||
{
|
||||
if (!IsLoggedIn)
|
||||
return;
|
||||
|
||||
IsLoggedIn = false;
|
||||
_lastWorldId = 0;
|
||||
Mediator.Publish(new DalamudLogoutMessage());
|
||||
});
|
||||
}
|
||||
|
||||
public async Task WaitWhileCharacterIsDrawing(ILogger logger, GameObjectHandler handler, Guid redrawId, int timeOut = 5000, CancellationToken? ct = null)
|
||||
{
|
||||
if (!_clientState.IsLoggedIn) return;
|
||||
@@ -1040,6 +1084,7 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber
|
||||
}
|
||||
|
||||
bool isNormalFrameworkUpdate = DateTime.UtcNow < _delayedFrameworkUpdateCheck.AddSeconds(1);
|
||||
var clientLoggedIn = _clientState.IsLoggedIn;
|
||||
|
||||
_performanceCollector.LogPerformance(this, $"FrameworkOnUpdateInternal+{(isNormalFrameworkUpdate ? "Regular" : "Delayed")}", () =>
|
||||
{
|
||||
@@ -1047,23 +1092,6 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber
|
||||
|
||||
if (!isNormalFrameworkUpdate)
|
||||
{
|
||||
if (localPlayer != null && !IsLoggedIn)
|
||||
{
|
||||
_logger.LogDebug("Logged in");
|
||||
IsLoggedIn = true;
|
||||
_lastZone = _clientState.TerritoryType;
|
||||
_lastWorldId = (ushort)localPlayer.CurrentWorld.RowId;
|
||||
_cid = RebuildCID();
|
||||
Mediator.Publish(new DalamudLoginMessage());
|
||||
}
|
||||
else if (localPlayer == null && IsLoggedIn)
|
||||
{
|
||||
_logger.LogDebug("Logged out");
|
||||
IsLoggedIn = false;
|
||||
_lastWorldId = 0;
|
||||
Mediator.Publish(new DalamudLogoutMessage());
|
||||
}
|
||||
|
||||
if (_gameConfig != null
|
||||
&& _gameConfig.TryGet(Dalamud.Game.Config.SystemConfigOption.LodType_DX11, out bool lodEnabled))
|
||||
{
|
||||
@@ -1078,7 +1106,7 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber
|
||||
_delayedFrameworkUpdateCheck = DateTime.UtcNow;
|
||||
}
|
||||
|
||||
if (!_clientState.IsLoggedIn || localPlayer == null)
|
||||
if (!clientLoggedIn)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user