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