ItemSourcePanel.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. using System.Collections.Generic;
  2. using Core.Language;
  3. using Excel2Json;
  4. using Fort23.Core;
  5. using Fort23.UTool;
  6. using GameLogic.Bag;
  7. using Mono.Utility;
  8. namespace Fort23.Mono
  9. {
  10. [UIBinding(prefab = "ItemSourcePanel")]
  11. public partial class ItemSourcePanel : UIPanel
  12. {
  13. List<SkipToWidget> skipToWidgets = new List<SkipToWidget>();
  14. private CTask<bool> callBack;
  15. private bool isSkipto = false;
  16. private void Init()
  17. {
  18. isPopUi = true;
  19. isAddStack = false;
  20. }
  21. protected override void AddEvent()
  22. {
  23. }
  24. protected override void DelEvent()
  25. {
  26. }
  27. public override void AddButtonEvent()
  28. {
  29. }
  30. public async override CTask<bool> AsyncInit(object[] uiData)
  31. {
  32. foreach (var skipToWidget in skipToWidgets)
  33. {
  34. UIManager.Instance.DormancyGComponent(skipToWidget);
  35. }
  36. skipToWidgets.Clear();
  37. int itemId = (int)uiData[0];
  38. callBack = uiData[1] as CTask<bool>;
  39. ItemConfig itemConfig = ConfigComponent.Instance.Get<ItemConfig>(itemId);
  40. Text_ItemName.text = LanguageManager.Instance.Text(itemConfig.itemName);
  41. WidgetItem widgetItem =
  42. await UIManager.Instance.CreateGComponentForObject<WidgetItem>(WidgetItemGam, null);
  43. widgetItem.InitWidget(new ItemInfo(itemId),false);
  44. Text_ItemCount.text = PlayerManager.Instance.BagController.GetItemCount(itemId).ToString();
  45. if (itemConfig.SkiptoID != null)
  46. {
  47. foreach (var skiptoId in itemConfig.SkiptoID)
  48. {
  49. SkipToWidget skipToWidget = await UIManager.Instance.CreateGComponent<SkipToWidget>(null, Content);
  50. skipToWidget.CustonInit(skiptoId);
  51. skipToWidgets.Add(skipToWidget);
  52. skipToWidget.OnClick = OnClick;
  53. }
  54. }
  55. return await base.AsyncInit(uiData);
  56. }
  57. private async void OnClick(ItemWidgetBasic obj)
  58. {
  59. SkipToWidget skipToWidget = obj as SkipToWidget;
  60. isSkipto = true;
  61. await UIManager.Instance.HideUIUIPanel(this);
  62. SkiptoHelper.Skipto(skipToWidget.SkiptoConfig.ID);
  63. }
  64. public static async CTask<bool> OpenPanel(int itemId)
  65. {
  66. CTask<bool> callBack = CTask<bool>.Create();
  67. await UIManager.Instance.LoadAndOpenPanel<ItemSourcePanel>(null, UILayer.Top,
  68. uiData: new object[] { itemId, callBack }, isShowBG: true);
  69. return await callBack;
  70. }
  71. public async override CTask Close()
  72. {
  73. foreach (var skipToWidget in skipToWidgets)
  74. {
  75. UIManager.Instance.DormancyGComponent(skipToWidget);
  76. }
  77. skipToWidgets.Clear();
  78. callBack?.SetResult(isSkipto);
  79. isSkipto = false;
  80. await base.Close();
  81. }
  82. }
  83. }