|
|
- 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
|