using System.Collections.Generic; using asap.core; using cfg; using GameCore; using Newtonsoft.Json; using OrderManager; using UnityEngine; namespace game { public class EventPinataPackDataManager:IOrderReplenishment,IOrderSuccess { #if UNITY_EDITOR private bool m_IsCheckCondition = true; #else private bool m_IsCheckCondition = true; #endif public EventPinataPackDataManager() { GContext.container.Register().AsSingleton(); GetFreshPinataPackData(); } public EventPinataPackData GetFreshPinataPackData() { var pinataPack = GContext.container.Resolve(); if (pinataPack == null) return null; // 获取当前开放并符合解锁条件的活动ID var fishingEventData = GContext.container.Resolve(); var fishingEvent = fishingEventData.GetEventByTypeAndSubType(9, 6, m_IsCheckCondition); if (fishingEvent == null) return pinataPack; var pinataPackID = fishingEvent.RedirectID; if (pinataPackID < 0) return pinataPack; // 获取当前活动数据 var tbEventData = GContext.container.Resolve().TbEventPinataPackMain; var pinataPackMain = tbEventData?.GetOrDefault(pinataPackID); if (pinataPackMain == null) return pinataPack; var isEquelEvent = fishingEvent.ID == pinataPack.EventID; if (isEquelEvent) return pinataPack; pinataPack.EventID = fishingEvent.ID; pinataPack.PinataMainID=fishingEvent.RedirectID; pinataPack.PurchasedCount = 0; if (!pinataPack.IsActive) return pinataPack; var packMain = GContext.container.Resolve()?.EventPinataPackMain; UITypes.PinataPack_PonyPanel.SetType(packMain?.UIPanel?? nameof(PinataPack_PonyPanel)); GContext.container.Resolve().AddGiftFaceUI(fishingEvent.ID, UITypes.PinataPack_PonyPanel, 0); return pinataPack; } public EventPinataPackMain GetCurrentEventPinataPackMain() { var pinataPackData= GContext.container.Resolve(); ; if (pinataPackData == null) return null; var tables = GContext.container.Resolve(); return tables.TbEventPinataPackMain.GetOrDefault(pinataPackData.PinataMainID); } public void LoadData(string sData) { #if UNITY_EDITOR Debug.Log($"jsd EventPinataPackData LoadData sData {sData}"); #endif var data = JsonConvert.DeserializeObject(sData); if (data == null) return; var pinataPackData = GContext.container.Resolve(); if (pinataPackData == null) { GContext.container.Register().AsSingleton(); GContext.container.Resolve().SetData(data); } else pinataPackData.SetData(data); GetFreshPinataPackData(); } public void SaveData() { var pinataPackData = GContext.container.Resolve(); #if UNITY_EDITOR Debug.Log($"jsd SaveData {JsonConvert.SerializeObject(pinataPackData)}"); #endif PlayFabMgr.Instance.UpdateUserDataValue(nameof(EventPinataPackData), JsonConvert.SerializeObject(pinataPackData)); } /// /// /// /// data /// config packMain /// 购买时的礼包 /// 点击小马掉落的礼包 /// config eventPackManager /// public static bool GetData(out EventPinataPackData packData, out EventPinataPackMain packMain, out Pack packConfig_purchase, out int clickDropId, out EventPackManager eventPackManager) { packMain = null; packConfig_purchase = null; clickDropId = 0; eventPackManager = null; packData = GContext.container.Resolve(); packMain = packData?.EventPinataPackMain; if (packMain == null) { Debug.LogError($" [PinataPack_PonyPanel] GetData packMain is null"); return false; } var vipLevel = GContext.container.Resolve().PriceLv; eventPackManager = GContext.container.Resolve().TbEventPackManager?.GetOrDefault(packMain.PackId); if (eventPackManager == null) { Debug.LogError($"packMain.PackId 配置错误 packMain id: {packMain.ID}"); return false; } var packIds = eventPackManager.VIPPackList[vipLevel]; packConfig_purchase = GContext.container.Resolve().TbPack?.GetOrDefault(packIds[0]); if (packConfig_purchase == null) { Debug.LogError($"eventPackManager.VIPPackList 配置错误 VIPPackList index 0 -> id: {packIds[0]}"); return false; } var itemDatas = GContext.container.Resolve().GetItemDataByDropIdAndTypeLureInflation(null, packConfig_purchase.DropID); foreach (var itemData in itemDatas) { var itemTmepConfig = GContext.container.Resolve()?.TbItem.GetOrDefault(itemData.id); if (itemTmepConfig?.Type == 9 && itemTmepConfig?.SubType == 9) { clickDropId = itemTmepConfig.RedirectID; break; } } return true; } public void OnReplenish(ShopBuyTypeData buyType, IAPItemList iAPItemList, List itemDataGift, RewardType rewardShowType, bool voucher = false) { if(buyType.extraPurcheData==null) return; if ( !buyType.extraPurcheData.TryGetValue(nameof(EventPinataPackData), out var value)) return; // var clickDropId =(int) value; //GContext.container.Resolve().AddItemByDropLureInflation(null, clickDropId,null); //判断是不是同一期活动 if(!buyType.extraPurcheData.TryGetValue("EventID",out var eventIdjToken)) return; var eventID=(int) eventIdjToken; var data= GContext.container.Resolve(); if (eventID != data.EventID) { //todo 保底机制 return; } data?.AddPurchasedCount(1); } public void OnOrderSuccess(ShopBuyTypeData buyType, IAPItemList iAPItemList, List itemDataGift, RewardType rewardShowType, bool voucher = false) { if(buyType.extraPurcheData==null) return; if ( !buyType.extraPurcheData.TryGetValue(nameof(EventPinataPackData), out var value)) return; //判断是不是同一期活动 if(!buyType.extraPurcheData.TryGetValue("EventID",out var eventIdjToken)) return; var eventID=(int) eventIdjToken; var data= GContext.container.Resolve(); if (eventID != data.EventID) { //todo 保底机制 return; } data?.AddPurchasedCount(1); } } }