| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 | using System;using Core.Language;using Excel2Json;using Fort23.Core;using Fort23.Mono;using Fort23.UTool;using UnityEngine;using Utility;public class ULockManager : Singleton<ULockManager>{    public UnlockConfig[] Configs;    public bool Nolock;    public ULockManager()    {        Configs = ConfigComponent.Instance.GetAll<UnlockConfig>();    }    /// <summary>    /// 获取解锁表    /// </summary>    /// <param name="unLockValue">解锁值(功能ID、表ID)</param>    /// <param name="isFunction">第一个参是否为功能ID</param>    /// <returns></returns>    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();    }    /// <summary>    /// 刷新解锁状态, 影响解锁的值变化时调用(通关、飞艇升级等)    /// </summary>    public void RefreshULock()    {        EventManager.Instance.Dispatch(CustomEventType.RefreshULock, null);    }    /// <summary>    /// 解锁功能    /// </summary>    /// <param name="config">解锁表</param>    /// <returns>true表示解锁成功</returns>    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<UnlockConfig>(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<LevelBattleConfig>(unLockValue);                // tips = LanguageManager.Instance.Text(_config.UnlockTipsID, levelBattleConfig.levelName);                break;        }                return tips;    }}
 |