Files
Continentis/Assets/Scripts/MainGame/Equipment/EquipmentBase.cs
SoulliesOfficial 9b1b5ca93f initial
2025-10-03 00:02:43 -04:00

73 lines
2.6 KiB
C#

using System;
using System.Collections.Generic;
using Continentis.MainGame;
using Continentis.MainGame.Card;
using Continentis.MainGame.Character;
using Sirenix.OdinInspector;
using UnityEngine;
namespace Continentis.MainGame.Equipment
{
public abstract partial class EquipmentBase
{
[Title("Equipment Data")]
public EquipmentData equipmentData;
[Title("References")]
public CharacterBase character;
[Title("Base Info")]
public Guid equipmentID;
public List<string> tags;
[Title("Submodules")]
public AttributeSubmodule coreAttributeSubmodule;
public AttributeSubmodule generalAttributeSubmodule;
public EventSubmodule eventSubmodule;
public ContentSubmodule contentSubmodule;
public void SetUp(CharacterBase character)
{
this.equipmentID = Guid.NewGuid();
this.tags = new List<string>(equipmentData.tags);
coreAttributeSubmodule = new AttributeSubmodule(this, equipmentData.coreNumericChange,
equipmentData.corePercentageChangeOfAccumulation, equipmentData.corePercentageChangeOfMultiplication);
generalAttributeSubmodule = new AttributeSubmodule(this, equipmentData.generalNumericChange,
equipmentData.generalPercentageChangeOfAccumulation, equipmentData.generalPercentageChangeOfMultiplication);
eventSubmodule = new EventSubmodule(this);
contentSubmodule = new ContentSubmodule(this);
if (character != null)
{
this.character = character;
this.character.equipmentSubmodule.currentEquipments.Add(this); //TODO: 后续换成装备函数
List<string> coreNames = coreAttributeSubmodule.GetModifiedAttributeNames();
if (coreNames.Count > 0)
{
coreAttributeSubmodule.GetModifiedAttributeNames().ForEach(attributeName =>
{
this.character.attributeSubmodule.RefreshCoreAttribute(attributeName);
});
this.character.attributeSubmodule.RefreshAllGeneralAttributes();
}
else
{
generalAttributeSubmodule.GetModifiedAttributeNames().ForEach(attributeName =>
{
this.character.attributeSubmodule.RefreshGeneralAttribute(attributeName);
});
}
}
}
}
public partial class EquipmentBase
{
}
}