package game import "thehouseoficarus/internal/net" // attachSession registers a fully-logged-in session in the game's // character registry. Menu flows call it through connectCharacter; the test // harness uses it to skip the menu. func (g *Game) attachSession(sess *net.Session) { g.charsMu.Lock() g.loggedInChars[sess.Player.Name] = sess g.charsMu.Unlock() } // detachSession removes a character's registry entry and drops every command // queued under its name. Leftover queue entries retain the departed session // (and its transport) and would otherwise replay against the next session // that logs in as the same character. func (g *Game) detachSession(name string) { g.charsMu.Lock() delete(g.loggedInChars, name) g.charsMu.Unlock() if g.queue != nil { g.queue.ClearPlayer(name) } }