r2mods/ilspy_dump/ror2_csproj/RoR2/LevelUpEffectManager.cs

62 lines
1.7 KiB
C#
Raw Normal View History

2024-10-04 07:26:37 +00:00
using UnityEngine;
namespace RoR2;
public class LevelUpEffectManager
{
private static float levelUpEffectInterval = 0.25f;
private static float levelUpEffectJitter = 0.25f;
private static int pendingLevelUpEffects = 0;
[RuntimeInitializeOnLoadMethod]
private static void Init()
{
GlobalEventManager.onTeamLevelUp += OnTeamLevelUp;
GlobalEventManager.onCharacterLevelUp += OnCharacterLevelUp;
Run.onRunAmbientLevelUp += OnRunAmbientLevelUp;
}
private static void OnTeamLevelUp(TeamIndex teamIndex)
{
if (TeamComponent.GetTeamMembers(teamIndex).Count > 0)
{
Util.PlaySound(TeamCatalog.GetTeamDef(teamIndex)?.levelUpSound, RoR2Application.instance.gameObject);
}
}
private static void OnCharacterLevelUp(CharacterBody characterBody)
{
GameObject levelUpEffect = TeamCatalog.GetTeamDef(characterBody.teamComponent.teamIndex)?.levelUpEffect;
if (!characterBody)
{
return;
}
Transform transform = (characterBody.mainHurtBox ? characterBody.mainHurtBox.transform : characterBody.transform);
EffectData effectData = new EffectData
{
origin = transform.position
};
if ((bool)characterBody.mainHurtBox)
{
effectData.SetHurtBoxReference(characterBody.gameObject);
effectData.scale = characterBody.radius;
}
RoR2Application.fixedTimeTimers.CreateTimer((float)pendingLevelUpEffects * levelUpEffectInterval + Random.value * levelUpEffectJitter, delegate
{
if ((bool)characterBody)
{
EffectManager.SpawnEffect(levelUpEffect, effectData, transmit: false);
}
levelUpEffectInterval -= 1f;
});
levelUpEffectInterval += 1f;
}
private static void OnRunAmbientLevelUp(Run run)
{
Util.PlaySound("Play_UI_levelUp_enemy", RoR2Application.instance.gameObject);
}
}