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