r2mods/ilspy_dump/ror2_csproj/RoR2.Achievements/BaseStatMilestoneAchievemen...

63 lines
1.4 KiB
C#

using System;
using RoR2.Stats;
namespace RoR2.Achievements;
public abstract class BaseStatMilestoneAchievement : BaseAchievement
{
protected abstract StatDef statDef { get; }
protected abstract ulong statRequirement { get; }
private ulong statProgress => base.userProfile.statSheet.GetStatValueULong(statDef);
public override void OnInstall()
{
base.OnInstall();
UserProfile obj = base.userProfile;
obj.onStatsReceived = (Action)Delegate.Combine(obj.onStatsReceived, new Action(Check));
if (IsProgressiveAchievement())
{
StatDef obj2 = statDef;
obj2.onChangeCallback = (Action)Delegate.Combine(obj2.onChangeCallback, new Action(base.UpdateProgress));
}
Check();
}
public override void OnUninstall()
{
UserProfile obj = base.userProfile;
obj.onStatsReceived = (Action)Delegate.Remove(obj.onStatsReceived, new Action(Check));
if (IsProgressiveAchievement())
{
StatDef obj2 = statDef;
obj2.onChangeCallback = (Action)Delegate.Remove(obj2.onChangeCallback, new Action(base.UpdateProgress));
}
base.OnUninstall();
}
public override float ProgressForAchievement()
{
return (float)statProgress / (float)statRequirement;
}
public override ulong GetCurrentProgress()
{
return statProgress;
}
public override ulong GetProgressRequirement()
{
return statRequirement;
}
private void Check()
{
if (statProgress >= statRequirement)
{
Grant();
TryToCompleteActivity();
}
}
}