PlacesInfoPanel.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using Core.Language;
  5. using Excel2Json;
  6. using Fort23.Core;
  7. using Fort23.UTool;
  8. using GameLogic.Combat;
  9. using GameLogic.Combat.CombatTool;
  10. namespace Fort23.Mono
  11. {
  12. [UIBinding(prefab = "PlacesInfoPanel")]
  13. public partial class PlacesInfoPanel : UIPanel
  14. {
  15. private int PlacesId;
  16. private SmallPlacesConfig smallPlacesConfig;
  17. private PlacesConfig placesConfig;
  18. List<PlacesInfoWidget> placesInfoWidgets = new List<PlacesInfoWidget>();
  19. private Action<bool> callBack;
  20. public bool isChange;
  21. private void Init()
  22. {
  23. isPopUi = true;
  24. isAddStack = false;
  25. }
  26. protected override void AddEvent()
  27. {
  28. }
  29. protected override void DelEvent()
  30. {
  31. }
  32. public override void AddButtonEvent()
  33. {
  34. Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); });
  35. }
  36. public async override CTask<bool> AsyncInit(object[] uiData)
  37. {
  38. PlacesId = (int)(uiData[0]);
  39. callBack = uiData[1] as Action<bool>;
  40. isChange = false;
  41. placesConfig = ConfigComponent.Instance.Get<PlacesConfig>(PlacesId);
  42. foreach (var placesConfigSmallPlacersId in placesConfig.SmallPlacersIds)
  43. {
  44. PlacesInfoWidget shopBtnWidget =
  45. await UIManager.Instance.CreateGComponent<PlacesInfoWidget>(null, Content);
  46. shopBtnWidget.CustomInit(placesConfigSmallPlacersId, callBack);
  47. placesInfoWidgets.Add(shopBtnWidget);
  48. }
  49. BigMapConfig bigMapConfig = ConfigComponent.Instance.Get<BigMapConfig>(placesConfig.bigMapID);
  50. Text_BigMapName.text = LanguageManager.Instance.Text(bigMapConfig.mapName);
  51. Text_PlacesName.text = LanguageManager.Instance.Text(placesConfig.placeName);
  52. AccountFileInfo.PlacesData placesData = PlayerManager.Instance.GetPlacesData(placesConfig.ID);
  53. int jindu = placesData == null ? 0 : placesData.progress;
  54. Text_PlacesComplteProgress.text = LanguageManager.Instance.Text(10378, (jindu/placesConfig.TotalScore*100f).ToString("0"));
  55. return await base.AsyncInit(uiData);
  56. }
  57. public static async CTask OpenPanel(int placesId, Action<bool> callBack)
  58. {
  59. await UIManager.Instance.LoadAndOpenPanel<PlacesInfoPanel>(null, UILayer.Top,
  60. uiData: new object[] { placesId, callBack }, isShowBG: true);
  61. }
  62. public async override CTask Close()
  63. {
  64. foreach (var shopBtnWidget in placesInfoWidgets)
  65. {
  66. UIManager.Instance.DormancyGComponent(shopBtnWidget);
  67. }
  68. placesInfoWidgets.Clear();
  69. if (!isChange)
  70. {
  71. callBack?.Invoke(false);
  72. callBack = null;
  73. }
  74. await base.Close();
  75. }
  76. }
  77. }