rework the whole connection garbage/custom servers, other cleanups/refactors
This commit is contained in:
@@ -4,12 +4,9 @@ using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Dalamud.Game;
|
||||
using Dalamud.Game.ClientState;
|
||||
using Dalamud.Game.ClientState.Objects;
|
||||
using Dalamud.Game.ClientState.Objects.SubKinds;
|
||||
using MareSynchronos.Models;
|
||||
using MareSynchronos.Utils;
|
||||
using MareSynchronos.WebAPI;
|
||||
using Penumbra.PlayerWatch;
|
||||
|
||||
namespace MareSynchronos.Managers;
|
||||
|
||||
@@ -20,23 +17,20 @@ public class CachedPlayersManager : IDisposable
|
||||
private readonly DalamudUtil _dalamudUtil;
|
||||
private readonly Framework _framework;
|
||||
private readonly IpcManager _ipcManager;
|
||||
private readonly IPlayerWatcher _watcher;
|
||||
private readonly ObjectTable _objectTable;
|
||||
private readonly List<CachedPlayer> _onlineCachedPlayers = new();
|
||||
private readonly List<string> _localVisiblePlayers = new();
|
||||
private DateTime _lastPlayerObjectCheck = DateTime.Now;
|
||||
|
||||
public CachedPlayersManager(ClientState clientState, Framework framework, ObjectTable objectTable, ApiController apiController, DalamudUtil dalamudUtil, IpcManager ipcManager, IPlayerWatcher watcher)
|
||||
public CachedPlayersManager(ClientState clientState, Framework framework,
|
||||
ApiController apiController, DalamudUtil dalamudUtil, IpcManager ipcManager)
|
||||
{
|
||||
Logger.Debug("Creating " + nameof(CachedPlayersManager));
|
||||
|
||||
_clientState = clientState;
|
||||
_framework = framework;
|
||||
_objectTable = objectTable;
|
||||
_apiController = apiController;
|
||||
_dalamudUtil = dalamudUtil;
|
||||
_ipcManager = ipcManager;
|
||||
_watcher = watcher;
|
||||
|
||||
_clientState.Login += ClientStateOnLogin;
|
||||
_clientState.Logout += ClientStateOnLogout;
|
||||
@@ -53,7 +47,7 @@ public class CachedPlayersManager : IDisposable
|
||||
ClientStateOnLogin(null, EventArgs.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void IpcManagerOnPenumbraDisposed(object? sender, EventArgs e)
|
||||
{
|
||||
_onlineCachedPlayers.ForEach(p => p.DisposePlayer());
|
||||
@@ -159,14 +153,10 @@ public class CachedPlayersManager : IDisposable
|
||||
if (DateTime.Now < _lastPlayerObjectCheck.AddSeconds(0.25)) return;
|
||||
|
||||
_localVisiblePlayers.Clear();
|
||||
string ownName = _dalamudUtil.PlayerName;
|
||||
var playerCharacters = _objectTable.Where(obj =>
|
||||
obj.ObjectKind == Dalamud.Game.ClientState.Objects.Enums.ObjectKind.Player &&
|
||||
obj.Name.ToString() != ownName).ToList();
|
||||
foreach (var obj in playerCharacters)
|
||||
var playerCharacters = _dalamudUtil.GetPlayerCharacters();
|
||||
foreach (var pChar in playerCharacters)
|
||||
{
|
||||
var pObj = (PlayerCharacter)obj;
|
||||
var pObjName = pObj.Name.ToString();
|
||||
var pObjName = pChar.Name.ToString();
|
||||
_localVisiblePlayers.Add(pObjName);
|
||||
var existingCachedPlayer = _onlineCachedPlayers.SingleOrDefault(p => p.PlayerName == pObjName);
|
||||
if (existingCachedPlayer != null)
|
||||
@@ -175,8 +165,8 @@ public class CachedPlayersManager : IDisposable
|
||||
continue;
|
||||
}
|
||||
|
||||
var hashedName = Crypto.GetHash256(pObj.Name.ToString() + pObj.HomeWorld.Id.ToString());
|
||||
_onlineCachedPlayers.SingleOrDefault(p => p.PlayerNameHash == hashedName)?.InitializePlayer(pObj);
|
||||
var hashedName = Crypto.GetHash256(pChar);
|
||||
_onlineCachedPlayers.SingleOrDefault(p => p.PlayerNameHash == hashedName)?.InitializePlayer(pChar);
|
||||
}
|
||||
|
||||
_onlineCachedPlayers.Where(p => !string.IsNullOrEmpty(p.PlayerName) && !_localVisiblePlayers.Contains(p.PlayerName))
|
||||
@@ -191,6 +181,6 @@ public class CachedPlayersManager : IDisposable
|
||||
|
||||
private CachedPlayer CreateCachedPlayer(string hashedName)
|
||||
{
|
||||
return new CachedPlayer(hashedName, _ipcManager, _apiController, _dalamudUtil, _watcher);
|
||||
return new CachedPlayer(hashedName, _ipcManager, _apiController, _dalamudUtil);
|
||||
}
|
||||
}
|
||||
@@ -34,12 +34,10 @@ namespace MareSynchronos.Managers
|
||||
|
||||
private void StartWatchersAndScan()
|
||||
{
|
||||
if (_ipcManager.Initialized && _pluginConfiguration.HasValidSetup)
|
||||
{
|
||||
Logger.Debug("Penumbra is active, configuration is valid, starting watchers and scan");
|
||||
StartWatchers();
|
||||
StartInitialScan();
|
||||
}
|
||||
if (!_ipcManager.Initialized || !_pluginConfiguration.HasValidSetup) return;
|
||||
Logger.Debug("Penumbra is active, configuration is valid, starting watchers and scan");
|
||||
StartWatchers();
|
||||
StartInitialScan();
|
||||
}
|
||||
|
||||
private void IpcManagerOnPenumbraInitialized(object? sender, EventArgs e)
|
||||
|
||||
@@ -146,7 +146,9 @@ namespace MareSynchronos.Managers
|
||||
{
|
||||
if (!CheckPenumbraApi()) return string.Empty;
|
||||
Logger.Debug("Creating temp collection for " + characterName);
|
||||
return _penumbraCreateTemporaryCollection.InvokeFunc("MareSynchronos", characterName, true).Item2;
|
||||
var ret = _penumbraCreateTemporaryCollection.InvokeFunc("MareSynchronos", characterName, true);
|
||||
Logger.Debug("Penumbra ret: " + ret.Item1);
|
||||
return ret.Item2;
|
||||
}
|
||||
|
||||
public string PenumbraGetMetaManipulations(string characterName)
|
||||
|
||||
@@ -4,7 +4,6 @@ using MareSynchronos.Models;
|
||||
using MareSynchronos.Utils;
|
||||
using MareSynchronos.WebAPI;
|
||||
using Newtonsoft.Json;
|
||||
using Penumbra.PlayerWatch;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
@@ -20,12 +19,11 @@ namespace MareSynchronos.Managers
|
||||
private readonly CharacterDataFactory _characterDataFactory;
|
||||
private readonly DalamudUtil _dalamudUtil;
|
||||
private readonly IpcManager _ipcManager;
|
||||
private readonly IPlayerWatcher _watcher;
|
||||
private string _lastSentHash = string.Empty;
|
||||
private Task? _playerChangedTask;
|
||||
|
||||
public PlayerManager(ApiController apiController, IpcManager ipcManager,
|
||||
CharacterDataFactory characterDataFactory, CachedPlayersManager cachedPlayersManager, DalamudUtil dalamudUtil, IPlayerWatcher watcher)
|
||||
CharacterDataFactory characterDataFactory, CachedPlayersManager cachedPlayersManager, DalamudUtil dalamudUtil)
|
||||
{
|
||||
Logger.Debug("Creating " + nameof(PlayerManager));
|
||||
|
||||
@@ -34,9 +32,8 @@ namespace MareSynchronos.Managers
|
||||
_characterDataFactory = characterDataFactory;
|
||||
_cachedPlayersManager = cachedPlayersManager;
|
||||
_dalamudUtil = dalamudUtil;
|
||||
_watcher = watcher;
|
||||
|
||||
_watcher.AddPlayerToWatch(_dalamudUtil.PlayerName);
|
||||
_dalamudUtil.AddPlayerToWatch(_dalamudUtil.PlayerName);
|
||||
_apiController.Connected += ApiController_Connected;
|
||||
_apiController.Disconnected += ApiController_Disconnected;
|
||||
|
||||
@@ -54,7 +51,7 @@ namespace MareSynchronos.Managers
|
||||
_ipcManager.PenumbraRedrawEvent -= IpcManager_PenumbraRedrawEvent;
|
||||
_apiController.Connected -= ApiController_Connected;
|
||||
_apiController.Disconnected -= ApiController_Disconnected;
|
||||
_watcher.PlayerChanged -= Watcher_PlayerChanged;
|
||||
_dalamudUtil.PlayerChanged -= Watcher_PlayerChanged;
|
||||
}
|
||||
|
||||
private void ApiController_Connected(object? sender, EventArgs args)
|
||||
@@ -69,7 +66,7 @@ namespace MareSynchronos.Managers
|
||||
|
||||
_ipcManager.PenumbraRedrawEvent += IpcManager_PenumbraRedrawEvent;
|
||||
_ipcManager.PenumbraRedraw(_dalamudUtil.PlayerName);
|
||||
_watcher.PlayerChanged += Watcher_PlayerChanged;
|
||||
_dalamudUtil.PlayerChanged += Watcher_PlayerChanged;
|
||||
}
|
||||
|
||||
private void ApiController_Disconnected(object? sender, EventArgs args)
|
||||
@@ -77,7 +74,7 @@ namespace MareSynchronos.Managers
|
||||
Logger.Debug(nameof(ApiController_Disconnected));
|
||||
|
||||
_ipcManager.PenumbraRedrawEvent -= IpcManager_PenumbraRedrawEvent;
|
||||
_watcher.PlayerChanged -= Watcher_PlayerChanged;
|
||||
_dalamudUtil.PlayerChanged -= Watcher_PlayerChanged;
|
||||
}
|
||||
|
||||
private async Task<CharacterData> CreateFullCharacterCache()
|
||||
|
||||
Reference in New Issue
Block a user