yyl
6 天以前 e40a47e6889372bfd7846d675bc931eab32220b1
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
 
 
using System;
using System.Collections.Generic;
 
public class OfficialRankManager : GameSystemManager<OfficialRankManager>
{
    bool redpointDirty = false;
 
    #region 官职任务
    //当前官职的任务状态
    int taskAwardState;
    Dictionary<int, int> taskValues = new Dictionary<int, int>();
    public Dictionary<int, int[]> realMissionGuides = new Dictionary<int, int[]>();
    public event Action RealmMissionRefreshEvent;
 
    // 返回服务端的记录任务奖励状态 0未领取  1已领取
    public int GetMissionAwardState(int id)
    {
        return (taskAwardState & (int)Math.Pow(2, id)) != 0 ? 1 : 0;
    }
 
    //任务类型    任务说明    所需值
    // 1    等级达到x级    x级        
    // 2    通关x地图x层    地图ID|层    
    // 3    消耗战锤    x个
 
    //客户端显示的任务状态 0 代表进行中 1 代表可领取 2 代表已领取
    public int GetMissionState(int realm, int missionID)
    {
        var id = RealmLVUPTaskConfig.GetID(realm, missionID);
        var config = RealmLVUPTaskConfig.Get(id);
        var type = config.TaskType;
 
        if (GetMissionAwardState(missionID) == 1)
        {
            return 2;
        }
 
        switch (type)
        {
            case 1:
                return PlayerDatas.Instance.baseData.LV >= config.NeedValueList[0] ? 1 : 0;
            case 2:
                if (config.NeedValueList[0] == 0)
                {
                    return 0;
                }
                return 0;
            case 3:
                return taskValues.ContainsKey(missionID) && taskValues[missionID] >= config.NeedValueList[0] ? 1 : 0;
            
            default:
                return 0;
        }
 
    }
 
    public int GetMissionProcess(int id)
    {
        if (taskValues.ContainsKey(id))
        {
            return taskValues[id];
        }
        return 0;
    }
 
    //type: 1等级 2通关 3消耗战锤
 
    public void RealMissionGuide(int type, int id = 0)
    {
        if (realMissionGuides.ContainsKey(type))
        {
            
            int guideIndex = 0;
            if (type == 1)
            {
                
            }
            else if (type == 2)
            {
                if (!FuncOpen.Instance.IsFuncOpen(164, true))
                {
                    return;
                }
            }
            else if (type == 3)
            {
                if (FuncOpen.Instance.IsFuncOpen(108))
                {
                    guideIndex = 1;
                }
            }
            
 
            //NewBieCenter.Instance.StartNewBieGuideEx(guideID);
        }
 
    }
 
 
    public void RequestAllAwards()
    {
        var missisons = RealmLVUPTaskConfig.GetMissionIDs(PlayerDatas.Instance.baseData.realmLevel);
        for (int i = 0; i < missisons.Count; i++)
        {
            var state = GetMissionState(PlayerDatas.Instance.baseData.realmLevel, missisons[i]);
            if (state == 1)
            {
                CA504_tagCMPlayerGetReward pak = new CA504_tagCMPlayerGetReward();
                pak.RewardType = 68;
                pak.DataEx = (uint)missisons[i];
                GameNetSystem.Instance.SendInfo(pak);
            }
        }
    }
 
    #endregion
 
    public void ReceivePackage(HA311_tagMCSyncRealmInfo package)
    {
        taskAwardState = (int)package.TaskAwardState;
        for (int i = 0; i < package.TaskValueCount; i++)
        {
            taskValues[package.TaskValueList[i].TaskID] = (int)package.TaskValueList[i].TaskValue;
        }
 
        RealmMissionRefreshEvent?.Invoke();
        redpointDirty = true;
    }
}