r2mods/ilspy_dump/ror2_csproj/RoR2.UI/AchievementCardController.cs

110 lines
3.1 KiB
C#

using UnityEngine;
using UnityEngine.UI;
namespace RoR2.UI;
public class AchievementCardController : MonoBehaviour
{
public Image iconImage;
public LanguageTextMeshController nameLabel;
public LanguageTextMeshController descriptionLabel;
public LayoutElement tabLayoutElement;
public float tabWidth;
public GameObject unlockedImage;
public GameObject cantBeAchievedImage;
public TooltipProvider tooltipProvider;
private static string GetAchievementParentIdentifier(string achievementIdentifier)
{
return AchievementManager.GetAchievementDef(achievementIdentifier)?.prerequisiteAchievementIdentifier;
}
private static int CalcAchievementTabCount(string achievementIdentifier)
{
int num = -1;
while (!string.IsNullOrEmpty(achievementIdentifier))
{
num++;
achievementIdentifier = GetAchievementParentIdentifier(achievementIdentifier);
}
return num;
}
public void SetAchievement(string achievementIdentifier, UserProfile userProfile)
{
AchievementDef achievementDef = AchievementManager.GetAchievementDef(achievementIdentifier);
if (achievementDef == null)
{
return;
}
bool flag = userProfile.HasAchievement(achievementIdentifier);
bool flag2 = userProfile.CanSeeAchievement(achievementIdentifier);
if ((bool)iconImage)
{
iconImage.sprite = (flag ? achievementDef.GetAchievedIcon() : achievementDef.GetUnachievedIcon());
}
if ((bool)nameLabel)
{
nameLabel.token = (userProfile.CanSeeAchievement(achievementIdentifier) ? achievementDef.nameToken : "???");
}
if ((bool)descriptionLabel)
{
descriptionLabel.token = (userProfile.CanSeeAchievement(achievementIdentifier) ? achievementDef.descriptionToken : "???");
}
if ((bool)unlockedImage)
{
unlockedImage.gameObject.SetActive(flag);
}
if ((bool)cantBeAchievedImage)
{
cantBeAchievedImage.gameObject.SetActive(!flag2);
}
if ((bool)tooltipProvider)
{
string overrideBodyText = "???";
if (flag2)
{
if (flag)
{
UnlockableDef unlockableDef = UnlockableCatalog.GetUnlockableDef(achievementDef.unlockableRewardIdentifier);
if (unlockableDef != null)
{
string @string = Language.GetString("ACHIEVEMENT_CARD_REWARD_FORMAT");
string string2 = Language.GetString(unlockableDef.nameToken);
overrideBodyText = string.Format(@string, string2);
}
}
else
{
string string3 = Language.GetString("ACHIEVEMENT_CARD_REWARD_FORMAT");
string arg = "???";
overrideBodyText = string.Format(string3, arg);
}
}
else
{
AchievementDef achievementDef2 = AchievementManager.GetAchievementDef(achievementDef.prerequisiteAchievementIdentifier);
if (achievementDef2 != null)
{
string string4 = Language.GetString("ACHIEVEMENT_CARD_PREREQ_FORMAT");
string string5 = Language.GetString(achievementDef2.nameToken);
overrideBodyText = string.Format(string4, string5);
}
}
tooltipProvider.titleToken = (flag2 ? achievementDef.nameToken : "???");
tooltipProvider.overrideBodyText = overrideBodyText;
}
if ((bool)tabLayoutElement)
{
tabLayoutElement.preferredWidth = (float)CalcAchievementTabCount(achievementIdentifier) * tabWidth;
}
}
}