/// <summary> /// Try to find a game for the player /// </summary> public void FindGame() { CurrentState = SearchState.Searching; var games = JoinGameHelper.GetAvailableGameForPlayers(); if (games.Any()) { int r = rnd.Next(games.Count); FoundGame = games[r]; CurrentState = SearchState.Found; } else { CurrentState = SearchState.NotFound; MessageHelper.ShowMessage("Personne ne cherche de belle princesse comme toi", "Aucune partie accessible n'a été trouvé, Vous pouvez chercher de nouveau ou héberger vous même la partie"); } }
public void Notice(IEvent triggeredEvent) { var uiEvent = triggeredEvent as UiEvent; if (uiEvent != null) { HandleUiEvent(uiEvent); } var gameEnd = triggeredEvent as EndGameEvent; if (gameEnd != null) { Console.WriteLine("**************** Received EndGameEvent ****************"); EndGame(gameEnd.Info); ExitGame(); EnterSubstate(OnlineSubstate.OnlineBoard); } // After the user create a game in the host menu var createGame = triggeredEvent as CreateGameRequestEvent; if (createGame != null) { var config = createGame.Config as OnlineGameConfig; Debug.Assert(config != null, "Received a CreateGameRequestEvent with no valid OnlineGameConfig"); var model = config.GetGameModel(); // Create game on server var created = GameAccess.Instance.CreateGame(model); JoinWaitingRoom(created.HashId, true, model.Password); } var spectateGame = triggeredEvent as SpectateGameEvent; if (spectateGame != null) { GameAccess.Instance.Spectate(spectateGame.HashId); // Todo: Add on Spectator list on server JoinSession(spectateGame.HashId); } // When the player want to join a hosted game var joinGame = triggeredEvent as JoinOnlineGameRequestEvent; if (joinGame != null) { if (JoinGameHelper.IsReconnection(joinGame.HashId)) { ReconnectToGame(joinGame.HashId); } else if (JoinGameHelper.CanJoin(joinGame.HashId, true)) { try { // Show popup asking the password if (joinGame.IsPrivate && joinGame.Password == null) { var context = new ConnectPrivateGameViewModel(joinGame.HashId, joinGame.Name); var popup = new ConnectToPrivateGame(context); popup.ShowDialog(); } else { GameAccess.Instance.JoinGame(joinGame.HashId, joinGame.Password); JoinWaitingRoom(joinGame.HashId); } } catch (Exception e) { // Cannot join game if (joinGame.IsPrivate) { MessageHelper.ShowError("Vous ne pouvez pas rejoindre ce bal", "Avez vous donné le bon mots de passes?", e); } else { MessageHelper.ShowError("Vous ne pouvez pas rejoindre ce bal", "Et je ne suis pas sur de comprendre pourquoi (s'il vous plait regarder votre journal de princesse)", e); } } } } var matchMaking = triggeredEvent as HostJoiningCreatedGameEvent; if (matchMaking != null) { JoinSession(matchMaking.HashId); } // Handle the event only if it came from the server var onlineSession = triggeredEvent as AbstractSessionEvent; if (onlineSession != null && !onlineSession.SendToServer) { HandleOnlineSessionEvent(onlineSession); } var reconnectToGame = triggeredEvent as ReconnectToGameEvent; if (reconnectToGame != null) { ReconnectToGame(reconnectToGame.Game.HashId); } }