Files
StellaSora_DataLua/lua/game/ui/vampirelevelselect/vampirelevelselect_levelinfogrid.lua
T
SL1900 35c8d87e86 Update - 1.4.0.73
EN: 1.4.0.73
CN: 1.4.0.74
JP: 1.4.0.77
KR: 1.4.0.80
2025-12-25 19:00:00 +09:00

170 lines
6.2 KiB
Lua

local VampireLevelSelect_levelInfoGrid = class("VampireLevelSelect_levelInfoGrid", BaseCtrl)
VampireLevelSelect_levelInfoGrid._mapNodeConfig = {
TMPTitleZone = {sComponentName = "TMP_Text"},
imgElementInfo = {sComponentName = "Image", nCount = 3},
txtLeader = {
sComponentName = "TMP_Text",
sLanguageId = "Build_Leader"
},
txtSub = {
nCount = 2,
sComponentName = "TMP_Text",
sLanguageId = "Build_Sub"
},
txtBtnEnemyInfo = {
sComponentName = "TMP_Text",
sLanguageId = "Equipment_Instance_EnemyInfo"
},
imgLevelImg = {sComponentName = "Image"},
tcChar = {nCount = 3},
Monster = {
sCtrlName = "Game.UI.TemplateEx.TemplateHeadCtrl",
nCount = 4
},
rtEmpty = {},
rtBuild = {},
TMPBuildSelectTitle = {
sComponentName = "TMP_Text",
sLanguageId = "RegionBoss_Manage_Title"
},
imgItemIcon = {sComponentName = "Image", nCount = 3},
imgItemRare = {sComponentName = "Image", nCount = 3},
txtRank = {sComponentName = "TMP_Text", nCount = 3},
txtLv = {sComponentName = "TMP_Text", nCount = 3},
TMPBuildRankTitle = {
sComponentName = "TMP_Text",
sLanguageId = "Template_Score"
},
imgRankIcon = {sComponentName = "Image"},
btnChangeBuild = {
sComponentName = "UIButton",
callback = "OnBtnClick_ChangeBuild"
},
btnSelectBuild = {
sComponentName = "UIButton",
callback = "OnBtnClick_ChangeBuild"
},
btnRemoveBuild = {
sComponentName = "UIButton",
callback = "OnBtnClick_RemoveBuild"
},
btnExchangeBuild = {
sComponentName = "UIButton",
callback = "OnBtnClick_ExchangeBuild"
},
btnEnemyInfo = {
sComponentName = "UIButton",
callback = "OnBtnClick_EnemyInfo"
}
}
VampireLevelSelect_levelInfoGrid._mapEventConfig = {}
VampireLevelSelect_levelInfoGrid._mapRedDotConfig = {}
function VampireLevelSelect_levelInfoGrid:Awake()
end
function VampireLevelSelect_levelInfoGrid:FadeIn()
end
function VampireLevelSelect_levelInfoGrid:FadeOut()
end
function VampireLevelSelect_levelInfoGrid:OnEnable()
end
function VampireLevelSelect_levelInfoGrid:OnDisable()
end
function VampireLevelSelect_levelInfoGrid:OnDestroy()
end
function VampireLevelSelect_levelInfoGrid:OnRelease()
end
function VampireLevelSelect_levelInfoGrid:Refresh(mapLevelData, mapBuildData, bFirstHalf)
self.bFirstHalf = bFirstHalf
self.mapLevelData = mapLevelData
local nPreviewMonsterGroupId = bFirstHalf and mapLevelData.FHPreviewMonsterGroupId or mapLevelData.SHPreviewMonsterGroupId
self.nPreviewMonsterGroupId = nPreviewMonsterGroupId
local sKey = bFirstHalf and "VampireTitle_FirstHalf" or "VampireTitle_SecondHalf"
NovaAPI.SetTMPText(self._mapNode.TMPTitleZone, ConfigTable.GetUIText(sKey))
local tbMonsterGroup
if nPreviewMonsterGroupId ~= nil then
local mapGroupCfgData = ConfigTable.GetData("PreviewMonsterGroup", nPreviewMonsterGroupId)
if mapGroupCfgData ~= nil then
tbMonsterGroup = mapGroupCfgData.MonsterIds
end
end
if tbMonsterGroup == nil then
tbMonsterGroup = {}
end
local comp = function(a, b)
local previewMonsterCfgA = ConfigTable.GetData("Monster", a)
local previewMonsterCfgB = ConfigTable.GetData("Monster", b)
if previewMonsterCfgA == nil or previewMonsterCfgB == nil then
return a < b
end
if previewMonsterCfgA.EpicLv ~= previewMonsterCfgB.EpicLv then
return previewMonsterCfgA.EpicLv < previewMonsterCfgB.EpicLv
else
return a < b
end
end
table.sort(tbMonsterGroup, comp)
for i = 1, 4 do
if tbMonsterGroup[i] == nil then
self._mapNode.Monster[i].gameObject:SetActive(false)
else
self._mapNode.Monster[i].gameObject:SetActive(true)
self._mapNode.Monster[i]:SetMonsterHead(tbMonsterGroup[i])
end
end
local tbEET = self.bFirstHalf and mapLevelData.EETScore1 or mapLevelData.EETScore2
for i = 1, 3 do
if tbEET == nil or tbEET[i] == nil then
self._mapNode.imgElementInfo[i].gameObject:SetActive(false)
else
self._mapNode.imgElementInfo[i].gameObject:SetActive(true)
self:SetAtlasSprite(self._mapNode.imgElementInfo[i], "12_rare", AllEnum.ElementIconType.Icon .. tbEET[i])
end
end
local sEpisode = self.bFirstHalf and self.mapLevelData.Episode or self.mapLevelData.Episode2
self:SetPngSprite(self._mapNode.imgLevelImg, sEpisode)
if mapBuildData == nil then
self._mapNode.rtEmpty:SetActive(true)
self._mapNode.rtBuild:SetActive(false)
else
self._mapNode.rtEmpty:SetActive(false)
self._mapNode.rtBuild:SetActive(true)
for i = 1, 3 do
if mapBuildData.tbChar[i] ~= nil then
self._mapNode.tcChar[i].gameObject:SetActive(true)
local mapChar = ConfigTable.GetData_Character(mapBuildData.tbChar[i].nTid)
local mapCharData = PlayerData.Char:GetCharDataByTid(mapBuildData.tbChar[i].nTid)
NovaAPI.SetTMPText(self._mapNode.txtRank[i], mapCharData.nLevel)
local nCharSkinId = mapCharData.nSkinId
local mapCharSkin = ConfigTable.GetData_CharacterSkin(nCharSkinId)
self:SetPngSprite(self._mapNode.imgItemIcon[i], mapCharSkin.Icon, AllEnum.CharHeadIconSurfix.XXL)
local nRarity = mapChar.Grade
local sFrame = AllEnum.FrameType_New.BoardFrame .. AllEnum.BoardFrameColor[nRarity == GameEnum.characterGrade.R and GameEnum.characterGrade.SR or nRarity]
self:SetAtlasSprite(self._mapNode.imgItemRare[i], "12_rare", sFrame, true)
else
self._mapNode.tcChar[i].gameObject:SetActive(false)
end
end
local sScore = "Icon/BuildRank/BuildRank_" .. mapBuildData.mapRank.Id
self:SetPngSprite(self._mapNode.imgRankIcon, sScore)
end
end
function VampireLevelSelect_levelInfoGrid:OnBtnClick_ChangeBuild()
local nIdx = self.bFirstHalf and 1 or 2
EventManager.Hit(EventId.OpenPanel, PanelId.RogueBossBuildBrief, 7, self.mapLevelData.Id, nIdx, {})
end
function VampireLevelSelect_levelInfoGrid:OnBtnClick_ExchangeBuild()
PlayerData.VampireSurvivor:ExchangeBuild(self.mapLevelData.Id)
end
function VampireLevelSelect_levelInfoGrid:OnBtnClick_RemoveBuild()
local nIdx = self.bFirstHalf and 1 or 2
PlayerData.VampireSurvivor:CacheSelectedBuildId(self.mapLevelData.Id, nIdx, 0)
end
function VampireLevelSelect_levelInfoGrid:OnBtnClick_EnemyInfo()
local tbOverrideWeakEET
if self.mapLevelData.Type == GameEnum.vampireSurvivorType.Turn then
tbOverrideWeakEET = self.bFirstHalf and self.mapLevelData.EETScore1 or self.mapLevelData.EETScore2
end
EventManager.Hit("OpenVampireMonsterInfo", self.nPreviewMonsterGroupId, tbOverrideWeakEET)
end
return VampireLevelSelect_levelInfoGrid