| | |
| | | |
| | | public bool IsFuncOpen(bool isTip = false) |
| | | { |
| | | GetHistoryMaxFinishProgress(out int layerNum, out int levelNum); |
| | | if (!TryGetHistoryMaxFinishProgress(out int layerNum, out int levelNum)) |
| | | return false; |
| | | |
| | | int lv = PlayerDatas.Instance.baseData.LV; |
| | | bool isOpen = false; |
| | | if (lv >= openLV) |
| | |
| | | // 是否可以快速挑战 |
| | | public bool CanFastChallenge() |
| | | { |
| | | GetHistoryMaxFinishProgress(out int maxLayer, out int maxLevel); |
| | | if (!TryGetHistoryMaxFinishProgress(out int maxLayer, out int maxLevel)) |
| | | return false; |
| | | bool hasNext = FBDJGLevelConfig.TryGetNextLevel(maxLayer, maxLevel, out int nextLayerNum, out int nextLevelNum); |
| | | int curMaxLayer = hasNext ? nextLayerNum : maxLayer; |
| | | //若玩家历史最高层数-2>1,则次日可使用快速挑战功能 |
| | |
| | | } |
| | | |
| | | // 获取历史完成的最高层数和关卡编号 |
| | | public void GetHistoryMaxFinishProgress(out int layerNum, out int levelNum) |
| | | public bool TryGetHistoryMaxFinishProgress(out int layerNum, out int levelNum) |
| | | { |
| | | layerNum = 0; |
| | | levelNum = 0; |
| | | if (!FBDJGLevelConfig.TryGetMinFBDJGLevelConfig(out FBDJGLevelConfig minConfig)) |
| | | return; |
| | | layerNum = minConfig.LayerNum; |
| | | levelNum = minConfig.LevelNum; |
| | | if (!DungeonManager.Instance.TryGetFBInfoByMapID(DataMapID, out var fbInfo) || fbInfo == null) |
| | | return; |
| | | return false; |
| | | AnalysisFinishProgress((int)fbInfo.PassLineID, out layerNum, out levelNum); |
| | | if (layerNum <= 0 || levelNum <= 0) |
| | | return false; |
| | | return true; |
| | | } |
| | | |
| | | public void GetHistoryMaxPassLayerNum(out int layerNum) |
| | | public bool TryGetHistoryMaxPassLayerNum(out int layerNum) |
| | | { |
| | | layerNum = 0; |
| | | GetHistoryMaxFinishProgress(out int finishLayerNum, out int finishLevelNum); |
| | | if (!FBDJGLevelConfig.TryGetMinFBDJGLevelConfig(out FBDJGLevelConfig minConfig)) |
| | | return; |
| | | if (!TryGetHistoryMaxFinishProgress(out int finishLayerNum, out int finishLevelNum)) |
| | | return false; |
| | | if (!FBDJGLevelConfig.TryGetMaxLevelNumInLayer(finishLayerNum, out int maxLevelNum)) |
| | | return; |
| | | layerNum = finishLevelNum >= maxLevelNum ? finishLayerNum : Mathf.Max(finishLayerNum - 1, minConfig.LayerNum); |
| | | return false; |
| | | layerNum = finishLevelNum >= maxLevelNum ? finishLayerNum : finishLayerNum - 1; |
| | | if (layerNum <= 0) |
| | | return false; |
| | | return true; |
| | | } |
| | | |
| | | |