123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307 |
- ---@class KLUISkillDescribePanel:UIKmlLuaPanelBase
- ---@field view KLUISkillDescribePanelView
- local KLUISkillDescribePanel = class(UIKmlLuaPanelBase)
- local this = KLUISkillDescribePanel
- ---创建时调用一次
- function this:Init()
- end
- ---创建或者刷新界面数据时调用
- function this:Refresh()
- if self.args then
- self.skillId = self.args
- self:RefreshSkillInfo(self.skillId)
- end
- end
- ---注册UI事件和服务器消息
- function this:RegistEvents()
- GUI:AddOnClickEvent(self.view.CostTips, self, self.AddCostOnClick)
- GUI:AddOnClickEvent(self.view.BtnLearn, self, self.BtnLearnOnClick)
- SL:RegisterLUAEvent(LUA_EVENT_SELECT_SKILL_UI, self.SelectSkill, self)
- SL:RegisterLUAEvent(Event.SkillChange, self.ResSkillChangeMessage, self)
- SL:RegisterLUAEvent(Event.BagInfo_Change, self.BagInfo_Change, self)
- GUI:AddOnClickEvent(self.view.costItem, self, self.OnCostItemOnClick)
- end
- function this:OnCostItemOnClick()
- SL:OpenTips(nil, self.costId)
- end
- function this:BagInfo_Change()
- self:RefreshSkillInfo(self.skillId)
- end
- ---@param eventData SkillProtos.SkillChangeRes
- function this:ResSkillChangeMessage(_, eventData)
- if not eventData or not eventData.skillInfo then
- return
- end
- for _, skillInfo in pairs(eventData.skillInfo) do
- if skillInfo.skillId == self.skillId then
- self:RefreshSkillInfo(self.skillId)
- end
- end
- end
- function this:AddCostOnClick()
- return SL:CommonItemGetPath(nil, self.costId)
- end
- function this:BtnLearnOnClick()
- --点击学习技能或者升级技能
- if not self.skillId then
- return
- end
- if self.isLearned and not self.canUp then
- SL:TipMessage(SL:GetConfig('cfg_string', 253).text, 1, NoticeType.NoticeMid)--"道具数量不足",
- return
- end
- if not self.isLearned and not self.isOpen then
- SL:TipMessage(SL:GetConfig('cfg_string', 300).text, 1, NoticeType.NoticeMid)--"学习技能,未达到条件
- return
- end
- SL:ReqUpSkillMessage(self.skillId)
- end
- ---@param skillItem KLUISkillItem
- function this:SelectSkill(_, skillItem)
- return self:RefreshSkillInfo(skillItem.skillId)
- end
- ---@param skillId number
- function this:RefreshSkillInfo(skillId)
- self.skillId = skillId
- if not self.skillUI then
- ---@type KLUISkillInfoPanel
- self.skillUI = GUI:GetUI("dev/ui/Skill/Panel/KLUISkillInfo/KLUISkillInfoPanel")
- end
- ---@type Skill
- local skill = SL:GetMetaValue(EMetaVarGetKey.SKILL_DATA, self.skillId)
- local skillLv = skill and skill.level or 1
- if false or self.skillUI.skillShowType == E_SkillShowType.Transfer then
- self.isLearned = true
- else
- self.isLearned = skill ~= nil
- end
- ---@type cfg_skill_info_column
- local skillInfoTbl = SL:GetConfigMultiKeys('cfg_skill_info', self.skillId, skillLv, 'skillID', 'skillLevel')
- local spriteName = string.isNullOrEmpty(skillInfoTbl.icon) and "" or skillInfoTbl.icon
- GUI:Image_loadTexture(self.view.skillIcon, spriteName, "Atlas/UIOutSkillIcon.spriteatlas")
- self.isOpen = self:UpdateOpenConds(skillInfoTbl)
- local nextLv = skillLv + 1
- ---@type cfg_skill_info_column
- local nextSkillInfoTbl = SL:GetConfigMultiKeys('cfg_skill_info', self.skillId, nextLv, 'skillID', 'skillLevel')
- self.canUp = false
- if self.isLearned then
- --学习过技能
- GUI:SetActive(self.view.Unlearned, false)
- GUI:SetActive(self.view.desc1, true)
- --技能等级
- GUI:Text_setString(self.view.levelTxt1, "当前等级 " .. skillLv .. "级")
- if cfg_equip_angelTalentLv_post.IsAngelTalentSkill(self.skillId) then
- local angelTalentLvTbl = cfg_equip_angelTalentLv_post.GetAngleTalentLvTbl(self.skillId, skillLv)
- --技能描述
- if angelTalentLvTbl then
- GUI:Text_setString(self.view.skillDes1, angelTalentLvTbl.description)
- else
- GUI:Text_setString(self.view.skillDes1, "")
- end
- else
- --技能描述
- GUI:Text_setString(self.view.skillDes1, skillInfoTbl.tips)
- end
- GUI:Text_setString(self.view.SkillName, skillInfoTbl.name .. " <color=yellow>" .. skillLv .. "级</color>")
- if nextSkillInfoTbl then
- --有下一级
- GUI:SetActive(self.view.desc2, true)
- --技能等级
- GUI:Text_setString(self.view.levelTxt2, "下一等级 " .. nextLv .. "级")
- if cfg_equip_angelTalentLv_post.IsAngelTalentSkill(self.skillId) then
- local angelTalentLvTbl = cfg_equip_angelTalentLv_post.GetAngleTalentLvTbl(self.skillId, nextLv)
- --技能描述
- if angelTalentLvTbl then
- GUI:Text_setString(self.view.skillDes2, angelTalentLvTbl.description)
- else
- GUI:Text_setString(self.view.skillDes2, "")
- end
- else
- --技能描述
- GUI:Text_setString(self.view.skillDes2, nextSkillInfoTbl.tips)
- end
- GUI:SetActive(self.view.maxLevelTips, false)
- GUI:SetActive(self.view.CostShow, true)
- if #nextSkillInfoTbl.skillLevelUpItemID > 0 then
- GUI:SetActive(self.view.CostShow, true)
- self.costId = nextSkillInfoTbl.skillLevelUpItemID[1][1]
- local costCount = nextSkillInfoTbl.skillLevelUpItemID[1][2]
- GUI:Item_setItemId(self.view.costItem, self.costId)
- local ownCount = SL:GetMetaValue(EMetaVarGetKey.MONEY, self.costId)
- GUI:Text_setString(self.view.costCount, ownCount .. "/" .. costCount)
- if ownCount >= costCount then
- self.canUp = true
- GUI:Text_setTextColor(self.view.costCount, "#00ff00")
- else
- GUI:Text_setTextColor(self.view.costCount, "#ff0000")
- end
- GUI:Text_setString(self.view.BtnText, "升级")
- GUI:SetActive(self.view.BtnLearn, true)
- else
- GUI:SetActive(self.view.CostShow, false)
- GUI:SetActive(self.view.BtnLearn, false)
- end
- else
- GUI:SetActive(self.view.desc2, false)
- GUI:SetActive(self.view.maxLevelTips, true)
- GUI:SetActive(self.view.CostShow, false)
- GUI:SetActive(self.view.BtnLearn, false)
- end
- else
- GUI:SetActive(self.view.Unlearned, true)
- GUI:SetActive(self.view.desc1, false)
- GUI:SetActive(self.view.desc2, true)
- --技能等级
- GUI:Text_setString(self.view.levelTxt2, "下一等级 " .. skillLv .. "级")
- if cfg_equip_angelTalentLv_post.IsAngelTalentSkill(self.skillId) then
- local angelTalentLvTbl = cfg_equip_angelTalentLv_post.GetAngleTalentLvTbl(self.skillId, skillLv)
- --技能描述
- if angelTalentLvTbl then
- GUI:Text_setString(self.view.skillDes2, angelTalentLvTbl.description)
- else
- GUI:Text_setString(self.view.skillDes2, "")
- end
- else
- --技能描述
- GUI:Text_setString(self.view.skillDes2, nextSkillInfoTbl.tips)
- end
- GUI:Text_setString(self.view.SkillName, skillInfoTbl.name)
- if #skillInfoTbl.skillLevelUpItemID > 0 then
- GUI:SetActive(self.view.CostShow, true)
- self.costId = skillInfoTbl.skillLevelUpItemID[1][1]
- local costCount = skillInfoTbl.skillLevelUpItemID[1][2]
- GUI:Item_setItemId(self.view.costItem, self.costId)
- local ownCount = SL:GetMetaValue(EMetaVarGetKey.MONEY, self.costId)
- GUI:Text_setString(self.view.costCount, ownCount .. "/" .. costCount)
- if ownCount >= costCount then
- self.canUp = true
- GUI:Text_setTextColor(self.view.costCount, "#00ff00")
- else
- GUI:Text_setTextColor(self.view.costCount, "#ff0000")
- end
- GUI:Text_setString(self.view.BtnText, "学习")
- GUI:SetActive(self.view.BtnLearn, true)
- else
- GUI:SetActive(self.view.CostShow, false)
- GUI:SetActive(self.view.BtnLearn, false)
- end
- GUI:SetActive(self.view.maxLevelTips, false)
- end
- end
- ---@param skillInfoTbl cfg_skill_info_column
- function this:UpdateOpenConds(skillInfoTbl)
- --职业
- local isMeet = false
- ---@type cfg_career_column
- local careerTbl = SL:GetMetaValue(EMetaVarGetKey.ME_CAREER_TAB_COLUMN)
- for _, v in pairs(skillInfoTbl.needCareer) do
- if v[1] == careerTbl.baseCareer then
- if v[2] <= careerTbl.careerRank then
- GUI:Text_setString(self.view.Condition_1, careerTbl.name)
- isMeet = true
- break
- else
- careerTbl = SL:GetConfigMultiKeys("cfg_career", v[1], v[2], "baseCareer", "careerRank")
- GUI:Text_setString(self.view.Condition_1, careerTbl.name)
- end
- end
- end
- if isMeet then
- GUI:Text_setTextColor(self.view.Condition_1, "#00ff00")
- GUI:SetActive(self.view.bingo1, true)
- else
- GUI:Text_setTextColor(self.view.Condition_1, "#ff0000")
- GUI:SetActive(self.view.bingo1, false)
- end
- --等级
- local needLv1 = skillInfoTbl.needLevel[1] or 0
- local needLv2 = skillInfoTbl.needLevel[2]
- local meLv = SL:GetMetaValue(EMetaVarGetKey.LEVEL)
- local isMeetLv = false
- if needLv2 then
- isMeetLv = meLv >= needLv1 and meLv <= needLv2
- else
- isMeetLv = meLv >= needLv1
- end
- GUI:Text_setString(self.view.Condition_2, "角色 " .. needLv1 .. "级")
- if isMeetLv then
- GUI:Text_setTextColor(self.view.Condition_2, "#00ff00")
- GUI:SetActive(self.view.bingo2, true)
- else
- isMeet = false
- GUI:Text_setTextColor(self.view.Condition_2, "#ff0000")
- GUI:SetActive(self.view.bingo2, false)
- end
- --武器限制
- GUI:Text_setString(self.view.Condition_3, "武器技能")
- if SL:GetMetaValue(EMetaVarGetKey.SKILL_CHECK_EQUIP, skillInfoTbl.skillID, skillInfoTbl.skillLevel) then
- GUI:Text_setTextColor(self.view.Condition_3, "#00ff00")
- GUI:SetActive(self.view.bingo3, true)
- else
- isMeet = false
- GUI:Text_setTextColor(self.view.Condition_3, "#ff0000")
- GUI:SetActive(self.view.bingo3, false)
- end
- return isMeet
- end
- function this:Close()
- self.skillUI = nil
- end
- return this
|