xy 5 hari lalu
induk
melakukan
694b490eb2
2 mengubah file dengan 19 tambahan dan 2 penghapusan
  1. 5 1
      src/server/game/ludo/battle.go
  2. 14 1
      src/server/game/ludo/ludo_room_data.go

+ 5 - 1
src/server/game/ludo/battle.go

@@ -115,6 +115,9 @@ func (room_info *RoomInfoWrapper) process_move(color msg.RoleType, szNumber int3
 func (room_info *RoomInfoWrapper) notify_settlement() {
 	message := &msg.NotifySettlement{}
 	message.FinishColors = room_info.getFinishColors()
+	if len(message.FinishColors) == 0 {
+		message.FinishColors = room_info.getNotKickColors()
+	}
 	room_info.notify_to_all_player(message)
 }
 
@@ -198,9 +201,10 @@ func (room_info *RoomInfoWrapper) time_out_tuo_guan() {
 	color_data := room_info.getColorDataByColor(cur_color)
 	color_data.TimeOutNum = color_data.TimeOutNum + 1
 	if color_data.TimeOutNum > 5 { //如果玩家累计5次托管行为,将玩家踢出房间
-		room_info.tick_color_of_room(cur_color)
 		if room_info.IsOverGame() { //宣布游戏结束
 			room_info.notify_settlement()
+		} else {
+			room_info.tick_color_of_room(cur_color)
 		}
 	} else {
 		room_info.tuo_guan_opt()

+ 14 - 1
src/server/game/ludo/ludo_room_data.go

@@ -31,6 +31,19 @@ func (room_info *RoomInfoWrapper) getFinishColors() []*msg.ColorData {
 	return room_info.FinishColors
 }
 
+// 获取没有被踢出去的玩家
+func (room_info *RoomInfoWrapper) getNotKickColors() []*msg.ColorData {
+	temp := make([]*msg.ColorData, 0, 1)
+	for i := 0; i < len(room_info.Colors); i++ {
+		element := room_info.Colors[i]
+		if !element.IsKick {
+			temp = append(temp, element)
+			break
+		}
+	}
+	return temp
+}
+
 // 更新角色位置
 func (room_info *RoomInfoWrapper) updateRoleStep(role_id string, step int32) {
 	role_data := room_info.getRoleDataById(role_id)
@@ -48,7 +61,7 @@ func (room_info *RoomInfoWrapper) IsOverGame() bool {
 			count++
 		}
 	}
-	return count >= len(colors)-1
+	return count == len(colors)-1
 }
 
 func (room_info *RoomInfoWrapper) getColors() []*msg.ColorData {