fix minions/mounts for 6.2, todo: remove penumbra redraw once glamourer is available

This commit is contained in:
Stanley Dimant
2022-08-24 22:02:56 +02:00
parent 0d3fbc245b
commit 5cdb9e6dfa
8 changed files with 72 additions and 69 deletions

View File

@@ -236,14 +236,18 @@ public class CachedPlayer
Logger.Debug(
$"Request Redraw for {PlayerName}");
_ipcManager.GlamourerApplyAll(glamourerData, PlayerCharacter.Address);
// todo: remove
_ipcManager.PenumbraRedraw(PlayerCharacter.Address);
}
else if (objectKind == ObjectKind.Minion)
else if (objectKind == ObjectKind.MinionOrMount)
{
var minion = ((Character*)PlayerCharacter.Address)->CompanionObject;
if (minion != null)
var minionOrMount = ((Character*)PlayerCharacter.Address)->CompanionObject;
if (minionOrMount != null)
{
Logger.Debug($"Request Redraw for Minion");
_ipcManager.GlamourerApplyAll(glamourerData, obj: (IntPtr)minion);
Logger.Debug($"Request Redraw for Minion/Mount");
_ipcManager.GlamourerApplyAll(glamourerData, obj: (IntPtr)minionOrMount);
// todo: remove
_ipcManager.PenumbraRedraw((IntPtr)minionOrMount);
}
}
else if (objectKind == ObjectKind.Pet)
@@ -253,6 +257,8 @@ public class CachedPlayer
{
Logger.Debug("Request Redraw for Pet");
_ipcManager.GlamourerApplyAll(glamourerData, pet);
// todo: remove
_ipcManager.PenumbraRedraw(pet);
}
}
else if (objectKind == ObjectKind.Companion)
@@ -262,15 +268,8 @@ public class CachedPlayer
{
Logger.Debug("Request Redraw for Companion");
_ipcManager.GlamourerApplyAll(glamourerData, companion);
}
}
else if (objectKind == ObjectKind.Mount)
{
var mount = ((CharaExt*)PlayerCharacter.Address)->Mount;
if (mount != null)
{
Logger.Debug($"Request Redraw for Mount");
_ipcManager.PenumbraRedraw((IntPtr)mount);
// todo: remove
_ipcManager.PenumbraRedraw(companion);
}
}
}
@@ -283,13 +282,15 @@ public class CachedPlayer
{
_ipcManager.GlamourerApplyOnlyCustomization(_originalGlamourerData, PlayerCharacter);
_ipcManager.GlamourerApplyOnlyEquipment(_lastGlamourerData, PlayerCharacter);
// todo: remove
_ipcManager.PenumbraRedraw(PlayerCharacter.Address);
}
else if (objectKind == ObjectKind.Minion)
else if (objectKind == ObjectKind.MinionOrMount)
{
var minion = ((Character*)PlayerCharacter.Address)->CompanionObject;
if (minion != null)
var minionOrMount = ((Character*)PlayerCharacter.Address)->CompanionObject;
if (minionOrMount != null)
{
_ipcManager.PenumbraRedraw((IntPtr)minion);
_ipcManager.PenumbraRedraw((IntPtr)minionOrMount);
}
}
else if (objectKind == ObjectKind.Pet)
@@ -308,14 +309,6 @@ public class CachedPlayer
_ipcManager.PenumbraRedraw(companion);
}
}
else if (objectKind == ObjectKind.Mount)
{
var mount = ((CharaExt*)PlayerCharacter.Address)->Mount;
if (mount != null)
{
_ipcManager.PenumbraRedraw((IntPtr)mount);
}
}
}
public void DisposePlayer()
@@ -429,6 +422,7 @@ public class CachedPlayer
Logger.Debug($"Player {PlayerName} changed, PenumbraRedraw is {RequestedPenumbraRedraw}");
if (!RequestedPenumbraRedraw && PlayerCharacter is not null)
{
_currentCharacterEquipment.HasUnprocessedUpdate = false;
Logger.Debug($"Saving new Glamourer data");
_lastGlamourerData = _ipcManager.GlamourerGetCharacterCustomization(PlayerCharacter!);
}

View File

@@ -5,12 +5,10 @@ using System;
using System.Threading;
using System.Threading.Tasks;
using MareSynchronos.API;
using Penumbra.GameData.Structs;
using FFXIVClientStructs.FFXIV.Client.Game.Character;
using System.Collections.Generic;
using System.Linq;
using MareSynchronos.Models;
using MareSynchronos.Interop;
namespace MareSynchronos.Managers
{
@@ -55,10 +53,9 @@ namespace MareSynchronos.Managers
playerRelatedObjects = new List<PlayerRelatedObject>()
{
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.MinionOrMount, 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),
};
}