|
|
|
|
@@ -39,6 +39,7 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber
|
|
|
|
|
private readonly IObjectTable _objectTable;
|
|
|
|
|
private readonly PerformanceCollectorService _performanceCollector;
|
|
|
|
|
private readonly LightlessConfigService _configService;
|
|
|
|
|
private readonly PlayerPerformanceConfigService _playerPerformanceConfigService;
|
|
|
|
|
private uint? _classJobId = 0;
|
|
|
|
|
private DateTime _delayedFrameworkUpdateCheck = DateTime.UtcNow;
|
|
|
|
|
private string _lastGlobalBlockPlayer = string.Empty;
|
|
|
|
|
@@ -52,7 +53,7 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber
|
|
|
|
|
public DalamudUtilService(ILogger<DalamudUtilService> logger, IClientState clientState, IObjectTable objectTable, IFramework framework,
|
|
|
|
|
IGameGui gameGui, ICondition condition, IDataManager gameData, ITargetManager targetManager, IGameConfig gameConfig,
|
|
|
|
|
BlockedCharacterHandler blockedCharacterHandler, LightlessMediator mediator, PerformanceCollectorService performanceCollector,
|
|
|
|
|
LightlessConfigService configService)
|
|
|
|
|
LightlessConfigService configService, PlayerPerformanceConfigService playerPerformanceConfigService)
|
|
|
|
|
{
|
|
|
|
|
_logger = logger;
|
|
|
|
|
_clientState = clientState;
|
|
|
|
|
@@ -66,6 +67,7 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber
|
|
|
|
|
Mediator = mediator;
|
|
|
|
|
_performanceCollector = performanceCollector;
|
|
|
|
|
_configService = configService;
|
|
|
|
|
_playerPerformanceConfigService = playerPerformanceConfigService;
|
|
|
|
|
WorldData = new(() =>
|
|
|
|
|
{
|
|
|
|
|
return gameData.GetExcelSheet<Lumina.Excel.Sheets.World>(Dalamud.Game.ClientLanguage.English)!
|
|
|
|
|
@@ -161,6 +163,7 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber
|
|
|
|
|
public bool IsOnFrameworkThread => _framework.IsInFrameworkUpdateThread;
|
|
|
|
|
public bool IsZoning => _condition[ConditionFlag.BetweenAreas] || _condition[ConditionFlag.BetweenAreas51];
|
|
|
|
|
public bool IsInCombatOrPerforming { get; private set; } = false;
|
|
|
|
|
public bool IsInInstance { get; private set; } = false;
|
|
|
|
|
public bool HasModifiedGameFiles => _gameData.HasModifiedGameDataFiles;
|
|
|
|
|
public uint ClassJobId => _classJobId!.Value;
|
|
|
|
|
public Lazy<Dictionary<uint, string>> JobData { get; private set; }
|
|
|
|
|
@@ -667,20 +670,34 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber
|
|
|
|
|
Mediator.Publish(new GposeEndMessage());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ((_condition[ConditionFlag.Performing] || _condition[ConditionFlag.InCombat]) && !IsInCombatOrPerforming)
|
|
|
|
|
if ((_condition[ConditionFlag.Performing] || _condition[ConditionFlag.InCombat]) && !IsInCombatOrPerforming && (_condition[ConditionFlag.BoundByDuty] && !_playerPerformanceConfigService.Current.PauseInInstanceDuty))
|
|
|
|
|
{
|
|
|
|
|
_logger.LogDebug("Combat/Performance start");
|
|
|
|
|
IsInCombatOrPerforming = true;
|
|
|
|
|
Mediator.Publish(new CombatOrPerformanceStartMessage());
|
|
|
|
|
Mediator.Publish(new HaltScanMessage(nameof(IsInCombatOrPerforming)));
|
|
|
|
|
}
|
|
|
|
|
else if ((!_condition[ConditionFlag.Performing] && !_condition[ConditionFlag.InCombat]) && IsInCombatOrPerforming)
|
|
|
|
|
else if ((!_condition[ConditionFlag.Performing] && !_condition[ConditionFlag.InCombat]) && IsInCombatOrPerforming && (_condition[ConditionFlag.BoundByDuty] && !_playerPerformanceConfigService.Current.PauseInInstanceDuty))
|
|
|
|
|
{
|
|
|
|
|
_logger.LogDebug("Combat/Performance end");
|
|
|
|
|
IsInCombatOrPerforming = false;
|
|
|
|
|
Mediator.Publish(new CombatOrPerformanceEndMessage());
|
|
|
|
|
Mediator.Publish(new ResumeScanMessage(nameof(IsInCombatOrPerforming)));
|
|
|
|
|
}
|
|
|
|
|
if ((_condition[ConditionFlag.BoundByDuty]) && !IsInInstance && _playerPerformanceConfigService.Current.PauseInInstanceDuty)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogDebug("Instance start");
|
|
|
|
|
IsInInstance = true;
|
|
|
|
|
Mediator.Publish(new InstanceOrDutyStartMessage());
|
|
|
|
|
Mediator.Publish(new HaltScanMessage(nameof(IsInInstance)));
|
|
|
|
|
}
|
|
|
|
|
else if (((!_condition[ConditionFlag.BoundByDuty]) && IsInInstance && _playerPerformanceConfigService.Current.PauseInInstanceDuty) || ((_condition[ConditionFlag.BoundByDuty]) && IsInInstance && !_playerPerformanceConfigService.Current.PauseInInstanceDuty))
|
|
|
|
|
{
|
|
|
|
|
_logger.LogDebug("Instance end");
|
|
|
|
|
IsInInstance = false;
|
|
|
|
|
Mediator.Publish(new InstanceOrDutyEndMessage());
|
|
|
|
|
Mediator.Publish(new ResumeScanMessage(nameof(IsInInstance)));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (_condition[ConditionFlag.WatchingCutscene] && !IsInCutscene)
|
|
|
|
|
{
|
|
|
|
|
|