Многопользовательская игра Firebase Firestore Matchmaking - PullRequest
0 голосов
/ 11 сентября 2018

Итак, я хочу создать многопользовательскую игру с использованием Firebase Firestore, которая предполагает сватовство двух игроков.У меня есть коллекция игровых объектов, и в каждой игре есть поле для создателя и участника (только UID пользователей).Я пытаюсь присоединиться к созданным играм и борюсь с этим.Вот то, что у меня сейчас есть.

 fun findOpenGame(onComplete: (gameFound: Boolean, gameObject: Game?, gameRef: DocumentReference?) -> Unit) {
        gamesCollectionRef
                .whereEqualTo("joiner", null)
                .get()
                .addOnCompleteListener { task ->
                    if (task.isSuccessful) {
                        for (document: DocumentSnapshot in task.result) {
                            val game: Game = document.toObject(Game::class.java)!!
                            if (game.joiner == null) {
                                document.reference.update("joiner", FirebaseAuth.getInstance().uid)
                                        .addOnSuccessListener {
                                            onComplete(true, game, document.reference)
                                        }
                                        .addOnFailureListener {
                                            Log.e(FirestoreUtil.javaClass.simpleName, "Couldn't connect to game")
                                        }
                            }
                        }

                    } else {
                        //no games to join
                        onComplete(false, null, null)
                    }
                }
    }

Кстати, я действительно новичок в Kotlin, поэтому, пожалуйста, не стесняйтесь сказать мне, если я упускаю что-то очевидное.Мне также приходится сталкиваться с проблемой, когда несколько пользователей пытаются присоединиться к одному и тому же матчу и что-то портят.Любой совет помогает:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...