Exemple #1
0
        private async Task OnGameEndedAsync(GameEndedMessage message)
        {
            var view    = message.FinalState;
            var leaders = await GetLeadersAsync(view);

            var hub = _connectionManager.GetHubContext <GameHub>();

            hub.Clients.All.updateLeaderboard(new { GameId = view.Game.GameId, Final = true, Leaders = leaders });
        }
Exemple #2
0
 private void CheckState(CheckStateCommand command)
 {
     if (!_expired && ShouldBeExpired())
     {
         _clock.Stop();
         _expired = true;
         var endingMessage = new GameEndedMessage(_gameState.GameId, GetCurrentView());
         Context.System.EventStream.Publish(endingMessage);
     }
     else if (!_expired)
     {
         PublishCurrentState();
     }
 }
        private async Task SaveGameAsync(GameEndedMessage x)
        {
            var league = new League
            {
                CreatedAt   = x.FinalState.Game.CreatedAt,
                Description = x.FinalState.Game.Description,
                Duration    = x.FinalState.Game.Duration,
                LeagueId    = x.FinalState.Game.GameId,
                Name        = x.FinalState.Game.Name
            };
            await _client.PutLeagueAsync(x.FinalState.Game.GameId, league);

            // TODO: make this less chatty by adding a bulk API
            foreach (var region in x.FinalState.Regions)
            {
                var apiRegion = new Region
                {
                    BlockCount = region.BlockCount,
                    Name       = region.Name,
                    RegionId   = region.RegionId
                };
                await _client.PutRegionAsync(x.FinalState.Game.GameId, apiRegion.RegionId, apiRegion);
            }
        }
Exemple #4
0
 private void OnGameEnd(GameEndedMessage x)
 {
     _gameToCountMap.Remove(x.GameId);
     _dirty = true;
 }
Exemple #5
0
 private void OnGameEnded(GameEndedMessage message)
 {
     Context.ActorSelection("/user/leaderboard").Tell(message);
 }