MainController.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using cfg.GfgCfg;
  5. using ET;
  6. using UnityEngine;
  7. namespace GFGGame
  8. {
  9. public class MainControllerr : SingletonBase<MainControllerr>
  10. {
  11. public static bool GotoStoryChapter(bool isOpen = false)
  12. {
  13. LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.CHUN_ZHONG_LOU, 1);
  14. if (isOpen) return isOpen;
  15. isOpen = true;
  16. List<StoryChapterCfg> _chapterCfgs = CommonDataManager.Tables.TblStoryChapterCfg.DataList
  17. .Where(a => a.SubType == 0).ToList();
  18. for (int i = 0; i < _chapterCfgs.Count; i++)
  19. {
  20. StoryChapterCfg chapterCfg = _chapterCfgs[i];
  21. if (i == _chapterCfgs.Count - 1 && MainStoryDataManager.CheckChapterUnlock(chapterCfg.Id))
  22. {
  23. if (StoryController.CheckSuitGot(_chapterCfgs[i - 1].SuitId))
  24. {
  25. MainStoryDataManager.currentChapterCfgId = chapterCfg.Id;
  26. ViewManager.Show<StoryChapterView>(new object[] { chapterCfg.Id, 0 });
  27. isOpen = false;
  28. return isOpen;
  29. }
  30. else
  31. {
  32. ViewManager.Show<StoryChapterListView>(new object[] { 0, Mathf.Max(0, chapterCfg.Order - 1) });
  33. isOpen = false;
  34. return isOpen;
  35. }
  36. }
  37. else if (!MainStoryDataManager.CheckChapterUnlock(chapterCfg.Id))
  38. {
  39. StoryChapterCfg chapterTowCfg = _chapterCfgs[Mathf.Max(0, i - 1)];
  40. StoryChapterCfg chaptersuitCfg = _chapterCfgs[Mathf.Max(0, i - 2)];
  41. var list = CommonDataManager.Tables.TblStoryLevelCfg.DataList.Where(a =>
  42. a.Type == chapterTowCfg.Type && a.SubType == chapterTowCfg.SubType &&
  43. a.ChapterId == chapterTowCfg.Id).ToList();
  44. StoryLevelCfg lastLevelCfg = list[list.Count - 1];
  45. //这里是当下一章没解锁,但是上一章的最后一关已经通过了
  46. if (lastLevelCfg != null && InstanceZonesDataManager.CheckLevelPass(lastLevelCfg.Id))
  47. {
  48. ViewManager.Show<StoryChapterListView>(new object[] { 0, Mathf.Max(0, chapterCfg.Order - 1) });
  49. isOpen = false;
  50. return isOpen;
  51. }
  52. if (StoryController.CheckSuitGot(chaptersuitCfg.SuitId))
  53. {
  54. MainStoryDataManager.currentChapterCfgId = chapterCfg.Id - 1;
  55. ViewManager.Show<StoryChapterView>(new object[] { chapterCfg.Id - 1, 0 });
  56. isOpen = false;
  57. return isOpen;
  58. }
  59. else
  60. {
  61. ViewManager.Show<StoryChapterListView>(new object[] { 0, Mathf.Max(0, chapterCfg.Order - 1) });
  62. isOpen = false;
  63. return isOpen;
  64. }
  65. }
  66. }
  67. return isOpen;
  68. }
  69. }
  70. }