import(".Protocol") import(".Controller.IController") import(".Controller.LoginController") import(".Controller.LoddyController") import(".Controller.GameController") import(".Controller.NewGroupController") import(".Controller.RoomController") import(".Controller.GroupMgrController") --- -- a net ControllerManager ControllerManager = { -- http网络连接 WebClient = nil, -- game网络长连接 GameNetClinet = nil, reset_join_room = 0 } local _currenController = nil local _controllerMap = {} function ControllerManager.Init() _controllerMap[LoginController] = LoginController.new() _controllerMap[LoddyController] = LoddyController.new() _controllerMap[NewGroupController] = NewGroupController.new() _controllerMap[RoomController] = RoomController.new() _controllerMap[GroupMgrController] = GroupMgrController.new() local hostIp = GetGameInfo("login_url") if(debug_print) then print("hostIp:::"..hostIp) end ControllerManager.WebClient = NetClient.new(hostIp, "majiang", ConnectionProtocol.Web) --ControllerManager.GroupClient = nil--NetClient.new("http://192.168.0.1:8081/", "web_group", ConnectionProtocol.Web) end function ControllerManager.ChangeController(type) if (_currenController ~= nil) then _currenController:OnExit() end _currenController = ControllerManager.GetController(type) _currenController:OnEnter() return _currenController end -- 获取当前控制器 function ControllerManager.GetCurrenController() return _currenController end --- --@function [parent=#ControllerManager] GetController --@return Game.Controller.IController#IController description function ControllerManager.GetController(cls) if (cls == GameController) then if DataManager.CurrenRoom then local exconfig = ExtendManager.GetExtendConfig(DataManager.CurrenRoom.game_id) return exconfig.GetGameController() end end local c = _controllerMap[cls] return c end function ControllerManager.SetGameNetClient(client) if (ControllerManager.GameNetClinet ~= nil) then ControllerManager.GameNetClinet:destroy() end ControllerManager.GameNetClinet = client -- if (client ) then -- client.onconnect:Add(ControllerManager.OnConnect) -- end end function ControllerManager.OnConnect(code) if (code ~= SocketCode.Connect) then ControllerManager.SetGameNetClient(nil) if code ~= SocketCode.DisconnectByServer then ControllerManager.OnGameConnect(SocketCode.TimeoutDisconnect) ControllerManager.reset_join_room = 0 ControllerManager.ResetJionRoom() else ControllerManager.OnGameConnect(SocketCode.DisconnectByServer) end else ControllerManager.OnGameConnect(SocketCode.Connect) end end function ControllerManager.ResetJionRoom() ControllerManager.reset_join_room = ControllerManager.reset_join_room + 1 if ControllerManager.reset_join_room > 3 then ControllerManager.OnGameConnect(SocketCode.NetworkException) return end ControllerManager.ChangeController(LoddyController) local loddyctr = ControllerManager.GetController(LoddyController) loddyctr:ResetJionRoom(function(res) if res.ReturnCode == 11 or res.ReturnCode == 81 or res.ReturnCode == 1005 then ControllerManager.OnGameConnect(SocketCode.Disconnect) return elseif res.ReturnCode ~= 0 then ControllerManager.ResetJionRoom() return end ControllerManager.OnGameConnect(SocketCode.Connect) end) end