Major Update - 2.0.0.143
EN: 2.0.0.143 CN: 2.0.0.142 JP: 2.0.0.145 KR: 2.0.0.150
This commit is contained in:
@@ -0,0 +1,879 @@
|
||||
local DormCtrl = class("DormCtrl", BaseCtrl)
|
||||
local ModuleManager = require("GameCore.Module.ModuleManager")
|
||||
local DormGuideUI = require("Game.UI.Dorm.DormGuideUI")
|
||||
local GamepadUIManager = require("GameCore.Module.GamepadUIManager")
|
||||
local WwiseAudioMgr = CS.WwiseAudioManager.Instance
|
||||
DormCtrl._mapNodeConfig = {
|
||||
rtEditorRoot = {
|
||||
sCtrlName = "Game.UI.Dorm.DormEditor.DormEditorCtrl"
|
||||
},
|
||||
rtInteractiveRoot = {
|
||||
sCtrlName = "Game.UI.Dorm.DormInteractive.DormInteractiveCtrl"
|
||||
},
|
||||
rtFriendRoot = {
|
||||
sCtrlName = "Game.UI.Dorm.DormFriend.DormFriendRootCtrl"
|
||||
},
|
||||
CharListRoot = {
|
||||
sCtrlName = "Game.UI.Dorm.DormCharSelect.DormSelectCharCtrl"
|
||||
},
|
||||
btnHomeMain = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "BtnClick_Home"
|
||||
},
|
||||
btnBackMain = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "BtnClick_Back"
|
||||
},
|
||||
btnShowMenu = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "BtnClick_ShowMenu"
|
||||
},
|
||||
btnHideAllUI2 = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "BtnClick_HideAllUI2"
|
||||
},
|
||||
txt_ShowUI = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MainView_ShowUI"
|
||||
},
|
||||
rtMenu = {}
|
||||
}
|
||||
DormCtrl._mapEventConfig = {
|
||||
[EventId.UIBackConfirm] = "OnEvent_Back",
|
||||
[EventId.UIHomeConfirm] = "OnEvent_Home",
|
||||
Dorm_HideUI = "OnEvent_DormHideUI",
|
||||
DormPanel_BtnClickEdit = "OnEvent_EditMode",
|
||||
DormPanel_BtnInteractive = "OnEvent_InteractiveMode",
|
||||
DormPanel_BtnClickObserve = "OnEvent_ObserveMode",
|
||||
DormPanel_BtnClickOperate = "OnEvent_OperateMode",
|
||||
DormPanel_NextRoom = "OnEvent_NextRoom",
|
||||
OnEvent_DormLevelLoadComplete = "OnEvent_DormLevelLoadComplete",
|
||||
DORM_LEVEL_FINISH = "OnEvent_DormLevelFinish",
|
||||
DORM_CS2LUA_SHOW_SELECT_ROME_UI = "OnEvent_SelectRoom",
|
||||
DORM_CS2LUA_SWITCH_NEW_ROOM = "OnEvent_SwitchRoom",
|
||||
DormRoomSelect_ChangeRoomResult = "OnEvent_ChangeRoomResult",
|
||||
DormCharSelectResult = "OnEvent_DormCharSelectResult",
|
||||
DormPanel_OpenSelectChar = "OnEvent_OpenSelectChar",
|
||||
DormUpdatePresetNameSuc = "OnEvent_DormUpdatePresetNameSuc",
|
||||
DormBGMSetSuccess = "OnEvent_DormBGMSetSuccess",
|
||||
ResetDormMusic = "OnEvent_ResetDormMusic",
|
||||
DormVisitFriendRoom = "OnEvent_VisitFriend",
|
||||
DormBackHome = "OnEvent_BackHome",
|
||||
DormNewRoomUnlock = "OnEvent_DormNewRoomUnlock",
|
||||
DormElevatorHideUI = "OnEvent_DormElevatorHideUI",
|
||||
[EventId.OpenPanel] = "OnEvent_DormGlobalOpenPanel",
|
||||
[EventId.ClosePanel] = "OnEvent_DormGlobalClosePanel"
|
||||
}
|
||||
function DormCtrl:Awake()
|
||||
self.animator = self.gameObject:GetComponent("Animator")
|
||||
self.bNeedWaitElevator = false
|
||||
self._nDormPopupCount = 0
|
||||
end
|
||||
function DormCtrl:RefreshVirtualMouseStick()
|
||||
local bPlayerControlMode = self._panel.nCurMode == 0 or self._panel.nCurMode == 3
|
||||
local bEnable = not bPlayerControlMode or not (0 >= self._nDormPopupCount)
|
||||
GamepadUIManager.SetVirtualMouseStickEnable(bEnable)
|
||||
end
|
||||
function DormCtrl:OnEvent_DormGlobalOpenPanel(nPanelId)
|
||||
if self._panel == nil then
|
||||
return
|
||||
end
|
||||
if nPanelId == self._panel._nPanelId then
|
||||
return
|
||||
end
|
||||
self._nDormPopupCount = self._nDormPopupCount + 1
|
||||
self:RefreshVirtualMouseStick()
|
||||
end
|
||||
function DormCtrl:OnEvent_DormGlobalClosePanel(nPanelId)
|
||||
if nPanelId == self._panel._nPanelId then
|
||||
return
|
||||
end
|
||||
if self._nDormPopupCount > 0 then
|
||||
self._nDormPopupCount = self._nDormPopupCount - 1
|
||||
end
|
||||
self:RefreshVirtualMouseStick()
|
||||
end
|
||||
function DormCtrl:OnEnable()
|
||||
self._nDormPopupCount = 0
|
||||
self.gameObject:SetActive(false)
|
||||
local bGetRoomInfo = false
|
||||
local bGetBagInfo = false
|
||||
local ReopenWaitFrame = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
EventManager.Hit("OnEvent_DormLevelLoadComplete")
|
||||
self._panel:SetDormBGM()
|
||||
end
|
||||
local SetDormData = function(nRoomId)
|
||||
local nCurRoom = nRoomId
|
||||
local roomData = {}
|
||||
if nCurRoom ~= 0 then
|
||||
local nFurnitureLen = 0
|
||||
if self._panel.mapDormRoomInfo[nCurRoom] ~= nil then
|
||||
local mapData = self._panel.mapDormRoomInfo[nCurRoom]
|
||||
nFurnitureLen = #mapData.FurnitureList
|
||||
end
|
||||
local tbRole = {}
|
||||
local bIsMale = PlayerData.Base:GetPlayerSex() == true
|
||||
if bIsMale then
|
||||
table.insert(tbRole, {
|
||||
9101,
|
||||
910101,
|
||||
true
|
||||
})
|
||||
else
|
||||
table.insert(tbRole, {
|
||||
9100,
|
||||
910001,
|
||||
true
|
||||
})
|
||||
end
|
||||
for index, value in ipairs(self._panel.mapDormRoomInfo[nCurRoom].RoleList) do
|
||||
local nSkinId = PlayerData.PlayerDormData:GetDormCharSkin(value.RoleId)
|
||||
table.insert(tbRole, {
|
||||
value.RoleId,
|
||||
nSkinId,
|
||||
value.IsVisit
|
||||
})
|
||||
if value.IsVisit == true then
|
||||
value.IsVisit = false
|
||||
end
|
||||
end
|
||||
local nSceneId = 0
|
||||
local bIsGuide = PlayerData.PlayerDormData:GetGuideState()
|
||||
table.insert(roomData, {
|
||||
1,
|
||||
nCurRoom,
|
||||
nFurnitureLen,
|
||||
tbRole,
|
||||
nSceneId,
|
||||
bIsGuide
|
||||
})
|
||||
for _, mapFurnitur in ipairs(self._panel.mapDormRoomInfo[nCurRoom].FurnitureList) do
|
||||
table.insert(roomData, {
|
||||
mapFurnitur.FurnitureId,
|
||||
mapFurnitur.X,
|
||||
mapFurnitur.Y,
|
||||
mapFurnitur.Z,
|
||||
mapFurnitur.Rotation
|
||||
})
|
||||
end
|
||||
safe_call_cs_func(CS.DormModuleHelper.SetDormData, roomData)
|
||||
else
|
||||
printError("NO ROOM CONFIG")
|
||||
return
|
||||
end
|
||||
end
|
||||
local GetRoomInfoCallback = function(mapDormRoomInfo, mapDormBaseInfo)
|
||||
bGetRoomInfo = true
|
||||
local roomId = 0
|
||||
for nRoomId, _ in pairs(mapDormRoomInfo) do
|
||||
if roomId == 0 or roomId == nil then
|
||||
roomId = nRoomId
|
||||
else
|
||||
roomId = math.min(roomId, nRoomId)
|
||||
end
|
||||
end
|
||||
self._panel.nCurRoom = self._panel.nCurRoom == 0 and roomId or self._panel.nCurRoom
|
||||
self._panel.mapDormRoomInfo = mapDormRoomInfo
|
||||
self._panel.mapDormBaseData = mapDormBaseInfo
|
||||
if bGetBagInfo then
|
||||
local sCurModule = ModuleManager.GetCurModuleName()
|
||||
if sCurModule == "DormModuleScene" then
|
||||
cs_coroutine.start(ReopenWaitFrame)
|
||||
else
|
||||
SetDormData(roomId)
|
||||
NovaAPI.EnterModule("DormModuleScene", true)
|
||||
end
|
||||
self._mapNode.rtEditorRoot:Init(self._panel.nCurRoom)
|
||||
self._mapNode.rtInteractiveRoot:SetRoom(self._panel.nCurRoom)
|
||||
self._mapNode.rtInteractiveRoot:SetQuestInfo()
|
||||
else
|
||||
return
|
||||
end
|
||||
end
|
||||
local GetBagInfoCallback = function(mapFurnitureBag)
|
||||
bGetBagInfo = true
|
||||
self._panel.mapFurnitureBag = mapFurnitureBag
|
||||
self._panel.mapFurnitureUsedCount = PlayerData.PlayerDormData:GetUsedCount()
|
||||
if bGetRoomInfo then
|
||||
local sCurModule = ModuleManager.GetCurModuleName()
|
||||
if sCurModule == "DormModuleScene" then
|
||||
cs_coroutine.start(ReopenWaitFrame)
|
||||
else
|
||||
SetDormData(self._panel.nCurRoom)
|
||||
NovaAPI.EnterModule("DormModuleScene", true)
|
||||
end
|
||||
self._mapNode.rtEditorRoot:Init(self._panel.nCurRoom)
|
||||
self._mapNode.rtInteractiveRoot:SetRoom(self._panel.nCurRoom)
|
||||
self._mapNode.rtInteractiveRoot:SetQuestInfo()
|
||||
else
|
||||
return
|
||||
end
|
||||
end
|
||||
PlayerData.PlayerDormData:GetRoomInfo(GetRoomInfoCallback)
|
||||
PlayerData.PlayerDormData:GetBagInfo(GetBagInfoCallback)
|
||||
if self._panel.nCurMode == -1 then
|
||||
local nCurCachedMode = PlayerData.PlayerDormData:GetPanelDefaultMode()
|
||||
if nCurCachedMode == 1 then
|
||||
self._mapNode.rtInteractiveRoot:SetMode(0)
|
||||
self._panel.nCurMode = 0
|
||||
self._panel.nCurInteractiveMode = 0
|
||||
else
|
||||
self._mapNode.rtInteractiveRoot:SetMode(1)
|
||||
self._panel.nCurMode = 1
|
||||
self._panel.nCurInteractiveMode = 1
|
||||
end
|
||||
elseif self._panel.nCurMode == 1 then
|
||||
self._mapNode.rtInteractiveRoot:SetMode(1)
|
||||
self._panel.nCurInteractiveMode = 1
|
||||
else
|
||||
self._mapNode.rtInteractiveRoot:SetMode(0)
|
||||
self._panel.nCurMode = 0
|
||||
self._panel.nCurInteractiveMode = 0
|
||||
end
|
||||
self:RefreshVirtualMouseStick()
|
||||
self.bNeedSwitchModeAfterLoad = true
|
||||
self.bHide = false
|
||||
self._mapNode.btnShowMenu.gameObject:SetActive(false)
|
||||
DormGuideUI.Bind(self)
|
||||
end
|
||||
function DormCtrl:OnDisable()
|
||||
DormGuideUI.Unbind(self)
|
||||
self._panel._tbParam[1] = self._panel.nCurRoom
|
||||
GamepadUIManager.SetVirtualMouseStickEnable(true)
|
||||
end
|
||||
function DormCtrl:SwitchRoom(nRoomId)
|
||||
local nNextRoom = nRoomId
|
||||
self._panel.nCurRoom = nNextRoom
|
||||
self._mapNode.rtEditorRoot:SwitchRoom(self._panel.nCurRoom)
|
||||
self._mapNode.rtInteractiveRoot:SetRoom(self._panel.nCurRoom)
|
||||
local tbRoleData = PlayerData.PlayerDormData:GetRoleInfo(nRoomId)
|
||||
PlayerData.PlayerDormData:SetRoleVisitState()
|
||||
local roomData = {}
|
||||
local nFurnitureLen = 0
|
||||
local tbRole = {}
|
||||
local bIsMale = PlayerData.Base:GetPlayerSex() == true
|
||||
if bIsMale then
|
||||
table.insert(tbRole, {
|
||||
9101,
|
||||
910101,
|
||||
true
|
||||
})
|
||||
else
|
||||
table.insert(tbRole, {
|
||||
9100,
|
||||
910001,
|
||||
true
|
||||
})
|
||||
end
|
||||
for index, value in ipairs(tbRoleData) do
|
||||
local nSkinId = PlayerData.PlayerDormData:GetDormCharSkin(value.RoleId)
|
||||
table.insert(tbRole, {
|
||||
value.RoleId,
|
||||
nSkinId,
|
||||
value.IsVisit
|
||||
})
|
||||
if value.IsVisit == false then
|
||||
value.IsVisit = true
|
||||
end
|
||||
end
|
||||
if self._panel.mapDormRoomInfo[nNextRoom] ~= nil then
|
||||
local mapData = self._panel.mapDormRoomInfo[nNextRoom]
|
||||
nFurnitureLen = #mapData.FurnitureList
|
||||
end
|
||||
table.insert(roomData, {
|
||||
1,
|
||||
self._panel.nCurRoom,
|
||||
nFurnitureLen,
|
||||
tbRole,
|
||||
0
|
||||
})
|
||||
for _, mapFurnitur in ipairs(self._panel.mapDormRoomInfo[self._panel.nCurRoom].FurnitureList) do
|
||||
table.insert(roomData, {
|
||||
mapFurnitur.FurnitureId,
|
||||
mapFurnitur.X,
|
||||
mapFurnitur.Y,
|
||||
mapFurnitur.Z,
|
||||
mapFurnitur.Rotation
|
||||
})
|
||||
end
|
||||
safe_call_cs_func(CS.DormModuleHelper.SetDormData, roomData)
|
||||
self._mapNode.rtInteractiveRoot:SetCharCount()
|
||||
local nStyle = 55
|
||||
local mapRoomConfigData = ConfigTable.GetData("DormRoom", self._panel.nCurRoom)
|
||||
if mapRoomConfigData ~= nil then
|
||||
nStyle = mapRoomConfigData.TransUIStyle
|
||||
end
|
||||
local TransitionCallback = function()
|
||||
NovaAPI.DispatchEventWithData("DORM_LEVEL_STATE_CHANGED", nil, {false, 0})
|
||||
end
|
||||
EventManager.Hit(EventId.SetTransition, nStyle, TransitionCallback)
|
||||
end
|
||||
function DormCtrl:VisitFriendRoom(nUid, nRoomId)
|
||||
local GetDataCallback = function(mapFriendInfo)
|
||||
local mapFriendDormInfo = mapFriendInfo.mapDormDetail[nRoomId]
|
||||
if mapFriendDormInfo == nil then
|
||||
return
|
||||
end
|
||||
self._panel.nCurRoom = nRoomId
|
||||
self._panel.nCurVisitFriendUid = nUid
|
||||
self._panel.nCustomBgm = mapFriendDormInfo.DiscId
|
||||
local tbRoleData = mapFriendDormInfo.RoleList
|
||||
local roomData = {}
|
||||
local nFurnitureLen = 0
|
||||
local tbRole = {}
|
||||
local bIsMale = PlayerData.Base:GetPlayerSex() == true
|
||||
if bIsMale then
|
||||
table.insert(tbRole, {
|
||||
9101,
|
||||
910101,
|
||||
true
|
||||
})
|
||||
else
|
||||
table.insert(tbRole, {
|
||||
9100,
|
||||
910001,
|
||||
true
|
||||
})
|
||||
end
|
||||
for index, value in ipairs(tbRoleData) do
|
||||
local nSkinId = PlayerData.PlayerDormData:GetDormCharSkin(value.RoleId)
|
||||
table.insert(tbRole, {
|
||||
value.RoleId,
|
||||
nSkinId,
|
||||
value.IsVisit
|
||||
})
|
||||
if value.IsVisit == false then
|
||||
value.IsVisit = true
|
||||
end
|
||||
end
|
||||
nFurnitureLen = #mapFriendDormInfo.FurnitureList
|
||||
table.insert(roomData, {
|
||||
1,
|
||||
nRoomId,
|
||||
nFurnitureLen,
|
||||
tbRole,
|
||||
0
|
||||
})
|
||||
for _, mapFurnitur in ipairs(mapFriendDormInfo.FurnitureList) do
|
||||
table.insert(roomData, {
|
||||
mapFurnitur.FurnitureId,
|
||||
mapFurnitur.X,
|
||||
mapFurnitur.Y,
|
||||
mapFurnitur.Z,
|
||||
mapFurnitur.Rotation
|
||||
})
|
||||
end
|
||||
safe_call_cs_func(CS.DormModuleHelper.SetDormData, roomData)
|
||||
self.bNeedSwitchModeAfterLoad = self._panel.nCurMode ~= 3
|
||||
self._panel.nCurMode = 3
|
||||
self:RefreshVirtualMouseStick()
|
||||
self._mapNode.rtInteractiveRoot:RecycleAllInteractiveHudCtrl()
|
||||
self._mapNode.rtEditorRoot.gameObject:SetActive(false)
|
||||
self._mapNode.rtInteractiveRoot.gameObject:SetActive(false)
|
||||
self._mapNode.rtFriendRoot.gameObject:SetActive(false)
|
||||
local mapDormFriendInfo = PlayerData.PlayerDormData:DormGetFriendInfoByUid(nUid)
|
||||
local mapFriendDetailData = PlayerData.Friend:GetFriendDetailData(nUid)
|
||||
self._mapNode.rtFriendRoot:Refresh(mapDormFriendInfo, mapFriendDetailData)
|
||||
local nStyle = 55
|
||||
local mapRoomConfigData = ConfigTable.GetData("DormRoom", self._panel.nCurRoom)
|
||||
if mapRoomConfigData ~= nil then
|
||||
nStyle = mapRoomConfigData.TransUIStyle
|
||||
end
|
||||
local TransitionCallback = function()
|
||||
NovaAPI.DispatchEventWithData("DORM_LEVEL_STATE_CHANGED", nil, {false, 0})
|
||||
end
|
||||
EventManager.Hit(EventId.SetTransition, nStyle, TransitionCallback)
|
||||
end
|
||||
if self._panel.nCurMode ~= 3 then
|
||||
if self._panel.nCurMode == 2 then
|
||||
self._panel.nModeBeforeVisitFriend = self._panel.nCurInteractiveMode
|
||||
else
|
||||
self._panel.nModeBeforeVisitFriend = self._panel.nCurMode
|
||||
end
|
||||
end
|
||||
PlayerData.PlayerDormData:DormGetFriendVisitData(nUid, nRoomId, GetDataCallback)
|
||||
end
|
||||
function DormCtrl:ChangeVisitFriendRoom(nUid, nRoomId)
|
||||
local mapFriendInfo = PlayerData.PlayerDormData:DormGetCachedFriendVisitData(nUid)
|
||||
if mapFriendInfo == nil then
|
||||
return
|
||||
end
|
||||
self._panel.nCurRoom = nRoomId
|
||||
self._panel.nCurVisitFriendUid = nUid
|
||||
local mapFriendDormInfo = mapFriendInfo.mapDormDetail[nRoomId]
|
||||
local tbRoleData = mapFriendDormInfo.RoleList
|
||||
self._panel.nCustomBgm = mapFriendDormInfo.DiscId
|
||||
local roomData = {}
|
||||
local nFurnitureLen = 0
|
||||
local tbRole = {}
|
||||
local bIsMale = PlayerData.Base:GetPlayerSex() == true
|
||||
if bIsMale then
|
||||
table.insert(tbRole, {
|
||||
9101,
|
||||
910101,
|
||||
true
|
||||
})
|
||||
else
|
||||
table.insert(tbRole, {
|
||||
9100,
|
||||
910001,
|
||||
true
|
||||
})
|
||||
end
|
||||
for index, value in ipairs(tbRoleData) do
|
||||
local nSkinId = PlayerData.PlayerDormData:GetDormCharSkin(value.RoleId)
|
||||
table.insert(tbRole, {
|
||||
value.RoleId,
|
||||
nSkinId,
|
||||
value.IsVisit
|
||||
})
|
||||
if value.IsVisit == false then
|
||||
value.IsVisit = true
|
||||
end
|
||||
end
|
||||
nFurnitureLen = #mapFriendDormInfo.FurnitureList
|
||||
table.insert(roomData, {
|
||||
1,
|
||||
nRoomId,
|
||||
nFurnitureLen,
|
||||
tbRole,
|
||||
0
|
||||
})
|
||||
for _, mapFurnitur in ipairs(mapFriendDormInfo.FurnitureList) do
|
||||
table.insert(roomData, {
|
||||
mapFurnitur.FurnitureId,
|
||||
mapFurnitur.X,
|
||||
mapFurnitur.Y,
|
||||
mapFurnitur.Z,
|
||||
mapFurnitur.Rotation
|
||||
})
|
||||
end
|
||||
safe_call_cs_func(CS.DormModuleHelper.SetDormData, roomData)
|
||||
self.bNeedSwitchModeAfterLoad = self._panel.nCurMode ~= 3
|
||||
local nStyle = 55
|
||||
local mapRoomConfigData = ConfigTable.GetData("DormRoom", self._panel.nCurRoom)
|
||||
if mapRoomConfigData ~= nil then
|
||||
nStyle = mapRoomConfigData.TransUIStyle
|
||||
end
|
||||
local TransitionCallback = function()
|
||||
NovaAPI.DispatchEventWithData("DORM_LEVEL_STATE_CHANGED", nil, {false, 0})
|
||||
end
|
||||
EventManager.Hit(EventId.SetTransition, nStyle, TransitionCallback)
|
||||
self._panel.nCurMode = 3
|
||||
self:RefreshVirtualMouseStick()
|
||||
self._mapNode.rtEditorRoot.gameObject:SetActive(false)
|
||||
self._mapNode.rtInteractiveRoot.gameObject:SetActive(false)
|
||||
self._mapNode.rtFriendRoot.gameObject:SetActive(false)
|
||||
local mapDormFriendInfo = PlayerData.PlayerDormData:DormGetFriendInfoByUid(nUid)
|
||||
local mapFriendDetailData = PlayerData.Friend:GetFriendDetailData(nUid)
|
||||
self._mapNode.rtFriendRoot:Refresh(mapDormFriendInfo, mapFriendDetailData)
|
||||
end
|
||||
function DormCtrl:DOSwitch2Interactive()
|
||||
self._mapNode.rtEditorRoot.gameObject:SetActive(false)
|
||||
self._mapNode.rtInteractiveRoot.gameObject:SetActive(true)
|
||||
self.animator:Play("DormPanel_in")
|
||||
self._mapNode.rtInteractiveRoot:SetMode(self._panel.nCurInteractiveMode)
|
||||
self._panel.nCurMode = self._panel.nCurInteractiveMode
|
||||
self:RefreshVirtualMouseStick()
|
||||
self._mapNode.rtEditorRoot:ExitEdiorMode()
|
||||
NovaAPI.DispatchEventWithData("DormSwicthMode", nil, {
|
||||
self._panel.nCurInteractiveMode
|
||||
})
|
||||
end
|
||||
function DormCtrl:OnEvent_Back(nPanelId)
|
||||
if self._panel._nPanelId ~= nPanelId then
|
||||
return
|
||||
end
|
||||
self:BtnClick_Back(nPanelId)
|
||||
end
|
||||
function DormCtrl:OnEvent_Home(nPanelId)
|
||||
if self._panel._nPanelId ~= nPanelId then
|
||||
return
|
||||
end
|
||||
self:BtnClick_Home(nPanelId)
|
||||
end
|
||||
function DormCtrl:BtnClick_Back(nPanelId)
|
||||
if self._panel.nCurMode == 2 then
|
||||
self:OnEvent_InteractiveMode()
|
||||
return
|
||||
end
|
||||
if self._panel.nCurMode == 3 then
|
||||
self:OnEvent_BackHome()
|
||||
return
|
||||
end
|
||||
self.gameObject:SetActive(false)
|
||||
local TransitionCallback = function()
|
||||
NovaAPI.DispatchEventWithData("DORM_LEVEL_STATE_CHANGED", nil, {true, 0})
|
||||
end
|
||||
EventManager.Hit(EventId.SetTransition, 6, TransitionCallback, AllEnum.MainViewCorner.Dorm)
|
||||
end
|
||||
function DormCtrl:BtnClick_Home(nPanelId)
|
||||
local callback = function()
|
||||
self.gameObject:SetActive(false)
|
||||
local TransitionCallback = function()
|
||||
NovaAPI.DispatchEventWithData("DORM_LEVEL_STATE_CHANGED", nil, {true, 0})
|
||||
end
|
||||
EventManager.Hit(EventId.SetTransition, 6, TransitionCallback, AllEnum.MainViewCorner.Dorm)
|
||||
end
|
||||
if self._panel.nCurMode == 2 then
|
||||
local sLanguage1 = ConfigTable.GetUIText("Dorm_SaveConfirmContent")
|
||||
local sLanguage2 = ConfigTable.GetUIText("DormBtn_SaveAndExit")
|
||||
local sLanguage3 = ConfigTable.GetUIText("DormBtn_Exit")
|
||||
self._panel:SaveRoom(callback, false, sLanguage1, sLanguage2, sLanguage3)
|
||||
else
|
||||
callback()
|
||||
end
|
||||
end
|
||||
function DormCtrl:BtnClick_ShowMenu()
|
||||
self._mapNode.btnHideAllUI2.gameObject:SetActive(true)
|
||||
end
|
||||
function DormCtrl:BtnClick_HideAllUI2()
|
||||
if self.bHide then
|
||||
self.bHide = false
|
||||
self._mapNode.rtMenu:SetActive(true)
|
||||
self._mapNode.btnShowMenu.gameObject:SetActive(false)
|
||||
self._mapNode.rtFriendRoot.gameObject:SetActive(self._panel.nCurMode == 3)
|
||||
self._mapNode.rtInteractiveRoot.gameObject:SetActive(self._panel.nCurMode ~= 3)
|
||||
local DormGuideUI = require("Game.UI.Dorm.DormGuideUI")
|
||||
DormGuideUI.SetOwnerCap("businessHide", nil)
|
||||
return
|
||||
end
|
||||
end
|
||||
function DormCtrl:OnEvent_EditMode()
|
||||
self._mapNode.rtEditorRoot.gameObject:SetActive(true)
|
||||
self._mapNode.rtEditorRoot.nCurMainTab = 1
|
||||
self._mapNode.rtEditorRoot.nCurFurniturTab1 = 1
|
||||
self._mapNode.rtEditorRoot.nCurFurniturTab2 = 1
|
||||
self._mapNode.rtEditorRoot.nCurPresetTab = 2
|
||||
self._mapNode.rtEditorRoot.nCurPresetIdx = 0
|
||||
self._mapNode.rtEditorRoot.nCurSuitId = 0
|
||||
self._mapNode.rtEditorRoot.nCurSelectPresetIdx = 0
|
||||
self._mapNode.rtEditorRoot:InitListToggle()
|
||||
self._mapNode.rtEditorRoot:OnBtnClick_FurnitureListOpen()
|
||||
self._mapNode.rtInteractiveRoot:RecycleAllInteractiveHudCtrl()
|
||||
self._mapNode.rtInteractiveRoot.gameObject:SetActive(false)
|
||||
WwiseAudioMgr:PostEvent("Home_UI_furniture")
|
||||
self._panel.nCurMode = 2
|
||||
self:RefreshVirtualMouseStick()
|
||||
NovaAPI.DispatchEventWithData("DormSwicthMode", nil, {2})
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
if self._mapNode.rtEditorRoot ~= nil then
|
||||
self._mapNode.rtEditorRoot:SetRoomRatio()
|
||||
end
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
end
|
||||
function DormCtrl:OnEvent_InteractiveMode(bNotNeedCheck)
|
||||
local callback = function(bSaveSuc)
|
||||
if bSaveSuc then
|
||||
NovaAPI.DispatchEventWithData("DORM_LUA_SAVE_ROOM_SUCC")
|
||||
else
|
||||
NovaAPI.DispatchEventWithData("DORM_LUA_ABANDON_SAVE_ROOM")
|
||||
end
|
||||
self:DOSwitch2Interactive()
|
||||
end
|
||||
if bNotNeedCheck == true then
|
||||
self:DOSwitch2Interactive()
|
||||
else
|
||||
local sLanguage1 = ConfigTable.GetUIText("Dorm_SaveConfirmContent")
|
||||
local sLanguage2 = ConfigTable.GetUIText("DormBtn_SaveAndExit")
|
||||
local sLanguage3 = ConfigTable.GetUIText("DormBtn_Exit")
|
||||
self._panel:SaveRoom(callback, false, sLanguage1, sLanguage2, sLanguage3)
|
||||
end
|
||||
end
|
||||
function DormCtrl:OnEvent_ObserveMode()
|
||||
self._mapNode.rtInteractiveRoot:SetMode(1)
|
||||
self._panel.nCurMode = 1
|
||||
self._panel.nCurInteractiveMode = 1
|
||||
self:RefreshVirtualMouseStick()
|
||||
NovaAPI.DispatchEventWithData("DormSwicthMode", nil, {1})
|
||||
end
|
||||
function DormCtrl:OnEvent_OperateMode()
|
||||
self._mapNode.rtInteractiveRoot:SetMode(0)
|
||||
self._panel.nCurMode = 0
|
||||
self._panel.nCurInteractiveMode = 0
|
||||
self:RefreshVirtualMouseStick()
|
||||
NovaAPI.DispatchEventWithData("DormSwicthMode", nil, {0})
|
||||
end
|
||||
function DormCtrl:OnEvent_NextRoom(nUid)
|
||||
if self._panel.nCurMode == 3 then
|
||||
local mapFriendCachedDormData = PlayerData.PlayerDormData:DormGetCachedFriendVisitData(self._panel.nCurVisitFriendUid)
|
||||
local nCurRoom = self._panel.nCurRoom
|
||||
self.gameObject:SetActive(false)
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.DormRoomSelectPanel, mapFriendCachedDormData.mapDormDetail, nCurRoom, false, true)
|
||||
else
|
||||
local nCurRoom = self._panel.nCurRoom
|
||||
local mapRoomData = self._panel.mapDormRoomInfo
|
||||
self.gameObject:SetActive(false)
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.DormRoomSelectPanel, mapRoomData, nCurRoom, false, false)
|
||||
end
|
||||
end
|
||||
function DormCtrl:OnEvent_BackHome()
|
||||
self._panel.nCurMode = self._panel.nModeBeforeVisitFriend
|
||||
self:RefreshVirtualMouseStick()
|
||||
self._panel.nCurVisitFriendUid = 0
|
||||
self.bNeedSwitchModeAfterLoad = true
|
||||
self._panel.nCustomBgm = 0
|
||||
self:SwitchRoom(701001)
|
||||
end
|
||||
function DormCtrl:OnEvent_DormLevelLoadComplete()
|
||||
self._mapNode.rtEditorRoot.gameObject:SetActive(self._panel.nCurMode == 2)
|
||||
self._mapNode.rtInteractiveRoot.gameObject:SetActive(self._panel.nCurMode == 0 or self._panel.nCurMode == 1)
|
||||
local sAnim = "DormPanel_in"
|
||||
if self._panel.nCurMode == 0 or self._panel.nCurMode == 1 then
|
||||
self._panel.nCurInteractiveMode = self._panel.nCurMode
|
||||
self._mapNode.rtInteractiveRoot:SetMode(self._panel.nCurMode)
|
||||
self._mapNode.rtInteractiveRoot:RegisterVirtualJoystick()
|
||||
end
|
||||
self._mapNode.rtFriendRoot.gameObject:SetActive(self._panel.nCurMode == 3)
|
||||
if self._panel.nCurMode == 3 then
|
||||
self._mapNode.rtFriendRoot:RegisterVirtualJoystick()
|
||||
sAnim = "DormPanelFriend_in"
|
||||
end
|
||||
if self.bNeedSwitchModeAfterLoad then
|
||||
NovaAPI.DispatchEventWithData("DormSwicthMode", nil, {
|
||||
self._panel.nCurMode
|
||||
})
|
||||
self.bNeedSwitchModeAfterLoad = false
|
||||
end
|
||||
if not self.bNeedWaitElevator then
|
||||
self.gameObject:SetActive(true)
|
||||
end
|
||||
self.bNeedWaitElevator = false
|
||||
EventManager.Hit(EventId.SetTransition)
|
||||
self.animator:Play(sAnim)
|
||||
if DormGuideUI.IsLeaveLocked() then
|
||||
DormGuideUI._ApplyInterceptUI()
|
||||
end
|
||||
self._panel:SetDormBGM()
|
||||
end
|
||||
function DormCtrl:OnEvent_DormLevelFinish()
|
||||
NovaAPI.EnterModule("MainMenuModuleScene", true)
|
||||
end
|
||||
function DormCtrl:OnEvent_SelectRoom(nState)
|
||||
if nState == 2 then
|
||||
EventManager.Hit("DormElevatorHideUI", true)
|
||||
local DormGuideAdapter = require("Game.UI.Dorm.DormGuideAdapter")
|
||||
DormGuideAdapter.MarkWalkout()
|
||||
EventManager.Hit("DormGuide_ElevatorExit")
|
||||
return
|
||||
elseif nState == 1 then
|
||||
if self._panel.nCurMode == 3 then
|
||||
local mapFriendCachedDormData = PlayerData.PlayerDormData:DormGetCachedFriendVisitData(self._panel.nCurVisitFriendUid)
|
||||
local nCurRoom = self._panel.nCurRoom
|
||||
self.gameObject:SetActive(false)
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.DormRoomSelectPanel, mapFriendCachedDormData.mapDormDetail, nCurRoom, true, true)
|
||||
else
|
||||
local nCurRoom = self._panel.nCurRoom
|
||||
local mapRoomData = self._panel.mapDormRoomInfo
|
||||
self.gameObject:SetActive(false)
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.DormRoomSelectPanel, mapRoomData, nCurRoom, true, false)
|
||||
end
|
||||
else
|
||||
EventManager.Hit("DormElevatorHideUI", false)
|
||||
end
|
||||
end
|
||||
function DormCtrl:OnEvent_SwitchRoom()
|
||||
if self._panel.nCurMode == 3 then
|
||||
self:ChangeVisitFriendRoom(self._panel.nCurVisitFriendUid, self.nSelectedRoomId)
|
||||
self.nSelectedRoomId = 0
|
||||
else
|
||||
self:SwitchRoom(self.nSelectedRoomId)
|
||||
self.nSelectedRoomId = 0
|
||||
end
|
||||
end
|
||||
function DormCtrl:OnEvent_VisitFriend(nUid, nRoomId)
|
||||
if self._panel.nCurVisitFriendUid == nUid then
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("DormTips_VisitSameFriend"))
|
||||
return
|
||||
end
|
||||
self:VisitFriendRoom(nUid, nRoomId)
|
||||
end
|
||||
function DormCtrl:OnEvent_ChangeRoomResult(bConfirm, nRoomId, bElevator)
|
||||
local DormGuideAdapter = require("Game.UI.Dorm.DormGuideAdapter")
|
||||
DormGuideAdapter.NoteRoomConfirm(bConfirm, nRoomId, bElevator)
|
||||
if bConfirm then
|
||||
self.nSelectedRoomId = nRoomId
|
||||
end
|
||||
if bElevator then
|
||||
NovaAPI.DispatchEventWithData("DORM_LUA_SELECT_SCENE_CALLBACK", nil, {bConfirm})
|
||||
self.bNeedWaitElevator = bElevator and bConfirm
|
||||
elseif bConfirm then
|
||||
self:OnEvent_SwitchRoom()
|
||||
else
|
||||
self.gameObject:SetActive(true)
|
||||
local sAnim = "DormPanel_in"
|
||||
if self._panel.nCurMode == 3 then
|
||||
sAnim = "DormPanelFriend_in"
|
||||
end
|
||||
if self._panel.nCurMode == 1 then
|
||||
self._mapNode.rtInteractiveRoot:InitFurnitureBtns()
|
||||
end
|
||||
self.animator:Play(sAnim)
|
||||
end
|
||||
end
|
||||
function DormCtrl:OnEvent_OpenSelectChar()
|
||||
local tbCurSelectChar = {}
|
||||
local tbCharInRoom = {}
|
||||
local mapDormRoomCfgData = ConfigTable.GetData("DormRoom", self._panel.nCurRoom)
|
||||
if mapDormRoomCfgData ~= nil then
|
||||
local nMaxCharCount = mapDormRoomCfgData.RoleNum
|
||||
for i = 1, nMaxCharCount do
|
||||
table.insert(tbCurSelectChar, 0)
|
||||
end
|
||||
local curRoomInfo = self._panel.mapDormRoomInfo[self._panel.nCurRoom]
|
||||
local tbRoleList = curRoomInfo.RoleList
|
||||
if tbRoleList ~= nil then
|
||||
for idx, mapRole in ipairs(tbRoleList) do
|
||||
tbCurSelectChar[idx] = mapRole.RoleId
|
||||
end
|
||||
end
|
||||
for nRoomId, mapRoomInfo in pairs(self._panel.mapDormRoomInfo) do
|
||||
if nRoomId ~= self._panel.nCurRoom then
|
||||
for _, mapRole in ipairs(mapRoomInfo.RoleList) do
|
||||
tbCharInRoom[mapRole.RoleId] = nRoomId
|
||||
end
|
||||
end
|
||||
end
|
||||
self._mapNode.CharListRoot:ShowList(tbCurSelectChar, false, 1, tbCharInRoom)
|
||||
self._nDormPopupCount = self._nDormPopupCount + 1
|
||||
self:RefreshVirtualMouseStick()
|
||||
NovaAPI.DispatchEventWithData("DormSwicthMode", nil, {4})
|
||||
self._mapNode.rtInteractiveRoot:SetShowBtns(false)
|
||||
self._mapNode.rtMenu:SetActive(false)
|
||||
end
|
||||
end
|
||||
function DormCtrl:OnEvent_DormCharSelectResult(tbCurChar, bConfirm)
|
||||
local revertChar = function()
|
||||
local beforeChar = self._panel.mapDormRoomInfo[self._panel.nCurRoom].RoleList
|
||||
local tbBeforeCharId = {}
|
||||
for _, mapCharInfo in ipairs(beforeChar) do
|
||||
local nCharId = mapCharInfo.RoleId
|
||||
table.insert(tbBeforeCharId, mapCharInfo.RoleId)
|
||||
if table.indexof(tbCurChar, nCharId) < 1 then
|
||||
local nSkinId = 0
|
||||
local mapChar = ConfigTable.GetData_Character(nCharId)
|
||||
if mapChar ~= nil then
|
||||
nSkinId = mapChar.DefaultSkinId
|
||||
end
|
||||
NovaAPI.DispatchEventWithData("DORM_LUA_SWITCH_ACTOR_CALLBACK", nil, {
|
||||
true,
|
||||
nCharId,
|
||||
nSkinId
|
||||
})
|
||||
end
|
||||
end
|
||||
for _, nCharId in ipairs(tbCurChar) do
|
||||
if 0 < nCharId and table.indexof(tbBeforeCharId, nCharId) < 1 then
|
||||
NovaAPI.DispatchEventWithData("DORM_LUA_SWITCH_ACTOR_CALLBACK", nil, {false, nCharId})
|
||||
end
|
||||
end
|
||||
if not DormGuideUI._bHideChrome then
|
||||
self._mapNode.rtInteractiveRoot:SetShowBtns(true)
|
||||
self._mapNode.rtMenu:SetActive(true)
|
||||
end
|
||||
self._mapNode.rtInteractiveRoot:SetCharCount()
|
||||
self._mapNode.rtInteractiveRoot:SetFastInteractiveBtn()
|
||||
end
|
||||
if bConfirm then
|
||||
local tbChar = {}
|
||||
local bSame = true
|
||||
local beforeChar = self._panel.mapDormRoomInfo[self._panel.nCurRoom].RoleList
|
||||
for _, nCharId in ipairs(tbCurChar) do
|
||||
if nCharId ~= 0 then
|
||||
table.insert(tbChar, nCharId)
|
||||
end
|
||||
end
|
||||
if #beforeChar ~= #tbChar then
|
||||
bSame = false
|
||||
end
|
||||
for _, mapCharInfo in ipairs(beforeChar) do
|
||||
if table.indexof(tbCurChar, mapCharInfo.RoleId) < 1 then
|
||||
bSame = false
|
||||
end
|
||||
end
|
||||
local callback = function(ret)
|
||||
local DormGuideAdapter = require("Game.UI.Dorm.DormGuideAdapter")
|
||||
DormGuideAdapter.NoteCharResult(true)
|
||||
self._panel.mapDormRoomInfo = ret
|
||||
self._mapNode.rtInteractiveRoot:SetCharCount()
|
||||
self._mapNode.rtInteractiveRoot:SetFastInteractiveBtn()
|
||||
self._mapNode.CharListRoot:CloseList()
|
||||
if not DormGuideUI._bHideChrome then
|
||||
self._mapNode.rtInteractiveRoot:SetShowBtns(true)
|
||||
self._mapNode.rtMenu:SetActive(true)
|
||||
end
|
||||
if self._nDormPopupCount > 0 then
|
||||
self._nDormPopupCount = self._nDormPopupCount - 1
|
||||
end
|
||||
self:RefreshVirtualMouseStick()
|
||||
NovaAPI.DispatchEventWithData("DormSwicthMode", nil, {
|
||||
self._panel.nCurInteractiveMode
|
||||
})
|
||||
end
|
||||
if bSame then
|
||||
callback(self._panel.mapDormRoomInfo)
|
||||
else
|
||||
PlayerData.PlayerDormData:UpdateInvitationRole(self._panel.nCurRoom, tbChar, callback)
|
||||
end
|
||||
else
|
||||
local DormGuideAdapter = require("Game.UI.Dorm.DormGuideAdapter")
|
||||
DormGuideAdapter.NoteCharResult(false)
|
||||
revertChar()
|
||||
self._mapNode.CharListRoot:CloseList()
|
||||
if not DormGuideUI._bHideChrome then
|
||||
self._mapNode.rtInteractiveRoot:SetShowBtns(true)
|
||||
self._mapNode.rtMenu:SetActive(true)
|
||||
end
|
||||
if self._nDormPopupCount > 0 then
|
||||
self._nDormPopupCount = self._nDormPopupCount - 1
|
||||
end
|
||||
self:RefreshVirtualMouseStick()
|
||||
NovaAPI.DispatchEventWithData("DormSwicthMode", nil, {
|
||||
self._panel.nCurInteractiveMode
|
||||
})
|
||||
end
|
||||
end
|
||||
function DormCtrl:OnEvent_DormUpdatePresetNameSuc(nBuildId, sName)
|
||||
self._panel.mapPresetInfo[nBuildId].BuildName = sName
|
||||
end
|
||||
function DormCtrl:OnEvent_DormBGMSetSuccess(tbInfo)
|
||||
for _, value in ipairs(tbInfo) do
|
||||
if self._panel.mapDormRoomInfo[value.DormRoomId] ~= nil then
|
||||
self._panel.mapDormRoomInfo[value.DormRoomId].DiscId = value.DiscId
|
||||
end
|
||||
end
|
||||
end
|
||||
function DormCtrl:OnEvent_ResetDormMusic()
|
||||
self._panel:SetDormBGM()
|
||||
end
|
||||
function DormCtrl:OnEvent_DormNewRoomUnlock()
|
||||
local GetRoomInfoCallback = function(mapDormRoomInfo, mapDormBaseInfo)
|
||||
self._panel.mapDormRoomInfo = mapDormRoomInfo
|
||||
self._panel.mapDormBaseData = mapDormBaseInfo
|
||||
end
|
||||
local GetDormBagInfo = function(mapFurnitureBag)
|
||||
self._panel.mapFurnitureBag = mapFurnitureBag
|
||||
self._panel.mapFurnitureUsedCount = PlayerData.PlayerDormData:GetUsedCount()
|
||||
self._mapNode.rtEditorRoot:Init(self._panel.nCurRoom)
|
||||
self._mapNode.rtInteractiveRoot:SetRoom(self._panel.nCurRoom)
|
||||
end
|
||||
PlayerData.PlayerDormData:GetRoomInfo(GetRoomInfoCallback)
|
||||
PlayerData.PlayerDormData:GetBagInfo(GetDormBagInfo)
|
||||
end
|
||||
function DormCtrl:OnEvent_DormHideUI()
|
||||
self._mapNode.rtMenu:SetActive(false)
|
||||
self._mapNode.rtInteractiveRoot.gameObject:SetActive(false)
|
||||
self._mapNode.rtFriendRoot.gameObject:SetActive(false)
|
||||
self._mapNode.btnShowMenu.gameObject:SetActive(true)
|
||||
self._mapNode.btnHideAllUI2.gameObject:SetActive(false)
|
||||
self.bHide = true
|
||||
local DormGuideUI = require("Game.UI.Dorm.DormGuideUI")
|
||||
DormGuideUI.SetOwnerCap("businessHide", 56)
|
||||
end
|
||||
function DormCtrl:OnEvent_DormElevatorHideUI(bHide)
|
||||
self.gameObject:SetActive(bHide)
|
||||
end
|
||||
return DormCtrl
|
||||
Reference in New Issue
Block a user