首页 > 解决方案 > Firebase Firestore 多人游戏对接会

问题描述

所以我想使用 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 真的很陌生,所以如果我遗漏了一些明显的东西,请随时告诉我。我还必须处理多个用户试图同时加入同一场比赛并将事情搞砸的问题。任何建议都有帮助:)

标签: androidfirebasekotlingoogle-cloud-firestore

解决方案


推荐阅读