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();
}
}