ULockManager.cs 3.6 KB

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