备份CatanBuilding瘦身独立工程
This commit is contained in:
304
Assets/Scripts/DataCenter/DataCenter.SignupData.cs
Normal file
304
Assets/Scripts/DataCenter/DataCenter.SignupData.cs
Normal file
@@ -0,0 +1,304 @@
|
||||
using asap.core;
|
||||
using cfg;
|
||||
using game;
|
||||
using LitJson;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace GameCore
|
||||
{
|
||||
public class DailySignEvent
|
||||
{
|
||||
public int ID;
|
||||
//领取第几个
|
||||
public int index;
|
||||
//签到最后一次是哪一天or链式礼包PackManager.ID
|
||||
public int lastID;
|
||||
//结束时间
|
||||
public string time;
|
||||
}
|
||||
public class MonthlySignEvent
|
||||
{
|
||||
public int index;
|
||||
//结束时间
|
||||
public int Monthly;
|
||||
public DailySignEvent dailySignEvent;
|
||||
}
|
||||
public class OnSignEvent
|
||||
{
|
||||
public List<ItemData> itemDataList;
|
||||
}
|
||||
public class SigninData
|
||||
{
|
||||
private cfg.Tables _tables;
|
||||
public SigninData(cfg.Tables tables)
|
||||
{
|
||||
this._tables = tables;
|
||||
}
|
||||
|
||||
DailySignEvent _newSignEvent = null;
|
||||
MonthlySignEvent _monthlySignEvent = null;
|
||||
int _eventSignID = 0;
|
||||
|
||||
public DailySignEvent dailySignEvent
|
||||
{
|
||||
get => _monthlySignEvent == null ? null : _monthlySignEvent.dailySignEvent;
|
||||
}
|
||||
public DailySignEvent newSignEvent
|
||||
{
|
||||
get => _newSignEvent;
|
||||
set => _newSignEvent = value;
|
||||
}
|
||||
public MonthlySignEvent monthlySignEvent
|
||||
{
|
||||
get => _monthlySignEvent;
|
||||
set => _monthlySignEvent = value;
|
||||
}
|
||||
public int eventSignID => _eventSignID;
|
||||
public void SetDailySignEvent(FishingEvent t)
|
||||
{
|
||||
DateTime dateTime = ZZTimeHelper.UtcNow().UtcNowOffset();
|
||||
bool isSave = false;
|
||||
if (_monthlySignEvent == null)
|
||||
{
|
||||
_monthlySignEvent = new MonthlySignEvent()
|
||||
{
|
||||
index = 0,
|
||||
Monthly = dateTime.Month,
|
||||
};
|
||||
isSave = true;
|
||||
}
|
||||
if (_monthlySignEvent.Monthly != dateTime.Month)
|
||||
{
|
||||
DailySignEvent data = _monthlySignEvent.dailySignEvent;
|
||||
_monthlySignEvent = new MonthlySignEvent()
|
||||
{
|
||||
index = 0,
|
||||
Monthly = dateTime.Month,
|
||||
dailySignEvent = data,
|
||||
};
|
||||
isSave = true;
|
||||
}
|
||||
|
||||
int offfset = (int)dateTime.DayOfWeek - 1;
|
||||
if (t.TimeDefinition is Weekly)
|
||||
{
|
||||
Weekly weekly = (Weekly)t.TimeDefinition;
|
||||
offfset = (int)dateTime.DayOfWeek - weekly.StartTime;
|
||||
}
|
||||
if (offfset < 0)
|
||||
{
|
||||
offfset = -offfset;
|
||||
}
|
||||
else
|
||||
{
|
||||
offfset = 7 - offfset;
|
||||
}
|
||||
if (_monthlySignEvent.dailySignEvent == null ||
|
||||
GlobalUtils.TryParseDateTime(_monthlySignEvent.dailySignEvent.time, dateTime).DayOfYear
|
||||
!= dateTime.Date.AddDays(offfset).DayOfYear)
|
||||
{
|
||||
_monthlySignEvent.dailySignEvent = new DailySignEvent()
|
||||
{
|
||||
ID = t.RedirectID,
|
||||
lastID = -1,
|
||||
index = 0,
|
||||
time = dateTime.Date.AddDays(offfset).ToString()
|
||||
};
|
||||
isSave = true;
|
||||
}
|
||||
if (isSave)
|
||||
{
|
||||
PlayFabMgr.Instance.UpdateUserDataValue("MonthlySignEvent", JsonMapper.ToJson(_monthlySignEvent));
|
||||
}
|
||||
}
|
||||
public void SetEventSignEvent(FishingEvent t)
|
||||
{
|
||||
SignInit signInit = _tables.TbSignInit.GetOrDefault(t.RedirectID);
|
||||
if (signInit != null)
|
||||
{
|
||||
_eventSignID = t.RedirectID;
|
||||
UITypes.EventSignupPopupPanel_2.SetType(signInit.SpecialSignName);
|
||||
}
|
||||
}
|
||||
public void EventSignEnd()
|
||||
{
|
||||
_eventSignID = 0;
|
||||
UITypes.EventSignupPopupPanel_2.SetType("EventSignupPopupPanel_2");
|
||||
//GContext.container.Resolve<FishingEventData>().GetEventAndInit(2, 1);
|
||||
//GContext.container.Resolve<FishingEventData>().GetEventAndInit(2, 3);
|
||||
}
|
||||
public void SetNewSignEvent(FishingEvent t)
|
||||
{
|
||||
DateTime dateTime = ZZTimeHelper.UtcNow().UtcNowOffset();
|
||||
if (_tables.TbSignInit.GetOrDefault(t.RedirectID) == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
SignInit signInit = _tables.TbSignInit.GetOrDefault(t.RedirectID);
|
||||
UITypes.EventSignupPopupPanel.SetType(signInit.SpecialSignName);
|
||||
if (_newSignEvent == null || GlobalUtils.TryParseDateTime(_newSignEvent.time, ZZTimeHelper.UtcNow().UtcNowOffset()).Ticks < dateTime.Ticks)
|
||||
{
|
||||
string time = dateTime.AddDays(10).ToString();
|
||||
if (t.TimeDefinition is FixedTime)
|
||||
{
|
||||
if (GContext.container.Resolve<FishingEventData>().FixedTimeEventDic.TryGetValue(t.ID, out FixedTimeEvent fixedTimeEvent))
|
||||
{
|
||||
time = fixedTimeEvent.endTime;
|
||||
}
|
||||
else
|
||||
{
|
||||
FixedTime fixedTime = (FixedTime)t.TimeDefinition;
|
||||
time = dateTime.AddSeconds(fixedTime.StartTime).ToString();
|
||||
}
|
||||
}
|
||||
else if (t.TimeDefinition is LimitedTime)
|
||||
{
|
||||
LimitedTime limitedTime = (LimitedTime)t.TimeDefinition;
|
||||
time = GlobalUtils.TryParseDateTime(limitedTime.EndTime, ZZTimeHelper.UtcNow()).UtcNowOffset().ToString();
|
||||
}
|
||||
_newSignEvent = new DailySignEvent()
|
||||
{
|
||||
ID = t.RedirectID,
|
||||
lastID = -1,
|
||||
index = 0,
|
||||
time = time,
|
||||
};
|
||||
PlayFabMgr.Instance.UpdateUserDataValue("NewSignEvent", JsonMapper.ToJson(_newSignEvent));
|
||||
//GContext.Publish(new TargetEvent(t.ID, 3, 6));
|
||||
}
|
||||
SetNewSignRed();
|
||||
}
|
||||
public bool NewSignEventIsOpen()
|
||||
{
|
||||
return _newSignEvent != null && GlobalUtils.TryParseDateTime(_newSignEvent.time, ZZTimeHelper.UtcNow().UtcNowOffset()).Ticks > ZZTimeHelper.UtcNow().UtcNowOffset().Ticks;
|
||||
}
|
||||
public TimeSpan NewSignEventEndTime()
|
||||
{
|
||||
return GlobalUtils.TryParseDateTime(_newSignEvent.time, ZZTimeHelper.UtcNow().UtcNowOffset()) - ZZTimeHelper.UtcNow().UtcNowOffset();
|
||||
}
|
||||
//签到
|
||||
public bool OnDailySign(int index, int DropID)
|
||||
{
|
||||
if (_monthlySignEvent == null || _monthlySignEvent.dailySignEvent == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
bool isSign = SignEvent(_monthlySignEvent.dailySignEvent, index);
|
||||
if (isSign)
|
||||
{
|
||||
_monthlySignEvent.index++;
|
||||
List<ItemData> itemDataList = GContext.container.Resolve<PlayerItemData>().AddItemByDrop(DropID, false);
|
||||
#if AGG
|
||||
DateTime tomorrow = GlobalUtils.TryParseDateTime(_monthlySignEvent.dailySignEvent.time, ZZTimeHelper.UtcNow().UtcNowOffset());
|
||||
TimeSpan remaining = tomorrow - ZZTimeHelper.UtcNow().UtcNowOffset();
|
||||
using (var e = GEvent.GameEvent("user_checkin"))
|
||||
{
|
||||
e.AddContent("day_num", 7 - remaining.Days)
|
||||
.AddContent("day_count", _monthlySignEvent.dailySignEvent.index);
|
||||
if (itemDataList != null)
|
||||
{
|
||||
for (int i = 0; i < itemDataList.Count; i++)
|
||||
{
|
||||
e.AddContent($"item_{itemDataList[i].id}", itemDataList[i].count);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
List<MonthlySign> MonthlySignL = _tables.TbMonthlySign.DataList;
|
||||
List<ItemData> monthlySignReward = null;
|
||||
for (int i = 0; i < MonthlySignL.Count; i++)
|
||||
{
|
||||
if (_monthlySignEvent.index == MonthlySignL[i].SignDayAccount)
|
||||
{
|
||||
monthlySignReward = GContext.container.Resolve<PlayerItemData>().AddItemByDrop(MonthlySignL[i].DropID, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
//GContext.Publish(new ShowData());
|
||||
PlayFabMgr.Instance.UpdateUserDataValue("MonthlySignEvent", JsonMapper.ToJson(_monthlySignEvent));
|
||||
GContext.Publish(new OnSignEvent() { itemDataList = monthlySignReward });
|
||||
}
|
||||
return isSign;
|
||||
}
|
||||
|
||||
public bool OnSpecialSign(int ID, int index, int DropID)
|
||||
{
|
||||
if (_newSignEvent == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
bool isSign = SignEvent(_newSignEvent, index);
|
||||
if (isSign)
|
||||
{
|
||||
SetNewSignRed();
|
||||
List<ItemData> itemDataList = GContext.container.Resolve<PlayerItemData>().GetItemDataByDropIdAndType(DropID);
|
||||
if (itemDataList != null)
|
||||
{
|
||||
if (index == 6)
|
||||
{
|
||||
SignInit signInit = _tables.TbSignInit.GetOrDefault(ID);
|
||||
List<int> signDayList = signInit.SignDayList;
|
||||
SignReward dailySign = _tables.TbSignReward.GetOrDefault(signDayList[^1]);
|
||||
for (int i = 0; i < itemDataList.Count; i++)
|
||||
{
|
||||
itemDataList[i].count *= dailySign.Multiplier;
|
||||
}
|
||||
}
|
||||
GContext.Publish(new ShowData(itemDataList));
|
||||
GContext.container.Resolve<PlayerItemData>().AddItem(itemDataList);
|
||||
GContext.Publish(new ShowData());
|
||||
}
|
||||
PlayFabMgr.Instance.UpdateUserDataValue("NewSignEvent", JsonMapper.ToJson(_newSignEvent));
|
||||
GContext.Publish(new OnSignEvent());
|
||||
#if AGG
|
||||
DateTime tomorrow = GlobalUtils.TryParseDateTime(_newSignEvent.time, ZZTimeHelper.UtcNow().UtcNowOffset());
|
||||
TimeSpan remaining = tomorrow - ZZTimeHelper.UtcNow().UtcNowOffset();
|
||||
using (var e = GEvent.GameEvent("lv25_checkin"))
|
||||
{
|
||||
e.AddContent("day_num", _newSignEvent.index)
|
||||
.AddContent("day_count", 10 - remaining.Days);
|
||||
if (itemDataList != null)
|
||||
{
|
||||
for (int i = 0; i < itemDataList.Count; i++)
|
||||
{
|
||||
if (itemDataList[i].id == 1001)
|
||||
{
|
||||
e.AddContent("reward_hook", itemDataList[i].count);
|
||||
}
|
||||
else if (itemDataList[i].id == 1002)
|
||||
{
|
||||
e.AddContent("reward_cash", itemDataList[i].count);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
return isSign;
|
||||
}
|
||||
void SetNewSignRed()
|
||||
{
|
||||
RedPointManager.Instance.SetRedPointState("Home.Sign", _newSignEvent.lastID != ZZTimeHelper.UtcNow().UtcNowOffset().DayOfYear && _newSignEvent.index < 7);
|
||||
}
|
||||
bool SignEvent(DailySignEvent data, int index)
|
||||
{
|
||||
if (data.lastID == ZZTimeHelper.UtcNow().UtcNowOffset().DayOfYear)
|
||||
{
|
||||
ToastPanel.Show(LocalizationMgr.GetText("UI_ToastPanel_1"));
|
||||
return false;
|
||||
}
|
||||
if (index == data.index)
|
||||
{
|
||||
data.lastID = ZZTimeHelper.UtcNow().UtcNowOffset().DayOfYear;
|
||||
data.index++;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public bool DailySignIsOpen()
|
||||
{
|
||||
return _monthlySignEvent != null && _monthlySignEvent.dailySignEvent != null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user