浏览代码

优化房间id类型为long,支持自定义

johnclot69 3 月之前
父节点
当前提交
899a73a9b2

+ 11 - 2
incubator-common/src/main/java/com/incubator/common/util/RandomUtil.java

@@ -101,8 +101,17 @@ public final class RandomUtil {
 	 *
 	 * @return
 	 */
-	public static int randomRoomNumber() {
-		return 100000 + RandomUtil.random(900000);
+	public static long randomRoomNumber() {
+		return 100000L + RandomUtil.random(900000);
+	}
+
+	/**
+	 * 生成一个7位数 1000000 到 9999999 之间的随机数
+	 *
+	 * @return
+	 */
+	public static long randomRoomNumberByContest() {
+		return 1000000L + RandomUtil.random(9000000);
 	}
 
 	/**

+ 3 - 1
incubator-game/src/main/java/com/incubator/game/contest/Contest.java

@@ -31,7 +31,7 @@ public class Contest {
     /** 激活标记 **/
     private boolean isActive;
 
-    /** 房间角色 [key:玩家id, value:玩家对象]**/
+    /** 比赛报名角色 [key:玩家id, value:玩家对象]**/
     public Map<String, Player> actors = new ConcurrentHashMap<>();
 
     /** 比赛任务主线程 **/
@@ -75,6 +75,8 @@ public class Contest {
         if (!this.data.playerList.contains(player.getId())) {
             this.data.playerList.add(player.getId());
         }
+        //todo 根据玩家人数,动态分配比赛桌子
+
     }
 
     /**

+ 1 - 1
incubator-game/src/main/java/com/incubator/game/data/po/PlayerInfoPO.java

@@ -60,7 +60,7 @@ public class PlayerInfoPO {
 	public BigDecimal noReshRate;
 
 	/** 玩家绑定的房间 **/
-	public int roomId;
+	public long roomId;
 	/** 玩家位置(0东 1南 2西 3北) **/
 	public int pos;
 	/** 玩家状态(0未准备 1已准备 2游戏中 3结束) **/

+ 1 - 1
incubator-game/src/main/java/com/incubator/game/handler/room/JoinRoomHandler.java

@@ -33,7 +33,7 @@ public class JoinRoomHandler extends NetHandler {
 		}
 
 		// 判断参数
-		int roomId = request.getDataValue("roomId", Integer.class, 0);
+		long roomId = request.getDataValue("roomId", Long.class, 0L);
 		if (roomId <= 0) {
 			logger.info("参数错误");
 			response.setCode(CommonProto.Code.PARAMETER_ERR_VALUE);

+ 1 - 1
incubator-game/src/main/java/com/incubator/game/room/Room.java

@@ -23,7 +23,7 @@ public class Room {
     private boolean isActive;
 
     /** 房间号 */
-    public int roomId;
+    public long roomId;
     /** 房间玩法类型 1:掼蛋 */
     public int type;
     /** 房主playerId **/

+ 7 - 8
incubator-game/src/main/java/com/incubator/game/room/RoomService.java

@@ -19,8 +19,8 @@ public class RoomService {
     private static RoomService instance;
     /** 房间对象池 **/
     public RoomPool roomPool;
-    /** 房间缓存 [key:房间类型, value:房间实例] **/
-    public Map<Integer, Room> roomMap = new ConcurrentHashMap<>();
+    /** 房间缓存 [key:房间id, value:房间实例] **/
+    public Map<Long, Room> roomMap = new ConcurrentHashMap<>();
 
     public synchronized static RoomService getInstance() {
         if (instance == null) {
@@ -51,8 +51,8 @@ public class RoomService {
      *
      * @return
      */
-    public int randomRoomId() {
-        int roomNumber;
+    public long randomRoomId() {
+        long roomNumber;
         // 循环生成,直到找到一个唯一的房间号
         do {
             roomNumber = RandomUtil.randomRoomNumber();
@@ -66,7 +66,7 @@ public class RoomService {
      * @param roomId
      * @return
      */
-    public Room getRoom(int roomId) {
+    public Room getRoom(long roomId) {
         return this.roomMap.getOrDefault(roomId, null);
     }
 
@@ -88,15 +88,14 @@ public class RoomService {
     /**
      * 创建房间
      *
-     * @param player
-     * @param roomType
+     * @param player    创建房间玩家
+     * @param roomType  房间玩法类型
      * @param jsonData  房间规则数据
      * @return
      */
     public synchronized Room creatRoom(Player player, int roomType, JSONObject jsonData) {
         // 从对象池获取房间
         Room room = this.roomPool.acquireRoom(roomType);
-//        int roomId = this.randomRoomId();
         // 初始化房间
         room.init(player, jsonData);
         // 开启房间主线程