Files
back_cantanBuilding/Assets/Scripts/EventStrikeLucky/EventLuckyTriplePackPanel.cs
2026-05-26 16:15:54 +08:00

138 lines
4.3 KiB
C#

using UnityEngine;
using UnityEngine.UI;
using GameCore;
using System;
using asap.core;
using cfg;
using System.Collections.Generic;
using System.Linq;
public class EventLuckyTriplePackPanel : MonoBehaviour
{
[SerializeField] private Button btnClose;
[SerializeField] private BingoTimer timer;
[SerializeField] private EventLuckyTriplePackContentView[] packViewList;
private int _eventId;
public void Start()
{
btnClose.onClick.AddListener(OnClickClose);
}
public void Init(EventLuckyTriplePackData data)
{
// var packData = EventLuckMagicAct.TableContext.GetTriplePackData();
timer.Init(data.ToTimerContext(OnClickClose));
for (int i = 0; i < packViewList.Length; i++)
{
var iap = data.PackDataList[i].IAPItemList;
var dropId = data.PackDataList[i].DropId;
packViewList[i].Init(data.PackDataList[i], () => OnClickBuy(dropId, iap));
}
_eventId = data.EventId;
}
private async void OnClickBuy(int dropId, IAPItemList iap)
{
try
{
var shopBuyTypeData = new ShopBuyTypeData
{
type = ShopBuyType.EventPack,
ID = _eventId
};
bool res = await GContext.container.Resolve<PlayerShopData>().OnBuy(dropId, shopBuyTypeData, iap,
GContext.container.Resolve<PlayerItemData>().GetItemDataByDropId(dropId));
if (res)
{
Debug.Log("[LuckTriplePack] Purchase Success.");
OnClickClose();
}
}
catch (Exception e)
{
Debug.Log($"[EventLuckyPack] Purchase Error.");
Debug.LogError(e);
}
}
private void OnClickClose()
{
UIManager.Instance.DestroyUI(gameObject.name);
}
}
public class EventLuckyTriplePackData
{
public DateTime ExpiryTime { get; set; }
public DateTime StartTime { get; set; }
public EventLuckyTriplePackContentData[] PackDataList { get; set; }
public int EventId { get; set; }
public ITimerContext ToTimerContext(Action onExpire)
{
return new TimerContext
{
ExpiryTime = ExpiryTime,
StartTime = StartTime,
OnExpire = onExpire
};
}
public static EventLuckyTriplePackData Create(int eventId, int packId)
{
var _tableEvent = GContext.container.Resolve<Tables>().TbFishingEvent[eventId];
var res = new EventLuckyTriplePackData();
var expireTime = new DateTime();
try
{
expireTime = DateTime.Parse((_tableEvent.TimeDefinition as LimitedTime).EndTime);
}
catch (Exception e)
{
Debug.Log($"[EventLuckMagic] {e.Message}\n{e.StackTrace}");
return null;
}
res.ExpiryTime = expireTime;
var startTime = new DateTime();
try
{
startTime = DateTime.Parse((_tableEvent.TimeDefinition as LimitedTime).StartTime);
}
catch (Exception e)
{
Debug.Log($"[EventLuckMagic] {e.Message}\n{e.StackTrace}");
return null;
}
res.ExpiryTime = expireTime;
var packDataList = new List<EventLuckyTriplePackContentData>();
var playerVipLevel = GContext.container.Resolve<PlayerData>().PriceLv;
var _packData = GContext.container.Resolve<Tables>().TbEventPackManager[packId];
var packIdList = playerVipLevel < _packData.VIPPackList.Count ? _packData.VIPPackList[playerVipLevel] : _packData.VIPPackList.Last();
for (int i = 0; i < packIdList.Count; i++)
{
var p = GContext.container.Resolve<Tables>().TbPack[packIdList[i]];
var d = new EventLuckyTriplePackContentData();
d.Rewards = GContext.container.Resolve<PlayerItemData>().GetItemDataByDropId(p.DropID).ToArray();
d.Discount = p.Rebate;
d.IAPItemList = GContext.container.Resolve<Tables>().TbIAPItemList.GetOrDefault(p.IAPID);
//Debug.Log($"_iap: {_iap}");
var sdde = new SKUDetailDataEvent(d.IAPItemList);
GContext.Publish(sdde);
d.TextPrice = sdde.price;
d.DropId = p.DropID;
packDataList.Add(d);
}
res.PackDataList = packDataList.ToArray();
res.EventId = _tableEvent.ID;
return res;
}
}