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:
SL1900
2025-12-03 01:00:00 +09:00
commit 5e0d58cfad
3595 changed files with 9373562 additions and 0 deletions
+265
View File
@@ -0,0 +1,265 @@
local BaseCtrl = require("Game.UI.CommonTipsEx.CommonTipsBaseCtrl")
local PerkTipsCtrl = class("PerkTipsCtrl", BaseCtrl)
PerkTipsCtrl._mapNodeConfig = {
btnCloseTips = {
sComponentName = "UIButton",
callback = "OnBtnClick_ClosePanel"
},
btnCloseWordTip = {
sComponentName = "Button",
callback = "OnBtnClick_CloseWord"
},
TMP_LinkBranch = {
sNodeName = "TMPItemDesc",
sComponentName = "TMPHyperLink",
callback = "OnBtnClick_Word"
},
safeAreaRoot = {
sNodeName = "----SafeAreaRoot----",
sComponentName = "RectTransform"
},
imgWordTipBg = {},
TMPWordDesc = {sComponentName = "TMP_Text"},
TMPWordTipsTitle = {sComponentName = "TMP_Text"},
imgTipsBg = {
sComponentName = "RectTransform"
},
rtContent = {
sComponentName = "RectTransform"
},
rtContentCanvasGroup = {
sNodeName = "rtContent",
sComponentName = "CanvasGroup"
},
TipsContent = {
sComponentName = "RectTransform"
},
TipsView = {
sComponentName = "RectTransform"
},
TMPPerkTitle = {sComponentName = "TMP_Text"},
TMPItemDesc = {sComponentName = "TMP_Text"},
svContent = {
sComponentName = "RectTransform"
},
svTipsContent = {
sComponentName = "RectTransform"
},
goParam = {
nCount = 4,
sCtrlName = "Game.UI.CommonTipsEx.PerkTipsParamCtrl"
},
rtQuest = {},
txtQuestTitle = {sComponentName = "TMP_Text"},
goStateOn = {},
goStateOff = {},
txtStateOn = {
sComponentName = "TMP_Text",
sLanguageId = "PerkQuest_Doing"
},
txtStateOff = {
sComponentName = "TMP_Text",
sLanguageId = "PerkQuest_Stop"
},
goCond = {nCount = 2},
imgContOff = {nCount = 2},
imgContOn = {nCount = 2},
txtCondTitle = {nCount = 4, sComponentName = "TMP_Text"},
txtCondDesc = {nCount = 4, sComponentName = "TMP_Text"},
btnShortcutClose = {
sComponentName = "NaviButton",
callback = "OnBtnClick_ClosePanel"
}
}
PerkTipsCtrl._mapEventConfig = {}
PerkTipsCtrl.minTipHeight = 87
PerkTipsCtrl.maxTipHeight = 557
local titleHeight = 72
function PerkTipsCtrl:RefreshQuest(mapQuest)
self._mapNode.rtQuest:SetActive(mapQuest)
if not mapQuest then
return
end
local mapCfg = ConfigTable.GetData("RoguelikeQuestCondition", mapQuest.nCondId)
NovaAPI.SetTMPText(self._mapNode.txtQuestTitle, ConfigTable.GetUIText("PerkQuest_Title2") .. mapCfg.Title)
local mapCond1 = {
nCur = mapQuest.tbProgress[1].Cur,
nMax = mapQuest.tbProgress[1].Max
}
local mapCond2 = {
nCur = mapQuest.tbProgress[2].Cur,
nMax = mapQuest.tbProgress[2].Max
}
self._mapNode.goStateOn:SetActive(mapCond1.nCur == mapCond1.nMax)
self._mapNode.goStateOff:SetActive(mapCond1.nCur < mapCond1.nMax)
if mapCond1.nCur == mapCond1.nMax then
self._mapNode.imgContOn[1]:SetActive(false)
self._mapNode.imgContOff[1]:SetActive(true)
self._mapNode.txtCondDesc[2].gameObject:SetActive(false)
self._mapNode.txtCondDesc[1].gameObject:SetActive(true)
NovaAPI.SetTMPText(self._mapNode.txtCondTitle[1], orderedFormat(ConfigTable.GetUIText("PerkQuest_Condition"), 1))
NovaAPI.SetTMPText(self._mapNode.txtCondDesc[1], mapCfg.Desc1)
else
self._mapNode.imgContOn[1]:SetActive(true)
self._mapNode.imgContOff[1]:SetActive(false)
self._mapNode.txtCondDesc[2].gameObject:SetActive(true)
self._mapNode.txtCondDesc[1].gameObject:SetActive(false)
NovaAPI.SetTMPText(self._mapNode.txtCondTitle[2], orderedFormat(ConfigTable.GetUIText("PerkQuest_Condition"), 1))
NovaAPI.SetTMPText(self._mapNode.txtCondDesc[2], mapCfg.Desc1)
end
if mapCond2.nCur == mapCond2.nMax then
self._mapNode.imgContOn[2]:SetActive(false)
self._mapNode.imgContOff[2]:SetActive(true)
self._mapNode.txtCondDesc[4].gameObject:SetActive(false)
self._mapNode.txtCondDesc[3].gameObject:SetActive(true)
NovaAPI.SetTMPText(self._mapNode.txtCondTitle[3], orderedFormat(ConfigTable.GetUIText("PerkQuest_Condition"), 2))
NovaAPI.SetTMPText(self._mapNode.txtCondDesc[3], mapCfg.Desc2)
else
self._mapNode.imgContOn[2]:SetActive(true)
self._mapNode.imgContOff[2]:SetActive(false)
self._mapNode.txtCondDesc[4].gameObject:SetActive(true)
self._mapNode.txtCondDesc[3].gameObject:SetActive(false)
NovaAPI.SetTMPText(self._mapNode.txtCondTitle[4], orderedFormat(ConfigTable.GetUIText("PerkQuest_Condition"), 2))
NovaAPI.SetTMPText(self._mapNode.txtCondDesc[4], string.format("%s%d/%d", mapCfg.Desc2, mapCond2.nCur, mapCond2.nMax))
end
end
function PerkTipsCtrl:RefreshHarmonySkill()
local mapCfg = ConfigTable.GetData("StarTowerHarmonySkill", self.mapData.nHarmonyId)
if not mapCfg then
return
end
NovaAPI.SetTMPText(self._mapNode.TMPPerkTitle, mapCfg.Name)
NovaAPI.SetTMPText(self._mapNode.TMPItemDesc, UTILS.ParseDesc(mapCfg))
self:RefreshQuest(false)
for _, v in ipairs(self._mapNode.goParam) do
v.gameObject:SetActive(false)
end
end
function PerkTipsCtrl:RefreshPerk()
local mapPerk = ConfigTable.GetData("Potential", self.mapData.nPerkId)
self.mapData.nLevel = self.mapData.nCount
local nType = mapPerk.BranchType
local nCharId = mapPerk.CharId
local tbSkillLevel = PlayerData.Char:GetSkillLevel(nCharId)
if nType == GameEnum.BranchType.Master then
self.mapData.nLevel = tbSkillLevel[GameEnum.skillSlotType.B]
elseif nType == GameEnum.BranchType.Assist then
self.mapData.nLevel = tbSkillLevel[GameEnum.skillSlotType.C]
end
local mapItemData = ConfigTable.GetData_Item(self.mapData.nPerkId)
NovaAPI.SetTMPText(self._mapNode.TMPPerkTitle, mapItemData.Title)
NovaAPI.SetTMPText(self._mapNode.TMPItemDesc, UTILS.ParseDesc(mapPerk))
self:RefreshQuest(false)
for _, v in ipairs(self._mapNode.goParam) do
v.gameObject:SetActive(false)
end
end
function PerkTipsCtrl:RefreshAffix()
local mapAffix = ConfigTable.GetData("StarTowerRankAffix", self.mapData.nAffixId)
if mapAffix ~= nil then
NovaAPI.SetTMPText(self._mapNode.TMPPerkTitle, mapAffix.Name)
NovaAPI.SetTMPText(self._mapNode.TMPItemDesc, UTILS.ParseDesc(mapAffix))
end
self:RefreshQuest(false)
for _, v in ipairs(self._mapNode.goParam) do
v.gameObject:SetActive(false)
end
end
function PerkTipsCtrl:Awake()
local tbParam = self:GetPanelParam()
if type(tbParam) == "table" then
self.rtTarget = tbParam[1]
self.mapData = tbParam[2]
end
end
function PerkTipsCtrl:FadeIn()
end
function PerkTipsCtrl:FadeOut()
end
function PerkTipsCtrl:OnEnable()
self:EnableGamepadUI(self._mapNode.btnShortcutClose)
if self.mapData.bWordTip then
if self.rtTarget ~= nil then
local vX = NovaAPI.GetViewPointX(self.rtTarget.gameObject)
if 0.5 < vX then
self._mapNode.imgWordTipBg.transform.localPosition = Vector3(-self._mapNode.imgWordTipBg.transform.localPosition.x, self._mapNode.imgWordTipBg.transform.localPosition.y, self._mapNode.imgWordTipBg.transform.localPosition.z)
end
end
self:OnBtnClick_Word(nil, self.mapData.sWordId)
self._mapNode.btnCloseWordTip.gameObject:SetActive(false)
self._mapNode.rtContent.gameObject:SetActive(false)
return
end
NovaAPI.SetCanvasGroupAlpha(self._mapNode.rtContentCanvasGroup, 0)
self._mapNode.imgWordTipBg:SetActive(false)
self._mapNode.btnCloseWordTip.gameObject:SetActive(false)
self.sortingOrder = NovaAPI.GetCanvasSortingOrder(self.gameObject:GetComponent("Canvas"))
local btnComp = self.rtTarget:GetComponent("Button")
if btnComp ~= nil then
btnComp.interactable = false
end
NovaAPI.SetComponentEnableByName(self.rtTarget.gameObject, "TopGridCanvas", true)
NovaAPI.SetTopGridCanvasSorting(self.rtTarget.gameObject, self.sortingOrder)
if self.mapData.bHarmony then
self:RefreshHarmonySkill()
elseif self.mapData.bAffix then
self:RefreshAffix()
else
self:RefreshPerk()
end
local wait = function()
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
local nContentHeight = self._mapNode.svTipsContent.sizeDelta.y
if nContentHeight > self.maxTipHeight then
nContentHeight = self.maxTipHeight
end
if nContentHeight < self.minTipHeight then
nContentHeight = self.minTipHeight
end
self._mapNode.svContent.sizeDelta = Vector2(self._mapNode.svContent.sizeDelta.x, nContentHeight)
self._mapNode.TipsContent.sizeDelta = Vector2(self._mapNode.TipsContent.sizeDelta.x, nContentHeight + titleHeight)
self._mapNode.imgTipsBg.sizeDelta = Vector2(self._mapNode.imgTipsBg.sizeDelta.x, nContentHeight + titleHeight + 40)
self:SetTipsPosition(self.rtTarget, self._mapNode.rtContent, self._mapNode.safeAreaRoot)
NovaAPI.SetCanvasGroupAlpha(self._mapNode.rtContentCanvasGroup, 1)
end
cs_coroutine.start(wait)
end
function PerkTipsCtrl:OnDisable()
self:DisableGamepadUI()
end
function PerkTipsCtrl:OnDestroy()
end
function PerkTipsCtrl:OnRelease()
end
function PerkTipsCtrl:OnBtnClick_Word(_, sWordId)
self._mapNode.btnCloseWordTip.gameObject:SetActive(true)
self._mapNode.imgWordTipBg:SetActive(true)
local nWordId = tonumber(sWordId)
local mapWordData = ConfigTable.GetData("Word", nWordId)
if mapWordData == nil then
if sWordId == nil then
printError("sWordId为空")
return
end
printError("wordId error:" .. sWordId)
return
end
NovaAPI.SetTMPText(self._mapNode.TMPWordDesc, UTILS.ParseDesc(mapWordData, GameEnum.levelTypeData.Exclusive, self.mapData.nNextLevel))
self._mapNode.TMPWordTipsTitle:SetText(string.format("<color=#%s>%s%s", mapWordData.Color, mapWordData.Title, mapWordData.TitleIcon))
end
function PerkTipsCtrl:OnBtnClick_CloseWord(btn)
self._mapNode.btnCloseWordTip.gameObject:SetActive(false)
self._mapNode.imgWordTipBg:SetActive(false)
end
function PerkTipsCtrl:OnBtnClick_ClosePanel(btn)
if self.rtTarget ~= nil then
local btnComp = self.rtTarget:GetComponent("Button")
if btnComp ~= nil then
btnComp.interactable = true
end
NovaAPI.SetComponentEnableByName(self.rtTarget.gameObject, "TopGridCanvas", false)
end
EventManager.Hit(EventId.ClosePanel, PanelId.PerkTips)
end
return PerkTipsCtrl