private void LbGameList_DoubleLeftClick(object sender, EventArgs e) { if (lbGameList.SelectedIndex < 0 || lbGameList.SelectedIndex >= lbGameList.Items.Count) { return; } HostedLANGame hg = (HostedLANGame)lbGameList.Items[lbGameList.SelectedIndex].Tag; if (hg.Game.InternalName.ToUpper() != localGame.ToUpper()) { lbChatMessages.AddMessage("The selected game is for " + gameCollection.GetGameNameFromInternalName(hg.Game.InternalName) + "!"); return; } if (hg.Locked) { lbChatMessages.AddMessage("The selected game is locked!"); return; } if (hg.IsLoadedGame) { if (!hg.Players.Contains(ProgramConstants.PLAYERNAME)) { lbChatMessages.AddMessage("You do not exist in the saved game!"); return; } } else { if (hg.Players.Contains(ProgramConstants.PLAYERNAME)) { lbChatMessages.AddMessage("Your name is already taken in the game."); return; } } if (hg.GameVersion != ProgramConstants.GAME_VERSION) { // TODO Show warning } lbChatMessages.AddMessage("Attempting to join game " + hg.RoomName + "..."); try { var client = new TcpClient(hg.EndPoint.Address.ToString(), ProgramConstants.LAN_GAME_LOBBY_PORT); byte[] buffer; if (hg.IsLoadedGame) { var spawnSGIni = new IniFile(ProgramConstants.GamePath + ProgramConstants.SAVED_GAME_SPAWN_INI); int loadedGameId = spawnSGIni.GetIntValue("Settings", "GameID", -1); lanGameLoadingLobby.SetUp(false, hg.EndPoint, client, loadedGameId); lanGameLoadingLobby.Enable(); buffer = encoding.GetBytes("JOIN" + ProgramConstants.LAN_DATA_SEPARATOR + ProgramConstants.PLAYERNAME + ProgramConstants.LAN_DATA_SEPARATOR + loadedGameId + ProgramConstants.LAN_MESSAGE_SEPARATOR); client.GetStream().Write(buffer, 0, buffer.Length); client.GetStream().Flush(); lanGameLoadingLobby.PostJoin(); } else { lanGameLobby.SetUp(false, hg.EndPoint, client); lanGameLobby.Enable(); buffer = encoding.GetBytes("JOIN" + ProgramConstants.LAN_DATA_SEPARATOR + ProgramConstants.PLAYERNAME + ProgramConstants.LAN_MESSAGE_SEPARATOR); client.GetStream().Write(buffer, 0, buffer.Length); client.GetStream().Flush(); lanGameLobby.PostJoin(); } } catch (Exception ex) { lbChatMessages.AddMessage(null, "Connecting to the game failed! Message: " + ex.Message, Color.White); } }
private void LbGameList_DoubleLeftClick(object sender, EventArgs e) { if (isInGameRoom) { topBar.SwitchToPrimary(); return; } if (lbGameList.SelectedIndex < 0 || lbGameList.SelectedIndex >= lbGameList.Items.Count) { return; } if (isJoiningGame) { return; } var mainChannel = connectionManager.MainChannel; HostedCnCNetGame hg = (HostedCnCNetGame)lbGameList.Items[lbGameList.SelectedIndex].Tag; if (hg.Game.InternalName.ToUpper() != localGameID.ToUpper()) { mainChannel.AddMessage(new ChatMessage(null, Color.White, DateTime.Now, "The selected game is for " + gameCollection.GetGameNameFromInternalName(hg.Game.InternalName) + "!")); return; } if (hg.Locked) { mainChannel.AddMessage(new ChatMessage(null, Color.White, DateTime.Now, "The selected game is locked!")); return; } if (hg.IsLoadedGame) { if (!hg.Players.Contains(ProgramConstants.PLAYERNAME)) { mainChannel.AddMessage(new ChatMessage(null, Color.White, DateTime.Now, "You do not exist in the saved game!")); return; } } if (hg.GameVersion != ProgramConstants.GAME_VERSION) { // TODO Show warning } string password = string.Empty; if (hg.Passworded) { passwordRequestWindow.SetHostedGame(hg); passwordRequestWindow.Enable(); return; } else { if (!hg.IsLoadedGame) { password = Rampastring.Tools.Utilities.CalculateSHA1ForString (hg.ChannelName + hg.RoomName).Substring(0, 10); } else { IniFile spawnSGIni = new IniFile(ProgramConstants.GamePath + "Saved Games\\spawnSG.ini"); password = Rampastring.Tools.Utilities.CalculateSHA1ForString( spawnSGIni.GetStringValue("Settings", "GameID", string.Empty)).Substring(0, 10); } } JoinGame(hg, password); }