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