Files
ft/Client/Assets/Scripts/DataCenter/TotalRechargeManager.cs
2026-06-29 21:18:33 +08:00

182 lines
7.0 KiB
C#

using asap.core;
using cfg;
using game;
using LitJson;
using System;
using System.Collections.Generic;
using UnityEngine;
namespace GameCore
{
public class TotalRechargeData
{
public int eventID;
public int progress;
public int vip;
public int oldProgress;
}
public class TotalRechargeManager
{
public const string TotalRechargeDataKey = "EventTotalRecharge";
public TotalRechargeData GetEventData()
{
var totalRechargeData = new TotalRechargeData();
string data = PlayFabMgr.Instance.GetLocalData(TotalRechargeDataKey);
if (!string.IsNullOrEmpty(data))
{
try
{
totalRechargeData = Newtonsoft.Json.JsonConvert.DeserializeObject<TotalRechargeData>(data);
if (totalRechargeData.vip > 10)
{
totalRechargeData.vip = 10;
}
}
catch (Exception e)
{
Debug.LogError(e);
totalRechargeData = new TotalRechargeData();
}
}
FishingEvent tr = GContext.container.Resolve<FishingEventData>().GetEventByTypeAndSubType(12, 1);
if (tr != null && totalRechargeData.eventID != tr.ID)
{
totalRechargeData = new TotalRechargeData();
totalRechargeData.eventID = tr.ID;
totalRechargeData.vip = GContext.container.Resolve<PlayerData>().PriceLv;
if (totalRechargeData.vip > 10)
{
totalRechargeData.vip = 10;
}
SaveTotalRechargeData(totalRechargeData);
}
return totalRechargeData;
}
public void GetTotalReward(RewardType rewardType, string textValue)
{
var totalRechargeData = GetEventData();
List<int> rewardIDs = new List<int>();
var tables = GContext.container.Resolve<Tables>();
var eventTotalRecharge = GetEventTotalRecharge(totalRechargeData);
var taskIds = eventTotalRecharge.TaskList;
var vip = totalRechargeData.vip;
int oldProgress = totalRechargeData.oldProgress;
int newProgress = totalRechargeData.progress;
int taskCount = taskIds.Count;
for (int i = 0; i < taskCount; i++)
{
int taskId = taskIds[i];
CommonTask commonTask = tables.TbCommonTask.GetOrDefault(taskId);
if (commonTask == null)
{
continue;
}
int iapid = commonTask.TaskParam[vip];
var iap = tables.TbIAPItemList.GetOrDefault(iapid);
if (oldProgress < iap.VIPPoint && newProgress >= iap.VIPPoint)
{
int rewardID = commonTask.TaskReward[vip];
rewardIDs.Add(rewardID);
#if AGG
using (var e = GEvent.GameEvent("event_totalrecharge"))
{
e.AddContent("task_id", taskId)
.AddContent("reward_id", rewardID);
}
#endif
}
}
if (rewardIDs.Count > 0)
{
PlayerItemData playerItemData = GContext.container.Resolve<PlayerItemData>();
var itemData = playerItemData.GetItemByDropListLureInflation(null, rewardIDs);
var showData = new ShowData(itemData, rewardType);
showData.textValue = textValue;
GContext.Publish(showData);
playerItemData.AddItem(itemData, null);
}
totalRechargeData.oldProgress = totalRechargeData.progress;
SaveTotalRechargeData(totalRechargeData);
}
public void AddProgress(int progress)
{
TotalRechargeData totalRechargeData = GetEventData();
if (CheckTotalRechargeOpen(totalRechargeData))
{
totalRechargeData.progress += progress;
SaveTotalRechargeData(totalRechargeData);
}
}
public bool CheckTotalRechargeOpen()
{
TotalRechargeData totalRechargeData = GetEventData();
return CheckTotalRechargeOpen(totalRechargeData);
}
EventTotalRecharge GetEventTotalRecharge(TotalRechargeData totalRechargeData)
{
if (totalRechargeData == null || totalRechargeData.eventID == 0)
{
return null;
}
var _tables = GContext.container.Resolve<Tables>();
FishingEvent fishingEvent = _tables.TbFishingEvent.GetOrDefault(totalRechargeData.eventID);
if (fishingEvent == null)
{
return null;
}
return _tables.TbEventTotalRecharge[fishingEvent.RedirectID];
}
public bool CheckTotalRechargeOpen(TotalRechargeData totalRechargeData)
{
if (totalRechargeData == null || totalRechargeData.eventID == 0)
{
return false;
}
var _tables = GContext.container.Resolve<Tables>();
FishingEvent fishingEvent = _tables.TbFishingEvent.GetOrDefault(totalRechargeData.eventID);
if (fishingEvent == null)
{
return false;
}
LimitedTime limitedTime = fishingEvent.TimeDefinition as LimitedTime;
var startTime = DateTime.Parse(limitedTime.StartTime);
var endTime = DateTime.Parse(limitedTime.EndTime);
var curTime = ZZTimeHelper.UtcNow();
if (curTime < startTime || curTime > endTime)
{
if (totalRechargeData.oldProgress != totalRechargeData.progress)
{
RewardType rewardType = RewardType.FishBoxFlyRestore;
string textValue = LocalizationMgr.GetText("UI_FishingRewardPanel_101042");
GetTotalReward(rewardType, textValue);
}
return false;
}
var eventTotalRecharge = GetEventTotalRecharge(totalRechargeData);
var taskIds = eventTotalRecharge.TaskList;
var vip = totalRechargeData.vip;
int oldProgress = totalRechargeData.oldProgress;
int taskCount = taskIds.Count;
int taskId = taskIds[^1];
CommonTask commonTask = _tables.TbCommonTask.GetOrDefault(taskId);
if (commonTask == null)
{
return false;
}
int iapid = commonTask.TaskParam[vip];
var iap = _tables.TbIAPItemList.GetOrDefault(iapid);
return totalRechargeData.oldProgress < iap.VIPPoint;
}
void SaveTotalRechargeData(TotalRechargeData totalRechargeData)
{
PlayFabMgr.Instance.UpdateUserDataValue(TotalRechargeDataKey, JsonMapper.ToJson(totalRechargeData));
}
}
}