| | |
| | | using UnityEngine; |
| | | using LitJson; |
| | | |
| | | // TODO YYL |
| | | public class FuncOpen |
| | | { |
| | | private static FuncOpen _inst = null; |
| | |
| | | |
| | | protected FuncOpen() |
| | | { |
| | | // if (Application.isEditor) |
| | | // { |
| | | // if (!Application.isPlaying) return; |
| | | // } |
| | | if (Application.isEditor) |
| | | { |
| | | if (!Application.isPlaying) return; |
| | | } |
| | | |
| | | // var allKeys = FuncOpenLVConfig.GetKeys(); |
| | | // funcArray = new int[allKeys.Count]; |
| | | // int _index = 0; |
| | | // foreach (var key in allKeys) |
| | | // { |
| | | // int func = int.Parse(key); |
| | | // funcOpenState[func] = false; |
| | | // funcArray[_index] = func; |
| | | // _index++; |
| | | // } |
| | | var allKeys = new List<int>(FuncOpenLVConfig.dic.Keys);//GetKeys(); |
| | | funcArray = new int[allKeys.Count]; |
| | | int _index = 0; |
| | | foreach (var key in allKeys) |
| | | { |
| | | int func = key; |
| | | funcOpenState[func] = false; |
| | | funcArray[_index] = func; |
| | | _index++; |
| | | } |
| | | |
| | | // DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerDataInitializeEvent; |
| | | // DTC0102_tagCDBPlayer.switchAccountEvent += SwitchAccountEvent; |
| | | DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerDataInitializeEvent; |
| | | DTC0102_tagCDBPlayer.switchAccountEvent += SwitchAccountEvent; |
| | | |
| | | // funcClientLVLimitDict.Clear(); |
| | | // var jsonConfig = JsonMapper.ToObject(FuncConfigConfig.Get("FuncLevelLimitClient").Numerical1); |
| | | // foreach (var key in jsonConfig.Keys) |
| | | // { |
| | | // funcClientLVLimitDict[int.Parse(key)] = int.Parse(jsonConfig[key].ToString()); |
| | | // } |
| | | funcClientLVLimitDict.Clear(); |
| | | var jsonConfig = JsonMapper.ToObject(FuncConfigConfig.Get("FuncLevelLimitClient").Numerical1); |
| | | foreach (var key in jsonConfig.Keys) |
| | | { |
| | | funcClientLVLimitDict[int.Parse(key)] = int.Parse(jsonConfig[key].ToString()); |
| | | } |
| | | } |
| | | |
| | | private void BeforePlayerDataInitializeEvent() |
| | | { |
| | | // for (int i = 0; i < funcArray.Length; i++) |
| | | // { |
| | | // funcOpenState[funcArray[i]] = false; |
| | | // } |
| | | for (int i = 0; i < funcArray.Length; i++) |
| | | { |
| | | funcOpenState[funcArray[i]] = false; |
| | | } |
| | | } |
| | | |
| | | private void SwitchAccountEvent() |
| | | { |
| | | // for (int i = 0; i < funcArray.Length; i++) |
| | | // { |
| | | // funcOpenState[funcArray[i]] = false; |
| | | // if (OnFuncStateChangeEvent != null) |
| | | // { |
| | | // OnFuncStateChangeEvent(funcArray[i]); |
| | | // } |
| | | // } |
| | | for (int i = 0; i < funcArray.Length; i++) |
| | | { |
| | | funcOpenState[funcArray[i]] = false; |
| | | if (OnFuncStateChangeEvent != null) |
| | | { |
| | | OnFuncStateChangeEvent(funcArray[i]); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // TaskModel m_TaskModel; |
| | |
| | | |
| | | //纯客户端的功能等级限制, key 以功能配置表的FuncLevelLimitClient为准 |
| | | //1. 精彩活动-全服红包显示等级 |
| | | // public Dictionary<int, int> funcClientLVLimitDict = new Dictionary<int, int>(); |
| | | public Dictionary<int, int> funcClientLVLimitDict = new Dictionary<int, int>(); |
| | | public bool IsClientLVLimit(int key) |
| | | { |
| | | // if (!funcClientLVLimitDict.ContainsKey(key)) |
| | | // return true; |
| | | if (!funcClientLVLimitDict.ContainsKey(key)) |
| | | return true; |
| | | |
| | | // if (PlayerDatas.Instance.baseData.LV >= funcClientLVLimitDict[key]) |
| | | // return true; |
| | | if (PlayerDatas.Instance.baseData.LV >= funcClientLVLimitDict[key]) |
| | | return true; |
| | | |
| | | return false; |
| | | } |
| | | |
| | | |
| | | public void UpdateFuncState(/*HA302_tagMCFuncOpenStateList vNetData*/) |
| | | public void UpdateFuncState(HA302_tagMCFuncOpenStateList vNetData) |
| | | { |
| | | // for (int i = 0; i < vNetData.FuncCount; i++) |
| | | // { |
| | | for (int i = 0; i < vNetData.FuncCount; i++) |
| | | { |
| | | |
| | | // var funcState = vNetData.FuncStateList[i]; |
| | | var funcState = vNetData.FuncStateList[i]; |
| | | |
| | | // bool bPerFuncIsOpen = false; |
| | | // bool bAfterFuncIsOpen = false; |
| | | bool bPerFuncIsOpen = false; |
| | | bool bAfterFuncIsOpen = false; |
| | | |
| | | // if (!funcOpenState.ContainsKey(funcState.FuncID)) |
| | | // { |
| | | // funcOpenState.Add(funcState.FuncID, funcState.State == 1); |
| | | // bAfterFuncIsOpen = true; |
| | | // } |
| | | // else |
| | | // { |
| | | // bPerFuncIsOpen = funcOpenState[funcState.FuncID]; |
| | | // funcOpenState[funcState.FuncID] = funcState.State == 1; |
| | | // bAfterFuncIsOpen = funcOpenState[funcState.FuncID]; |
| | | // } |
| | | // if (OnFuncStateChangeEvent != null) |
| | | // { |
| | | // OnFuncStateChangeEvent(funcState.FuncID); |
| | | // } |
| | | // } |
| | | if (!funcOpenState.ContainsKey(funcState.FuncID)) |
| | | { |
| | | funcOpenState.Add(funcState.FuncID, funcState.State == 1); |
| | | bAfterFuncIsOpen = true; |
| | | } |
| | | else |
| | | { |
| | | bPerFuncIsOpen = funcOpenState[funcState.FuncID]; |
| | | funcOpenState[funcState.FuncID] = funcState.State == 1; |
| | | bAfterFuncIsOpen = funcOpenState[funcState.FuncID]; |
| | | } |
| | | if (OnFuncStateChangeEvent != null) |
| | | { |
| | | OnFuncStateChangeEvent(funcState.FuncID); |
| | | } |
| | | } |
| | | } |
| | | |
| | | private bool IsFuncOpen(int key, out int errorCode) |
| | | { |
| | | |
| | | errorCode = 0; |
| | | // var config = FuncOpenLVConfig.Get(key); |
| | | // if (config == null) |
| | | // { |
| | | // return false; |
| | | // } |
| | | var config = FuncOpenLVConfig.Get(key); |
| | | if (config == null) |
| | | { |
| | | return false; |
| | | } |
| | | // if (config.LimitMagicWeapon > 0) |
| | | // { |
| | | // Treasure treasure = null; |
| | |
| | | // errorCode = 3; |
| | | // return false; |
| | | // } |
| | | // if (config.LimitLV > 0 && PlayerDatas.Instance.baseData.LV < config.LimitLV) |
| | | // { |
| | | // errorCode = 1; |
| | | // return false; |
| | | // } |
| | | // return true; |
| | | return false; |
| | | if (config.LimitLV > 0 && PlayerDatas.Instance.baseData.LV < config.LimitLV) |
| | | { |
| | | errorCode = 1; |
| | | return false; |
| | | } |
| | | return true; |
| | | // return false; |
| | | } |
| | | |
| | | public bool IsFuncOpen(int key, bool tip = false) |
| | | { |
| | | bool isOpen = false; |
| | | // if (funcOpenState.ContainsKey(key)) |
| | | // isOpen = funcOpenState[key]; |
| | | // if (!isOpen && tip) |
| | | // ProcessorFuncErrorTip(key); |
| | | if (funcOpenState.ContainsKey(key)) |
| | | isOpen = funcOpenState[key]; |
| | | if (!isOpen && tip) |
| | | ProcessorFuncErrorTip(key); |
| | | return isOpen; |
| | | } |
| | | |
| | | public void ProcessorFuncErrorTip(int key) |
| | | { |
| | | // var config = FuncOpenLVConfig.Get(key); |
| | | // if (config != null) |
| | | // { |
| | | // SoundPlayer.Instance.PlayUIAudio(SoundPlayer.defaultClickNegativeAudio); |
| | | // if (config.Tip.Equals("FuncLimit_Level")) |
| | | // { |
| | | // SysNotifyMgr.Instance.ShowTip(config.Tip); |
| | | // return; |
| | | // } |
| | | // var errorCode = 0; |
| | | // if (!IsFuncOpen(key, out errorCode)) |
| | | // { |
| | | // switch (errorCode) |
| | | // { |
| | | // case 1: |
| | | // SysNotifyMgr.Instance.ShowTip(config.Tip, Language.Get("OpenFunc4", config.LimitLV)); |
| | | // break; |
| | | // case 2: |
| | | // var treasureConfig = TreasureConfig.Get(config.LimitMagicWeapon / 100); |
| | | // SysNotifyMgr.Instance.ShowTip(config.Tip, Language.Get("OpenFunc1", treasureConfig != null ? treasureConfig.Name : string.Empty)); |
| | | // break; |
| | | // case 3: |
| | | // SysNotifyMgr.Instance.ShowTip(config.Tip, UIHelper.GetRealmName(config.LimiRealmLV, true)); |
| | | // break; |
| | | // case 4: |
| | | // if (config.LimitLV > 0) |
| | | // { |
| | | // SysNotifyMgr.Instance.ShowTip(config.Tip, Language.Get("OpenFunc2", config.LimitLV)); |
| | | // } |
| | | // else |
| | | // { |
| | | // SysNotifyMgr.Instance.ShowTip(config.Tip, Language.Get("OpenFunc3")); |
| | | // } |
| | | // break; |
| | | // } |
| | | // } |
| | | // } |
| | | var config = FuncOpenLVConfig.Get(key); |
| | | if (config != null) |
| | | { |
| | | SoundPlayer.Instance.PlayUIAudio(SoundPlayer.defaultClickNegativeAudio); |
| | | if (config.Tip.Equals("FuncLimit_Level")) |
| | | { |
| | | SysNotifyMgr.Instance.ShowTip(config.Tip); |
| | | return; |
| | | } |
| | | var errorCode = 0; |
| | | if (!IsFuncOpen(key, out errorCode)) |
| | | { |
| | | switch (errorCode) |
| | | { |
| | | case 1: |
| | | SysNotifyMgr.Instance.ShowTip(config.Tip, Language.Get("OpenFunc4", config.LimitLV)); |
| | | break; |
| | | // TODO YYL |
| | | // case 2: |
| | | // var treasureConfig = TreasureConfig.Get(config.LimitMagicWeapon / 100); |
| | | // SysNotifyMgr.Instance.ShowTip(config.Tip, Language.Get("OpenFunc1", treasureConfig != null ? treasureConfig.Name : string.Empty)); |
| | | // break; |
| | | // case 3: |
| | | // SysNotifyMgr.Instance.ShowTip(config.Tip, UIHelper.GetRealmName(config.LimiRealmLV, true)); |
| | | // break; |
| | | case 4: |
| | | if (config.LimitLV > 0) |
| | | { |
| | | SysNotifyMgr.Instance.ShowTip(config.Tip, Language.Get("OpenFunc2", config.LimitLV)); |
| | | } |
| | | else |
| | | { |
| | | SysNotifyMgr.Instance.ShowTip(config.Tip, Language.Get("OpenFunc3")); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | public int GetLimitLv(int key) |