This commit is contained in:
SoulliesOfficial
2025-10-24 09:11:22 -04:00
parent 61a397dd4c
commit 76157e3cb1
329 changed files with 8609 additions and 4549 deletions

View File

@@ -1,4 +1,5 @@
#if UNITY_EDITOR
using System;
using UnityEditor;
using UnityEngine;
using Continentis.MainGame.Card;
@@ -12,7 +13,6 @@ namespace Continentis.MainGame.Equipment
{
// Fundamental
private SerializedProperty _haveCustomClassProp;
private SerializedProperty _classFullNameProp;
private SerializedProperty _modNameProp;
private SerializedProperty _classNameProp;
private SerializedProperty _displayNameProp;
@@ -40,7 +40,6 @@ namespace Continentis.MainGame.Equipment
base.OnEnable();
// --- 在OnEnable中找到所有属性 ---
_haveCustomClassProp = serializedObject.FindProperty("haveCustomClass");
_classFullNameProp = serializedObject.FindProperty("classFullName");
_modNameProp = serializedObject.FindProperty("modName");
_classNameProp = serializedObject.FindProperty("className");
_displayNameProp = serializedObject.FindProperty("displayName");
@@ -75,14 +74,26 @@ namespace Continentis.MainGame.Equipment
if (_haveCustomClassProp.boolValue)
{
// 如果勾选则显示class选择器 (假设基类为EquipmentBase, 命名空间为.Equipments)
DrawTypeSelectorGUI(_classFullNameProp, "Equipment Class", typeof(EquipmentBase), "Continentis.Mods", ".Equipments");
if (DrawTypeSelectorGUI(_classNameProp, "Equipment Class", typeof(EquipmentBase), out Type outType, "Continentis.Mods", ".Equipments"))
{
string className = _classNameProp.stringValue;
string modName = outType.Namespace!.Replace("Continentis.Mods.", "").Split('.')[0];
string displayName = "Card_" + modName + "_" + className + "_DisplayName";
_modNameProp.stringValue = modName;
_displayNameProp.stringValue = displayName;
}
EditorGUI.BeginDisabledGroup(true);
}
else
EditorGUILayout.PropertyField(_modNameProp);
EditorGUILayout.PropertyField(_classNameProp);
EditorGUILayout.PropertyField(_displayNameProp);
if (_haveCustomClassProp.boolValue)
{
// 如果不勾选,则显示手动输入字段
EditorGUILayout.PropertyField(_modNameProp);
EditorGUILayout.PropertyField(_classNameProp);
EditorGUILayout.PropertyField(_displayNameProp);
EditorGUI.EndDisabledGroup();
}
EditorGUILayout.PropertyField(_tagsProp, true);

View File

@@ -69,12 +69,13 @@ namespace Continentis.MainGame.Equipment
{
public static EquipmentBase GenerateEquipment(EquipmentData data, CharacterBase character = null)
{
Type logicType = data.haveCustomClass ? ModManager.GetType(data.classFullName) : typeof(EquipmentBase);
string typeID = "NoFunctionEquipment";
Type logicType = typeof(EquipmentBase);
if(logicType == null)
if (data.haveCustomClass)
{
Debug.LogError($"Card class '{data.classFullName}' not found in assemblies.");
return null;
typeID = ModManager.GetTypeID(data.modName, "Equipments", data.className);
logicType = ModManager.GetType(typeID);
}
if (Activator.CreateInstance(logicType) is EquipmentBase equipment)
@@ -85,7 +86,7 @@ namespace Continentis.MainGame.Equipment
return equipment;
}
Debug.LogError($"Failed to create equipment of type {data.classFullName}");
Debug.LogError($"Failed to create equipment of type {typeID}");
return null;
}
}

View File

@@ -15,7 +15,6 @@ namespace Continentis.MainGame.Equipment
{
[Header("Fundamental")]
public bool haveCustomClass;
public string classFullName;
public string modName;
public string className;
public string displayName;
@@ -43,12 +42,6 @@ namespace Continentis.MainGame.Equipment
//[Header("Upgrades")]
//public List<EquipmentData> upgrades;
}
public partial class EquipmentData
{
public string ModName => haveCustomClass ? classFullName.Split('_').First() : modName;
public string ClassName => haveCustomClass ? classFullName.Split('_').Last() : className;
}
public partial class EquipmentData
{