49 lines
1.5 KiB
C#
49 lines
1.5 KiB
C#
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);
|
||
}
|
||
}
|
||
}
|
||
}
|