Initial version - 1.2.0.60

EN: 1.2.0.60
CN: 1.2.0.61
JP: 1.2.0.63
KR: 1.2.0.67
This commit is contained in:
SL1900
2025-12-03 01:00:00 +09:00
commit 5e0d58cfad
3595 changed files with 9373562 additions and 0 deletions
@@ -0,0 +1,86 @@
local BoardCharCtrl = class("BoardCharCtrl", BaseCtrl)
local PlayerHandbookData = PlayerData.Handbook
local PlayerBoardData = PlayerData.Board
BoardCharCtrl._mapNodeConfig = {
imgChose = {},
imgChoseMask = {},
imgAnimMask = {},
imgItemIcon = {sComponentName = "Image"},
imgItemRare = {sComponentName = "Image"},
imgChoseBg = {},
imgSelectIndex = {sComponentName = "Image"},
txtSelected = {
sComponentName = "TMP_Text",
sLanguageId = "HomePage_Selected"
},
goAnim = {}
}
function BoardCharCtrl:RefreshItemData(bShowFavorite)
self._mapNode.goAnim.gameObject:SetActive(false)
local handbookData = PlayerHandbookData:GetHandbookDataById(self.nId)
if handbookData:GetType() == GameEnum.handbookType.SKIN then
self._mapNode.goAnim.gameObject:SetActive(bShowFavorite and handbookData:CheckFavorCG())
local charCfgData = handbookData:GetCharCfgData()
if nil ~= charCfgData then
local rareIconName = AllEnum.FrameType_New.BoardFrame .. AllEnum.BoardFrameColor[charCfgData.Grade]
self:SetAtlasSprite(self._mapNode.imgItemRare, "12_rare", rareIconName)
end
local charSkinCfgData = handbookData:GetSkinCfgData()
if nil ~= charSkinCfgData then
self:SetPngSprite(self._mapNode.imgItemIcon, charSkinCfgData.Icon .. AllEnum.CharHeadIconSurfix.XXL)
end
elseif handbookData:GetType() == GameEnum.handbookType.OUTFIT then
local discCfgData = handbookData:GetDiscCfgData()
local discItemCfgData = handbookData:GetDiscItemCfgData()
if nil ~= discCfgData and nil ~= discItemCfgData then
self._mapNode.goAnim.gameObject:SetActive(bShowFavorite and handbookData:GetRarity() == GameEnum.itemRarity.SSR and handbookData:CheckDiscL2D())
self:SetPngSprite(self._mapNode.imgItemIcon, discItemCfgData.Icon .. AllEnum.OutfitIconSurfix.ListGrid)
local rareIconName = AllEnum.FrameType_New.BoardFrame .. AllEnum.BoardFrameColor[discItemCfgData.Rarity]
self:SetAtlasSprite(self._mapNode.imgItemRare, "12_rare", rareIconName)
end
elseif handbookData:GetType() == GameEnum.handbookType.PLOT or handbookData:GetType() == GameEnum.handbookType.StorySet then
local plotCfgData = handbookData:GetPlotCfgData()
if nil ~= plotCfgData then
local tbResourcePath = PlayerData.Handbook:GetPlotResourcePath(self.nId)
self:SetPngSprite(self._mapNode.imgItemIcon, tbResourcePath.Icon)
end
local rareIconName = AllEnum.FrameType_New.BoardFrame .. AllEnum.BoardFrameColor[2]
self:SetAtlasSprite(self._mapNode.imgItemRare, "12_rare", rareIconName)
end
end
function BoardCharCtrl:SetItemData(itemData)
local nMaxCount = PlayerBoardData:GetMaxSelectCount()
self.nId = itemData.data:GetId()
self:RefreshItemData(true)
local nSelect = itemData.nSelect > 0 and nMaxCount - itemData.nSelect + 1 or 0
self:SetSelect(nSelect)
end
function BoardCharCtrl:SetItemSortData(nId, nIndex)
self.nId = nId
self:RefreshItemData(false)
self._mapNode.imgChose.gameObject:SetActive(false)
self._mapNode.imgChoseMask.gameObject:SetActive(false)
self._mapNode.imgChoseBg.gameObject:SetActive(false)
self._mapNode.imgAnimMask.gameObject:SetActive(false)
end
function BoardCharCtrl:SetSelect(nSelectIdx)
self.bSelect = nil ~= nSelectIdx and 0 < nSelectIdx
self._mapNode.imgChose.gameObject:SetActive(self.bSelect)
self._mapNode.imgChoseMask.gameObject:SetActive(self.bSelect)
self._mapNode.imgChoseBg.gameObject:SetActive(self.bSelect)
self._mapNode.imgAnimMask.gameObject:SetActive(self.bSelect)
if self.bSelect then
self:SetAtlasSprite(self._mapNode.imgSelectIndex, "11_ico", "zs_team_select_" .. nSelectIdx)
end
end
function BoardCharCtrl:CheckSelect(tbSelected)
local nSelectIdx
for k, v in ipairs(tbSelected) do
if v == self.nId then
nSelectIdx = k
break
end
end
self:SetSelect(nSelectIdx)
end
return BoardCharCtrl
+101
View File
@@ -0,0 +1,101 @@
local BoardPlotCtrl = class("BoardPlotCtrl", BaseCtrl)
local PlayerHandbookData = PlayerData.Handbook
local PlayerBoardData = PlayerData.Board
local LimitWidth = 270
BoardPlotCtrl._mapNodeConfig = {
imgChose = {},
imgChoseMask = {},
imgAnimMask = {},
imgItemIcon = {sComponentName = "Image"},
imgItemRare = {sComponentName = "Image"},
imgChoseBg = {},
imgSelectIndex = {sComponentName = "Image"},
txtSelected = {
sComponentName = "TMP_Text",
sLanguageId = "HomePage_Selected"
},
goAnim = {},
txtName = {sComponentName = "TMP_Text"},
hintHorLayout = {
sNodeName = "goName",
sComponentName = "HorizontalLayoutGroup"
},
layoutElement = {
sNodeName = "goName",
sComponentName = "LayoutElement"
},
goName = {
sComponentName = "RectTransform"
}
}
function BoardPlotCtrl:RefreshItemData(bShowFavorite)
self._mapNode.goAnim.gameObject:SetActive(false)
self._mapNode.txtName.gameObject:SetActive(false)
local handbookData = PlayerHandbookData:GetHandbookDataById(self.nId)
local plotCfgData = handbookData:GetPlotCfgData()
local scrollerCS = self._mapNode.txtName.gameObject:GetComponent("TextScroll")
if nil ~= plotCfgData then
local tbResourcePath = PlayerData.Handbook:GetPlotResourcePath(self.nId)
self:SetPngSprite(self._mapNode.imgItemIcon, tbResourcePath.ListImg)
self:SetHintLayout(true)
self._mapNode.txtName.gameObject:SetActive(true)
NovaAPI.SetTMPText(self._mapNode.txtName, plotCfgData.Name)
local rectTra = self._mapNode.txtName.gameObject:GetComponent("RectTransform")
local wait = function()
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
CS.UnityEngine.UI.LayoutRebuilder.ForceRebuildLayoutImmediate(rectTra)
CS.UnityEngine.UI.LayoutRebuilder.ForceRebuildLayoutImmediate(self._mapNode.goName)
local width = rectTra.sizeDelta.x
if width >= LimitWidth then
self:SetHintLayout(false)
scrollerCS:StartScroll(self._mapNode.txtName)
else
self:SetHintLayout(true)
scrollerCS:StopScroll()
end
end
cs_coroutine.start(wait)
else
scrollerCS:StopScroll()
end
end
function BoardPlotCtrl:SetItemData(itemData)
local nMaxCount = PlayerBoardData:GetMaxSelectCount()
self.nId = itemData.data:GetId()
self:RefreshItemData(true)
local nSelect = itemData.nSelect > 0 and nMaxCount - itemData.nSelect + 1 or 0
self:SetSelect(nSelect)
end
function BoardPlotCtrl:SetItemSortData(nId, nIndex)
self.nId = nId
self:RefreshItemData(false)
self._mapNode.imgChose.gameObject:SetActive(false)
self._mapNode.imgChoseMask.gameObject:SetActive(false)
self._mapNode.imgChoseBg.gameObject:SetActive(false)
self._mapNode.imgAnimMask.gameObject:SetActive(false)
end
function BoardPlotCtrl:SetSelect(nSelectIdx)
self.bSelect = nil ~= nSelectIdx and 0 < nSelectIdx
self._mapNode.imgChose.gameObject:SetActive(self.bSelect)
self._mapNode.imgChoseMask.gameObject:SetActive(self.bSelect)
self._mapNode.imgChoseBg.gameObject:SetActive(self.bSelect)
self._mapNode.imgAnimMask.gameObject:SetActive(self.bSelect)
if self.bSelect then
self:SetAtlasSprite(self._mapNode.imgSelectIndex, "11_ico", "zs_team_select_" .. nSelectIdx)
end
end
function BoardPlotCtrl:CheckSelect(tbSelected)
local nSelectIdx
for k, v in ipairs(tbSelected) do
if v == self.nId then
nSelectIdx = k
break
end
end
self:SetSelect(nSelectIdx)
end
function BoardPlotCtrl:SetHintLayout(bEnabled)
self._mapNode.hintHorLayout.enabled = bEnabled
self._mapNode.layoutElement.enabled = not bEnabled
end
return BoardPlotCtrl
@@ -0,0 +1,59 @@
local BoardSelectedCtrl = class("BoardSelectedCtrl", BaseCtrl)
local PlayerHandbookData = PlayerData.Handbook
BoardSelectedCtrl._mapNodeConfig = {
goEmpty = {},
goSelected = {},
imgIcon = {sComponentName = "Image"},
imgRare = {sComponentName = "Image"},
imgCornerRole = {},
imgCornerOutfit = {},
btnItem = {
sComponentName = "Button",
callback = "OnBtnClick_Item"
}
}
function BoardSelectedCtrl:Refresh(idx, id, bIsSelected)
local bEmpty = nil == id
self.nHandbookId = id
self._mapNode.goEmpty.gameObject:SetActive(true)
self._mapNode.goSelected.gameObject:SetActive(not bEmpty)
if not bEmpty then
local handbookData = PlayerHandbookData:GetHandbookDataById(id)
if nil == handbookData then
return
end
self._mapNode.imgCornerRole.gameObject:SetActive(handbookData:GetType() == GameEnum.handbookType.SKIN)
self._mapNode.imgCornerOutfit.gameObject:SetActive(handbookData:GetType() == GameEnum.handbookType.OUTFIT)
if handbookData:GetType() == GameEnum.handbookType.SKIN then
local charCfgData = handbookData:GetCharCfgData()
if nil ~= charCfgData then
local rareIconName = AllEnum.FrameType_New.BoardFrame .. AllEnum.BoardFrameColor[charCfgData.Grade]
self:SetAtlasSprite(self._mapNode.imgRare, "12_rare", rareIconName)
NovaAPI.SetImageNativeSize(self._mapNode.imgRare)
end
local charSkinCfgData = handbookData:GetSkinCfgData()
if nil ~= charSkinCfgData then
self:SetPngSprite(self._mapNode.imgIcon, charSkinCfgData.Icon .. AllEnum.CharHeadIconSurfix.XXL)
end
elseif handbookData:GetType() == GameEnum.handbookType.OUTFIT then
local discCfgData = handbookData:GetDiscCfgData()
local outfitItemCfgData = handbookData:GetDiscItemCfgData()
if nil ~= discCfgData and nil ~= outfitItemCfgData then
self:SetPngSprite(self._mapNode.imgIcon, outfitItemCfgData.Icon .. AllEnum.OutfitIconSurfix.ListGrid)
local sPath = AllEnum.FrameType_New.BoardFrame .. AllEnum.BoardFrameColor[outfitItemCfgData.Rarity]
self:SetAtlasSprite(self._mapNode.imgRare, "12_rare", sPath)
NovaAPI.SetImageNativeSize(self._mapNode.imgRare)
end
end
if bIsSelected == true then
self._mapNode.goSelected.transform.localScale = Vector3(0.5, 0.5, 1)
self._mapNode.goSelected.transform:DOScale(1, 0.2):SetUpdate(true):SetEase(Ease.OutBack)
end
end
end
function BoardSelectedCtrl:OnBtnClick_Item()
if nil ~= self.nHandbookId then
EventManager.Hit(EventId.BoardSelectItem, self.nHandbookId)
end
end
return BoardSelectedCtrl
+129
View File
@@ -0,0 +1,129 @@
local BoardSortCtrl = class("BoardSortCtrl", BaseCtrl)
BoardSortCtrl._mapNodeConfig = {
itemChar = {
sCtrlName = "Game.UI.MainViewBoard.BoardCharCtrl"
},
eventDrag = {
sNodeName = "btnSortItem",
sComponentName = "UIDrag",
callback = "OnUIDrag_Drag"
},
trSortItem = {
sNodeName = "btnSortItem",
sComponentName = "RectTransform"
},
raySortItem = {
sNodeName = "btnSortItem",
sComponentName = "Empty4Raycast"
},
rayDragEvent = {
sNodeName = "btnDragEvent",
sComponentName = "Empty4Raycast"
},
btnSortItem = {
sNodeName = "btnSortItem",
sComponentName = "Button",
callback = "OnBtnClick_SortItem"
},
goEmpty = {}
}
BoardSortCtrl._mapEventConfig = {
[EventId.BoardItemDragStart] = "OnBoardItemDragStart",
[EventId.BoardItemDragEnd] = "OnBoardItemDragEnd"
}
local item_spacing = 15.6
local item_Width = 170
local clamp = function(x, min, max)
return math.max(math.min(x, max), min)
end
function BoardSortCtrl:InitSortingOrder(nSortOrder, goDragMin, goDragMax)
self.nInitSortingOrder = nSortOrder
self.goDragMin = goDragMin
self.goDragMax = goDragMax
end
function BoardSortCtrl:RefreshSortItem(nId, nIndex)
self.bEmpty = nId == nil
self.nId = nId
self.nIndex = nIndex
self.nItemHeight = self.gameObject:GetComponent("RectTransform").rect.height
self.nItemWidth = self.gameObject:GetComponent("RectTransform").rect.width
self._mapNode.goEmpty.gameObject:SetActive(nil == nId)
self._mapNode.itemChar.gameObject:SetActive(nil ~= nId)
self._mapNode.eventDrag:SetDragEnable(not self.bEmpty)
if nil ~= nId then
self._mapNode.itemChar:SetItemSortData(nId, nIndex)
end
if nil ~= self.tweener then
self.tweener:Kill()
self.tweener = nil
end
self._mapNode.trSortItem.localPosition = Vector3(0, 0, 0)
self.itemCanvas = self.gameObject:GetComponent("Canvas")
NovaAPI.SetCanvasOverrideSorting(self.itemCanvas, false)
self._mapNode.rayDragEvent.gameObject:SetActive(false)
end
function BoardSortCtrl:GetItemBtnInstanceId()
return self._mapNode.rayDragEvent.gameObject:GetInstanceID()
end
function BoardSortCtrl:PlayItemMoveAnim(nIndex)
local nEndPosX = (self.nItemWidth + item_spacing) * (nIndex - self.nIndex)
local endPos = Vector2(nEndPosX, 0)
self.tweener = self._mapNode.trSortItem:DOAnchorPos(endPos, 0.1):SetUpdate(true)
end
function BoardSortCtrl:SetItemPos(dragPos)
local localPos = GameUIUtils.ScreenPointToLocalPoint(dragPos, self.gameObject.transform)
localPos.x = clamp(localPos.x, self.nDragMinPosX, self.nDragMaxPosX)
self._mapNode.trSortItem.localPosition = Vector3(localPos.x, self.nItemHeight * 0.25, 0)
end
function BoardSortCtrl:CalDragRange()
if nil == self.nDragMinPosX or nil == self.nDragMaxPosX then
local transform = self.gameObject:GetComponent("Transform")
self.nDragMinPosX = transform:InverseTransformPoint(self.goDragMin.position).x + item_Width / 2
self.nDragMaxPosX = transform:InverseTransformPoint(self.goDragMax.position).x - item_Width / 2
end
end
function BoardSortCtrl:OnUIDrag_Drag(mDrag)
if mDrag.DragEventType == AllEnum.UIDragType.DragStart then
self.nLastPointerInsId = nil
self:CalDragRange()
self:SetItemPos(mDrag.EventData.position)
self._mapNode.raySortItem.enabled = false
self._mapNode.rayDragEvent.enabled = false
EventManager.Hit(EventId.BoardItemDragStart, self.gameObject:GetInstanceID())
elseif mDrag.DragEventType == AllEnum.UIDragType.Drag then
self:SetItemPos(mDrag.EventData.position)
local pointerObj = mDrag.EventData.pointerCurrentRaycast
if nil ~= pointerObj and nil ~= pointerObj.gameObject then
local nPointerInsId = pointerObj.gameObject:GetInstanceID()
if nPointerInsId ~= self.nLastPointerInsId then
self.nLastPointerInsId = nPointerInsId
EventManager.Hit(EventId.BoardItemDragging, self:GetItemBtnInstanceId(), nPointerInsId)
end
end
elseif mDrag.DragEventType == AllEnum.UIDragType.DragEnd then
EventManager.Hit(EventId.BoardSelectItem, self.nId)
EventManager.Hit(EventId.BoardItemDragEnd)
NovaAPI.SetCanvasOverrideSorting(self.itemCanvas, false)
NovaAPI.SetCanvasSortingOrder(self.itemCanvas, self.nInitSortingOrder)
self._mapNode.raySortItem.enabled = true
self._mapNode.rayDragEvent.enabled = true
end
end
function BoardSortCtrl:OnBtnClick_SortItem()
EventManager.Hit(EventId.BoardSelectItem, self.nId)
end
function BoardSortCtrl:OnBoardItemDragStart(objInsId)
self._mapNode.rayDragEvent.gameObject:SetActive(true)
NovaAPI.SetCanvasOverrideSorting(self.itemCanvas, true)
NovaAPI.SetCanvasSortingName(self.itemCanvas, AllEnum.SortingLayerName.UI)
if self.gameObject:GetInstanceID() ~= objInsId then
NovaAPI.SetCanvasSortingOrder(self.itemCanvas, self.nInitSortingOrder + 1)
else
NovaAPI.SetCanvasSortingOrder(self.itemCanvas, self.nInitSortingOrder + 2)
end
end
function BoardSortCtrl:OnBoardItemDragEnd()
NovaAPI.SetCanvasSortingOrder(self.itemCanvas, self.nInitSortingOrder + 1)
self._mapNode.rayDragEvent.gameObject:SetActive(false)
end
return BoardSortCtrl
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,28 @@
local ChooseHomePageRolePanel = class("ChooseHomePageRolePanel", BasePanel)
ChooseHomePageRolePanel._tbDefine = {
{
sPrefabPath = "MainViewBoard/ChooseHomePageRolePanel.prefab",
sCtrlName = "Game.UI.MainViewBoard.ChooseHomePageRoleCtrl"
}
}
function ChooseHomePageRolePanel:Awake()
self.nSelectCharId = nil
self.nSelectOutfitId = nil
self.nSelectType = nil
self.nSelectId = nil
end
function ChooseHomePageRolePanel:OnEnable()
end
function ChooseHomePageRolePanel:OnAfterEnter()
end
function ChooseHomePageRolePanel:OnDisable()
end
function ChooseHomePageRolePanel:OnDestroy()
self.nSelectCharId = nil
self.nSelectOutfitId = nil
self.nSelectType = nil
self.nSelectId = nil
end
function ChooseHomePageRolePanel:OnRelease()
end
return ChooseHomePageRolePanel
@@ -0,0 +1,261 @@
local ChooseHomePageSkinCtrl = class("ChooseHomePageSkinCtrl", BaseCtrl)
local PlayerCharSkinData = PlayerData.CharSkin
local Actor2DManager = require("Game.Actor2D.Actor2DManager")
local tableInsert = table.insert
ChooseHomePageSkinCtrl._mapNodeConfig = {
TopBar = {
sNodeName = "TopBarPanel",
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
},
rawImgActor2D = {
sNodeName = "----Actor2D----",
sComponentName = "RawImage"
},
animRoot = {
sNodeName = "----SafeAreaRoot----",
sComponentName = "Animator"
},
sv = {
sComponentName = "LoopScrollView"
},
trSv = {sNodeName = "sv", sComponentName = "Transform"},
btnGotoBuy = {
sComponentName = "UIButton",
callback = "OnBtnClick_GotoBuy"
},
btnUseSkin = {
sComponentName = "UIButton",
callback = "OnBtnClick_UseSkin"
},
txtBtnUseSkin = {
sComponentName = "TMP_Text",
sLanguageId = "Board_Use_Skin"
},
btnGotoAdvance = {
sComponentName = "UIButton",
callback = "OnBtnClick_GotoAdvance"
},
txtBtnGotoAdvance = {
sComponentName = "TMP_Text",
sLanguageId = "Board_Skin_Advance"
},
txtBtnGotoBuy = {
sComponentName = "TMP_Text",
sLanguageId = "Board_Skin_Buy"
},
txtSkinEquipped = {sComponentName = "TMP_Text"},
txtSkinName = {sComponentName = "TMP_Text"},
goFavorCGLockTip = {},
txtLockTip = {
sComponentName = "TMP_Text",
sLanguageId = "Board_Skin_CG_Lock"
},
imgEquipped = {}
}
ChooseHomePageSkinCtrl._mapEventConfig = {
[EventId.UIBackConfirm] = "OnBtnClick_Back",
[EventId.UIHomeConfirm] = "OnEvent_Home"
}
function ChooseHomePageSkinCtrl:SortSkinList()
self.tbSortSkinList = {}
for _, v in pairs(self.tbSkinList) do
if true == v:CheckSkinShow() or true == v:CheckUnlock() then
tableInsert(self.tbSortSkinList, v)
end
end
table.sort(self.tbSortSkinList, function(a, b)
return a:GetId() < b:GetId()
end)
end
function ChooseHomePageSkinCtrl:RefreshSelectSkinInfo()
local skinData = self.tbSortSkinList[self.nSelectIndex]
if nil == skinData then
return
end
self._mapNode.goFavorCGLockTip.gameObject:SetActive(false)
local skinCfg = skinData:GetCfgData()
self.nSkinId = skinData:GetId()
NovaAPI.SetTMPText(self._mapNode.txtSkinName, skinCfg.Name)
self._mapNode.btnGotoBuy.gameObject:SetActive(false)
self._mapNode.btnGotoAdvance.gameObject:SetActive(false)
self._mapNode.btnUseSkin.gameObject:SetActive(self.nSkinId ~= self.nUsingSkinId and skinData:CheckUnlock())
self._mapNode.imgEquipped.gameObject:SetActive(skinData:CheckUnlock() and self.nSkinId == self.nUsingSkinId)
local bEquipped = self.nSkinId == self.nUsingSkinId and skinData:CheckUnlock()
local bNotHave = not skinData:CheckUnlock() and self.nSkinId ~= self.nUsingSkinId and skinCfg.SourceDesc ~= nil
self._mapNode.imgEquipped.gameObject:SetActive(bEquipped or bNotHave)
if bNotHave then
local sText = AllEnum.CharSkinSource[skinCfg.SourceDesc]
if sText ~= nil then
NovaAPI.SetTMPText(self._mapNode.txtSkinEquipped, ConfigTable.GetUIText(sText))
else
self._mapNode.imgEquipped.gameObject:SetActive(false)
end
else
NovaAPI.SetTMPText(self._mapNode.txtSkinEquipped, ConfigTable.GetUIText("Skin_Equipped"))
end
self:RefreshActor2D()
end
function ChooseHomePageSkinCtrl:RefreshActor2D()
Actor2DManager.SetActor2D(self:GetPanelId(), self._mapNode.rawImgActor2D, self.nCharId, self.nSkinId)
end
function ChooseHomePageSkinCtrl:OnGridRefresh(goGrid, gridIndex)
local nIndex = gridIndex + 1
local nInstanceId = goGrid:GetInstanceID()
if not self.tbGridCtrl[nInstanceId] then
self.tbGridCtrl[nInstanceId] = self:BindCtrlByNode(goGrid, "Game.UI.TemplateEx.TemplateSkinCtrl")
end
self.tbGridCtrl[nInstanceId]:SetSkinData(self.tbSortSkinList[nIndex], false)
self.tbGridCtrl[nInstanceId]:RefreshChoseSkin(self.nUsingSkinId)
if self.nSelectIndex == nil and self.nUsingSkinId == self.tbSortSkinList[nIndex]:GetId() then
self.nSelectIndex = nIndex
end
if nIndex == self.nSelectIndex then
self.tbGridCtrl[nInstanceId]:SetSelect(true)
self:RefreshSelectSkinInfo()
end
end
function ChooseHomePageSkinCtrl:OnGridBtnClick(goGrid, gridIndex)
local nIndex = gridIndex + 1
local nInstanceId = goGrid:GetInstanceID()
local goSelect = self._mapNode.trSv:Find("Viewport/Content/" .. self.nSelectIndex - 1)
if goSelect then
self.tbGridCtrl[goSelect.gameObject:GetInstanceID()]:SetSelect(false)
end
self.tbGridCtrl[nInstanceId]:SetSelect(true)
self.nSelectIndex = nIndex
self._mapNode.sv:SetScrollGridPos(nIndex - 1, 0.1, 0)
self:RefreshSelectSkinInfo()
end
function ChooseHomePageSkinCtrl:ClosePanel()
EventManager.Hit(EventId.ClosePanel, PanelId.ChooseHomePageSkinPanel)
end
function ChooseHomePageSkinCtrl:BackToHome()
if nil == self.tbTmpSelectList or nil == next(self.tbTmpSelectList) then
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Board_Select_Empty"))
return
end
local sucCallback = function()
PanelManager.Home()
end
PlayerData.Board:SendBoardSet(sucCallback)
end
function ChooseHomePageSkinCtrl:Awake()
self.nSelectIndex = nil
local param = self:GetPanelParam()
if type(param) == "table" then
self.nCharId = param[1]
self.nUsingSkinId = param[2]
self.tbTmpSelectList = param[3]
end
end
function ChooseHomePageSkinCtrl:FadeIn()
self._mapNode.animRoot:Play("ChooseHomePageSkin_in")
end
function ChooseHomePageSkinCtrl:OnEnable()
self.tbGridCtrl = {}
self.tbSkinList = PlayerCharSkinData:GetSkinListByCharacterId(self.nCharId)
self:SortSkinList()
self._mapNode.sv:Init(#self.tbSortSkinList, self, self.OnGridRefresh, self.OnGridBtnClick)
self._mapNode.sv:SetScrollGridPos(self.nSelectIndex - 1, 0)
end
function ChooseHomePageSkinCtrl:FadeOut()
local nAnimTime = NovaAPI.GetAnimClipLength(self._mapNode.animRoot, {
"ChooseHomePageSkin_out"
})
self._mapNode.animRoot:Play("ChooseHomePageSkin_out")
return nAnimTime
end
function ChooseHomePageSkinCtrl:OnDisable()
Actor2DManager.UnsetActor2D()
for nInstanceId, objCtrl in pairs(self.tbGridCtrl) do
self:UnbindCtrlByNode(objCtrl)
self.tbGridCtrl[nInstanceId] = nil
end
self.tbGridCtrl = {}
end
function ChooseHomePageSkinCtrl:OnDestroy()
self.tbSkinList = nil
self.tbSortSkinList = nil
self.tbGridCtrl = nil
end
function ChooseHomePageSkinCtrl:OnBtnClick_GotoBuy()
end
function ChooseHomePageSkinCtrl:OnBtnClick_UseSkin()
self.nUsingSkinId = self.nSkinId
for nInstanceId, objCtrl in pairs(self.tbGridCtrl) do
self:UnbindCtrlByNode(objCtrl)
self.tbGridCtrl[nInstanceId] = nil
end
self._mapNode.sv:Init(#self.tbSortSkinList, self, self.OnGridRefresh, self.OnGridBtnClick)
self._mapNode.sv:SetScrollGridPos(self.nSelectIndex - 1, 0, 0)
self:RefreshSelectSkinInfo()
local skinData = self.tbSkinList[self.nUsingSkinId]
if nil ~= skinData then
local handbookId = skinData:GetHandbookId()
PlayerData.Board:ChangeTmpCharSkin(self.nCharId, handbookId)
end
Actor2DManager.SetActor2DTypeByPanel(PanelId.MainView, self.nCharId, AllEnum.Actor2DType.Normal)
self:ClosePanel()
end
function ChooseHomePageSkinCtrl:OnBtnClick_GotoAdvance()
EventManager.Hit(EventId.OpenPanel, PanelId.CharBgPanel, PanelId.CharInfo, self.nCharId)
end
function ChooseHomePageSkinCtrl:OnBtnClick_Back(nPanelId)
if self._panel._nPanelId ~= nPanelId then
return
end
if self.nUsingSkinId ~= self.nSkinId then
local skinData = self.tbSortSkinList[self.nSelectIndex]
if skinData:CheckUnlock() then
self.nUsingSkinId = self.nSkinId
local msg = {
nType = AllEnum.MessageBox.Confirm,
sContent = ConfigTable.GetUIText("Board_Change_Skin"),
callbackConfirm = function()
local skinData = self.tbSkinList[self.nUsingSkinId]
if nil ~= skinData then
local handbookId = skinData:GetHandbookId()
PlayerData.Board:ChangeTmpCharSkin(self.nCharId, handbookId)
end
self:ClosePanel()
end,
callbackCancel = function()
self:ClosePanel()
end
}
EventManager.Hit(EventId.OpenMessageBox, msg)
return
end
end
self:ClosePanel()
end
function ChooseHomePageSkinCtrl:OnEvent_Home(nPanelId)
if self._panel._nPanelId ~= nPanelId then
return
end
if self.nUsingSkinId ~= self.nSkinId then
local skinData = self.tbSortSkinList[self.nSelectIndex]
if skinData:CheckUnlock() then
self.nUsingSkinId = self.nSkinId
local msg = {
nType = AllEnum.MessageBox.Confirm,
sContent = ConfigTable.GetUIText("Board_Change_Skin"),
callbackConfirm = function()
local skinData = self.tbSkinList[self.nUsingSkinId]
if nil ~= skinData then
local handbookId = skinData:GetHandbookId()
PlayerData.Board:ChangeTmpCharSkin(self.nCharId, handbookId)
end
self:BackToHome()
end,
callbackCancel = function()
self:BackToHome()
end
}
EventManager.Hit(EventId.OpenMessageBox, msg)
return
end
end
self:BackToHome()
end
return ChooseHomePageSkinCtrl
@@ -0,0 +1,8 @@
local ChooseHomePageSkinPanel = class("ChooseHomePageSkinPanel", BasePanel)
ChooseHomePageSkinPanel._tbDefine = {
{
sPrefabPath = "MainViewBoard/ChooseHomePageSkinPanel.prefab",
sCtrlName = "Game.UI.MainViewBoard.ChooseHomePageSkinCtrl"
}
}
return ChooseHomePageSkinPanel