Files
BH3/Assets/Scripts/Assembly-CSharp/MoleMole/Config/AvatarQTEMixin.cs
2025-08-13 09:26:42 +08:00

103 lines
3.0 KiB
C#

namespace MoleMole.Config
{
[GeneratePartialHash(CombineGeneratedFile = true)]
public class AvatarQTEMixin : ConfigAbilityMixin, IHashable
{
public string[] SkillIDs;
public string ModifierName;
public string QTEName;
public DynamicFloat QTEMaxTimeSpan = DynamicFloat.ONE;
public DynamicFloat DelayQTETimeSpan = new DynamicFloat
{
fixedValue = 0.2f
};
public QTECondition[] TriggerConditions = QTECondition.EMPTY;
public QTECondition[] Conditions = QTECondition.EMPTY;
public ConfigAbilityPredicate[] Predicates = ConfigAbilityPredicate.EMPTY;
public void ObjectContentHashOnto(ref int lastHash)
{
if (SkillIDs != null)
{
string[] skillIDs = SkillIDs;
foreach (string value in skillIDs)
{
HashUtils.ContentHashOnto(value, ref lastHash);
}
}
HashUtils.ContentHashOnto(ModifierName, ref lastHash);
HashUtils.ContentHashOnto(QTEName, ref lastHash);
if (QTEMaxTimeSpan != null)
{
HashUtils.ContentHashOnto(QTEMaxTimeSpan.isDynamic, ref lastHash);
HashUtils.ContentHashOnto(QTEMaxTimeSpan.fixedValue, ref lastHash);
HashUtils.ContentHashOnto(QTEMaxTimeSpan.dynamicKey, ref lastHash);
}
if (DelayQTETimeSpan != null)
{
HashUtils.ContentHashOnto(DelayQTETimeSpan.isDynamic, ref lastHash);
HashUtils.ContentHashOnto(DelayQTETimeSpan.fixedValue, ref lastHash);
HashUtils.ContentHashOnto(DelayQTETimeSpan.dynamicKey, ref lastHash);
}
if (TriggerConditions != null)
{
QTECondition[] triggerConditions = TriggerConditions;
foreach (QTECondition qTECondition in triggerConditions)
{
HashUtils.ContentHashOnto(qTECondition.QTERange, ref lastHash);
HashUtils.ContentHashOnto((int)qTECondition.QTEType, ref lastHash);
if (qTECondition.QTEValues != null)
{
string[] qTEValues = qTECondition.QTEValues;
foreach (string value2 in qTEValues)
{
HashUtils.ContentHashOnto(value2, ref lastHash);
}
}
}
}
if (Conditions != null)
{
QTECondition[] conditions = Conditions;
foreach (QTECondition qTECondition2 in conditions)
{
HashUtils.ContentHashOnto(qTECondition2.QTERange, ref lastHash);
HashUtils.ContentHashOnto((int)qTECondition2.QTEType, ref lastHash);
if (qTECondition2.QTEValues != null)
{
string[] qTEValues2 = qTECondition2.QTEValues;
foreach (string value3 in qTEValues2)
{
HashUtils.ContentHashOnto(value3, ref lastHash);
}
}
}
}
if (Predicates == null)
{
return;
}
ConfigAbilityPredicate[] predicates = Predicates;
foreach (ConfigAbilityPredicate configAbilityPredicate in predicates)
{
if (configAbilityPredicate is IHashable)
{
HashUtils.ContentHashOnto((IHashable)configAbilityPredicate, ref lastHash);
}
}
}
public override BaseAbilityMixin CreateInstancedMixin(ActorAbility instancedAbility, ActorModifier instancedModifier)
{
return new AbilityAvatarQTEMixin(instancedAbility, instancedModifier, this);
}
}
}