From 3f5fefa2012b5b8c0b9da2886b46e602d3460712 Mon Sep 17 00:00:00 2001 From: raven Date: Tue, 24 Mar 2026 18:34:08 -0500 Subject: gameChat actor --- server/server.go | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) (limited to 'server/server.go') diff --git a/server/server.go b/server/server.go index d6e39f2..557abac 100644 --- a/server/server.go +++ b/server/server.go @@ -41,6 +41,7 @@ type Server struct { phony.Inbox worldState info ServerInfo + Chat gameChat clients map[*client]bool players map[string]*player listIds map[listId]string @@ -73,6 +74,7 @@ func NewServer(info ServerInfo) *Server { players: make(map[string]*player), listIds: make(map[listId]string), playerList: make(map[string]listEntry), + Chat: gameChat {members: make(map[chatListener]bool)}, levels: make(map[levelId]*level), stopped: make(chan struct{}), } @@ -219,18 +221,11 @@ func (s *Server) OnDisconnect(cl *client) { func (s *Server) OnLeave(pl *player, username string) { s.Act(pl, func() { - s.Broadcast(nil, fmt.Sprintf("&e%s has left", username)) + s.Chat.Send(s, nil, fmt.Sprintf("&e%s has left", username)) if s.players[username] == pl { delete(s.players, username) s.removeListEntry(username) - } - }) -} - -func (s *Server) OnPlayerMessage(from *player, name string, message string) { - s.Act(from, func() { - for _, player := range s.players { - player.OnPlayerMessage(s, name, message) + s.Chat.RemoveMember(s, pl) } }) } @@ -241,7 +236,7 @@ func (s *Server) OnLoadError(from phony.Actor, err error) { func (s *Server) OnSaveError(from phony.Actor, err error) { log.Printf("error saving world: %s", err) - s.Broadcast(from, fmt.Sprintf("&4Error saving world: %s", err)) + s.Chat.Send(s, nil, fmt.Sprintf("&4Error saving world: %s", err)) } func (s *Server) Tick() { @@ -270,6 +265,7 @@ func (s *Server) newPlayer( for _, entry := range s.playerList { pl.OnAddListEntry(s, entry) } + s.Chat.AddMember(s, pl) return pl } @@ -328,7 +324,7 @@ func (s *Server) NewPlayer( cl.Disconnect(s, banReason) return } - s.Broadcast(nil, fmt.Sprintf("&e%s has joined", name)) + s.Chat.Send(s, nil, fmt.Sprintf("&e%s has joined", name)) log.Printf("%s has joined", name) if s.players[name] != nil { s.players[name].Act(s, func() { @@ -404,12 +400,6 @@ func (s *Server) GetPlayer( }) } -func (s *Server) Broadcast(from phony.Actor, message string) { - for _, player := range s.players { - player.SendMessage(s, message) - } -} - type client struct { phony.Inbox server *Server -- cgit v1.2.3