package lobby import ( "sync" "git.sunturtle.xyz/studio/shotgun/game" "git.sunturtle.xyz/studio/shotgun/serve" ) type GameID = serve.GameID // Lobby is a set of active games. type Lobby struct { mu sync.Mutex // games is the set of all active games in the lobby. games map[GameID]*game.Game } func New() *Lobby { return &Lobby{ games: make(map[GameID]*game.Game), } } // Game returns the game with the given ID. func (l *Lobby) Game(id GameID) *game.Game { l.mu.Lock() defer l.mu.Unlock() return l.games[id] } // Finish removes a game from the lobby. func (l *Lobby) Finish(id GameID) { l.mu.Lock() defer l.mu.Unlock() delete(l.games, id) }