r2mods/ilspy_dump/ror2_csproj/EclipseDifficultyMedalDispl...

86 lines
1.9 KiB
C#

using RoR2;
using UnityEngine;
using UnityEngine.UI;
public class EclipseDifficultyMedalDisplay : MonoBehaviour
{
[SerializeField]
private int eclipseLevel;
[SerializeField]
private Image iconImage;
[SerializeField]
private Sprite unearnedSprite;
[SerializeField]
private Sprite incompleteSprite;
[SerializeField]
private Sprite completeSprite;
private void OnEnable()
{
UserProfile.onSurvivorPreferenceChangedGlobal += OnSurvivorPreferenceChangedGlobal;
Refresh();
}
private void OnDisable()
{
UserProfile.onSurvivorPreferenceChangedGlobal -= OnSurvivorPreferenceChangedGlobal;
}
private void OnSurvivorPreferenceChangedGlobal(UserProfile userProfile)
{
Refresh();
}
private void Refresh()
{
LocalUser firstLocalUser = LocalUserManager.GetFirstLocalUser();
SurvivorDef survivorDef = firstLocalUser?.userProfile.GetSurvivorPreference();
if (!survivorDef)
{
return;
}
int localUserSurvivorCompletedEclipseLevel = EclipseRun.GetLocalUserSurvivorCompletedEclipseLevel(firstLocalUser, survivorDef);
if (eclipseLevel <= localUserSurvivorCompletedEclipseLevel)
{
bool flag = true;
foreach (SurvivorDef orderedSurvivorDef in SurvivorCatalog.orderedSurvivorDefs)
{
if (ShouldDisplaySurvivor(orderedSurvivorDef, firstLocalUser))
{
localUserSurvivorCompletedEclipseLevel = EclipseRun.GetLocalUserSurvivorCompletedEclipseLevel(firstLocalUser, orderedSurvivorDef);
if (localUserSurvivorCompletedEclipseLevel < eclipseLevel)
{
flag = false;
break;
}
}
}
if (flag)
{
iconImage.sprite = completeSprite;
}
else
{
iconImage.sprite = incompleteSprite;
}
}
else
{
iconImage.sprite = unearnedSprite;
}
}
private bool ShouldDisplaySurvivor(SurvivorDef survivorDef, LocalUser localUser)
{
if ((bool)survivorDef && !survivorDef.hidden)
{
return survivorDef.CheckUserHasRequiredEntitlement(localUser);
}
return false;
}
}