/****************************************************
    文件：ValueTypeConversion.cs
    作者：陶长春
    邮箱：376248129@qq.com
    日期：2025年3月20日 5:44:18
    UnityVersion: 2021.3.13f1
    功能：值类型转换
*****************************************************/
using System.Collections;
using UnityEngine;
using System.Collections.Generic;
using System;

namespace TFramework
{
    public class ValueTypeConversion
    {
        public static T ParseParameter<T>(string paraamString)
        {
            return (T)ParseParameter(paraamString, typeof(T));
        }

        public static object ParseParameter(string paramString, Type targetType)
        {
            if (targetType == typeof(string))
            {
                return paramString;
            }
            else if (targetType == typeof(int))
            {
                return int.Parse(paramString);
            }
            else if (targetType == typeof(float))
            {
                return float.Parse(paramString);
            }
            else if (targetType == typeof(bool))
            {
                return bool.Parse(paramString);
            }
            else if (targetType == typeof(Vector3))
            {
                return ParseVector3(paramString);
            }
            else if (targetType == typeof(Quaternion))
            {
                return ParseQuaternion(paramString);
            }
            // 添加其他复杂类型的解析逻辑
            else
            {
                throw new NotSupportedException($"Type '{targetType.Name}' is not supported for parameter parsing.");
            }
        }

        private static Vector3 ParseVector3(string vectorString)
        {
            // 去除字符串中的 "Vector3(" 和 ")" 以及 "f"
            vectorString = vectorString.Replace("Vector3(", "").Replace(")", "").Replace("f", "");

            // 按逗号分割字符串
            string[] components = vectorString.Split(',');

            // 解析每个分量
            float x = float.Parse(components[0]);
            float y = float.Parse(components[1]);
            float z = float.Parse(components[2]);

            // 返回新的 Vector3 对象
            return new Vector3(x, y, z);
        }

        private static Quaternion ParseQuaternion(string quaternionString)
        {
            // 去除字符串中的 "Quaternion(" 和 ")" 以及 "f"
            quaternionString = quaternionString.Replace("Quaternion(", "").Replace(")", "").Replace("f", "");

            // 按逗号分割字符串
            string[] components = quaternionString.Split(',');

            // 解析每个分量
            float x = float.Parse(components[0]);
            float y = float.Parse(components[1]);
            float z = float.Parse(components[2]);
            float w = float.Parse(components[3]);

            // 返回新的 Quaternion 对象
            return new Quaternion(x, y, z, w);
        }
    }
}