diff --git a/lua/app/ui/talent/talent_info_ui.lua b/lua/app/ui/talent/talent_info_ui.lua index 6e6819c5..78f2d247 100644 --- a/lua/app/ui/talent/talent_info_ui.lua +++ b/lua/app/ui/talent/talent_info_ui.lua @@ -29,20 +29,27 @@ function TalentInfoUI:onLoadRootComplete() end) self.leftArrowBtn:addClickListener(function() - self.id = self.id - 1 + self.idx = self.idx - 1 self:onRefresh() end) self.rightArrowBtn:addClickListener(function() - self.id = self.id + 1 + self.idx = self.idx + 1 self:onRefresh() end) + self.list = DataManager.TalentData:getActiveList() + for i, cfg in ipairs(self.list) do + if cfg.id == self.id then + self.idx = i + break + end + end end function TalentInfoUI:onRefresh() - self.list = DataManager.TalentData:getCfgList() - self.talentCell:refresh(self.id, self.list[self.id]) - self.leftArrowBtn:setActive(self.id > 1) - self.rightArrowBtn:setActive(self.id < #self.list) + self.id = self.list[self.idx].id + self.talentCell:refresh(self.id, self.list[self.idx]) + self.leftArrowBtn:setActive(self.idx > 1 and #self.list ~= 1) + self.rightArrowBtn:setActive(self.idx < #self.list and #self.list ~= 1) local attr, num = DataManager.TalentData:getAttrById(self.id) local str = I18N:getText("talent", self.id, "desc") if attr and #attr > 0 then diff --git a/lua/app/userdata/talent/talent_data.lua b/lua/app/userdata/talent/talent_data.lua index 9fa5d631..00b52d86 100644 --- a/lua/app/userdata/talent/talent_data.lua +++ b/lua/app/userdata/talent/talent_data.lua @@ -28,6 +28,19 @@ function TalentData:getCfgList() return TalentCfg end +function TalentData:getActiveList() + local list = {} + for id = 1, #TalentCfg do + local cfg = TalentCfg[id] + cfg.id = id + local lv = self:getLevels(id) + if lv and lv > 0 then + table.insert(list, cfg) + end + end + return list +end + function TalentData:getPlayerExpCfgList(stage) if stage then return PlayerExpCfg[stage]