package maps import ( "fmt" "github.com/atridad/LilGuy/internal/portal" ) type Manager struct { maps map[string]*Map currentMap *Map } func NewManager() *Manager { return &Manager{ maps: make(map[string]*Map), } } func (m *Manager) RegisterMap(mp *Map) { m.maps[mp.ID] = mp } func (m *Manager) GetMap(id string) *Map { return m.maps[id] } func (m *Manager) SetCurrentMap(id string) error { mp, ok := m.maps[id] if !ok { return fmt.Errorf("map not found: %s", id) } m.currentMap = mp return nil } func (m *Manager) CurrentMap() *Map { return m.currentMap } func (m *Manager) ResolveTransition(event portal.TransitionEvent) (*Map, *portal.Portal) { destMap := m.GetMap(event.DestinationMap) if destMap == nil { return nil, nil } destPortal := destMap.GetPortalByID(event.DestinationPortal) return destMap, destPortal } func (m *Manager) Reset() { for _, mp := range m.maps { mp.Reset() } // Reset to default map if needed, or let the caller do it }