You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

67 lines
1.7 KiB

using System;
using UnityEngine;
public class GameModEscrListRowSlot : EscrListRowSlot
{
[SerializeField] ExtendImage modImage;
[SerializeField] ExtendText nameText;
[SerializeField] ObjectIndicator[] rewards;
[SerializeField] GameObject unlockIndicator;
[SerializeField] GameObject selectedIndicator;
GameModData gModData;
public event Action<GameModEscrListRowSlot> OnClick;
public override void SetData(object data)
{
gModData = data as GameModData;
if(gModData == null) return;
SetImage();
SetName();
SetRewards();
unlockIndicator?.SetActive(!gModData.IsUnlocked);
}
private void SetImage()
{
var hasThumbnail = gModData as IHasThumbnail;
if (hasThumbnail is null) return;
modImage?.SetImageInAtlasAsync(hasThumbnail.ThumbnailAtlasName, hasThumbnail.ThumbnailSpriteName);
}
private void SetName()
{
nameText?.SetText(LocalizationInjector.MakeToLocalizationKey(gModData.NameKey));
}
private void SetRewards()
{
var hasRewards = gModData as IHasRewards;
if (hasRewards is null) return;
var rewardList = hasRewards.GetRewardList(gModData.Level);
for (int i = 0; i < rewards.Length; i++)
{
bool isActive = i < rewardList.Count;
rewards[i].gameObject.SetActive(isActive);
if (isActive)
ObjectIndicatorSetter.SetWith(rewards[i], rewardList[i]);
}
}
public void SetActiveSelectedIndicator(bool active)
{
selectedIndicator?.SetActive(active);
}
public void OnClickSlot()
{
OnClick?.Invoke(this);
}
public override object GetData() => gModData;
}