Initial version - 1.2.0.60
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
This commit is contained in:
@@ -0,0 +1,247 @@
|
||||
local CharDevelopmentCtrl = class("CharDevelopmentCtrl", BaseCtrl)
|
||||
local CharState = {
|
||||
Upgrade = 1,
|
||||
Advance = 2,
|
||||
Max = 3
|
||||
}
|
||||
CharDevelopmentCtrl._mapNodeConfig = {
|
||||
txtName = {sComponentName = "TMP_Text"},
|
||||
imgRareName = {sComponentName = "Image"},
|
||||
imgCharColor = {sComponentName = "Image"},
|
||||
imgTag = {nCount = 3},
|
||||
txtTag = {nCount = 3, sComponentName = "TMP_Text"},
|
||||
txtElement = {sComponentName = "TMP_Text"},
|
||||
imgElementIcon = {sComponentName = "Image"},
|
||||
Upgrade = {
|
||||
sNodeName = "---Upgrade---",
|
||||
sCtrlName = "Game.UI.CharacterInfoEx.CharUpgradeCtrl"
|
||||
},
|
||||
Advance = {
|
||||
sNodeName = "---Advance---",
|
||||
sCtrlName = "Game.UI.CharacterInfoEx.CharAdvanceCtrl"
|
||||
},
|
||||
aniRoot = {
|
||||
sNodeName = "----SafeAreaRoot----",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
safeAreaRoot = {
|
||||
sNodeName = "----SafeAreaRoot----"
|
||||
},
|
||||
redDotAdInfo = {nCount = 3},
|
||||
btnOpenAdInfo = {
|
||||
nCount = 3,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_OpenPreview"
|
||||
}
|
||||
}
|
||||
CharDevelopmentCtrl._mapEventConfig = {
|
||||
CharDevelopmentRefresh = "OnEvent_Refresh",
|
||||
[EventId.CharBgRefresh] = "OnEvent_RefreshPanel",
|
||||
[EventId.CharRelatePanelAdvance] = "OnEvent_PanelAdvance",
|
||||
[EventId.CharRelatePanelBack] = "OnEvent_PanelBack",
|
||||
[EventId.UIBackConfirm] = "OnEvent_UIBack",
|
||||
[EventId.UIHomeConfirm] = "OnEvent_Home",
|
||||
CraftingSuccess = "OnEvent_ItemChanged",
|
||||
ConsumableUsed = "OnEvent_ItemChanged",
|
||||
AutoFillSuccess = "OnEvent_ItemChanged",
|
||||
CharRefreshActor2D = "OnEvent_RefreshActor2D",
|
||||
[EventId.ClosePanel] = "OnEvent_ClosePanel"
|
||||
}
|
||||
function CharDevelopmentCtrl:RefreshContent()
|
||||
if self._panel.nPanelId ~= PanelId.CharUpPanel then
|
||||
return
|
||||
end
|
||||
self.nCharId = self._panel.nCharId
|
||||
self:RegisterRedDot(self.nCharId)
|
||||
self:RefreshData()
|
||||
self:RefreshInfo()
|
||||
self:SwitchState()
|
||||
end
|
||||
function CharDevelopmentCtrl:RefreshData()
|
||||
self.playerCharData = PlayerData.Char:GetCharDataByTid(self.nCharId)
|
||||
local nLevel = self.playerCharData.nLevel
|
||||
local nAdvance = self.playerCharData.nAdvance
|
||||
local nGrade = ConfigTable.GetData_Character(self.nCharId).Grade
|
||||
self.State = CharState.Upgrade
|
||||
local tbAdvanceLevel = PlayerData.Char:GetAdvanceLevelTable()
|
||||
self.curGradeLevelArr = tbAdvanceLevel[nGrade]
|
||||
local curGradeLevelArr = self.curGradeLevelArr
|
||||
self.maxAdvance = -1
|
||||
for i = 1, #curGradeLevelArr do
|
||||
self.maxAdvance = self.maxAdvance + 1
|
||||
if nAdvance + 1 == i then
|
||||
self.MaxLevel = curGradeLevelArr[nAdvance + 1]
|
||||
if nLevel == self.MaxLevel then
|
||||
self.State = CharState.Advance
|
||||
elseif nLevel < self.MaxLevel then
|
||||
self.State = CharState.Upgrade
|
||||
end
|
||||
end
|
||||
end
|
||||
if self.MaxLevel == nil then
|
||||
self.MaxLevel = nLevel
|
||||
end
|
||||
if nAdvance == self.maxAdvance and self.State == CharState.Advance then
|
||||
self.State = CharState.Max
|
||||
end
|
||||
local nUpgradeId = 10000 + nGrade * 1000 + nLevel + 1
|
||||
local mapUpgrade = ConfigTable.GetData("CharacterUpgrade", nUpgradeId, true)
|
||||
local maxExp = 9999
|
||||
if mapUpgrade ~= nil then
|
||||
maxExp = mapUpgrade.Exp
|
||||
end
|
||||
self.mapCurLevel = {
|
||||
nLevel = nLevel,
|
||||
nExp = self.playerCharData.nRankExp,
|
||||
nMaxLevel = self.MaxLevel,
|
||||
nMaxExp = maxExp,
|
||||
nMatExp = 0,
|
||||
nNextMaxLv = curGradeLevelArr[nAdvance + 2] or self.MaxLevel
|
||||
}
|
||||
end
|
||||
function CharDevelopmentCtrl:RefreshInfo()
|
||||
local mapCfg = ConfigTable.GetData_Character(self.nCharId)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtName, mapCfg.Name)
|
||||
self:SetSprite_FrameColor(self._mapNode.imgRareName, mapCfg.Grade, AllEnum.FrameType_New.Text)
|
||||
NovaAPI.SetImageNativeSize(self._mapNode.imgRareName)
|
||||
local mapCharDescCfg = ConfigTable.GetData("CharacterDes", self.nCharId)
|
||||
local sColor, tbTag
|
||||
if mapCharDescCfg ~= nil then
|
||||
sColor = mapCharDescCfg.CharColor
|
||||
tbTag = mapCharDescCfg.Tag
|
||||
else
|
||||
sColor = ""
|
||||
tbTag = {}
|
||||
end
|
||||
local _, colorChar = ColorUtility.TryParseHtmlString(sColor)
|
||||
NovaAPI.SetImageColor(self._mapNode.imgCharColor, colorChar)
|
||||
for i = 1, 3 do
|
||||
local nTag = tbTag[i]
|
||||
if nTag then
|
||||
self._mapNode.imgTag[i]:SetActive(true)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtTag[i], ConfigTable.GetData("CharacterTag", nTag).Title)
|
||||
else
|
||||
self._mapNode.imgTag[i]:SetActive(false)
|
||||
end
|
||||
end
|
||||
local sName = AllEnum.ElementIconType.Icon .. mapCfg.EET
|
||||
self:SetAtlasSprite(self._mapNode.imgElementIcon, "12_rare", sName)
|
||||
NovaAPI.SetTMPColor(self._mapNode.txtElement, AllEnum.ElementColor[mapCfg.EET])
|
||||
NovaAPI.SetTMPText(self._mapNode.txtElement, ConfigTable.GetUIText("T_Element_Attr_" .. mapCfg.EET))
|
||||
end
|
||||
function CharDevelopmentCtrl:SwitchState()
|
||||
self.isCanSendAdvance = false
|
||||
self.isCanSendAdvanceNext = false
|
||||
self._mapNode.Upgrade.gameObject:SetActive(self.State ~= CharState.Advance)
|
||||
self._mapNode.Advance.gameObject:SetActive(self.State == CharState.Advance)
|
||||
if self.State == CharState.Advance then
|
||||
EventManager.Hit("RefreshCharTopBarText", ConfigTable.GetUIText("UITitle_CharUp2"))
|
||||
self._mapNode.Advance:Refresh(self.nCharId, self.mapCurLevel, self.maxAdvance)
|
||||
if PanelManager.CheckPanelOpen(PanelId.CharSucBar) then
|
||||
self.isCanSendAdvance = true
|
||||
else
|
||||
EventManager.Hit("Guide_PassiveCheck_Msg", "Guide_CharDevelopmentAdvance")
|
||||
end
|
||||
else
|
||||
EventManager.Hit("RefreshCharTopBarText", ConfigTable.GetUIText("UITitle_CharUp1"))
|
||||
self._mapNode.Upgrade:Refresh(self.nCharId, self.mapCurLevel, self.maxAdvance, self.State == CharState.Max)
|
||||
if self.mapCurLevel.nLevel >= 10 and self.mapCurLevel.nMaxLevel == 20 then
|
||||
if PanelManager.CheckPanelOpen(PanelId.CharSucBar) then
|
||||
self.isCanSendAdvanceNext = true
|
||||
else
|
||||
EventManager.Hit("Guide_PassiveCheck_Msg", "Guide_CharDevelopmentAdvanceNext")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
function CharDevelopmentCtrl:RegisterRedDot(nCharId)
|
||||
if nil == nCharId then
|
||||
return
|
||||
end
|
||||
for _, v in ipairs(self._mapNode.redDotAdInfo) do
|
||||
RedDotManager.RegisterNode(RedDotDefine.Role_AdvanceReward, nCharId, v)
|
||||
end
|
||||
end
|
||||
function CharDevelopmentCtrl:PlaySwitchAnim(nClosePanelId, nOpenPanelId, bBack)
|
||||
if nClosePanelId == PanelId.CharUpPanel then
|
||||
self._mapNode.safeAreaRoot.gameObject:SetActive(false)
|
||||
end
|
||||
if nOpenPanelId == PanelId.CharUpPanel then
|
||||
self._mapNode.safeAreaRoot.gameObject:SetActive(true)
|
||||
EventManager.Hit("ChangeCharFgTab", false)
|
||||
EventManager.Hit("PlayCharBgLeftAnim", true)
|
||||
end
|
||||
end
|
||||
function CharDevelopmentCtrl:RefreshActor2D()
|
||||
if self._panel.nPanelId == PanelId.CharUpPanel then
|
||||
EventManager.Hit(EventId.CharBgRefresh, PanelId.CharUpPanel, self.nCharId)
|
||||
end
|
||||
end
|
||||
function CharDevelopmentCtrl:FadeIn()
|
||||
end
|
||||
function CharDevelopmentCtrl:Awake()
|
||||
end
|
||||
function CharDevelopmentCtrl:OnEnable()
|
||||
self:RefreshContent()
|
||||
if self._panel.nPanelId ~= PanelId.CharUpPanel then
|
||||
self._mapNode.safeAreaRoot.gameObject:SetActive(false)
|
||||
end
|
||||
end
|
||||
function CharDevelopmentCtrl:OnDisable()
|
||||
end
|
||||
function CharDevelopmentCtrl:OnDestroy()
|
||||
end
|
||||
function CharDevelopmentCtrl:OnBtnClick_OpenPreview()
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.CharAdvancePreview, self.maxAdvance, self.nCharId, self.curGradeLevelArr)
|
||||
end
|
||||
function CharDevelopmentCtrl:OnEvent_Refresh()
|
||||
self:RefreshData()
|
||||
self:SwitchState()
|
||||
end
|
||||
function CharDevelopmentCtrl:OnEvent_RefreshPanel()
|
||||
self:RefreshContent()
|
||||
end
|
||||
function CharDevelopmentCtrl:OnEvent_PanelAdvance(nClosePanelId, nOpenPanelId)
|
||||
self:PlaySwitchAnim(nClosePanelId, nOpenPanelId, false)
|
||||
self:RefreshContent()
|
||||
end
|
||||
function CharDevelopmentCtrl:OnEvent_PanelBack(nClosePanelId, nOpenPanelId)
|
||||
self:PlaySwitchAnim(nClosePanelId, nOpenPanelId, true)
|
||||
self:RefreshContent()
|
||||
end
|
||||
function CharDevelopmentCtrl:OnEvent_UIBack(nPanelId)
|
||||
if self._panel._nPanelId ~= nPanelId or self._panel.nPanelId ~= PanelId.CharUpPanel then
|
||||
return
|
||||
end
|
||||
EventManager.Hit(EventId.CharRelatePanelClose)
|
||||
EventManager.Hit("ChangeCharFgTab", true)
|
||||
EventManager.Hit("PlayCharBgLeftAnim", false)
|
||||
end
|
||||
function CharDevelopmentCtrl:OnEvent_Home(nPanelId)
|
||||
if self._panel._nPanelId ~= nPanelId or self._panel.nPanelId ~= PanelId.CharUpPanel then
|
||||
return
|
||||
end
|
||||
PanelManager.Home()
|
||||
end
|
||||
function CharDevelopmentCtrl:OnEvent_ItemChanged()
|
||||
if self._panel.nPanelId ~= PanelId.CharUpPanel then
|
||||
return
|
||||
end
|
||||
self:RefreshData()
|
||||
self:SwitchState()
|
||||
end
|
||||
function CharDevelopmentCtrl:OnEvent_RefreshActor2D()
|
||||
self:RefreshActor2D()
|
||||
end
|
||||
function CharDevelopmentCtrl:OnEvent_ClosePanel(nPanelId)
|
||||
if type(nPanelId) == "number" and nPanelId == PanelId.CharSucBar then
|
||||
if self.isCanSendAdvance then
|
||||
EventManager.Hit("Guide_PassiveCheck_Msg", "Guide_CharDevelopmentAdvance")
|
||||
self.isCanSendAdvance = false
|
||||
elseif self.isCanSendAdvanceNext then
|
||||
EventManager.Hit("Guide_PassiveCheck_Msg", "Guide_CharDevelopmentAdvanceNext")
|
||||
self.isCanSendAdvanceNext = false
|
||||
end
|
||||
end
|
||||
end
|
||||
return CharDevelopmentCtrl
|
||||
Reference in New Issue
Block a user