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