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
|