Example #1
0
        public async Task <GameData> EnterGame(string userId)
        {
            Player player = await GetPlayer(userId);

            Room room;

            if (player.CurrentRoomId == null)
            {
                // If player new - create room for him and make him it's discoverer
                room = await CreateNewRoom(userId, Direction.None, null);

                // Update player CurrentRoomId
                player = await _usersClient.PatchRoomChange(userId, room.RoomId);
            }
            else
            {
                // If player old - return him to his room
                room = await _roomsClient.GetRoomById((int)player.CurrentRoomId);
            }

            GameData data = new GameData()
            {
                Room    = room,
                Player  = player,
                Monster = null
            };

            if (room.MonsterId != null)
            {
                data.Monster = await _monstersClient.GetMonsterById((int)room.MonsterId);
            }

            return(data);
        }