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