Some code fixes

This commit is contained in:
r00telement
2022-01-08 20:15:12 +00:00
parent 5ada605280
commit 1eb5431f77
4 changed files with 24 additions and 37 deletions

View File

@@ -194,7 +194,6 @@ namespace PlayerTags.GameInterface.ContextMenus
return;
}
if (m_PluginAddressResolver.AtkValueChangeTypePtr.HasValue)
{
m_AtkValueChangeType = Marshal.GetDelegateForFunctionPointer<AtkValueChangeTypeDelegate_Unmanaged>(m_PluginAddressResolver.AtkValueChangeTypePtr.Value);
@@ -505,7 +504,7 @@ namespace PlayerTags.GameInterface.ContextMenus
SeString objectName;
unsafe
{
objectName = Helper.ReadSeString((IntPtr)agentContext->ObjectName.StringPtr);
objectName = GameInterfaceHelper.ReadSeString((IntPtr)agentContext->ObjectName.StringPtr);
}
contextMenuOpenedArgs = new ContextMenuOpenedArgs(addon, agent, parentAddonName, initialContextMenuItems)
@@ -624,16 +623,6 @@ namespace PlayerTags.GameInterface.ContextMenus
m_InventoryContextMenuEvent30Hook.Original(agent, a2, a3, a4, a5);
}
private void SetFlag(ref uint mask, int itemIndex, bool value)
{
mask &= ~((uint)1 << itemIndex);
if (value)
{
mask |= (uint)(1 << itemIndex);
}
}
private unsafe string? GetParentAddonName(IntPtr addon)
{
if (m_GetAddonById == null)
@@ -650,7 +639,7 @@ namespace PlayerTags.GameInterface.ContextMenus
var atkStage = AtkStage.GetSingleton();
var parentAddonPtr = m_GetAddonById((IntPtr)atkStage->RaptureAtkUnitManager, parentAddonId);
return Helper.ReadString(parentAddonPtr + 8);
return GameInterfaceHelper.ReadString(parentAddonPtr + 8);
}
private unsafe bool IsInventoryContext(IntPtr agent)

View File

