package event import ( "sync" mhayaLogger "github.com/mhaya/logger" ) type EventManage struct { eventMap sync.Map } var ( instance *EventManage once sync.Once ) func GetEventIdMap() *EventManage { return instance } func init() { once.Do(func() { instance = &EventManage{ eventMap: sync.Map{}, } }) instance.AddEvent(new(PlayerLoginEventContent)) } func (em *EventManage) AddEvent(e Eventer) { em.eventMap.Store(e.EventName(), e) } func (em *EventManage) GetEvent(eventName string) Eventer { value, exist := em.eventMap.Load(eventName) if !exist { return nil } return value.(Eventer) } func (em *EventManage) PrintAllEvent() { mhayaLogger.Info("-------------------------------------------------") em.eventMap.Range(func(key, value any) bool { mhayaLogger.Infof("[event name = %s]", key) mhayaLogger.Infof("[event content = %v]", value) return true }) mhayaLogger.Info("-------------------------------------------------") }