Files
duckovMod/history/ItemDetailCatch.cs
2025-10-22 02:09:18 +08:00

80 lines
3.3 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using HarmonyLib;
using ItemStatsSystem;
using System.Reflection;
using UnityEngine;
namespace test
{
/// <summary>
/// ItemDetailsDisplay的Harmony补丁
/// 为Setup方法添加后缀方法在控制台输出激活文本和Item对象的ID
/// </summary>
[HarmonyPatch(typeof(Duckov.UI.ItemHoveringUI))]
[HarmonyPatch("SetupRegisteredInfo")]
public class ItemDetailsCatchPatch
{
/// <summary>
/// Setup方法的后缀补丁在原始方法执行后调用
/// </summary>
/// <param name="__instance">ItemDetailsDisplay实例</param>
/// <param name="item">设置的Item对象</param>
[HarmonyPostfix]
static void Postfix(Duckov.UI.ItemDetailsDisplay __instance, Item item)
{
if (item != null)
{
// 检查是否是ID为882的物品
if (item.TypeID == 882)
{
Debug.Log("=== 物品ID 882 的详细信息 ===");
// 获取Item类的所有字段和属性
BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;
FieldInfo[] fields = typeof(Item).GetFields(flags);
PropertyInfo[] properties = typeof(Item).GetProperties(flags);
Debug.Log("字段信息:");
foreach (FieldInfo field in fields)
{
try
{
object value = field.GetValue(item);
string valueStr = value != null ? value.ToString() : "null";
Debug.Log($" {field.FieldType} {field.Name}: {valueStr}");
}
catch (System.Exception e)
{
Debug.Log($" {field.FieldType} {field.Name}: [获取失败] {e.Message}");
}
}
Debug.Log("属性信息:");
foreach (PropertyInfo property in properties)
{
try
{
if (property.GetIndexParameters().Length == 0) // 确保不是索引器属性
{
object value = property.GetValue(item);
string valueStr = value != null ? value.ToString() : "null";
Debug.Log($" {property.PropertyType} {property.Name}: {valueStr}");
}
}
catch (System.Exception e)
{
Debug.Log($" {property.PropertyType} {property.Name}: [获取失败] {e.Message}");
}
}
Debug.Log("=== 物品ID 882 信息结束 ===");
}
else
{
// 对于其他物品,只显示基本信息
string activationText = $"displayPatch激活 Item ID: {item.TypeID}";
Debug.Log(activationText);
}
}
}
}
}