176 lines
7.5 KiB
C#
176 lines
7.5 KiB
C#
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<EventPinataPackData>().AsSingleton();
|
|
GetFreshPinataPackData();
|
|
}
|
|
public EventPinataPackData GetFreshPinataPackData()
|
|
{
|
|
var pinataPack = GContext.container.Resolve<EventPinataPackData>();
|
|
if (pinataPack == null) return null;
|
|
|
|
// 获取当前开放并符合解锁条件的活动ID
|
|
var fishingEventData = GContext.container.Resolve<FishingEventData>();
|
|
|
|
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<Tables>().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<EventPinataPackData>()?.EventPinataPackMain;
|
|
UITypes.PinataPack_PonyPanel.SetType(packMain?.UIPanel?? nameof(PinataPack_PonyPanel));
|
|
GContext.container.Resolve<IFaceUIService>().AddGiftFaceUI(fishingEvent.ID, UITypes.PinataPack_PonyPanel, 0);
|
|
|
|
return pinataPack;
|
|
}
|
|
public EventPinataPackMain GetCurrentEventPinataPackMain()
|
|
{
|
|
var pinataPackData= GContext.container.Resolve<EventPinataPackData>(); ;
|
|
if (pinataPackData == null) return null;
|
|
var tables = GContext.container.Resolve<Tables>();
|
|
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<EventPinataPackData>(sData);
|
|
if (data == null) return;
|
|
var pinataPackData = GContext.container.Resolve<EventPinataPackData>();
|
|
if (pinataPackData == null)
|
|
{
|
|
GContext.container.Register<EventPinataPackData>().AsSingleton();
|
|
GContext.container.Resolve<EventPinataPackData>().SetData(data);
|
|
}
|
|
else pinataPackData.SetData(data);
|
|
|
|
GetFreshPinataPackData();
|
|
}
|
|
public void SaveData()
|
|
{
|
|
var pinataPackData = GContext.container.Resolve<EventPinataPackData>();
|
|
#if UNITY_EDITOR
|
|
Debug.Log($"jsd SaveData {JsonConvert.SerializeObject(pinataPackData)}");
|
|
#endif
|
|
PlayFabMgr.Instance.UpdateUserDataValue(nameof(EventPinataPackData), JsonConvert.SerializeObject(pinataPackData));
|
|
}
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="packData">data</param>
|
|
/// <param name="packMain">config packMain</param>
|
|
/// <param name="packConfig1">购买时的礼包</param>
|
|
/// <param name="packConfig2">点击小马掉落的礼包</param>
|
|
/// <param name="eventPackManager">config eventPackManager</param>
|
|
/// <returns></returns>
|
|
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<EventPinataPackData>();
|
|
|
|
packMain = packData?.EventPinataPackMain;
|
|
if (packMain == null)
|
|
{
|
|
Debug.LogError($" [PinataPack_PonyPanel] GetData packMain is null");
|
|
return false;
|
|
}
|
|
|
|
var vipLevel = GContext.container.Resolve<PlayerData>().PriceLv;
|
|
|
|
eventPackManager = GContext.container.Resolve<Tables>().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<Tables>().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<PlayerItemData>().GetItemDataByDropIdAndTypeLureInflation(null, packConfig_purchase.DropID);
|
|
foreach (var itemData in itemDatas)
|
|
{
|
|
var itemTmepConfig = GContext.container.Resolve<Tables>()?.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<ItemData> 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<PlayerItemData>().AddItemByDropLureInflation(null, clickDropId,null);
|
|
//判断是不是同一期活动
|
|
if(!buyType.extraPurcheData.TryGetValue("EventID",out var eventIdjToken)) return;
|
|
var eventID=(int) eventIdjToken;
|
|
var data= GContext.container.Resolve<EventPinataPackData>();
|
|
if (eventID != data.EventID)
|
|
{
|
|
//todo 保底机制
|
|
return;
|
|
}
|
|
data?.AddPurchasedCount(1);
|
|
}
|
|
|
|
public void OnOrderSuccess(ShopBuyTypeData buyType, IAPItemList iAPItemList, List<ItemData> 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<EventPinataPackData>();
|
|
if (eventID != data.EventID)
|
|
{
|
|
//todo 保底机制
|
|
return;
|
|
}
|
|
data?.AddPurchasedCount(1);
|
|
}
|
|
}
|
|
} |