现在,我已经设置了我的应用,以便用户可以创建一个开放游戏,然后玩家可以加入该开放游戏并成为user2或player2。这项工作只是找到,玩家单击加入按钮,并在大厅数据库中显示为“ user2”。如下图所示
这很简单,玩家制作一个user2等于null的游戏,然后当有人单击加入时,他们用用户信息替换null。这是玩家加入游戏时使用的代码。
private void joinGame() {
second = new User(userName, 0, getSide(), FirebaseAuth.getInstance().getUid());
gm.setUser2(second);
}
然后,只要有人单击“加入”,就会调用该方法。我还设置了一个Toast,通过调用
来显示user2的信息。gm.getUser2().getUserName();
显示用户名,并且效果很好。所以我知道当我使用设置器setUser2(second)
时,它可以正常工作
由于我的问题,这对我来说没有多大意义。有人加入游戏后,将删除“大厅”游戏,并添加一个活动的游戏数据库节点。
它是通过以下代码添加的:
public static FCGameMaker beginGame;
private void createGame() {
beginGame = new FCGameMaker(gm.getUser1(), gm.getUser2(), false, false);
FlipCoinGames.child(userName).setValue(beginGame);
}
这是我的FCGameMaker构造函数
public FCGameMaker(User player1, User player2, boolean gameStarted, boolean gameFinished) {
this.player1 = player1;
this.player2 = player2;
this.gameStarted = gameStarted;
this.gameFinished = gameFinished;
}
但是创建数据库后,player2不会出现。
这是调用createGame()方法后数据库的外观
我不知道为什么不添加第二个用户,因为我肯定在此createGame()方法之前调用了gm.setUser2(second)
,所以我不确定为什么不起作用。
有帮助吗?
private FCLobbyMaker gm;
gm = dataSnapshot.getValue(FCLobbyMaker.class);
然后我的FCGameMaker构造函数已经发布,该类的其余部分只是变量的获取器和设置器。