xy 2 hete
szülő
commit
f35a1b2d93

+ 5 - 2
bin/client_msg/common.proto

@@ -38,6 +38,7 @@ enum playerStatus {
   SZ_ANIMATION =1;
   COLOR_FINISH = 2;
   COLOR_KICK = 3;
+  COLOR_TIME_OUT = 4;
 }
 
 enum roomStatus {
@@ -58,14 +59,15 @@ message RoomInfo {
   repeated ColorData colors = 2;
   roomType room_type = 3;
   roomMode room_mode = 4;
-  roleType cur_round_color = 5;
+  roleType cur_round_color = 5; //当前那个阵营的回合
   repeated round rounds = 6;
   repeated ColorData finish_colors = 7;
   repeated ColorData kict_colors = 8;
   int32 id = 9;
   int32 room_level = 10; //房间的每个等级都对应着不同的奖励和消耗
   roomStatus room_status = 11;
-  NotifyPlayerOpt cur_color_opt_data = 12;
+  NotifyPlayerOpt cur_color_opt_data = 12; //当前阵营操作的类型
+  int32 opt_time = 13; //玩家当前剩余操作时间
 }
 
 message RoleData {
@@ -126,6 +128,7 @@ message NotifyPlayerStatus {
   roleType color = 1;  // 
   playerStatus status = 2;
   repeated ColorData colors = 3;
+  ColorData time_out_color = 4;
 }
 
 

+ 47 - 29
src/server/game/ludo/battle.go

@@ -1,7 +1,7 @@
+// 逻辑脚本,方法以小写加下划线命名 例:get_money_func
 package ludo
 
 import (
-	"fmt"
 	"server/game"
 	"server/msg"
 	"server/tools"
@@ -11,6 +11,7 @@ import (
 type RoomInfoWrapper struct {
 	*msg.RoomInfo
 	TimerManager *tools.TimerManager
+	startOptTime time.Time
 }
 
 func init() {
@@ -50,7 +51,7 @@ func GetBattleRoomById(id int32) *RoomInfoWrapper {
 }
 
 // 根据玩家的骰子数进行相关处理
-func (room_info *RoomInfoWrapper) processSz(msg_body *msg.NotifyPlayerSzNumber) {
+func (room_info *RoomInfoWrapper) process_sz(msg_body *msg.NotifyPlayerSzNumber) {
 	if msg_body.SzNumber == 6 {
 		canMoveList := room_info.getRolesBySzNumber(msg_body.Color, msg_body.SzNumber)
 		if len(canMoveList) > 0 {
@@ -95,7 +96,7 @@ func (room_info *RoomInfoWrapper) processSz(msg_body *msg.NotifyPlayerSzNumber)
 }
 
 // 根据玩家走的步数进行相关处理
-func (room_info *RoomInfoWrapper) processMove(color msg.RoleType, szNumber int32, isAddRound bool, isFinish bool) {
+func (room_info *RoomInfoWrapper) process_move(color msg.RoleType, szNumber int32, isAddRound bool, isFinish bool) {
 	if room_info.IsOverGame() { //宣布游戏结束
 		room_info.notify_settlement(color)
 	} else {
@@ -114,7 +115,7 @@ func (room_info *RoomInfoWrapper) notify_settlement(color msg.RoleType) {
 	message := &msg.NotifySettlement{}
 	message.Color = color
 	message.FinishColors = room_info.getFinishColors()
-	room_info.NotifyToAllPlayer(message)
+	room_info.notify_to_all_player(message)
 }
 
 // 通知玩家开始移动角色
@@ -125,7 +126,7 @@ func (room_info *RoomInfoWrapper) notify_player_move(list []*msg.RoleData) {
 	} else {
 		if room_info.containsRobot(cur_color) {
 			//如果是机器人,思考一秒然后执行移动角色
-			room_info.delayActionMoveRobot(1000, cur_color, list)
+			room_info.delay_action_move_robot(1000, cur_color, list)
 		}
 	}
 
@@ -134,7 +135,7 @@ func (room_info *RoomInfoWrapper) notify_player_move(list []*msg.RoleData) {
 		Opt:          msg.OptType_SELECT_ROLE,
 		CanMoveRoles: list,
 	}
-	room_info.NotifyToAllPlayer(message)
+	room_info.notify_to_all_player(message)
 	room_info.setCurColorOpt(message)
 	room_info.StartCountdownPlayerOpt()
 }
@@ -146,7 +147,7 @@ func (room_info *RoomInfoWrapper) notify_player_status(color msg.RoleType, statu
 		Status: status,
 		Colors: colors,
 	}
-	room_info.NotifyToAllPlayer(message)
+	room_info.notify_to_all_player(message)
 }
 
 // 通知玩家要骰子
@@ -156,13 +157,13 @@ func (room_info *RoomInfoWrapper) notify_player_sz() {
 		Color: cur_color,
 		Opt:   msg.OptType_ZHI_SHAI_ZI,
 	}
-	room_info.NotifyToAllPlayer(message)
+	room_info.notify_to_all_player(message)
 	room_info.setCurColorOpt(message)
 	room_info.StartCountdownPlayerOpt()
 }
 
 // 托管操作一次
-func (room_info *RoomInfoWrapper) tuoGuanOpt() {
+func (room_info *RoomInfoWrapper) tuo_guan_opt() {
 	curColorOpt := room_info.CurColorOptData.Opt
 	curColor := room_info.CurRoundColor
 	if curColorOpt == msg.OptType_SELECT_ROLE {
@@ -171,23 +172,31 @@ func (room_info *RoomInfoWrapper) tuoGuanOpt() {
 	} else if curColorOpt == msg.OptType_ZHI_SHAI_ZI {
 		room_info.send_sz(curColor)
 	}
+	message := &msg.NotifyPlayerStatus{
+		Color:        curColor,
+		TimeOutColor: room_info.getColorDataByColor(curColor),
+		Status:       msg.PlayerStatus_COLOR_TIME_OUT,
+	}
+	room_info.notify_to_all_player(message)
 }
 
 // 超过10秒玩家没有操作,将他的timeout 累计加1,然后给他托管一次
-func (room_info *RoomInfoWrapper) TimeOutTuoGuan() {
+func (room_info *RoomInfoWrapper) time_out_tuo_guan() {
 	cur_color := room_info.CurRoundColor
 	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)
 	} else {
-		room_info.tuoGuanOpt()
+		room_info.tuo_guan_opt()
 	}
 }
 
 // 开始计时玩家操作
 func (room_info *RoomInfoWrapper) StartCountdownPlayerOpt() {
-	room_info.TimerManager.AddEvent(room_info.GetRoomTimeOutKey(), 10*time.Second, room_info.TimeOutTuoGuan)
+	room_info.startOptTime = time.Now()
+	room_info.OptTime = gameRule.OPT_TIME
+	room_info.TimerManager.AddEvent(room_info.GetRoomTimeOutKey(), time.Duration(gameRule.OPT_TIME)*time.Second, room_info.time_out_tuo_guan)
 }
 
 // 取消玩家计时
@@ -195,18 +204,8 @@ func (room_info *RoomInfoWrapper) CancelCountdownPlayerOpt() {
 	room_info.TimerManager.RemoveEvent(room_info.GetRoomTimeOutKey())
 }
 
-// 获取房间倒计时的key
-func (room_info *RoomInfoWrapper) GetRoomTimeOutKey() string {
-	return fmt.Sprintf("%d_TimeOut", room_info.Id)
-}
-
-// 获取房间ID
-func (room_info *RoomInfoWrapper) GetRoomId() int32 {
-	return room_info.Id
-}
-
 // 房间里通知所有玩家
-func (room_info *RoomInfoWrapper) NotifyToAllPlayer(message interface{}) {
+func (room_info *RoomInfoWrapper) notify_to_all_player(message interface{}) {
 	for i := range room_info.Colors {
 		user_id := room_info.Colors[i].MId
 		user_agent := getAgentByUserId(user_id)
@@ -220,20 +219,20 @@ func (room_info *RoomInfoWrapper) NotifyToAllPlayer(message interface{}) {
 func (room_info *RoomInfoWrapper) delayActionNextRound(td int32, color msg.RoleType, szNumber int32, isAddRound bool, isFinish bool) {
 	dtn := time.Duration(td) * time.Microsecond
 	game.Module.Skeleton.AfterFunc(dtn, func() {
-		room_info.processMove(color, szNumber, isAddRound, isFinish)
+		room_info.process_move(color, szNumber, isAddRound, isFinish)
 	})
 }
 
 // 给前端展示一段时间后,再操作
-func (room_info *RoomInfoWrapper) delayActionSz(td int, msg_body *msg.NotifyPlayerSzNumber) {
+func (room_info *RoomInfoWrapper) delay_action_sz(td int, msg_body *msg.NotifyPlayerSzNumber) {
 	dtn := time.Duration(td) * time.Microsecond
 	game.Module.Skeleton.AfterFunc(dtn, func() {
-		room_info.processSz(msg_body)
+		room_info.process_sz(msg_body)
 	})
 }
 
 // 延迟后,移动机器人
-func (room_info *RoomInfoWrapper) delayActionMoveRobot(td int, color msg.RoleType, list []*msg.RoleData) {
+func (room_info *RoomInfoWrapper) delay_action_move_robot(td int, color msg.RoleType, list []*msg.RoleData) {
 	dtn := time.Duration(td) * time.Microsecond
 	game.Module.Skeleton.AfterFunc(dtn, func() {
 		role := getRandomItem(list)
@@ -243,7 +242,26 @@ func (room_info *RoomInfoWrapper) delayActionMoveRobot(td int, color msg.RoleTyp
 
 // 更新房间信息发送给玩家
 func (room_info *RoomInfoWrapper) notify_update_room_info() {
-	room_info.NotifyToAllPlayer(&msg.NotifyUpdateRoomInfo{
+	end := time.Now()
+	// 计算整数秒(直接截断小数部分)
+	seconds := int(end.Sub(room_info.startOptTime).Seconds())
+	room_info.OptTime = gameRule.OPT_TIME - int32(seconds)
+	room_info.notify_to_all_player(&msg.NotifyUpdateRoomInfo{
 		RoomInfo: room_info.RoomInfo,
 	})
 }
+
+// 将玩家从房间踢出
+func (room_info *RoomInfoWrapper) tick_color_of_room(color msg.RoleType) {
+	message := &msg.NotifyPlayerStatus{
+		Color:  color,
+		Status: msg.PlayerStatus_COLOR_KICK,
+	}
+	room_info.tickColor(color)
+	room_info.notify_to_all_player(message)
+}
+
+// 解散房间
+func (room_info *RoomInfoWrapper) dismiss_room() {
+
+}

+ 3 - 3
src/server/game/ludo/color_send.go

@@ -51,7 +51,7 @@ func (room_info *RoomInfoWrapper) send_role_move(color msg.RoleType, role_id str
 	room_info.updateRoleStep(role_id, message.Step.Step)
 
 	room_info.notify_update_room_info()
-	room_info.NotifyToAllPlayer(message)
+	room_info.notify_to_all_player(message)
 
 	var kick_delay_time int32
 
@@ -94,6 +94,6 @@ func (room_info *RoomInfoWrapper) send_sz(color msg.RoleType) {
 		SzNumber: sz_number,
 	}
 
-	room_info.NotifyToAllPlayer(msg_body)
-	room_info.delayActionSz(1000, msg_body)
+	room_info.notify_to_all_player(msg_body)
+	room_info.delay_action_sz(1000, msg_body)
 }

+ 4 - 1
src/server/game/ludo/ludo.go

@@ -5,6 +5,7 @@ import (
 	"server/msg"
 	"server/tools"
 	"sync"
+	"time"
 
 	"github.com/name5566/leaf/gate"
 	"github.com/name5566/leaf/log"
@@ -13,6 +14,7 @@ import (
 // GameRule 定义游戏规则
 type GameRule struct {
 	MAX_STEP     int32
+	OPT_TIME     int32
 	WU_DI_ROAD   []string
 	AN_QUAN_ROAD []string
 }
@@ -26,6 +28,7 @@ type Config struct {
 var (
 	gameConfig *Config
 	gameRule   = GameRule{
+		OPT_TIME: 10,
 		MAX_STEP: 57,
 		WU_DI_ROAD: []string{
 			"p_2", "p_15", "p_28", "p_41", "p_23", "p_10", "p_36", "p_49",
@@ -95,7 +98,7 @@ func startGame(room_info *msg.RoomInfo) *RoomInfoWrapper {
 	//设置第一个操作的阵营
 	setFirstColor(room_info)
 	// player_count := getPlayerCount(room_info)
-	room := &RoomInfoWrapper{room_info, tools.NewTimerManager()}
+	room := &RoomInfoWrapper{room_info, tools.NewTimerManager(), time.Now()}
 	runBattle(room)
 	return room
 }

+ 16 - 0
src/server/game/ludo/ludo_room_data.go

@@ -276,3 +276,19 @@ func (room_info *RoomInfoWrapper) getCanMoveRoles(roles []*msg.RoleData, szNumbe
 func (room_info *RoomInfoWrapper) setCurColorOpt(opt *msg.NotifyPlayerOpt) {
 	room_info.CurColorOptData = opt
 }
+
+// 将玩家踢出房间
+func (room_info *RoomInfoWrapper) tickColor(color msg.RoleType) {
+	color_data := room_info.getColorDataByColor(color)
+	color_data.IsKick = true
+}
+
+// 获取房间倒计时的key
+func (room_info *RoomInfoWrapper) GetRoomTimeOutKey() string {
+	return fmt.Sprintf("%d_TimeOut", room_info.Id)
+}
+
+// 获取房间ID
+func (room_info *RoomInfoWrapper) GetRoomId() int32 {
+	return room_info.Id
+}

+ 49 - 25
src/server/msg/common.pb.go

@@ -276,6 +276,7 @@ const (
 	PlayerStatus_SZ_ANIMATION          PlayerStatus = 1
 	PlayerStatus_COLOR_FINISH          PlayerStatus = 2
 	PlayerStatus_COLOR_KICK            PlayerStatus = 3
+	PlayerStatus_COLOR_TIME_OUT        PlayerStatus = 4
 )
 
 // Enum value maps for PlayerStatus.
@@ -285,12 +286,14 @@ var (
 		1: "SZ_ANIMATION",
 		2: "COLOR_FINISH",
 		3: "COLOR_KICK",
+		4: "COLOR_TIME_OUT",
 	}
 	PlayerStatus_value = map[string]int32{
 		"PLAYER_STATUS_UNKNOWN": 0,
 		"SZ_ANIMATION":          1,
 		"COLOR_FINISH":          2,
 		"COLOR_KICK":            3,
+		"COLOR_TIME_OUT":        4,
 	}
 )
 
@@ -444,14 +447,15 @@ type RoomInfo struct {
 	Colors          []*ColorData           `protobuf:"bytes,2,rep,name=colors,proto3" json:"colors,omitempty"`
 	RoomType        RoomType               `protobuf:"varint,3,opt,name=room_type,json=roomType,proto3,enum=RoomType" json:"room_type,omitempty"`
 	RoomMode        RoomMode               `protobuf:"varint,4,opt,name=room_mode,json=roomMode,proto3,enum=RoomMode" json:"room_mode,omitempty"`
-	CurRoundColor   RoleType               `protobuf:"varint,5,opt,name=cur_round_color,json=curRoundColor,proto3,enum=RoleType" json:"cur_round_color,omitempty"`
+	CurRoundColor   RoleType               `protobuf:"varint,5,opt,name=cur_round_color,json=curRoundColor,proto3,enum=RoleType" json:"cur_round_color,omitempty"` //当前那个阵营的回合
 	Rounds          []*Round               `protobuf:"bytes,6,rep,name=rounds,proto3" json:"rounds,omitempty"`
 	FinishColors    []*ColorData           `protobuf:"bytes,7,rep,name=finish_colors,json=finishColors,proto3" json:"finish_colors,omitempty"`
 	KictColors      []*ColorData           `protobuf:"bytes,8,rep,name=kict_colors,json=kictColors,proto3" json:"kict_colors,omitempty"`
 	Id              int32                  `protobuf:"varint,9,opt,name=id,proto3" json:"id,omitempty"`
 	RoomLevel       int32                  `protobuf:"varint,10,opt,name=room_level,json=roomLevel,proto3" json:"room_level,omitempty"` //房间的每个等级都对应着不同的奖励和消耗
 	RoomStatus      RoomStatus             `protobuf:"varint,11,opt,name=room_status,json=roomStatus,proto3,enum=RoomStatus" json:"room_status,omitempty"`
-	CurColorOptData *NotifyPlayerOpt       `protobuf:"bytes,12,opt,name=cur_color_opt_data,json=curColorOptData,proto3" json:"cur_color_opt_data,omitempty"`
+	CurColorOptData *NotifyPlayerOpt       `protobuf:"bytes,12,opt,name=cur_color_opt_data,json=curColorOptData,proto3" json:"cur_color_opt_data,omitempty"` //当前阵营操作的类型
+	OptTime         int32                  `protobuf:"varint,13,opt,name=opt_time,json=optTime,proto3" json:"opt_time,omitempty"`                            //玩家当前剩余操作时间
 	unknownFields   protoimpl.UnknownFields
 	sizeCache       protoimpl.SizeCache
 }
@@ -570,6 +574,13 @@ func (x *RoomInfo) GetCurColorOptData() *NotifyPlayerOpt {
 	return nil
 }
 
+func (x *RoomInfo) GetOptTime() int32 {
+	if x != nil {
+		return x.OptTime
+	}
+	return 0
+}
+
 type RoleData struct {
 	state         protoimpl.MessageState `protogen:"open.v1"`
 	MColor        RoleType               `protobuf:"varint,1,opt,name=m_color,json=mColor,proto3,enum=RoleType" json:"m_color,omitempty"`
@@ -1103,6 +1114,7 @@ type NotifyPlayerStatus struct {
 	Color         RoleType               `protobuf:"varint,1,opt,name=color,proto3,enum=RoleType" json:"color,omitempty"` //
 	Status        PlayerStatus           `protobuf:"varint,2,opt,name=status,proto3,enum=PlayerStatus" json:"status,omitempty"`
 	Colors        []*ColorData           `protobuf:"bytes,3,rep,name=colors,proto3" json:"colors,omitempty"`
+	TimeOutColor  *ColorData             `protobuf:"bytes,4,opt,name=time_out_color,json=timeOutColor,proto3" json:"time_out_color,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -1158,6 +1170,13 @@ func (x *NotifyPlayerStatus) GetColors() []*ColorData {
 	return nil
 }
 
+func (x *NotifyPlayerStatus) GetTimeOutColor() *ColorData {
+	if x != nil {
+		return x.TimeOutColor
+	}
+	return nil
+}
+
 type NotifySettlement struct {
 	state         protoimpl.MessageState `protogen:"open.v1"`
 	Color         RoleType               `protobuf:"varint,1,opt,name=color,proto3,enum=RoleType" json:"color,omitempty"` //
@@ -1998,7 +2017,7 @@ const file_common_proto_rawDesc = "" +
 	"\am_color\x18\x01 \x01(\x0e2\t.roleTypeR\x06mColor\x12\x15\n" +
 	"\x06m_road\x18\x02 \x01(\tR\x05mRoad\x12\x1a\n" +
 	"\x03opt\x18\x03 \x01(\x0e2\b.OptTypeR\x03opt\x12\x1a\n" +
-	"\bszNumber\x18\x04 \x01(\x05R\bszNumber\"\xec\x03\n" +
+	"\bszNumber\x18\x04 \x01(\x05R\bszNumber\"\x87\x04\n" +
 	"\bRoomInfo\x12\x1f\n" +
 	"\x05roles\x18\x01 \x03(\v2\t.RoleDataR\x05roles\x12\"\n" +
 	"\x06colors\x18\x02 \x03(\v2\n" +
@@ -2018,7 +2037,8 @@ const file_common_proto_rawDesc = "" +
 	" \x01(\x05R\troomLevel\x12,\n" +
 	"\vroom_status\x18\v \x01(\x0e2\v.roomStatusR\n" +
 	"roomStatus\x12=\n" +
-	"\x12cur_color_opt_data\x18\f \x01(\v2\x10.NotifyPlayerOptR\x0fcurColorOptData\"\xb0\x01\n" +
+	"\x12cur_color_opt_data\x18\f \x01(\v2\x10.NotifyPlayerOptR\x0fcurColorOptData\x12\x19\n" +
+	"\bopt_time\x18\r \x01(\x05R\aoptTime\"\xb0\x01\n" +
 	"\bRoleData\x12\"\n" +
 	"\am_color\x18\x01 \x01(\x0e2\t.roleTypeR\x06mColor\x12\x15\n" +
 	"\x06m_seat\x18\x02 \x01(\x05R\x05mSeat\x12\x11\n" +
@@ -2058,12 +2078,14 @@ const file_common_proto_rawDesc = "" +
 	"\x0fNotifyPlayerOpt\x12\x1f\n" +
 	"\x05color\x18\x01 \x01(\x0e2\t.roleTypeR\x05color\x12\x1a\n" +
 	"\x03opt\x18\x02 \x01(\x0e2\b.OptTypeR\x03opt\x12-\n" +
-	"\fcanMoveRoles\x18\x03 \x03(\v2\t.RoleDataR\fcanMoveRoles\"\x80\x01\n" +
+	"\fcanMoveRoles\x18\x03 \x03(\v2\t.RoleDataR\fcanMoveRoles\"\xb2\x01\n" +
 	"\x12NotifyPlayerStatus\x12\x1f\n" +
 	"\x05color\x18\x01 \x01(\x0e2\t.roleTypeR\x05color\x12%\n" +
 	"\x06status\x18\x02 \x01(\x0e2\r.playerStatusR\x06status\x12\"\n" +
 	"\x06colors\x18\x03 \x03(\v2\n" +
-	".ColorDataR\x06colors\"d\n" +
+	".ColorDataR\x06colors\x120\n" +
+	"\x0etime_out_color\x18\x04 \x01(\v2\n" +
+	".ColorDataR\ftimeOutColor\"d\n" +
 	"\x10NotifySettlement\x12\x1f\n" +
 	"\x05color\x18\x01 \x01(\x0e2\t.roleTypeR\x05color\x12/\n" +
 	"\rfinish_colors\x18\x02 \x03(\v2\n" +
@@ -2140,13 +2162,14 @@ const file_common_proto_rawDesc = "" +
 	"\aWAN_JIA\x10\x02*+\n" +
 	"\broadType\x12\x15\n" +
 	"\x11ROAD_TYPE_UNKNOWN\x10\x00\x12\b\n" +
-	"\x04HOME\x10\x01*]\n" +
+	"\x04HOME\x10\x01*q\n" +
 	"\fplayerStatus\x12\x19\n" +
 	"\x15PLAYER_STATUS_UNKNOWN\x10\x00\x12\x10\n" +
 	"\fSZ_ANIMATION\x10\x01\x12\x10\n" +
 	"\fCOLOR_FINISH\x10\x02\x12\x0e\n" +
 	"\n" +
-	"COLOR_KICK\x10\x03*+\n" +
+	"COLOR_KICK\x10\x03\x12\x12\n" +
+	"\x0eCOLOR_TIME_OUT\x10\x04*+\n" +
 	"\n" +
 	"roomStatus\x12\t\n" +
 	"\x05AWAIT\x10\x00\x12\t\n" +
@@ -2231,23 +2254,24 @@ var file_common_proto_depIdxs = []int32{
 	0,  // 25: NotifyPlayerStatus.color:type_name -> roleType
 	5,  // 26: NotifyPlayerStatus.status:type_name -> playerStatus
 	10, // 27: NotifyPlayerStatus.colors:type_name -> ColorData
-	0,  // 28: NotifySettlement.color:type_name -> roleType
-	10, // 29: NotifySettlement.finish_colors:type_name -> ColorData
-	8,  // 30: NotifyUpdateRoomInfo.room_info:type_name -> RoomInfo
-	20, // 31: ResLogin.userInfo:type_name -> UserInfo
-	30, // 32: ResLogin.err_msg:type_name -> MsgError
-	30, // 33: ResRegister.err_msg:type_name -> MsgError
-	30, // 34: ResEnterHall.err_msg:type_name -> MsgError
-	8,  // 35: ResEnterHall.reconnect_room_info:type_name -> RoomInfo
-	2,  // 36: MatchLudo.select_room_type:type_name -> roomType
-	0,  // 37: MatchLudo.select_color:type_name -> roleType
-	30, // 38: ResMatchLudo.err_msg:type_name -> MsgError
-	8,  // 39: ResMatchLudo.room:type_name -> RoomInfo
-	40, // [40:40] is the sub-list for method output_type
-	40, // [40:40] is the sub-list for method input_type
-	40, // [40:40] is the sub-list for extension type_name
-	40, // [40:40] is the sub-list for extension extendee
-	0,  // [0:40] is the sub-list for field type_name
+	10, // 28: NotifyPlayerStatus.time_out_color:type_name -> ColorData
+	0,  // 29: NotifySettlement.color:type_name -> roleType
+	10, // 30: NotifySettlement.finish_colors:type_name -> ColorData
+	8,  // 31: NotifyUpdateRoomInfo.room_info:type_name -> RoomInfo
+	20, // 32: ResLogin.userInfo:type_name -> UserInfo
+	30, // 33: ResLogin.err_msg:type_name -> MsgError
+	30, // 34: ResRegister.err_msg:type_name -> MsgError
+	30, // 35: ResEnterHall.err_msg:type_name -> MsgError
+	8,  // 36: ResEnterHall.reconnect_room_info:type_name -> RoomInfo
+	2,  // 37: MatchLudo.select_room_type:type_name -> roomType
+	0,  // 38: MatchLudo.select_color:type_name -> roleType
+	30, // 39: ResMatchLudo.err_msg:type_name -> MsgError
+	8,  // 40: ResMatchLudo.room:type_name -> RoomInfo
+	41, // [41:41] is the sub-list for method output_type
+	41, // [41:41] is the sub-list for method input_type
+	41, // [41:41] is the sub-list for extension type_name
+	41, // [41:41] is the sub-list for extension extendee
+	0,  // [0:41] is the sub-list for field type_name
 }
 
 func init() { file_common_proto_init() }