InstanceZonesDataManager.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System.Collections.Generic;
  2. namespace GFGGame
  3. {
  4. public class InstanceZonesDataManager
  5. {
  6. //关卡配置表的id
  7. public static int currentLevelCfgId;
  8. //副本通关状态,key为(副本类型+副本id*1000),值为通到第几关
  9. private static Dictionary<int, int> _passLevel = new Dictionary<int, int>();
  10. /// <summary>
  11. /// 获取副本通关关卡
  12. /// </summary>
  13. /// <param name="type" value="副本类型"></param>
  14. /// <param name="subType" value="章节id"></param>
  15. /// <returns></returns>
  16. public static int GetPassLevelCfgId(int type, int subType, int chapterId)
  17. {
  18. var key = CalculateHelper.GenerateInstanceZonesLevelStateKey(type, subType, chapterId);
  19. if (_passLevel.TryGetValue(key, out var value))
  20. {
  21. return value;
  22. }
  23. return 0;
  24. }
  25. public static int GetPassLevelOrder(int type, int subType, int chapterId)
  26. {
  27. var levelCfgId = GetPassLevelCfgId(type, subType, chapterId);
  28. var levelCfg = StoryLevelCfgArray.Instance.GetCfg(levelCfgId);
  29. if (levelCfg != null)
  30. {
  31. return levelCfg.order;
  32. }
  33. return 0;
  34. }
  35. /// <summary>
  36. /// 检查某关卡是否通过,参数为关卡配置id
  37. /// </summary>
  38. /// <param name="levelCfgId"></param>
  39. /// <returns></returns>
  40. public static bool CheckLevelPass(int levelCfgId)
  41. {
  42. var levelCfg = StoryLevelCfgArray.Instance.GetCfg(levelCfgId);
  43. if (levelCfg != null)
  44. {
  45. var passLevelOrder = InstanceZonesDataManager.GetPassLevelOrder(levelCfg.type, levelCfg.subType, levelCfg.chapterId);
  46. return levelCfg.order <= passLevelOrder;
  47. }
  48. return false;
  49. }
  50. /// <summary>
  51. /// 检查某章是否通关
  52. /// </summary>
  53. /// <param name="type"></param>
  54. /// <param name="subType"></param>
  55. /// <param name="chapterId"></param>
  56. /// <param name="levelCount"></param>
  57. /// <returns></returns>
  58. public static bool CheckChapterPass(int type, int subType, int chapterId, int levelCount)
  59. {
  60. var chapterCfg = StoryChapterCfgArray.Instance.GetCfg(chapterId);
  61. if(chapterCfg != null)
  62. {
  63. var passLevelOrder = InstanceZonesDataManager.GetPassLevelOrder(type, subType, chapterId);
  64. if(levelCount <= passLevelOrder)
  65. {
  66. return true;
  67. }
  68. }
  69. return false;
  70. }
  71. }
  72. }