NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/SignUp/SignObj.cs

82 lines
2.2 KiB
C#
Raw Normal View History

using System.Collections.Generic;
using cfg.ActorCfg;
using Framework;
using Gameplay;
using Gameplay.Net;
using Unity.Mathematics;
using ItemCount = cfg.item.ItemCounts;
public class SignObjBase
{
private int _signId;
protected SignObjBase(int signId)
{
_signId = signId;
}
protected SignObjBase()
{
}
}
public class SignObjAccumulate : SignObjBase
{
private readonly DataSign _cfg;
private int _accumulateCount; //累计签到次数
private int _cycleCount; //每次循环总次数
private readonly List<ItemCount> _itemList; //奖励道具表
private bool _isNeedShowSign;
2024-02-28 15:10:11 +08:00
private int _totalCount; //总次数
public DataSign Cfg => _cfg;
public List<ItemCount> ItemList => _itemList;
public int AccumulateCount => _accumulateCount;
public bool IsNeedToShow => _isNeedShowSign;
2024-02-28 15:10:11 +08:00
public int CycleCount => _cycleCount;
public int TotalCount => _totalCount;
private SignObjAccumulate(DataSign data)
{
_itemList = new List<ItemCount>();
_cfg = data;
var uIntCount = Actor.Instance.Logic.GetCount((uint)data.CountID);
_accumulateCount = _ParseCount(uIntCount, out _isNeedShowSign);
2024-02-28 15:10:11 +08:00
_totalCount = data.Rewards.Count;
for (int i = 0; i < data.Rewards.Count; i++)
{
var reward = data.Rewards[i];
_itemList.Add(reward);
}
}
private int _ParseCount(uint inputData, out bool isNeedSign)
{
isNeedSign = inputData > int.MaxValue;
var retInt = CommonUtils.GetIntBitByIndex(inputData, 31, true);
return retInt;
}
public static SignObjAccumulate CreateObj(int signId)
{
var tableData = TableManager.Instance.Tables.SignCfg;
var data = tableData.GetOrDefault(signId);
if (data == null)
{
DebugUtil.LogError($"////创建签到对象传入的ID有误////");
return null;
}
return new SignObjAccumulate(data);
}
public void SetIsNeedShow(bool state)
{
_isNeedShowSign = state;
}
}