Przeglądaj źródła

增加牌局结束

johnclot69 6 miesięcy temu
rodzic
commit
7d9b379f98

BIN
.gradle/7.5.1/executionHistory/executionHistory.bin


BIN
.gradle/7.5.1/executionHistory/executionHistory.lock


BIN
.gradle/7.5.1/fileHashes/fileHashes.bin


BIN
.gradle/7.5.1/fileHashes/fileHashes.lock


BIN
.gradle/7.5.1/fileHashes/resourceHashesCache.bin


BIN
.gradle/buildOutputCleanup/buildOutputCleanup.lock


BIN
incubator-game/build/classes/java/main/com/incubator/game/GGame.class


BIN
incubator-game/build/tmp/compileJava/previous-compilation-data.bin


+ 1 - 1
incubator-game/conf/config.properties

@@ -14,4 +14,4 @@ CENTER_HOST=0.0.0.0
 CENTER_PORT=4000
 
 # 策划JSON数据目录
-DIR_GAME_DATA=D:/IncubatorGame/Script/json
+DIR_GAME_DATA=D:/incubator/Script/json

+ 1 - 1
incubator-game/src/main/java/com/incubator/game/GGame.java

@@ -216,7 +216,7 @@ public class GGame extends AbstractService {
     private void initQuartzTask() {
         logger.info("初始化定时器任务...");
         try {
-            QuartzServer task = new QuartzServer();
+//            QuartzServer task = new QuartzServer();
 //            task.addJob(new FlushDB());
 //            task.addJob(new RefreshNewDay());
         } catch (Exception e) {

+ 3 - 0
incubator-game/src/main/java/com/incubator/game/data/model/RoomPO.java

@@ -46,6 +46,9 @@ public class RoomPO {
 	/** 当前出牌的玩家 **/
 	public Player disCardPlayer;
 
+	/** 结算列表[key:1-4游, value:玩家id] **/
+	public Map<Integer, String> result = new HashMap<>();
+
 	public RoomPO() {}
 
 	public void init() {

+ 44 - 1
incubator-game/src/main/java/com/incubator/game/room/jdgd/JDGDRoom.java

@@ -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);
     }
 }