178 lines
4.9 KiB
C#
178 lines
4.9 KiB
C#
![]() |
// ***********************************************************************
|
|||
|
// Assembly : Unity
|
|||
|
// Author : Kimch
|
|||
|
// Created : 2017-11-14
|
|||
|
//
|
|||
|
// Last Modified By : Kimch
|
|||
|
// Last Modified On :
|
|||
|
// ***********************************************************************
|
|||
|
// <copyright file= "ActivityInfo" company=""></copyright>
|
|||
|
// <summary></summary>
|
|||
|
// ***********************************************************************
|
|||
|
namespace G
|
|||
|
{
|
|||
|
using CodeStage.AntiCheat.ObscuredTypes;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 活动信息
|
|||
|
/// </summary>
|
|||
|
public class ActivityInfo
|
|||
|
{
|
|||
|
public readonly ItemActivity item;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 活动ID
|
|||
|
/// </summary>
|
|||
|
public int id => item.id;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
///
|
|||
|
/// </summary>
|
|||
|
public int type => item.type;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 活动名称
|
|||
|
/// </summary>
|
|||
|
public string name
|
|||
|
{
|
|||
|
get { return KLocalization.GetLocalString(item.nameId); }
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 活动描述
|
|||
|
/// </summary>
|
|||
|
public string description
|
|||
|
{
|
|||
|
get { return KLocalization.GetLocalString(item.descriptionId); }
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 活动开始时间
|
|||
|
/// </summary>
|
|||
|
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;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 活动结束时间
|
|||
|
/// </summary>
|
|||
|
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;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 活动子列表
|
|||
|
/// </summary>
|
|||
|
public readonly ActivitySubInfo[] subInfos;
|
|||
|
/// <summary>
|
|||
|
/// 奖励
|
|||
|
/// </summary>
|
|||
|
public readonly Item.ItemInfo[] rewardInfos;
|
|||
|
|
|||
|
ObscuredInt _curValue;
|
|||
|
/// <summary>
|
|||
|
/// 活动当前完成数量 不超过1000w
|
|||
|
/// </summary>
|
|||
|
public int curValue
|
|||
|
{
|
|||
|
get { return _curValue; }
|
|||
|
set { _curValue = value; }
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 活动最大完成数量
|
|||
|
/// </summary>
|
|||
|
public int maxValue => subInfos != null ? subInfos.Length : 0;
|
|||
|
|
|||
|
ObscuredInt _curStatus;
|
|||
|
/// <summary>
|
|||
|
/// 活动状态:0.未完成;1.已完成;2.已领取
|
|||
|
/// </summary>
|
|||
|
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<ItemActivitySub>(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<ItemActivitySub>(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;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|