|
@@ -183,7 +183,7 @@ public class JDGDRoom extends Room implements GRoomInterface {
|
|
|
return;
|
|
|
}
|
|
|
if (CardUtils.contains(player.data.remainCards, disCardList)) {
|
|
|
- logger.info("*****出牌玩家ID:{}, 位置:{}, 手牌大小:{}, 内容: {}", player.getId(), player.data.pos, player.data.remainCards.length, Arrays.toString(player.data.remainCards));
|
|
|
+ logger.info("出牌...玩家ID:{}, 位置:{}, 手牌大小:{}, 手牌信息: {}", player.getId(), player.data.pos, player.data.remainCards.length, Arrays.toString(player.data.remainCards));
|
|
|
// 从手牌中移除
|
|
|
for (Integer card : disCardList) {
|
|
|
player.data.remainCards = CardUtils.remove(player.data.remainCards, card);
|
|
@@ -192,6 +192,11 @@ public class JDGDRoom extends Room implements GRoomInterface {
|
|
|
this.data.curDisCardList = disCardList;
|
|
|
// 设置当前出牌的玩家
|
|
|
this.data.disCardPlayer = player;
|
|
|
+ // 设置结算数据
|
|
|
+ if (player.data.remainCards.length == 0) {
|
|
|
+ player.data.state = 3;
|
|
|
+ this.data.result.put(this.data.result.size() + 1, player.getId());
|
|
|
+ }
|
|
|
// 设置下一个操作玩家
|
|
|
Integer[] nextPos = this._getSorcPos(player.data.pos);
|
|
|
this.data.currentPlayer = this.data.playerMap.get(nextPos[0]);
|
|
@@ -202,6 +207,44 @@ public class JDGDRoom extends Room implements GRoomInterface {
|
|
|
tmPlayer.receive(CommonProto.Cmd.OtherPlayCards_VALUE, data);
|
|
|
}
|
|
|
}
|
|
|
+ // 3人手牌出完,直接结算
|
|
|
+ if (this.data.result.size() >= 3) {
|
|
|
+ // 结束
|
|
|
+ this.gameOver();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 牌局结算
|
|
|
+ */
|
|
|
+ public void settlement() {
|
|
|
+ logger.debug("牌局结算...roomId : {}", this.data.roomId);
|
|
|
+ // 广播结算
|
|
|
+ for (Player tmPlayer : this.data.playerMap.values()) {
|
|
|
+ if (tmPlayer != null) {
|
|
|
+ Map<String, Object> data = MsgUtil.roomToMessage(this, tmPlayer, null);
|
|
|
+ // 结算信息
|
|
|
+ data.put("settlementInfo", this.data.result);
|
|
|
+ tmPlayer.receive(CommonProto.Cmd.GameStateChange_VALUE, data);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 游戏结束
|
|
|
+ */
|
|
|
+ public void gameOver() {
|
|
|
+ this.data.state = 3;
|
|
|
+ this.data.time = 60;
|
|
|
+ this.data.flag = false;
|
|
|
+ for (Player player : this.data.playerMap.values()) {
|
|
|
+ if (player != null) {
|
|
|
+ player.data.state = 3;
|
|
|
+ }
|
|
|
}
|
|
|
+ // 结算
|
|
|
+ this.settlement();
|
|
|
+ logger.debug("牌局结束...roomId : {}", this.data.roomId);
|
|
|
}
|
|
|
}
|