require "Game.View.init" --- -- a net ViewManager ViewManager = { View_Login = 1, View_Lobby = 2, 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 _curren_msg = BaseWindow.new("ui://Common/Win_ConnectTip",_currenView._root_view) local view = _curren_msg._view view:GetChild("tex_message").text = txt_msg view:GetChild("btn_connect").onClick:Set(function() _curren_msg:Destroy() _curren_msg = nil NetResetConnectWindow.ShowNetReset() ControllerManager.reset_join_room = 0 ControllerManager.ResetJionRoom() end) view:GetChild("btn_back").onClick:Set(function() _curren_msg:Destroy() _curren_msg = nil NetResetConnectWindow.CloseNetReset() ControllerManager.ChangeController(LoddyController) ViewManager.ChangeView(ViewManager.View_Lobby) 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 ViewManager.ChangeView(ViewManager.View_Main,DataManager.CurrenRoom.game_id) 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() _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 end end function ViewManager.GetCurrenView() return _currenView end 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() end if _currenView._s_callback then _currenView._s_callback() end 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 end local last_game_id = 0 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() end 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) end function ViewManager.OnApplicationPause() -- print("game pause") if (_currenView ~= nil) then _currenView:OnApplicationPause() end end function ViewManager.OnApplicationActive() -- print("game active") if (_currenView ~= nil) then _currenView:OnApplicationActive() end end function ViewManager.refreshGameView() NetResetConnectWindow.ShowNetReset() if DataManager.CurrenRoom then ControllerManager.reset_join_room = 0 ControllerManager.ResetJionRoom() else NetResetConnectWindow.CloseNetReset() ControllerManager.ChangeController(LoddyController) ViewManager.ChangeView(ViewManager.View_Lobby) end end