public WaitingForConnectionPage(LidgrenKulamiPeer.KulamiPeer peer) { InitializeComponent(); networkPeer = peer; ImageBrush backgrnd = new ImageBrush(); backgrnd.ImageSource = new BitmapImage(new Uri(startupPath + "/images/SelectionPage.png", UriKind.Absolute)); ImageBrush backButtonib = new ImageBrush(); backButtonib.ImageSource = new BitmapImage(new Uri(startupPath + "/images/backButton.png", UriKind.Absolute)); Background.Background = backgrnd; BackButton.Background = backButtonib; //Task.Delay(6000); }
private async Task StartNetworkGame(string playerName, LidgrenKulamiPeer.KulamiPeer networkPeer) { shouldBreakOut = false; bool shouldContinue = true; bool terminate = false; Random rnd = new Random(); DateTime start = DateTime.Now; DateTime end; bool keepWaiting; if (networkPeer.listener.connection == null) keepWaiting = true; else if (networkPeer.listener.connection.Status == Lidgren.Network.NetConnectionStatus.None) keepWaiting = true; else keepWaiting = (networkPeer.listener.connection.Status != Lidgren.Network.NetConnectionStatus.Connected); while (keepWaiting) { if(shouldBreakOut) { terminate = true; break; } await Task.Delay(1000); Console.WriteLine("Waiting for connection"); if (networkPeer.listener.connection == null) keepWaiting = true; else if (networkPeer.listener.connection.Status == Lidgren.Network.NetConnectionStatus.None) keepWaiting = true; else if (networkPeer.listener.connection.Status == Lidgren.Network.NetConnectionStatus.Disconnected) { keepWaiting = true; networkPeer.killPeer(); networkPeer = null; Console.WriteLine("reconnecting..."); networkPeer = new LidgrenKulamiPeer.KulamiPeer(3070); networkPeer.Start(); } else keepWaiting = (networkPeer.listener.connection.Status != Lidgren.Network.NetConnectionStatus.Connected); end = DateTime.Now; if ((end - start).TotalSeconds > 20) { shouldContinue = false; networkPeer.killPeer(); networkPeer = null; break; } } if (terminate) { Console.WriteLine("No Longer Looking For Connections. Exiting to Main Menu"); } else if (!shouldContinue) { Switcher.Switch(new NoConnectionsFoundPage()); } else { bool connectionLost = false; networkPeer.sendMove(playerName); string opponentName = networkPeer.getMove(); while (opponentName == null) { await Task.Delay(1000); opponentName = networkPeer.getMove(); } Switcher.Switch(new OpponentNamePage(opponentName)); await Task.Delay(3000); int networkingBoardNum = 0; int myRandomBoardNum = rnd.Next(1, 8); networkPeer.sendMove(myRandomBoardNum.ToString()); string move = networkPeer.getMove(); while (move == null) { if (networkPeer.listener.connection.Status == Lidgren.Network.NetConnectionStatus.Connected) { await Task.Delay(1000); move = networkPeer.getMove(); } else { connectionLost = true; break; } } if (!connectionLost) { int opponentRandomBoardNum = Convert.ToInt32(move); networkingBoardNum = (myRandomBoardNum + opponentRandomBoardNum) / 2; while (myRandomBoardNum == opponentRandomBoardNum) { myRandomBoardNum = rnd.Next(1, 8); networkPeer.sendMove(myRandomBoardNum.ToString()); move = networkPeer.getMove(); while (move == null) { if (networkPeer.listener.connection.Status == Lidgren.Network.NetConnectionStatus.Connected) { await Task.Delay(1000); move = networkPeer.getMove(); } else { connectionLost = true; break; } } opponentRandomBoardNum = Convert.ToInt32(move); } if (!connectionLost) { bool meFirst; if (myRandomBoardNum > opponentRandomBoardNum) meFirst = true; else meFirst = false; Switcher.Switch(new LANGamePage(networkPeer, networkingBoardNum, meFirst, playerName, opponentName)); } else { Switcher.Switch(new ConnectionLostPage()); } } else { Switcher.Switch(new ConnectionLostPage()); } } }
public LANGamePage(LidgrenKulamiPeer.KulamiPeer nPeer, int boardNum, bool meFirst, string mName, string oName) { InitializeComponent(); networkPeer = nPeer; myName = mName; opponentsName = oName; if (meFirst) { PlayerTurnLabel.Visibility = System.Windows.Visibility.Visible; PlayerTurnLabel.Foreground = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFE85252")); fuelIndicator1.Visibility = Visibility.Visible; OpponentTurnLabel.Visibility = System.Windows.Visibility.Hidden; player1turn = true; myColor = "Red"; opponentsColor = "Blue"; } else { PlayerTurnLabel.Visibility = System.Windows.Visibility.Hidden; fuelIndicator2.Visibility = System.Windows.Visibility.Visible; OpponentTurnLabel.Visibility = System.Windows.Visibility.Visible; OpponentTurnLabel.Foreground = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFE85252")); player1turn = false; myColor = "Blue"; opponentsColor = "Red"; } string songPath = startupPath + "/sound/music/Soundtrack.mp3"; soundTrackMediaPlayer.Open(new Uri(songPath)); soundTrackMediaPlayer.MediaEnded += new EventHandler(Song_Ended); if (!SoundSetting.MusicOn) soundTrackMediaPlayer.IsMuted = true; soundTrackMediaPlayer.Play(); buttonNames = new Dictionary<string, Button>(); allButtons = GameBoard.Children.OfType<Button>(); foreach (Button b in allButtons) { buttonNames.Add(b.Name.ToString(), b); } engine = new KulamiEngine(); engine.StartGame(GameType.LANMultiplayer, boardNum); soundEffectPlayer.PlayStartGameSound(); InitializeImages(boardNum); if (!meFirst) { if (!IsConnected()) { Disconnect(); } else { try { MakeOpponentMove(); } catch { } } } checkConnect.Elapsed += new ElapsedEventHandler(IfConnecting); checkConnect.AutoReset = true; checkConnect.Enabled = true; }