hch
2 天以前 27ca4a943889eff56ec448512e274fa4feb74c08
Main/System/OfficialRank/OfficialRankManager.cs
@@ -13,8 +13,12 @@
    int taskAwardState;
    Dictionary<int, int> taskValues = new Dictionary<int, int>();
    public event Action RealmMissionRefreshEvent;
    public event Action OnOfficialCanLVUpEvent; //检测到可以升官职
    public Dictionary<int, int> mainLevelDict = new Dictionary<int, int>();    //id:索引 用于判断还需多少关
    public Dictionary<int, int> guideDict = new Dictionary<int, int>();
    public override void Init()
    {
        PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
@@ -26,9 +30,11 @@
        var levelList = MainLevelConfig.GetKeys().ToList();
        levelList.Sort();
        for (int i = 0; i < levelList.Count; i++)
        {
        {
            mainLevelDict[levelList[i]] = i;
        }
        ParseConfig();
    }
    public override void Release()
@@ -43,6 +49,13 @@
    {
        taskValues.Clear();
        taskAwardState = 0;
    }
    void ParseConfig()
    {
        var config = FuncConfigConfig.Get("Official");
        guideDict = ConfigParse.ParseIntDict(config.Numerical1);
    }
@@ -97,10 +110,8 @@
                return PlayerDatas.Instance.baseData.ExAttr1 / 100 > config.NeedValueList[0] ? 1 : 0;
            case 3:
                return taskValues.ContainsKey(missionID) && taskValues[missionID] >= config.NeedValueList[0] ? 1 : 0;
            case 4:
                return BlessLVManager.Instance.m_TreeLV >= config.NeedValueList[0] ? 1 : 0;
            default:
                return 0;
        }
@@ -191,12 +202,28 @@
                finish = false;
            }
        }
        if (finish)
            redpoint.state = RedPointState.Simple;
        CanOfficialLVUP(true);
    }
    public bool CanOfficialLVUP(bool notifyEvent = false)
    {
        //只要任务完成即可
        var ids = RealmLVUPTaskConfig.GetMissionIDs(PlayerDatas.Instance.baseData.realmLevel);
        foreach (var id in ids)
        {
            if (GetMissionState(PlayerDatas.Instance.baseData.realmLevel, id) == 0)
                return false;
        }
        if (notifyEvent)
            OnOfficialCanLVUpEvent?.Invoke();
        return true;
    }
    public Color GetOfficialRankColor(int quality)