rework the whole connection garbage/custom servers, other cleanups/refactors

This commit is contained in:
Stanley Dimant
2022-06-27 01:19:45 +02:00
parent 404ba8e278
commit 61b178e2c0
12 changed files with 386 additions and 302 deletions

View File

@@ -11,7 +11,6 @@ using MareSynchronos.FileCacheDB;
using MareSynchronos.Managers;
using MareSynchronos.Utils;
using MareSynchronos.WebAPI;
using Penumbra.PlayerWatch;
namespace MareSynchronos.Models;
@@ -20,16 +19,14 @@ public class CachedPlayer
private readonly DalamudUtil _dalamudUtil;
private readonly IpcManager _ipcManager;
private readonly ApiController _apiController;
private readonly IPlayerWatcher _watcher;
private bool _isVisible;
public CachedPlayer(string nameHash, IpcManager ipcManager, ApiController apiController, DalamudUtil dalamudUtil, IPlayerWatcher watcher)
public CachedPlayer(string nameHash, IpcManager ipcManager, ApiController apiController, DalamudUtil dalamudUtil)
{
PlayerNameHash = nameHash;
_ipcManager = ipcManager;
_apiController = apiController;
_dalamudUtil = dalamudUtil;
_watcher = watcher;
}
public bool IsVisible
@@ -165,7 +162,7 @@ public class CachedPlayer
_downloadCancellationTokenSource?.Cancel();
_downloadCancellationTokenSource?.Dispose();
_downloadCancellationTokenSource = null;
_watcher.RemovePlayerFromWatch(PlayerName);
_dalamudUtil.RemovePlayerFromWatch(PlayerName);
_ipcManager.PenumbraRemoveTemporaryCollection(PlayerName);
_ipcManager.GlamourerRevertCharacterCustomization(PlayerName);
_ipcManager.GlamourerApplyOnlyCustomization(_originalGlamourerData, PlayerName);
@@ -177,7 +174,7 @@ public class CachedPlayer
}
finally
{
_watcher.PlayerChanged -= WatcherOnPlayerChanged;
_dalamudUtil.PlayerChanged -= WatcherOnPlayerChanged;
_ipcManager.PenumbraRedrawEvent -= IpcManagerOnPenumbraRedrawEvent;
_apiController.CharacterReceived -= ApiControllerOnCharacterReceived;
PlayerName = string.Empty;
@@ -191,8 +188,8 @@ public class CachedPlayer
PlayerName = character.Name.ToString();
PlayerCharacter = character;
Logger.Debug("Initializing Player " + this);
_watcher.AddPlayerToWatch(PlayerName!);
_watcher.PlayerChanged += WatcherOnPlayerChanged;
_dalamudUtil.AddPlayerToWatch(PlayerName!);
_dalamudUtil.PlayerChanged += WatcherOnPlayerChanged;
_ipcManager.PenumbraRedrawEvent += IpcManagerOnPenumbraRedrawEvent;
_apiController.CharacterReceived += ApiControllerOnCharacterReceived;
_originalGlamourerData = _ipcManager.GlamourerGetCharacterCustomization(PlayerName);
@@ -203,15 +200,15 @@ public class CachedPlayer
return PlayerNameHash + ":" + PlayerName + ":HasChar " + (PlayerCharacter != null);
}
private Task? penumbraRedrawEventTask;
private Task? _penumbraRedrawEventTask;
private void IpcManagerOnPenumbraRedrawEvent(object? sender, EventArgs e)
{
var player = _dalamudUtil.GetPlayerCharacterFromObjectTableIndex((int)sender!);
if (player == null || player.Name.ToString() != PlayerName) return;
if (!penumbraRedrawEventTask?.IsCompleted ?? false) return;
if (!_penumbraRedrawEventTask?.IsCompleted ?? false) return;
penumbraRedrawEventTask = Task.Run(() =>
_penumbraRedrawEventTask = Task.Run(() =>
{
PlayerCharacter = player;
_dalamudUtil.WaitWhileCharacterIsDrawing(PlayerCharacter.Address);