public void CreateGame(List <HanksiteSession> realPlayers, LobbySettings settings)
 {
     lock (syncObject)
     {
         gameManagers.Add(new GameManager(realPlayers, settings));
     }
 }
示例#2
0
        public async Task SendLobbySettings(LobbySettings lobbySettings)
        {
            var lobby = _lobbiesManager.GetLobbyByPlayerConnectionId(Context.ConnectionId);

            if (lobby.GetHostPlayer().Connection == Context.ConnectionId)
            {
                lobby.LobbySettings = lobbySettings;
                await Clients.Group(lobby.Id).SendAsync("ReceiveLobbySettings", lobbySettings);
            }
        }
示例#3
0
        public bool CreateLobby(HanksiteSession ownerSession, LobbySettings settings)
        {
            lock (syncObject)
            {
                if (lobbyManagers.Any(manager => manager.Name == settings.Name))
                {
                    return(false);
                }

                lobbyManagers.Add(LobbyManager.CreateLobbyManager(ownerSession, settings));
                return(true);
            }
        }
示例#4
0
        /// <summary>
        /// Do NOT use, only for tests.
        /// </summary>
        public LobbyManager(HanksiteSession ownerSession, LobbySettings settings,
                            ILobbyMemberFactory lobbyMemberFactory, ILobbyManagerRepositoryDependencies repositoryDependencies)
        {
            this.lobbyMemberFactory     = lobbyMemberFactory;
            this.repositoryDependencies = repositoryDependencies;

            this.owner           = lobbyMemberFactory.CreateLobbyMember(ownerSession, this);
            this.settings        = settings;
            this.numberOfPlayers = settings.NumberOfPlayers - settings.BotNumbers.Sum(botNumber => botNumber.Number);

            this.connectedPlayers = new List <ILobbyMember>();
            this.connectedPlayers.Add(owner);
        }
示例#5
0
        private LobbyManager setupLobbyManager(int numberOfPlayers, LobbySettingsBotNumber[] botSettings,
                                               IEnumerable <string> userNames, out List <Mock <ILobbyMember> > lobbyMembers,
                                               out Mock <ILobbyManagerRepositoryDependencies> repositoryDependencies, out LobbySettings lobbySettings)
        {
            lobbyMembers = getLobbyMembersWithNames(userNames);
            var lobbyMemberFactory = createLobbyMemberFactoryForMembers(lobbyMembers);

            repositoryDependencies = new Mock <ILobbyManagerRepositoryDependencies>();

            lobbySettings = new LobbySettings
            {
                NumberOfPlayers = numberOfPlayers,
                BotNumbers      = botSettings
            };

            return(new LobbyManager(null, lobbySettings, lobbyMemberFactory.Object, repositoryDependencies.Object));
        }
    // Host a server
    public static void HostLobby(LobbySettings settings)
    {
        // If already connected, Bolt needs to be shutdown before joining a server
        if (IsHost || IsClient)
        {
            Debug.Log("Shutting down client...");
            BoltLauncher.Shutdown();
        }

        Debug.Log("...Restarting as Host");

        BoltConfig lobbySettings = new BoltConfig();

        lobbySettings.useNetworkSimulation       = settings.DEVSimulateNetworkCondition;
        lobbySettings.simulatedPingMean          = settings.DEVPingMean;
        lobbySettings.simulatedPingJitter        = settings.DEVPingJitter;
        lobbySettings.serverConnectionAcceptMode = BoltConnectionAcceptMode.Auto;

        BoltLauncher.StartServer(UdpEndPoint.Parse("0.0.0.0:27000"), lobbySettings);
    }
示例#7
0
        /// <summary>
        /// Host a new lobby.
        /// </summary>
        /// <param name="player">The player that is creating the server.</param>
        /// <param name="settings">The settings to use for the lobby.</param>
        /// <returns>A lobby host if successful.</returns>
        public static LobbyHost CreateLobby(Player player, LobbySettings settings) {
            NetworkContext context = NetworkContext.CreateServer(player, settings.Password);

            return new LobbyHost(context, settings.MapManager, settings.SerializedMap);
        }
示例#8
0
文件: LobbyHost.cs 项目: suzuke/forge
        /// <summary>
        /// Host a new lobby.
        /// </summary>
        /// <param name="player">The player that is creating the server.</param>
        /// <param name="settings">The settings to use for the lobby.</param>
        /// <returns>A lobby host if successful.</returns>
        public static LobbyHost CreateLobby(Player player, LobbySettings settings)
        {
            NetworkContext context = NetworkContext.CreateServer(player, settings.Password);

            return(new LobbyHost(context, settings.MapManager, settings.SerializedMap));
        }
 public bool CreateLobby(LobbySettings settings)
 {
     log($"created lobby with name '{settings.Name}'");
     return(LobbyManagerRepository.Instance.CreateLobby(this, settings));
 }
示例#10
0
 public static LobbyManager CreateLobbyManager(HanksiteSession ownerSession, LobbySettings settings)
 {
     return(new LobbyManager(ownerSession, settings, new LobbyMemberFactory(), new LobbyManagerRepositoryDependecies()));
 }
示例#11
0
 public void StartGame(List <HanksiteSession> players, LobbySettings settings)
 {
     GameManagerRepository.Instance.CreateGame(players, settings);
 }