113 lines
3.6 KiB
Lua
113 lines
3.6 KiB
Lua
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 |