2025-04-01 10:48:36 +08:00
|
|
|
require "Game.View.init"
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
-- a net ViewManager
|
|
|
|
|
ViewManager = {
|
2025-04-10 11:19:20 +08:00
|
|
|
|
2025-04-01 10:48:36 +08:00
|
|
|
View_Login = 1,
|
2025-04-10 11:19:20 +08:00
|
|
|
|
2025-04-01 10:48:36 +08:00
|
|
|
View_Lobby = 2,
|
2025-04-10 11:19:20 +08:00
|
|
|
|
2025-06-10 16:11:48 +08:00
|
|
|
View_Family = 3,
|
2025-04-01 10:48:36 +08:00
|
|
|
|
2025-06-10 16:11:48 +08:00
|
|
|
View_Main = 4,
|
2025-04-01 10:48:36 +08:00
|
|
|
|
2025-06-10 16:11:48 +08:00
|
|
|
View_PlayBack = 5,
|
|
|
|
|
|
|
|
|
|
View_Witness = 6,
|
2025-04-01 10:48:36 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
local _viewClassMap = {}
|
|
|
|
|
local _currenView = nil
|
|
|
|
|
local _viewMap = {}
|
|
|
|
|
|
|
|
|
|
local _curren_msg
|
|
|
|
|
local function __NetTip(txt_msg)
|
|
|
|
|
if _curren_msg then
|
|
|
|
|
_curren_msg:Destroy()
|
|
|
|
|
_curren_msg = nil
|
|
|
|
|
end
|
|
|
|
|
-- 断网时关闭托管
|
|
|
|
|
if _currenView.UnmarkSelfTuoguan then
|
|
|
|
|
_currenView:UnmarkSelfTuoguan()
|
|
|
|
|
end
|
2025-04-10 11:19:20 +08:00
|
|
|
_curren_msg = BaseWindow.new("ui://Common/Win_ConnectTip", _currenView._root_view)
|
2025-04-01 10:48:36 +08:00
|
|
|
local view = _curren_msg._view
|
|
|
|
|
view:GetChild("tex_message").text = txt_msg
|
|
|
|
|
view:GetChild("btn_connect").onClick:Set(function()
|
2025-04-10 11:19:20 +08:00
|
|
|
_curren_msg:Destroy()
|
|
|
|
|
_curren_msg = nil
|
|
|
|
|
NetResetConnectWindow.ShowNetReset()
|
|
|
|
|
ControllerManager.reset_join_room = 0
|
|
|
|
|
ControllerManager.ResetJionRoom()
|
2025-04-01 10:48:36 +08:00
|
|
|
end)
|
|
|
|
|
view:GetChild("btn_back").onClick:Set(function()
|
2025-04-10 11:19:20 +08:00
|
|
|
_curren_msg:Destroy()
|
|
|
|
|
_curren_msg = nil
|
|
|
|
|
NetResetConnectWindow.CloseNetReset()
|
|
|
|
|
ControllerManager.ChangeController(LoddyController)
|
|
|
|
|
ViewManager.ChangeView(ViewManager.View_Lobby)
|
2025-04-01 10:48:36 +08:00
|
|
|
end)
|
|
|
|
|
_curren_msg._close_zone = false
|
|
|
|
|
_curren_msg._animation = false
|
|
|
|
|
_curren_msg:Show()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function __OnGameConnectAction(state)
|
2025-04-15 14:59:43 +08:00
|
|
|
--print("state:"..state)
|
2025-04-01 10:48:36 +08:00
|
|
|
NetResetConnectWindow.CloseNetReset()
|
|
|
|
|
if state == SocketCode.Connect then
|
2025-04-10 11:19:20 +08:00
|
|
|
ViewManager.ChangeView(ViewManager.View_Main, DataManager.CurrenRoom.game_id)
|
2025-04-01 10:48:36 +08:00
|
|
|
return
|
2025-09-17 16:02:57 +08:00
|
|
|
--这两种情况默认重连
|
2025-04-01 10:48:36 +08:00
|
|
|
elseif state == SocketCode.DisconnectByServer then
|
2025-09-17 16:02:57 +08:00
|
|
|
-- __NetTip("网络断开连接!")
|
2025-11-12 18:44:27 +08:00
|
|
|
-- NetResetConnectWindow.ShowNetReset()
|
|
|
|
|
local _curren_msg =
|
|
|
|
|
MsgWindow.new(
|
|
|
|
|
nil,
|
|
|
|
|
'您的账号在另一个地点登录, 请确定您的账号是否泄密',
|
|
|
|
|
MsgWindow.MsgMode.OnlyOk
|
|
|
|
|
)
|
|
|
|
|
PlayerPrefs.DeleteKey('session_id')
|
|
|
|
|
PlayerPrefs.Save()
|
|
|
|
|
_curren_msg.onOk:Add(
|
|
|
|
|
function()
|
|
|
|
|
RestartGame()
|
|
|
|
|
end
|
|
|
|
|
)
|
|
|
|
|
_curren_msg:Show()
|
|
|
|
|
-- ControllerManager.reset_join_room = 0
|
|
|
|
|
-- ControllerManager.ResetJionRoom()
|
2025-04-01 10:48:36 +08:00
|
|
|
elseif state == SocketCode.ExceptionOnConnect or state == SocketCode.NetworkException then
|
2025-09-17 16:02:57 +08:00
|
|
|
-- __NetTip("请检查您的网络环境!")
|
|
|
|
|
NetResetConnectWindow.ShowNetReset()
|
|
|
|
|
ControllerManager.reset_join_room = 0
|
|
|
|
|
ControllerManager.ResetJionRoom()
|
2025-04-01 10:48:36 +08:00
|
|
|
elseif state == SocketCode.Disconnect then
|
|
|
|
|
ControllerManager.ChangeController(LoddyController)
|
|
|
|
|
ViewManager.ChangeView(ViewManager.View_Lobby)
|
|
|
|
|
else
|
|
|
|
|
NetResetConnectWindow.ShowNetReset()
|
|
|
|
|
end
|
2025-11-06 17:37:53 +08:00
|
|
|
ViewUtil.CloseModalWait2()
|
2025-04-01 10:48:36 +08:00
|
|
|
end
|
|
|
|
|
|
2025-11-26 17:46:48 +08:00
|
|
|
local function __OnGameWitnessConnectAction(state)
|
|
|
|
|
--print("state:"..state)
|
|
|
|
|
NetResetConnectWindow.CloseNetReset()
|
|
|
|
|
if state == SocketCode.Connect then
|
|
|
|
|
ViewManager.ChangeView(ViewManager.View_Witness, DataManager.CurrenRoom.game_id)
|
|
|
|
|
return
|
|
|
|
|
-- elseif state == SocketCode.DisconnectByServer then
|
|
|
|
|
-- NetResetConnectWindow.ShowNetReset()
|
|
|
|
|
-- ControllerManager.reset_witness_room = 0
|
|
|
|
|
-- ControllerManager.ResetWitnessRoom()
|
|
|
|
|
-- elseif state == SocketCode.ExceptionOnConnect or state == SocketCode.NetworkException then
|
|
|
|
|
-- -- __NetTip("请检查您的网络环境!")
|
|
|
|
|
-- NetResetConnectWindow.ShowNetReset()
|
|
|
|
|
-- ControllerManager.reset_witness_room = 0
|
|
|
|
|
-- ControllerManager.ResetWitnessRoom()
|
|
|
|
|
elseif state == SocketCode.Disconnect then
|
|
|
|
|
ControllerManager.ChangeController(LoddyController)
|
|
|
|
|
ViewManager.ChangeView(ViewManager.View_Lobby)
|
|
|
|
|
else
|
|
|
|
|
-- ViewUtil.ShowModalWait2()
|
|
|
|
|
-- ControllerManager.reset_witness_room = 0
|
|
|
|
|
-- ControllerManager.ResetWitnessRoom()
|
|
|
|
|
-- NetResetConnectWindow.ShowNetReset()
|
|
|
|
|
end
|
|
|
|
|
ViewUtil.CloseModalWait2()
|
|
|
|
|
end
|
|
|
|
|
|
2025-04-01 10:48:36 +08:00
|
|
|
function ViewManager.Init()
|
2025-04-10 11:19:20 +08:00
|
|
|
_viewClassMap[ViewManager.View_Login] = LoginView
|
|
|
|
|
_viewClassMap[ViewManager.View_Lobby] = LobbyView
|
2025-12-18 20:23:31 +08:00
|
|
|
_viewClassMap[ViewManager.View_Family] = FamilyViewZuo
|
2025-04-10 11:19:20 +08:00
|
|
|
|
|
|
|
|
ControllerManager.OnGameConnect = __OnGameConnectAction
|
2025-11-26 17:46:48 +08:00
|
|
|
ControllerManager.OnGameWitnessConnect = __OnGameWitnessConnectAction
|
2025-04-10 11:19:20 +08:00
|
|
|
|
|
|
|
|
ControllerManager.WebClient.holdCallback = function(response)
|
|
|
|
|
if response.ReturnCode == Table_Error_code.ERR_LOGOUT then
|
2025-11-26 17:46:48 +08:00
|
|
|
ViewUtil.CloseModalWait2()
|
|
|
|
|
local _curren_msg =
|
|
|
|
|
MsgWindow.new(
|
|
|
|
|
nil,
|
|
|
|
|
"您的登录凭证已过期,请重新登录",
|
|
|
|
|
MsgWindow.MsgMode.OnlyOk
|
|
|
|
|
)
|
|
|
|
|
_curren_msg.onOk:Add(
|
|
|
|
|
function()
|
|
|
|
|
PlayerPrefs.DeleteKey('session_id')
|
|
|
|
|
PlayerPrefs.Save()
|
|
|
|
|
RestartGame()
|
|
|
|
|
end
|
|
|
|
|
)
|
|
|
|
|
_curren_msg:Show()
|
|
|
|
|
return true
|
2025-04-10 11:19:20 +08:00
|
|
|
end
|
|
|
|
|
if response.ReturnCode == -1 or response.ReturnCode == Table_Error_code.ERR_LOGOUT then
|
2025-11-06 17:37:53 +08:00
|
|
|
ViewUtil.CloseModalWait2()
|
2025-04-10 11:19:20 +08:00
|
|
|
NetResetConnectWindow.CloseNetReset()
|
|
|
|
|
RestartGame()
|
|
|
|
|
return true
|
|
|
|
|
end
|
|
|
|
|
return false
|
2025-04-01 10:48:36 +08:00
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function ViewManager.GetCurrenView()
|
2025-04-10 11:19:20 +08:00
|
|
|
return _currenView
|
2025-04-01 10:48:36 +08:00
|
|
|
end
|
|
|
|
|
|
2025-08-23 22:23:17 +08:00
|
|
|
function ViewManager.ChangeViewByClass(dview_class, data)
|
2025-04-10 11:19:20 +08:00
|
|
|
if (_currenView ~= nil) then
|
|
|
|
|
if _currenView._close_destroy then
|
|
|
|
|
_currenView:Destroy()
|
|
|
|
|
_viewMap[_currenView.dview_class] = nil
|
|
|
|
|
else
|
|
|
|
|
_currenView:Close()
|
2025-04-01 10:48:36 +08:00
|
|
|
end
|
2025-04-10 11:19:20 +08:00
|
|
|
if _currenView._s_callback then
|
|
|
|
|
_currenView._s_callback()
|
2025-04-01 10:48:36 +08:00
|
|
|
end
|
2025-04-10 11:19:20 +08:00
|
|
|
end
|
|
|
|
|
local tem = _viewMap[dview_class]
|
|
|
|
|
|
|
|
|
|
if not tem then
|
|
|
|
|
tem = dview_class.new()
|
|
|
|
|
|
2025-08-23 22:23:17 +08:00
|
|
|
if data and data._s_callback then
|
|
|
|
|
tem._s_callback = data._s_callback
|
|
|
|
|
end
|
|
|
|
|
if data then
|
|
|
|
|
tem._flag_showTip = data._flag_showTip
|
|
|
|
|
end
|
2025-04-10 11:19:20 +08:00
|
|
|
_viewMap[dview_class] = tem
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
tem.Id = id
|
|
|
|
|
tem.dview_class = dview_class
|
|
|
|
|
tem:Show()
|
|
|
|
|
_currenView = tem
|
|
|
|
|
return tem
|
2025-04-01 10:48:36 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local last_game_id = 0
|
2025-08-23 22:23:17 +08:00
|
|
|
function ViewManager.ChangeView(id, game_id, data)
|
2025-04-10 11:19:20 +08:00
|
|
|
-- if id==2 then
|
|
|
|
|
-- printlog("cccccccccccccccccccccccccccccccc")
|
|
|
|
|
-- printlog(debug.traceback())
|
|
|
|
|
--- end
|
|
|
|
|
|
|
|
|
|
local dview_class = _viewClassMap[id]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if not dview_class then
|
|
|
|
|
if last_game_id ~= 0 and last_game_id ~= game_id then
|
|
|
|
|
ExtendManager.GetExtendConfig(last_game_id):UnAssets()
|
2025-04-01 10:48:36 +08:00
|
|
|
end
|
2025-04-10 11:19:20 +08:00
|
|
|
local exconfig = ExtendManager.GetExtendConfig(game_id)
|
|
|
|
|
dview_class = exconfig:GetView(id)
|
|
|
|
|
last_game_id = game_id
|
|
|
|
|
end
|
|
|
|
|
if not dview_class then
|
|
|
|
|
return
|
|
|
|
|
end
|
2025-08-23 22:23:17 +08:00
|
|
|
return ViewManager.ChangeViewByClass(dview_class, data)
|
2025-04-01 10:48:36 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function ViewManager.OnApplicationPause()
|
2025-07-18 16:02:20 +08:00
|
|
|
print("game pause")
|
2025-10-14 20:44:57 +08:00
|
|
|
|
2025-06-10 16:11:48 +08:00
|
|
|
if (_currenView ~= nil) then
|
2025-04-01 10:48:36 +08:00
|
|
|
_currenView:OnApplicationPause()
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function ViewManager.OnApplicationActive()
|
2025-07-18 16:02:20 +08:00
|
|
|
print("game active")
|
2025-10-14 20:44:57 +08:00
|
|
|
|
2025-04-10 11:19:20 +08:00
|
|
|
if (_currenView ~= nil) then
|
2025-04-01 10:48:36 +08:00
|
|
|
_currenView:OnApplicationActive()
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function ViewManager.refreshGameView()
|
2025-04-10 11:19:20 +08:00
|
|
|
NetResetConnectWindow.ShowNetReset()
|
2025-04-01 10:48:36 +08:00
|
|
|
|
2025-04-10 11:19:20 +08:00
|
|
|
if DataManager.CurrenRoom then
|
|
|
|
|
ControllerManager.reset_join_room = 0
|
2025-04-01 10:48:36 +08:00
|
|
|
|
2025-04-10 11:19:20 +08:00
|
|
|
ControllerManager.ResetJionRoom()
|
|
|
|
|
else
|
|
|
|
|
NetResetConnectWindow.CloseNetReset()
|
|
|
|
|
ControllerManager.ChangeController(LoddyController)
|
|
|
|
|
ViewManager.ChangeView(ViewManager.View_Lobby)
|
|
|
|
|
end
|
2025-04-01 10:48:36 +08:00
|
|
|
end
|