mirror of
https://github.com/Caraxi/mare.client.git
synced 2025-12-15 09:14:14 +01:00
actually fix not sending data properly
This commit is contained in:
parent
6b9d79b88d
commit
975a813b7f
4 changed files with 28 additions and 12 deletions
|
|
@ -108,10 +108,10 @@ namespace MareSynchronos.Managers
|
|||
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);
|
||||
unprocessedObject.HasUnprocessedUpdate = false;
|
||||
PermanentDataCache = _characterDataFactory.BuildCharacterData(PermanentDataCache, unprocessedObject.ObjectKind, unprocessedObject.Address, token);
|
||||
unprocessedObject.IsProcessing = false;
|
||||
token.ThrowIfCancellationRequested();
|
||||
unprocessedObject.HasUnprocessedUpdate = false;
|
||||
}
|
||||
|
||||
while (!PermanentDataCache.IsReady && !token.IsCancellationRequested)
|
||||
|
|
@ -139,7 +139,7 @@ namespace MareSynchronos.Managers
|
|||
}
|
||||
}
|
||||
|
||||
if (playerRelatedObjects.Any(c => c.HasUnprocessedUpdate && !c.IsProcessing))
|
||||
if (playerRelatedObjects.Any(c => c.HasUnprocessedUpdate && (!c.IsProcessing || (c.IsProcessing && c.DoNotSendUpdate))))
|
||||
{
|
||||
OnPlayerOrAttachedObjectsChanged();
|
||||
}
|
||||
|
|
@ -155,6 +155,8 @@ namespace MareSynchronos.Managers
|
|||
unprocessedObject.IsProcessing = true;
|
||||
}
|
||||
Logger.Debug("Object(s) changed: " + string.Join(", ", unprocessedObjects.Select(c => c.ObjectKind)));
|
||||
bool doNotSendUpdate = unprocessedObjects.All(c => c.DoNotSendUpdate);
|
||||
unprocessedObjects.ForEach(p => p.DoNotSendUpdate = false);
|
||||
_playerChangedCts?.Cancel();
|
||||
_playerChangedCts = new CancellationTokenSource();
|
||||
var token = _playerChangedCts.Token;
|
||||
|
|
@ -195,13 +197,11 @@ namespace MareSynchronos.Managers
|
|||
LastCreatedCharacterData = cacheDto;
|
||||
}
|
||||
|
||||
if (_apiController.IsConnected && !token.IsCancellationRequested && !unprocessedObjects.All(c => c.DoNotSendUpdate))
|
||||
if (_apiController.IsConnected && !token.IsCancellationRequested && !doNotSendUpdate)
|
||||
{
|
||||
Logger.Verbose("Invoking PlayerHasChanged");
|
||||
PlayerHasChanged?.Invoke(cacheDto);
|
||||
}
|
||||
|
||||
unprocessedObjects.ForEach(p => p.DoNotSendUpdate = false);
|
||||
}, token);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue