local UISkillAdvanceView = require("UISkill/UISkillAdvanceView_Generate")
local ColorExtension = require("ColorExtension")
function UISkillAdvanceView:OnAwake(data)
self.controller = require("UISkill/UISkillAdvanceCtr"):new()
self.controller:Init(self)
self.controller:SetData(data)
end
function UISkillAdvanceView:AddEventListener()
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
end
function UISkillAdvanceView:FillContent(data, uiBase)
self.uiBase = uiBase
local gameObject = self.uiBase:GetRoot()
if gameObject ~= nil then
self.gameObject = gameObject
self.transform = gameObject.transform
end
self:InitGenerate(self.transform, data)
self:Init()
end
function UISkillAdvanceView:Init()
local data = self.controller:GetData()
self:SetTagBox(1,data[1].id,data[1].lv,true)
self:SetTagBox(2,data[2].id,data[2].lv,false)
self.skillPreviewItem1.scrollView.scrollRect.enabled = false
self.skillPreviewItem2.scrollView.scrollRect.enabled = false
end
function UISkillAdvanceView:RemoveEventListener()
ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
end
function UISkillAdvanceView:AddUIEventListener()
self.uiBase:AddButtonUniqueEventListener(self.btnClose.button, self, self.OnClickCloseBtn)
self.uiBase:AddButtonUniqueEventListener(self.btnCancel.button, self, self.OnClickCloseBtn)
self.uiBase:AddButtonUniqueEventListener(self.btnSkillAdvance.button, self, self.OnClickAdvanceBtn)
end
function UISkillAdvanceView:OnPageInEnd()
self.super.OnPageInEnd(self)
self.skillPreviewItem1.scrollView.scrollRect.enabled = true
self.skillPreviewItem2.scrollView.scrollRect.enabled = true
end
function UISkillAdvanceView:SetTagBox(idx,skillId,lv,isNext)
local skillPreviewItem = self["skillPreviewItem"..idx]
if not skillPreviewItem then
return
end
local skillCfgData = ManagerContainer.CfgMgr:GetSkillCfgById(skillId)
skillPreviewItem.skillItem.icon.image.sprite = nil
if skillCfgData then
if skillCfgData.Icon then
CommonUtil.LoadIcon(self, skillCfgData.Icon, function (sprite)
skillPreviewItem.skillItem.icon.image.sprite = sprite
end, skillPreviewItem, "SkillIconAsyncIdx")
end
skillPreviewItem.skillItem.num.text.text = (I18N.SetLanguageValue('Lv') .. tostring(lv))
skillPreviewItem.skillName.text.text = I18N.SetLanguageValue(skillCfgData.Name)
local skillTreeCfgData
local IsLeaderHero = math.floor(skillId / 10000) == 1
if IsLeaderHero then
skillTreeCfgData = ManagerContainer.CfgMgr:GetSkillTreeCfgById(skillId)
else
skillTreeCfgData = ManagerContainer.CfgMgr:GetParterSkillTreeCfgById(skillId)
end
local quality = skillTreeCfgData and skillTreeCfgData.SkillQuality or 0
if quality ~= 0 then
CommonUtil.LoadIcon(self, Constant.Quality_Frame_Icons[quality], function (sprite)
skillPreviewItem.skillItem.frame.image.sprite = sprite
end)
else
CommonUtil.LoadIcon(self, "FrameNew/frame_item_gray", function (sprite)
skillPreviewItem.skillItem.frame.image.sprite = sprite
end)
end
local skillShowData = ManagerContainer.CfgMgr:GetSkillShowCfgById(skillId)
local tags = nil
local num = 0
if skillShowData then
tags = skillShowData.Label
if tags then
if type(tags[1]) == 'number' then
tags = {tags}
end
num = #tags
end
end
for i = 1, 4 do
local skillTagItem = skillPreviewItem['skillTagItem' .. i]
if skillTagItem then
if i <= num then
local tagId = tags[i][1]
local colorId = tags[i][2]
skillTagItem:SetActive(true)
skillTagItem.bgColorID.image.color = ColorExtension.HexStringToColor(I18N.SetLanguageValue('ColorID' .. tostring(colorId)))
skillTagItem.textSkillID.uILocalizeScript:SetContent('SkillTagID' .. tostring(tagId))
else
skillTagItem:SetActive(false)
end
end
end
self:SetDesText(skillPreviewItem.desText,skillId,lv,isNext)
else
skillPreviewItem.skillItem.icon.image.sprite = nil
skillPreviewItem.skillItem.num.text.text = ''
skillPreviewItem.skillName.text.text = ''
skillPreviewItem.skillTagItem1:SetActive(false)
skillPreviewItem.skillTagItem2:SetActive(false)
skillPreviewItem.skillTagItem3:SetActive(false)
skillPreviewItem.skillTagItem4:SetActive(false)
end
end
function UISkillAdvanceView:OnClickCloseBtn()
self:UIClose()
end
function UISkillAdvanceView:OnClickAdvanceBtn()
local data = self.controller:GetData()
local curSkillId = data[1].id
local heroId = data[3]
local errorCode, itemCfgId = CommonUtil.CheckSkillCanAvance(heroId,curSkillId)
if errorCode == 0 then
ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_SKILL_LEVEL_UP_REQ, {hero_id = heroId, skill_id=curSkillId})
else
if errorCode == 139 then
CommonUtil.ItemNotEnoughHandle(itemCfgId, self.uiData.id)
elseif errorCode == 200 then
ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('NeedAdvanceJobTips')
elseif errorCode == 141 then
ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('LearnSkillCondition04')
else
ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCode)
end
end
self:UIClose()
end
function UISkillAdvanceView:SetDesText(desText,skillId,skillLv,isNext)
local skillCfgId = CommonUtil.GetSkillCfgIdByIdAndLv(skillId, skillLv)
local skillCfgData = ManagerContainer.CfgMgr:GetSkillLevelCfgById(skillCfgId)
if skillCfgData then
local descParam = skillCfgData.DescParam
if descParam then
if type(descParam) == 'table' then
if isNext then
local ls = {}
local colorStr = ''
for i = 1, #descParam do
ls[i] = colorStr .. tostring(descParam[i]) .. ''
end
descParam = ls
end
desText.text.text = string.formatbykey(skillCfgData.Desc, unpack(descParam))
else
if isNext then
desText.text.text = string.formatbykey(skillCfgData.Desc, '' .. tostring(descParam) .. '')
else
desText.text.text = string.formatbykey(skillCfgData.Desc, descParam)
end
end
else
desText.text.text = string.formatbykey(skillCfgData.Desc)
end
else
desText.text.text = ''
end
end
function UISkillAdvanceView:OnHide()
end
function UISkillAdvanceView:OnShow(data)
self.controller:SetData(data)
end
function UISkillAdvanceView:OnClose()
end
function UISkillAdvanceView:OnDispose()
self.controller:OnDispose()
end
return UISkillAdvanceView