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

127 line
3.4 KiB

  1. GradeItem = GradeItem or BaseClass(BaseItem)
  2. function GradeItem:__init()
  3. self.base_file = "grade"
  4. self.layout_file = "GradeItem"
  5. self.is_delay_callback = true
  6. self.mainVo = RoleManager.Instance.mainRoleInfo
  7. self.need_refreshData = false
  8. self.need_refreshClick = false
  9. self:Load()
  10. end
  11. function GradeItem:Load_callback()
  12. self.now = self:GetChild("now").gameObject
  13. self.dot = self:GetChild("dot").gameObject
  14. self.bg = self:GetChild("bg"):GetComponent("Image")
  15. self.icon = self:GetChild("icon"):GetComponent("Image")
  16. self.grade_image = self:GetChild("name"):GetComponent("Image")
  17. self.grade_name = self:GetChild("name/text"):GetComponent("Text")
  18. self:InitEvent()
  19. if self.need_refreshData then
  20. self:SetData(self.data, self.call_back)
  21. end
  22. if self.need_refreshClick then
  23. self:SetSelected(self.select_bool)
  24. end
  25. end
  26. function GradeItem:InitEvent()
  27. local function onClickBtnHandler(target)
  28. self:CallBack()
  29. end
  30. AddClickEvent(self.gameObject, onClickBtnHandler)
  31. local function update_grade_func()
  32. if self._use_delete_method then return end
  33. self:SetData(self.data, self.call_back)
  34. self:UpdateRedDot()
  35. end
  36. self.vo_event_grade = self.mainVo:BindOne("grade_id", update_grade_func)
  37. local function update_red_func()
  38. if self._use_delete_method then return end
  39. self:UpdateRedDot()
  40. end
  41. self.vo_event_fight = self.mainVo:BindOne("fighting", update_red_func)
  42. self.goodsmodel_event = GoodsModel:getInstance():Bind(GoodsModel.CHANGE_BAGLIST, update_red_func)
  43. end
  44. function GradeItem:SetSelected(bool)
  45. bool = bool and true or false
  46. self.select_bool = bool
  47. if self.is_loaded then
  48. if bool then
  49. lua_resM:setImageSprite(self, self.bg, "grade_asset", "grade_bg_select")
  50. --self.selectBg:SetActive(self.select_bool)
  51. else
  52. lua_resM:setImageSprite(self, self.bg, "grade_asset", "grade_bg")
  53. end
  54. else
  55. self.need_refreshClick = true
  56. end
  57. end
  58. function GradeItem:CallBack()
  59. if self.call_back and self.data then
  60. self.call_back(self.data)
  61. end
  62. end
  63. function GradeItem:SetData(data, call_back)
  64. self.data = data
  65. self.call_back = call_back
  66. if not self.data then return end
  67. if self.is_loaded then
  68. self.now:SetActive(self.data.juewei_lv == self.mainVo.grade_id)
  69. lua_resM:setImageSprite(self, self.icon, "grade_asset", "grade_icon_"..self.data.juewei_lv)
  70. self.grade_name.text = Trim(self.data.juewei_name)
  71. self.icon.gray = self.data.juewei_lv > self.mainVo.grade_id
  72. self.grade_image.gray = self.data.juewei_lv > self.mainVo.grade_id
  73. self:UpdateRedDot()
  74. self.need_refreshData = false
  75. else
  76. self.need_refreshData = true
  77. end
  78. end
  79. function GradeItem:UpdateRedDot()
  80. local bool = false
  81. if self.data and self.data.juewei_lv == (self.mainVo.grade_id + 1) then
  82. if self.mainVo.fighting >= self.data.need_power then
  83. local token = ErlangParser:GetInstance():Parse(self.data.goods_list)
  84. if token and token[1] then
  85. local num = GoodsModel:getInstance():GetTypeGoodsNum(tonumber(token[1][2]))
  86. if num >= tonumber(token[1][3]) then
  87. bool = true
  88. end
  89. end
  90. end
  91. end
  92. if self.dot then
  93. self.dot:SetActive(bool)
  94. end
  95. end
  96. function GradeItem:__delete()
  97. if self.vo_event_fight then
  98. self.mainVo:UnBind(self.vo_event_fight)
  99. self.vo_event_fight = nil
  100. end
  101. if self.vo_event_grade then
  102. self.mainVo:UnBind(self.vo_event_grade)
  103. self.vo_event_grade = nil
  104. end
  105. if self.goodsmodel_event then
  106. GoodsModel:getInstance():UnBind(self.goodsmodel_event)
  107. self.goodsmodel_event = nil
  108. end
  109. end