using UnityEngine; using UnityEngine.UI; using GameCore; using TMPro; using asap.core; using EnhancedUI.EnhancedScroller; using game; using DG.Tweening; public class EventOfferJourneyBlockView : EnhancedScrollerCellView { [SerializeField] protected Button btnIap, btnTicket, btnIapGray, btnTicketGray; [SerializeField] protected RewardItemNew reward; [SerializeField] protected TMP_Text priceIap, priceTicket, priceIapGray, priceTicketGray; [SerializeField] protected GameObject goLock, goGrandReward; [SerializeField] protected Animation aniTick; protected cfg.IAPItemList _iapItemList = null; protected PlayerItemData _playerItemData = GContext.container.Resolve(); private int _dropId, _cost; protected EState _state = EState.Locked; protected EnhancedScroller _scroller; public virtual void Start() { btnIap.onClick.AddListener(OnClickIAP); btnTicket.onClick.AddListener(OnClickTicket); btnIapGray.onClick.AddListener(OnClickGrayBtn); btnTicketGray.onClick.AddListener(OnClickGrayBtn); } public virtual void Init(EventOfferJourneyBlockData data, EState state, EnhancedScroller scroller, bool isGrandPrize = false) { // Debug.Log($"[EventOfferJourney] cell view: {data.DropId}, state: {state}, isGrandPrize: {isGrandPrize}"); _dropId = data.DropId; if (reward != null && !isGrandPrize) { if (goGrandReward != null) { goGrandReward.SetActive(false); goGrandReward.transform.localScale = Vector3.one; } reward.gameObject.SetActive(true); reward.transform.localScale = Vector3.one; reward.SetData(_playerItemData.GetItemDataOneLureInflation(null, data.DropId)); } else if (reward != null) { if (goGrandReward != null) { goGrandReward.SetActive(true); goGrandReward.transform.localScale = Vector3.one; } reward.gameObject.SetActive(false); reward.transform.localScale = Vector3.one; } else if (goGrandReward != null) { goGrandReward.transform.localScale = Vector3.one; goGrandReward.SetActive(true); } if (data.Type == EventOfferJourneyBlockData.EType.IAP) InitByIapId(data.Price); else InitByTicketCost(data.Price); btnIap.gameObject.SetActive(data.Type == EventOfferJourneyBlockData.EType.IAP); btnIapGray.gameObject.SetActive(data.Type == EventOfferJourneyBlockData.EType.IAP); btnTicket.gameObject.SetActive(data.Type == EventOfferJourneyBlockData.EType.Ticket); btnTicketGray.gameObject.SetActive(data.Type == EventOfferJourneyBlockData.EType.Ticket); if (state == EState.Bought) { if (aniTick != null) { aniTick.gameObject.SetActive(true); reward.gameObject.SetActive(false); } goLock.SetActive(false); btnIap.gameObject.SetActive(false); btnTicket.gameObject.SetActive(false); btnIapGray.gameObject.SetActive(false); btnTicketGray.gameObject.SetActive(false); } else if (state == EState.Locked) { if (aniTick != null) aniTick.gameObject.SetActive(false); goLock.SetActive(true); btnIap.gameObject.SetActive(false); btnTicket.gameObject.SetActive(false); } else { if (aniTick != null) aniTick.gameObject.SetActive(false); goLock.SetActive(false); btnIapGray.gameObject.SetActive(false); btnTicketGray.gameObject.SetActive(false); } _state = state; _scroller = scroller; } private void InitByIapId(int IapId) { _playerItemData.ResolveIapId(IapId, out _iapItemList, out var textPrice); priceIap.text = textPrice; priceIapGray.text = textPrice; } private void InitByTicketCost(int TicketCost) { priceTicket.text = TicketCost.ToString(); priceTicketGray.text = TicketCost.ToString(); _iapItemList = null; _cost = TicketCost; } protected async void OnClickIAP() { try { // var rewardItemList = _playerItemData.GetItemDataByDropId(_dropId); var data = GContext.container.Resolve(); var shotBuyTypeData = new ShopBuyTypeData { type = data.BuyType, ID = data.EventId, NoShow = true }; var res = await GContext.container.Resolve() .OnBuy(_dropId, shotBuyTypeData, _iapItemList, _playerItemData.GetItemDataByDropIdLureInflation(null, _dropId), RewardType.Normal); if (res) { //TODO: success OnPurchaseSuccessDisplay(); } else { //TODO: fail } } catch (System.Exception e) { Debug.LogError(e); } } protected void OnClickTicket() { // var rewardItemList = _playerItemData.GetItemDataByDropId(_dropId); var data = GContext.container.Resolve(); var ticketResult = data.AddTicket(-_cost); if (!ticketResult) { Debug.Log("[EventOfferJourney] Insufficient tickets."); ToastPanel.Show(LocalizationMgr.GetFormatTextValue("UI_OfferJourneyShellPanel_10", data.GetTicketName())); } else { _playerItemData.AddItemByDropLureInflation(null, _dropId, null); data.ProgressUp(); OnPurchaseSuccessDisplay(); } } protected void Reset() { try { btnIap = transform.Find("OfferJourneyShell_Reward/btn_buy/btn_green_c").GetComponent