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

210 lines
5.5 KiB

CareerSkillView = CareerSkillView or BaseClass(BaseItem)
function CareerSkillView:__init(parent_wnd, prefab_asset, layer_name)
self.base_file = "skillUI"
self.layout_file = "CareerSkillView"
-- self.full_screen = true
-- self.ani_right = 400
-- self.adjust_mid = {left = 0, right = 650}
self.model = SkillManager:getInstance()
self.skillui_model = SkillUIModel:getInstance()
self.skill_list_item = false
self.detail_item = false
self.skill_id_list = false
self.view_index = false
self.ui_type = false
self.selet_skill = false
self.is_pre_view = false
self.last_ui_cache = {}
self.is_open_select_up_skill = false
self:Load()
end
--清除界面
function CareerSkillView:__delete()
self:Remove()
end
function CareerSkillView:Load_callback()
self:LoadSuccess()
self:InitEvent()
end
function CareerSkillView:Remove()
if self.skill_list_item then
self.skill_list_item:DeleteMe()
self.skill_list_item = false
end
if self.detail_item then
self.detail_item:DeleteMe()
self.detail_item = false
end
end
function CareerSkillView:LoadSuccess()
local nodes = {
"right/skill_detail_con",
"right/config_btn:obj",
"mid/skill_list_con",
}
self:GetChildren(nodes)
self.skill_list_item = SkillUIListItem.New(self.skill_list_con, nil, self.maskID)
if self.need_refreshData then
self:SetData(self.skill_id_list, self.view_index, self.ui_type, self.is_open_select_up_skill)
end
end
function CareerSkillView:InitEvent()
local function onBtnClickHandler(target)
if target == self.config_btn_obj then
local level = 50
if level > RoleManager.Instance.mainRoleInfo.level then
Message.show(string.format("达到%d级,才可自由上阵技能哦~", level))
return
end
self.skillui_model:Fire(SkillUIModel.OPEN_SKILL_CONFIG_VIEW)
end
end
AddClickEvent(self.config_btn_obj,onBtnClickHandler)
local function onClickSkillItem(view_index, skill_id, pos)
if view_index ~= SkillUIModel.Click_SkillItem.ConfigSolt and view_index ~= SkillUIModel.Click_SkillItem.SkillLevelShow then
local _, is_pre_view = self:GetLastUICache(self.view_index)
self:SetLastUICache(self.view_index, skill_id, is_pre_view)
self:UpdateSkillDetail(skill_id)
end
end
self:BindEvent(self.skillui_model,SkillUIModel.CLICK_SKILL_ITEM, onClickSkillItem)
local function onUpdateSkillList()
self:UpdateView()
end
self:BindEvent(self.model,SkillManager.UPDATE_SKILL_LIST, onUpdateSkillList)
local function onChangeNextUpSkill(skill_id)
self:ChangeNextUpSkill(skill_id)
end
self:BindEvent(self.skillui_model, SkillUIModel.SKILL_UP_SUCCESS, onChangeNextUpSkill)
local function onChangeAutoDailySkillState()
self:UpdateView()
end
self:BindEvent(self.skillui_model,SkillUIModel.CHANGE_AUTO_DAILY_SKILL_STATE, onChangeAutoDailySkillState)
end
function CareerSkillView:UpdateView()
if not self.skill_id_list then return end
self.selet_skill, self.is_pre_view = self:GetOpenUpSkill() or self:GetLastUICache(self.view_index)
self.skill_list_item:SetData(self.skill_id_list, self.selet_skill, self.view_index)
self:UpdateSkillDetail(self.selet_skill)
end
function CareerSkillView:SetData(skill_id_list, view_index, ui_type, is_open_select_up_skill)
self.skill_id_list = skill_id_list
self.view_index = view_index
self.ui_type = ui_type
self.is_open_select_up_skill = is_open_select_up_skill
if self.is_loaded then
self:UpdateView()
else
self.need_refreshData = true
end
end
function CareerSkillView:GetLastUICache(index)
if not index then return end
local t = self.last_ui_cache
if not t[index] then
t[index] = {}
t[index].last_skill_id = self.skillui_model:GetSelectSkillIdByIdList(self.skill_id_list)
t[index].last_pre_view = false
end
return t[index].last_skill_id, t[index].last_pre_view
end
function CareerSkillView:SetLastUICache(index, skill_id, pre_view)
if not index then return end
local t = self.last_ui_cache
t[index] = t[index] or {}
t[index].last_skill_id = skill_id
t[index].last_pre_view = pre_view
end
function CareerSkillView:UpdateSkillDetail(skill_id)
if not self.detail_item then
self.detail_item = SkillUIDetailItem.New(self.skill_detail_con)
end
local skill_vo = self.model:getSkill(skill_id)
self.detail_item:SetData(skill_vo)
end
function CareerSkillView:ChangeNextUpSkill(skill_id)
if not self.skill_id_list then
return
end
local skill_vo = self.model:getSkill(skill_id)
if not skill_vo or skill_vo:CanUp() then
return
end
local next_select_skill_id = false
for i,list in ipairs(self.skill_id_list) do
for k,id in ipairs(list) do
skill_vo = self.model:getSkill(id)
if skill_vo and skill_vo:CanUp() then
next_select_skill_id = id
break
end
if next_select_skill_id then
break
end
end
end
if next_select_skill_id then
self.skillui_model:Fire(SkillUIModel.CLICK_SKILL_ITEM, SkillUIModel.Click_SkillItem.CareerList, next_select_skill_id)
end
end
--第一次打开时,是否选中可升级的技能
function CareerSkillView:GetOpenUpSkill()
if not self.is_open_select_up_skill then
return
end
if not self.skill_id_list then
return
end
self.is_open_select_up_skill = false
local current_select_skill_id = false
for i,list in ipairs(self.skill_id_list) do
for k,id in ipairs(list) do
skill_vo = self.model:getSkill(id)
if skill_vo and skill_vo:CanUp() then
current_select_skill_id = id
break
end
if current_select_skill_id then
break
end
end
end
if current_select_skill_id then
self:SetLastUICache(self.view_index, current_select_skill_id, self.is_pre_view)
end
return current_select_skill_id
end