浏览代码

解决连续打5的问题

johnclot69 2 月之前
父节点
当前提交
c05d6d9b3b
共有 1 个文件被更改,包括 35 次插入30 次删除
  1. 35 30
      incubator-game/src/main/java/com/incubator/game/room/GDRoom.java

+ 35 - 30
incubator-game/src/main/java/com/incubator/game/room/GDRoom.java

@@ -1294,40 +1294,45 @@ public class GDRoom extends Room {
                             .append(" 4游, 升1级");
                     break;
             }
-            // 升级
-            winPlayer.data.levelIndex = Math.min(winPlayer.data.levelIndex + upLevel, GDUtils.levelPoint.length - 1);
-
-            for (Struct.SettlementData settlementData : this.data.result.values()) {
-                if (settlementData != null) {
-                    Player tmPlayer = this.actors.getOrDefault(settlementData.playerId, null);
-                    if (tmPlayer != null) {
-                        if (settlementData.playerId.equals(winPlayer.getId())
-                                || settlementData.playerId.equals(teammateData.player.getId())) {
-                            settlementData.score = upLevel;
-                            tmPlayer.data.levelPointView[0] = GDUtils.levelPoint[winPlayer.data.levelIndex];
-                        } else {
-                            settlementData.score = 0;
-                            tmPlayer.data.levelPointView[1] = GDUtils.levelPoint[winPlayer.data.levelIndex];
-                        }
-                    }
-                }
-            }
-
             // 根据类型判断结束走向
             if (this.data.mode == 1) {
-                if (this.data.curLevelPoint == this.data.modev) {
+                if (winPlayer.data.levelPointView[0] >= this.data.modev) {
                     this.data.isOver = true;
+                    // 设置全局当前级牌点数
+                    this.data.curLevelPoint = this.data.modev;
                 } else {
+                    // 升级
+                    winPlayer.data.levelIndex = Math.min(winPlayer.data.levelIndex + upLevel, GDUtils.levelPoint.length - 1);
+
                     this.data.isOver = false;
                     // 设置全局当前级牌点数
                     this.data.curLevelPoint = winPlayer.data.levelPointView[0];
 //                  this.data.curLevelPoint = Math.max(winPlayer.data.levelPointView[0], winPlayer.data.levelPointView[1]);
                 }
             } else {
+                // 升级
+                winPlayer.data.levelIndex = Math.min(winPlayer.data.levelIndex + upLevel, GDUtils.levelPoint.length - 1);
                 // 设置全局当前级牌点数
                 this.data.curLevelPoint = winPlayer.data.levelPointView[0];
 //              this.data.curLevelPoint = Math.max(winPlayer.data.levelPointView[0], winPlayer.data.levelPointView[1]);
             }
+
+            // 设置分数等级
+            for (Struct.SettlementData settlementData : this.data.result.values()) {
+                if (settlementData != null) {
+                    Player tmPlayer = this.actors.getOrDefault(settlementData.playerId, null);
+                    if (tmPlayer != null) {
+                        if (settlementData.playerId.equals(winPlayer.getId())
+                                || settlementData.playerId.equals(teammateData.player.getId())) {
+                            settlementData.score = upLevel;
+                            tmPlayer.data.levelPointView[0] = Math.min(GDUtils.levelPoint[winPlayer.data.levelIndex], this.data.modev);
+                        } else {
+                            settlementData.score = 0;
+                            tmPlayer.data.levelPointView[1] = Math.min(GDUtils.levelPoint[winPlayer.data.levelIndex], this.data.modev);
+                        }
+                    }
+                }
+            }
         }
 
         Log.info("升级...{}, 原级牌点数: {}, 当前级牌点数: {}", builder.toString(), oldLevelPoint, this.data.curLevelPoint);
@@ -1349,17 +1354,17 @@ public class GDRoom extends Room {
 
     public boolean checkAllOver() {
         boolean isAllOver = false;
+        // 头游
+        Struct.SettlementData winPlayerData = this.data.result.getOrDefault(1, null);
+        if (winPlayerData == null || StringUtils.isEmpty(winPlayerData.playerId)) {
+            return false;
+        }
+        Player winPlayer = this.actors.getOrDefault(winPlayerData.playerId, null);
+        if (winPlayer == null) {
+            return false;
+        }
         // 过A结束 1.头游队友不是末游 过A结束
-        if (this.data.curLevelPoint == this.data.modev && this.data.isOver) {
-            // 头游
-            Struct.SettlementData winPlayerData = this.data.result.getOrDefault(1, null);
-            if (winPlayerData == null || StringUtils.isEmpty(winPlayerData.playerId)) {
-                return false;
-            }
-            Player winPlayer = this.actors.getOrDefault(winPlayerData.playerId, null);
-            if (winPlayer == null) {
-                return false;
-            }
+        if (winPlayer.data.levelPointView[0] >= this.data.modev && this.data.isOver) {
             // 头游搭档数据
             Struct.TeammateData teammateData = this.getTeammate(winPlayer.data.teammateId);
             switch (teammateData.getRank()) {