51 lines
1000 B
Go
51 lines
1000 B
Go
|
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)
|
||
|
}
|