func Register(character *database.Character) chan Event { _mutex.Lock() if _listeners == nil { _listeners = map[chan Event]*database.Character{} } _mutex.Unlock() listener := make(chan Event, 100) _mutex.Lock() _listeners[listener] = character _mutex.Unlock() character.SetOnline(true) queueEvent(LoginEvent{character}) return listener }