|
@@ -406,6 +406,8 @@ public class JDGDRoom extends Room implements GRoomInterface {
|
|
|
this.data.curDisCardType = null;
|
|
|
this.data.passList.clear();
|
|
|
}
|
|
|
+ // 设置当前出牌玩家
|
|
|
+ this.data.disCardPlayer = player;
|
|
|
// 设置下一个操作玩家
|
|
|
this.data.currentPlayer = this.getNextPlayer(player);
|
|
|
// 广播其他3人
|
|
@@ -423,68 +425,91 @@ public class JDGDRoom extends Room implements GRoomInterface {
|
|
|
*/
|
|
|
private void upgrade() {
|
|
|
// 头游
|
|
|
- Player player = this.data.result.get(0);
|
|
|
+ Player player = this.data.result.get(1);
|
|
|
if (player == null) {
|
|
|
return;
|
|
|
}
|
|
|
- StringBuilder builder;
|
|
|
- // 头游搭档
|
|
|
- for (Map.Entry<Integer, Player> entry : this.data.result.entrySet()) {
|
|
|
- if (entry.getValue().getId().equals(player.data.teammateId)) {
|
|
|
+ // 原级牌点数
|
|
|
+ int oldLevelPoint = this.data.curLevelPoint;
|
|
|
+ StringBuilder builder = null;
|
|
|
+ switch (this.data.maxNum) {
|
|
|
+ case 2:
|
|
|
+ // 2人房
|
|
|
builder = new StringBuilder();
|
|
|
- switch (entry.getKey()) {
|
|
|
- case 2:
|
|
|
- // 搭档2游升3级
|
|
|
- if (this.data.curLevelIndex + 3 >= JDGDUtils.levelPoint.length) {
|
|
|
- this.data.curLevelIndex = JDGDUtils.levelPoint.length;
|
|
|
- } else {
|
|
|
- this.data.curLevelIndex += 3;
|
|
|
- }
|
|
|
- builder.append("头游玩家: ").append(player.data.name)
|
|
|
- .append(", 搭档玩家: ").append(entry.getValue().data.name)
|
|
|
- .append(" 2游升3级, ");
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- // 搭档3游升2级
|
|
|
- if (this.data.curLevelIndex + 2 >= JDGDUtils.levelPoint.length) {
|
|
|
- this.data.curLevelIndex = JDGDUtils.levelPoint.length;
|
|
|
- } else {
|
|
|
- this.data.curLevelIndex += 2;
|
|
|
- }
|
|
|
- builder.append("头游玩家: ").append(player.data.name)
|
|
|
- .append(", 搭档玩家: ").append(entry.getValue().data.name)
|
|
|
- .append(" 3游升2级, ");
|
|
|
- break;
|
|
|
- case 4:
|
|
|
- // 搭档末游升1级
|
|
|
- if (this.data.curLevelIndex + 1 >= JDGDUtils.levelPoint.length) {
|
|
|
- this.data.curLevelIndex = JDGDUtils.levelPoint.length;
|
|
|
- } else {
|
|
|
- this.data.curLevelIndex += 1;
|
|
|
- }
|
|
|
- builder.append("头游玩家: ").append(player.data.name)
|
|
|
- .append(", 搭档玩家: ").append(entry.getValue().data.name)
|
|
|
- .append(" 末游升1级, ");
|
|
|
- break;
|
|
|
+ Player temPlayer = this.data.result.getOrDefault(1, null);
|
|
|
+ if (temPlayer == null) {
|
|
|
+ return;
|
|
|
}
|
|
|
- // 原级牌点数
|
|
|
- int oldLevelPoint = this.data.curLevelPoint;
|
|
|
+ builder.append("头游玩家: ").append(player.data.name)
|
|
|
+ .append(" 升3级, ");
|
|
|
// 设置当前级牌点数
|
|
|
- this.data.curLevelPoint = JDGDUtils.levelPoint[this.data.curLevelIndex];
|
|
|
- logger.info(builder + "原级牌点数: {}, 当前级牌点数: {}", oldLevelPoint, this.data.curLevelPoint);
|
|
|
+ int index = Math.min(this.data.curLevelIndex + 3, JDGDUtils.levelPoint.length - 1);
|
|
|
+ this.data.curLevelPoint = JDGDUtils.levelPoint[index];
|
|
|
// 设置我方玩家级牌点数展示
|
|
|
- entry.getValue().data.levelPointView[0] = this.data.curLevelPoint;
|
|
|
player.data.levelPointView[0] = this.data.curLevelPoint;
|
|
|
// 设置对方级牌点数展示
|
|
|
- for (Map.Entry<Integer, Player> entry1 : this.data.result.entrySet()) {
|
|
|
- if (!entry1.getValue().getId().equals(player.getId())
|
|
|
- && !entry1.getValue().getId().equals(entry.getValue().getId())) {
|
|
|
- entry1.getValue().data.levelPointView[1] = this.data.curLevelPoint;
|
|
|
+ temPlayer.data.levelPointView[1] = this.data.curLevelPoint;
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ // 4人房
|
|
|
+ // 头游搭档
|
|
|
+ for (Map.Entry<Integer, Player> entry : this.data.result.entrySet()) {
|
|
|
+ if (entry.getValue().getId().equals(player.data.teammateId)) {
|
|
|
+ builder = new StringBuilder();
|
|
|
+ switch (entry.getKey()) {
|
|
|
+ case 2:
|
|
|
+ // 搭档2游升3级
|
|
|
+ if (this.data.curLevelIndex + 3 >= JDGDUtils.levelPoint.length) {
|
|
|
+ this.data.curLevelIndex = JDGDUtils.levelPoint.length;
|
|
|
+ } else {
|
|
|
+ this.data.curLevelIndex += 3;
|
|
|
+ }
|
|
|
+ builder.append("头游玩家: ").append(player.data.name)
|
|
|
+ .append(", 搭档玩家: ").append(entry.getValue().data.name)
|
|
|
+ .append(" 2游升3级, ");
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ // 搭档3游升2级
|
|
|
+ if (this.data.curLevelIndex + 2 >= JDGDUtils.levelPoint.length) {
|
|
|
+ this.data.curLevelIndex = JDGDUtils.levelPoint.length;
|
|
|
+ } else {
|
|
|
+ this.data.curLevelIndex += 2;
|
|
|
+ }
|
|
|
+ builder.append("头游玩家: ").append(player.data.name)
|
|
|
+ .append(", 搭档玩家: ").append(entry.getValue().data.name)
|
|
|
+ .append(" 3游升2级, ");
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ // 搭档末游升1级
|
|
|
+ if (this.data.curLevelIndex + 1 >= JDGDUtils.levelPoint.length) {
|
|
|
+ this.data.curLevelIndex = JDGDUtils.levelPoint.length;
|
|
|
+ } else {
|
|
|
+ this.data.curLevelIndex += 1;
|
|
|
+ }
|
|
|
+ builder.append("头游玩家: ").append(player.data.name)
|
|
|
+ .append(", 搭档玩家: ").append(entry.getValue().data.name)
|
|
|
+ .append(" 末游升1级, ");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ // 设置当前级牌点数
|
|
|
+ int _index = Math.min(this.data.curLevelIndex + 3, JDGDUtils.levelPoint.length - 1);
|
|
|
+ this.data.curLevelPoint = JDGDUtils.levelPoint[_index];
|
|
|
+ // 设置我方玩家级牌点数展示
|
|
|
+ entry.getValue().data.levelPointView[0] = this.data.curLevelPoint;
|
|
|
+ player.data.levelPointView[0] = this.data.curLevelPoint;
|
|
|
+ // 设置对方级牌点数展示
|
|
|
+ for (Map.Entry<Integer, Player> entry1 : this.data.result.entrySet()) {
|
|
|
+ if (!entry1.getValue().getId().equals(player.getId())
|
|
|
+ && !entry1.getValue().getId().equals(entry.getValue().getId())) {
|
|
|
+ entry1.getValue().data.levelPointView[1] = this.data.curLevelPoint;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
- }
|
|
|
}
|
|
|
+ logger.info("{}原级牌点数: {}, 当前级牌点数: {}", builder != null ? builder : "", oldLevelPoint, this.data.curLevelPoint);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -492,11 +517,17 @@ public class JDGDRoom extends Room implements GRoomInterface {
|
|
|
*/
|
|
|
private void settlement() {
|
|
|
logger.debug("牌局结算...roomId : {}", this.data.roomId);
|
|
|
+ // 结算信息
|
|
|
+ Map<String, Object> settlementData = new HashMap<>();
|
|
|
+ for (Map.Entry<Integer, Player> entry : this.data.result.entrySet()) {
|
|
|
+ settlementData.put(entry.getKey().toString(), ProtoUtil.playerRoomToMessage(this, entry.getValue(), true));
|
|
|
+ }
|
|
|
// 广播结算
|
|
|
for (Player tmPlayer : this.data.playerMap.values()) {
|
|
|
if (tmPlayer != null) {
|
|
|
// 结算信息
|
|
|
Map<String, Object> data = ProtoUtil.roomToMessage(this, tmPlayer, this.data.currentPlayer);
|
|
|
+ data.put("settlementInfo", settlementData);
|
|
|
tmPlayer.receive(CommonProto.Cmd.GameStateChange_VALUE, data);
|
|
|
}
|
|
|
}
|