diff --git a/AX.WebDrillServer/Hubs/FireDeductionHub.cs b/AX.WebDrillServer/Hubs/FireDeductionHub.cs index fa86231..e1250af 100644 --- a/AX.WebDrillServer/Hubs/FireDeductionHub.cs +++ b/AX.WebDrillServer/Hubs/FireDeductionHub.cs @@ -152,6 +152,12 @@ namespace AX.WebDrillServer.Hubs //通知web端刷新房间用户列表 await Clients.Group(room.RoomId).SendAsync("callWeb_changeRoomate", data); + //如果演练已经开始用户加入到演练的用户列表中 + if (room.Drills.Count > 0) + { + room.Drills[room.Drills.Count - 1].Users.Add(user); + } + resultData.RoomId = room.RoomId; resultData.EnterResult = RoomEnterResult.Success; return resultData; @@ -296,8 +302,8 @@ namespace AX.WebDrillServer.Hubs EndTime = DateTime.Now.Ticks, //Ticks是一个以0 .1纳秒为单位的时间戳 }; room.State = RoomState.Over; - room.Drills[room.Drills.Count - 1].EndTime = resultData.EndData.EndTime; - room.Drills[room.Drills.Count - 1].DrillState = DrillState.Over; + room.Drills[room!.Drills.Count - 1].EndTime = resultData.EndData.EndTime; + room.Drills[room!.Drills.Count - 1].DrillState = DrillState.Over; await Clients.Group(room.RoomId).SendAsync("CallWeb_EndDrill", resultData); return resultData; @@ -329,17 +335,24 @@ namespace AX.WebDrillServer.Hubs } else { - //计算DrillTime - DrillShowData resultData = new() + if (room.Drills.Count > 0) { - DrillTime = room.Drills[room.Drills.Count - 1].GetDrillLastTime(), - Name = room.Drills[room.Drills.Count - 1].DrillName, - Owner = roomManager.GetUser(room.Owner)!, - EndTime = room.Drills[room.Drills.Count - 1].EndTime, - StartTime = room.Drills[room.Drills.Count - 1].StartTime, - Players = room.Drills[room.Drills.Count - 1].Users, - }; - return resultData; + //计算DrillTime + DrillShowData resultData = new() + { + DrillTime = room.Drills[room!.Drills.Count - 1].GetDrillLastTime(), + Name = room.Drills[room!.Drills.Count - 1].DrillName, + Owner = roomManager.GetUser(room!.Owner)!, + EndTime = room.Drills[room!.Drills.Count - 1].EndTime, + StartTime = room.Drills[room!.Drills.Count - 1].StartTime, + Players = room.Drills[room!.Drills.Count - 1].Users, + }; + return resultData; + } + else + { + throw new Exception("演练还没开始!"); + } } } catch (Exception e) @@ -357,7 +370,8 @@ namespace AX.WebDrillServer.Hubs if (room != null) { data.UserId = userId!; - data.Time = DateTime.Now.Ticks; + //持续时间 + data.Time = room.Drills[room!.Drills.Count - 1].GetDrillLastTime(); //转发给房间中的其他人 await Clients.GroupExcept(room.RoomId, Context.ConnectionId).SendAsync("CallWeb_sendOthersOrder", data); //存储一份数据 @@ -368,7 +382,7 @@ namespace AX.WebDrillServer.Hubs RoomId = room.RoomId, InfoData = data.Data.ToJson(), }; - room.Drills[room.Drills.Count - 1].Infos.Add(info); + room.Drills[room!.Drills.Count - 1].Infos.Add(info); roomManager.SaveRoomSendInfo(info); } }