using System.Collections;
|
using System.Collections.Generic;
|
using System;
|
|
using vnxbqy.UI;
|
|
public class BossRebornTask
|
{
|
public readonly int id;
|
|
public int TotalTimes; // 可完成总次数,0表示不限次数
|
public int SingleTimes; // 单次领奖需要次数
|
public List<Item> rewards = new List<Item>();
|
|
int m_CompleteTimes = 0;
|
public int completedTimes {
|
get { return m_CompleteTimes; }
|
set {
|
if (m_CompleteTimes != value)
|
{
|
m_CompleteTimes = value;
|
if (completeTimesChangeEvent != null)
|
{
|
completeTimesChangeEvent();
|
}
|
}
|
}
|
}
|
|
int m_GotRewardTimes = 0;
|
public int gotRewardTimes {
|
get { return m_GotRewardTimes; }
|
set {
|
if (m_GotRewardTimes != value)
|
{
|
m_GotRewardTimes = value;
|
if (gotRewardTimesChangeEvent != null)
|
{
|
gotRewardTimesChangeEvent();
|
}
|
}
|
}
|
}
|
|
public event Action completeTimesChangeEvent;
|
public event Action gotRewardTimesChangeEvent;
|
|
public BossRebornTask(int _id)
|
{
|
this.id = _id;
|
}
|
|
public BossRebornTask(HAB04_tagMCBossRebornInfo.tagMCBossRebornTaskInfo _taskInfo)
|
{
|
this.id = _taskInfo.TaskID;
|
ParseServerInfo(_taskInfo);
|
}
|
|
public void UpdateActivityData(int _completedTimes, int _gotRewardTimes)
|
{
|
this.completedTimes = _completedTimes;
|
this.gotRewardTimes = _gotRewardTimes;
|
}
|
|
public void UpdateActivityBaseData(HAB04_tagMCBossRebornInfo.tagMCBossRebornTaskInfo _taskInfo)
|
{
|
ParseServerInfo(_taskInfo);
|
}
|
|
public State GetState()
|
{
|
var config = BossRebornConfig.Get(this.id);
|
var totalTimes = TotalTimes == 0 ? int.MaxValue : TotalTimes;
|
if (gotRewardTimes >= totalTimes)
|
{
|
return State.Completed;
|
}
|
else if (completedTimes - gotRewardTimes >= SingleTimes)
|
{
|
return State.Rewardable;
|
}
|
else
|
{
|
return State.Normal;
|
}
|
}
|
|
private void ParseServerInfo(HAB04_tagMCBossRebornInfo.tagMCBossRebornTaskInfo _taskInfo)
|
{
|
this.TotalTimes = _taskInfo.TotalTimes;
|
this.SingleTimes = _taskInfo.SingleTimes;
|
this.rewards.Clear();
|
for (int i = 0; i < _taskInfo.AwardItemCount; i++)
|
{
|
var serverItem = _taskInfo.AwardItem[i];
|
this.rewards.Add(new Item((int)serverItem.ItemID, serverItem.ItemCount));
|
}
|
|
}
|
|
public static int SortCompare(BossRebornTask _lhs, BossRebornTask _rhs)
|
{
|
var stateA = _lhs.GetState();
|
var stateB = _rhs.GetState();
|
|
if (stateA == State.Rewardable && stateB != State.Rewardable)
|
{
|
return -1;
|
}
|
else if (stateA != State.Rewardable && stateB == State.Rewardable)
|
{
|
return 1;
|
}
|
else if (stateA == State.Normal && stateB != State.Normal)
|
{
|
return -1;
|
}
|
else if (stateA != State.Normal && stateB == State.Normal)
|
{
|
return 1;
|
}
|
else
|
{
|
var configA = BossRebornConfig.Get(_lhs.id);
|
var configB = BossRebornConfig.Get(_rhs.id);
|
return configA.order < configB.order ? -1 : 1;
|
}
|
}
|
|
public enum State
|
{
|
Normal,
|
Rewardable,
|
Completed,
|
}
|
|
}
|