123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328 |
- ---@class KLUISkillTalentPanel:UIKmlLuaPanelBase
- ---@field view KLUISkillTalentPanelView
- local KLUISkillTalentPanel = class(UIKmlLuaPanelBase)
- local this =KLUISkillTalentPanel
- ---创建时调用一次
- function this:Init()
- self.SkillDataList = {}
- self.SkillItemList = {}
- ---最大兑换次数
- self.maxNum = InfoManager.masterTalentInfo:GetTalentMaxCount(EMasterTalentType.SKILL)
- ---剩余兑换次数
- self.surplusNum = 0
- ---当前经验
- self.nowExp = 0
- ---最大经验
- self.maxExp = 0
- ---当前天赋等级
- self.nowLevel = 0
- ---点数
- self.points = {}
- self.nowSeries = 0
- self.severSeries = 0
-
- GUI:DataListInitData(self.view.SkillDataList,function()
- return self:SkillDataListItemCountFunc()
- end,function(realIndex)
- return self:SkillDataListItemGetFunc(realIndex)
- end,function(realIndex, kmlcontrol)
- return self:SkillDataListItemInitFunc(realIndex, kmlcontrol)
- end, function(realIndex, kmlcontrol)
- return self:SkillDataListItemUpdateFunc(realIndex, kmlcontrol)
- end)
- self:GetAllTalentInfo()
- self:SetLeftButton()
- self:GetMaxExp()
- end
- ---获取天赋信息
- function this:GetAllTalentInfo()
- self.AllTalentInfoList = {}
- local cfg = SL:GetConfigTable("cfg_master_skilltalent")
- ---@param v cfg_master_skilltalent_column
- for i, v in pairs(cfg) do
- --筛选自己职业或者全职业(0为全职业)
- if table.contains(v.career,SL:MeData_GetCareer().baseCareer) or table.contains(v.career,0) then
- if not self.AllTalentInfoList[v.series] then
- self.AllTalentInfoList[v.series] = {}
- end
- if not self.AllTalentInfoList[v.series][v.steps] then
- self.AllTalentInfoList[v.series][v.steps] = {}
- end
- table.insert(self.AllTalentInfoList[v.series][v.steps],v)
- end
- end
- for i, v in pairs(self.AllTalentInfoList) do
- for z, q in pairs(v) do
- table.sort(q,function(a, b)
- return a.row < b.row
- end)
- end
- end
- end
- ---设置左侧按钮信息
- function this:SetLeftButton()
- self.FactionsCfg = InfoManager.masterTalentInfo:GetFactionsCfg(2)
- GUI:Image_loadTexture(self.view.LeftButton1_Icon,self.FactionsCfg[1].iconUi,"Atlas/UIMasterTalent.spriteatlas")
- GUI:SetImageNativeSize(self.view.LeftButton1_Icon)
- GUI:Image_loadTexture(self.view.LeftButton1_Title,self.FactionsCfg[1].textUi,"Atlas/UIMasterTalent.spriteatlas")
- GUI:Button_loadTextureNormal(self.view.LeftButton1,"D_noselect","Atlas/UIMasterTalent.spriteatlas")
- GUI:SetActive(self.view.LeftButton1_EnableText,false)
- GUI:Image_loadTexture(self.view.LeftButton2_Icon,self.FactionsCfg[2].iconUi,"Atlas/UIMasterTalent.spriteatlas")
- GUI:SetImageNativeSize(self.view.LeftButton2_Icon)
- GUI:Image_loadTexture(self.view.LeftButton2_Title,self.FactionsCfg[2].textUi,"Atlas/UIMasterTalent.spriteatlas")
- GUI:Button_loadTextureNormal(self.view.LeftButton2,"D_noselect","Atlas/UIMasterTalent.spriteatlas")
- GUI:SetActive(self.view.LeftButton2_EnableText,false)
- end
- ---注册UI事件和服务器消息
- function this:RegistEvents()
- GUI:AddOnClickEvent(self.view.LeftButton1,self,self.OnClickSwitchTalent,1)
- GUI:AddOnClickEvent(self.view.LeftButton2,self,self.OnClickSwitchTalent,2)
- GUI:AddOnClickEvent(self.view.ResetButton,self,self.OnClickResetButton)
- GUI:AddOnClickEvent(self.view.ExchangeExpButton,self,self.OnClickExchangeExpButton)
- GUI:AddOnClickEvent(self.view.LeftButton1_Enable,self,self.OnClickLeftButtonEnable,1)
- GUI:AddOnClickEvent(self.view.LeftButton2_Enable,self,self.OnClickLeftButtonEnable,2)
- SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_EXCHANGE_MASTER_EXP,self.RES_EXCHANGE_MASTER_EXP,self)
- SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_OPEN_MASTER_TYPE,self.RES_OPEN_MASTER_TYPE,self)
- SL:RegisterLUAEvent(LUA_EVENT_MASTER_RED_DOT_CHANGE, self.LUA_EVENT_MASTER_RED_DOT_CHANGE, self)
- SL:RegisterLUAEvent(LUA_EVENT_MASTER_SKILL_DATA_CHANGE, self.RES_MASTER_CHANGE_INFO, self)
- SL:RegisterLUAEvent(LUA_EVENT_MASTER_DATA_CHANGE, self.RES_MASTER_INFO, self)
- end
- ---启用按钮
- function this:OnClickLeftButtonEnable(control,eventData)
- --职业天赋系列
- local careerSeries = InfoManager.masterTalentInfo:GetNowTypeSelectSeries(EMasterTalentType.CAREER)
- if careerSeries == 0 then
- SL:CommonTipsMessage({stringTblID=216,
- ui = self,
- sureBtnText = "确定",
- cancelBtnText = "取消"})
- return
- end
- if careerSeries ~= eventData then
- SL:CommonTipsMessage({stringTblID=217,
- ui = self,
- sureBtnText = "确定",
- cancelBtnText = "取消",
- callback = function() self:EnableMater(eventData) end
- })
- return
- end
- self:EnableMater(eventData)
- end
- ---启用天赋
- function this:EnableMater(eventData)
- SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_OPEN_MASTER_TYPE,{series = self.FactionsCfg[eventData].series,type = EMasterTalentType.SKILL})
- end
- ---点击重置
- function this:OnClickResetButton()
- GUI:UIPanel_Open("dev/outui/MasterTalent/Panel/KLUIMasterTalentWashUp/KLUIMasterTalentWashUpPanel",_,_,
- {
- type = EMasterTalentType.SKILL,
- series = self.nowSeries
- })
- end
- ---点击兑换经验
- function this:OnClickExchangeExpButton()
- GUI:UIPanel_Open("dev/outui/MasterTalent/Panel/KLUIMasterTalentExchangeExp/KLUIMasterTalentExchangeExpPanel",_,_,
- {type = EMasterTalentType.SKILL,maxNum = self.maxNum,count = self.surplusNum})
- end
- function this:OnClickSwitchTalent(_,eventData)
- local selectSeries = eventData
- if selectSeries == 0 then
- selectSeries = 1
- end
- if self.nowSeries == selectSeries then
- self:SetPointText()
- return
- end
- self.nowSeries = selectSeries
- self.SkillDataList = self.AllTalentInfoList[self.FactionsCfg[self.nowSeries].series]
- GUI:DataListUpdateData(self.view.SkillDataList)
- GUI:SetActive(self.view.LineList,true)
- if self.nowSeries == 1 then
- GUI:Button_loadTextureNormal(self.view.LeftButton1,"D_select","Atlas/UIMasterTalent.spriteatlas")
- GUI:Button_loadTextureNormal(self.view.LeftButton2,"D_noselect","Atlas/UIMasterTalent.spriteatlas")
- elseif self.nowSeries == 2 then
- GUI:Button_loadTextureNormal(self.view.LeftButton2,"D_select","Atlas/UIMasterTalent.spriteatlas")
- GUI:Button_loadTextureNormal(self.view.LeftButton1,"D_noselect","Atlas/UIMasterTalent.spriteatlas")
- end
- self:SetPointText()
- end
- ---设置选中按钮的文本和按钮显隐
- function this:SetSelectSeriesButton()
- if self.severSeries == 0 then
- GUI:SetActive(self.view.LeftButton1_Enable,true)
- GUI:SetActive(self.view.LeftButton1_EnableText,false)
- GUI:SetActive(self.view.LeftButton2_Enable,true)
- GUI:SetActive(self.view.LeftButton2_EnableText,false)
- return
- end
- GUI:SetActive(self.view.LeftButton1_Enable,self.severSeries == 2)
- GUI:SetActive(self.view.LeftButton1_EnableText,self.severSeries == 1)
- GUI:SetActive(self.view.LeftButton2_Enable,self.severSeries == 1)
- GUI:SetActive(self.view.LeftButton2_EnableText,self.severSeries == 2)
- end
- ---兑换经验红点改变
- function this:LUA_EVENT_MASTER_RED_DOT_CHANGE()
- GUI:SetActive(self.view.ExchangeExpRedDot,InfoManager.masterTalentInfo.RedDataList[EMasterTalentType.SKILL])
- end
- ---响应:大师信息
- ---{type = 类型,
- ---series = 系列,
- ---points = 天赋点数,
- ---exchangedExpTimes = 已兑换次数,
- ---level = 等级,
- ---exp= 当前经验,
- ---isFree = 是否免费,
- ---talent = 天赋信息有多个{{id = 配置id, level, series系列},{id = 配置id, level, series系列}}}
- function this:RES_MASTER_INFO(id,message)
- if message and message["type"] == EMasterTalentType.SKILL then
- self.severSeries = message["series"]
- self.isFree = message["isFree"]
- self.surplusNum = message["exchangedExpTimes"]
- self.nowLevel = message["level"]
- self.nowExp = message["exp"]
- local seriesPoints = message["seriesPoints"]
- self:RefreshPointInfo(seriesPoints)
- self:GetMaxExp()
- self:OnClickSwitchTalent(_,self.severSeries)
- GUI:DataListUpdateData(self.view.SkillDataList)
- self:SetSelectSeriesButton()
- end
- end
- ---响应:兑换大师经验 回包 类型 等级与经验 次数
- function this:RES_EXCHANGE_MASTER_EXP(id,message)
- if message then
- self.surplusNum = message["exchangedExpTimes"]
- self.nowLevel = message["level"]
- self.nowExp = message["exp"]
- local seriesPoints = message["seriesPoints"]
- self:RefreshPointInfo(seriesPoints)
- self:SetPointText()
- self:GetMaxExp()
- GUI:DataListUpdateData(self.view.SkillDataList)
- end
- end
- ---响应:大师变化信息
- function this:RES_MASTER_CHANGE_INFO(id,message)
- if message then
- local seriesPoints = message["seriesPoints"]
- self:RefreshPointInfo(seriesPoints)
- self:SetPointText()
- GUI:DataListUpdateData(self.view.SkillDataList)
- end
- end
- ---响应:启用大师系列 回 : type series:选中启用的系列
- function this:RES_OPEN_MASTER_TYPE(id,message)
- if message and message["type"] == EMasterTalentType.SKILL then
- self.severSeries = message["series"]
- self:OnClickSwitchTalent(_,self.severSeries)
- self:SetSelectSeriesButton()
- end
- end
- ---刷新天赋点数据
- function this:RefreshPointInfo(seriesPoints)
- for i, v in pairs(seriesPoints) do
- local series = tonumber(v["series"])
- local points = tonumber(v["points"])
- if not self.points[series] then
- self.points[series] = 0
- end
- self.points[series] = points
- end
- end
- ---设置天赋点数文本
- function this:SetPointText()
- GUI:Text_setString(self.view.PointText,tostring(self.points[self.nowSeries] or 0))
- end
- ---设置等级和经验
- function this:SetLvAndExp()
- self:LUA_EVENT_MASTER_RED_DOT_CHANGE()
- GUI:Text_setString(self.view.Lv,tostring(self.nowLevel))
- if self.isMaxLevel then
- GUI:SetLoadingbar_startper(self.view.loadingbar,0)
- GUI:Text_setString(self.view.ExpText,"0/0")
- return
- end
- local value = 0
- if self.nowExp > 0 then
- value = Mathf.Ceil(self.nowExp/self.maxExp*100)
- end
- GUI:SetLoadingbar_startper(self.view.loadingbar,value)
- GUI:Text_setString(self.view.ExpText,self.nowExp.."/"..self.maxExp)
- end
- ---获取最大经验值
- function this:GetMaxExp()
- self.isMaxLevel = true
- local cfg = InfoManager.masterTalentInfo:GetSkillLevelCfg(self.nowLevel)
- if cfg and cfg.exp > 0 then--未满级
- self.isMaxLevel = false
- self.maxExp = cfg.exp
- end
- GUI:SetActive(self.view.ExchangeExpButton,not self.isMaxLevel)
- self:SetLvAndExp()
- end
- --------------------------------天赋列-------------------------------------------------------
- function this:SkillDataListItemCountFunc()
- return #self.SkillDataList + 1
- end
- function this:SkillDataListItemGetFunc(realIndex)
- local item = GUI:UIPanel_Open("dev/outui/MasterTalent/Item/KLUIMasterTalentColumn/KLUIMasterTalentColumnItem",
- self.view.SkillDataList, self, {}, true)
-
- self.SkillItemList[item.view.root] = item
- return item.view.root
- end
- function this:SkillDataListItemInitFunc(realIndex, kmlcontrol)
- end
- function this:SkillDataListItemUpdateFunc(realIndex, kmlcontrol)
- local data = self.SkillDataList[realIndex]
- local item = self.SkillItemList[kmlcontrol]
- item:SetSkillData(data,EMasterTalentType.SKILL)
- end
- ------------------------------------------------------------------------------------------------
- ---创建或者刷新界面数据时调用
- function this:Refresh()
- SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_MASTER_INFO,{type = EMasterTalentType.SKILL})
- end
- function this:Close()
- end
- return this
|