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

125 lines
3.5 KiB
C#

namespace MoleMole.Config
{
[GeneratePartialHash(CombineGeneratedFile = true)]
public class MonsterSkillIDChargeAnimatorMixin : ConfigAbilityMixin, IHashable
{
public string NextLoopTriggerID;
public string AfterSkillTriggerID;
public string[] BeforeSkillIDs;
public string[] ChargeLoopSkillIDs;
public string[] AfterSkillIDs;
public string[] TransientSkillIDs = Miscs.EMPTY_STRINGS;
public float[] ChargeLoopDurations;
public DynamicFloat ChargeTimeRatio = DynamicFloat.ONE;
public MixinEffect[] ChargeLoopEffects;
public MixinEffect[] ChargeSwitchEffects;
public string[] ChargeLoopAudioPatterns;
public string[] ChargeSwitchAudioPatterns;
public float ChargeSwitchWindow = 0.4f;
public void ObjectContentHashOnto(ref int lastHash)
{
HashUtils.ContentHashOnto(NextLoopTriggerID, ref lastHash);
HashUtils.ContentHashOnto(AfterSkillTriggerID, ref lastHash);
if (BeforeSkillIDs != null)
{
string[] beforeSkillIDs = BeforeSkillIDs;
foreach (string value in beforeSkillIDs)
{
HashUtils.ContentHashOnto(value, ref lastHash);
}
}
if (ChargeLoopSkillIDs != null)
{
string[] chargeLoopSkillIDs = ChargeLoopSkillIDs;
foreach (string value2 in chargeLoopSkillIDs)
{
HashUtils.ContentHashOnto(value2, ref lastHash);
}
}
if (AfterSkillIDs != null)
{
string[] afterSkillIDs = AfterSkillIDs;
foreach (string value3 in afterSkillIDs)
{
HashUtils.ContentHashOnto(value3, ref lastHash);
}
}
if (TransientSkillIDs != null)
{
string[] transientSkillIDs = TransientSkillIDs;
foreach (string value4 in transientSkillIDs)
{
HashUtils.ContentHashOnto(value4, ref lastHash);
}
}
if (ChargeLoopDurations != null)
{
float[] chargeLoopDurations = ChargeLoopDurations;
foreach (float value5 in chargeLoopDurations)
{
HashUtils.ContentHashOnto(value5, ref lastHash);
}
}
if (ChargeTimeRatio != null)
{
HashUtils.ContentHashOnto(ChargeTimeRatio.isDynamic, ref lastHash);
HashUtils.ContentHashOnto(ChargeTimeRatio.fixedValue, ref lastHash);
HashUtils.ContentHashOnto(ChargeTimeRatio.dynamicKey, ref lastHash);
}
if (ChargeLoopEffects != null)
{
MixinEffect[] chargeLoopEffects = ChargeLoopEffects;
foreach (MixinEffect mixinEffect in chargeLoopEffects)
{
HashUtils.ContentHashOnto(mixinEffect.EffectPattern, ref lastHash);
HashUtils.ContentHashOnto(mixinEffect.AudioPattern, ref lastHash);
}
}
if (ChargeSwitchEffects != null)
{
MixinEffect[] chargeSwitchEffects = ChargeSwitchEffects;
foreach (MixinEffect mixinEffect2 in chargeSwitchEffects)
{
HashUtils.ContentHashOnto(mixinEffect2.EffectPattern, ref lastHash);
HashUtils.ContentHashOnto(mixinEffect2.AudioPattern, ref lastHash);
}
}
if (ChargeLoopAudioPatterns != null)
{
string[] chargeLoopAudioPatterns = ChargeLoopAudioPatterns;
foreach (string value6 in chargeLoopAudioPatterns)
{
HashUtils.ContentHashOnto(value6, ref lastHash);
}
}
if (ChargeSwitchAudioPatterns != null)
{
string[] chargeSwitchAudioPatterns = ChargeSwitchAudioPatterns;
foreach (string value7 in chargeSwitchAudioPatterns)
{
HashUtils.ContentHashOnto(value7, ref lastHash);
}
}
HashUtils.ContentHashOnto(ChargeSwitchWindow, ref lastHash);
}
public override BaseAbilityMixin CreateInstancedMixin(ActorAbility instancedAbility, ActorModifier instancedModifier)
{
return new AbilityMonsterSkillIDChargeAnimatorMixin(instancedAbility, instancedModifier, this);
}
}
}