public void TestPropertiesSetAfterInstantiate()
        {
            var game = new Game(SkillLevel.Beginner);
            var m    = new GameStartedMessage(game);

            Assert.AreEqual <IGame>(game, m.Game);
        }
Esempio n. 2
0
        public async Task <StartGameResultDTO> Handle(StartGameCommand command, CancellationToken cancellationToken)
        {
            var totalPlayers = new List <string>(command.PlayerUserIds);

            totalPlayers.Add(command.UserId);

            var game = this.gameRepository.Create(command.Title, totalPlayers);

            game.GameEnded += this.OnGameEnded;

            var friendIds       = command.PlayerUserIds.Select(f => f.ToString()).ToList();
            var allParticipents = new List <string>(friendIds);

            allParticipents.Add(command.UserId.ToString());

            var users = await this.userRepository.SearchUsersAsync(allParticipents);

            var pushInfosOfInvitedFriends = users
                                            .Where(u => u.PushInfo != null && u.Id != command.UserId.ToString())
                                            .Select(u => new { u.Language, u.PushInfo })
                                            .ToList();

            var message = new GameStartedMessage(game.Id, command.Title, command.PlayerUserIds);

            await this.notificationService.SendSignalRMessageAsync(
                friendIds,
                Constants.SignalR.NotificationHubName,
                HubMethodNames.GameStarted,
                message);

            var inviter = users.FirstOrDefault(u => u.Id == command.UserId.ToString());

            string url = $"{Constants.Urls.ApplicationUrl}/game/play/{game.Id}";

            var groupedByLanguage = pushInfosOfInvitedFriends.GroupBy(p => p.Language);

            foreach (var lang in groupedByLanguage)
            {
                var translatedMessage = await this.translationService.GetTranslationAsync(lang.Key, "Game.InvitationMessage", inviter.Name);

                this.notificationService.SendWebPushMessage(
                    lang.Select(l => l.PushInfo),
                    new WebPushNotificationMessage(command.Title, translatedMessage, url));
            }

            game.Start();

            return(new StartGameResultDTO(game.Id));
        }
Esempio n. 3
0
    private void OnGameStarted(GameStartedMessage msg)
    {
        bool homeTeam = _locator.GetService <IGameManager>().GameConfig.HomeSquadId == 0;

        _yawMin = minYaw;
        _yawMax = maxYaw;

        if (!homeTeam)
        {
            _yawMin += 180f;
            _yawMax += 180f;
        }
        float yaw = startYaw + (homeTeam? 0f : 180f);

        _yaw = _yawTarget = yaw;
    }
Esempio n. 4
0
 private void OnGameStarted(GameStartedMessage msg)
 {
     _bus.Publish(new Navigate(this, typeof(GameUIWindow)));
 }