fix issue on not reloading player on zone switch, minor cleanup

This commit is contained in:
Stanley Dimant
2022-06-26 17:42:14 +02:00
parent 9aaab87c91
commit b42de9a8a7
4 changed files with 22 additions and 28 deletions

View File

@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using Dalamud.Game;
@@ -155,12 +154,11 @@ public class CachedPlayersManager : IDisposable
private void FrameworkOnUpdate(Framework framework)
{
if (_clientState.LocalPlayer == null) return;
if (!_dalamudUtil.IsPlayerPresent || !_ipcManager.Initialized || !_apiController.IsConnected) return;
if (DateTime.Now < _lastPlayerObjectCheck.AddSeconds(0.25)) return;
_localVisiblePlayers.Clear();
if (!_ipcManager.Initialized) return;
string ownName = _dalamudUtil.PlayerName;
var playerCharacters = _objectTable.Where(obj =>
obj.ObjectKind == Dalamud.Game.ClientState.Objects.Enums.ObjectKind.Player &&

View File

@@ -1,5 +1,4 @@
using Dalamud.Game.ClientState.Objects;
using Dalamud.Logging;
using Dalamud.Logging;
using MareSynchronos.Factories;
using MareSynchronos.Models;
using MareSynchronos.Utils;
@@ -21,23 +20,31 @@ namespace MareSynchronos.Managers
private readonly CharacterDataFactory _characterDataFactory;
private readonly DalamudUtil _dalamudUtil;
private readonly IpcManager _ipcManager;
private readonly ObjectTable _objectTable;
private readonly IPlayerWatcher _watcher;
private string _lastSentHash = string.Empty;
private Task? _playerChangedTask;
public PlayerManager(ApiController apiController, ObjectTable objectTable, IpcManager ipcManager,
public PlayerManager(ApiController apiController, IpcManager ipcManager,
CharacterDataFactory characterDataFactory, CachedPlayersManager cachedPlayersManager, DalamudUtil dalamudUtil, IPlayerWatcher watcher)
{
Logger.Debug("Creating " + nameof(PlayerManager));
_apiController = apiController;
_objectTable = objectTable;
_ipcManager = ipcManager;
_characterDataFactory = characterDataFactory;
_cachedPlayersManager = cachedPlayersManager;
_dalamudUtil = dalamudUtil;
_watcher = watcher;
_watcher.AddPlayerToWatch(_dalamudUtil.PlayerName);
_apiController.Connected += ApiController_Connected;
_apiController.Disconnected += ApiController_Disconnected;
Logger.Debug("Watching Player, ApiController is Connected: " + _apiController.IsConnected);
if (_apiController.IsConnected)
{
ApiController_Connected(null, EventArgs.Empty);
}
}
public void Dispose()
@@ -50,19 +57,6 @@ namespace MareSynchronos.Managers
_watcher.PlayerChanged -= Watcher_PlayerChanged;
}
internal void StartWatchingPlayer()
{
_watcher.AddPlayerToWatch(_dalamudUtil.PlayerName);
_apiController.Connected += ApiController_Connected;
_apiController.Disconnected += ApiController_Disconnected;
Logger.Debug("Watching Player, ApiController is Connected: " + _apiController.IsConnected);
if (_apiController.IsConnected)
{
ApiController_Connected(null, EventArgs.Empty);
}
}
private void ApiController_Connected(object? sender, EventArgs args)
{
Logger.Debug("ApiController Connected");