源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

117 lines
3.7 KiB

  1. -- <*
  2. -- @Author: Saber
  3. -- @Description: 圣物系统装甲背包界面
  4. -- *>
  5. PsionicArmorView = PsionicArmorView or BaseClass(BaseItem)
  6. local PsionicArmorView = PsionicArmorView
  7. function PsionicArmorView:__init(parent_wnd,prefab_asset,layer_name)
  8. self.base_file = "psionic"
  9. self.layout_file = "PsionicArmorView"
  10. self.parent_wnd = parent_wnd
  11. self.layer_name = layer_name
  12. self.sort_goods_up = true -- 道具排序flag true = 品质降序 false = 品质升序
  13. self.model = PsionicModel:getInstance()
  14. self:Load()
  15. end
  16. function PsionicArmorView:Load_callback()
  17. local nodes = {
  18. "resolve_btn:obj", "resolve_btn/resolve_red:img",
  19. "receive_btn:obj",
  20. "item_scroll", "item_scroll/Viewport/item_con",
  21. }
  22. self:GetChildren(nodes)
  23. self:AddEvents()
  24. self:UpdateView()
  25. end
  26. function PsionicArmorView:AddEvents( )
  27. local function click_event(target, x, y)
  28. if target == self.resolve_btn_obj then
  29. self.model:Fire(PsionicConst.OPEN_RESOLVE_VIEW, true)
  30. elseif target == self.receive_btn_obj then
  31. local draw_open, cfg = GetModuleIsOpen(139, 7)
  32. if draw_open then
  33. OpenFun.Open(139, 7)
  34. else
  35. local str = string.format("圣物寻宝将在开服第%s天开启!", cfg and cfg.open_day or 0)
  36. Message.show(str, "fault")
  37. end
  38. end
  39. end
  40. AddClickEvent(self.resolve_btn_obj, click_event, LuaSoundManager.SOUND_UI.NONE)
  41. AddClickEvent(self.receive_btn_obj, click_event, LuaSoundManager.SOUND_UI.NONE)
  42. local function on_update_equip_bag()
  43. self:UpdatePsionicArmorItem()
  44. end
  45. self:BindEvent(self.model, PsionicConst.UPDATE_PISIONIC_BAG_ARMOR, on_update_equip_bag)
  46. local function update_resolve_btn_red(tab_id)
  47. if tab_id and tab_id == PsionicConst.TabId.PArmor then
  48. self:UpdateResolveBtnRed()
  49. end
  50. end
  51. self:BindEvent(self.model, PsionicConst.UPDATE_RED_BY_TABID, update_resolve_btn_red)
  52. end
  53. function PsionicArmorView:UpdateView( )
  54. self:ChangeSortFlag(self.sort_goods_up)
  55. self:UpdateResolveBtnRed()
  56. end
  57. function PsionicArmorView:ChangeSortFlag(flag)
  58. self.sort_goods_up = flag
  59. self:UpdatePsionicArmorItem()
  60. end
  61. function PsionicArmorView:UpdatePsionicArmorItem( )
  62. -- print("Saber:PsionicArmorView [57] self.sort_goods_up: ",self.sort_goods_up)
  63. local data = self.model:GetPsionicBagData(self.sort_goods_up)
  64. local data_length = #data
  65. local empty_data = {is_empty = true}
  66. local need_full_num
  67. if data_length < 24 then
  68. -- 补全24个位置
  69. need_full_num = 24
  70. elseif data_length % 4 ~= 0 then
  71. -- 有空白格子,补全成无数据格子
  72. need_full_num = math.ceil(data_length / 4) * 4
  73. end
  74. if need_full_num then
  75. for i = data_length + 1, need_full_num do
  76. data[i] = empty_data
  77. end
  78. end
  79. self.bag_item_creator = self.bag_item_creator or self:AddUIComponent(UI.ItemListCreator)
  80. local info = {
  81. data_list = data,
  82. item_con = self.item_con,
  83. scroll_view = self.item_scroll,
  84. item_class = PsionicArmorItem,
  85. item_width = 78,
  86. item_height = 78,
  87. start_x = 9,
  88. start_y = -9,
  89. space_x = 12,
  90. space_y = 12,
  91. create_frequency = 0.01,
  92. alignment = UnityEngine.TextAnchor.UpperLeft,
  93. on_update_item = function(item, i, v)
  94. item:SetData(v, PsionicConst.ArmorItemFlag.Bag,nil,nil,i)
  95. end,
  96. }
  97. self.bag_item_creator:UpdateItems(info)
  98. end
  99. function PsionicArmorView:UpdateResolveBtnRed( )
  100. local bool = self.model:GetPsionicResolveBtnRed()
  101. self.resolve_red_img.enabled = bool
  102. end
  103. function PsionicArmorView:__delete( )
  104. end