源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 

127 行
3.4 KiB

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