182 lines
7.0 KiB
C#
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));
|
|
}
|
|
}
|
|
}
|