// Start is called before the first frame update private void Awake() { if (MultiPlayerSettings.multiPlayerSettings == null) { MultiPlayerSettings.multiPlayerSettings = this; } else { if (MultiPlayerSettings.multiPlayerSettings != this) { Destroy(this.gameObject); } } DontDestroyOnLoad(this.gameObject); }
public async void Multiplayer_Tapped(object sender, EventArgs e) { BGMusics.Clicking_Sound().Play(); BGMusics.Menu_BGM().Stop(); BGMusics.InGame_BGM().Play(); Flow.GetPlayerMode(true); SaveOrLoad.ALoadedGame(false); if (TapCounter > 1) { return; } LoadingBit.IsVisible = true; Fetch.IsRunning = true; string CacheEmail = Application.Current.Properties["UserEmail"].ToString(); string CachePassword = Application.Current.Properties["UserPassword"].ToString(); try { if (string.IsNullOrEmpty(CacheEmail) || string.IsNullOrEmpty(CachePassword)) { await DisplayAlert("No Account", "Please Log in", "OK"); LoadingBit.IsVisible = false; Fetch.IsRunning = false; return; } var link = await apiClient.LoginEmailPasswordAsync(CacheEmail, CachePassword); var userdata = await apiClient.GetUserAsync(link.User.LocalId); } catch (Exception ex) { LoadingBit.IsVisible = false; Fetch.IsRunning = false; await DisplayAlert("No Account", "Please Log in", "OK"); return; } if (string.IsNullOrEmpty(UserData.GetUserLabel())) { LoadingBit.IsVisible = false; Fetch.IsRunning = false; await DisplayAlert("No Account", "Please Log in", "OK"); return; } try { me.UserName = UserData.GetUserLabel()?.Trim(); me.UserId = Application.Current.Properties["UserId"].ToString(); lblMessages.Text = "Getting connection info..."; SignalRConnectionInfo connectionInfo = await SignalRService.GetSignalRConnectionInfo(); var url = connectionInfo.Url; lblMessages.Text = $"Connecting..."; connection = new HubConnectionBuilder() .WithUrl(url, options => { options.AccessTokenProvider = () => Task.FromResult(connectionInfo.AccessToken); }) .Build(); //connection.Closed += async (error) => //{ // //Optional code: only used for retrying to connect // //await Task.Delay(new Random().Next(0, 5) * 1000); // //await connection.StartAsync(); //}; #region Connection //Waiting for other player connection.On <GamePlayer>("waiting", (player) => { Device.BeginInvokeOnMainThread(() => { if (player.UserId == me.UserId) { Fetch.IsRunning = true; lblMessages.Text = "Waiting for players..."; } }); }); //2 player game successfully created (method name MUST be 'newgame' connection.On <GameInfo>("newgame", (info) => { Device.BeginInvokeOnMainThread(() => { gameInfo = info; var currentPlayer = info.Players.Find(x => x.UserId == me.UserId); if (currentPlayer.PlayerNumber == 1) { isPlayer1 = true; /// btnStartTimer.IsEnabled = true; } else { isPlayer1 = false; // btnStartTimer.IsEnabled = false; } MultiPlayerSettings.IsThisPlayer1(isPlayer1); //Fill label with game content // lblGameContent.Text = $"Room Id: {info.RoomId}{Environment.NewLine}Player 1: {info.Players[0].UserName}{Environment.NewLine}Player 2: {info.Players[1].UserName}{Environment.NewLine}Toks:{Environment.NewLine}"; lblMessages.Text = $"Room Id: {info.RoomId}{Environment.NewLine}Player 1: {info.Players[0].UserName}{Environment.NewLine}Player 2: {info.Players[1].UserName}{Environment.NewLine}Toks:{Environment.NewLine}"; if (MultiPlayerSettings.YupThisIsPlayer1()) { MultiPlayerSettings.OtherPlayersData(info.Players[1].UserName, info.Players[1].UserPhoto); } else { MultiPlayerSettings.OtherPlayersData(info.Players[0].UserName, info.Players[0].UserPhoto); } for (int i = 0; i < info.Toks.Count; ++i) { mainv.OnlineQoutes.Add(new OnlineQoutes() { QouteID = info.Toks[i].Id, QoutePhrase = info.Toks[i].PrimaryFieldText, QoutesSource = info.Toks[i].SecondaryFieldText, Category = info.Toks[i].Category }); } MultiPlayerSettings.GetGameInfo(gameInfo); Selection.GetOnlineList(mainv.OnlineQoutes); var navPage = new NavigationPage(new Blank2()); Application.Current.MainPage = navPage; }); }); #endregion BGMusics.Loading_Sound().Play(); await connection.StartAsync(); Fetch.IsRunning = false; lblMessages.Text = $"Connected."; await SignalRService.MultiplayerSetup(me); Btn_Find.IsVisible = true; } catch (Exception ex) { // lblMessages.Text = ex.Message; await DisplayAlert("Error", ex.ToString(), "Ok"); } /* * var navPage = new NavigationPage(new Multiplayer()); * await Task.Delay(200); * await navPage.FadeTo(0, 250); * await Task.Delay(200); * await navPage.FadeTo(1, 250); * Application.Current.MainPage = navPage; * */ }