Example #1
0
        public override async Task <CreatePlayerStateReply> CreatePlayerState(CreatePlayerStateRequest request, ServerCallContext context)
        {
            var PlayerState = new PlayerGameState();

            PlayerState.Game         = JsonConvert.DeserializeObject <Cartridge>(request.Game);
            PlayerState.PlayerKey    = Guid.NewGuid().ToString();
            PlayerState.Inventory    = new Inventory();
            PlayerState.PlayerHp     = 10;
            PlayerState.WalkedEast   = 0;
            PlayerState.WalkedNorth  = 0;
            PlayerState.WalkedSouth  = 0;
            PlayerState.WalkedWest   = 0;
            PlayerState.PlayerKey    = request.PlayerName;
            PlayerState.CurrentScene = PlayerState.Game.Locations.FirstOrDefault()?.Name;

            await _mongoRepository.InsertOneAsync(PlayerState);

            //TODO: Add Call to Cache server here to store the player name under the game id in redis

            return(new CreatePlayerStateReply()
            {
                Message = JsonConvert.SerializeObject(PlayerState)
            });
        }
 //TODO: clean up the models here
 public async Task <CreatePlayerStateReply> CreateNewGameState(CreatePlayerStateRequest request)
 {
     return(await _client.CreatePlayerStateAsync(request));
 }