Files
SL1900 5e0d58cfad 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
2025-12-03 01:00:00 +09:00

252 lines
7.0 KiB
Lua

local FriendCtrl = class("FriendCtrl", BaseCtrl)
local Actor2DManager = require("Game.Actor2D.Actor2DManager")
local Tog = {
Info = 1,
List = 2,
Request = 3
}
local AnimName = {
[1] = "FriendPanel_Info_",
[2] = "FriendPanel_List_",
[3] = "FriendPanel_Request_"
}
FriendCtrl._mapNodeConfig = {
TopBar = {
sNodeName = "TopBarPanel",
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
},
tog = {
nCount = 3,
sComponentName = "UIButton",
callback = "OnBtnClick_ChangeSheet"
},
ctrlTog = {
nCount = 3,
sNodeName = "tog",
sCtrlName = "Game.UI.TemplateEx.TemplateToggleCtrl"
},
blur = {
sNodeName = "t_fullscreen_blur_blue"
},
aniBlur = {
sNodeName = "t_fullscreen_blur_blue",
sComponentName = "Animator"
},
animRoot = {
sNodeName = "----SafeAreaRoot----",
sComponentName = "Animator"
},
btnBlur = {
sNodeName = "snapshot",
sComponentName = "Button",
callback = "OnBtnClick_ClosePop"
},
trActor2D_PNG = {
sNodeName = "----Actor2D_PNG----",
sComponentName = "Transform"
},
Info = {
sNodeName = "---Info---",
sCtrlName = "Game.UI.FriendEx.FriendInfoCtrl"
},
List = {
sNodeName = "---List---",
sCtrlName = "Game.UI.FriendEx.FriendListCtrl"
},
Request = {
sNodeName = "---Request---",
sCtrlName = "Game.UI.FriendEx.FriendRequestCtrl"
},
Rename = {
sNodeName = "---Rename---",
sCtrlName = "Game.UI.FriendEx.FriendRenameCtrl"
},
Head = {
sNodeName = "---Head---",
sCtrlName = "Game.UI.FriendEx.FriendHeadCtrl"
},
Search = {
sNodeName = "---Search---",
sCtrlName = "Game.UI.FriendEx.FriendSearchCtrl"
},
Title = {
sNodeName = "---Title---",
sCtrlName = "Game.UI.FriendEx.FriendTitleCtrl"
},
Signature = {
sNodeName = "---Signature---",
sCtrlName = "Game.UI.FriendEx.FriendSignatureCtrl"
},
Member = {
sNodeName = "---Member---",
sCtrlName = "Game.UI.FriendEx.FriendMemberCtrl"
},
Portrait = {
sNodeName = "---Portrait---",
sCtrlName = "Game.UI.FriendEx.FriendPortraitCtrl"
},
Recommend = {
sNodeName = "---Recommend---",
sCtrlName = "Game.UI.FriendEx.FriendRecommendCtrl"
},
HonorTitle = {
sNodeName = "---HonorTitle---",
sCtrlName = "Game.UI.FriendEx.FriendHonorTitleCtrl"
},
redDotTog = {nCount = 3}
}
FriendCtrl._mapEventConfig = {
FriendChangeHead = "OnEvent_ChangeHead",
FriendChangeName = "OnEvent_ChangeName",
FriendChangeTitle = "OnEvent_ChangeTitle",
FriendChangeSignature = "OnEvent_ChangeSignature",
FriendChangePortrait = "OnEvent_ChangePortrait",
FriendChangeMember = "OnEvent_ChangeMember",
FriendClosePop = "OnBtnClick_ClosePop",
FriendSearch = "OnEvent_Search",
FriendRecommend = "OnEvent_Recommend",
FriendRefreshActor2D = "OnEvent_RefreshActor2D",
FriendChangeHonorTitle = "OnEvent_ChangeHonorTitle"
}
function FriendCtrl:RegisterRedDot()
RedDotManager.RegisterNode(RedDotDefine.Friend_Info, nil, self._mapNode.redDotTog[1])
RedDotManager.RegisterNode(RedDotDefine.Friend_Energy, nil, self._mapNode.redDotTog[2])
RedDotManager.RegisterNode(RedDotDefine.Friend_Apply, nil, self._mapNode.redDotTog[3])
end
function FriendCtrl:SwitchTog()
if self.nPrevTog ~= nil then
local animPrev = AnimName[self.nPrevTog] .. "out"
self._mapNode.animRoot:Play(animPrev)
local nAnimTime = NovaAPI.GetAnimClipLength(self._mapNode.animRoot, {animPrev})
if self.timerAnim ~= nil then
self.timerAnim:Cancel()
self.timerAnim = nil
end
self.timerAnim = self:AddTimer(1, nAnimTime, function()
self:OpenCtrl()
end, true, true, true)
else
self:OpenCtrl()
end
end
function FriendCtrl:OpenCtrl()
self._mapNode.Info.gameObject:SetActive(self.nCurTog == Tog.Info)
self._mapNode.List.gameObject:SetActive(self.nCurTog == Tog.List)
self._mapNode.Request.gameObject:SetActive(self.nCurTog == Tog.Request)
self._mapNode.trActor2D_PNG.gameObject:SetActive(self.nCurTog == Tog.Info)
if self.nCurTog == Tog.Info then
self._mapNode.Info:Refresh(self._panel.nId)
elseif self.nCurTog == Tog.List then
self._mapNode.List:Refresh()
elseif self.nCurTog == Tog.Request then
self._mapNode.Request:Refresh()
end
if self.nPrevTog ~= nil then
local animCur = AnimName[self.nCurTog] .. "in"
self._mapNode.animRoot:Play(animCur)
end
end
function FriendCtrl:SetDefaultTog()
if self.nCurTog == nil then
self.nCurTog = Tog.Info
end
for i = 1, 3 do
self._mapNode.ctrlTog[i]:SetDefault(i == self.nCurTog)
end
self:SwitchTog()
end
function FriendCtrl:RefreshTogText()
self._mapNode.ctrlTog[1]:SetText(ConfigTable.GetUIText("Friend_Tog_Info"))
self._mapNode.ctrlTog[2]:SetText(ConfigTable.GetUIText("Friend_Tog_List"))
self._mapNode.ctrlTog[3]:SetText(ConfigTable.GetUIText("Friend_Tog_Add"))
end
function FriendCtrl:FadeIn(bPlayFadeIn)
EventManager.Hit(EventId.SetTransition)
end
function FriendCtrl:Awake()
self.ctrlPop = nil
self:RefreshTogText()
end
function FriendCtrl:OnEnable()
self:SetDefaultTog()
self:RegisterRedDot()
end
function FriendCtrl:OnDisable()
if self.timerAnim ~= nil then
self.timerAnim:Cancel()
self.timerAnim = nil
end
end
function FriendCtrl:OnDestroy()
end
function FriendCtrl:OnBtnClick_ChangeSheet(btn, nIndex)
if nIndex == self.nCurTog then
return
end
self._mapNode.ctrlTog[nIndex]:SetTrigger(true)
self._mapNode.ctrlTog[self.nCurTog]:SetTrigger(false)
self.nPrevTog = self.nCurTog
self.nCurTog = nIndex
self:SwitchTog()
end
function FriendCtrl:OnEvent_ChangeHead()
self.ctrlPop = self._mapNode.Head
self._mapNode.Head:Open()
self._mapNode.blur:SetActive(true)
end
function FriendCtrl:OnEvent_ChangeName()
self.ctrlPop = self._mapNode.Rename
self._mapNode.Rename:Open()
self._mapNode.blur:SetActive(true)
end
function FriendCtrl:OnEvent_ChangeTitle()
self.ctrlPop = self._mapNode.Title
self._mapNode.Title:Open()
self._mapNode.blur:SetActive(true)
end
function FriendCtrl:OnEvent_ChangeSignature()
self.ctrlPop = self._mapNode.Signature
self._mapNode.Signature:Open()
self._mapNode.blur:SetActive(true)
end
function FriendCtrl:OnEvent_ChangeMember()
self.ctrlPop = self._mapNode.Member
self._mapNode.Member:Open()
self._mapNode.blur:SetActive(true)
end
function FriendCtrl:OnEvent_ChangePortrait()
self.ctrlPop = self._mapNode.Portrait
self._mapNode.Portrait:Open()
self._mapNode.blur:SetActive(true)
end
function FriendCtrl:OnEvent_Search(mapData)
self.ctrlPop = self._mapNode.Search
self._mapNode.Search:Open(mapData)
self._mapNode.blur:SetActive(true)
end
function FriendCtrl:OnEvent_Recommend(mapData)
self.ctrlPop = self._mapNode.Recommend
self._mapNode.Recommend:Open(mapData)
self._mapNode.blur:SetActive(true)
end
function FriendCtrl:OnEvent_ChangeHonorTitle()
self.ctrlPop = self._mapNode.HonorTitle
self._mapNode.HonorTitle:Open()
self._mapNode.blur:SetActive(true)
end
function FriendCtrl:OnBtnClick_ClosePop()
if self.ctrlPop then
self.ctrlPop:PlayOutAni()
self.ctrlPop = nil
end
self._mapNode.aniBlur:SetTrigger("tOut")
self:AddTimer(1, 0.2, function()
self._mapNode.blur:SetActive(false)
end, true, true, true)
EventManager.Hit(EventId.TemporaryBlockInput, 0.2)
end
function FriendCtrl:OnEvent_RefreshActor2D(nCharId, nSkinId)
Actor2DManager.SetActor2D_PNG(self._mapNode.trActor2D_PNG, self:GetPanelId(), nCharId, nSkinId)
end
return FriendCtrl