using HarmonyLib;
using ItemStatsSystem;
using System.Reflection;
using UnityEngine;
namespace test
{
    /// 
    /// ItemDetailsDisplay的Harmony补丁
    /// 为Setup方法添加后缀方法,在控制台输出激活文本和Item对象的ID
    /// 
    [HarmonyPatch(typeof(Duckov.UI.ItemHoveringUI))]
    [HarmonyPatch("SetupRegisteredInfo")]
    public class ItemDetailsCatchPatch
    {
        /// 
        /// Setup方法的后缀补丁,在原始方法执行后调用
        /// 
        /// ItemDetailsDisplay实例
        /// 设置的Item对象
        [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);
                }
            }
        }
    }
}