86 lines
1.9 KiB
C#
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;
|
|
}
|
|
}
|