|
|
- SkillConfigView = SkillConfigView or BaseClass(BaseView)
- SkillConfigView.POS_MAX = 8
- function SkillConfigView:__init()
-
- self.base_file = "skillUI"
- self.layout_file = "SkillConfigView"
-
- self.layer_name = "Activity"
- self.model = SkillManager:getInstance()
- self.skillui_model = SkillUIModel:getInstance()
- self.use_background = true
-
- self.click_bg_toClose = true
- self.change_scene_close = true
- self.destroy_imm = true
- self.is_set_zdepth = true
-
- self.blur_activity_bg = true
- self.use_show_anim = true
- self.use_hide_anim = true
-
- self.skill_item_list = {}
- self.config_skill_item_list = {}
- self.skill_tabs = false
- self.pos_table = {}
- self.select_plan = 1
- self.skill_plan_id_list = {}
- self.select_skill_id = false
- self.select_slot_pos = false
- self.drag_skill_id = false
- self.target_change_pos = false
-
- self.drag_view_mrg = DragViewMgr.New()
-
- self.slot_pos_unlock_table = Config.ConfigSkillUI.SlotPosUnLockTurn
-
- self.load_callback = function ()
- self:LoadSuccess()
- self:InitEvent()
- self:UpdateSkillPlanInfo()
- if self.need_refreshData == true then
- self:SetData(self.select_skill_id)
- self:UpdataSkillInfo(self.select_skill_id)
- end
- end
- self.open_callback = function ()
-
- end
- self.close_callback = function ()
- self:Remove()
- end
- end
-
-
- function SkillConfigView:Remove()
- for i,v in ipairs(self.skill_item_list) do
- v:DeleteMe()
- end
- self.skill_item_list = {}
-
- for i,v in ipairs(self.config_skill_item_list) do
- v:DeleteMe()
- end
- self.config_skill_item_list = {}
-
- if self.drag_view_mrg then
- self.drag_view_mrg:DeleteMe()
- end
- end
-
- function SkillConfigView:LoadSuccess()
-
- local nodes = {
- "mid/icon:img","mid/cd:tmp","mid/des:tmp","mid/power:txt","right/skill_config_con/bg:raw",
- "right/skill_config_con/skil_list_con", "mid/close:obj", "mid/ScrollView/Viewport/skill_con",
- }
-
- self:GetChildren(nodes)
- self.pos_table = {}
- for i=1,SkillConfigView.POS_MAX do
- self.pos_table[i] = self:GetChild("right/skill_config_con/skil_list_con/pos_"..i)
- end
- self.mScroll = self:GetChild("mid/ScrollView"):GetComponent("ScrollRect")
- self.skill_tabs = {}
- for i=1, 3 do
- self.skill_tabs[i] = {}
- self.skill_tabs[i].trans = self:GetChild("mid/ScrollView/Viewport/skill_con/tltle_"..i)
- self.skill_tabs[i].obj = self:GetChild("mid/ScrollView/Viewport/skill_con/tltle_"..i).gameObject
- self.skill_tabs[i].text = self:GetChild("mid/ScrollView/Viewport/skill_con/tltle_"..i.."/text"):GetComponent("TextMeshProUGUI")
- self.skill_tabs[i].title_bg = self:GetChild("mid/ScrollView/Viewport/skill_con/tltle_"..i.."/title_bg"):GetComponent("Image")
- end
- end
-
- function SkillConfigView:InitEvent()
- local function onBtnClickHandler(target)
- if target == self.close_obj then
- self:Close()
- end
- end
-
- AddClickEvent(self.close_obj, onBtnClickHandler)
-
- local function onClickSkillItem(view_index, skill_id, pos)
- if view_index == SkillUIModel.Click_SkillItem.ConfigList then
- self:UpdataSkillInfo(skill_id)
- elseif view_index == SkillUIModel.Click_SkillItem.ConfigSolt then
- self:SelectIdxSlot(pos, self.select_slot_pos, self.select_skill_id)
- end
- end
- self:BindEvent(self.skillui_model,SkillUIModel.CLICK_SKILL_ITEM, onClickSkillItem)
-
- local function onUpdateSkillList()
- self:UpdateSkillPlanInfo()
- self:UpdataSkillInfo(self.select_skill_id)
- --self:AddEffect()
- end
- self:BindEvent(self.model,SkillManager.UPDATE_SKILL_LIST, onUpdateSkillList)
-
- local function OnDragSkillItemEnd(item,skill_id, pos, ui_type)
- local pos = self.skil_list_con.transform:InverseTransformPoint(item.transform.position)
- local index = self:CheckDragSelectIndex(pos)
- if index then
- local my_turn = RoleManager:getInstance():GetMainRoleVo().turn
- if self.slot_pos_unlock_table[index] > my_turn then
- local career = RoleManager:getInstance():GetMainRoleVo().career
- local cfg = Config.Transfercareer
- local career_name = ""
- for k,v in pairs(cfg) do
- if v.career == career and v.transfer_id == self.slot_pos_unlock_table[index] then
- career_name = Trim(v.name)
- break
- end
- end
- Message.show(string.format("转职为%s后可解", HtmlColorTxt(career_name, "#2cf86f")))
- else
- local select_slot_pos = false
- for i,v in ipairs(self.skill_item_list) do
- local b = skill_id == v:GetSkillId()
- if b then
- select_slot_pos = i
- break
- end
- end
- if index ~= select_slot_pos then
- self:SelectIdxSlot(index, select_slot_pos, skill_id)
- end
- end
- end
-
- self.drag_skill_id = false
- self:UpdateDragTips(self.select_skill_id)
- end
- self:BindEvent(self.skillui_model,SkillUIModel.DRAG_SKILL_ITEM_END,OnDragSkillItemEnd)
-
- local function begin_callback(item)
- local skill_vo = self.model:getSkill(self.drag_skill_id)
- item:SetUseFor("SkillDrag")
- item:SetData(skill_vo,nil,nil,true)
- item:SetSelect(false)
- item:ShowRedDot(false)
- item:SetLock(false)
- end
-
- local function end_callback(item)
- self.skillui_model:Fire(SkillUIModel.DRAG_SKILL_ITEM_END, item, self.drag_skill_id, self.drag_skill_pos, 1)
- end
-
- local info =
- {
- item_class = SkillUIItem,
- begin_callback = begin_callback,
- end_callback = end_callback,
-
- }
- self.drag_view_mrg:Init(info)
- local function OnDragSkillItemBegin(skill_id, pos, ui_type)
- self.drag_skill_id = skill_id
- self.drag_skill_pos = pos
- self.drag_view_mrg:Start()
- self:UpdateDragTips(self.drag_skill_id)
- end
- self:BindEvent(self.skillui_model,SkillUIModel.DRAG_SKILL_ITEM_BEGIN,OnDragSkillItemBegin)
- end
-
- function SkillConfigView:SwitchPlan(plan)
- if plan == self.select_plan then return end
- self.select_plan = plan
- self:UpdateSkillPlanInfo()
- self:UpdataSkillInfo(self.select_skill_id)
- end
-
- function SkillConfigView:UpdateSkillPlanInfo()
- self.skill_plan_id_list = self.skillui_model:GetSkillPlan(self.select_plan)
- local my_turn = RoleManager:getInstance():GetMainRoleVo().turn
-
- for i=1,SkillConfigView.POS_MAX do
- local id = self.skill_plan_id_list[i]
- local item = self.skill_item_list[i]
- if not item then
- item = SkillUIItem.New(self.pos_table[i],nil, "SkillConfigView")
- self.skill_item_list[i] = item
- item:SetUseFor("SkillConfigViewSlot")
- end
- item:SetVisible(true)
- if self.slot_pos_unlock_table[i] > my_turn then
- item:SetLock(true)
- item:SetNil(i,SkillUIModel.Click_SkillItem.ConfigSolt)
- item:CanDrag(false)
- item:SetNeedTurnHandle(self.slot_pos_unlock_table[i])
- else
- item:SetNeedTurnHandle(false)
- if id == 0 then
- item:SetNil(i,SkillUIModel.Click_SkillItem.ConfigSolt)
- item:CanDrag(false)
- else
- local skill_vo = self.model:getSkill(id)
- item:SetData(skill_vo, i, SkillUIModel.Click_SkillItem.ConfigSolt, true, false)
- item:SetLockInfo(false)
- item:CanDrag(true)
- end
- end
-
- end
-
- self:UpdateSkillList()
- end
-
- --点击技能槽位
- function SkillConfigView:SelectIdxSlot(pos, select_slot_pos, select_skill_id)
- if select_slot_pos == false or self.skill_plan_id_list[pos] == 0 then
- --print(">>>>>>>>>>>>> 上阵技能: 位置 类型 方案 选中技能 方式",pos, SkillUIModel.Skill_Type.Skill, self.select_plan, self.select_skill_id, SkillUIModel.Hook_Type.Auto )
- GlobalEventSystem:Fire(EventName.SAVE_SKILL_SHORTCUT, pos, SkillUIModel.Skill_Type.Skill, self.select_plan, select_skill_id, SkillUIModel.Hook_Type.Auto)
- else
- --print(">>>>>>>>>>>>> 替换技能: 位置1 位置2 方案 ", self.select_slot_pos, pos, self.select_plan)
- GlobalEventSystem:Fire(EventName.REPLACE_SKILL_SHORTCUT, select_slot_pos, pos, self.select_plan)
- end
- self.target_change_pos = pos
- end
-
- function SkillConfigView:UpdataSkillInfo(skill_id)
- if not skill_id then return end
- self.select_skill_id = skill_id
- if self.is_loaded then
- local skill_vo = self.model:getSkill(skill_id)
- local cd = skill_vo:getCd()
- self.cd_tmp.text = cd == 0 and "" or string.format("冷却:%s", HtmlColorTxt((cd / 1000) .. "s", "#2cf86f"))
- self.des_tmp.text = skill_vo:GetDesc(1)
- self.power_txt.text = "f" .. skill_vo:GetPower()
- lua_resM:setOutsideImageSprite(self,self.icon_img,GameResPath.GetSkillIcon(skill_id), false)
- else
- self.need_refreshData = true
- end
-
- self.select_slot_pos = false
- for i,v in ipairs(self.skill_item_list) do
- local b = skill_id == v:GetSkillId()
- v:SetSelect(b)
- if b then
- self.select_slot_pos = i
- end
- end
-
- for i,v in ipairs(self.config_skill_item_list) do
- local b = skill_id == v:GetSkillId()
- v:SetSelect(b)
- end
- self:UpdateDragTips(self.select_skill_id)
- end
-
- function SkillConfigView:SetData(skill_id)
- self.select_skill_id = skill_id or self.select_skill_id
- if self.is_loaded then
- self.skill_plan_id_list = self.skillui_model:GetSkillPlan(self.select_plan)
- local list = self.skillui_model:GetMyInitiativeSkillList()
- local pos = false
- local t_pos = 0
- for i,v in ipairs(list) do
- for ii,id in ipairs(v) do
- t_pos = t_pos + 1
- if id == skill_id then
- pos = t_pos
- break
- end
- end
- end
- if pos then
- self.skillui_model:Fire(SkillUIModel.CLICK_SKILL_ITEM, SkillUIModel.Click_SkillItem.ConfigList, self.select_skill_id, pos)
- end
-
- else
- self.need_refreshData = true
- end
-
- end
-
- function SkillConfigView:CheckDragSelectIndex(pos)
- local index = nil
- local function IsContain(i_pos_x, i_pos_y, i_w, i_h, in_pos)
- if in_pos.x > i_pos_x - i_w / 2 and
- in_pos.x < i_pos_x + i_w /2 and
- in_pos.y > i_pos_y - i_h / 2 and
- in_pos.y < i_pos_y + i_h / 2 then
- return true
- end
- end
- for i,v in ipairs(self.pos_table) do
- local item_pos_x,item_pos_y = GetAnchoredPosition(v)
- local item_w, item_h = GetSizeDeltaXY(v)
- if IsContain(item_pos_x, item_pos_y, item_w, item_h, pos) then
- index = i
- break
- end
- end
- return index
- end
-
- function SkillConfigView:UpdateSkillList()
- self.skill_id_table = self.skillui_model:GetMyInitiativeSkillList()
- if not self.skill_id_table then return end
- self.skill_id_list = {}
- for i=1,#self.skill_tabs do
- self.skill_tabs[i].obj:SetActive(false)
- end
- for i,v in ipairs(self.config_skill_item_list) do
- v:SetVisible(false, true)
- end
- local select_skill_id = self.select_skill_id
- local height = 0
- local tab_heigt = 162
- local item_start_x = 78
- local item_start_y = -80
- local item_width = 122
- local item_height = 120
- local idx = 1
- for i,v in ipairs(self.skill_id_table) do
- self.skill_tabs[i].obj:SetActive(true)
- SetAnchoredPosition(self.skill_tabs[i].trans, 19.5 , - height)
- self.skill_tabs[i].text.text = self.skillui_model:GetTurnName(i - 1)
-
- for ii,vv in ipairs(v) do
- local row , col = self.skillui_model:GetRowCol(ii, 4)
- local skill_vo = self.model:getSkill(vv)
- self.skill_id_list[idx] = skill_vo
- local item = self.config_skill_item_list[idx]
- if not item then
- item = SkillUIItem.New(self.skill_con,nil,self.maskID, self.mScroll)
- self.config_skill_item_list[idx] = item
- end
- item:SetVisible(true, true)
- item:SetUseFor("SkillConfigViewList")
- item:SetData(skill_vo, idx, SkillUIModel.Click_SkillItem.ConfigList, false)
- item:SetSelect(skill_vo.id == self.select_id)
- item:CanDrag(skill_vo.level > 0)
- item:ShowRedDot(false)
- item:SetLockInfo(false)
- local x = item_start_x + (col - 1) * item_width
- local y = item_start_y - (row - 1) * item_height - height
- item:SetAnchoredPosition(x, y)
- if not select_skill_id then
- select_skill_id = skill_vo.id
- end
- idx = idx + 1
- end
- height = height + tab_heigt
- local row , col = self.skillui_model:GetRowCol(#v, 4)
- height = height + (row - 1) * item_height
- end
- SetSizeDeltaY(self.skill_con, height)
- self:UpdataSkillInfo(select_skill_id)
- end
-
- function SkillConfigView:UpdateDragTips(select_skill_id)
- if select_skill_id then
- local skill_vo = self.model:getSkill(select_skill_id)
- if skill_vo and skill_vo.level > 0 then
- for i,v in ipairs(self.skill_item_list) do
- local my_turn = RoleManager:getInstance():GetMainRoleVo().turn
- if my_turn >= self.slot_pos_unlock_table[i] then
- if v:IsNil() then
- v:SetHandle(SkillUIItem.HANDLE_TYPE.config)
- elseif v:GetSkillId() == select_skill_id then
- v:SetHandle(SkillUIItem.HANDLE_TYPE.default)
- else
- v:SetHandle(SkillUIItem.HANDLE_TYPE.change)
- end
- end
- end
- else
- for i,v in ipairs(self.skill_item_list) do
- v:SetHandle(SkillUIItem.HANDLE_TYPE.default)
- end
- end
- end
- end
-
- function SkillConfigView:AddEffect()
- if self.target_change_pos then
- if self.target_change_pos and self.skill_item_list[self.target_change_pos] then
- self.skill_item_list[self.target_change_pos]:WillShowEffect(true)
- self.target_change_pos = false
- end
- end
- end
|