using System; using CIG.Translation; using CIGEnums; using SUISS.Core; using Tweening; using UnityEngine; using UnityEngine.UI; public class DailyRewardItem : MonoBehaviour { public void Display(DailyReward reward, int dayRepresenting, int currentDay) { this._dayRepresenting = dayRepresenting; this._currentDay = currentDay; this._dayText.LocalizedString = this.GetDayLabel(); ILocalizedString localizedString = Localization.Integer(reward.Value); if (reward.Currency == "LevelUp") { this._rewardDisplayValueText.gameObject.SetActive(true); ILocalizedString localizedString2 = Localization.Format(Localization.Key("plus"), new ILocalizedString[] { localizedString }); this._rewardDisplayValueText.LocalizedString = localizedString2; localizedString = localizedString2; } else { this._rewardDisplayValueText.gameObject.SetActive(false); } this._valueRewardText.LocalizedString = localizedString; this.ApplyItemStyle(this.GetItemStyleForCurrency(reward.Currency), (float)reward.Value); this.ApplyStateLook(); } public Sprite GetCurrencyDisplaySprite() { return this._rewardDisplayImage.sprite; } public ILocalizedString GetCurrentValueDisplay() { return this._valueRewardText.LocalizedString; } private void ApplyStateLook() { this._raysActiveTweener.Stop(); DailyRewardItem.ItemState state = this.GetState(); if (state != DailyRewardItem.ItemState.Collected) { if (state == DailyRewardItem.ItemState.Inactive || state == DailyRewardItem.ItemState.Active) { this._achievedImageObject.SetActive(false); Graphic panelImage = this._panelImage; Material material = SingletonMonobehaviour.Instance.GetAsset(MaterialType.UIClip); this._rewardDisplayImage.material = material; material = material; this._raysImage.material = material; panelImage.material = material; Graphic panelImage2 = this._panelImage; Color color = Color.white; this._rewardDisplayImage.color = color; panelImage2.color = color; } } else { this._achievedImageObject.SetActive(true); Graphic panelImage3 = this._panelImage; Material material = SingletonMonobehaviour.Instance.GetAsset(MaterialType.UIClipGreyscale); this._rewardDisplayImage.material = material; material = material; this._raysImage.material = material; panelImage3.material = material; Graphic panelImage4 = this._panelImage; Color color = new Color(0.9f, 0.9f, 0.9f); this._rewardDisplayImage.color = color; color = color; this._raysImage.color = color; panelImage4.color = color; } if (state == DailyRewardItem.ItemState.Active) { this._raysActiveTweener.Play(); } } private void ApplyItemStyle(DailyRewardItem.ItemStyle itemStyle, float amountCurrency) { DailyRewardItem.ItemStyle.CurrencyValueTresholdItem item = itemStyle.GetItem(amountCurrency); this._rewardDisplayImage.sprite = item.CurrencySprite; this._panelImage.sprite = itemStyle.PanelSprite; this._rewardImageHolder.transform.localPosition = item.PlacementLocation; this._raysImage.color = itemStyle.RayColorTint; } private DailyRewardItem.ItemState GetState() { return (this._dayRepresenting != this._currentDay) ? ((this._dayRepresenting >= this._currentDay) ? DailyRewardItem.ItemState.Inactive : DailyRewardItem.ItemState.Collected) : DailyRewardItem.ItemState.Active; } private ILocalizedString GetDayLabel() { switch (this.GetState()) { case DailyRewardItem.ItemState.Collected: case DailyRewardItem.ItemState.Inactive: return Localization.Format(Localization.Key("day_x"), new ILocalizedString[] { Localization.Integer(this._dayRepresenting + 1) }); case DailyRewardItem.ItemState.Active: return Localization.Key("today"); default: return Localization.EmptyLocalizedString; } } private DailyRewardItem.ItemStyle GetItemStyleForCurrency(string currency) { if (currency != null) { if (currency == "Cash") { return this._cashItemStyle; } if (currency == "Gold") { return this._goldItemStyle; } if (currency == "XP") { return this._xpItemStyle; } if (currency == "LevelUp") { return this._levelItemStyle; } } UnityEngine.Debug.LogErrorFormat("[DayRewardItem]: No ItemStyle found for currency {0}! Returning levelItemStyle as default", new object[] { currency }); return this._levelItemStyle; } [Header("Linking")] [SerializeField] private LocalizedText _dayText; [SerializeField] private LocalizedText _valueRewardText; [SerializeField] private RectTransform _rewardImageHolder; [SerializeField] private Image _rewardDisplayImage; [SerializeField] private LocalizedText _rewardDisplayValueText; [SerializeField] private Image _panelImage; [SerializeField] private Image _raysImage; [SerializeField] private Tweener _raysActiveTweener; [SerializeField] private GameObject _achievedImageObject; [Header("Reward Assets")] [SerializeField] private DailyRewardItem.ItemStyle _xpItemStyle; [SerializeField] private DailyRewardItem.ItemStyle _cashItemStyle; [SerializeField] private DailyRewardItem.ItemStyle _goldItemStyle; [SerializeField] private DailyRewardItem.ItemStyle _levelItemStyle; private int _dayRepresenting; private int _currentDay; public enum ItemState { Collected, Active, Inactive } [Serializable] public class ItemStyle { public Sprite PanelSprite { get { return this._panelSprite; } } public Color RayColorTint { get { return this._rayColorTint; } } public DailyRewardItem.ItemStyle.CurrencyValueTresholdItem GetItem(float value) { Array.Sort(this._currencySpriteData, (DailyRewardItem.ItemStyle.CurrencyValueTresholdItem a, DailyRewardItem.ItemStyle.CurrencyValueTresholdItem b) => (int)(b.MinValueForSprite - a.MinValueForSprite)); int i = 0; int num = this._currencySpriteData.Length; while (i < num) { if (value >= this._currencySpriteData[i].MinValueForSprite) { return this._currencySpriteData[i]; } i++; } if (this._currencySpriteData.Length > 0) { return this._currencySpriteData[0]; } return default(DailyRewardItem.ItemStyle.CurrencyValueTresholdItem); } [SerializeField] private Sprite _panelSprite; [SerializeField] private Color _rayColorTint = Color.white; [SerializeField] private DailyRewardItem.ItemStyle.CurrencyValueTresholdItem[] _currencySpriteData; [Serializable] public struct CurrencyValueTresholdItem { public Sprite CurrencySprite; public Vector2 PlacementLocation; public float MinValueForSprite; } } }