| 
  
 | 
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;  
 | 
    }  
 | 
}  
 |