xy vor 5 Tagen
Ursprung
Commit
017d5af855
3 geänderte Dateien mit 29 neuen und 12 gelöschten Zeilen
  1. 1 0
      bin/client_msg/common.proto
  2. 17 10
      src/server/game/ludo/battle.go
  3. 11 2
      src/server/msg/common.pb.go

+ 1 - 0
bin/client_msg/common.proto

@@ -122,6 +122,7 @@ message NotifyPlayerOpt {
   roleType color = 1;  // 
   OptType opt = 2;   // 
   repeated RoleData canMoveRoles = 3;
+  int32 opt_time = 4;
 }
 
 message NotifyPlayerStatus {

+ 17 - 10
src/server/game/ludo/battle.go

@@ -130,15 +130,16 @@ func (room_info *RoomInfoWrapper) notify_player_move(list []*msg.RoleData) {
 			room_info.delay_action_move_robot(1000, cur_color, list)
 		}
 	}
-
+	room_info.StartCountdownPlayerOpt()
 	message := &msg.NotifyPlayerOpt{
 		Color:        room_info.CurRoundColor,
 		Opt:          msg.OptType_SELECT_ROLE,
 		CanMoveRoles: list,
+		OptTime:      room_info.get_cur_color_opt_time(),
 	}
 	room_info.notify_to_all_player(message)
 	room_info.setCurColorOpt(message)
-	room_info.StartCountdownPlayerOpt()
+
 }
 
 // 通知玩家状态
@@ -151,16 +152,27 @@ func (room_info *RoomInfoWrapper) notify_player_status(color msg.RoleType, statu
 	room_info.notify_to_all_player(message)
 }
 
+// 获取当前回合玩家的操作时间
+func (room_info *RoomInfoWrapper) get_cur_color_opt_time() int32 {
+	end := time.Now()
+	// 计算整数秒(直接截断小数部分)
+	seconds := int(end.Sub(room_info.startOptTime).Seconds())
+	opt_time := gameRule.OPT_TIME - int32(seconds)
+	fmt.Printf("room_info.OptTime:%d,%d\n", seconds, opt_time)
+	return opt_time
+}
+
 // 通知玩家要骰子
 func (room_info *RoomInfoWrapper) notify_player_sz() {
 	cur_color := room_info.CurRoundColor
+	room_info.StartCountdownPlayerOpt()
 	message := &msg.NotifyPlayerOpt{
-		Color: cur_color,
-		Opt:   msg.OptType_ZHI_SHAI_ZI,
+		Color:   cur_color,
+		Opt:     msg.OptType_ZHI_SHAI_ZI,
+		OptTime: room_info.get_cur_color_opt_time(),
 	}
 	room_info.notify_to_all_player(message)
 	room_info.setCurColorOpt(message)
-	room_info.StartCountdownPlayerOpt()
 }
 
 // 托管操作一次
@@ -243,11 +255,6 @@ func (room_info *RoomInfoWrapper) delay_action_move_robot(td int, color msg.Role
 
 // 更新房间信息发送给玩家
 func (room_info *RoomInfoWrapper) notify_update_room_info() {
-	end := time.Now()
-	// 计算整数秒(直接截断小数部分)
-	seconds := int(end.Sub(room_info.startOptTime).Seconds())
-	room_info.OptTime = gameRule.OPT_TIME - int32(seconds)
-	fmt.Printf("room_info.OptTime:%d,%d\n", seconds, room_info.OptTime)
 	room_info.notify_to_all_player(&msg.NotifyUpdateRoomInfo{
 		RoomInfo: room_info.RoomInfo,
 	})

+ 11 - 2
src/server/msg/common.pb.go

@@ -1054,6 +1054,7 @@ type NotifyPlayerOpt struct {
 	Color         RoleType               `protobuf:"varint,1,opt,name=color,proto3,enum=RoleType" json:"color,omitempty"` //
 	Opt           OptType                `protobuf:"varint,2,opt,name=opt,proto3,enum=OptType" json:"opt,omitempty"`      //
 	CanMoveRoles  []*RoleData            `protobuf:"bytes,3,rep,name=canMoveRoles,proto3" json:"canMoveRoles,omitempty"`
+	OptTime       int32                  `protobuf:"varint,4,opt,name=opt_time,json=optTime,proto3" json:"opt_time,omitempty"`
 	unknownFields protoimpl.UnknownFields
 	sizeCache     protoimpl.SizeCache
 }
@@ -1109,6 +1110,13 @@ func (x *NotifyPlayerOpt) GetCanMoveRoles() []*RoleData {
 	return nil
 }
 
+func (x *NotifyPlayerOpt) GetOptTime() int32 {
+	if x != nil {
+		return x.OptTime
+	}
+	return 0
+}
+
 type NotifyPlayerStatus struct {
 	state         protoimpl.MessageState `protogen:"open.v1"`
 	Color         RoleType               `protobuf:"varint,1,opt,name=color,proto3,enum=RoleType" json:"color,omitempty"` //
@@ -2074,11 +2082,12 @@ const file_common_proto_rawDesc = "" +
 	"\x10NotifyPlayerMove\x12\x1f\n" +
 	"\x05color\x18\x01 \x01(\x0e2\t.roleTypeR\x05color\x12!\n" +
 	"\x04step\x18\x02 \x01(\v2\r.MoveStepDataR\x04step\x12\x1d\n" +
-	"\x04kick\x18\x03 \x03(\v2\t.RoleDataR\x04kick\"}\n" +
+	"\x04kick\x18\x03 \x03(\v2\t.RoleDataR\x04kick\"\x98\x01\n" +
 	"\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\"\xb2\x01\n" +
+	"\fcanMoveRoles\x18\x03 \x03(\v2\t.RoleDataR\fcanMoveRoles\x12\x19\n" +
+	"\bopt_time\x18\x04 \x01(\x05R\aoptTime\"\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" +