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
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;
|
|
}
|