235 lines
7.8 KiB
Lua
235 lines
7.8 KiB
Lua
|
|
local uiCtrl = require_ex('UI/Panels/Base/UICtrl')
|
|
local PANEL_ID = PanelId.FriendBusinessCardPreview
|
|
local PHASE_ID = PhaseId.FriendBusinessCardPreview
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FriendBusinessCardPreviewCtrl = HL.Class('FriendBusinessCardPreviewCtrl', uiCtrl.UICtrl)
|
|
|
|
|
|
|
|
|
|
FriendBusinessCardPreviewCtrl.TryStartBusinessCardPreview = HL.StaticMethod(HL.Table) << function(arg)
|
|
if arg and arg.roleId then
|
|
|
|
local id = arg.roleId
|
|
if id == GameInstance.player.roleId then
|
|
UIManager:Open(PanelId.FriendBusinessCardPreview, { roleId = id })
|
|
return
|
|
end
|
|
|
|
if GameInstance.player.friendSystem:PlayerInBlackList(id) then
|
|
Notify(MessageConst.SHOW_TOAST, Language.LUA_FRIEND_TIP_IN_BLACK_LIST_CANNOT_VIEW_BUSINESS_CARD)
|
|
return
|
|
end
|
|
|
|
|
|
if FriendUtils.isPsnPlatform() and GameInstance.player.friendSystem.isPSNOnly and not GameInstance.player.friendSystem:IsPsnFriend(id) then
|
|
Notify(MessageConst.SHOW_TOAST, Language.LUA_FRIEND_TIP_PSN_BUSINESS_CARD)
|
|
return
|
|
end
|
|
|
|
|
|
if GameInstance.player.friendSystem.isCommunicationRestricted then
|
|
Notify(MessageConst.SHOW_TOAST, Language.LUA_FRIEND_TIP_PARENTAL_CONTROL_BUSINESS_CARD)
|
|
return
|
|
end
|
|
|
|
logger.info('FriendBusinessCardPreviewCtrl.TryStartBusinessCardPreview: Syncing friend info for roleId: ' .. arg.roleId)
|
|
GameInstance.player.friendSystem:SyncFriendInfoById(arg.roleId, function()
|
|
if arg.isPhase == nil or arg.isPhase == true then
|
|
PhaseManager:GoToPhase(PHASE_ID, arg)
|
|
else
|
|
UIManager:Open(PANEL_ID, arg)
|
|
end
|
|
end)
|
|
else
|
|
logger.error('FriendBusinessCardPreviewCtrl.TryStartBusinessCardPreview: roleId is required in arg')
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FriendBusinessCardPreviewCtrl.s_messages = HL.StaticField(HL.Table) << {
|
|
[MessageConst.ON_FRIEND_BUSINESS_INFO_CHANGE] = 'OnFriendBusinessInfoChange',
|
|
}
|
|
|
|
|
|
FriendBusinessCardPreviewCtrl.m_roleId = HL.Field(HL.Number) << 0
|
|
|
|
|
|
FriendBusinessCardPreviewCtrl.m_panel = HL.Field(HL.Userdata)
|
|
|
|
|
|
FriendBusinessCardPreviewCtrl.m_businessCard = HL.Field(HL.Forward('FriendBusinessCard'))
|
|
|
|
|
|
FriendBusinessCardPreviewCtrl.m_forceShare = HL.Field(HL.Boolean) << false
|
|
|
|
|
|
|
|
|
|
|
|
FriendBusinessCardPreviewCtrl.OnCreate = HL.Override(HL.Any) << function(self, arg)
|
|
|
|
self.view.controllerHintPlaceholder:InitControllerHintPlaceholder({ self.view.inputGroup.groupId })
|
|
|
|
self.view.btnClose.onClick:RemoveAllListeners()
|
|
self.view.btnClose.onClick:AddListener(function()
|
|
self:_Close()
|
|
end)
|
|
|
|
self.view.shareBtn.onClick:RemoveAllListeners()
|
|
self.view.shareBtn.onClick:AddListener(function()
|
|
|
|
self.view.btnClose.gameObject:SetActive(false)
|
|
self.view.shareBtn.gameObject:SetActive(false)
|
|
local beforeSize = self.view.mask2d.transform.sizeDelta
|
|
local beforeAnchorMin = self.view.mask2d.transform.anchorMin
|
|
local beforeAnchorMax = self.view.mask2d.transform.anchorMax
|
|
local beforePivot = self.view.mask2d.transform.pivot
|
|
local beforePos = self.view.mask2d.transform.anchoredPosition
|
|
local beforeScale = self.view.businessCardScale.localScale
|
|
self.view.mask2d.enabled = false
|
|
self.view.mask2d.transform.anchoredPosition = Vector2.zero
|
|
self.view.mask2d.transform.sizeDelta = Vector2.zero
|
|
self.view.mask2d.transform.anchorMin = Vector2.zero
|
|
self.view.mask2d.transform.anchorMax = Vector2.one
|
|
self.view.mask2d.transform.pivot = Vector2(0.5, 0.5)
|
|
self.view.businessCardScale.localScale = Vector3.one
|
|
|
|
Notify(MessageConst.SHOW_COMMON_SHARE_PANEL, {
|
|
type = "BusinessCard",
|
|
showPlayerInfo = false,
|
|
showPlayerInfoToggle = false,
|
|
needEdge = false,
|
|
onCaptureEnd = function()
|
|
|
|
self.view.btnClose.gameObject:SetActive(true)
|
|
self.view.shareBtn.gameObject:SetActive(true)
|
|
self.view.mask2d.enabled = true
|
|
self.view.mask2d.transform.sizeDelta = beforeSize
|
|
self.view.mask2d.transform.anchorMin = beforeAnchorMin
|
|
self.view.mask2d.transform.anchorMax = beforeAnchorMax
|
|
self.view.mask2d.transform.pivot = beforePivot
|
|
self.view.mask2d.transform.anchoredPosition = beforePos
|
|
self.view.businessCardScale.localScale = beforeScale
|
|
if arg.forceShare == true then
|
|
self:_Close()
|
|
end
|
|
end,
|
|
})
|
|
end)
|
|
|
|
if arg and arg.roleId then
|
|
self.m_roleId = arg.roleId
|
|
else
|
|
logger.error('FriendBusinessCardRootCtrl.OnCreate: roleId is required in arg')
|
|
return
|
|
end
|
|
|
|
local fullScreen = arg.fullScreen ~= false
|
|
if fullScreen then
|
|
self.view.mask2d.enabled = false
|
|
self.view.mask2d.transform.anchoredPosition = Vector2.zero
|
|
self.view.mask2d.transform.sizeDelta = Vector2.zero
|
|
self.view.mask2d.transform.anchorMin = Vector2.zero
|
|
self.view.mask2d.transform.anchorMax = Vector2.one
|
|
self.view.mask2d.transform.pivot = Vector2(0.5, 0.5)
|
|
self.view.businessCardScale.transform.anchoredPosition = Vector2.zero
|
|
self.view.businessCardScale.localScale = Vector3.one
|
|
self.view.businessCardScale.transform.sizeDelta = Vector2.zero
|
|
self.view.shareBtn.gameObject:SetActive(false)
|
|
end
|
|
|
|
|
|
self.view.shareBtn.gameObject:SetActive(self.m_roleId == GameInstance.player.roleId and not GameInstance.player.friendSystem.isCommunicationRestricted)
|
|
|
|
local success , friendInfo = GameInstance.player.friendSystem:TryGetFriendInfo(self.m_roleId)
|
|
if not success then
|
|
logger.error('FriendBusinessCardRootCtrl.OnCreate: Failed to get friend info for roleId: ' .. self.m_roleId)
|
|
|
|
friendInfo = GameInstance.player.friendSystem.SelfInfo
|
|
end
|
|
|
|
if self.m_panel then
|
|
CSUtils.ClearUIComponents(self.m_panel)
|
|
GameObject.DestroyImmediate(self.m_panel)
|
|
end
|
|
|
|
local businessCardId = friendInfo.businessCardTopicId
|
|
|
|
if businessCardId == nil or businessCardId == '' then
|
|
logger.error('FriendBusinessCardRootCtrl.OnCreate: businessCardId is nil or empty for roleId: ' .. self.m_roleId)
|
|
return
|
|
end
|
|
|
|
local success, cfg = Tables.businessCardTopicTable:TryGetValue(businessCardId)
|
|
|
|
if not success then
|
|
logger.error('FriendBusinessCardRootCtrl.OnCreate: Failed to get business card config for id: ' .. businessCardId)
|
|
return
|
|
end
|
|
|
|
local path = string.format(UIConst.UI_BUSINESS_CARD_PREFAB_PATH , cfg.panelPrefab)
|
|
local prefab = self:LoadGameObject(path)
|
|
|
|
self.m_panel = CSUtils.CreateObject(prefab, self.view.businessCardScale)
|
|
|
|
self.m_businessCard = Utils.wrapLuaNode(self.m_panel)
|
|
self.m_forceShare = arg.forceShare == true
|
|
self.m_businessCard:InitFriendBusinessCard(self.m_roleId, true ,self.m_forceShare)
|
|
self.m_businessCard.m_bId = arg.bId
|
|
if arg.forceShare == true then
|
|
self.animationWrapper:SampleClip(self.animationWrapper.animationIn.name, self.animationWrapper.animationIn.length);
|
|
self.view.shareBtn.onClick:Invoke(nil)
|
|
else
|
|
self.m_businessCard.view.animationWrapper:PlayInAnimation()
|
|
end
|
|
end
|
|
|
|
|
|
|
|
FriendBusinessCardPreviewCtrl.OnFriendBusinessInfoChange = HL.Method() << function(self)
|
|
self.m_businessCard:InitFriendBusinessCard(self.m_roleId, true ,self.m_forceShare)
|
|
end
|
|
|
|
|
|
|
|
FriendBusinessCardPreviewCtrl._Close = HL.Method() << function(self)
|
|
if PhaseManager:IsOpen(PHASE_ID) then
|
|
PhaseManager:PopPhase(PHASE_ID)
|
|
else
|
|
self:PlayAnimationOutAndClose()
|
|
end
|
|
end
|
|
|
|
|
|
|
|
FriendBusinessCardPreviewCtrl.OnShow = HL.Override() << function(self)
|
|
self.m_businessCard:InitFriendBusinessCard(self.m_roleId, true ,self.m_forceShare)
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HL.Commit(FriendBusinessCardPreviewCtrl)
|