using System; using System.Collections.Generic; public class OfficialRankManager : GameSystemManager { bool redpointDirty = false; #region 官职任务 //当前官职的任务状态 int taskAwardState; Dictionary taskValues = new Dictionary(); public Dictionary realMissionGuides = new Dictionary(); 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; } }