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

116 line
4.2 KiB

  1. -- <*
  2. -- @Author: Saber
  3. -- @Description: 成就特权节点item
  4. -- *>
  5. AchievePrivilegeItem = AchievePrivilegeItem or BaseClass(BaseItem)
  6. local AchievePrivilegeItem = AchievePrivilegeItem
  7. function AchievePrivilegeItem:__init(parent_wnd,prefab_asset,layer_name)
  8. self.base_file = "achievement"
  9. self.layout_file = "AchievePrivilegeItem"
  10. self.parent_wnd = parent_wnd
  11. self.layer_name = layer_name
  12. self.is_selected = false
  13. self.model = AchieveModel:getInstance()
  14. self.privilege_data = self.model:GetAchievePrivilegeTabData()
  15. self:Load()
  16. end
  17. function AchievePrivilegeItem:Load_callback()
  18. local nodes = {
  19. "bg:obj:img", "arrow:obj", "selected:obj", "red:obj",
  20. "lv:tmp", "di_bg:raw", "des:tmp", "icon:img", "con_award",
  21. }
  22. self:GetChildren(nodes)
  23. lua_resM:setOutsideImageSprite(self, self.bg_img,
  24. GameResPath.GetAchieveBigPic("achi_privilege_bg"), true)
  25. SetLocalScale(self.icon, 0.8, 0.8, 1)
  26. self:AddEvents()
  27. if self.need_refreshData then
  28. self:UpdateView()
  29. end
  30. end
  31. function AchievePrivilegeItem:AddEvents( )
  32. local function click_event(target)
  33. if target == self.bg_obj then
  34. if self.index and self.callback then
  35. self.callback(self.index)
  36. end
  37. -- 如果当前的特权节点是交换交易券的且红点亮着,要取消掉登录红点并推事件
  38. if self.data.icon == 4 and self.model:GetAchieveCacheRed(AchieveModelRedType.Exchange) then
  39. self.model.exchange_login_red = false
  40. self.model:CheckAchieveRed(AchieveModelRedType.Exchange, true)
  41. end
  42. end
  43. end
  44. AddClickEvent(self.bg_obj, click_event, LuaSoundManager.SOUND_UI.SWITCH)
  45. local function update_privilege_red(type)
  46. if type == AchieveModelRedType.Privilege
  47. or type == AchieveModelRedType.Weekly
  48. or type == AchieveModelRedType.Exchange then
  49. self:UpdatePrivilegeTabRed()
  50. end
  51. end
  52. self:BindEvent(self.model, AchieveModel.UPDATE_ACHIEVE_RED, update_privilege_red)
  53. end
  54. function AchievePrivilegeItem:UpdateView( )
  55. -- self:SetSelected(self.is_selected)
  56. -- lua_resM:setImageSprite(self, self.bg_img, "achievement_asset", "achi_total_privilege_iconBg" .. self.data.icon .. "_pointfilter", true)
  57. lua_resM:setOutsideImageSprite(self, self.icon_img,
  58. GameResPath.GetAchieveBigPic("achi_privilege_icon" .. self.data.icon), true)
  59. self.lv_tmp.text = string.format('%s %s', HtmlColorTxt( "Lv." .. self.data.stage, ColorUtil.YELLOW_DARK), self.data.name)
  60. local str = ChuanWenManager:getInstance():FormatColorTag2(self.data.desc, true)
  61. self.des_tmp.text = " " .. string.gsub( str, [[\n]], "\n" )
  62. -- 更新红点
  63. -- self:UpdatePrivilegeTabRed()
  64. local cur_index = self.model:GetCurPrivilegeStage()
  65. -- self:SetSelected(cur_index == self.index)
  66. self.arrow_obj:SetActive(#self.privilege_data ~= self.index)
  67. self.award_item = self.award_item or UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.con_award)
  68. self.award_item:SetItemSize(62, 62)
  69. local reward = stringtotable(self.data.reward)[1]
  70. self.award_item:SetVisible(reward and true or false)
  71. if reward then
  72. local typeId, lock = GoodsModel:getInstance():GetMappingTypeId(reward[1], reward[2])
  73. self.award_item:SetData(typeId, reward[3], nil, nil, lock)
  74. end
  75. end
  76. function AchievePrivilegeItem:SetData( data, index, callback )
  77. self.data = data
  78. self.index = index
  79. self.callback = callback
  80. if self.is_loaded then
  81. self.need_refreshData = false
  82. self:UpdateView()
  83. else
  84. self.need_refreshData = true
  85. end
  86. end
  87. function AchievePrivilegeItem:SetSelected(bool)
  88. self.is_selected = bool
  89. if self.is_loaded then
  90. self.selected_obj:SetActive(bool)
  91. end
  92. end
  93. function AchievePrivilegeItem:UpdatePrivilegeTabRed( )
  94. if self.data then
  95. local bool
  96. bool = self.model:GetAchieveCacheRed(AchieveModelRedType.Privilege, self.data.stage)
  97. self.red_obj:SetActive(bool)
  98. end
  99. end
  100. function AchievePrivilegeItem:__delete( )
  101. if self.award_item then
  102. UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.award_item)
  103. end
  104. self.award_item = nil
  105. end