FunctionOpenDataManager.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. using System.Collections.Generic;
  2. using UnityEngine;
  3. namespace GFGGame
  4. {
  5. public class FunctionOpenDataManager : SingletonBase<FunctionOpenDataManager>
  6. {
  7. /// <summary>
  8. /// 根据功能名检测功能是否开启
  9. /// </summary>
  10. /// <param name="viewName"></param>
  11. /// <returns></returns>
  12. public bool CheckIsFunOpenBgViewName(string viewName, bool showTips = true)
  13. {
  14. FunctionOpenCfg cfg = FunctionOpenCfgArray.Instance.GetCfg(viewName);
  15. if (cfg == null)
  16. {
  17. // Debug.LogWarning("g功能.xlsx 功能开启_FunctionOpenCfg 未添加 " + viewName + " 的配置");
  18. return true;//未配置功能开启的暂时默认开启
  19. }
  20. if (cfg.parentId != null && cfg.parentId != "")
  21. {
  22. //先检查父功能是否开启
  23. if (!CheckIsFunOpenBgViewName(cfg.parentId))
  24. {
  25. return false;
  26. }
  27. }
  28. if (!CheckIsChapterFunOpen(cfg, showTips)) return false;
  29. if (!CheckIsLvFunOpen(cfg, showTips)) return false;
  30. return true;
  31. }
  32. /// <summary>
  33. /// 根据章节Id检测是否有新功能开启
  34. /// </summary>
  35. public void CheckHasChapterFunOpen(int chapterId, int level)
  36. {
  37. FunctionOpenCfg[] cfgs = FunctionOpenCfgArray.Instance.dataArray;
  38. List<string> listCfg = new List<string>();
  39. for (int i = 0; i < cfgs.Length; i++)
  40. {
  41. if (cfgs[i].show == 0) continue;
  42. if (cfgs[i].chapterId != chapterId || cfgs[i].level != level || !CheckIsChapterFunOpen(cfgs[i], false)) continue;
  43. if (!CheckIsLvFunOpen(cfgs[i], false)) continue;
  44. listCfg.Add(cfgs[i].id);
  45. }
  46. if (listCfg.Count > 0)
  47. {
  48. ViewManager.Show<FunctionOpenView>(listCfg);
  49. }
  50. }
  51. /// <summary>
  52. /// 根据角色Lv检测是否有新功能开启
  53. /// </summary>
  54. public void CheckHasLvFunOpen(int lv)
  55. {
  56. FunctionOpenCfg[] cfgs = FunctionOpenCfgArray.Instance.dataArray;
  57. List<string> listCfg = new List<string>();
  58. for (int i = 0; i < cfgs.Length; i++)
  59. {
  60. if (cfgs[i].show == 0) continue;
  61. if (lv != cfgs[i].lv || !CheckIsLvFunOpen(cfgs[i], false)) continue;
  62. if (!CheckIsChapterFunOpen(cfgs[i], false)) continue;
  63. listCfg.Add(cfgs[i].id);
  64. }
  65. if (listCfg.Count > 0)
  66. {
  67. ViewManager.Show<FunctionOpenView>(listCfg);
  68. }
  69. }
  70. //检测配置章节是否开启
  71. private bool CheckIsChapterFunOpen(FunctionOpenCfg cfg, bool showTips = true)
  72. {
  73. if (cfg.chapterId > 0 && cfg.level <= 0 || cfg.level > 0 && cfg.chapterId <= 0)
  74. {
  75. if (showTips) PromptController.Instance.ShowFloatTextPrompt("功能暂未开启,敬请期待");
  76. return false;
  77. }
  78. if (cfg.chapterId > 0 && StoryDataManager.CheckLevelPass(cfg.chapterId, cfg.level))
  79. {
  80. return true;
  81. }
  82. if (showTips) PromptController.Instance.ShowFloatTextPrompt("功能暂未开启,敬请期待");
  83. return false;
  84. }
  85. //检测配置角色是否开启
  86. private bool CheckIsLvFunOpen(FunctionOpenCfg cfg, bool showTips = true)
  87. {
  88. if (RoleDataManager.lvl >= cfg.lv)
  89. {
  90. return true;
  91. }
  92. if (showTips) PromptController.Instance.ShowFloatTextPrompt("功能暂未开启,敬请期待");
  93. return false;
  94. }
  95. }
  96. }