/// <summary> /// Creates a lobby for a deathmatch game with 10 players /// </summary> /// <param name="plugin"></param> /// <param name="properties"></param> /// <returns></returns> public static ILobby Deathmatch(LobbiesPlugin plugin, 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(plugin.GenerateLobbyId(), new[] { team }, plugin, 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="plugin"></param> /// <param name="properties"></param> /// <returns></returns> public static ILobby ThreeVsThreeQueue(LobbiesPlugin plugin, 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(plugin.GenerateLobbyId(), new[] { teamA, teamB }, plugin, 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); }
public Lobby(int lobbyId, IEnumerable <LobbyTeam> teams, LobbiesPlugin plugin) { Id = lobbyId; Plugin = plugin; GameIp = ""; GamePort = -1; Controls = new Dictionary <string, LobbyPropertyData>(); Members = new Dictionary <string, LobbyMember>(); MembersByPeerId = new Dictionary <long, LobbyMember>(); Properties = new Dictionary <string, string>(); Teams = teams.ToDictionary(t => t.Name, t => t); Subscribers = new HashSet <IPeer>(); MaxPlayers = Teams.Values.Sum(t => t.MaxPlayers); MinPlayers = Teams.Values.Sum(t => t.MinPlayers); }
public LobbyFactoryAnonymous(string id, LobbiesPlugin plugin, LobbyCreationFactory factory) { Id = id; _factory = factory; _plugin = plugin; }