ItemSourcePanel.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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. int itemId = (int)uiData[0];
  33. callBack = uiData[1] as CTask<bool>;
  34. ItemConfig itemConfig = ConfigComponent.Instance.Get<ItemConfig>(itemId);
  35. Text_ItemName.text = LanguageManager.Instance.Text(itemConfig.itemName);
  36. WidgetItem widgetItem =
  37. await UIManager.Instance.CreateGComponentForObject<WidgetItem>(WidgetItemGam, null);
  38. widgetItem.InitWidget(new ItemInfo(itemId),false);
  39. Text_ItemCount.text = PlayerManager.Instance.BagController.GetItemCount(itemId).ToString();
  40. if (itemConfig.SkiptoID != null)
  41. {
  42. foreach (var skiptoId in itemConfig.SkiptoID)
  43. {
  44. SkipToWidget skipToWidget = await UIManager.Instance.CreateGComponent<SkipToWidget>(null, Content);
  45. skipToWidget.CustonInit(skiptoId);
  46. skipToWidgets.Add(skipToWidget);
  47. skipToWidget.OnClick = OnClick;
  48. }
  49. }
  50. return await base.AsyncInit(uiData);
  51. }
  52. private void OnClick(ItemWidgetBasic obj)
  53. {
  54. SkipToWidget skipToWidget = obj as SkipToWidget;
  55. isSkipto = true;
  56. UIManager.Instance.HideUIUIPanel(this);
  57. SkiptoHelper.Skipto(skipToWidget.SkiptoConfig.ID);
  58. }
  59. public static async CTask<bool> OpenPanel(int itemId)
  60. {
  61. CTask<bool> callBack = CTask<bool>.Create();
  62. await UIManager.Instance.LoadAndOpenPanel<ItemSourcePanel>(null, UILayer.Top,
  63. uiData: new object[] { itemId, callBack }, isShowBG: true);
  64. return await callBack;
  65. }
  66. public override void Close()
  67. {
  68. foreach (var skipToWidget in skipToWidgets)
  69. {
  70. UIManager.Instance.DormancyGComponent(skipToWidget);
  71. }
  72. skipToWidgets.Clear();
  73. callBack?.SetResult(isSkipto);
  74. isSkipto = false;
  75. base.Close();
  76. }
  77. }
  78. }