dezhou_client/lua_probject/base_project/Game/ControllerManager.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