少年修仙传客户端代码仓库
lcy
2024-12-16 a39c35fc6449430cd02bccb681c4a0a880e46cd9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
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,
    }
 
}