cleanup
This commit is contained in:
@@ -11,7 +11,6 @@ using MareSynchronos.FileCacheDB;
|
||||
using MareSynchronos.Interop;
|
||||
using MareSynchronos.Utils;
|
||||
using MareSynchronos.WebAPI;
|
||||
using Penumbra.GameData.ByteString;
|
||||
using Penumbra.GameData.Structs;
|
||||
|
||||
namespace MareSynchronos.Managers;
|
||||
|
||||
@@ -254,7 +254,7 @@ public class OnlinePlayerManager : IDisposable
|
||||
{
|
||||
Task.Run(async () =>
|
||||
{
|
||||
await _apiController.PushCharacterData(_playerManager.LastCreatedCharacterData!,
|
||||
await _apiController.PushCharacterData(_playerManager.LastCreatedCharacterData,
|
||||
visiblePlayers);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace MareSynchronos.Managers
|
||||
private DateTime _lastPlayerObjectCheck;
|
||||
private CharacterEquipment? _currentCharacterEquipment = new();
|
||||
|
||||
private List<PlayerOrRelatedObject> playerAttachedObjects = new List<PlayerOrRelatedObject>();
|
||||
private List<PlayerRelatedObject> playerRelatedObjects = new List<PlayerRelatedObject>();
|
||||
|
||||
public unsafe PlayerManager(ApiController apiController, IpcManager ipcManager,
|
||||
CharacterDataFactory characterDataFactory, DalamudUtil dalamudUtil)
|
||||
@@ -53,13 +53,13 @@ namespace MareSynchronos.Managers
|
||||
ApiControllerOnConnected();
|
||||
}
|
||||
|
||||
playerAttachedObjects = new List<PlayerOrRelatedObject>()
|
||||
playerRelatedObjects = new List<PlayerRelatedObject>()
|
||||
{
|
||||
new PlayerOrRelatedObject(ObjectKind.Player, IntPtr.Zero, IntPtr.Zero, () => _dalamudUtil.PlayerPointer),
|
||||
new PlayerOrRelatedObject(ObjectKind.Minion, IntPtr.Zero, IntPtr.Zero, () => (IntPtr)((Character*)_dalamudUtil.PlayerPointer)->CompanionObject),
|
||||
new PlayerOrRelatedObject(ObjectKind.Pet, IntPtr.Zero, IntPtr.Zero, () => _dalamudUtil.GetPet()),
|
||||
new PlayerOrRelatedObject(ObjectKind.Companion, IntPtr.Zero, IntPtr.Zero, () => _dalamudUtil.GetCompanion()),
|
||||
new PlayerOrRelatedObject(ObjectKind.Mount, IntPtr.Zero, IntPtr.Zero, () => (IntPtr)((CharaExt*)_dalamudUtil.PlayerPointer)->Mount),
|
||||
new PlayerRelatedObject(ObjectKind.Player, IntPtr.Zero, IntPtr.Zero, () => _dalamudUtil.PlayerPointer),
|
||||
new PlayerRelatedObject(ObjectKind.Minion, IntPtr.Zero, IntPtr.Zero, () => (IntPtr)((Character*)_dalamudUtil.PlayerPointer)->CompanionObject),
|
||||
new PlayerRelatedObject(ObjectKind.Pet, IntPtr.Zero, IntPtr.Zero, () => _dalamudUtil.GetPet()),
|
||||
new PlayerRelatedObject(ObjectKind.Companion, IntPtr.Zero, IntPtr.Zero, () => _dalamudUtil.GetCompanion()),
|
||||
new PlayerRelatedObject(ObjectKind.Mount, IntPtr.Zero, IntPtr.Zero, () => (IntPtr)((CharaExt*)_dalamudUtil.PlayerPointer)->Mount),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -80,8 +80,8 @@ namespace MareSynchronos.Managers
|
||||
|
||||
if (DateTime.Now < _lastPlayerObjectCheck.AddSeconds(0.25)) return;
|
||||
|
||||
playerAttachedObjects.ForEach(k => k.CheckAndUpdateObject());
|
||||
if (playerAttachedObjects.Any(c => c.HasUnprocessedUpdate && !c.IsProcessing))
|
||||
playerRelatedObjects.ForEach(k => k.CheckAndUpdateObject());
|
||||
if (playerRelatedObjects.Any(c => c.HasUnprocessedUpdate && !c.IsProcessing))
|
||||
{
|
||||
OnPlayerOrAttachedObjectsChanged();
|
||||
}
|
||||
@@ -105,7 +105,7 @@ namespace MareSynchronos.Managers
|
||||
|
||||
private async Task<CharacterCacheDto?> CreateFullCharacterCacheDto(CancellationToken token)
|
||||
{
|
||||
foreach (var unprocessedObject in playerAttachedObjects.Where(c => c.HasUnprocessedUpdate).ToList())
|
||||
foreach (var unprocessedObject in playerRelatedObjects.Where(c => c.HasUnprocessedUpdate).ToList())
|
||||
{
|
||||
Logger.Verbose("Building Cache for " + unprocessedObject.ObjectKind);
|
||||
PermanentDataCache = _characterDataFactory.BuildCharacterData(PermanentDataCache, unprocessedObject.ObjectKind, unprocessedObject.Address);
|
||||
@@ -130,7 +130,7 @@ namespace MareSynchronos.Managers
|
||||
{
|
||||
Logger.Verbose("RedrawEvent for addr " + address);
|
||||
|
||||
foreach (var item in playerAttachedObjects)
|
||||
foreach (var item in playerRelatedObjects)
|
||||
{
|
||||
if (address == item.Address)
|
||||
{
|
||||
@@ -139,7 +139,7 @@ namespace MareSynchronos.Managers
|
||||
}
|
||||
}
|
||||
|
||||
if (playerAttachedObjects.Any(c => c.HasUnprocessedUpdate))
|
||||
if (playerRelatedObjects.Any(c => c.HasUnprocessedUpdate))
|
||||
{
|
||||
OnPlayerOrAttachedObjectsChanged();
|
||||
}
|
||||
@@ -149,7 +149,7 @@ namespace MareSynchronos.Managers
|
||||
{
|
||||
if (_dalamudUtil.IsInGpose) return;
|
||||
|
||||
var unprocessedObjects = playerAttachedObjects.Where(c => c.HasUnprocessedUpdate);
|
||||
var unprocessedObjects = playerRelatedObjects.Where(c => c.HasUnprocessedUpdate);
|
||||
foreach (var unprocessedObject in unprocessedObjects)
|
||||
{
|
||||
unprocessedObject.IsProcessing = true;
|
||||
|
||||
@@ -7,7 +7,7 @@ using Penumbra.GameData.ByteString;
|
||||
|
||||
namespace MareSynchronos.Models
|
||||
{
|
||||
internal class PlayerOrRelatedObject
|
||||
internal class PlayerRelatedObject
|
||||
{
|
||||
private readonly Func<IntPtr> getAddress;
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace MareSynchronos.Models
|
||||
|
||||
private IntPtr CurrentAddress => getAddress.Invoke();
|
||||
|
||||
public PlayerOrRelatedObject(ObjectKind objectKind, IntPtr address, IntPtr drawObjectAddress, Func<IntPtr> getAddress)
|
||||
public PlayerRelatedObject(ObjectKind objectKind, IntPtr address, IntPtr drawObjectAddress, Func<IntPtr> getAddress)
|
||||
{
|
||||
ObjectKind = objectKind;
|
||||
Address = address;
|
||||
@@ -114,18 +114,6 @@ namespace MareSynchronos.Utils
|
||||
return (Dalamud.Game.ClientState.Objects.Types.Character)objTableObj;
|
||||
}
|
||||
|
||||
internal unsafe int GetIdxBasedOnPtr(FFXIVClientStructs.FFXIV.Client.Game.Character.Character* pet)
|
||||
{
|
||||
var idx = 0;
|
||||
foreach (var item in _objectTable)
|
||||
{
|
||||
if (item.Address == (IntPtr)pet) return idx;
|
||||
idx++;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
public PlayerCharacter? GetPlayerCharacterFromObjectTableByName(string characterName)
|
||||
{
|
||||
foreach (var item in _objectTable)
|
||||
@@ -137,12 +125,6 @@ namespace MareSynchronos.Utils
|
||||
return null;
|
||||
}
|
||||
|
||||
public unsafe void DebugPrintRenderFlags(IntPtr characterAddress)
|
||||
{
|
||||
var obj = (GameObject*)characterAddress;
|
||||
Logger.Verbose("RenderFlags for " + characterAddress + ": " + Convert.ToString(obj->RenderFlags, 2));
|
||||
}
|
||||
|
||||
public unsafe void WaitWhileCharacterIsDrawing(IntPtr characterAddress, CancellationToken? ct = null)
|
||||
{
|
||||
if (!_clientState.IsLoggedIn) return;
|
||||
|
||||
@@ -19,10 +19,10 @@ namespace MareSynchronos.WebAPI
|
||||
private int _downloadId = 0;
|
||||
public void CancelUpload()
|
||||
{
|
||||
if (_uploadToken != null)
|
||||
if (_uploadCancellationTokenSource != null)
|
||||
{
|
||||
Logger.Debug("Cancelling upload");
|
||||
_uploadToken?.Cancel();
|
||||
_uploadCancellationTokenSource?.Cancel();
|
||||
_mareHub!.SendAsync(Api.SendFileAbortUpload);
|
||||
CurrentUploads.Clear();
|
||||
}
|
||||
@@ -123,8 +123,8 @@ namespace MareSynchronos.WebAPI
|
||||
Logger.Debug("Sending Character data to service " + ApiUri);
|
||||
|
||||
CancelUpload();
|
||||
_uploadToken = new CancellationTokenSource();
|
||||
var uploadToken = _uploadToken.Token;
|
||||
_uploadCancellationTokenSource = new CancellationTokenSource();
|
||||
var uploadToken = _uploadCancellationTokenSource.Token;
|
||||
Logger.Verbose("New Token Created");
|
||||
|
||||
var filesToUpload = await _mareHub!.InvokeAsync<List<UploadFileDto>>(Api.InvokeFileSendFiles, character.FileReplacements.SelectMany(c => c.Value.Select(v => v.Hash)).Distinct(), uploadToken);
|
||||
@@ -204,7 +204,7 @@ namespace MareSynchronos.WebAPI
|
||||
}
|
||||
|
||||
Logger.Verbose("Upload complete for " + character.GetHashCode());
|
||||
_uploadToken = null;
|
||||
_uploadCancellationTokenSource = null;
|
||||
}
|
||||
|
||||
private async Task<(string, byte[])> GetCompressedFileData(string fileHash, CancellationToken uploadToken)
|
||||
|
||||
@@ -37,7 +37,7 @@ namespace MareSynchronos.WebAPI
|
||||
|
||||
private HubConnection? _mareHub;
|
||||
|
||||
private CancellationTokenSource? _uploadToken = new();
|
||||
private CancellationTokenSource? _uploadCancellationTokenSource = new();
|
||||
|
||||
private ConnectionDto? _connectionDto;
|
||||
public SystemInfoDto SystemInfoDto { get; private set; } = new();
|
||||
@@ -268,7 +268,7 @@ namespace MareSynchronos.WebAPI
|
||||
{
|
||||
CurrentUploads.Clear();
|
||||
CurrentDownloads.Clear();
|
||||
_uploadToken?.Cancel();
|
||||
_uploadCancellationTokenSource?.Cancel();
|
||||
Logger.Debug("Connection closed");
|
||||
Disconnected?.Invoke();
|
||||
return Task.CompletedTask;
|
||||
@@ -286,7 +286,7 @@ namespace MareSynchronos.WebAPI
|
||||
{
|
||||
CurrentUploads.Clear();
|
||||
CurrentDownloads.Clear();
|
||||
_uploadToken?.Cancel();
|
||||
_uploadCancellationTokenSource?.Cancel();
|
||||
Logger.Debug("Connection closed... Reconnecting");
|
||||
Disconnected?.Invoke();
|
||||
return Task.CompletedTask;
|
||||
|
||||
Reference in New Issue
Block a user