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