connect to api only after login, add switching secret keys and inputting secret key during intro, fix filereplacements not working properly, adjust to the new web api

This commit is contained in:
Stanley Dimant
2022-06-29 22:40:17 +02:00
parent 2ff224243a
commit 95f7e5f867
11 changed files with 206 additions and 93 deletions

View File

@@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Dalamud.Game;
using Dalamud.Game.ClientState;
using MareSynchronos.Models;
using MareSynchronos.Utils;
using MareSynchronos.WebAPI;
@@ -13,7 +12,6 @@ namespace MareSynchronos.Managers;
public class CachedPlayersManager : IDisposable
{
private readonly ApiController _apiController;
private readonly ClientState _clientState;
private readonly DalamudUtil _dalamudUtil;
private readonly Framework _framework;
private readonly IpcManager _ipcManager;
@@ -21,20 +19,15 @@ public class CachedPlayersManager : IDisposable
private readonly List<string> _localVisiblePlayers = new();
private DateTime _lastPlayerObjectCheck = DateTime.Now;
public CachedPlayersManager(ClientState clientState, Framework framework,
ApiController apiController, DalamudUtil dalamudUtil, IpcManager ipcManager)
public CachedPlayersManager(Framework framework, ApiController apiController, DalamudUtil dalamudUtil, IpcManager ipcManager)
{
Logger.Debug("Creating " + nameof(CachedPlayersManager));
_clientState = clientState;
_framework = framework;
_apiController = apiController;
_dalamudUtil = dalamudUtil;
_ipcManager = ipcManager;
_clientState.Login += ClientStateOnLogin;
_clientState.Logout += ClientStateOnLogout;
_apiController.PairedClientOnline += ApiControllerOnPairedClientOnline;
_apiController.PairedClientOffline += ApiControllerOnPairedClientOffline;
_apiController.PairedWithOther += ApiControllerOnPairedWithOther;
@@ -43,12 +36,25 @@ public class CachedPlayersManager : IDisposable
_ipcManager.PenumbraDisposed += IpcManagerOnPenumbraDisposed;
if (clientState.IsLoggedIn)
_dalamudUtil.LogIn += DalamudUtilOnLogIn;
_dalamudUtil.LogOut += DalamudUtilOnLogOut;
if (_dalamudUtil.IsLoggedIn)
{
ClientStateOnLogin(null, EventArgs.Empty);
DalamudUtilOnLogIn();
}
}
private void DalamudUtilOnLogOut()
{
_framework.Update -= FrameworkOnUpdate;
}
private void DalamudUtilOnLogIn()
{
_framework.Update += FrameworkOnUpdate;
}
private void IpcManagerOnPenumbraDisposed(object? sender, EventArgs e)
{
_onlineCachedPlayers.ForEach(p => p.DisposePlayer());
@@ -59,16 +65,6 @@ public class CachedPlayersManager : IDisposable
RestoreAllCharacters();
}
private void ClientStateOnLogin(object? sender, EventArgs e)
{
_framework.Update += FrameworkOnUpdate;
}
private void ClientStateOnLogout(object? sender, EventArgs e)
{
_framework.Update -= FrameworkOnUpdate;
}
public void AddInitialPairs(List<string> apiTaskResult)
{
_onlineCachedPlayers.Clear();
@@ -92,8 +88,8 @@ public class CachedPlayersManager : IDisposable
_framework.Update -= FrameworkOnUpdate;
_clientState.Login -= ClientStateOnLogin;
_clientState.Logout -= ClientStateOnLogout;
_dalamudUtil.LogIn -= DalamudUtilOnLogIn;
_dalamudUtil.LogOut -= DalamudUtilOnLogOut;
}
private void RestoreAllCharacters()

View File

@@ -73,6 +73,7 @@ namespace MareSynchronos.Managers
_ipcManager.PenumbraDisposed -= IpcManagerOnPenumbraDisposed;
_rescanTaskCancellationTokenSource?.Cancel();
_rescanTaskRunCancellationTokenSource?.Cancel();
_scanCancellationTokenSource?.Cancel();
StopWatchersAndScan();
}

View File

@@ -198,7 +198,6 @@ namespace MareSynchronos.Managers
Logger.Debug("Assigning temp mods for " + collectionName);
var ret = _penumbraSetTemporaryMod.InvokeFunc("MareSynchronos", collectionName, modPaths, manipulationData, 0);
Logger.Debug("Penumbra Ret: " + ret.ToString());
}
private void RedrawEvent(IntPtr objectAddress, int objectTableIndex)

View File

@@ -59,7 +59,7 @@ namespace MareSynchronos.Managers
private void ApiController_Connected(object? sender, EventArgs args)
{
Logger.Debug("ApiController Connected");
var apiTask = _apiController.SendCharacterName(_dalamudUtil.PlayerNameHashed);
var apiTask = _apiController.GetOnlineCharacters();
_lastSentHash = string.Empty;
Task.WaitAll(apiTask);