XNet/XNet.Business/Manager/SceneManager.cs
2025-12-31 18:29:29 +08:00

49 lines
1.5 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using MessagePack;
using NanoidDotNet;
using System.Text;
using XNet.Business.Net;
using XNet.Business.PathNavigation;
namespace XNet.Business.Manager
{
public class SceneManager
{
private readonly WsConnectionManager _wsManager;
public SceneManager(WsConnectionManager wsManager)
{
_wsManager = wsManager;
}
public async Task GetRoomForStart(string connId, byte[] data)
{
// 处理订阅实例请求
var startRoomReq = MessagePackSerializer.Deserialize<SubscribeRoom>(data);
if (startRoomReq != null)
{
string roomId = startRoomReq.RoomId;
//roomId为空时开启游戏失败返回
if (string.IsNullOrWhiteSpace(startRoomReq.RoomId))
{
return;
}
var room = _wsManager.GetStartRoomInfoForCondition(roomId, startRoomReq.RoomName);
await _wsManager.SendBaseSingleMessage(connId, WsMsgType.GET_ROOM_FOR_START,
(room == null ? null : room.RoomId)
);
}
}
public async Task LeaveRoom(string connId, byte[] data)
{
// 处理订阅实例请求
string roomId = Encoding.UTF8.GetString(data);
if (!string.IsNullOrEmpty(roomId))
{
//退出所有房间
await _wsManager.LeaveRoom(connId);
}
}
}
}