package lobby_registry import ( "github.com/google/uuid" ) type LobbyRegistry struct { lobbies map[uuid.UUID]*Lobby } var instance *LobbyRegistry func GetLobbyRegistry() *LobbyRegistry { if instance == nil { instance = newLobbyRegistry() } return instance } func newLobbyRegistry() *LobbyRegistry { return &LobbyRegistry{lobbies: make(map[uuid.UUID]*Lobby)} } func (r *LobbyRegistry) GetLobbyForPlayer() *Lobby { for _, lobby := range r.lobbies { if !lobby.IsFull() { return lobby } } newLobby := NewEmptyLobbyWithUUID(uuid.New()) r.addNewLobby(newLobby) return newLobby } func (r *LobbyRegistry) GetLobbyByUUID(uuid uuid.UUID) *Lobby { return r.lobbies[uuid] } func (r *LobbyRegistry) addNewLobby(lobby *Lobby) uuid.UUID { r.lobbies[lobby.Uuid] = lobby return lobby.Uuid }