@@ -53,7 +53,7 @@ namespace PlayerTags.GameInterface.ContextMenus
{
try
{
Helper.TryReadSeString((IntPtr)(&m_AtkValues[1])->String, out var str);
GameInterfaceHelper.TryReadSeString((IntPtr)(&m_AtkValues[1])->String, out var str);
return str;
}
catch (Exception ex)
@@ -231,7 +231,7 @@ namespace PlayerTags.GameInterface.ContextMenus
{
continue;
}
var name = Helper.ReadSeString((IntPtr)nameAtkValue->String);
var name = GameInterfaceHelper.ReadSeString((IntPtr)nameAtkValue->String);
// Get the enabled state. Note that SE stores this as IsDisabled, NOT IsEnabled (those heathens)
var isEnabled = true;
@@ -448,7 +448,7 @@ namespace PlayerTags.GameInterface.ContextMenus
|| (int)atkValue->Type == 38
|| (int)atkValue->Type == 8)
{
if (Helper.TryReadSeString((IntPtr)atkValue->String, out var str))
if (GameInterfaceHelper.TryReadSeString((IntPtr)atkValue->String, out var str))
{
value = str;
}

View File

@@ -1,13 +1,11 @@
using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Logging;
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
namespace PlayerTags.GameInterface
{
public static class Helper
public static class GameInterfaceHelper
{
public static SeString ReadSeString(IntPtr ptr)
{

View File

@@ -88,57 +88,57 @@ namespace PlayerTags.GameInterface.Nameplates
PlayerCharacter? playerCharacter = GetNameplateGameObject<PlayerCharacter>(playerNameplateObjectPtr);
if (playerCharacter != null)
{
PlayerNameplateUpdatedArgs playerNameplateOpenedArgs = new PlayerNameplateUpdatedArgs(
PlayerNameplateUpdatedArgs playerNameplateUpdatedArgs = new PlayerNameplateUpdatedArgs(
playerCharacter,
Helper.ReadSeString(namePtr),
Helper.ReadSeString(titlePtr),
Helper.ReadSeString(freeCompanyPtr),
GameInterfaceHelper.ReadSeString(namePtr),
GameInterfaceHelper.ReadSeString(titlePtr),
GameInterfaceHelper.ReadSeString(freeCompanyPtr),
isTitleVisible,
isTitleAboveName,
iconId);
var beforeNameHashCode = playerNameplateOpenedArgs.Name.GetHashCode();
var beforeTitleHashCode = playerNameplateOpenedArgs.Title.GetHashCode();
var beforeFreeCompanyHashCode = playerNameplateOpenedArgs.FreeCompany.GetHashCode();
var beforeNameHashCode = playerNameplateUpdatedArgs.Name.GetHashCode();
var beforeTitleHashCode = playerNameplateUpdatedArgs.Title.GetHashCode();
var beforeFreeCompanyHashCode = playerNameplateUpdatedArgs.FreeCompany.GetHashCode();
PlayerNameplateUpdated?.Invoke(playerNameplateOpenedArgs);
PlayerNameplateUpdated?.Invoke(playerNameplateUpdatedArgs);
IntPtr newNamePtr = namePtr;
bool hasNameChanged = beforeNameHashCode != playerNameplateOpenedArgs.Name.GetHashCode();
bool hasNameChanged = beforeNameHashCode != playerNameplateUpdatedArgs.Name.GetHashCode();
if (hasNameChanged)
{
newNamePtr = Helper.Allocate(playerNameplateOpenedArgs.Name);
newNamePtr = GameInterfaceHelper.Allocate(playerNameplateUpdatedArgs.Name);
}
IntPtr newTitlePtr = titlePtr;
bool hasTitleChanged = beforeTitleHashCode != playerNameplateOpenedArgs.Title.GetHashCode();
bool hasTitleChanged = beforeTitleHashCode != playerNameplateUpdatedArgs.Title.GetHashCode();
if (hasTitleChanged)
{
newTitlePtr = Helper.Allocate(playerNameplateOpenedArgs.Title);
newTitlePtr = GameInterfaceHelper.Allocate(playerNameplateUpdatedArgs.Title);
}
IntPtr newFreeCompanyPtr = freeCompanyPtr;
bool hasFreeCompanyChanged = beforeFreeCompanyHashCode != playerNameplateOpenedArgs.FreeCompany.GetHashCode();
bool hasFreeCompanyChanged = beforeFreeCompanyHashCode != playerNameplateUpdatedArgs.FreeCompany.GetHashCode();
if (hasFreeCompanyChanged)
{
newFreeCompanyPtr = Helper.Allocate(playerNameplateOpenedArgs.FreeCompany);
newFreeCompanyPtr = GameInterfaceHelper.Allocate(playerNameplateUpdatedArgs.FreeCompany);
}
var result = m_SetPlayerNameplateHook.Original(playerNameplateObjectPtr, isTitleAboveName, isTitleVisible, newNamePtr, newTitlePtr, newFreeCompanyPtr, iconId);
var result = m_SetPlayerNameplateHook.Original(playerNameplateObjectPtr, playerNameplateUpdatedArgs.IsTitleAboveName, playerNameplateUpdatedArgs.IsTitleVisible, newNamePtr, newTitlePtr, newFreeCompanyPtr, playerNameplateUpdatedArgs.IconId);
if (hasNameChanged)
{
Helper.Free(ref newNamePtr);
GameInterfaceHelper.Free(ref newNamePtr);
}
if (hasTitleChanged)
{
Helper.Free(ref newTitlePtr);
GameInterfaceHelper.Free(ref newTitlePtr);
}
if (hasFreeCompanyChanged)
{
Helper.Free(ref newFreeCompanyPtr);
GameInterfaceHelper.Free(ref newFreeCompanyPtr);
}
return result;