InstanceZonesDataManager.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. }
  51. }