ULockManager.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. using System;
  2. using Core.Language;
  3. using Excel2Json;
  4. using Fort23.Core;
  5. using Fort23.Mono;
  6. using Fort23.UTool;
  7. using UnityEngine;
  8. using Utility;
  9. public class ULockManager : Singleton<ULockManager>
  10. {
  11. public UnlockConfig[] Configs;
  12. public bool Nolock;
  13. public ULockManager()
  14. {
  15. Configs = ConfigComponent.Instance.GetAll<UnlockConfig>();
  16. }
  17. /// <summary>
  18. /// 获取解锁表
  19. /// </summary>
  20. /// <param name="unLockValue">解锁值(功能ID、表ID)</param>
  21. /// <param name="isFunction">第一个参是否为功能ID</param>
  22. /// <returns></returns>
  23. public UnlockConfig GetULockConfig(int unLockValue, bool isFunction = true)
  24. {
  25. for (int i = 0; i < Configs.Length; i++)
  26. {
  27. if (isFunction)
  28. {
  29. if (Configs[i].ulockFunction == unLockValue)
  30. {
  31. return Configs[i];
  32. }
  33. }
  34. else
  35. {
  36. if (Configs[i].ID == unLockValue)
  37. {
  38. return Configs[i];
  39. }
  40. }
  41. }
  42. if (isFunction)
  43. {
  44. LogTool.Error("功能 ulockFunction 值 配置错误,找不到这样一个功能,请请检查:" + unLockValue);
  45. }
  46. else
  47. {
  48. LogTool.Error("解锁ID配置错误,找不到这样一个功能,请请检查:" + unLockValue);
  49. }
  50. return new UnlockConfig();
  51. }
  52. /// <summary>
  53. /// 刷新解锁状态, 影响解锁的值变化时调用(通关、飞艇升级等)
  54. /// </summary>
  55. public void RefreshULock()
  56. {
  57. EventManager.Instance.Dispatch(CustomEventType.RefreshULock, null);
  58. }
  59. /// <summary>
  60. /// 解锁功能
  61. /// </summary>
  62. /// <param name="config">解锁表</param>
  63. /// <returns>true表示解锁成功</returns>
  64. public bool IsULock(UnlockConfig config)
  65. {
  66. if (Nolock)
  67. {
  68. return true;
  69. }
  70. switch (config.ulockCondition)
  71. {
  72. case 1:
  73. return PlayerManager.Instance.myHero.powerUpConfig.ID >= config.ulockValue;
  74. }
  75. return false;
  76. }
  77. public bool IsULock(int functionID)
  78. {
  79. if (Nolock)
  80. {
  81. return true;
  82. }
  83. // if (mGameRuntimeConfig.unLockAll)
  84. // {
  85. // return true;
  86. // }
  87. if (functionID <= 0)
  88. {
  89. return true;
  90. }
  91. foreach (var config in Configs)
  92. {
  93. if (config.ulockFunction == functionID)
  94. {
  95. return IsULock(config);
  96. }
  97. }
  98. return false;
  99. }
  100. public string ShowUnlockTips(int unlockConfigId)
  101. {
  102. UnlockConfig _config = ConfigComponent.Instance.Get<UnlockConfig>(unlockConfigId);
  103. if (_config.ID == 0)
  104. return "";
  105. int unLockCondition = _config.ulockCondition;
  106. int unLockValue = _config.ulockValue;
  107. string tips = String.Empty;
  108. switch (unLockCondition)
  109. {
  110. case 1: //玩家境界
  111. // LevelBattleConfig levelBattleConfig = ConfigComponent.Instance.Get<LevelBattleConfig>(unLockValue);
  112. // tips = LanguageManager.Instance.Text(_config.UnlockTipsID, levelBattleConfig.levelName);
  113. break;
  114. }
  115. return tips;
  116. }
  117. }