diff options
| -rw-r--r-- | server/player.go | 1 | ||||
| -rw-r--r-- | server/server.go | 21 |
2 files changed, 10 insertions, 12 deletions
diff --git a/server/player.go b/server/player.go index 6c3babb..86a32fa 100644 --- a/server/player.go +++ b/server/player.go @@ -85,6 +85,7 @@ func (p *player) kick(reason string) { p.level.OnRemovePlayer(p) p.level = nil } + p.server.OnLeave(p, p.name) } func (p *player) sendAuthInfo() { diff --git a/server/server.go b/server/server.go index 20a1c66..29aa66f 100644 --- a/server/server.go +++ b/server/server.go @@ -195,22 +195,19 @@ func (s *Server) GetInfo(from phony.Actor, reply func(ServerInfo)) { from.Act(nil, func() {reply(info)}) } -func (s *Server) OnDisconnect(cl *client, username string, pl *player) { +func (s *Server) OnDisconnect(cl *client) { s.Act(cl, func() { delete(s.clients, cl) - if s.stopping { - return - } - if username == "" { - return - } - s.Broadcast(nil, fmt.Sprintf("&e%s has left", username)) - if s.players[username] == pl { - delete(s.players, username) - } }) } +func (s *Server) OnLeave(pl *player, username string) { + s.Broadcast(nil, fmt.Sprintf("&e%s has left", username)) + if s.players[username] == pl { + delete(s.players, username) + } +} + func (s *Server) OnPlayerMessage(from *player, name string, message string) { s.Act(from, func() { for _, player := range s.players { @@ -548,7 +545,7 @@ func (cl *client) disconnect(reason string) { cl.player = nil } if cl.conn != nil { - cl.server.OnDisconnect(cl, cl.username, cl.player) + cl.server.OnDisconnect(cl) log.Printf("disconnecting client (%s): %s", cl.username, reason) cl.conn.SetWriteDeadline(time.Now().Add(10 * time.Second)) classic.WritePacket(cl.conn, &classic.DisconnectPlayer { |
