GradeItem = GradeItem or BaseClass(BaseItem) function GradeItem:__init() self.base_file = "grade" self.layout_file = "GradeItem" self.is_delay_callback = true self.mainVo = RoleManager.Instance.mainRoleInfo self.need_refreshData = false self.need_refreshClick = false self:Load() end function GradeItem:Load_callback() self.now = self:GetChild("now").gameObject self.dot = self:GetChild("dot").gameObject self.bg = self:GetChild("bg"):GetComponent("Image") self.icon = self:GetChild("icon"):GetComponent("Image") self.grade_image = self:GetChild("name"):GetComponent("Image") self.grade_name = self:GetChild("name/text"):GetComponent("Text") self:InitEvent() if self.need_refreshData then self:SetData(self.data, self.call_back) end if self.need_refreshClick then self:SetSelected(self.select_bool) end end function GradeItem:InitEvent() local function onClickBtnHandler(target) self:CallBack() end AddClickEvent(self.gameObject, onClickBtnHandler) local function update_grade_func() if self._use_delete_method then return end self:SetData(self.data, self.call_back) self:UpdateRedDot() end self.vo_event_grade = self.mainVo:BindOne("grade_id", update_grade_func) local function update_red_func() if self._use_delete_method then return end self:UpdateRedDot() end self.vo_event_fight = self.mainVo:BindOne("fighting", update_red_func) self.goodsmodel_event = GoodsModel:getInstance():Bind(GoodsModel.CHANGE_BAGLIST, update_red_func) end function GradeItem:SetSelected(bool) bool = bool and true or false self.select_bool = bool if self.is_loaded then if bool then lua_resM:setImageSprite(self, self.bg, "grade_asset", "grade_bg_select") --self.selectBg:SetActive(self.select_bool) else lua_resM:setImageSprite(self, self.bg, "grade_asset", "grade_bg") end else self.need_refreshClick = true end end function GradeItem:CallBack() if self.call_back and self.data then self.call_back(self.data) end end function GradeItem:SetData(data, call_back) self.data = data self.call_back = call_back if not self.data then return end if self.is_loaded then self.now:SetActive(self.data.juewei_lv == self.mainVo.grade_id) lua_resM:setImageSprite(self, self.icon, "grade_asset", "grade_icon_"..self.data.juewei_lv) self.grade_name.text = Trim(self.data.juewei_name) self.icon.gray = self.data.juewei_lv > self.mainVo.grade_id self.grade_image.gray = self.data.juewei_lv > self.mainVo.grade_id self:UpdateRedDot() self.need_refreshData = false else self.need_refreshData = true end end function GradeItem:UpdateRedDot() local bool = false if self.data and self.data.juewei_lv == (self.mainVo.grade_id + 1) then if self.mainVo.fighting >= self.data.need_power then local token = ErlangParser:GetInstance():Parse(self.data.goods_list) if token and token[1] then local num = GoodsModel:getInstance():GetTypeGoodsNum(tonumber(token[1][2])) if num >= tonumber(token[1][3]) then bool = true end end end end if self.dot then self.dot:SetActive(bool) end end function GradeItem:__delete() if self.vo_event_fight then self.mainVo:UnBind(self.vo_event_fight) self.vo_event_fight = nil end if self.vo_event_grade then self.mainVo:UnBind(self.vo_event_grade) self.vo_event_grade = nil end if self.goodsmodel_event then GoodsModel:getInstance():UnBind(self.goodsmodel_event) self.goodsmodel_event = nil end end