/// <summary> /// Creates a lobby for a deathmatch game with 10 players /// </summary> /// <param name="module"></param> /// <param name="properties"></param> /// <returns></returns> public static ILobby Deathmatch(LobbiesModule module, Dictionary <string, string> properties, IPeer creator) { // Create the teams var team = new LobbyTeam("") { MaxPlayers = 10, MinPlayers = 1 }; var config = new LobbyConfig(); // Create the lobby var lobby = new BaseLobby(module.GenerateLobbyId(), new[] { team }, module, config) { Name = ExtractLobbyName(properties) }; // Override properties with what user provided lobby.SetLobbyProperties(properties); // Add control for the game speed lobby.AddControl(new LobbyPropertyData() { Label = "Game Speed", Options = new List <string>() { "1x", "2x", "3x" }, PropertyKey = "speed" }, "2x"); // Default option return(lobby); }
/// <summary> /// Creates a 3 vs 3 lobby, instead of the regular <see cref="GameLobby"/>, /// it uses the <see cref="GameLobbyAuto"/>, which demonstrates how you /// can extend game lobby functionality /// </summary> /// <param name="module"></param> /// <param name="properties"></param> /// <returns></returns> public static ILobby ThreeVsThreeQueue(LobbiesModule module, Dictionary <string, string> properties, IPeer creator) { // Create the teams var teamA = new LobbyTeam("Team Blue") { MaxPlayers = 3, MinPlayers = 1 }; var teamB = new LobbyTeam("Team Red") { MaxPlayers = 3, MinPlayers = 1 }; // Set their colors teamA.SetProperty("color", "0000FF"); teamB.SetProperty("color", "FF0000"); var config = new LobbyConfig() { EnableReadySystem = false, EnableManualStart = false }; // Create the lobby var lobby = new BaseLobbyAuto(module.GenerateLobbyId(), new[] { teamA, teamB }, module, config) { Name = ExtractLobbyName(properties) }; // Override properties with what user provided lobby.SetLobbyProperties(properties); // Add control for the game speed lobby.AddControl(new LobbyPropertyData() { Label = "Game Speed", Options = new List <string>() { "1x", "2x", "3x" }, PropertyKey = "speed" }, "2x"); // Default option // Add control to enable/disable gravity lobby.AddControl(new LobbyPropertyData() { Label = "Gravity", Options = new List <string>() { "On", "Off" }, PropertyKey = "gravity", }); lobby.StartAutomation(); return(lobby); }