因此,我想使用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的新手,所以如果我缺少明显的东西,请随时告诉我。我还必须处理多个用户试图同时加入同一场比赛并使事情变得混乱的问题。任何建议都会有所帮助:)