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,97 @@
|
||||
local BaseCtrl = require("GameCore.UI.BaseCtrl")
|
||||
local AffinityRewardCtrl = class("AffinityRewardCtrl", BaseCtrl)
|
||||
AffinityRewardCtrl._mapNodeConfig = {
|
||||
anit_window_01 = {sNodeName = "t_window", sComponentName = "Animator"},
|
||||
got_fullscreen_blur_black = {
|
||||
sNodeName = "t_fullscreen_blur_black",
|
||||
sComponentName = "GameObject"
|
||||
},
|
||||
btnsnapshot = {
|
||||
sNodeName = "snapshot",
|
||||
sComponentName = "Button",
|
||||
callback = "OnBtn_ClickClose"
|
||||
},
|
||||
btnClose = {
|
||||
sNodeName = "btnClose",
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtn_ClickClose"
|
||||
},
|
||||
svList = {
|
||||
sComponentName = "LoopScrollView"
|
||||
},
|
||||
txtWindowTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "CharacterRelation_Favour_Reward"
|
||||
}
|
||||
}
|
||||
AffinityRewardCtrl._mapEventConfig = {}
|
||||
function AffinityRewardCtrl:Awake()
|
||||
local tbParam = self:GetPanelParam()
|
||||
self.curNpcId = tbParam[1]
|
||||
self.curNpcAffinityGroup = 0
|
||||
self.tbAffinityCfgData = {}
|
||||
self.mapGridCtrl = {}
|
||||
self.mapNPCAffinityData = PlayerData.StarTower:GetNpcAffinityData(self.curNpcId)
|
||||
local mapNpcCfgData = ConfigTable.GetData("StarTowerNPC", self.curNpcId)
|
||||
if mapNpcCfgData ~= nil then
|
||||
self.curNpcAffinityGroup = mapNpcCfgData.AffinityGroupId
|
||||
end
|
||||
end
|
||||
function AffinityRewardCtrl:OnEnable()
|
||||
self._mapNode.anit_window_01:Play("t_window_04_t_in")
|
||||
self._mapNode.got_fullscreen_blur_black:SetActive(true)
|
||||
local forEachNpcAffinity = function(mapData)
|
||||
if mapData.AffinityGroupId == self.curNpcAffinityGroup and mapData.Level > 0 then
|
||||
table.insert(self.tbAffinityCfgData, mapData)
|
||||
end
|
||||
end
|
||||
ForEachTableLine(DataTable.NPCAffinityGroup, forEachNpcAffinity)
|
||||
local sort = function(a, b)
|
||||
return a.Level < b.Level
|
||||
end
|
||||
table.sort(self.tbAffinityCfgData, sort)
|
||||
local nIdx = 1
|
||||
for i, mapData in ipairs(self.tbAffinityCfgData) do
|
||||
if self.mapNPCAffinityData.Level < mapData.Level then
|
||||
nIdx = i
|
||||
break
|
||||
end
|
||||
end
|
||||
for nInstanceId, objCtrl in pairs(self.mapGridCtrl) do
|
||||
self:UnbindCtrlByNode(objCtrl)
|
||||
self.mapGridCtrl[nInstanceId] = nil
|
||||
end
|
||||
self._mapNode.svList:Init(#self.tbAffinityCfgData, self, self.OnRefreshGrid, nil)
|
||||
if 2 <= nIdx then
|
||||
nIdx = nIdx - 2
|
||||
else
|
||||
nIdx = 0
|
||||
end
|
||||
self._mapNode.svList:SetScrollGridPos(nIdx)
|
||||
end
|
||||
function AffinityRewardCtrl:OnDisable()
|
||||
for nInstanceId, objCtrl in pairs(self.mapGridCtrl) do
|
||||
self:UnbindCtrlByNode(objCtrl)
|
||||
self.mapGridCtrl[nInstanceId] = nil
|
||||
end
|
||||
self.mapGridCtrl = {}
|
||||
end
|
||||
function AffinityRewardCtrl:OnRefreshGrid(goGrid, gridIndex)
|
||||
local nInstanceId = goGrid:GetInstanceID()
|
||||
local objCtrl = self.mapGridCtrl[nInstanceId]
|
||||
if objCtrl == nil then
|
||||
objCtrl = self:BindCtrlByNode(goGrid, "Game.UI.StarTowerBook.Affinity.AffinityRewardGridCtrl")
|
||||
self.mapGridCtrl[nInstanceId] = objCtrl
|
||||
end
|
||||
local mapCfgData = self.tbAffinityCfgData[gridIndex + 1]
|
||||
objCtrl:Refresh(mapCfgData, self.mapNPCAffinityData)
|
||||
end
|
||||
function AffinityRewardCtrl:OnBtn_ClickClose()
|
||||
self._mapNode.anit_window_01:Play("t_window_04_t_out")
|
||||
self._mapNode.got_fullscreen_blur_black:SetActive(false)
|
||||
self:AddTimer(1, 0.3, "OnCloseAnimFinish", true, true, true)
|
||||
end
|
||||
function AffinityRewardCtrl:OnCloseAnimFinish()
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.NpcAffinityRewardPanel)
|
||||
end
|
||||
return AffinityRewardCtrl
|
||||
@@ -0,0 +1,77 @@
|
||||
local AffinityRewardGridCtrl = class("AffinityRewardGridCtrl", BaseCtrl)
|
||||
AffinityRewardGridCtrl._mapNodeConfig = {
|
||||
rt_item = {
|
||||
nCount = 3,
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl"
|
||||
},
|
||||
rtUnlock = {},
|
||||
rtLock = {},
|
||||
imgHead = {sComponentName = "Image"},
|
||||
TMPUnreceived = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "NPCAffinity_Received"
|
||||
},
|
||||
TMPReceived = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "NPCAffinity_Unreceived"
|
||||
},
|
||||
txtLevelName = {
|
||||
sComponentName = "TMP_Text",
|
||||
nCount = 2,
|
||||
sLanguageId = "Dating_Affinity_Level"
|
||||
},
|
||||
txtLevel = {sComponentName = "TMP_Text", nCount = 2},
|
||||
btnItem = {
|
||||
sComponentName = "UIButton",
|
||||
nCount = 3,
|
||||
callback = "OnBtnClick_RewardItem"
|
||||
}
|
||||
}
|
||||
AffinityRewardGridCtrl._mapEventConfig = {}
|
||||
AffinityRewardGridCtrl._mapRedDotConfig = {}
|
||||
function AffinityRewardGridCtrl:Awake()
|
||||
end
|
||||
function AffinityRewardGridCtrl:FadeIn()
|
||||
end
|
||||
function AffinityRewardGridCtrl:FadeOut()
|
||||
end
|
||||
function AffinityRewardGridCtrl:OnEnable()
|
||||
end
|
||||
function AffinityRewardGridCtrl:OnDisable()
|
||||
end
|
||||
function AffinityRewardGridCtrl:OnDestroy()
|
||||
end
|
||||
function AffinityRewardGridCtrl:OnRelease()
|
||||
end
|
||||
function AffinityRewardGridCtrl:Refresh(mapCfgData, mapAffinity)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtLevel[1], mapCfgData.Level)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtLevel[2], mapCfgData.Level)
|
||||
self:SetPngSprite(self._mapNode.imgHead, mapCfgData.Icon)
|
||||
local mapReward = decodeJson(mapCfgData.Reward)
|
||||
local tbReward = {}
|
||||
for nTid, nCount in pairs(mapReward) do
|
||||
table.insert(tbReward, {
|
||||
tonumber(nTid),
|
||||
tonumber(nCount)
|
||||
})
|
||||
end
|
||||
local sort = function(a, b)
|
||||
return a[1] < b[1]
|
||||
end
|
||||
table.sort(tbReward, sort)
|
||||
self.tbReward = tbReward
|
||||
for i = 1, 3 do
|
||||
if tbReward[i] ~= nil then
|
||||
self._mapNode.rt_item[i].gameObject:SetActive(true)
|
||||
self._mapNode.rt_item[i]:SetItem(tbReward[i][1], nil, tbReward[i][2], nil, false, false, false, true, false)
|
||||
else
|
||||
self._mapNode.rt_item[i].gameObject:SetActive(false)
|
||||
end
|
||||
end
|
||||
self._mapNode.rtUnlock:SetActive(mapCfgData.Level <= mapAffinity.Level)
|
||||
self._mapNode.rtLock:SetActive(mapCfgData.Level > mapAffinity.Level)
|
||||
end
|
||||
function AffinityRewardGridCtrl:OnBtnClick_RewardItem(btn, nIdx)
|
||||
UTILS.ClickItemGridWithTips(self.tbReward[nIdx][1], btn.gameObject, true, true, true)
|
||||
end
|
||||
return AffinityRewardGridCtrl
|
||||
@@ -0,0 +1,20 @@
|
||||
local BasePanel = require("GameCore.UI.BasePanel")
|
||||
local AffinityRewardPanel = class("AffinityRewardPanel", BasePanel)
|
||||
AffinityRewardPanel._bIsMainPanel = false
|
||||
AffinityRewardPanel._tbDefine = {
|
||||
{
|
||||
sPrefabPath = "StarTowerBook/NpcAffinityRewardPanel.prefab",
|
||||
sCtrlName = "Game.UI.StarTowerBook.Affinity.AffinityRewardCtrl"
|
||||
}
|
||||
}
|
||||
function AffinityRewardPanel:Awake()
|
||||
end
|
||||
function AffinityRewardPanel:OnEnable()
|
||||
end
|
||||
function AffinityRewardPanel:OnDisable()
|
||||
end
|
||||
function AffinityRewardPanel:OnDestroy()
|
||||
end
|
||||
function AffinityRewardPanel:OnRelease()
|
||||
end
|
||||
return AffinityRewardPanel
|
||||
@@ -0,0 +1,65 @@
|
||||
local BaseCtrl = require("GameCore.UI.BaseCtrl")
|
||||
local NpcFavorCtrl = class("NpcFavorCtrl", BaseCtrl)
|
||||
NpcFavorCtrl._mapNodeConfig = {
|
||||
txtFavourLevel = {
|
||||
sNodeName = "txtFavourLevel",
|
||||
sComponentName = "TMP_Text"
|
||||
},
|
||||
transFavourBarCenter = {
|
||||
sNodeName = "FavourBarCenter",
|
||||
sComponentName = "Transform"
|
||||
},
|
||||
txtFavourNum = {sNodeName = "txtFavour", sComponentName = "TMP_Text"},
|
||||
txtFavourBubble = {
|
||||
sNodeName = "txtFavourBubble",
|
||||
sComponentName = "TMP_Text"
|
||||
},
|
||||
imgHeart = {sNodeName = "imgHeart", sComponentName = "Image"},
|
||||
aniFavour = {
|
||||
sNodeName = "aniFavourRoot",
|
||||
sComponentName = "Animator"
|
||||
}
|
||||
}
|
||||
NpcFavorCtrl._mapEventConfig = {
|
||||
[EventId.AffinityChange] = "OnEvent_AffinityChange"
|
||||
}
|
||||
function NpcFavorCtrl:Awake()
|
||||
end
|
||||
function NpcFavorCtrl:OnEnable()
|
||||
end
|
||||
function NpcFavorCtrl:Refresh(nNpcId)
|
||||
self.curCharId = nNpcId
|
||||
local affinityData = PlayerData.StarTower:GetNpcAffinityData(nNpcId)
|
||||
self.curFavourExp = affinityData.Exp
|
||||
local mapNpc = ConfigTable.GetData("StarTowerNPC", nNpcId)
|
||||
local nGroupId = mapNpc.AffinityGroupId
|
||||
local nId = nGroupId * 100 + affinityData.Level
|
||||
local mapAffinityCfgData = ConfigTable.GetData("NPCAffinityGroup", nId)
|
||||
local data = mapAffinityCfgData
|
||||
local needExp = affinityData.nNeed
|
||||
self.curFavourLevel = data.AffinityLevelStage
|
||||
NovaAPI.SetTMPText(self._mapNode.txtFavourLevel, ConfigTable.GetUIText("Advance_Level_Name") .. affinityData.Level)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtFavourNum, self.curFavourExp .. "/" .. needExp)
|
||||
self._mapNode.txtFavourNum.gameObject:SetActive(needExp ~= 0)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtFavourBubble, data.RelationshipName)
|
||||
if data.AffinityLevelIcon ~= "" then
|
||||
end
|
||||
self._mapNode.aniFavour.gameObject:SetActive(false)
|
||||
self._mapNode.aniFavour.gameObject:SetActive(true)
|
||||
self._mapNode.aniFavour:SetInteger("affinity_lv", self.curFavourLevel)
|
||||
local percent = 0
|
||||
if needExp ~= 0 then
|
||||
percent = self.curFavourExp / needExp
|
||||
else
|
||||
percent = 1
|
||||
end
|
||||
self:RefreshProgressBar(percent, 0)
|
||||
end
|
||||
function NpcFavorCtrl:RefreshProgressBar(nPercent, nDuration)
|
||||
self._mapNode.transFavourBarCenter.localEulerAngles = Vector3(0, 0, 0)
|
||||
self._mapNode.transFavourBarCenter:DORotate(Vector3(0, 0, (1 - nPercent) * 102), nDuration, RotateMode.LocalAxisAdd)
|
||||
end
|
||||
function NpcFavorCtrl:ResetData()
|
||||
self._mapNode.transFavourBarCenter.localEulerAngles = Vector3(0, 0, 0)
|
||||
end
|
||||
return NpcFavorCtrl
|
||||
@@ -0,0 +1,44 @@
|
||||
local NpcRelationGridCtrl = class("NpcRelationGridCtrl", BaseCtrl)
|
||||
NpcRelationGridCtrl._mapNodeConfig = {
|
||||
rtUnlock = {},
|
||||
rtLock = {},
|
||||
TMPStroyChp = {sComponentName = "TMP_Text"},
|
||||
TMPStroyName = {sComponentName = "TMP_Text"},
|
||||
TMPRewardCount = {sComponentName = "TMP_Text"},
|
||||
imgRewardIcon = {sComponentName = "Image"},
|
||||
TMPCond = {sComponentName = "TMP_Text"}
|
||||
}
|
||||
NpcRelationGridCtrl._mapEventConfig = {}
|
||||
NpcRelationGridCtrl._mapRedDotConfig = {}
|
||||
function NpcRelationGridCtrl:Awake()
|
||||
end
|
||||
function NpcRelationGridCtrl:FadeIn()
|
||||
end
|
||||
function NpcRelationGridCtrl:FadeOut()
|
||||
end
|
||||
function NpcRelationGridCtrl:OnEnable()
|
||||
end
|
||||
function NpcRelationGridCtrl:OnDisable()
|
||||
end
|
||||
function NpcRelationGridCtrl:OnDestroy()
|
||||
end
|
||||
function NpcRelationGridCtrl:OnRelease()
|
||||
end
|
||||
function NpcRelationGridCtrl:Refresh(mapPlot, mapPlotData)
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPStroyChp, mapPlot.Name)
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPStroyName, mapPlot.Desc)
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPRewardCount, "×" .. mapPlot.ItemQty)
|
||||
local mapItemCfgData = ConfigTable.GetData_Item(mapPlot.ItemId)
|
||||
if mapItemCfgData ~= nil then
|
||||
self._mapNode.imgRewardIcon.gameObject:SetActive(true)
|
||||
self:SetPngSprite(self._mapNode.imgRewardIcon, mapItemCfgData.Icon)
|
||||
else
|
||||
self._mapNode.imgRewardIcon.gameObject:SetActive(false)
|
||||
end
|
||||
local str = orderedFormat(ConfigTable.GetUIText("NPCAffinity_UnlockCnd") or "", mapPlot.AffinityLevel)
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPCond, str)
|
||||
self._mapNode.TMPRewardCount.gameObject:SetActive(not PlayerData.StarTower:GetNpcPlotReceived(mapPlot.NPCId, mapPlot.Id))
|
||||
self._mapNode.rtUnlock:SetActive(mapPlot.AffinityLevel <= mapPlotData.Level)
|
||||
self._mapNode.rtLock:SetActive(mapPlot.AffinityLevel > mapPlotData.Level)
|
||||
end
|
||||
return NpcRelationGridCtrl
|
||||
@@ -0,0 +1,214 @@
|
||||
local StarTowerNpcAffinityCtrl = class("StarTowerNpcAffinityCtrl", BaseCtrl)
|
||||
StarTowerNpcAffinityCtrl._mapNodeConfig = {
|
||||
btnNpc = {
|
||||
sNodeName = "btnNpcTab",
|
||||
nCount = 4,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_NPCTab"
|
||||
},
|
||||
btnNpcTab = {
|
||||
nCount = 4,
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateToggleCtrl"
|
||||
},
|
||||
redDotAffinityTab = {nCount = 4},
|
||||
imgNpcHead = {nCount = 4, sComponentName = "Image"},
|
||||
TMPWeekAffinityCount = {sComponentName = "TMP_Text"},
|
||||
imgNPC = {sComponentName = "Image"},
|
||||
goAffinity = {
|
||||
sCtrlName = "Game.UI.StarTowerBook.Affinity.NpcFavorCtrl"
|
||||
},
|
||||
TMPNPCName = {sComponentName = "TMP_Text"},
|
||||
TMPNpcInfo = {sComponentName = "TMP_Text"},
|
||||
svAffinityList = {
|
||||
sComponentName = "LoopScrollView"
|
||||
},
|
||||
txtCollect = {sComponentName = "TMP_Text"},
|
||||
txtCollectCn = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Collect"
|
||||
},
|
||||
btnAffinityReward = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_AffinityReward"
|
||||
},
|
||||
rtNpcInfo = {sComponentName = "ScrollRect"}
|
||||
}
|
||||
StarTowerNpcAffinityCtrl._mapEventConfig = {}
|
||||
StarTowerNpcAffinityCtrl._mapRedDotConfig = {}
|
||||
function StarTowerNpcAffinityCtrl:Awake()
|
||||
self.tbNPC = {}
|
||||
self.mapNpcPlot = {}
|
||||
self.mapNpcAffinityData = {}
|
||||
self.nTotalPlotCount = 0
|
||||
local forEachStartowerNpc = function(mapData)
|
||||
table.insert(self.tbNPC, mapData)
|
||||
end
|
||||
ForEachTableLine(DataTable.StarTowerNPC, forEachStartowerNpc)
|
||||
local forEachStartowerNpcPlot = function(mapData)
|
||||
if self.mapNpcPlot[mapData.NPCId] == nil then
|
||||
self.mapNpcPlot[mapData.NPCId] = {}
|
||||
end
|
||||
self.nTotalPlotCount = self.nTotalPlotCount + 1
|
||||
table.insert(self.mapNpcPlot[mapData.NPCId], mapData)
|
||||
end
|
||||
local sort = function(a, b)
|
||||
return a.Id < b.Id
|
||||
end
|
||||
table.sort(self.tbNPC, sort)
|
||||
ForEachTableLine(DataTable.NPCAffinityPlot, forEachStartowerNpcPlot)
|
||||
local sortPlot = function(a, b)
|
||||
return a.AffinityLevel < b.AffinityLevel
|
||||
end
|
||||
for _, tbPlot in pairs(self.mapNpcPlot) do
|
||||
table.sort(tbPlot, sortPlot)
|
||||
end
|
||||
for i = 1, 4 do
|
||||
self._mapNode.btnNpcTab[i]:SetText(self.tbNPC[i].Name)
|
||||
self:SetPngSprite(self._mapNode.imgNpcHead[i], self.tbNPC[i].Head)
|
||||
end
|
||||
end
|
||||
function StarTowerNpcAffinityCtrl:FadeIn()
|
||||
end
|
||||
function StarTowerNpcAffinityCtrl:FadeOut()
|
||||
end
|
||||
function StarTowerNpcAffinityCtrl:OnEnable()
|
||||
for i = 1, 4 do
|
||||
RedDotManager.RegisterNode(RedDotDefine.StarTowerBook_Affinity_Reward, self.tbNPC[i].Id, self._mapNode.redDotAffinityTab[i])
|
||||
end
|
||||
end
|
||||
function StarTowerNpcAffinityCtrl:OnDisable()
|
||||
self:UnbindAllGridNodes()
|
||||
for i = 1, 4 do
|
||||
RedDotManager.UnRegisterNode(RedDotDefine.StarTowerBook_Affinity_Reward, self.tbNPC[i].Id, self._mapNode.redDotAffinityTab[i])
|
||||
end
|
||||
end
|
||||
function StarTowerNpcAffinityCtrl:OnDestroy()
|
||||
end
|
||||
function StarTowerNpcAffinityCtrl:OnRelease()
|
||||
end
|
||||
function StarTowerNpcAffinityCtrl:Init()
|
||||
self.nCurCount = 0
|
||||
for _, value in ipairs(self.tbNPC) do
|
||||
local tbPlotCount = PlayerData.StarTower:GetNpcReceivedPlot(value.Id)
|
||||
self.nCurCount = self.nCurCount + #tbPlotCount
|
||||
end
|
||||
self.mapNpcAffinityData = {}
|
||||
local forEachStartowerNpc = function(mapData)
|
||||
self.mapNpcAffinityData[mapData.Id] = PlayerData.StarTower:GetNpcAffinityData(mapData.Id)
|
||||
end
|
||||
ForEachTableLine(DataTable.StarTowerNPC, forEachStartowerNpc)
|
||||
self.mapAffinityGrid = {}
|
||||
self.nCurNpcId = self.tbNPC[1].Id
|
||||
if self._panel.nAffinityNpcId ~= 0 and self._panel.nAffinityNpcId ~= nil then
|
||||
self.nCurNpcId = self._panel.nAffinityNpcId
|
||||
end
|
||||
for i = 1, 4 do
|
||||
self._mapNode.btnNpcTab[i]:SetDefault(self.nCurNpcId == self.tbNPC[i].Id)
|
||||
end
|
||||
local nMaxCount = ConfigTable.GetConfigNumber("NPCAffinityNumberOfInteractions")
|
||||
local curCount = PlayerData.StarTower:GetNpcAffinityWeekCount()
|
||||
local str = orderedFormat(ConfigTable.GetUIText("NPCAffinity_WeekCnt") or "", curCount, nMaxCount)
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPWeekAffinityCount, str)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtCollect, string.format("%d/%d", self.nCurCount, self.nTotalPlotCount))
|
||||
self:RefreshContent(self.nCurNpcId)
|
||||
end
|
||||
function StarTowerNpcAffinityCtrl:RefreshContent(nNpcId)
|
||||
self.nCurNpcId = nNpcId
|
||||
local mapNpcCfg = ConfigTable.GetData("StarTowerNPC", nNpcId)
|
||||
if mapNpcCfg == nil then
|
||||
return
|
||||
end
|
||||
NovaAPI.SetVerticalNormalizedPosition(self._mapNode.rtNpcInfo, 1)
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPNPCName, mapNpcCfg.Name)
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPNpcInfo, mapNpcCfg.NPCDesc)
|
||||
self:SetPngSprite(self._mapNode.imgNPC, mapNpcCfg.Image)
|
||||
self._mapNode.goAffinity:Refresh(nNpcId)
|
||||
self._mapNode.svAffinityList:Init(#self.mapNpcPlot[nNpcId], self, self.OnGridRefresh, self.OnGridBtnClick)
|
||||
end
|
||||
function StarTowerNpcAffinityCtrl:OnGridRefresh(goGrid, nIdx)
|
||||
local nInstanceId = goGrid:GetInstanceID()
|
||||
local objCtrl = self.mapAffinityGrid[nInstanceId]
|
||||
if objCtrl == nil then
|
||||
objCtrl = self:BindCtrlByNode(goGrid, "Game.UI.StarTowerBook.Affinity.NpcRelationGridCtrl")
|
||||
self.mapAffinityGrid[nInstanceId] = objCtrl
|
||||
end
|
||||
nIdx = nIdx + 1
|
||||
local mapPlot = self.mapNpcPlot[self.nCurNpcId][nIdx]
|
||||
objCtrl:Refresh(mapPlot, self.mapNpcAffinityData[self.nCurNpcId])
|
||||
end
|
||||
function StarTowerNpcAffinityCtrl:OnGridBtnClick(goGrid, nIdx)
|
||||
local mapNpcAffinityData = self.mapNpcAffinityData[self.nCurNpcId]
|
||||
if mapNpcAffinityData == nil then
|
||||
return
|
||||
end
|
||||
nIdx = nIdx + 1
|
||||
local mapPlot = self.mapNpcPlot[self.nCurNpcId][nIdx]
|
||||
if mapPlot.AffinityLevel <= mapNpcAffinityData.Level then
|
||||
local ReceiveCallback = function(mapShow, mapChange)
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.PureAvgStory)
|
||||
local waitTransition = function()
|
||||
UTILS.OpenReceiveByDisplayItem(mapShow, mapChange)
|
||||
end
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 1.5)
|
||||
self:AddTimer(1, 1.5, waitTransition, true, true, true)
|
||||
end
|
||||
local AvgCallback = function()
|
||||
PlayerData.StarTower:ReceiveNpcAffinityReward(self.nCurNpcId, mapPlot.Id, ReceiveCallback)
|
||||
end
|
||||
local AvgCallbackReveived = function()
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.PureAvgStory)
|
||||
end
|
||||
if not PlayerData.StarTower:GetNpcPlotReceived(self.nCurNpcId, mapPlot.Id) then
|
||||
local mapData = {
|
||||
nType = AllEnum.StoryAvgType.Plot,
|
||||
sAvgId = mapPlot.avgId,
|
||||
nNodeId = nil,
|
||||
callback = AvgCallback
|
||||
}
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.PureAvgStory, mapData)
|
||||
else
|
||||
do
|
||||
local mapData = {
|
||||
nType = AllEnum.StoryAvgType.Plot,
|
||||
sAvgId = mapPlot.avgId,
|
||||
nNodeId = nil,
|
||||
callback = AvgCallbackReveived
|
||||
}
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.PureAvgStory, mapData)
|
||||
end
|
||||
end
|
||||
else
|
||||
local sTip = orderedFormat(ConfigTable.GetUIText("NPCAffinity_UnlockCnd") or "", mapPlot.AffinityLevel)
|
||||
EventManager.Hit(EventId.OpenMessageBox, sTip)
|
||||
end
|
||||
end
|
||||
function StarTowerNpcAffinityCtrl:UnbindAllGridNodes()
|
||||
if self.mapAffinityGrid then
|
||||
for goGrid, mapCtrl in pairs(self.mapAffinityGrid) do
|
||||
self:UnbindCtrlByNode(mapCtrl)
|
||||
end
|
||||
self.mapAffinityGrid = {}
|
||||
end
|
||||
end
|
||||
function StarTowerNpcAffinityCtrl:Back()
|
||||
self:UnbindAllGridNodes()
|
||||
EventManager.Hit("ChangeStarTowerBookPanel", AllEnum.StarTowerBookPanelType.Main)
|
||||
end
|
||||
function StarTowerNpcAffinityCtrl:OnBtnClick_NPCTab(btn, nIdx)
|
||||
local nSelectNpcId = self.tbNPC[nIdx].Id
|
||||
if self.nCurNpcId == nSelectNpcId then
|
||||
return
|
||||
end
|
||||
for i = 1, 4 do
|
||||
if self.nCurNpcId == self.tbNPC[i].Id then
|
||||
self._mapNode.btnNpcTab[i]:SetDefault(false)
|
||||
end
|
||||
end
|
||||
self.nCurNpcId = nSelectNpcId
|
||||
self._mapNode.btnNpcTab[nIdx]:SetDefault(true)
|
||||
self:RefreshContent(self.nCurNpcId)
|
||||
end
|
||||
function StarTowerNpcAffinityCtrl:OnBtnClick_AffinityReward(btn)
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.NpcAffinityRewardPanel, self.nCurNpcId)
|
||||
end
|
||||
return StarTowerNpcAffinityCtrl
|
||||
@@ -0,0 +1,41 @@
|
||||
local EventBookTogItemCtrl = class("EventBookTogItemCtrl", BaseCtrl)
|
||||
EventBookTogItemCtrl._mapNodeConfig = {
|
||||
goSelect = {},
|
||||
txtSelect = {sComponentName = "TMP_Text"},
|
||||
goUnSelect = {},
|
||||
txtUnSelect = {sComponentName = "TMP_Text"},
|
||||
goLock = {},
|
||||
txtLock = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Event_Lock"
|
||||
},
|
||||
redDotTab = {}
|
||||
}
|
||||
EventBookTogItemCtrl._mapEventConfig = {}
|
||||
EventBookTogItemCtrl._mapRedDotConfig = {}
|
||||
function EventBookTogItemCtrl:InitItem(eventData)
|
||||
self.nStatus = eventData.Status
|
||||
self.nEventId = eventData.Id
|
||||
self._mapNode.goLock.gameObject:SetActive(self.nStatus == AllEnum.BookQuestStatus.UnComplete)
|
||||
self._mapNode.goSelect.gameObject:SetActive(false)
|
||||
self._mapNode.goUnSelect.gameObject:SetActive(self.nStatus ~= AllEnum.BookQuestStatus.UnComplete)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtSelect, eventData.CfgData.Name)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtUnSelect, eventData.CfgData.Name)
|
||||
if self.nStatus == AllEnum.BookQuestStatus.UnComplete then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtSelect, ConfigTable.GetUIText("StarTower_Book_Event_Lock"))
|
||||
end
|
||||
RedDotManager.RegisterNode(RedDotDefine.StarTowerBook_Event_Reward, self.nEventId, self._mapNode.redDotTab)
|
||||
end
|
||||
function EventBookTogItemCtrl:SetSelect(bSelect)
|
||||
self._mapNode.goSelect.gameObject:SetActive(bSelect)
|
||||
if self.nStatus ~= AllEnum.BookQuestStatus.UnComplete then
|
||||
self._mapNode.goLock.gameObject:SetActive(false)
|
||||
self._mapNode.goUnSelect.gameObject:SetActive(not bSelect)
|
||||
else
|
||||
self._mapNode.goLock.gameObject:SetActive(not bSelect)
|
||||
self._mapNode.goUnSelect.gameObject:SetActive(false)
|
||||
end
|
||||
end
|
||||
function EventBookTogItemCtrl:OnDisable()
|
||||
end
|
||||
return EventBookTogItemCtrl
|
||||
@@ -0,0 +1,284 @@
|
||||
local StarTowerEventBookCtrl = class("StarTowerEventBookCtrl", BaseCtrl)
|
||||
local sRootPath = Settings.AB_ROOT_PATH
|
||||
local GameResourceLoader = require("Game.Common.Resource.GameResourceLoader")
|
||||
local ResType = GameResourceLoader.ResType
|
||||
local typeof = typeof
|
||||
local Path = require("path")
|
||||
local ResTypeAny = GameResourceLoader.ResType.Any
|
||||
local Offset = CS.Actor2DOffsetData
|
||||
local Actor2DManager = require("Game.Actor2D.Actor2DManager")
|
||||
StarTowerEventBookCtrl._mapNodeConfig = {
|
||||
tabLsv = {
|
||||
sComponentName = "LoopScrollView"
|
||||
},
|
||||
trSv = {sNodeName = "tabLsv", sComponentName = "Transform"},
|
||||
txtCollectCn = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Event_Book_Collect"
|
||||
},
|
||||
txtCollect = {sComponentName = "TMP_Text"},
|
||||
txtEventName = {sComponentName = "TMP_Text"},
|
||||
eventDescSv = {sComponentName = "ScrollRect"},
|
||||
txtEventDesc = {sComponentName = "TMP_Text"},
|
||||
goArea = {},
|
||||
txtAreaCn = {
|
||||
nCount = 2,
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Event_Book_Source"
|
||||
},
|
||||
txtArea = {nCount = 2, sComponentName = "TMP_Text"},
|
||||
txtProc = {sComponentName = "TMP_Text"},
|
||||
btnReceive = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Receive"
|
||||
},
|
||||
imgReceived = {},
|
||||
txtReward = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Event_Book_Received"
|
||||
},
|
||||
goEventLock = {},
|
||||
goEventUnlock = {},
|
||||
UIParticle = {nCount = 2},
|
||||
imgReward = {nCount = 2, sComponentName = "Image"},
|
||||
txtRewardCount = {sComponentName = "TMP_Text"},
|
||||
rtActor2D = {
|
||||
sNodeName = "----Actor2D_PNG----",
|
||||
sComponentName = "Transform"
|
||||
},
|
||||
rtTxtAreaCn2 = {
|
||||
sNodeName = "txtAreaCn2",
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
btnReceiveAllEvent = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_ReceiveAll"
|
||||
},
|
||||
TMPReceiveAllEventTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Quest_Btn_ReceiveAll"
|
||||
}
|
||||
}
|
||||
StarTowerEventBookCtrl._mapEventConfig = {}
|
||||
StarTowerEventBookCtrl._mapRedDotConfig = {}
|
||||
function StarTowerEventBookCtrl:UnRegisterRedDot()
|
||||
end
|
||||
function StarTowerEventBookCtrl:Init()
|
||||
self.nSelectIndex = 1
|
||||
self.nSelectEventId = 0
|
||||
self:RefreshEventList()
|
||||
self:RefreshSelectEvent()
|
||||
self:AddTimer(1, 0.1, function()
|
||||
local nWidth = self._mapNode.rtTxtAreaCn2.sizeDelta.x
|
||||
end, true, true, true)
|
||||
end
|
||||
function StarTowerEventBookCtrl:Back()
|
||||
self:UnRegisterRedDot()
|
||||
EventManager.Hit("ChangeStarTowerBookPanel", AllEnum.StarTowerBookPanelType.Main)
|
||||
end
|
||||
function StarTowerEventBookCtrl:RefreshSelectEvent()
|
||||
local eventData = self.mapEventBook[self.nSelectIndex]
|
||||
self._mapNode.goEventLock.gameObject:SetActive(eventData.Status == AllEnum.BookQuestStatus.UnComplete)
|
||||
self._mapNode.goEventUnlock.gameObject:SetActive(eventData.Status ~= AllEnum.BookQuestStatus.UnComplete)
|
||||
if eventData ~= nil then
|
||||
NovaAPI.SetVerticalNormalizedPosition(self._mapNode.eventDescSv, 1)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtEventName, eventData.CfgData.Name)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtEventDesc, eventData.CfgData.Story)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtArea[1], eventData.CfgData.Source)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtArea[2], eventData.CfgData.Source)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtProc, orderedFormat(ConfigTable.GetUIText("StarTower_Event_Book_EventProc") or "", eventData.nCurProgress, eventData.nGoal))
|
||||
self._mapNode.imgReceived.gameObject:SetActive(eventData.Status == AllEnum.BookQuestStatus.Received)
|
||||
self._mapNode.imgReward[1].gameObject:SetActive(eventData.Status ~= AllEnum.BookQuestStatus.Received)
|
||||
self._mapNode.imgReward[2].gameObject:SetActive(eventData.Status == AllEnum.BookQuestStatus.Received)
|
||||
for _, v in ipairs(self._mapNode.UIParticle) do
|
||||
v.gameObject:SetActive(eventData.Status == AllEnum.BookQuestStatus.Complete)
|
||||
end
|
||||
local nRewardId = eventData.CfgData.ItemId
|
||||
local itemCfg = ConfigTable.GetData_Item(nRewardId)
|
||||
if itemCfg ~= nil then
|
||||
self:SetPngSprite(self._mapNode.imgReward[1], itemCfg.Icon)
|
||||
self:SetPngSprite(self._mapNode.imgReward[2], itemCfg.Icon)
|
||||
end
|
||||
local nCount = eventData.CfgData.ItemQty
|
||||
NovaAPI.SetTMPText(self._mapNode.txtRewardCount, "x" .. nCount)
|
||||
local nCharId = eventData.CfgData.NPCId
|
||||
local nType = eventData.CfgData.Type
|
||||
if nCharId ~= nil then
|
||||
local trans = self._mapNode.rtActor2D
|
||||
local trPanelOffset = trans:GetChild(0)
|
||||
local trOffset = trPanelOffset:GetChild(0)
|
||||
local imgBody = trOffset:GetChild(0):GetComponent("Image")
|
||||
local imgFace = trOffset:GetChild(1):GetComponent("Image")
|
||||
local nShowPanelId = self:GetPanelId()
|
||||
local tbPanelOffsetData = Actor2DManager.GetMapPanelConfig(nShowPanelId)
|
||||
local x, y, s = 0, 0, 1
|
||||
if tbPanelOffsetData ~= nil then
|
||||
if 0 < tbPanelOffsetData.nReuse then
|
||||
x = tbPanelOffsetData.v3PanelOffset.x
|
||||
y = tbPanelOffsetData.v3PanelOffset.y
|
||||
s = tbPanelOffsetData.v3PanelOffset.z
|
||||
end
|
||||
if s <= 0 then
|
||||
s = 1
|
||||
end
|
||||
end
|
||||
trPanelOffset.localPosition = Vector3(x * 100, y * 100, 0)
|
||||
trPanelOffset.localScale = Vector3(s, s, 1)
|
||||
local v3OffsetPos, v3OffsetScale = self:GetCharPortrait(imgBody, imgFace, nCharId, nType)
|
||||
trOffset.localScale = v3OffsetScale
|
||||
trOffset.localPosition = v3OffsetPos
|
||||
end
|
||||
end
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
NovaAPI.SetScrollRectVertical(self._mapNode.eventDescSv, true)
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
end
|
||||
function StarTowerEventBookCtrl:GetCharPortrait(imgBody, imgFace, nCharId, nType)
|
||||
local nSkinId = 0
|
||||
if nType == 1 then
|
||||
nSkinId = ConfigTable.GetData_Character(nCharId).DefaultSkinId
|
||||
else
|
||||
nSkinId = ConfigTable.GetData("StarTowerNPC", nCharId).NPCSkin
|
||||
end
|
||||
local GetName = function(sPortrait, Face)
|
||||
local sFileFullName = Path.basename(sPortrait)
|
||||
local sFileExtName = Path.extension(sPortrait)
|
||||
local sFileName = string.gsub(sFileFullName, sFileExtName, "")
|
||||
sFileName = string.gsub(sFileName, "_a", "")
|
||||
local sBodyName = string.format("%s_%s", sFileName, "001")
|
||||
local sFaceName = string.format("%s_%s", sFileName, Face)
|
||||
return sBodyName, sFaceName
|
||||
end
|
||||
local GetSprite = function(sPortrait, sName)
|
||||
local _sPath = string.format("%s/atlas_png/a/%s.png", Path.dirname(sPortrait), sName)
|
||||
return self:LoadAsset(_sPath, typeof(Sprite))
|
||||
end
|
||||
local mapSkinData
|
||||
if nType == 1 then
|
||||
mapSkinData = ConfigTable.GetData("CharacterSkin", nSkinId)
|
||||
else
|
||||
mapSkinData = ConfigTable.GetData("NPCSkin", nSkinId)
|
||||
end
|
||||
if mapSkinData == nil then
|
||||
return
|
||||
end
|
||||
local sAssetPath = mapSkinData.Portrait
|
||||
local sFace = "002"
|
||||
local sBodyName, sFaceName = GetName(sAssetPath, sFace)
|
||||
NovaAPI.SetImageSpriteAsset(imgBody, GetSprite(sAssetPath, sBodyName))
|
||||
NovaAPI.SetImageSpriteAsset(imgFace, GetSprite(sAssetPath, sFaceName))
|
||||
NovaAPI.SetImageNativeSize(imgBody)
|
||||
NovaAPI.SetImageNativeSize(imgFace)
|
||||
local objOffset = self:LoadOffset(mapSkinData.Offset)
|
||||
local nX, nY = 0, 0
|
||||
local s, x, y = objOffset:GetOffsetData(self:GetPanelId(), indexOfPose("a"), true, nX, nY)
|
||||
local v3OffsetPos = Vector3(x * 100, y * 100, 0)
|
||||
local v3OffsetScale = Vector3(s, s, 1)
|
||||
return v3OffsetPos, v3OffsetScale
|
||||
end
|
||||
function StarTowerEventBookCtrl:LoadOffset(sPath)
|
||||
return self:LoadAsset(sPath, typeof(Offset))
|
||||
end
|
||||
function StarTowerEventBookCtrl:RefreshEventList()
|
||||
self.mapEventBook = PlayerData.StarTowerBook:GetAllEventBookData()
|
||||
for nIndex, v in ipairs(self.mapEventBook) do
|
||||
if RedDotManager.GetValid(RedDotDefine.StarTowerBook_Event_Reward, v.Id) then
|
||||
self.nSelectIndex = nIndex
|
||||
break
|
||||
end
|
||||
end
|
||||
for nInstanceId, objCtrl in pairs(self.mapGrids) do
|
||||
self:UnbindCtrlByNode(objCtrl)
|
||||
self.mapGrids[nInstanceId] = nil
|
||||
end
|
||||
if self.nSelectIndex == 1 then
|
||||
self._mapNode.tabLsv:SetAnim(0.02)
|
||||
end
|
||||
self._mapNode.tabLsv:Init(#self.mapEventBook, self, self.OnRefreshGrid, self.OnGridBtnClick)
|
||||
self._mapNode.tabLsv:SetScrollGridPos(self.nSelectIndex - 1, 0.1, 0)
|
||||
local nAllCount = 0
|
||||
local nCount = 0
|
||||
local bShowAllReceive = false
|
||||
for _, v in pairs(self.mapEventBook) do
|
||||
nAllCount = nAllCount + 1
|
||||
if v.Status ~= AllEnum.BookQuestStatus.UnComplete then
|
||||
nCount = nCount + 1
|
||||
end
|
||||
if v.Status == AllEnum.BookQuestStatus.Complete then
|
||||
bShowAllReceive = true
|
||||
end
|
||||
end
|
||||
self._mapNode.btnReceiveAllEvent.gameObject:SetActive(bShowAllReceive)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtCollect, string.format("%s/%s", nCount, nAllCount))
|
||||
end
|
||||
function StarTowerEventBookCtrl:GetCharBgPath(nSkinId, sFace)
|
||||
local sPortrait = string.format("Actor2D/Character/%s/atlas_png/a/%s_%s.png", nSkinId, nSkinId, "001")
|
||||
local sFace = string.format("Actor2D/Character/%s/atlas_png/a/%s_%s.png", nSkinId, nSkinId, "002")
|
||||
end
|
||||
function StarTowerEventBookCtrl:OnRefreshGrid(goGrid, gridIndex)
|
||||
local nInstanceID = goGrid:GetInstanceID()
|
||||
if nil == self.mapGrids[nInstanceID] then
|
||||
self.mapGrids[nInstanceID] = self:BindCtrlByNode(goGrid, "Game.UI.StarTowerBook.Event.EventBookTogItemCtrl")
|
||||
end
|
||||
local nIndex = gridIndex + 1
|
||||
local eventData = self.mapEventBook[nIndex]
|
||||
self.mapGrids[nInstanceID]:InitItem(eventData)
|
||||
self.mapGrids[nInstanceID]:SetSelect(self.nSelectIndex == nIndex)
|
||||
end
|
||||
function StarTowerEventBookCtrl:OnGridBtnClick(goGrid, gridIndex)
|
||||
local nIndex = gridIndex + 1
|
||||
local eventData = self.mapEventBook[nIndex]
|
||||
if self.nSelectEventId == eventData.Id then
|
||||
return
|
||||
end
|
||||
local nInstanceId = goGrid:GetInstanceID()
|
||||
local goSelect = self._mapNode.trSv:Find("Viewport/Content/" .. self.nSelectIndex - 1)
|
||||
if goSelect then
|
||||
self.mapGrids[goSelect.gameObject:GetInstanceID()]:SetSelect(false)
|
||||
end
|
||||
self.mapGrids[nInstanceId]:SetSelect(true)
|
||||
self.nSelectIndex = nIndex
|
||||
self.nSelectEventId = eventData.Id
|
||||
self:RefreshSelectEvent()
|
||||
end
|
||||
function StarTowerEventBookCtrl:Awake()
|
||||
self.nSelectEventId = 0
|
||||
self.nSelectIndex = 0
|
||||
self.mapGrids = {}
|
||||
end
|
||||
function StarTowerEventBookCtrl:OnEnable()
|
||||
end
|
||||
function StarTowerEventBookCtrl:OnDisable()
|
||||
self:UnRegisterRedDot()
|
||||
for nInstanceId, objCtrl in pairs(self.mapGrids) do
|
||||
self:UnbindCtrlByNode(objCtrl)
|
||||
self.mapGrids[nInstanceId] = nil
|
||||
end
|
||||
self.mapGrids = {}
|
||||
end
|
||||
function StarTowerEventBookCtrl:OnDestroy()
|
||||
end
|
||||
function StarTowerEventBookCtrl:OnRelease()
|
||||
end
|
||||
function StarTowerEventBookCtrl:OnBtnClick_Receive()
|
||||
local eventData = self.mapEventBook[self.nSelectIndex]
|
||||
if eventData ~= nil and eventData.Status == AllEnum.BookQuestStatus.Complete then
|
||||
local callback = function()
|
||||
self.mapEventBook = PlayerData.StarTowerBook:GetAllEventBookData()
|
||||
self:RefreshSelectEvent()
|
||||
end
|
||||
PlayerData.Quest:ReceiveStarTowerEventReward(eventData.Id, callback)
|
||||
end
|
||||
end
|
||||
function StarTowerEventBookCtrl:OnBtnClick_ReceiveAll()
|
||||
local callback = function()
|
||||
self.mapEventBook = PlayerData.StarTowerBook:GetAllEventBookData()
|
||||
self:RefreshSelectEvent()
|
||||
self._mapNode.btnReceiveAllEvent.gameObject:SetActive(false)
|
||||
end
|
||||
PlayerData.Quest:ReceiveStarTowerEventReward(0, callback)
|
||||
end
|
||||
return StarTowerEventBookCtrl
|
||||
@@ -0,0 +1,63 @@
|
||||
local FateCardBookItemCtrl = class("FateCardBookItemCtrl", BaseCtrl)
|
||||
FateCardBookItemCtrl._mapNodeConfig = {
|
||||
goLock = {},
|
||||
goNormal = {},
|
||||
imgFateCard = {sComponentName = "Image"},
|
||||
txtFateCardName = {sComponentName = "TMP_Text"},
|
||||
imgCollect = {},
|
||||
imgUnCollect = {},
|
||||
imgUnlock = {},
|
||||
txtCollect = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Collect"
|
||||
},
|
||||
txtUnCollect = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_UnCollect"
|
||||
},
|
||||
txtUnlock = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Lock"
|
||||
},
|
||||
imgMask = {},
|
||||
redDotCard = {},
|
||||
animCard = {sNodeName = "goNormal", sComponentName = "Animator"}
|
||||
}
|
||||
FateCardBookItemCtrl._mapEventConfig = {}
|
||||
FateCardBookItemCtrl._mapRedDotConfig = {}
|
||||
function FateCardBookItemCtrl:InitItem(nId, nStatus)
|
||||
self.nId = nId
|
||||
local itemCfg = ConfigTable.GetData_Item(nId)
|
||||
local fateCardCfg = ConfigTable.GetData("FateCard", nId)
|
||||
if fateCardCfg == nil or itemCfg == nil then
|
||||
return
|
||||
end
|
||||
local fateCardBookCfg = ConfigTable.GetData("StarTowerBookFateCard", nId)
|
||||
if fateCardBookCfg == nil then
|
||||
return
|
||||
end
|
||||
local sFrame = AllEnum.FrameType_New.StarTowerFateCard .. AllEnum.FrameColor_New[itemCfg.Rarity]
|
||||
self:SetPngSprite(self._mapNode.imgFateCard, string.gsub(itemCfg.Icon, "_L_", "_S_"))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtFateCardName, fateCardCfg.Name)
|
||||
self._mapNode.imgCollect.gameObject:SetActive(nStatus == AllEnum.FateCardBookStatus.Collect)
|
||||
self._mapNode.imgUnCollect.gameObject:SetActive(nStatus == AllEnum.FateCardBookStatus.UnLock)
|
||||
self._mapNode.imgUnlock.gameObject:SetActive(nStatus == AllEnum.FateCardBookStatus.Lock)
|
||||
self._mapNode.goLock.gameObject:SetActive(nStatus == AllEnum.FateCardBookStatus.Lock)
|
||||
self._mapNode.goNormal.gameObject:SetActive(nStatus ~= AllEnum.FateCardBookStatus.Lock)
|
||||
self._mapNode.imgMask.gameObject:SetActive(nStatus == AllEnum.FateCardBookStatus.UnLock)
|
||||
end
|
||||
function FateCardBookItemCtrl:RegisterRedDot()
|
||||
if self.nId then
|
||||
RedDotManager.RegisterNode(RedDotDefine.StarTowerBook_FateCard_New, self.nId, self._mapNode.redDotCard)
|
||||
end
|
||||
end
|
||||
function FateCardBookItemCtrl:UnRegisterRedDot()
|
||||
end
|
||||
function FateCardBookItemCtrl:PlayClickAnim(bClick)
|
||||
if bClick then
|
||||
self._mapNode.animCard:Play("CardBookItem_in")
|
||||
else
|
||||
self._mapNode.animCard:Play("CardBookItem_out")
|
||||
end
|
||||
end
|
||||
return FateCardBookItemCtrl
|
||||
@@ -0,0 +1,456 @@
|
||||
local StarTowerFateCardBookCtrl = class("StarTowerFateCardBookCtrl", BaseCtrl)
|
||||
StarTowerFateCardBookCtrl._mapNodeConfig = {
|
||||
goBundle = {},
|
||||
txtTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_FateCard_Title_01"
|
||||
},
|
||||
bundleLSV = {
|
||||
sComponentName = "LoopScrollView"
|
||||
},
|
||||
goCardList = {},
|
||||
togLSV = {
|
||||
sComponentName = "LoopScrollView"
|
||||
},
|
||||
goCardItem = {
|
||||
nCount = 8,
|
||||
sCtrlName = "Game.UI.StarTowerBook.FateCard.FateCardBookItemCtrl"
|
||||
},
|
||||
btnCard = {
|
||||
nCount = 8,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_CardItem"
|
||||
},
|
||||
imgEmpty = {},
|
||||
goRightCardList = {},
|
||||
txtCollectCn = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Collect"
|
||||
},
|
||||
txtCollectCount = {sComponentName = "TMP_Text"},
|
||||
btnReward = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Reward"
|
||||
},
|
||||
btnReceiveReward = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Reward"
|
||||
},
|
||||
btnLeft = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Left"
|
||||
},
|
||||
btnRight = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Right"
|
||||
},
|
||||
imgDotBg = {nCount = 8},
|
||||
imgDot = {nCount = 8},
|
||||
animPage = {sNodeName = "imgBook", sComponentName = "Animator"},
|
||||
goLeftCardList = {},
|
||||
goBlur = {},
|
||||
goCardDetail = {},
|
||||
animCardDetail = {
|
||||
sNodeName = "goCardDetail",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
btnBg = {
|
||||
sComponentName = "Button",
|
||||
callback = "OnBtnClick_Bg"
|
||||
},
|
||||
fateCardDetail = {
|
||||
sCtrlName = "Game.UI.StarTower.FateCard.FateCardItemCtrl"
|
||||
},
|
||||
goFateCardDetail = {
|
||||
sNodeName = "fateCardDetail"
|
||||
},
|
||||
btnToggleStarTower = {
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateToggleCtrl"
|
||||
},
|
||||
btnToggleSurvivor = {
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateToggleCtrl"
|
||||
},
|
||||
togST = {
|
||||
sNodeName = "btnToggleStarTower",
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_CardTypeStarTower"
|
||||
},
|
||||
togSV = {
|
||||
sNodeName = "btnToggleSurvivor",
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_CardTypeSurvivor"
|
||||
},
|
||||
txtArea = {sComponentName = "TMP_Text"},
|
||||
txtTips = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Close_Tip"
|
||||
},
|
||||
goCardTip = {},
|
||||
btnTipBg = {
|
||||
sComponentName = "Button",
|
||||
callback = "OnBtnClick_TipBg"
|
||||
},
|
||||
txtUnlockTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_FateCard_Unlock_Tip"
|
||||
},
|
||||
txtUnlockTip = {sComponentName = "TMP_Text"},
|
||||
redDotReward = {}
|
||||
}
|
||||
StarTowerFateCardBookCtrl._mapEventConfig = {
|
||||
ReceiveFateCardBookReward = "OnEvent_ReceiveFateCardBookReward"
|
||||
}
|
||||
StarTowerFateCardBookCtrl._mapRedDotConfig = {}
|
||||
function StarTowerFateCardBookCtrl:ResetNewRedDot(nBundleId)
|
||||
if self.mapBundleList ~= nil then
|
||||
if nBundleId then
|
||||
local tbCardList = self.mapBundleList[nBundleId].tbCardList
|
||||
if tbCardList then
|
||||
for _, card in ipairs(tbCardList) do
|
||||
RedDotManager.SetValid(RedDotDefine.StarTowerBook_FateCard_New, card.nId, false)
|
||||
end
|
||||
end
|
||||
else
|
||||
for _, v in pairs(self.mapBundleList) do
|
||||
for _, card in ipairs(v.tbCardList) do
|
||||
RedDotManager.SetValid(RedDotDefine.StarTowerBook_FateCard_New, card.nId, false)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:Init()
|
||||
self.animRoot:Play("StarTowerBookFateCard_in", 0, 0)
|
||||
CS.WwiseAudioManager.Instance:PlaySound("ui_rogueBook_page_drag")
|
||||
self.nBundleId = 0
|
||||
self.nSelectIndex = 0
|
||||
self.nCurPage = 0
|
||||
self.nCurCardId = 0
|
||||
self:RefreshBundleList()
|
||||
self._mapNode.btnToggleStarTower:SetText(ConfigTable.GetUIText("LevelMenu_Startower"))
|
||||
self._mapNode.btnToggleSurvivor:SetText(ConfigTable.GetUIText("LevelMenu_Vampire"))
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:Back()
|
||||
if self.bFateCardList then
|
||||
self.bFateCardList = false
|
||||
self:ResetNewRedDot()
|
||||
self._mapNode.goBundle.gameObject:SetActive(true)
|
||||
self._mapNode.goCardList.gameObject:SetActive(false)
|
||||
self._mapNode.goCardDetail.gameObject:SetActive(false)
|
||||
self._mapNode.goCardTip.gameObject:SetActive(false)
|
||||
self._mapNode.goBlur.gameObject:SetActive(false)
|
||||
else
|
||||
EventManager.Hit("ChangeStarTowerBookPanel", AllEnum.StarTowerBookPanelType.Main)
|
||||
end
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:RefreshBundleList()
|
||||
self._mapNode.goBundle.gameObject:SetActive(true)
|
||||
self._mapNode.goCardList.gameObject:SetActive(false)
|
||||
self._mapNode.goCardDetail.gameObject:SetActive(false)
|
||||
self._mapNode.goCardTip.gameObject:SetActive(false)
|
||||
self._mapNode.goBlur.gameObject:SetActive(false)
|
||||
self.mapBundleList = PlayerData.StarTowerBook:GetAllFateCardBundle()
|
||||
self.mapSortBundleList = {}
|
||||
self.mapBundleTogList = {}
|
||||
for nId, v in pairs(self.mapBundleList) do
|
||||
table.sort(v.tbCardList, function(a, b)
|
||||
return a.nSort < b.nSort
|
||||
end)
|
||||
table.insert(self.mapSortBundleList, {
|
||||
nBundleId = nId,
|
||||
tbCardList = v.tbCardList,
|
||||
nSort = v.nSort
|
||||
})
|
||||
end
|
||||
table.sort(self.mapSortBundleList, function(a, b)
|
||||
return a.nSort < b.nSort
|
||||
end)
|
||||
self.mapBundleTogList = clone(self.mapSortBundleList)
|
||||
local nCount = #self.mapSortBundleList
|
||||
if nCount < 8 then
|
||||
for i = nCount + 1, 8 do
|
||||
table.insert(self.mapSortBundleList, {bEmpty = true})
|
||||
end
|
||||
end
|
||||
self._mapNode.bundleLSV:Init(#self.mapSortBundleList, self, self.OnBundleGridRefresh, self.OnBundleGridClick)
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:SelectBundle(bKeepPos, bSetScrollPos)
|
||||
self.animRoot:Play("StarTowerBookFateCard_in1", 0, 0)
|
||||
self.bFateCardList = true
|
||||
self._mapNode.goBundle.gameObject:SetActive(false)
|
||||
self._mapNode.goCardList.gameObject:SetActive(true)
|
||||
self._mapNode.goCardDetail.gameObject:SetActive(false)
|
||||
self._mapNode.goCardTip.gameObject:SetActive(false)
|
||||
self._mapNode.goBlur.gameObject:SetActive(false)
|
||||
self._mapNode.togLSV:Init(#self.mapBundleTogList, self, self.OnTogGridRefresh, self.OnTogGridClick, bKeepPos)
|
||||
if bSetScrollPos then
|
||||
self._mapNode.togLSV:SetScrollGridPos(self.nSelectIndex - 1, 0.1, 0)
|
||||
end
|
||||
self.mapCardList = self.mapBundleList[self.nBundleId].tbCardList
|
||||
self.nCurPage = 1
|
||||
self.nAllPage = math.floor(#self.mapCardList % 8 == 0 and #self.mapCardList / 8 or #self.mapCardList / 8 + 1)
|
||||
self:RefreshPageList()
|
||||
self:RefreshLeftPage()
|
||||
self:RefreshRightPage()
|
||||
for k, v in ipairs(self._mapNode.imgDotBg) do
|
||||
v.gameObject:SetActive(k <= self.nAllPage and 1 < self.nAllPage)
|
||||
end
|
||||
local nCount = 0
|
||||
for _, v in ipairs(self.mapCardList) do
|
||||
if v.nStatus == AllEnum.FateCardBookStatus.Collect then
|
||||
nCount = nCount + 1
|
||||
end
|
||||
end
|
||||
local bCanReceive = RedDotManager.GetValid(RedDotDefine.StarTowerBook_FateCard_Reward, self.nBundleId)
|
||||
self._mapNode.btnReward.gameObject:SetActive(not bCanReceive)
|
||||
self._mapNode.btnReceiveReward.gameObject:SetActive(bCanReceive)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtCollectCount, string.format("%s/%s", nCount, #self.mapCardList))
|
||||
RedDotManager.RegisterNode(RedDotDefine.StarTowerBook_FateCard_Reward, self.nBundleId, self._mapNode.redDotReward)
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:RefreshPageList()
|
||||
self._mapNode.btnLeft.gameObject:SetActive(self.nCurPage > 1)
|
||||
self._mapNode.btnRight.gameObject:SetActive(self.nCurPage < self.nAllPage)
|
||||
for k, v in ipairs(self._mapNode.imgDot) do
|
||||
v.gameObject:SetActive(k == self.nCurPage)
|
||||
end
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:RefreshLeftPage()
|
||||
local nStartIndex = (self.nCurPage - 1) * 8
|
||||
for i = 1, 4 do
|
||||
local item = self._mapNode.goCardItem[i]
|
||||
local nIndex = nStartIndex + i
|
||||
item.gameObject:SetActive(self.mapCardList[nIndex] ~= nil)
|
||||
if self.mapCardList[nIndex] ~= nil then
|
||||
item:InitItem(self.mapCardList[nIndex].nId, self.mapCardList[nIndex].nStatus)
|
||||
item:RegisterRedDot()
|
||||
end
|
||||
end
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:RefreshRightPage()
|
||||
local bEmpty = true
|
||||
local nStartIndex = (self.nCurPage - 1) * 8
|
||||
for i = 5, 8 do
|
||||
local item = self._mapNode.goCardItem[i]
|
||||
local nIndex = nStartIndex + i
|
||||
item.gameObject:SetActive(self.mapCardList[nIndex] ~= nil)
|
||||
if self.mapCardList[nIndex] ~= nil then
|
||||
bEmpty = false
|
||||
item:InitItem(self.mapCardList[nIndex].nId, self.mapCardList[nIndex].nStatus)
|
||||
item:RegisterRedDot()
|
||||
end
|
||||
end
|
||||
self._mapNode.imgEmpty.gameObject:SetActive(bEmpty)
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:OnTogGridRefresh(goGrid, nIndex)
|
||||
local imgBundle = goGrid.transform:Find("btnGrid/AnimRoot/imgBundle"):GetComponent("Image")
|
||||
local imgNormal = goGrid.transform:Find("btnGrid/AnimRoot/imgNormal")
|
||||
local txtNormal = goGrid.transform:Find("btnGrid/AnimRoot/imgNormal/txtNormal"):GetComponent("TMP_Text")
|
||||
local imgChoose = goGrid.transform:Find("btnGrid/AnimRoot/imgChoose")
|
||||
local txtChoose = goGrid.transform:Find("btnGrid/AnimRoot/imgChoose/txtChoose"):GetComponent("TMP_Text")
|
||||
local redDot = goGrid.transform:Find("btnGrid/AnimRoot/redDotTog")
|
||||
local nId = self.mapBundleTogList[nIndex + 1].nBundleId
|
||||
local bundleCfg = ConfigTable.GetData("StarTowerBookFateCardBundle", nId)
|
||||
if bundleCfg ~= nil then
|
||||
self:SetPngSprite(imgBundle, bundleCfg.Icon)
|
||||
NovaAPI.SetTMPText(txtNormal, bundleCfg.ShortName)
|
||||
NovaAPI.SetTMPText(txtChoose, bundleCfg.ShortName)
|
||||
end
|
||||
imgChoose.gameObject:SetActive(nId == self.nBundleId)
|
||||
imgNormal.gameObject:SetActive(nId ~= self.nBundleId)
|
||||
RedDotManager.RegisterNode(RedDotDefine.StarTowerBook_FateCard_Bundle_Tog, nId, redDot, nil, nil, true)
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:OnTogGridClick(goGrid, nIndex)
|
||||
if nIndex + 1 == self.nSelectIndex then
|
||||
return
|
||||
end
|
||||
local goSelect = self._mapNode.togLSV.gameObject.transform:Find("Viewport/Content/" .. self.nSelectIndex - 1)
|
||||
if goSelect then
|
||||
local imgChoose = goSelect.transform:Find("btnGrid/AnimRoot/imgChoose")
|
||||
imgChoose.gameObject:SetActive(false)
|
||||
end
|
||||
if self.nBundleId ~= 0 then
|
||||
self:ResetNewRedDot(self.nBundleId)
|
||||
end
|
||||
self.nSelectIndex = nIndex + 1
|
||||
self.nBundleId = self.mapBundleTogList[nIndex + 1].nBundleId
|
||||
local imgChoose = goGrid.transform:Find("btnGrid/AnimRoot/imgChoose")
|
||||
imgChoose.gameObject:SetActive(true)
|
||||
self:SelectBundle(true)
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:OnBundleGridRefresh(goGrid, nIndex)
|
||||
local goItem = goGrid.transform:Find("btnGrid/AnimRoot/goBundleItem")
|
||||
local imgNormal = goItem:Find("imgNormal")
|
||||
local imgBundle = imgNormal:Find("imgBundle"):GetComponent("Image")
|
||||
local imgBundleS = imgNormal:Find("txtBundle/imgBundleS"):GetComponent("Image")
|
||||
local txtBundle = imgNormal:Find("txtBundle"):GetComponent("TMP_Text")
|
||||
local txtCount = imgNormal:Find("imgCount/txtCount"):GetComponent("TMP_Text")
|
||||
local imgEmpty = goItem:Find("imgEmpty")
|
||||
local txtEmpty = imgEmpty:Find("txtEmpty"):GetComponent("TMP_Text")
|
||||
NovaAPI.SetTMPText(txtEmpty, ConfigTable.GetUIText("StarTower_Book_FateCard_Empty"))
|
||||
local mapData = self.mapSortBundleList[nIndex + 1]
|
||||
imgNormal.gameObject:SetActive(not mapData.bEmpty)
|
||||
imgEmpty.gameObject:SetActive(mapData.bEmpty)
|
||||
if not mapData.bEmpty then
|
||||
local nBundleId = self.mapSortBundleList[nIndex + 1].nBundleId
|
||||
local bundleCfg = ConfigTable.GetData("StarTowerBookFateCardBundle", nBundleId)
|
||||
if bundleCfg ~= nil then
|
||||
self:SetPngSprite(imgBundle, bundleCfg.Icon .. AllEnum.FateCardBundleIcon.L)
|
||||
self:SetPngSprite(imgBundleS, bundleCfg.Icon)
|
||||
NovaAPI.SetTMPText(txtBundle, bundleCfg.ShortName)
|
||||
end
|
||||
local mapCardList = self.mapBundleList[nBundleId].tbCardList
|
||||
local nCount = 0
|
||||
for _, v in ipairs(mapCardList) do
|
||||
if v.nStatus == AllEnum.FateCardBookStatus.Collect then
|
||||
nCount = nCount + 1
|
||||
end
|
||||
end
|
||||
NovaAPI.SetTMPText(txtCount, string.format("%s/%s", nCount, #mapCardList))
|
||||
local redDot = imgNormal:Find("redDotBundle")
|
||||
RedDotManager.RegisterNode(RedDotDefine.StarTowerBook_FateCard_Bundle, nBundleId, redDot, nil, nil, true)
|
||||
end
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:OnBundleGridClick(goGrid, nIndex)
|
||||
local mapBundle = self.mapSortBundleList[nIndex + 1]
|
||||
if mapBundle ~= nil and not mapBundle.bEmpty then
|
||||
self.nBundleId = mapBundle.nBundleId
|
||||
self.nSelectIndex = nIndex + 1
|
||||
self:SelectBundle(false, true)
|
||||
end
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:Awake()
|
||||
self.animRoot = self.gameObject:GetComponent("Animator")
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:FadeIn()
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:FadeOut()
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:OnEnable()
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:OnDisable()
|
||||
if self.bFateCardList then
|
||||
self:ResetNewRedDot()
|
||||
end
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:OnDestroy()
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:OnRelease()
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:OnBtnClick_Left()
|
||||
if self.nCurPage <= 1 then
|
||||
return
|
||||
end
|
||||
self.nCurPage = self.nCurPage - 1
|
||||
self._mapNode.animPage:Play("FlipBook_Right", 0, 0)
|
||||
self:AddTimer(1, 0.3, function()
|
||||
self:RefreshRightPage()
|
||||
end, true, true, true, nil)
|
||||
self:RefreshPageList()
|
||||
self:RefreshLeftPage()
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:OnBtnClick_Right()
|
||||
if self.nCurPage >= self.nAllPage then
|
||||
return
|
||||
end
|
||||
self.nCurPage = self.nCurPage + 1
|
||||
self._mapNode.animPage:Play("FlipBook_Left", 0, 0)
|
||||
self:AddTimer(1, 0.1, function()
|
||||
self:RefreshLeftPage()
|
||||
end, true, true, true, nil)
|
||||
self:RefreshPageList()
|
||||
self:RefreshRightPage()
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:OnBtnClick_Reward()
|
||||
EventManager.Hit("OpenStarTowerBookQuest", self.nBundleId)
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:OnBtnClick_Bg()
|
||||
self._mapNode.animCardDetail:Play("goCardDetail_out")
|
||||
local nAnimLen = NovaAPI.GetAnimClipLength(self._mapNode.animCardDetail, {
|
||||
"goCardDetail_out"
|
||||
})
|
||||
self:AddTimer(1, nAnimLen, function()
|
||||
self._mapNode.goCardDetail.gameObject:SetActive(false)
|
||||
self._mapNode.goBlur.gameObject:SetActive(false)
|
||||
if self._mapNode.goCardItem[self.nClickIndex] ~= nil then
|
||||
end
|
||||
end, true, true, true)
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, nAnimLen)
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:OnBtnClick_TipBg()
|
||||
self._mapNode.goCardTip.gameObject:SetActive(false)
|
||||
self._mapNode.goBlur.gameObject:SetActive(false)
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:OnBtnClick_CardItem(btn, nIdx)
|
||||
local nIndex = (self.nCurPage - 1) * 8 + nIdx
|
||||
local cardData = self.mapCardList[nIndex]
|
||||
if cardData == nil then
|
||||
return
|
||||
end
|
||||
self.nCurCardId = cardData.nId
|
||||
local cardCfg = ConfigTable.GetData("StarTowerBookFateCard", cardData.nId)
|
||||
if cardCfg == nil then
|
||||
return
|
||||
end
|
||||
if cardData.nStatus == AllEnum.FateCardBookStatus.Lock then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtUnlockTip, cardCfg.UnlockTip)
|
||||
self._mapNode.goCardTip.gameObject:SetActive(false)
|
||||
self._mapNode.goBlur.gameObject:SetActive(true)
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
self._mapNode.goCardTip.gameObject:SetActive(true)
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
else
|
||||
local animFinishFunc = function()
|
||||
RedDotManager.SetValid(RedDotDefine.StarTowerBook_FateCard_New, cardData.nId, false)
|
||||
if cardData.nStatus == AllEnum.FateCardBookStatus.Lock then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtUnlockTip, cardCfg.UnlockTip)
|
||||
self._mapNode.goCardTip.gameObject:SetActive(false)
|
||||
self._mapNode.goBlur.gameObject:SetActive(true)
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
self._mapNode.goCardTip.gameObject:SetActive(true)
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
else
|
||||
self._mapNode.goCardDetail.gameObject:SetActive(false)
|
||||
self._mapNode.goBlur.gameObject:SetActive(true)
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
self._mapNode.goCardDetail.gameObject:SetActive(true)
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.5)
|
||||
self:OnBtnClick_CardTypeSurvivor()
|
||||
NovaAPI.SetTMPText(self._mapNode.txtArea, ConfigTable.GetUIText("StarTower_Event_Book_Source") .. cardCfg.Source)
|
||||
end
|
||||
end
|
||||
self.nClickIndex = nIdx
|
||||
if self._mapNode.goCardItem[nIdx] ~= nil then
|
||||
self:AddTimer(1, 0.15, animFinishFunc, true, true, true)
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.15)
|
||||
end
|
||||
end
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:OnBtnClick_CardTypeStarTower()
|
||||
self._mapNode.fateCardDetail = self:BindCtrlByNode(self._mapNode.goFateCardDetail, "Game.UI.StarTower.FateCard.FateCardItemCtrl")
|
||||
if self.nCurCardId and self.nCurCardId ~= 0 then
|
||||
self._mapNode.fateCardDetail:SetFateCardItem(self.nCurCardId)
|
||||
end
|
||||
self._mapNode.btnToggleStarTower:SetDefault(true)
|
||||
self._mapNode.btnToggleSurvivor:SetDefault(false)
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:OnBtnClick_CardTypeSurvivor()
|
||||
self._mapNode.fateCardDetail = self:BindCtrlByNode(self._mapNode.goFateCardDetail, "Game.UI.VampireSurvivor.FateCardItemCtrl")
|
||||
if self.nCurCardId and self.nCurCardId ~= 0 then
|
||||
self._mapNode.fateCardDetail:SetFateCardItem(self.nCurCardId)
|
||||
end
|
||||
self._mapNode.btnToggleStarTower:SetDefault(false)
|
||||
self._mapNode.btnToggleSurvivor:SetDefault(true)
|
||||
end
|
||||
function StarTowerFateCardBookCtrl:OnEvent_ReceiveFateCardBookReward()
|
||||
local bCanReceive = RedDotManager.GetValid(RedDotDefine.StarTowerBook_FateCard_Reward, self.nBundleId)
|
||||
self._mapNode.btnReward.gameObject:SetActive(not bCanReceive)
|
||||
self._mapNode.btnReceiveReward.gameObject:SetActive(bCanReceive)
|
||||
end
|
||||
return StarTowerFateCardBookCtrl
|
||||
@@ -0,0 +1,59 @@
|
||||
local PotentialBookCharItemCtrl = class("PotentialBookCharItemCtrl", BaseCtrl)
|
||||
PotentialBookCharItemCtrl._mapNodeConfig = {
|
||||
imgNormal = {},
|
||||
imgChar = {sComponentName = "Image"},
|
||||
imgLockMask = {sComponentName = "Image"},
|
||||
goUnlock = {},
|
||||
txtName = {sComponentName = "TMP_Text"},
|
||||
txtCollect = {sComponentName = "TMP_Text"},
|
||||
txtLock = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Char_Lock"
|
||||
},
|
||||
imgEmpty = {},
|
||||
txtEmpty = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_FateCard_Empty"
|
||||
},
|
||||
redDotChar = {}
|
||||
}
|
||||
PotentialBookCharItemCtrl._mapEventConfig = {}
|
||||
PotentialBookCharItemCtrl._mapRedDotConfig = {}
|
||||
function PotentialBookCharItemCtrl:InitItem(nCharId)
|
||||
self.nCharId = nCharId
|
||||
self.nElement = 0
|
||||
local bUnlock = PlayerData.Char:CheckCharUnlock(nCharId)
|
||||
self._mapNode.imgEmpty.gameObject:SetActive(nCharId == 0)
|
||||
self._mapNode.imgNormal.gameObject:SetActive(nCharId ~= 0)
|
||||
self._mapNode.imgNormal.gameObject:SetActive(nCharId ~= 0)
|
||||
self._mapNode.imgLockMask.gameObject:SetActive(nCharId ~= 0 and not bUnlock)
|
||||
self._mapNode.goUnlock.gameObject:SetActive(nCharId ~= 0 and bUnlock)
|
||||
self._mapNode.imgLockMask.gameObject:SetActive(not bUnlock)
|
||||
self._mapNode.imgChar.gameObject:SetActive(bUnlock)
|
||||
if nCharId ~= 0 then
|
||||
local mapCharCfg = ConfigTable.GetData_Character(nCharId)
|
||||
if mapCharCfg ~= nil then
|
||||
self.nElement = mapCharCfg.EET
|
||||
NovaAPI.SetTMPText(self._mapNode.txtName, mapCharCfg.Name)
|
||||
local nSkinId = mapCharCfg.DefaultSkinId
|
||||
local mapSkin = ConfigTable.GetData_CharacterSkin(nSkinId)
|
||||
self:SetPngSprite(self._mapNode.imgChar, mapSkin.Icon .. AllEnum.CharHeadIconSurfix.GC)
|
||||
self:SetPngSprite(self._mapNode.imgLockMask, mapSkin.Icon .. AllEnum.CharHeadIconSurfix.GC)
|
||||
self:RefreshCount()
|
||||
end
|
||||
end
|
||||
RedDotManager.RegisterNode(RedDotDefine.StarTowerBook_Potential_Char, {
|
||||
self.nElement,
|
||||
self.nCharId
|
||||
}, self._mapNode.redDotChar, nil, nil, true)
|
||||
end
|
||||
function PotentialBookCharItemCtrl:RefreshCount()
|
||||
local nCount, nAllCount = PlayerData.StarTowerBook:GetCharPotentialCount(self.nCharId)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtCollect, string.format("%s/%s", nCount, nAllCount))
|
||||
end
|
||||
function PotentialBookCharItemCtrl:Awake()
|
||||
self.tbRedDotRegister = {}
|
||||
end
|
||||
function PotentialBookCharItemCtrl:OnDisable()
|
||||
end
|
||||
return PotentialBookCharItemCtrl
|
||||
@@ -0,0 +1,79 @@
|
||||
local PotentialBookItemCtrl = class("PotentialBookItemCtrl", BaseCtrl)
|
||||
PotentialBookItemCtrl._mapNodeConfig = {
|
||||
goNormal = {},
|
||||
imgRare = {sComponentName = "Image"},
|
||||
goIcon = {
|
||||
sCtrlName = "Game.UI.StarTower.Potential.PotentialIconCtrl"
|
||||
},
|
||||
txtName = {sComponentName = "TMP_Text"},
|
||||
goSpecial = {},
|
||||
imgSpIcon = {sComponentName = "Image"},
|
||||
txtSpName = {sComponentName = "TMP_Text"},
|
||||
imgMask = {},
|
||||
imgUnCollect = {},
|
||||
txtUnCollect = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_UnCollect"
|
||||
},
|
||||
imgCollect = {},
|
||||
txtCollect = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Collect"
|
||||
},
|
||||
imgCollectLevel = {},
|
||||
txtLevelCn = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Collect_Level"
|
||||
},
|
||||
txtLevel = {sComponentName = "TMP_Text"},
|
||||
redDotCard = {},
|
||||
animCard = {sNodeName = "CardRoot", sComponentName = "Animator"}
|
||||
}
|
||||
PotentialBookItemCtrl._mapEventConfig = {}
|
||||
PotentialBookItemCtrl._mapRedDotConfig = {}
|
||||
function PotentialBookItemCtrl:InitItem(nPotentialId, nLevel)
|
||||
self.nId = nPotentialId
|
||||
local itemCfg = ConfigTable.GetData_Item(nPotentialId)
|
||||
local potentialCfg = ConfigTable.GetData("Potential", nPotentialId)
|
||||
if potentialCfg == nil or itemCfg == nil then
|
||||
return
|
||||
end
|
||||
local bSpecial = itemCfg.Stype == GameEnum.itemStype.SpecificPotential
|
||||
self._mapNode.goNormal.gameObject:SetActive(not bSpecial)
|
||||
self._mapNode.goSpecial.gameObject:SetActive(bSpecial)
|
||||
if not bSpecial then
|
||||
self:SetNormalPotential(itemCfg, potentialCfg)
|
||||
else
|
||||
self:SetSpecialPotential(itemCfg, potentialCfg)
|
||||
end
|
||||
self._mapNode.imgUnCollect.gameObject:SetActive(nLevel == 0)
|
||||
self._mapNode.imgCollect.gameObject:SetActive(0 < nLevel and bSpecial)
|
||||
self._mapNode.imgCollectLevel.gameObject:SetActive(0 < nLevel and not bSpecial)
|
||||
self._mapNode.imgMask.gameObject:SetActive(nLevel == 0)
|
||||
if 0 < nLevel and not bSpecial then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtLevel, nLevel)
|
||||
end
|
||||
end
|
||||
function PotentialBookItemCtrl:SetNormalPotential(itemCfg, potentialCfg)
|
||||
local sFrame = AllEnum.FrameType_New.PotentialS .. (AllEnum.FrameColor_New[itemCfg.Rarity] + 4 | 0)
|
||||
self:SetAtlasSprite(self._mapNode.imgRare, "12_rare", sFrame)
|
||||
self._mapNode.goIcon:SetIcon(potentialCfg.Id)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtName, itemCfg.Title)
|
||||
end
|
||||
function PotentialBookItemCtrl:SetSpecialPotential(itemCfg, potentialCfg)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtSpName, itemCfg.Title)
|
||||
self:SetPngSprite(self._mapNode.imgSpIcon, itemCfg.Icon .. AllEnum.PotentialIconSurfix.A)
|
||||
end
|
||||
function PotentialBookItemCtrl:RegisterRedDot()
|
||||
if self.nId ~= nil then
|
||||
RedDotManager.RegisterNode(RedDotDefine.StarTowerBook_Potential_New, self.nId, self._mapNode.redDotCard)
|
||||
end
|
||||
end
|
||||
function PotentialBookItemCtrl:PlayClickAnim(bClick)
|
||||
if bClick then
|
||||
self._mapNode.animCard:Play("CardBookItem_in")
|
||||
else
|
||||
self._mapNode.animCard:Play("CardBookItem_out")
|
||||
end
|
||||
end
|
||||
return PotentialBookItemCtrl
|
||||
@@ -0,0 +1,533 @@
|
||||
local StarTowerPotentialBookCtrl = class("StarTowerPotentialBookCtrl", BaseCtrl)
|
||||
StarTowerPotentialBookCtrl._mapNodeConfig = {
|
||||
goCharList = {},
|
||||
txtTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Potential_Title_01"
|
||||
},
|
||||
charLSV = {
|
||||
sComponentName = "LoopScrollView"
|
||||
},
|
||||
tab = {
|
||||
nCount = 7,
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateTabCtrl"
|
||||
},
|
||||
btnTab = {
|
||||
nCount = 7,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Tab"
|
||||
},
|
||||
goPotentialList = {},
|
||||
txtCollectCn = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Collect"
|
||||
},
|
||||
txtCollectCount = {sComponentName = "TMP_Text"},
|
||||
btnReward = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Reward"
|
||||
},
|
||||
btnReceiveReward = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Reward"
|
||||
},
|
||||
txtCharName = {sComponentName = "TMP_Text"},
|
||||
imgChar = {sComponentName = "Image"},
|
||||
goAssist = {},
|
||||
goMain = {},
|
||||
goMainSelect = {},
|
||||
goAssistSelect = {},
|
||||
txtAssist = {
|
||||
nCount = 2,
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Char_Assist"
|
||||
},
|
||||
txtMain = {
|
||||
nCount = 2,
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Char_Main"
|
||||
},
|
||||
btnSwitch = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Switch"
|
||||
},
|
||||
txtBtnSwitch = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Potential_Switch"
|
||||
},
|
||||
animPage = {sNodeName = "imgBook", sComponentName = "Animator"},
|
||||
imgNormalTitle = {nCount = 2},
|
||||
imgSpecialTitle = {},
|
||||
txtNormalTitle = {
|
||||
nCount = 2,
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Potential_Normal"
|
||||
},
|
||||
txtSpecialTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Potential_Special"
|
||||
},
|
||||
imgEmpty = {},
|
||||
btnLeft = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Left"
|
||||
},
|
||||
btnRight = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Right"
|
||||
},
|
||||
goPotentialBookItem = {
|
||||
nCount = 8,
|
||||
sNodeName = "PotentialBookItem",
|
||||
sCtrlName = "Game.UI.StarTowerBook.Potential.PotentialBookItemCtrl"
|
||||
},
|
||||
btnItem = {
|
||||
nCount = 8,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Item"
|
||||
},
|
||||
imgDotBg = {nCount = 8},
|
||||
imgDot = {nCount = 8},
|
||||
goLeftPotentialList = {},
|
||||
goRightPotentialList = {},
|
||||
goPotentialDetail = {},
|
||||
animDetail = {sNodeName = "goDetail", sComponentName = "Animator"},
|
||||
goBlur = {},
|
||||
goDetail = {},
|
||||
btnBg = {
|
||||
sComponentName = "Button",
|
||||
callback = "OnBtnClick_Bg"
|
||||
},
|
||||
potentialDetail = {
|
||||
sCtrlName = "Game.UI.StarTower.Potential.PotentialCardItemCtrl"
|
||||
},
|
||||
txtTips = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Close_Tip"
|
||||
},
|
||||
btnChangeDesc = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_ChangeDesc"
|
||||
},
|
||||
txtDescChange = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Potential_Change_Desc"
|
||||
},
|
||||
imgSwitchOn = {},
|
||||
imgSwitchOff = {},
|
||||
redDotReward = {}
|
||||
}
|
||||
StarTowerPotentialBookCtrl._mapEventConfig = {
|
||||
PotentialBookDataChange = "OnEvent_PotentialBookDataChange",
|
||||
ReceivePotentialBookReward = "OnEvent_ReceivePotentialBookReward"
|
||||
}
|
||||
StarTowerPotentialBookCtrl._mapRedDotConfig = {}
|
||||
local char_sv_min_item_count = 8
|
||||
local elementSort = {
|
||||
[1] = GameEnum.elementType.SE,
|
||||
[2] = GameEnum.elementType.FE,
|
||||
[3] = GameEnum.elementType.AE,
|
||||
[4] = GameEnum.elementType.WE,
|
||||
[5] = GameEnum.elementType.LE,
|
||||
[6] = GameEnum.elementType.DE
|
||||
}
|
||||
function StarTowerPotentialBookCtrl:ResetNewRedDot()
|
||||
if self.mapCurPotentialList ~= nil then
|
||||
for _, v in ipairs(self.mapCurPotentialList) do
|
||||
RedDotManager.SetValid(RedDotDefine.StarTowerBook_Potential_New, v.nId, false)
|
||||
end
|
||||
end
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:Init()
|
||||
self.animRoot:Play("StarTowerBookPotential_in", 0, 0)
|
||||
CS.WwiseAudioManager.Instance:PlaySound("ui_rogueBook_page_drag")
|
||||
self.bPotentialList = false
|
||||
self._mapNode.goCharList.gameObject:SetActive(true)
|
||||
self._mapNode.goPotentialList.gameObject:SetActive(false)
|
||||
self._mapNode.goPotentialDetail.gameObject:SetActive(false)
|
||||
self._mapNode.goBlur.gameObject:SetActive(false)
|
||||
self.mapPotentialBrief = PlayerData.StarTowerBook:GetCharPotentialBriefBook()
|
||||
self:RefreshTab()
|
||||
for k, v in ipairs(self._mapNode.tab) do
|
||||
local imgLock = v.gameObject.transform:Find(string.format("btnTab%s/AnimRoot/imgLock", k))
|
||||
if self.tbTabs[k] ~= nil and self.tbTabs[k].Type ~= 0 then
|
||||
local nType = self.tbTabs[k].Type
|
||||
local nCount = 0
|
||||
for _, data in ipairs(self.mapPotentialBrief) do
|
||||
local mapCharCfg = ConfigTable.GetData_Character(data.nCharId)
|
||||
if mapCharCfg ~= nil and mapCharCfg.EET == nType then
|
||||
nCount = nCount + 1
|
||||
break
|
||||
end
|
||||
end
|
||||
self.tbTabs[k].Lock = nCount == 0
|
||||
imgLock.gameObject:SetActive(nCount == 0)
|
||||
else
|
||||
imgLock.gameObject:SetActive(false)
|
||||
end
|
||||
end
|
||||
self:RefreshCharList()
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:Back()
|
||||
if self.bPotentialList then
|
||||
self:ResetNewRedDot()
|
||||
self._mapNode.goCharList.gameObject:SetActive(true)
|
||||
self._mapNode.goPotentialList.gameObject:SetActive(false)
|
||||
self._mapNode.goPotentialDetail.gameObject:SetActive(false)
|
||||
self._mapNode.goBlur.gameObject:SetActive(false)
|
||||
self.bPotentialList = false
|
||||
else
|
||||
EventManager.Hit("ChangeStarTowerBookPanel", AllEnum.StarTowerBookPanelType.Main)
|
||||
end
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:InitTab()
|
||||
self.tbTabs = {}
|
||||
table.insert(self.tbTabs, {
|
||||
Sort = 0,
|
||||
Name = "StarTower_Book_Char_Tab_All",
|
||||
Type = 0,
|
||||
Lock = false
|
||||
})
|
||||
for k, v in ipairs(elementSort) do
|
||||
table.insert(self.tbTabs, {
|
||||
Sort = k,
|
||||
Name = "T_Element_Attr_" .. v,
|
||||
Type = v,
|
||||
Lock = false
|
||||
})
|
||||
end
|
||||
table.sort(self.tbTabs, function(a, b)
|
||||
return a.Sort < b.Sort
|
||||
end)
|
||||
for k, v in ipairs(self._mapNode.tab) do
|
||||
if self.tbTabs[k] ~= nil then
|
||||
v:SetText(ConfigTable.GetUIText(self.tbTabs[k].Name))
|
||||
if self.tbTabs[k].Type ~= 0 then
|
||||
local imgTab = v.gameObject.transform:Find(string.format("btnTab%s/AnimRoot/imgTab", k)):GetComponent("Image")
|
||||
local sName = AllEnum.ElementIconType.Icon .. self.tbTabs[k].Type
|
||||
self:SetAtlasSprite(imgTab, "12_rare", sName)
|
||||
end
|
||||
local redDot = v.gameObject.transform:Find(string.format("btnTab%s/AnimRoot/redDotTab", k))
|
||||
RedDotManager.RegisterNode(RedDotDefine.StarTowerBook_Potential_Element, self.tbTabs[k].Type, redDot.gameObject)
|
||||
end
|
||||
end
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:RefreshCharList()
|
||||
self.mapCurChar = {}
|
||||
if self.nCurTab == 1 then
|
||||
self.mapCurChar = clone(self.mapPotentialBrief)
|
||||
else
|
||||
for _, v in ipairs(self.mapPotentialBrief) do
|
||||
local mapCharCfg = ConfigTable.GetData_Character(v.nCharId)
|
||||
if mapCharCfg ~= nil and mapCharCfg.EET == self.tbTabs[self.nCurTab].Type then
|
||||
table.insert(self.mapCurChar, v)
|
||||
end
|
||||
end
|
||||
end
|
||||
if #self.mapCurChar < char_sv_min_item_count then
|
||||
for i = #self.mapCurChar + 1, char_sv_min_item_count do
|
||||
table.insert(self.mapCurChar, {nCharId = 0})
|
||||
end
|
||||
end
|
||||
for nInstanceId, objCtrl in pairs(self.mapCharGrids) do
|
||||
self:UnbindCtrlByNode(objCtrl)
|
||||
self.mapCharGrids[nInstanceId] = nil
|
||||
end
|
||||
self._mapNode.charLSV:Init(#self.mapCurChar, self, self.OnCharRefreshGrid, self.OnCharGridBtnClick, false, self.GetGridPageCount)
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:OnCharRefreshGrid(goGrid, gridIndex)
|
||||
local nInstanceID = goGrid:GetInstanceID()
|
||||
if self.mapCharGrids[nInstanceID] == nil then
|
||||
self.mapCharGrids[nInstanceID] = self:BindCtrlByNode(goGrid, "Game.UI.StarTowerBook.Potential.PotentialBookCharItemCtrl")
|
||||
end
|
||||
local nIdx = gridIndex + 1
|
||||
local mapCharData = self.mapCurChar[nIdx]
|
||||
self.mapCharGrids[nInstanceID]:InitItem(mapCharData.nCharId, mapCharData.nCount, mapCharData.nAllCount)
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:OnCharGridBtnClick(goGrid, gridIndex)
|
||||
local nIndex = gridIndex + 1
|
||||
local mapCharData = self.mapCurChar[nIndex]
|
||||
if mapCharData.nCharId ~= 0 then
|
||||
if mapCharData.nUnlock == 0 then
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("StarTower_Book_Char_Lock_Tip"))
|
||||
return
|
||||
else
|
||||
self.nCharId = mapCharData.nCharId
|
||||
local callback = function()
|
||||
self:InitPotentialList()
|
||||
end
|
||||
PlayerData.StarTowerBook:TryGetCharPotentialBook(mapCharData.nCharId, callback)
|
||||
end
|
||||
else
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("StarTower_Book_Char_Empty"))
|
||||
end
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:RefreshTab()
|
||||
for k, v in ipairs(self._mapNode.tab) do
|
||||
local nState = self:GetTabState(k)
|
||||
v:SetSelect(k == self.nCurTab, nState)
|
||||
if k == self.nCurTab and 1 < k then
|
||||
self._mapNode.tab[k - 1]:SetLine(false)
|
||||
end
|
||||
end
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:GetTabState(nCurTab)
|
||||
local nState = 2
|
||||
if nCurTab == 1 then
|
||||
nState = 1
|
||||
elseif nCurTab == #self.tbTabs then
|
||||
nState = 3
|
||||
end
|
||||
return nState
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:InitPotentialList()
|
||||
self.animRoot:Play("StarTowerBookPotential_in1", 0, 0)
|
||||
CS.WwiseAudioManager.Instance:PlaySound("ui_rogueBook_char_menu")
|
||||
self.bPotentialList = true
|
||||
self._mapNode.goCharList.gameObject:SetActive(false)
|
||||
self._mapNode.goPotentialList.gameObject:SetActive(true)
|
||||
self._mapNode.goPotentialDetail.gameObject:SetActive(false)
|
||||
self._mapNode.goBlur.gameObject:SetActive(false)
|
||||
local mapCharCfg = ConfigTable.GetData_Character(self.nCharId)
|
||||
if mapCharCfg ~= nil then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtCharName, mapCharCfg.Name)
|
||||
local nSkinId = mapCharCfg.DefaultSkinId
|
||||
local mapSkin = ConfigTable.GetData_CharacterSkin(nSkinId)
|
||||
if mapSkin ~= nil then
|
||||
self:SetPngSprite(self._mapNode.imgChar, mapSkin.Icon .. AllEnum.CharHeadIconSurfix.XL)
|
||||
end
|
||||
end
|
||||
self.mapPotentialList = PlayerData.StarTowerBook:GetAllCharPotential(self.nCharId)
|
||||
local nCount, nAllCount = PlayerData.StarTowerBook:GetCharPotentialCount(self.nCharId)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtCollectCount, string.format("%s/%s", nCount, nAllCount))
|
||||
self.bMasterPotential = true
|
||||
self.nCurPage = 0
|
||||
self:SwitchPotentialType()
|
||||
local bCanReceive = RedDotManager.GetValid(RedDotDefine.StarTowerBook_Potential_Reward, {
|
||||
mapCharCfg.EET,
|
||||
self.nCharId
|
||||
})
|
||||
self._mapNode.btnReward.gameObject:SetActive(not bCanReceive)
|
||||
self._mapNode.btnReceiveReward.gameObject:SetActive(bCanReceive)
|
||||
local mapCharCfg = ConfigTable.GetData_Character(self.nCharId)
|
||||
if mapCharCfg ~= nil then
|
||||
RedDotManager.RegisterNode(RedDotDefine.StarTowerBook_Potential_Reward, {
|
||||
mapCharCfg.EET,
|
||||
self.nCharId
|
||||
}, self._mapNode.redDotReward)
|
||||
end
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:SwitchPotentialType()
|
||||
self._mapNode.goAssist.gameObject:SetActive(self.bMasterPotential)
|
||||
self._mapNode.goAssistSelect.gameObject:SetActive(not self.bMasterPotential)
|
||||
self._mapNode.goMain.gameObject:SetActive(not self.bMasterPotential)
|
||||
self._mapNode.goMainSelect.gameObject:SetActive(self.bMasterPotential)
|
||||
self.mapCurPotentialList = {}
|
||||
if self.bMasterPotential then
|
||||
for _, v in ipairs(self.mapPotentialList.MasterSpecificIds) do
|
||||
table.insert(self.mapCurPotentialList, v)
|
||||
end
|
||||
for _, v in ipairs(self.mapPotentialList.MasterNormalIds) do
|
||||
table.insert(self.mapCurPotentialList, v)
|
||||
end
|
||||
else
|
||||
for _, v in ipairs(self.mapPotentialList.AssistSpecificIds) do
|
||||
table.insert(self.mapCurPotentialList, v)
|
||||
end
|
||||
for _, v in ipairs(self.mapPotentialList.AssistNormalIds) do
|
||||
table.insert(self.mapCurPotentialList, v)
|
||||
end
|
||||
end
|
||||
self.nAllPage = math.floor(#self.mapCurPotentialList % 8 == 0 and #self.mapCurPotentialList / 8 or #self.mapCurPotentialList / 8 + 1)
|
||||
for k, v in ipairs(self._mapNode.imgDotBg) do
|
||||
v.gameObject:SetActive(k <= self.nAllPage and self.nAllPage > 1)
|
||||
end
|
||||
if self.nCurPage == 0 then
|
||||
self.nCurPage = 1
|
||||
end
|
||||
self:RefreshPageList()
|
||||
self:RefreshLeftPage()
|
||||
self:RefreshRightPage()
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:RefreshPageList()
|
||||
self._mapNode.btnLeft.gameObject:SetActive(self.nCurPage > 1)
|
||||
self._mapNode.btnRight.gameObject:SetActive(self.nCurPage < self.nAllPage)
|
||||
self._mapNode.imgNormalTitle[1].gameObject:SetActive(self.nCurPage > 1)
|
||||
self._mapNode.imgSpecialTitle.gameObject:SetActive(self.nCurPage == 1)
|
||||
for k, v in ipairs(self._mapNode.imgDot) do
|
||||
v.gameObject:SetActive(k == self.nCurPage)
|
||||
end
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:RefreshLeftPage()
|
||||
local nStartIndex = (self.nCurPage - 1) * 8
|
||||
for i = 1, 4 do
|
||||
local nIndex = nStartIndex + i
|
||||
local item = self._mapNode.goPotentialBookItem[i]
|
||||
item.gameObject:SetActive(self.mapCurPotentialList[nIndex] ~= nil)
|
||||
if self.mapCurPotentialList[nIndex] ~= nil then
|
||||
item:InitItem(self.mapCurPotentialList[nIndex].nId, self.mapCurPotentialList[nIndex].nLevel)
|
||||
item:RegisterRedDot()
|
||||
end
|
||||
end
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:RefreshRightPage()
|
||||
local bEmpty = true
|
||||
local nStartIndex = (self.nCurPage - 1) * 8
|
||||
for i = 5, 8 do
|
||||
local nIndex = nStartIndex + i
|
||||
local item = self._mapNode.goPotentialBookItem[i]
|
||||
item.gameObject:SetActive(self.mapCurPotentialList[nIndex] ~= nil)
|
||||
if self.mapCurPotentialList[nIndex] ~= nil then
|
||||
bEmpty = false
|
||||
item:InitItem(self.mapCurPotentialList[nIndex].nId, self.mapCurPotentialList[nIndex].nLevel)
|
||||
item:RegisterRedDot()
|
||||
end
|
||||
end
|
||||
self._mapNode.imgEmpty.gameObject:SetActive(bEmpty)
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:SetSimpleState()
|
||||
self._mapNode.imgSwitchOff.gameObject:SetActive(not self.bSimple)
|
||||
self._mapNode.imgSwitchOn.gameObject:SetActive(self.bSimple)
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:Awake()
|
||||
self.animRoot = self.gameObject:GetComponent("Animator")
|
||||
self.nCharId = 0
|
||||
self.mapCharGrids = {}
|
||||
self.nCurTab = 1
|
||||
self.bMasterPotential = true
|
||||
self.nCurPage = 0
|
||||
self:InitTab()
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:OnEnable()
|
||||
self.bSimple = PlayerData.StarTower:GetPotentialDescSimple()
|
||||
self:SetSimpleState()
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:OnDisable()
|
||||
if self.bPotentialList then
|
||||
self:ResetNewRedDot()
|
||||
end
|
||||
for nInstanceId, objCtrl in pairs(self.mapCharGrids) do
|
||||
self:UnbindCtrlByNode(objCtrl)
|
||||
self.mapCharGrids[nInstanceId] = nil
|
||||
end
|
||||
self.mapCharGrids = {}
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:OnDestroy()
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:OnBtnClick_Reward()
|
||||
EventManager.Hit("OpenStarTowerBookQuest", self.nCharId)
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:OnBtnClick_Switch()
|
||||
self.bMasterPotential = not self.bMasterPotential
|
||||
if self.bMasterPotential then
|
||||
self._mapNode.animPage:Play("FlipBook_Right1", 0, 0)
|
||||
else
|
||||
self._mapNode.animPage:Play("FlipBook_Left1", 0, 0)
|
||||
end
|
||||
self._mapNode.goLeftPotentialList.gameObject:SetActive(false)
|
||||
self._mapNode.goRightPotentialList.gameObject:SetActive(false)
|
||||
self:AddTimer(1, 0.5, function()
|
||||
self._mapNode.goLeftPotentialList.gameObject:SetActive(true)
|
||||
self._mapNode.goRightPotentialList.gameObject:SetActive(true)
|
||||
end, true, true, true, nil)
|
||||
self.nCurPage = 0
|
||||
self:SwitchPotentialType()
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:OnBtnClick_Left()
|
||||
if self.nCurPage <= 1 then
|
||||
return
|
||||
end
|
||||
self.nCurPage = self.nCurPage - 1
|
||||
self._mapNode.animPage:Play("FlipBook_Right", 0, 0)
|
||||
self:AddTimer(1, 0.3, function()
|
||||
self:RefreshRightPage()
|
||||
end, true, true, true, nil)
|
||||
self:RefreshPageList()
|
||||
self:RefreshLeftPage()
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:OnBtnClick_Right()
|
||||
if self.nCurPage >= self.nAllPage then
|
||||
return
|
||||
end
|
||||
self.nCurPage = self.nCurPage + 1
|
||||
self._mapNode.animPage:Play("FlipBook_Left", 0, 0)
|
||||
self:AddTimer(1, 0.3, function()
|
||||
self:RefreshLeftPage()
|
||||
end, true, true, true, nil)
|
||||
self:RefreshPageList()
|
||||
self:RefreshRightPage()
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:OnBtnClick_Bg()
|
||||
self._mapNode.animDetail:Play("goCardDetail_out")
|
||||
local nAnimLen = NovaAPI.GetAnimClipLength(self._mapNode.animDetail, {
|
||||
"goCardDetail_out"
|
||||
})
|
||||
self:AddTimer(1, nAnimLen, function()
|
||||
self._mapNode.goPotentialDetail.gameObject:SetActive(false)
|
||||
self._mapNode.goBlur.gameObject:SetActive(false)
|
||||
if self._mapNode.goPotentialBookItem[self.nClickIndex] ~= nil then
|
||||
end
|
||||
end, true, true, true)
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, nAnimLen)
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:OnBtnClick_Tab(btn, nIndex)
|
||||
if nil ~= self.tbTabs[nIndex] and self.tbTabs[nIndex].Lock then
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("StarTower_Book_Char_Element_Lock"))
|
||||
return
|
||||
end
|
||||
self.nCurTab = nIndex
|
||||
self:RefreshTab()
|
||||
self:RefreshCharList()
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:OnBtnClick_Item(btn, nIdx)
|
||||
local animFinishFunc = function()
|
||||
local nIndex = (self.nCurPage - 1) * 8 + nIdx
|
||||
if self.mapCurPotentialList[nIndex] ~= nil then
|
||||
RedDotManager.SetValid(RedDotDefine.StarTowerBook_Potential_New, self.mapCurPotentialList[nIndex].nId, false)
|
||||
self._mapNode.goDetail.gameObject:SetActive(false)
|
||||
self._mapNode.goPotentialDetail.gameObject:SetActive(true)
|
||||
self._mapNode.goBlur.gameObject:SetActive(true)
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
self._mapNode.goDetail.gameObject:SetActive(true)
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.5)
|
||||
local nLevel = self.mapCurPotentialList[nIndex].nLevel == 0 and 1 or self.mapCurPotentialList[nIndex].nLevel
|
||||
self._mapNode.potentialDetail:SetPotentialItem(self.mapCurPotentialList[nIndex].nId, nLevel, nil, self.bSimple, nil, nil, AllEnum.PotentialCardType.Book)
|
||||
self._mapNode.potentialDetail:ChangeWordRaycast(true)
|
||||
end
|
||||
end
|
||||
self.nClickIndex = nIdx
|
||||
if self._mapNode.goPotentialBookItem[nIdx] ~= nil then
|
||||
self:AddTimer(1, 0.15, animFinishFunc, true, true, true)
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.15)
|
||||
end
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:OnBtnClick_ChangeDesc()
|
||||
self.bSimple = not self.bSimple
|
||||
PlayerData.StarTower:SetPotentialDescSimple(self.bSimple)
|
||||
self:SetSimpleState()
|
||||
self._mapNode.potentialDetail:ChangeDesc(self.bSimple)
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:OnEvent_PotentialBookDataChange()
|
||||
for _, v in pairs(self.mapCharGrids) do
|
||||
v:RefreshCount()
|
||||
end
|
||||
if self.bPotentialList then
|
||||
local nCount, nAllCount = PlayerData.StarTowerBook:GetCharPotentialCount(self.nCharId)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtCollectCount, string.format("%s/%s", nCount, nAllCount))
|
||||
end
|
||||
end
|
||||
function StarTowerPotentialBookCtrl:OnEvent_ReceivePotentialBookReward()
|
||||
local mapCharCfg = ConfigTable.GetData_Character(self.nCharId)
|
||||
if mapCharCfg ~= nil then
|
||||
local bCanReceive = RedDotManager.GetValid(RedDotDefine.StarTowerBook_Potential_Reward, {
|
||||
mapCharCfg.EET,
|
||||
self.nCharId
|
||||
})
|
||||
self._mapNode.btnReward.gameObject:SetActive(not bCanReceive)
|
||||
self._mapNode.btnReceiveReward.gameObject:SetActive(bCanReceive)
|
||||
end
|
||||
end
|
||||
return StarTowerPotentialBookCtrl
|
||||
@@ -0,0 +1,68 @@
|
||||
local BookQuestItemCtrl = class("BookQuestItemCtrl", BaseCtrl)
|
||||
BookQuestItemCtrl._mapNodeConfig = {
|
||||
imgPoint = {},
|
||||
btnItem = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Item"
|
||||
},
|
||||
goRewardItem = {
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl"
|
||||
},
|
||||
txtQuestDesc = {nCount = 3, sComponentName = "TMP_Text"},
|
||||
imgBarBg = {
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
imgBar = {
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
txtProgress = {sComponentName = "TMP_Text"},
|
||||
goUnComplete = {},
|
||||
goComplete = {},
|
||||
goReceived = {}
|
||||
}
|
||||
BookQuestItemCtrl._mapEventConfig = {}
|
||||
BookQuestItemCtrl._mapRedDotConfig = {}
|
||||
function BookQuestItemCtrl:InitPotentialItem(questData)
|
||||
for _, v in ipairs(self._mapNode.txtQuestDesc) do
|
||||
NovaAPI.SetTMPText(v, questData.Desc)
|
||||
end
|
||||
self:SetProgress(questData.CurProgress, questData.AllProgress, questData.Status)
|
||||
local mapReward = questData.Reward
|
||||
self.nRewardTid = mapReward.RewardId
|
||||
local bReceived = questData.Status == AllEnum.BookQuestStatus.Received
|
||||
self._mapNode.goRewardItem:SetItem(mapReward.RewardId, nil, mapReward.RewardCount, nil, bReceived, false, false, true, false)
|
||||
end
|
||||
function BookQuestItemCtrl:InitFateCardItem(questData)
|
||||
for _, v in ipairs(self._mapNode.txtQuestDesc) do
|
||||
NovaAPI.SetTMPText(v, questData.Desc)
|
||||
end
|
||||
self:SetProgress(questData.CurProgress, questData.AllProgress, questData.Status)
|
||||
local mapReward = questData.Reward[1]
|
||||
self.nRewardTid = mapReward.RewardId
|
||||
local bReceived = questData.Status == AllEnum.BookQuestStatus.Received
|
||||
self._mapNode.goRewardItem:SetItem(mapReward.RewardId, nil, mapReward.RewardCount, nil, bReceived, false, false, true, false)
|
||||
end
|
||||
function BookQuestItemCtrl:SetProgress(nProgress, nAllProgress, nStatus)
|
||||
self._mapNode.goUnComplete.gameObject:SetActive(nStatus == AllEnum.BookQuestStatus.UnComplete)
|
||||
self._mapNode.goComplete.gameObject:SetActive(nStatus == AllEnum.BookQuestStatus.Complete)
|
||||
self._mapNode.goReceived.gameObject:SetActive(nStatus == AllEnum.BookQuestStatus.Received)
|
||||
if nStatus == AllEnum.BookQuestStatus.UnComplete then
|
||||
self._mapNode.imgBar.sizeDelta = Vector2(nProgress / nAllProgress * self.nAllWidth, self._mapNode.imgBar.sizeDelta.y)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtProgress, string.format("%s/%s", nProgress, nAllProgress))
|
||||
else
|
||||
self._mapNode.imgBar.sizeDelta = Vector2(self.nAllWidth, self._mapNode.imgBar.sizeDelta.y)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtProgress, ConfigTable.GetUIText("StarTower_Book_Quest_Complete"))
|
||||
end
|
||||
end
|
||||
function BookQuestItemCtrl:Awake()
|
||||
self.nAllWidth = self._mapNode.imgBarBg.sizeDelta.x
|
||||
end
|
||||
function BookQuestItemCtrl:OnBtnClick_Item(btn)
|
||||
local mapData = {
|
||||
nTid = self.nRewardTid,
|
||||
bShowDepot = true,
|
||||
bShowJumpto = false
|
||||
}
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.ItemTips, btn.transform, mapData)
|
||||
end
|
||||
return BookQuestItemCtrl
|
||||
@@ -0,0 +1,177 @@
|
||||
local StarTowerBookQuestCtrl = class("StarTowerBookQuestCtrl", BaseCtrl)
|
||||
StarTowerBookQuestCtrl._mapNodeConfig = {
|
||||
goWindowBlur = {},
|
||||
goQuestWindow = {},
|
||||
animRoot = {
|
||||
sNodeName = "goQuestWindow",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
txtWindowTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Quest_Title"
|
||||
},
|
||||
btnClose = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Close"
|
||||
},
|
||||
questLSV = {
|
||||
sComponentName = "LoopScrollView"
|
||||
},
|
||||
btnReceive = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Receive"
|
||||
},
|
||||
txtReceiveBtn = {
|
||||
nCount = 2,
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Quest_Quick_Receive"
|
||||
},
|
||||
btnReceiveGray = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_ReceiveGray"
|
||||
},
|
||||
btnQuestBg = {
|
||||
sComponentName = "Button",
|
||||
callback = "OnBtnClick_Close"
|
||||
}
|
||||
}
|
||||
StarTowerBookQuestCtrl._mapEventConfig = {}
|
||||
StarTowerBookQuestCtrl._mapRedDotConfig = {}
|
||||
function StarTowerBookQuestCtrl:ShowWindow(nParam)
|
||||
self._mapNode.goQuestWindow.gameObject:SetActive(false)
|
||||
self._mapNode.goWindowBlur.gameObject:SetActive(true)
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
self._mapNode.goQuestWindow.gameObject:SetActive(true)
|
||||
self._mapNode.animRoot:Play("t_window_04_t_in")
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
|
||||
if self._panel.nPanelType == AllEnum.StarTowerBookPanelType.Potential then
|
||||
self:InitPotentialQuest(nParam)
|
||||
elseif self._panel.nPanelType == AllEnum.StarTowerBookPanelType.FateCard then
|
||||
self:InitFateCardQuest(nParam)
|
||||
end
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
end
|
||||
function StarTowerBookQuestCtrl:InitPotentialQuest(nCharId)
|
||||
self.nCharId = nCharId
|
||||
self.mapQuest = {}
|
||||
local mapQuest = PlayerData.StarTowerBook:GetCharPotentialQuest(nCharId)
|
||||
self._mapNode.questLSV.gameObject:SetActive(mapQuest ~= nil)
|
||||
if mapQuest == nil then
|
||||
return
|
||||
end
|
||||
for nId, data in pairs(mapQuest) do
|
||||
data.Id = nId
|
||||
table.insert(self.mapQuest, data)
|
||||
end
|
||||
table.sort(self.mapQuest, function(a, b)
|
||||
if a.Status == b.Status then
|
||||
return a.Id < b.Id
|
||||
end
|
||||
return a.Status < b.Status
|
||||
end)
|
||||
for nInstanceId, objCtrl in pairs(self.tbGridCtrl) do
|
||||
self:UnbindCtrlByNode(objCtrl)
|
||||
self.tbGridCtrl[nInstanceId] = nil
|
||||
end
|
||||
self._mapNode.questLSV:Init(#self.mapQuest, self, self.OnPotentialGridRefresh, nil)
|
||||
local bCanReceive = false
|
||||
for _, v in ipairs(self.mapQuest) do
|
||||
if v.Status == AllEnum.BookQuestStatus.Complete then
|
||||
bCanReceive = true
|
||||
break
|
||||
end
|
||||
end
|
||||
self._mapNode.btnReceive.gameObject:SetActive(bCanReceive)
|
||||
self._mapNode.btnReceiveGray.gameObject:SetActive(not bCanReceive)
|
||||
end
|
||||
function StarTowerBookQuestCtrl:OnPotentialGridRefresh(goGrid, goIndex)
|
||||
local nInstanceID = goGrid:GetInstanceID()
|
||||
if not self.tbGridCtrl[nInstanceID] then
|
||||
self.tbGridCtrl[nInstanceID] = self:BindCtrlByNode(goGrid, "Game.UI.StarTowerBook.Quest.BookQuestItemCtrl")
|
||||
end
|
||||
local questData = self.mapQuest[goIndex + 1]
|
||||
self.tbGridCtrl[nInstanceID]:InitPotentialItem(questData)
|
||||
end
|
||||
function StarTowerBookQuestCtrl:InitFateCardQuest(nBundleId)
|
||||
self.nBundleId = nBundleId
|
||||
self.mapQuest = PlayerData.StarTowerBook:GetFateCardBundleQuest(nBundleId)
|
||||
table.sort(self.mapQuest, function(a, b)
|
||||
if a.Status == b.Status then
|
||||
return a.Id < b.Id
|
||||
end
|
||||
return a.Status < b.Status
|
||||
end)
|
||||
for nInstanceId, objCtrl in pairs(self.tbGridCtrl) do
|
||||
self:UnbindCtrlByNode(objCtrl)
|
||||
self.tbGridCtrl[nInstanceId] = nil
|
||||
end
|
||||
self._mapNode.questLSV:Init(#self.mapQuest, self, self.OnFateCardGridRefresh, nil)
|
||||
local bCanReceive = false
|
||||
for _, v in ipairs(self.mapQuest) do
|
||||
if v.Status == AllEnum.BookQuestStatus.Complete then
|
||||
bCanReceive = true
|
||||
break
|
||||
end
|
||||
end
|
||||
self._mapNode.btnReceive.gameObject:SetActive(bCanReceive)
|
||||
self._mapNode.btnReceiveGray.gameObject:SetActive(not bCanReceive)
|
||||
end
|
||||
function StarTowerBookQuestCtrl:OnFateCardGridRefresh(goGrid, goIndex)
|
||||
local nInstanceID = goGrid:GetInstanceID()
|
||||
if not self.tbGridCtrl[nInstanceID] then
|
||||
self.tbGridCtrl[nInstanceID] = self:BindCtrlByNode(goGrid, "Game.UI.StarTowerBook.Quest.BookQuestItemCtrl")
|
||||
end
|
||||
local questData = self.mapQuest[goIndex + 1]
|
||||
self.tbGridCtrl[nInstanceID]:InitFateCardItem(questData)
|
||||
end
|
||||
function StarTowerBookQuestCtrl:CloseWindow()
|
||||
self._mapNode.animRoot:Play("t_window_04_t_out")
|
||||
local nAnim = NovaAPI.GetAnimClipLength(self._mapNode.animRoot, {
|
||||
"t_window_04_t_out"
|
||||
})
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, nAnim)
|
||||
self:AddTimer(1, nAnim, function()
|
||||
self._mapNode.goQuestWindow.gameObject:SetActive(false)
|
||||
self._mapNode.goWindowBlur.gameObject:SetActive(false)
|
||||
self.gameObject:SetActive(false)
|
||||
end, true, true, true, true)
|
||||
end
|
||||
function StarTowerBookQuestCtrl:Awake()
|
||||
self.tbGridCtrl = {}
|
||||
end
|
||||
function StarTowerBookQuestCtrl:FadeIn()
|
||||
end
|
||||
function StarTowerBookQuestCtrl:FadeOut()
|
||||
end
|
||||
function StarTowerBookQuestCtrl:OnEnable()
|
||||
end
|
||||
function StarTowerBookQuestCtrl:OnDisable()
|
||||
for nInstanceId, objCtrl in pairs(self.tbGridCtrl) do
|
||||
self:UnbindCtrlByNode(objCtrl)
|
||||
self.tbGridCtrl[nInstanceId] = nil
|
||||
end
|
||||
end
|
||||
function StarTowerBookQuestCtrl:OnBtnClick_Close()
|
||||
self:CloseWindow()
|
||||
end
|
||||
function StarTowerBookQuestCtrl:OnBtnClick_Receive()
|
||||
local callback = function()
|
||||
if self._panel.nPanelType == AllEnum.StarTowerBookPanelType.Potential then
|
||||
self:InitPotentialQuest(self.nCharId)
|
||||
elseif self._panel.nPanelType == AllEnum.StarTowerBookPanelType.FateCard then
|
||||
self:InitFateCardQuest(self.nBundleId)
|
||||
end
|
||||
self:CloseWindow()
|
||||
end
|
||||
if self._panel.nPanelType == AllEnum.StarTowerBookPanelType.Potential then
|
||||
PlayerData.StarTowerBook:SendReceivePotentialRewardMsg(self.nCharId, callback)
|
||||
elseif self._panel.nPanelType == AllEnum.StarTowerBookPanelType.FateCard then
|
||||
PlayerData.StarTowerBook:SendReceiveFateCardRewardMsg(self.nBundleId, 0, callback)
|
||||
end
|
||||
end
|
||||
function StarTowerBookQuestCtrl:OnBtnClick_ReceiveGray()
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("StarTower_Book_Quest_Reward"))
|
||||
end
|
||||
return StarTowerBookQuestCtrl
|
||||
@@ -0,0 +1,143 @@
|
||||
local StarTowerBookCtrl = class("StarTowerBookCtrl", BaseCtrl)
|
||||
StarTowerBookCtrl._mapNodeConfig = {
|
||||
TopBar = {
|
||||
sNodeName = "TopBarPanel",
|
||||
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
|
||||
},
|
||||
MainRoot = {
|
||||
sNodeName = "---Main---",
|
||||
sCtrlName = "Game.UI.StarTowerBook.StarTowerBookMainCtrl"
|
||||
},
|
||||
PotentialRoot = {
|
||||
sNodeName = "---Potential---",
|
||||
sCtrlName = "Game.UI.StarTowerBook.Potential.StarTowerPotentialBookCtrl"
|
||||
},
|
||||
FateCardRoot = {
|
||||
sNodeName = "---FateCard---",
|
||||
sCtrlName = "Game.UI.StarTowerBook.FateCard.StarTowerFateCardBookCtrl"
|
||||
},
|
||||
EventRoot = {
|
||||
sNodeName = "---Event---",
|
||||
sCtrlName = "Game.UI.StarTowerBook.Event.StarTowerEventBookCtrl"
|
||||
},
|
||||
QuestRoot = {
|
||||
sNodeName = "---Quest---",
|
||||
sCtrlName = "Game.UI.StarTowerBook.Quest.StarTowerBookQuestCtrl"
|
||||
},
|
||||
AffinityRoot = {
|
||||
sNodeName = "---Affinity---",
|
||||
sCtrlName = "Game.UI.StarTowerBook.Affinity.StarTowerNpcAffinityCtrl"
|
||||
},
|
||||
goBg = {},
|
||||
animBg = {sNodeName = "goBg", sComponentName = "Animator"}
|
||||
}
|
||||
StarTowerBookCtrl._mapEventConfig = {
|
||||
ChangeStarTowerBookPanel = "OnEvent_ChangeStarTowerBookPanel",
|
||||
OpenStarTowerBookQuest = "OnEvent_OpenStarTowerBookQuest",
|
||||
[EventId.UIBackConfirm] = "OnEvent_Back",
|
||||
[EventId.UIHomeConfirm] = "OnEvent_Home"
|
||||
}
|
||||
StarTowerBookCtrl._mapRedDotConfig = {}
|
||||
function StarTowerBookCtrl:RefreshPanel()
|
||||
self._mapNode.MainRoot.gameObject:SetActive(self._panel.nPanelType == AllEnum.StarTowerBookPanelType.Main)
|
||||
self._mapNode.PotentialRoot.gameObject:SetActive(self._panel.nPanelType == AllEnum.StarTowerBookPanelType.Potential)
|
||||
self._mapNode.FateCardRoot.gameObject:SetActive(self._panel.nPanelType == AllEnum.StarTowerBookPanelType.FateCard)
|
||||
self._mapNode.EventRoot.gameObject:SetActive(self._panel.nPanelType == AllEnum.StarTowerBookPanelType.Event)
|
||||
self._mapNode.AffinityRoot.gameObject:SetActive(self._panel.nPanelType == AllEnum.StarTowerBookPanelType.Affinity)
|
||||
self._mapNode.goBg.gameObject:SetActive(true)
|
||||
if self.nLastPanelType ~= nil and self.nLastPanelType == AllEnum.StarTowerBookPanelType.Event or self.nLastPanelType == AllEnum.StarTowerBookPanelType.Affinity or self._panel.nPanelType == AllEnum.StarTowerBookPanelType.Event or self._panel.nPanelType == AllEnum.StarTowerBookPanelType.Affinity then
|
||||
self._mapNode.goBg.gameObject:SetActive(false)
|
||||
return
|
||||
end
|
||||
if self._panel.nPanelType == AllEnum.StarTowerBookPanelType.Potential or self._panel.nPanelType == AllEnum.StarTowerBookPanelType.FateCard then
|
||||
self._mapNode.animBg:Play("StarTowerBookgoBg_in", 0, 0)
|
||||
else
|
||||
self._mapNode.animBg:Play("StarTowerBookgoBg_out", 0, 0)
|
||||
end
|
||||
end
|
||||
function StarTowerBookCtrl:Awake()
|
||||
self.nLastPanelType = nil
|
||||
if self._panel.nPanelType == 0 then
|
||||
self._panel.nPanelType = AllEnum.StarTowerBookPanelType.Main
|
||||
end
|
||||
self._mapNode.QuestRoot.gameObject:SetActive(false)
|
||||
self:RefreshPanel()
|
||||
self._mapNode.goBg.gameObject:SetActive(false)
|
||||
end
|
||||
function StarTowerBookCtrl:FadeIn()
|
||||
end
|
||||
function StarTowerBookCtrl:FadeOut()
|
||||
end
|
||||
function StarTowerBookCtrl:OnEnable()
|
||||
self._mapNode.MainRoot.gameObject:SetActive(true)
|
||||
self._mapNode.MainRoot:Init()
|
||||
local tbParam = self:GetPanelParam()
|
||||
if tbParam[1] ~= nil then
|
||||
self._panel.nPanelType = tbParam[1]
|
||||
tbParam = {}
|
||||
end
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
if self._panel.nPanelType ~= AllEnum.StarTowerBookPanelType.Main then
|
||||
self:OnEvent_ChangeStarTowerBookPanel(self._panel.nPanelType)
|
||||
end
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
end
|
||||
function StarTowerBookCtrl:OnDisable()
|
||||
end
|
||||
function StarTowerBookCtrl:OnDestroy()
|
||||
end
|
||||
function StarTowerBookCtrl:OnRelease()
|
||||
end
|
||||
function StarTowerBookCtrl:OnBtnClick_AAA()
|
||||
end
|
||||
function StarTowerBookCtrl:OnEvent_ChangeStarTowerBookPanel(nPanelType)
|
||||
self._panel.nPanelType = nPanelType
|
||||
self.nLastPanelType = self._panel.nPanelType
|
||||
if self._panel.nPanelType == AllEnum.StarTowerBookPanelType.Potential then
|
||||
self:RefreshPanel()
|
||||
self._mapNode.PotentialRoot:Init()
|
||||
self._mapNode.TopBar:SetTitleTxt(ConfigTable.GetUIText("StarTower_Book_Potential_TopBar_Title"))
|
||||
elseif self._panel.nPanelType == AllEnum.StarTowerBookPanelType.Event then
|
||||
self:RefreshPanel()
|
||||
self._mapNode.EventRoot:Init()
|
||||
self._mapNode.TopBar:SetTitleTxt(ConfigTable.GetUIText("StarTower_Book_Event_TopBar_Title"))
|
||||
elseif self._panel.nPanelType == AllEnum.StarTowerBookPanelType.FateCard then
|
||||
self:RefreshPanel()
|
||||
self._mapNode.FateCardRoot:Init()
|
||||
self._mapNode.TopBar:SetTitleTxt(ConfigTable.GetUIText("StarTower_Book_FateCard_TopBar_Title"))
|
||||
elseif self._panel.nPanelType == AllEnum.StarTowerBookPanelType.Affinity then
|
||||
local callback = function()
|
||||
self:RefreshPanel()
|
||||
self._mapNode.AffinityRoot:Init()
|
||||
self._mapNode.TopBar:SetTitleTxt(ConfigTable.GetUIText("StartowerBook_NPCAffinityTitle"))
|
||||
end
|
||||
PlayerData.StarTower:GetAffinity(callback)
|
||||
elseif self._panel.nPanelType == AllEnum.StarTowerBookPanelType.Main then
|
||||
self:RefreshPanel()
|
||||
self._mapNode.MainRoot:BackToMain()
|
||||
self._mapNode.TopBar:SetTitleTxt(ConfigTable.GetUIText("StarTower_Book_Main_TopBar_Title"))
|
||||
end
|
||||
end
|
||||
function StarTowerBookCtrl:OnEvent_OpenStarTowerBookQuest(nParam)
|
||||
self._mapNode.QuestRoot.gameObject:SetActive(true)
|
||||
self._mapNode.QuestRoot:ShowWindow(nParam)
|
||||
end
|
||||
function StarTowerBookCtrl:OnEvent_Back()
|
||||
if self._panel.nPanelType == AllEnum.StarTowerBookPanelType.Potential then
|
||||
self._mapNode.PotentialRoot:Back()
|
||||
elseif self._panel.nPanelType == AllEnum.StarTowerBookPanelType.Event then
|
||||
self._mapNode.EventRoot:Back()
|
||||
elseif self._panel.nPanelType == AllEnum.StarTowerBookPanelType.FateCard then
|
||||
self._mapNode.FateCardRoot:Back()
|
||||
elseif self._panel.nPanelType == AllEnum.StarTowerBookPanelType.Affinity then
|
||||
self._mapNode.AffinityRoot:Back()
|
||||
else
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.StarTowerBook)
|
||||
end
|
||||
end
|
||||
function StarTowerBookCtrl:OnEvent_Home()
|
||||
PanelManager.Home()
|
||||
end
|
||||
return StarTowerBookCtrl
|
||||
@@ -0,0 +1,109 @@
|
||||
local StarTowerBookMainCtrl = class("StarTowerBookMainCtrl", BaseCtrl)
|
||||
StarTowerBookMainCtrl._mapNodeConfig = {
|
||||
btnPotential = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Potential"
|
||||
},
|
||||
btnFateCard = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_FateCard"
|
||||
},
|
||||
btnEvent = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Event"
|
||||
},
|
||||
btnAffinity = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Affinity"
|
||||
},
|
||||
txtPotential = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Potential_Title"
|
||||
},
|
||||
txtPotentialDesc = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Potential_Desc"
|
||||
},
|
||||
txtFateCard = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_FateCard_Title"
|
||||
},
|
||||
txtFateCardDesc = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_FateCard_Desc"
|
||||
},
|
||||
txtEvent = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Event_Title"
|
||||
},
|
||||
txtEventDesc = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Event_Desc"
|
||||
},
|
||||
txtPosition = {sComponentName = "TMP_Text"},
|
||||
txtEntranceDesc = {sComponentName = "TMP_Text"},
|
||||
imgPhoto = {sComponentName = "Image"},
|
||||
txtAffinity = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Book_Affinity_Title"
|
||||
},
|
||||
redDotPotential = {},
|
||||
redDotFateCard = {},
|
||||
redDotEvent = {},
|
||||
redDotAffinity = {}
|
||||
}
|
||||
StarTowerBookMainCtrl._mapEventConfig = {}
|
||||
StarTowerBookMainCtrl._mapRedDotConfig = {
|
||||
[RedDotDefine.StarTowerBook_Potential] = {
|
||||
sNodeName = "redDotPotential"
|
||||
},
|
||||
[RedDotDefine.StarTowerBook_FateCard] = {
|
||||
sNodeName = "redDotFateCard"
|
||||
},
|
||||
[RedDotDefine.StarTowerBook_Event] = {
|
||||
sNodeName = "redDotEvent"
|
||||
},
|
||||
[RedDotDefine.StarTowerBook_Affinity] = {
|
||||
sNodeName = "redDotAffinity"
|
||||
}
|
||||
}
|
||||
function StarTowerBookMainCtrl:Init()
|
||||
self.animRoot:Play("StarTowerBookMain_in")
|
||||
local mapEntrance = PlayerData.StarTowerBook:GetRandomEntranceCfg()
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPosition, mapEntrance.Position)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtEntranceDesc, mapEntrance.Desc)
|
||||
if mapEntrance.Icon ~= "" then
|
||||
self:SetPngSprite(self._mapNode.imgPhoto, mapEntrance.Icon)
|
||||
end
|
||||
end
|
||||
function StarTowerBookMainCtrl:BackToMain()
|
||||
self.animRoot:Play("StarTowerBookMain_in1")
|
||||
end
|
||||
function StarTowerBookMainCtrl:Awake()
|
||||
self.animRoot = self.gameObject:GetComponent("Animator")
|
||||
end
|
||||
function StarTowerBookMainCtrl:OnEnable()
|
||||
end
|
||||
function StarTowerBookMainCtrl:OnDisable()
|
||||
end
|
||||
function StarTowerBookMainCtrl:OnDestroy()
|
||||
end
|
||||
function StarTowerBookMainCtrl:OnBtnClick_Potential()
|
||||
local callback = function()
|
||||
EventManager.Hit("ChangeStarTowerBookPanel", AllEnum.StarTowerBookPanelType.Potential)
|
||||
end
|
||||
PlayerData.StarTowerBook:SendPotentialBriefListMsg(callback)
|
||||
end
|
||||
function StarTowerBookMainCtrl:OnBtnClick_FateCard()
|
||||
local callback = function()
|
||||
EventManager.Hit("ChangeStarTowerBookPanel", AllEnum.StarTowerBookPanelType.FateCard)
|
||||
end
|
||||
PlayerData.StarTowerBook:TryGetFateCardBook(callback)
|
||||
end
|
||||
function StarTowerBookMainCtrl:OnBtnClick_Event()
|
||||
EventManager.Hit("ChangeStarTowerBookPanel", AllEnum.StarTowerBookPanelType.Event)
|
||||
end
|
||||
function StarTowerBookMainCtrl:OnBtnClick_Affinity()
|
||||
EventManager.Hit("ChangeStarTowerBookPanel", AllEnum.StarTowerBookPanelType.Affinity)
|
||||
end
|
||||
return StarTowerBookMainCtrl
|
||||
@@ -0,0 +1,21 @@
|
||||
local StarTowerBookPanel = class("StarTowerBookPanel", BasePanel)
|
||||
StarTowerBookPanel._tbDefine = {
|
||||
{
|
||||
sPrefabPath = "StarTowerBook/StarTowerBookPanel.prefab",
|
||||
sCtrlName = "Game.UI.StarTowerBook.StarTowerBookCtrl"
|
||||
}
|
||||
}
|
||||
function StarTowerBookPanel:Awake()
|
||||
self.nPanelType = 0
|
||||
end
|
||||
function StarTowerBookPanel:OnEnable()
|
||||
end
|
||||
function StarTowerBookPanel:OnAfterEnter()
|
||||
end
|
||||
function StarTowerBookPanel:OnDisable()
|
||||
end
|
||||
function StarTowerBookPanel:OnDestroy()
|
||||
end
|
||||
function StarTowerBookPanel:OnRelease()
|
||||
end
|
||||
return StarTowerBookPanel
|
||||
Reference in New Issue
Block a user