diff options
| author | raven <citrons@mondecitronne.com> | 2026-03-24 18:34:08 -0500 |
|---|---|---|
| committer | raven <citrons@mondecitronne.com> | 2026-03-24 18:34:08 -0500 |
| commit | 3f5fefa2012b5b8c0b9da2886b46e602d3460712 (patch) | |
| tree | 6459d2d5bdb39e68e7810177016d8cde1499baed /server/chat.go | |
| parent | a29c68960998260cb676d97ea1c0f6514c50ec39 (diff) | |
gameChat actor
Diffstat (limited to 'server/chat.go')
| -rw-r--r-- | server/chat.go | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/server/chat.go b/server/chat.go index 4206d66..8275c59 100644 --- a/server/chat.go +++ b/server/chat.go @@ -3,8 +3,38 @@ package server import ( "strings" "git.citrons.xyz/metronode/classic" + "git.citrons.xyz/metronode/phony" ) +type gameChat struct { + phony.Inbox + members map[chatListener]bool +} + +func (c *gameChat) AddMember(from phony.Actor, m chatListener) { + c.Act(from, func() { + c.members[m] = true + }) +} + +func (c *gameChat) RemoveMember(from phony.Actor, m chatListener) { + c.Act(from, func() { + delete(c.members, m) + }) +} + +func (c *gameChat) Send(from phony.Actor, messageSender any, message string) { + c.Act(from, func() { + for m := range c.members { + m.OnChatMessage(c, messageSender, message) + } + }) +} + +type chatListener interface { + OnChatMessage(from *gameChat, messageSender any, message string) +} + func processChatMessage(message string) []classic.Packet { var ( packets []classic.Packet |
