From 13db3e50cb6e29eedbf25416e5284bf08b0adefb Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Thu, 24 Sep 2026 20:06:41 -0400 Subject: feat: casino table ux: aliases, rebet hints, deadline notifications, spectator mode --- internal/casino/table.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'internal/casino/table.go') diff --git a/internal/casino/table.go b/internal/casino/table.go index 408e5fe..17732e0 100644 --- a/internal/casino/table.go +++ b/internal/casino/table.go @@ -19,6 +19,8 @@ type tableGame interface { hasParticipant(name string) bool refundAll() []Event idle() bool + status(name string) []Event + overview() string // base returns the table identity shared with the Table handle. base() *tableBase } @@ -52,7 +54,7 @@ func (b *tableBase) playerAction(name, publicMessage, privateMessage string) Eve // betMenuEvent builds the shared "place your bet" menu heading for a table // game; only the command list differs per game. func (b *tableBase) betMenuEvent(name string, commands []MenuCommand) Event { - heading := fmt.Sprintf("New %s hand! Place your bet.", b.Config.Game) + heading := fmt.Sprintf("%s | Next hand | Limits %s", b.Config.Label(), betRangeText(b.Config.MinBet, b.Config.MaxBet)) e := b.private(name, heading) e.Color = "casino_menu" e.Menu = &MenuView{Heading: heading, ShowBalance: true, Commands: commands} @@ -105,3 +107,7 @@ func (t *Table) refundAll() []Event { return t.game.refundAll() } // idle on the Table wrapper delegates to the game. func (t *Table) idle() bool { return t.game.idle() } + +// Status is a read-only view: it never restarts a deadline or changes a wager. +func (t *Table) Status(name string) []Event { return t.game.status(name) } +func (t *Table) Overview() string { return t.game.overview() } -- cgit v1.2.3