源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

138 行
3.9 KiB

  1. ChatDressItem = ChatDressItem or BaseClass(BaseItem)
  2. function ChatDressItem:__init(parent)
  3. self.base_file = "chatDress"
  4. self.layout_file = "ChatDressItem"
  5. self.data = nil
  6. self.is_selected = false
  7. self.index = 0
  8. self.event_list = {}
  9. self.prop_item_list = {}
  10. self.model = ChatDressModel:getInstance()
  11. self:Load()
  12. end
  13. function ChatDressItem:Load_callback()
  14. self.nodes = {
  15. "select_image:obj",
  16. "click_con:obj",
  17. "mark_image:obj",
  18. "lock_image:obj",
  19. "wear_image:obj",
  20. "active_image:obj",
  21. "head:img:obj",
  22. "red_image:obj",
  23. "name_text:tmp",
  24. }
  25. self:GetChildren(self.nodes)
  26. self:InitEvent()
  27. if self.need_refreshData then
  28. self:UpdateView()
  29. end
  30. if self.need_reselect then
  31. self:SetSelect(self.select_id)
  32. end
  33. end
  34. function ChatDressItem:InitEvent()
  35. local function onClick(target)
  36. self.call_back(self.index, self.data)
  37. end
  38. AddClickEvent(self.click_con_obj, onClick)
  39. end
  40. -- 装扮信息
  41. function ChatDressItem:SetData(index, data, call_back)
  42. self.index = index
  43. self.data = data
  44. self.call_back = call_back
  45. if self.is_loaded then
  46. self.need_refreshData = false
  47. self:UpdateView()
  48. else
  49. self.need_refreshData = true
  50. end
  51. end
  52. function ChatDressItem:UpdateView( )
  53. local data = self.data
  54. local type_id = data.dress_id
  55. local goods_basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(type_id)
  56. local goods_icon = goods_basic.goods_icon
  57. type_id = tonumber(type_id)
  58. local goods_name = GoodsModel:getInstance():getGoodsName(type_id, false)
  59. self.name_text_tmp.text = goods_name
  60. if Config.ConfigGoodsByCareer[type_id] then
  61. goods_icon = Config.ConfigGoodsByCareer[type_id][RoleManager.Instance.mainRoleInfo.career]
  62. end
  63. local set_img_cb = function ( )
  64. local new_width = GetSizeDeltaX(self.head_img.transform) * 0.95
  65. local new_height = GetSizeDeltaY(self.head_img.transform) * 0.95
  66. SetSizeDelta(self.head_img.transform, new_width, new_height)
  67. end
  68. lua_resM:setOutsideImageSprite(self, self.head_img, GameResPath.GetGoodsIcon(goods_icon), true, set_img_cb)
  69. self.wear_image_obj:SetActive(self.model:GetCurUseDressId(data.dress_type) == data.dress_id)
  70. self.lock_image_obj:SetActive(false)
  71. local can_active = data.can_active and true or false
  72. self.active_image_obj:SetActive(can_active)
  73. self.mark_image_obj:SetActive(not data.is_active and not data.can_active)
  74. end
  75. --
  76. function ChatDressItem:ClickFunc()
  77. self:SetSelect(true)
  78. end
  79. function ChatDressItem:GetActiveState( )
  80. local data = self.data
  81. if data.is_active and not data.can_active then
  82. return ChatDressModel.AcitiveState.Actived
  83. elseif not data.is_active and not data.can_active then
  84. return ChatDressModel.AcitiveState.Locked
  85. elseif not data.is_active and data.can_active then
  86. return ChatDressModel.AcitiveState.CanActive
  87. end
  88. end
  89. function ChatDressItem:GetId( )
  90. return self.data.dress_id
  91. end
  92. -- 选择情况
  93. function ChatDressItem:SetSelect(index)
  94. self.select_id = index
  95. if self.is_loaded then
  96. self.need_reselect = false
  97. self.select_image_obj:SetActive(self.select_id == self.index)
  98. else
  99. self.need_reselect = true
  100. end
  101. end
  102. function ChatDressItem:__delete()
  103. for k, v in pairs(self.event_list) do
  104. self.model:UnBind(v)
  105. v = nil
  106. end
  107. self.event_list = {}
  108. if self.bag_change_event_id then
  109. GoodsModel:getInstance():UnBind(self.bag_change_event_id)
  110. self.bag_change_event_id = nil
  111. end
  112. if #self.prop_item_list > 0 then
  113. for k, v in pairs(self.prop_item_list) do
  114. v:DeleteMe()
  115. v = nil
  116. end
  117. end
  118. end
  119. function ChatDressItem:SetRedPoint()
  120. -- self.red_point:SetActive(isTrue)----红点先去除
  121. end