public async Task <IActionResult> RegisterSteamUser()
        {
            var authResult = await HttpContext.AuthenticateAsync(AuthenticationConfiguration.SteamCookieScheme);

            if (!authResult.Succeeded)
            {
                // TODO: Should probably add an error here
                return(RedirectToAction("Index", "Home"));
            }

            var steamId = authResult.Principal.FindFirstValue(ClaimTypes.NameIdentifier);
            var player  = await _repo.GetPlayer(steamId);

            if (player != null)
            {
                return(await SignInSteamUser(player));
            }

            player = new Player
            {
                SteamId  = steamId,
                PlayerId = Guid.NewGuid(),
                Name     = authResult.Principal.FindFirstValue(ClaimTypes.Name),
            };

            // TODO: Refactor this into a dedicated client for easier testing
            using (var client = new HttpClient())
            {
                try
                {
                    var key      = _configuration["Authentication:Steam:AppKey"];
                    var url      = $"api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key={key}&steamids={steamId.Replace("https://steamcommunity.com/openid/id/", "")}";
                    var response = await client.GetAsync("https://" + url);

                    var body = await response.Content.ReadAsStringAsync();

                    var payload     = JsonConvert.DeserializeObject <SteamApiResponseWrapper <GetPlayerSummariesResponse> >(body);
                    var steamplayer = payload.Response.Players.FirstOrDefault();
                    player.ProfileURL   = steamplayer.ProfileURL;
                    player.Avatar       = steamplayer.Avatar;
                    player.AvatarFull   = steamplayer.AvatarFull;
                    player.AvatarMedium = steamplayer.AvatarMedium;
                }
                catch (Exception e)
                {
                    _logger.Error(e, $"Could not fetch player summary for player {steamId}! Error: {e.Message}");
                    // TODO: Should probably add an error response here
                    return(RedirectToAction("Index", "Home"));
                }
            }

            var evnt = new PlayerCreatedEvent(player);

            HttpContext.Items[nameof(IEvent)] = evnt;
            var result = await _eventStore.ProduceAsync(evnt);

            return(await SignInSteamUser(player));
        }
        public async Task SignUpPlayer(SignUpPlayerModel model)
        {
            var suModel = new SignUpModel()
            {
                Username = model.Username,
                Password = model.Password,
                Role     = Role.Player.ToString()
            };
            var id = await SignUp(suModel);

            var @event = new PlayerCreatedEvent()
            {
                PlayerId  = id,
                Name      = model.Name,
                Surname   = model.Surname,
                Age       = model.Age,
                LevelName = model.LevelName
            };

            await _publisher.PublishAsync(@event);
        }
    private void CreateStartingEnemies(PlayerCreatedEvent e)
    {
        currentEnemies.Clear();

        currentSpawnableEnemyWeights = new float[spawnableEnemyWeights.Length];
        for (int i = 0; i < spawnableEnemyWeights.Length; i++)
        {
            currentSpawnableEnemyWeights[i] = spawnableEnemyWeights[i];
        }

        targetPlayer = e.transform;

        for (int i = 0; i < startingEnemyCount; i++)
        {
            GameObject obj = GetEnemyBasedOnWeight();
            obj.transform.position = enemySpawnPoints[UnityEngine.Random.Range(0, enemySpawnPoints.Length - 1)].position;
            obj.transform.LookAt(targetPlayer.position);
            obj.GetComponent <Enemy>().InitializeEnemy(targetPlayer.gameObject);
            currentEnemies.Add(obj);
        }

        enemyCreated     = true;
        enemyCreatedTime = DateTime.Now;
    }
Example #4
0
 private void InitializeCamera(PlayerCreatedEvent e)
 {
     playerTransform   = e.transform;
     playerMoveStarted = true;
 }