// ***********************************************************************
// Assembly : Unity
// Author : Kimch
// Created : 2017-11-14
//
// Last Modified By : Kimch
// Last Modified On :
// ***********************************************************************
//
//
// ***********************************************************************
namespace G
{
using CodeStage.AntiCheat.ObscuredTypes;
///
/// 活动信息
///
public class ActivityInfo
{
public readonly ItemActivity item;
///
/// 活动ID
///
public int id => item.id;
///
///
///
public int type => item.type;
///
/// 活动名称
///
public string name
{
get { return KLocalization.GetLocalString(item.nameId); }
}
///
/// 活动描述
///
public string description
{
get { return KLocalization.GetLocalString(item.descriptionId); }
}
///
/// 活动开始时间
///
public int startTimestamp
{
get
{
if (item.date != null && item.date.Length == 3)
{
if (item.date[0] == 1)
return /*F.Utils.Time.ToUnixTime(System.DateTime.UtcNow.Date) +*/ item.date[1];
else
return item.date[1];
}
return 0;
}
}
///
/// 活动结束时间
///
public int endTimestamp
{
get
{
if (item.date != null && item.date.Length == 3)
{
if (item.date[0] == 1)
return /*F.Utils.Time.ToUnixTime(System.DateTime.UtcNow.Date) +*/ item.date[2];
else
return item.date[2];
}
return 0;
}
}
///
/// 活动子列表
///
public readonly ActivitySubInfo[] subInfos;
///
/// 奖励
///
public readonly Item.ItemInfo[] rewardInfos;
ObscuredInt _curValue;
///
/// 活动当前完成数量 不超过1000w
///
public int curValue
{
get { return _curValue; }
set { _curValue = value; }
}
///
/// 活动最大完成数量
///
public int maxValue => subInfos != null ? subInfos.Length : 0;
ObscuredInt _curStatus;
///
/// 活动状态:0.未完成;1.已完成;2.已领取
///
public int status
{
get { return _curStatus; }
set { _curStatus = value; }
}
public ActivityInfo(ItemActivity item)
{
this.item = item;
this.rewardInfos = Item.ItemInfo.FromArray(item.rewards);
if (item.subs != null)
{
if (item.subs.Length == 2)
{
int subCount = item.subs[1] - item.subs[0] + 1;
this.subInfos = new ActivitySubInfo[subCount];
for (int i = 0; i < subCount; i++)
{
var subItem = ItemProxy.Instance.GetStaticItem(item.subs[0] + i);
subInfos[i] = new ActivitySubInfo(subItem)
{
};
}
}
else
{
this.subInfos = new ActivitySubInfo[item.subs.Length];
for (int i = 0; i < subInfos.Length; i++)
{
var subItem = ItemProxy.Instance.GetStaticItem(item.subs[i]);
subInfos[i] = new ActivitySubInfo(subItem)
{
};
}
}
}
}
public void Reset()
{
curValue = 0;
status = 0;
if (subInfos != null)
for (int i = 0; i < subInfos.Length; i++)
{
subInfos[i].Reset();
}
}
public int GetSaveData()
{
return GlobalUtils.CombineNumber824(this.status, this.curValue);
}
public void SetSaveData(int saveData)
{
GlobalUtils.SplitNumber824(saveData, out int bit8, out int bit24);
_curStatus = bit8;
_curValue = bit24;
}
}
}