EquipPanel.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. public class EquipPanel : PopUpPanel
  6. {
  7. public Transform craftContainer;
  8. public EquipCraftItemRenderer craftItemPrefab;
  9. public Transform equipContainer;
  10. public EquipIcon equipItemPrefab;
  11. public Transform equipedContainer;
  12. public EquipIcon equipedItemPrefab;
  13. public EquipInfo equipInfo;
  14. public Transform equipedStyleContainer;
  15. public Button recommandBtn;
  16. public Button customizeBtn;
  17. public Text recommandLabel;
  18. public Text customizeLabel;
  19. private CraftConfigData craftData;
  20. private EquipedData equipedData;
  21. void Awake()
  22. {
  23. equipItemPrefab.equipPanel = this;
  24. equipedItemPrefab.equipPanel = this;
  25. List<CraftConfigData> craftList = CraftManager.GetInstance ().GetDataList ();
  26. craftItemPrefab.equipPanel = this;
  27. ListHelper.FillList<CraftConfigData> (craftContainer, craftList, craftItemPrefab);
  28. ListHelper.HideAll (equipContainer);
  29. ListHelper.HideAll (equipedContainer);
  30. Shown ();
  31. equipInfo.equipPanel = this;
  32. recommandLabel.text = Language.GetStr ("EquipPanel", "recommand");
  33. customizeLabel.text = Language.GetStr ("EquipPanel", "customize");
  34. SelectCraft (craftContainer.GetChild(0).GetComponent<EquipCraftItemRenderer>());
  35. }
  36. protected override void Shown ()
  37. {
  38. EquipManager.GetInstance ().InventoryUpdate.AddListener (OnInventoryUpdate);
  39. EquipManager.GetInstance ().RequestInventory ();
  40. }
  41. private void OnInventoryUpdate()
  42. {
  43. EquipManager.GetInstance ().InventoryUpdate.RemoveListener (OnInventoryUpdate);
  44. SelectCraft (craftContainer.GetChild(0).GetComponent<EquipCraftItemRenderer>());
  45. List<Equipment> list = EquipManager.GetInstance ().GetInventoryList ();
  46. ListHelper.FillList<Equipment> (equipContainer, list, equipItemPrefab);
  47. if (list.Count > 0)
  48. SelectEquip (equipItemPrefab);
  49. else
  50. SelectEquip (null);
  51. }
  52. public void SelectCraft(EquipCraftItemRenderer itemRenderer)
  53. {
  54. craftData = itemRenderer.data as CraftConfigData;
  55. ButtonUtil.TabSelected (itemRenderer, craftContainer);
  56. if(EquipManager.GetInstance().initialized)
  57. {
  58. equipedData = EquipManager.GetInstance ().GetEquipedData (craftData.id);
  59. SelectEquipedStyle (equipedData.styleType.GetHashCode ());
  60. }
  61. }
  62. public void SelectEquip(EquipIcon icon)
  63. {
  64. if (icon != null) {
  65. ButtonUtil.TabSelected (icon, equipContainer);
  66. equipInfo.SetEquip (icon.data as Equipment);
  67. } else {
  68. equipInfo.SetEquip (null);
  69. }
  70. }
  71. public void SelectEquiped(EquipIcon icon)
  72. {
  73. }
  74. public void Equip(Equipment equip)
  75. {
  76. if(!equipedData.IsEquiped(equip))
  77. {
  78. bool replaced = equipedData.ReplaceCustomize (null, equip);
  79. if (!replaced) {
  80. Debuger.LogError ("Can not replaced");
  81. }
  82. SelectEquipedStyle (equipedData.styleType.GetHashCode());
  83. }
  84. }
  85. public void SelectEquipedStyle(int index)
  86. {
  87. ButtonUtil.TabSelected (index, equipedStyleContainer);
  88. equipedData.styleType = EquipedData.GetSytleTypeByCode(index);
  89. ListHelper.FillList<Equipment> (equipedContainer, equipedData.GetCurrentList(), equipedItemPrefab);
  90. }
  91. private static EquipPanel currentPanel;
  92. public static EquipPanel Show()
  93. {
  94. if (currentPanel != null) {
  95. currentPanel.gameObject.SetActive (true);
  96. PopUpManager.AddToMainCanvas (currentPanel.gameObject);
  97. }
  98. else
  99. currentPanel = PopUpManager.AddPopUp<EquipPanel> (Resources.Load<GameObject> ("Prefabs/UI/EquipPanel/EquipPanel"), null, true);
  100. currentPanel.Open ();
  101. return currentPanel;
  102. }
  103. }