252 lines
4.9 KiB
Lua
252 lines
4.9 KiB
Lua
|
|
local phaseBase = require_ex('Phase/Core/PhaseBase')
|
|
local PHASE_ID = PhaseId.SNS
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PhaseSNS = HL.Class('PhaseSNS', phaseBase.PhaseBase)
|
|
|
|
local SNS_BASIC_PANEL_ID = PanelId.SNSBasic
|
|
local SNS_BARKER_PANEL_ID = PanelId.SNSBarker
|
|
local SNS_MISSION_PANEL_ID = PanelId.SNSMission
|
|
local SNS_FRIEND_PANEL_ID = PanelId.SNSFriend
|
|
|
|
|
|
PhaseSNS.m_basicPanelItem = HL.Field(HL.Forward("PhasePanelItem"))
|
|
|
|
|
|
PhaseSNS.m_curPanelItem = HL.Field(HL.Forward("PhasePanelItem"))
|
|
|
|
|
|
PhaseSNS.m_panelId2Item = HL.Field(HL.Table)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PhaseSNS.s_messages = HL.StaticField(HL.Table) << {
|
|
}
|
|
|
|
|
|
PhaseSNS.s_prePanelId = HL.StaticField(HL.Number) << -1
|
|
|
|
|
|
|
|
|
|
PhaseSNS._OnInit = HL.Override() << function(self)
|
|
PhaseSNS.Super._OnInit(self)
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PhaseSNS._DoPhaseTransitionIn = HL.Override(HL.Boolean, HL.Opt(HL.Table)) << function(self, fastMode, args)
|
|
self.m_panelId2Item = {}
|
|
|
|
local defaultPanelId
|
|
if not self.arg then
|
|
defaultPanelId = PhaseSNS.s_prePanelId > 0 and PhaseSNS.s_prePanelId or SNS_BARKER_PANEL_ID
|
|
elseif not string.isEmpty(self.arg.dialogId) then
|
|
local dialogId = self.arg.dialogId
|
|
local isMissionRelated = not string.isEmpty(Tables.sNSDialogTable[dialogId].relatedMissionId)
|
|
if isMissionRelated then
|
|
defaultPanelId = SNS_MISSION_PANEL_ID
|
|
else
|
|
defaultPanelId = SNS_BARKER_PANEL_ID
|
|
end
|
|
elseif not string.isEmpty(self.arg.roleId) then
|
|
defaultPanelId = SNS_FRIEND_PANEL_ID
|
|
else
|
|
logger.error("invalid open phase params")
|
|
end
|
|
|
|
self.m_basicPanelItem = self:CreatePhasePanelItem(SNS_BASIC_PANEL_ID, { defaultPanelId })
|
|
local defaultPanelItem = self:CreatePhasePanelItem(defaultPanelId, self.arg)
|
|
self.m_panelId2Item[defaultPanelId] = defaultPanelItem
|
|
self.m_curPanelItem = defaultPanelItem
|
|
local uiCtrl = defaultPanelItem.uiCtrl
|
|
if HL.TryGet(uiCtrl, "OnSwitchOn") then
|
|
uiCtrl:OnSwitchOn(true)
|
|
end
|
|
|
|
PhaseSNS.s_prePanelId = defaultPanelId
|
|
self:_BindControllerHintPlaceHolder()
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
PhaseSNS._DoPhaseTransitionOut = HL.Override(HL.Boolean, HL.Opt(HL.Table)) << function(self, fastMode, args)
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
PhaseSNS._DoPhaseTransitionBehind = HL.Override(HL.Boolean, HL.Opt(HL.Table)) << function(self, fastMode, args)
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
PhaseSNS._DoPhaseTransitionBackToTop = HL.Override(HL.Boolean, HL.Opt(HL.Table)) << function(self, fastMode, args)
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PhaseSNS._OnActivated = HL.Override() << function(self)
|
|
end
|
|
|
|
|
|
|
|
PhaseSNS._OnDeActivated = HL.Override() << function(self)
|
|
end
|
|
|
|
|
|
|
|
PhaseSNS._OnDestroy = HL.Override() << function(self)
|
|
PhaseSNS.Super._OnDestroy(self)
|
|
end
|
|
|
|
|
|
|
|
PhaseSNS._OnRefresh = HL.Override() << function(self)
|
|
local isFriendSChat = false
|
|
for panelId, item in pairs(self.m_panel2Item) do
|
|
if self.m_curPanelItem == item and panelId == SNS_FRIEND_PANEL_ID then
|
|
isFriendSChat = true
|
|
end
|
|
end
|
|
|
|
if isFriendSChat then
|
|
self.m_curPanelItem.uiCtrl:OnClickOpenFriendChat({self.arg.roleId})
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
logger.warn("PhaseSNS._OnRefresh fail")
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PhaseSNS.OnTabChange = HL.Method(HL.Table) << function(self, args)
|
|
local panelId = args.panelId
|
|
if not panelId then
|
|
return
|
|
end
|
|
|
|
local prePanelItem = self.m_curPanelItem
|
|
if prePanelItem then
|
|
prePanelItem.uiCtrl:Hide()
|
|
local preUICtrl = prePanelItem.uiCtrl
|
|
if HL.TryGet(preUICtrl, "OnSwitchOn") then
|
|
preUICtrl:OnSwitchOn(false)
|
|
end
|
|
end
|
|
|
|
local panelItem
|
|
local needContinue = self.m_panel2Item[panelId] ~= nil
|
|
if self.m_panelId2Item[panelId] then
|
|
panelItem = self.m_panelId2Item[panelId]
|
|
panelItem.uiCtrl:Show()
|
|
else
|
|
panelItem = self:CreatePhasePanelItem(panelId)
|
|
self.m_panelId2Item[panelId] = panelItem
|
|
end
|
|
|
|
local uiCtrl = panelItem.uiCtrl
|
|
if needContinue and HL.TryGet(uiCtrl, "TryContinueDialog") then
|
|
uiCtrl:TryContinueDialog()
|
|
end
|
|
|
|
if HL.TryGet(uiCtrl, "OnSwitchOn") then
|
|
uiCtrl:OnSwitchOn(true)
|
|
end
|
|
|
|
self.m_curPanelItem = panelItem
|
|
PhaseSNS.s_prePanelId = panelId
|
|
|
|
self:_BindControllerHintPlaceHolder()
|
|
end
|
|
|
|
|
|
|
|
PhaseSNS._BindControllerHintPlaceHolder = HL.Method() << function(self)
|
|
if not DeviceInfo.usingController then
|
|
return
|
|
end
|
|
|
|
if not self.m_basicPanelItem or not self.m_curPanelItem then
|
|
return
|
|
end
|
|
|
|
|
|
local basicCtrl = self.m_basicPanelItem.uiCtrl
|
|
local curCtrl = self.m_curPanelItem.uiCtrl
|
|
if curCtrl then
|
|
curCtrl.view.controllerHintPlaceholder:InitControllerHintPlaceholder({ basicCtrl.view.inputGroup.groupId,
|
|
curCtrl.view.inputGroup.groupId, })
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PhaseSNS.OnSNSBarkerContentCoreFocus = HL.Method(HL.Boolean) << function(self, isOn)
|
|
|
|
local ctrl = self.m_basicPanelItem.uiCtrl
|
|
ctrl:ToggleTitleBindGroup(not isOn)
|
|
end
|
|
|
|
|
|
|
|
|
|
PhaseSNS.ToggleBasicPanelCloseBtn = HL.Method(HL.Boolean) << function(self, isOn)
|
|
|
|
local ctrl = self.m_basicPanelItem.uiCtrl
|
|
ctrl:ToggleCloseBtn(isOn)
|
|
end
|
|
|
|
|
|
|
|
HL.Commit(PhaseSNS)
|
|
|