package lobbies import ( "mchess_server/chess" "mchess_server/utils" "github.com/google/uuid" ) type Usher struct { } var usherInstance *Usher func newUsher() *Usher { return &Usher{} } func GetUsher() *Usher { if usherInstance == nil { usherInstance = newUsher() } return usherInstance } func (u *Usher) WelcomeNewPlayer(player *chess.Player) *Lobby { lobby := GetLobbyRegistry().GetLobbyForPlayer() return lobby } func (u *Usher) CreateNewPrivateLobby(player *chess.Player) *Lobby { lobby := GetLobbyRegistry().CreateNewPrivateLobby() return lobby } func (u *Usher) FindExistingPrivateLobby(p utils.Passphrase) *Lobby { lobby := GetLobbyRegistry().GetLobbyByPassphrase(p) if lobby == nil || lobby.IsFull() { return nil } return lobby } func (*Usher) GetLobbyByID(id uuid.UUID) *Lobby { return GetLobbyRegistry().GetLobbyByUUID(id) } func (u *Usher) AddPlayerToLobbyAndStartGameIfFull(player *chess.Player, lobby *Lobby) { lobby.AddPlayerAndStartGameIfFull(player) }