using System; using Cute; using UnityEngine; namespace Wizard.Lottery; public class LotteryTreasureBox : MonoBehaviour { private static readonly Color COLOR_NON_ACTIVE_REWARD_IMAGE = new Color32(65, 65, 65, byte.MaxValue); private static readonly Color COLOR_NON_ACTIVE_NUM_TEXT = new Color32(100, 100, 100, byte.MaxValue); private static readonly Color COLOR_TICKET_WAIT = new Color32(90, 90, 90, byte.MaxValue); [SerializeField] protected UILabel _labelInfoText; [SerializeField] protected UILabel _labelStatus; [SerializeField] protected UILabel _labelRewardNum; [SerializeField] protected UITexture _textureRewardImage; [SerializeField] protected UITexture _textureRewardImageFg; [SerializeField] protected UISprite _spriteTreasureImage; [SerializeField] protected UILabel _labelTreasureTouch; [SerializeField] protected GameObject _touchObject; protected LotteryRewardData _lotteryRewardData; public LotteryRewardData LotteryRewardData => _lotteryRewardData; public void SetData(LotteryRewardData rewardData, string infoText, Action onClickEvent = null) { _labelInfoText.text = infoText; UIEventListener.Get(base.gameObject).onClick = null; UIEventListener.Get(base.gameObject).onClick = delegate { onClickEvent.Call(); }; UpdateData(rewardData); } public void UpdateData(LotteryRewardData rewardData) { _lotteryRewardData = rewardData; UpdateInfoLabel(); UpdateStatusText(); UpdateRewardImage(); UpdateNonActiveColor(); } protected virtual void UpdateInfoLabel() { if (_lotteryRewardData.state == LotteryRewardData.eLotteryRewardState.NotReceived) { _labelInfoText.gameObject.SetActive(value: false); } else { _labelInfoText.gameObject.SetActive(value: true); } } protected virtual void UpdateStatusText() { switch (_lotteryRewardData.state) { case LotteryRewardData.eLotteryRewardState.Unapplied: _labelStatus.text = Data.SystemText.Get("Mission_0051"); break; case LotteryRewardData.eLotteryRewardState.Applied: _labelStatus.text = Data.SystemText.Get("Mission_0053"); break; case LotteryRewardData.eLotteryRewardState.WaitResult: _labelStatus.text = Data.SystemText.Get("Mission_0052"); break; case LotteryRewardData.eLotteryRewardState.NotReceived: _labelStatus.text = string.Empty; break; case LotteryRewardData.eLotteryRewardState.Received: if (_lotteryRewardData.IsSpecial) { _labelStatus.text = string.Empty; } else { _labelStatus.text = Data.SystemText.Get("Mission_0054"); } break; default: _labelStatus.text = string.Empty; break; } } protected virtual void UpdateRewardImage() { bool flag = LotteryRewardData.state == LotteryRewardData.eLotteryRewardState.WaitResult || LotteryRewardData.state == LotteryRewardData.eLotteryRewardState.Applied; if (_textureRewardImageFg != null) { _textureRewardImageFg.gameObject.SetActive(flag); } if (_touchObject != null) { _touchObject.SetActive(LotteryRewardData.state == LotteryRewardData.eLotteryRewardState.NotReceived); } string textureRewardImage = string.Empty; ChangeSpriteSizeForTicket(isExpandSize: false); if (_lotteryRewardData.state == LotteryRewardData.eLotteryRewardState.NotReceived) { _labelRewardNum.gameObject.SetActive(value: false); string path = "box_lottery_01_close"; textureRewardImage = Toolbox.ResourcesManager.GetAssetTypePath(path, ResourcesManager.AssetLoadPathType.Lottery, isfetch: true); SetTextureRewardImage(textureRewardImage); ChangeSpriteSizeForTicket(isExpandSize: true); _labelTreasureTouch.text = GetTouchText(); } else if (_lotteryRewardData.state == LotteryRewardData.eLotteryRewardState.Received) { if (_lotteryRewardData.IsSpecial) { string path2 = "thumbnail_lottery"; textureRewardImage = Toolbox.ResourcesManager.GetAssetTypePath(path2, ResourcesManager.AssetLoadPathType.Lottery, isfetch: true); _labelRewardNum.gameObject.SetActive(value: false); } else if (_lotteryRewardData.NormalGotRewardList.Count > 0) { string textureName = _lotteryRewardData.NormalGotRewardList[0].TextureName; textureRewardImage = Toolbox.ResourcesManager.GetAssetTypePath(textureName, ResourcesManager.AssetLoadPathType.Item, isfetch: true); _labelRewardNum.gameObject.SetActive(value: true); _labelRewardNum.text = _lotteryRewardData.NormalGotRewardList[0].RewardGotNum.ToString(); } SetTextureRewardImage(textureRewardImage); } else if (_textureRewardImageFg != null && flag) { _labelRewardNum.gameObject.SetActive(value: false); string assetTypePath = Toolbox.ResourcesManager.GetAssetTypePath("thumbnail_blank", ResourcesManager.AssetLoadPathType.Lottery, isfetch: true); SetTextureRewardImage(assetTypePath); string assetTypePath2 = Toolbox.ResourcesManager.GetAssetTypePath("box_lottery_01_close", ResourcesManager.AssetLoadPathType.Lottery, isfetch: true); SetTextureRewardImageFg(assetTypePath2); } else { string path3 = "thumbnail_blank"; textureRewardImage = Toolbox.ResourcesManager.GetAssetTypePath(path3, ResourcesManager.AssetLoadPathType.Lottery, isfetch: true); _labelRewardNum.gameObject.SetActive(value: false); SetTextureRewardImage(textureRewardImage); } } protected string GetTouchText() { _ = string.Empty; return Data.SystemText.Get("Common_0146"); } private void ChangeSpriteSizeForTicket(bool isExpandSize) { _textureRewardImage.width = (isExpandSize ? 115 : 87); _textureRewardImage.height = (isExpandSize ? 115 : 87); } protected void SetTextureRewardImage(string imagePath) { _textureRewardImage.gameObject.SetActive(value: true); _spriteTreasureImage.gameObject.SetActive(value: false); _textureRewardImage.mainTexture = Toolbox.ResourcesManager.LoadObject(imagePath) as Texture; } private void SetTextureRewardImageFg(string imagePath) { _textureRewardImageFg.gameObject.SetActive(value: true); _textureRewardImageFg.mainTexture = Toolbox.ResourcesManager.LoadObject(imagePath) as Texture; _textureRewardImageFg.color = COLOR_TICKET_WAIT; } protected virtual void UpdateNonActiveColor() { switch (_lotteryRewardData.state) { case LotteryRewardData.eLotteryRewardState.Unapplied: SetNonActiveColor(isNonActive: true); break; case LotteryRewardData.eLotteryRewardState.Received: if (_lotteryRewardData.IsSpecial) { SetNonActiveColor(isNonActive: false); } else { SetNonActiveColor(isNonActive: true); } break; case LotteryRewardData.eLotteryRewardState.Applied: case LotteryRewardData.eLotteryRewardState.WaitResult: case LotteryRewardData.eLotteryRewardState.NotReceived: SetNonActiveColor(isNonActive: false); break; default: _labelStatus.text = string.Empty; break; } } protected virtual void SetNonActiveColor(bool isNonActive) { if (isNonActive) { _textureRewardImage.color = COLOR_NON_ACTIVE_REWARD_IMAGE; _labelRewardNum.color = COLOR_NON_ACTIVE_NUM_TEXT; _labelStatus.color = LabelDefine.TEXT_COLOR_CREAM; } else { _textureRewardImage.color = Color.white; _labelRewardNum.color = LabelDefine.TEXT_COLOR_NORMAL; _labelStatus.color = LabelDefine.TEXT_COLOR_NORMAL; } } }