feat(upserver): 接入认证与KV存档并完成限定钓鱼闭环
This commit is contained in:
@@ -36,6 +36,29 @@ public class BattlePassData
|
||||
public BattlePassRecord BattlePassRecord;
|
||||
public BattleTask BattleTask;
|
||||
|
||||
internal static game.PlayerDataStorage.PlayerKVBattlePassState DecodeForKVLoad(IReadOnlyDictionary<string,string> raw,
|
||||
game.PlayerDataStorage.PlayerKVSchemaSnapshot snapshot,game.PlayerDataStorage.PlayerKVSchemaDiagnostics errors) =>
|
||||
game.PlayerDataStorage.PlayerKVSaveSchema.DecodeBattlePass(raw,snapshot,errors);
|
||||
internal void ResetForKVLoad()
|
||||
{
|
||||
BattlePassRecord=new BattlePassRecord();
|
||||
BattleTask=new BattleTask();
|
||||
}
|
||||
internal void ReplaceFromKVDecoded(game.PlayerDataStorage.PlayerKVBattlePassState state)
|
||||
{
|
||||
if(state==null) throw new ArgumentNullException(nameof(state));
|
||||
var record=new BattlePassRecord {
|
||||
ID=state.Record.ID,Level=state.Record.Level,Exp=state.Record.Exp,BuyVipToastIndex=state.Record.BuyVipToastIndex,
|
||||
IsUnlockVip=state.Record.IsUnlockVip,NormalRewardGet=new List<int>(state.Record.Normal),VipRewardGet=new List<int>(state.Record.Vip),
|
||||
LastDropIDs=new List<int>(state.Record.LastDrops),InflationRate=state.Record.Inflation
|
||||
};
|
||||
var task=new BattleTask {
|
||||
dic_dailyTasks=state.Task.Daily.ToDictionary(p=>p.Key,p=>p.Value),dic_weeklyTasks=state.Task.Weekly.ToDictionary(p=>p.Key,p=>p.Value),
|
||||
loginDays=new List<int>(state.Task.LoginDays),DailyTaskEndTime=state.Task.DailyEnd,WeeklyTaskEndTime=state.Task.WeeklyEnd
|
||||
};
|
||||
BattlePassRecord=record; BattleTask=task;
|
||||
}
|
||||
|
||||
private Tables _tables;
|
||||
|
||||
|
||||
@@ -136,20 +159,16 @@ public class BattlePassData
|
||||
|
||||
public void RefreshDaiyTask()
|
||||
{
|
||||
var bpMain = _tables.TbBattlePassMain.GetOrDefault(_tables.TbFishingEvent.GetOrDefault(BattlePassRecord.ID).RedirectID);
|
||||
if (bpMain != null)
|
||||
var fishingEvent = _tables.TbFishingEvent.GetOrDefault(BattlePassRecord.ID);
|
||||
if (fishingEvent == null) return;
|
||||
var bpMain = _tables.TbBattlePassMain.GetOrDefault(fishingEvent.RedirectID);
|
||||
if (bpMain == null) return;
|
||||
BattleTask.DailyTaskEndTime = ConvertTools.GetDateTimeYMD(ZZTimeHelper.UtcNow().UtcNowOffset()).AddDays(1);
|
||||
var dailyTasks = bpMain.DailyTaskList;
|
||||
BattleTask.dic_dailyTasks.Clear();
|
||||
foreach (var task in dailyTasks)
|
||||
{
|
||||
BattleTask.DailyTaskEndTime = ConvertTools.GetDateTimeYMD(ZZTimeHelper.UtcNow().UtcNowOffset()).AddDays(1);
|
||||
var dailyTasks = bpMain.DailyTaskList;
|
||||
BattleTask.dic_dailyTasks.Clear();
|
||||
foreach (var task in dailyTasks)
|
||||
{
|
||||
BattleTask.dic_dailyTasks.Add(task, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
BattleTask = new BattleTask();
|
||||
BattleTask.dic_dailyTasks.Add(task, 0);
|
||||
}
|
||||
GContext.Publish(new ConditionTypeEvent { type = ConditionType.LoginDays, count = 1 });
|
||||
SaveBattleTask();
|
||||
@@ -157,23 +176,17 @@ public class BattlePassData
|
||||
|
||||
public void RefreshWeeklyTask()
|
||||
{
|
||||
|
||||
var bpMain = _tables.TbBattlePassMain.GetOrDefault(_tables.TbFishingEvent.GetOrDefault(BattlePassRecord.ID).RedirectID);
|
||||
if (bpMain != null)
|
||||
var fishingEvent = _tables.TbFishingEvent.GetOrDefault(BattlePassRecord.ID);
|
||||
if (fishingEvent == null) return;
|
||||
var bpMain = _tables.TbBattlePassMain.GetOrDefault(fishingEvent.RedirectID);
|
||||
if (bpMain == null) return;
|
||||
var weeklyTasks = bpMain.WeeklyTaskList;
|
||||
BattleTask.dic_weeklyTasks.Clear();
|
||||
foreach (var task in weeklyTasks)
|
||||
{
|
||||
var weeklyTasks = bpMain.WeeklyTaskList;
|
||||
BattleTask.dic_weeklyTasks.Clear();
|
||||
foreach (var task in weeklyTasks)
|
||||
{
|
||||
BattleTask.dic_weeklyTasks.Add(task, 0);
|
||||
}
|
||||
BattleTask.WeeklyTaskEndTime = ConvertTools.GetDateTimeSunDay(ZZTimeHelper.UtcNow().UtcNowOffset()).AddDays(1);
|
||||
}
|
||||
//当前没有战令了
|
||||
else
|
||||
{
|
||||
BattleTask = new BattleTask();
|
||||
BattleTask.dic_weeklyTasks.Add(task, 0);
|
||||
}
|
||||
BattleTask.WeeklyTaskEndTime = ConvertTools.GetDateTimeSunDay(ZZTimeHelper.UtcNow().UtcNowOffset()).AddDays(1);
|
||||
BattlePassRecord.InflationRate = GContext.container.Resolve<PlayerData>().InflationRate;
|
||||
|
||||
GContext.Publish(new ConditionTypeEvent { type = ConditionType.LoginDays, count = 1 });
|
||||
@@ -207,7 +220,7 @@ public class BattlePassDataProvider : IDisposable
|
||||
private Tables _tables;
|
||||
private Dictionary<int, BattlePassLevel> dic_BPLevel;
|
||||
|
||||
public bool IsActivating => Data.BattlePassRecord.ID != 0;
|
||||
public bool IsActivating => Data.BattlePassRecord.ID != 0 && curPassMain != null;
|
||||
public bool UILockVip = false;
|
||||
public bool IsUnlockVip => Data.BattlePassRecord.IsUnlockVip == 1;
|
||||
|
||||
@@ -249,6 +262,7 @@ public class BattlePassDataProvider : IDisposable
|
||||
|
||||
public void CheckIfRefreshBattblePass()
|
||||
{
|
||||
if (!IsActivating) return;
|
||||
DateTime endTime = GContext.container.Resolve<FishingEventData>().GetEventEndTime(Data.BattlePassRecord.ID);
|
||||
|
||||
if (ZZTimeHelper.UtcNow().UtcNowOffset() >= endTime && IsActivating)
|
||||
|
||||
Reference in New Issue
Block a user