jx_client_neibu/lua_probject/base_project/Game/ViewManager.lua

179 lines
4.4 KiB
Lua
Raw Normal View History

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-04-01 10:48:36 +08:00
View_Main = 3,
View_PlayBack = 4,
View_Family = 5,
}
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)
--print("state:"..state)
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
elseif state == SocketCode.DisconnectByServer then
__NetTip("网络断开连接!")
elseif state == SocketCode.ExceptionOnConnect or state == SocketCode.NetworkException then
__NetTip("请检查您的网络环境!")
elseif state == SocketCode.Disconnect then
ControllerManager.ChangeController(LoddyController)
ViewManager.ChangeView(ViewManager.View_Lobby)
else
NetResetConnectWindow.ShowNetReset()
end
ViewUtil.CloseModalWait()
end
function ViewManager.Init()
2025-04-10 11:19:20 +08:00
_viewClassMap[ViewManager.View_Login] = LoginView
_viewClassMap[ViewManager.View_Lobby] = LobbyView
_viewClassMap[ViewManager.View_Family] = FamilyView
ControllerManager.OnGameConnect = __OnGameConnectAction
ControllerManager.WebClient.holdCallback = function(response)
if response.ReturnCode == Table_Error_code.ERR_LOGOUT then
PlayerPrefs.DeleteKey("session_id")
PlayerPrefs.Save()
end
if response.ReturnCode == -1 or response.ReturnCode == Table_Error_code.ERR_LOGOUT then
ViewUtil.CloseModalWait()
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-04-10 11:19:20 +08:00
function ViewManager.ChangeViewByClass(dview_class, callback)
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()
tem._s_callback = callback
_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-04-10 11:19:20 +08:00
function ViewManager.ChangeView(id, game_id, callback)
-- 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
return ViewManager.ChangeViewByClass(dview_class, callback)
2025-04-01 10:48:36 +08:00
end
function ViewManager.OnApplicationPause()
-- print("game pause")
2025-04-10 11:19:20 +08:00
if (_currenView ~= nil) then
2025-04-01 10:48:36 +08:00
_currenView:OnApplicationPause()
end
end
function ViewManager.OnApplicationActive()
-- print("game active")
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