修改创建房间逻辑

This commit is contained in:
milimoe 2023-12-11 01:09:21 +08:00
parent c66b25c21d
commit 7c75fbaf62
Signed by: milimoe
GPG Key ID: 05D280912DA6C69E
2 changed files with 9 additions and 11 deletions

View File

@ -167,11 +167,11 @@ namespace Milimoe.FunGame.Server.Controller
Room room = General.HallInstance; Room room = General.HallInstance;
if (RequestData.Count >= 3) if (RequestData.Count >= 3)
{ {
string roomtype_string = DataRequest.GetHashtableJsonObject<string>(RequestData, "roomtype") ?? RoomSet.All; RoomType type = DataRequest.GetHashtableJsonObject<RoomType>(RequestData, "roomtype");
string gamemode = DataRequest.GetHashtableJsonObject<string>(RequestData, "gamemode") ?? ""; string gamemode = DataRequest.GetHashtableJsonObject<string>(RequestData, "gamemode") ?? "";
string gamemap = DataRequest.GetHashtableJsonObject<string>(RequestData, "gamemap") ?? ""; string gamemap = DataRequest.GetHashtableJsonObject<string>(RequestData, "gamemap") ?? "";
bool isrank = DataRequest.GetHashtableJsonObject<bool>(RequestData, "isrank"); bool isrank = DataRequest.GetHashtableJsonObject<bool>(RequestData, "isrank");
ServerHelper.WriteLine(Server.GetClientName() + " -> " + DataRequestSet.GetTypeString(_LastRequest) + " : " + roomtype_string + " (" + string.Join(", ", [gamemode, gamemap]) + ")", InvokeMessageType.DataRequest); ServerHelper.WriteLine(Server.GetClientName() + " -> " + DataRequestSet.GetTypeString(_LastRequest) + " : " + RoomSet.GetTypeString(type) + " (" + string.Join(", ", [gamemode, gamemap]) + ")", InvokeMessageType.DataRequest);
if (gamemode == "" || gamemap == "") if (gamemode == "" || gamemap == "")
{ {
ServerHelper.WriteLine("缺少对应的模组或地图,无法创建房间。"); ServerHelper.WriteLine("缺少对应的模组或地图,无法创建房间。");
@ -181,11 +181,10 @@ namespace Milimoe.FunGame.Server.Controller
User user = DataRequest.GetHashtableJsonObject<User>(RequestData, "master") ?? Factory.GetUser(); User user = DataRequest.GetHashtableJsonObject<User>(RequestData, "master") ?? Factory.GetUser();
string password = DataRequest.GetHashtableJsonObject<string>(RequestData, "password") ?? ""; string password = DataRequest.GetHashtableJsonObject<string>(RequestData, "password") ?? "";
if (!string.IsNullOrWhiteSpace(roomtype_string) && user.Id != 0) if (user.Id != 0)
{ {
RoomType roomtype = RoomSet.GetRoomType(roomtype_string);
string roomid = Verification.CreateVerifyCode(VerifyCodeType.MixVerifyCode, 7).ToUpper(); string roomid = Verification.CreateVerifyCode(VerifyCodeType.MixVerifyCode, 7).ToUpper();
SQLHelper.Execute(RoomQuery.Insert_CreateRoom(roomid, user.Id, roomtype, gamemode, gamemap, isrank, password ?? "")); SQLHelper.Execute(RoomQuery.Insert_CreateRoom(roomid, user.Id, type, gamemode, gamemap, isrank, password ?? ""));
if (SQLHelper.Result == SQLResult.Success) if (SQLHelper.Result == SQLResult.Success)
{ {
ServerHelper.WriteLine("[CreateRoom] Master: " + user.Username + " RoomID: " + roomid); ServerHelper.WriteLine("[CreateRoom] Master: " + user.Username + " RoomID: " + roomid);
@ -278,9 +277,9 @@ namespace Milimoe.FunGame.Server.Controller
if (!iscancel) if (!iscancel)
{ {
ServerHelper.WriteLine(Server.GetClientName() + " -> " + DataRequestSet.GetTypeString(_LastRequest) + " : Start", InvokeMessageType.DataRequest); ServerHelper.WriteLine(Server.GetClientName() + " -> " + DataRequestSet.GetTypeString(_LastRequest) + " : Start", InvokeMessageType.DataRequest);
string roomtype_string = DataRequest.GetHashtableJsonObject<string>(RequestData, "roomtype") ?? RoomSet.All; RoomType type = DataRequest.GetHashtableJsonObject<RoomType>(RequestData, "roomtype");
User user = DataRequest.GetHashtableJsonObject<User>(RequestData, "matcher") ?? Factory.GetUser(); User user = DataRequest.GetHashtableJsonObject<User>(RequestData, "matcher") ?? Factory.GetUser();
Server.StartMatching(roomtype_string, user); Server.StartMatching(type, user);
} }
else else
{ {

View File

@ -434,16 +434,15 @@ namespace Milimoe.FunGame.Server.Model
return Send(socket, SocketMessageType.HeartBeat, ""); return Send(socket, SocketMessageType.HeartBeat, "");
} }
public void StartMatching(string roomtype_string, User user) public void StartMatching(RoomType type, User user)
{ {
IsMatching = true; IsMatching = true;
ServerHelper.WriteLine(GetClientName() + " 开始匹配。类型:" + roomtype_string); ServerHelper.WriteLine(GetClientName() + " 开始匹配。类型:" + RoomSet.GetTypeString(type));
TaskUtility.NewTask(async () => TaskUtility.NewTask(async () =>
{ {
if (IsMatching) if (IsMatching)
{ {
RoomType roomtype = RoomSet.GetRoomType(roomtype_string); Room room = await MatchingRoom(type, user);
Room room = await MatchingRoom(roomtype, user);
if (IsMatching && Socket != null) if (IsMatching && Socket != null)
{ {
Send(Socket, SocketMessageType.MatchRoom, room); Send(Socket, SocketMessageType.MatchRoom, room);