using Google.Protobuf; using Google.Protobuf.WellKnownTypes; using ServerCore; using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; using MetaAssets; namespace GameServer; public class GameModeHelper { public static (Result, IGameModeJoinHandler) getGameModeJoinHandler(InstanceRoom instanceRoom, EPlaceType placeType) { var result = new Result(); switch (placeType) { case EPlaceType.BattleRoom: return (result, new BattleInstanceJoinHandler(instanceRoom)); case EPlaceType.ArcadeRunning: return (result, new ArcadeRunningInstanceJoinHandler(instanceRoom)); case EPlaceType.GameRoom: return (result, new GameRoomJoinHandler(instanceRoom)); default: var err_msg = $"invalid placeType in this mode!!!! placeType : {placeType}"; result.setFail(ServerErrorCode.GameModeJoinHandlerNotExist, err_msg); return (result, new BattleInstanceJoinHandler(instanceRoom)); } } public static (Result, IGameModeInitHandler) getGameModeInitHandler(InstanceRoom instanceRoom, EPlaceType placeType) { var result = new Result(); switch (placeType) { case EPlaceType.BattleRoom: return (result, new BattleInstanceInitHandler(instanceRoom)); case EPlaceType.ArcadeRunning: return (result, new ArcadeRunningInstanceInitHandler(instanceRoom)); case EPlaceType.GameRoom: return (result, new GameRoomInitHandler(instanceRoom)); default: var err_msg = $"getGameModeInitHandler not!!!! placeType : {placeType}"; result.setFail(ServerErrorCode.GameModeInitHandlerNotExist, err_msg); return (result, new BattleInstanceInitHandler(instanceRoom)); } } public static (Result, IGameModeJoinSuccessHandler?) getGameModeJoinSuccessHandler(Player player, InstanceRoom instanceRoom, EPlaceType placeType) { var result = new Result(); switch (placeType) { case EPlaceType.BattleRoom: return (result, new BattleInstanceJoinSuccessHandler(player, instanceRoom)); case EPlaceType.ArcadeRunning: return (result, new ArcadeRunningInstanceJoinSuccessHandler(player, instanceRoom)); case EPlaceType.GameRoom: return (result, new GameRoomJoinSuccessHandler(player, instanceRoom)); default: var err_msg = $"getGameModeInitHandler not!!!! placeType : {placeType}"; result.setFail(ServerErrorCode.GameModeJoinSuccessHandlerNotExist, err_msg); return (result, null); } } }