using System; using Core.Language; using Excel2Json; using Fort23.Core; using Fort23.Mono; using Fort23.UTool; using UnityEngine; using Utility; public class ULockManager : Singleton { public UnlockConfig[] Configs; public bool Nolock; public ULockManager() { Configs = ConfigComponent.Instance.GetAll(); } /// /// 获取解锁表 /// /// 解锁值(功能ID、表ID) /// 第一个参是否为功能ID /// public UnlockConfig GetULockConfig(int unLockValue, bool isFunction = true) { for (int i = 0; i < Configs.Length; i++) { if (isFunction) { if (Configs[i].ulockFunction == unLockValue) { return Configs[i]; } } else { if (Configs[i].ID == unLockValue) { return Configs[i]; } } } if (isFunction) { LogTool.Error("功能 ulockFunction 值 配置错误,找不到这样一个功能,请请检查:" + unLockValue); } else { LogTool.Error("解锁ID配置错误,找不到这样一个功能,请请检查:" + unLockValue); } return new UnlockConfig(); } /// /// 刷新解锁状态, 影响解锁的值变化时调用(通关、飞艇升级等) /// public void RefreshULock() { EventManager.Instance.Dispatch(CustomEventType.RefreshULock, null); } /// /// 解锁功能 /// /// 解锁表 /// true表示解锁成功 public bool IsULock(UnlockConfig config) { if (Nolock) { return true; } switch (config.ulockCondition) { case 1: return PlayerManager.Instance.myHero.powerUpConfig.ID >= config.ulockValue; } return false; } public bool IsULock(int functionID) { if (Nolock) { return true; } // if (mGameRuntimeConfig.unLockAll) // { // return true; // } if (functionID <= 0) { return true; } foreach (var config in Configs) { if (config.ulockFunction == functionID) { return IsULock(config); } } return false; } public string ShowUnlockTips(int unlockConfigId) { UnlockConfig _config = ConfigComponent.Instance.Get(unlockConfigId); if (_config.ID == 0) return ""; int unLockCondition = _config.ulockCondition; int unLockValue = _config.ulockValue; string tips = String.Empty; switch (unLockCondition) { case 1: //玩家境界 // LevelBattleConfig levelBattleConfig = ConfigComponent.Instance.Get(unLockValue); // tips = LanguageManager.Instance.Text(_config.UnlockTipsID, levelBattleConfig.levelName); break; } return tips; } }