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
|