using System;
using BITKit;
using Cysharp.Threading.Tasks;
namespace Com.Project.B.Lobby
{
///
/// 大厅服务
///
public interface ILobbyServices
{
///
/// 获取玩家所在的大厅
///
///
///
UniTask GetPlayerLobbyAsync(Guid playerId);
///
/// 获取所有大厅
///
///
UniTask GetAllLobbyDataAsync();
///
/// 创建大厅
///
///
///
UniTask CreateLobbyAsync(ILobbyData data);
///
/// 加入大厅
///
///
///
///
UniTask JoinLobbyAsync(Guid playerId,Guid lobbyId);
///
/// 离开大厅
///
///
///
///
UniTask LeaveLobbyAsync(Guid playerId,Guid lobbyId);
///
/// 更新大厅信息
///
///
///
UniTask UpdateLobbyAsync(ILobbyData data);
///
/// 正式释放大厅,通常是游戏开始后
///
///
///
UniTask ReleaseLobbyAsync(Guid lobbyId);
///
/// 释放大厅,通常是主机离线或加入其他人的大厅
///
///
///
UniTask DisposeLobbyAsync(Guid lobbyId);
///
/// 邀请玩家加入大厅
///
///
UniTask InviteToLobbyAsync(Guid inviterId,Guid inviteeId,Guid lobbyId);
///
/// 是否接受邀请
///
///
///
///
///
UniTask AccessLobbyInviteAsync(Guid playerId,Guid lobbyId,bool accept);
///
/// 当大厅创建时
///
event Action OnLobbyCreated;
///
/// 当大厅更新时
///
event Action OnLobbyUpdated;
///
/// 当大厅正式释放时
///
event Action OnLobbyReleased;
///
/// 当大厅释放时
///
event Action OnLobbyDisposed;
///
/// 当邀请加入大厅时
///
event Action OnInviteToLobby;
///
/// 当拒绝或接受邀请时
///
event Action OnAccessLobbyInvite;
}
}