using asap.core; using GameCore; using cfg; public class EventPackData { private Tables _tables = GContext.container.Resolve(); private struct Data { public int currentEventID; public int purchaseCount; public int VIPLvlWhenEventActivate; public int redirectID; public Data(int eventID = 0, int p = 0, int v = 0, int rid = 0) { currentEventID = eventID; purchaseCount = p; VIPLvlWhenEventActivate = v; redirectID = rid; } } private Data _data; public int CurrentEventID { get { return _data.currentEventID; } } public int PurchaseCount { get { return _data.purchaseCount; } } public int VIPLvlWhenEventActivated { get { return _data.VIPLvlWhenEventActivate; } } public bool IsActive => _tables.TbFishingEvent.DataMap.ContainsKey(_data.currentEventID) && (System.DateTime.Parse( (_tables.TbFishingEvent[_data.currentEventID].TimeDefinition as LimitedTime) ?.EndTime) - ZZTimeHelper.UtcNow()).TotalSeconds > 0 && PurchaseCount < _tables.TbEventPackManager[_data.redirectID].MaxCount; public EventPackData() { //Debug.Log("construct"); _data = new Data(); //PlayFabMgr.Instance.UpdateUserDataValue("EventPackData", // Newtonsoft.Json.JsonConvert.SerializeObject(_data)); } public void AddPurchaceCount() { _data.purchaseCount++; SaveEventPackData(); } /// /// Refresh and update EventPackData if current event is not the event given. Will reset current /// event if the event given is null /// /// New event public bool UpdateEventData(cfg.FishingEvent e = null) { bool isUpdated = false; if (e == null) { _data = new Data(); isUpdated = true; } else if (_data.currentEventID != e.ID) { _data = new Data(e.ID, 0, GContext.container.Resolve().PriceLv, e.RedirectID); isUpdated = true; } //else // do nothing SaveEventPackData(); return isUpdated; } public void LoadEventPackData(string s) { //Debug.Log("load epd"); _data = Newtonsoft.Json.JsonConvert.DeserializeObject(s); //Debug.Log($"load: {_data.currentEventID}"); if (!_tables.TbFishingEvent.DataMap.ContainsKey(_data.currentEventID) || (System.DateTime.Parse((_tables.TbFishingEvent[_data.currentEventID].TimeDefinition as LimitedTime).EndTime) - ZZTimeHelper.UtcNow()).TotalSeconds <= 0 ) { return; } if (_tables.TbEventPackManager[_tables.TbFishingEvent[_data.currentEventID].RedirectID].PackType != 1) { _data = new Data(); return; } if (_data.redirectID == 0) _data.redirectID = 4054001; TriggerEventPack(); } public void SaveEventPackData() { PlayFabMgr.Instance.UpdateUserDataValue("EventPackData", Newtonsoft.Json.JsonConvert.SerializeObject(_data)); } private void TriggerEventPack() { var tables = GContext.container.Resolve(); FishingEvent e = tables.TbFishingEvent.DataMap[_data.currentEventID]; int packID = _data.redirectID; var packData = tables.TbEventPackManager.DataMap[packID];//pack data read from tables // if (_data.purchaseCount < packData.MaxCount && packData.PackType == 1) //TODO:change panel according to RedirecctID of current event // GContext.container.Resolve(). // AddGiftFaceUI(e.ID, UITypes.GiftPopupPanel_9, packData.PackType, true); } }