private void InitializeGameList() { int i = 0; foreach (var game in gameCollection.GameList) { if (!game.Supported) { i++; continue; } var item = new XNADropDownItem(); item.Text = game.UIName; item.TextColor = UISettings.AltColor; item.Texture = game.Texture; ddCurrentChannel.AddItem(item); var chatChannel = connectionManager.FindChannel(game.ChatChannel); if (chatChannel == null) { chatChannel = connectionManager.CreateChannel(game.UIName, game.ChatChannel, true, "ra1-derp"); connectionManager.AddChannel(chatChannel); } item.Tag = chatChannel; if (game.GameBroadcastChannel != null) { var gameBroadcastChannel = connectionManager.FindChannel(game.GameBroadcastChannel); if (gameBroadcastChannel == null) { gameBroadcastChannel = connectionManager.CreateChannel(game.UIName + " Broadcast Channel", game.GameBroadcastChannel, true, null); connectionManager.AddChannel(gameBroadcastChannel); } gameBroadcastChannel.CTCPReceived += GameBroadcastChannel_CTCPReceived; } if (game.InternalName.ToUpper() == localGameID.ToUpper()) { ddCurrentChannel.SelectedIndex = i; } i++; } if (connectionManager.MainChannel == null) { // Set CnCNet channel as main channel if no channel found ddCurrentChannel.SelectedIndex = ddCurrentChannel.Items.Count - 1; } }
private void BroadcastGame() { Channel broadcastChannel = connectionManager.FindChannel(gameCollection.GetGameBroadcastingChannelNameFromIdentifier(localGame)); if (broadcastChannel == null) { return; } StringBuilder sb = new StringBuilder("GAME "); sb.Append(ProgramConstants.CNCNET_PROTOCOL_REVISION); sb.Append(";"); sb.Append(ProgramConstants.GAME_VERSION); sb.Append(";"); sb.Append(SGPlayers.Count); sb.Append(";"); sb.Append(channel.ChannelName); sb.Append(";"); sb.Append(channel.UIName); sb.Append(";"); if (started || Players.Count == SGPlayers.Count) { sb.Append("1"); } else { sb.Append("0"); } sb.Append("0"); // IsCustomPassword sb.Append("0"); // Closed sb.Append("1"); // IsLoadedGame sb.Append("0"); // IsLadder sb.Append(";"); foreach (SavedGamePlayer sgPlayer in SGPlayers) { sb.Append(sgPlayer.Name); sb.Append(","); } sb.Remove(sb.Length - 1, 1); sb.Append(";"); sb.Append(lblMapNameValue.Text); sb.Append(";"); sb.Append(lblGameModeValue.Text); sb.Append(";"); sb.Append(tunnel.Address); sb.Append(";"); sb.Append(0); // LoadedGameId broadcastChannel.SendCTCPMessage(sb.ToString(), QueuedMessageType.SYSTEM_MESSAGE, 20); }