summaryrefslogtreecommitdiff
path: root/server/chat.go
diff options
context:
space:
mode:
authorraven <citrons@mondecitronne.com>2026-03-24 18:34:08 -0500
committerraven <citrons@mondecitronne.com>2026-03-24 18:34:08 -0500
commit3f5fefa2012b5b8c0b9da2886b46e602d3460712 (patch)
tree6459d2d5bdb39e68e7810177016d8cde1499baed /server/chat.go
parenta29c68960998260cb676d97ea1c0f6514c50ec39 (diff)
gameChat actor
Diffstat (limited to 'server/chat.go')
-rw-r--r--server/chat.go30
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