源战役客户端
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.

138 line
4.4 KiB

  1. -- <*
  2. -- @Author: Saber
  3. -- @Description: 圣物系统 特殊处理的圆形节点
  4. -- *>
  5. PsionicArmorCircleItem = PsionicArmorCircleItem or BaseClass(BaseItem)
  6. local PsionicArmorCircleItem = PsionicArmorCircleItem
  7. local PsionicConst = PsionicConst
  8. function PsionicArmorCircleItem:__init(parent_wnd, prefab_asset, layer_name)
  9. self.base_file = "common"
  10. self.layout_file = "PsionicArmorCircleItem"
  11. self.parent_wnd = parent_wnd
  12. self.layer_name = layer_name
  13. self.default_x, self.default_y = 78, 78 -- awardItem的大小
  14. self.size_x, self.size_y = 78, 78 -- 目标大小
  15. self.override_func = nil
  16. self.show_tips = true
  17. self.show_count = true
  18. self.show_slot = false -- 展示槽位名称
  19. self.model = PsionicModel:getInstance()
  20. self:Load()
  21. end
  22. function PsionicArmorCircleItem:Load_callback()
  23. local nodes = {
  24. "bg:img", "item_con",
  25. "slot_flag_bg:obj", "slot_flag_bg/slot_flag:tmp",
  26. }
  27. self:GetChildren(nodes)
  28. self.bg_img.enabled = false
  29. self.award_item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.item_con)
  30. self.award_item.hide_effect = true -- 不显示原来的特效
  31. self.award_item:SetAnchoredPosition(0, 0)
  32. self.award_item:SetVisible(false)
  33. self.award_item:SetItemBgVisible(false) -- 隐藏背景
  34. self:AddEvents()
  35. if self.need_refreshData then
  36. self:UpdateView()
  37. end
  38. end
  39. function PsionicArmorCircleItem:SetVisible(state, force_hide)
  40. BaseItem.SetVisible(self, state, force_hide)
  41. if self.award_item then
  42. self.award_item:SetVisible(state, force_hide)
  43. end
  44. end
  45. function PsionicArmorCircleItem:AddEvents( )
  46. end
  47. function PsionicArmorCircleItem:SetData( type_id, goods_num, color, stren_data )
  48. self.type_id = type_id
  49. self.goods_num = goods_num
  50. self.color = color
  51. self.stren_data = stren_data
  52. if self.is_loaded then
  53. self.need_refreshData = false
  54. self:UpdateView()
  55. else
  56. self.need_refreshData = true
  57. end
  58. end
  59. function PsionicArmorCircleItem:UpdateView( )
  60. self:SetItemSize(self.size_x, self.size_y)
  61. self:OverrideClickEvent(self.override_func)
  62. self:SetEnableClick(self.show_tips)
  63. self:ChangeCountVisible(self.show_count)
  64. self:SetSlotName(self.show_slot)
  65. if self.type_id then
  66. local goods_basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.type_id)
  67. local color = goods_basic and goods_basic.color or 2 -- 最低品质是蓝色品质
  68. lua_resM:setImageSprite(self, self.bg_img, "common_asset", "ps_tip_armor_bg" .. color)
  69. self.bg_img.enabled = true
  70. self.award_item:SetData(self.type_id, self.goods_num, color, self.stren_data)
  71. self.award_item:SetVisible(true)
  72. else
  73. self.bg_img.enabled = false
  74. self.award_item:SetVisible(false)
  75. end
  76. end
  77. function PsionicArmorCircleItem:SetEnableClick(bool)
  78. self.show_tips = bool
  79. if self.is_loaded and self.award_item then
  80. self.award_item:SetEnableClick(bool)
  81. end
  82. end
  83. function PsionicArmorCircleItem:ChangeCountVisible(bool)
  84. self.show_count = bool
  85. if self.is_loaded and self.award_item then
  86. self.award_item:ChangeCountVisible(bool)
  87. end
  88. end
  89. function PsionicArmorCircleItem:SetItemSize(size_x, size_y)
  90. self.size_x = size_x
  91. self.size_y = size_y or self.size_x
  92. if not self.is_loaded then return end
  93. local scale_x = self.size_x / self.default_x
  94. local scale_y = self.size_y / self.default_y
  95. SetLocalScale(self.transform, scale_x, scale_y, 1)
  96. end
  97. --覆盖AwardItem 的点击方法
  98. function PsionicArmorCircleItem:OverrideClickEvent(func)
  99. self.override_func = func
  100. if not self.is_loaded or not self.award_item then return end
  101. if self.override_func then
  102. self.award_item.ClickCallFun = function (target,x,y)
  103. func(target,x,y)
  104. end
  105. end
  106. end
  107. function PsionicArmorCircleItem:SetSlotName(slot)
  108. self.show_slot = slot
  109. if self.is_loaded then
  110. if not self.show_slot then
  111. self.slot_flag_bg_obj:SetActive(false)
  112. else
  113. self.slot_flag_bg_obj:SetActive(true)
  114. self.slot_flag_tmp.text = PsionicConst.EquipSlotName[self.show_slot]
  115. end
  116. end
  117. end
  118. function PsionicArmorCircleItem:__delete( )
  119. if self.award_item then
  120. UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.award_item)
  121. end
  122. self.award_item = nil
  123. end