using System; using System.Collections.Generic; using Newtonsoft.Json; namespace Com.Project.B.Lobby { /// /// 大厅授权 /// public enum LobbyAccessMode { /// /// 私密大厅 /// Private, /// /// 公开,可被搜索到 /// Public, /// /// 仅好友可见 /// FriendsOnly, /// /// 仅邀请可见 /// InviteOnly, /// /// 好友和邀请 /// FriendAndInvite, } /// /// 大厅数据 /// public interface ILobbyData { /// /// 大厅ID,通常是玩家ID /// public Guid Id { get; } /// /// 开放模式 /// LobbyAccessMode LobbyAccess { get; } /// /// 选择的场景 /// public string Map { get; } /// /// 大厅名称 /// public string Name { get; } /// /// 描述 /// public string Description { get; } /// /// 主机ID,通常是玩家ID /// public Guid HostId { get; } /// /// 玩家ID /// public Guid[] PlayerIds { get; } public bool Contain(Guid player); } public sealed class LobbyData:ILobbyData { public Guid Id { get; set; } public LobbyAccessMode LobbyAccess { get; set; } = LobbyAccessMode.Public; public string Map { get; set; } public string Name { get; set; } = "Project B Lobby"; public string Description { get; set; }="Welcome"; public Guid HostId { get; set; } [JsonIgnore] Guid[] ILobbyData.PlayerIds=>Players.ToArray(); public bool Contain(Guid player) { return Players.Contains(player) || HostId == player; } public List Players = new(); } }