summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/player.go1
-rw-r--r--server/server.go21
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 {