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) printlog("lingmeng code ChangeController", _currenController, type) pt(_currenController) pt(type) printlog("lingmeng code ChangeController", type == GameController) if (_currenController ~= nil and not (string.find(_currenController.class, "GameController") and type == GameController)) then _currenController:OnExit() end _currenController = ControllerManager.GetController(type) printlog("lingmeng code ChangeController2", _currenController, type) pt(_currenController) pt(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) print("lingmeng code GameNetClinet", ControllerManager.GameNetClinet, client) if (ControllerManager.GameNetClinet ~= nil) then ControllerManager.GameNetClinet:destroy() end ControllerManager.GameNetClinet = client end function ControllerManager.OnConnect(code) print("lingmeng code 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.OnConnectWitness(code) print("lingmeng code OnConnectWitness", code) if (code ~= SocketCode.Connect) then ControllerManager.SetGameNetClient(nil) if code ~= SocketCode.DisconnectByServer then ControllerManager.OnGameWitnessConnect(SocketCode.TimeoutDisconnect) else ControllerManager.OnGameWitnessConnect(SocketCode.DisconnectByServer) end else ControllerManager.OnGameWitnessConnect(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 function ControllerManager.ResetWitnessRoom() ControllerManager.reset_witness_room = ControllerManager.reset_witness_room + 1 if ControllerManager.reset_witness_room > 999 then ControllerManager.OnGameWitnessConnect(SocketCode.NetworkException) return end ControllerManager.ChangeController(RoomController) local roomCtr = ControllerManager.GetController(RoomController) roomCtr:ResetWitnessRoom(function(res) if res.ReturnCode == 11 or res.ReturnCode == 81 or res.ReturnCode == 1005 then ControllerManager.OnGameWitnessConnect(SocketCode.Disconnect) return elseif res.ReturnCode ~= 0 then ControllerManager.ResetWitnessRoom() return end ControllerManager.OnGameWitnessConnect(SocketCode.Connect) end) end