From 624626b9a10ae47cf7d5f6e91765570ed759bd74 Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Tue, 29 Sep 2026 18:58:28 -0400 Subject: feat: better roulette racetrack graphics and payout table --- internal/game/casino_ux.go | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) (limited to 'internal/game/casino_ux.go') diff --git a/internal/game/casino_ux.go b/internal/game/casino_ux.go index de62797..6e146d0 100644 --- a/internal/game/casino_ux.go +++ b/internal/game/casino_ux.go @@ -103,28 +103,47 @@ func (g *Game) executeTableStatus(sess *net.Session, args []string, _ string) { } t, playing := g.Casino.Participation(sess.Player.Name) if !playing || t == nil { - g.showCasinoChoices(sess, g.casinoChoices(sess.Player.RoomID)) + if len(args) > 0 && args[0] == "help" { + topic := "casino" + if playing { + topic = "slots" + } + g.doHelp(sess, topic) + } else { + g.showCasinoChoices(sess, g.casinoChoices(sess.Player.RoomID)) + } return } if len(args) > 0 && args[0] == "rules" { sess.WriteLine(g.renderCasinoRules(sess, t.Config)) return } - g.emitCasinoEvents(t.Status(sess.Player.Name)) - if t.Config.Game == casino.GameRoulette { - sess.WriteLine(g.rouletteReminder(sess, t.Config)) + if len(args) > 0 && args[0] == "help" { + g.doHelp(sess, string(t.Config.Game)) + } else { + g.emitCasinoEvents(t.Status(sess.Player.Name)) + if t.Config.Game == casino.GameRoulette { + sess.WriteLine(g.rouletteReminder(sess, t.Config)) + } else { + sess.WriteLine(g.colorize(sess, "command", "Learn to play: table help / help casino. Exact payouts: table rules.")) + } } if len(args) > 0 { - sess.WriteLine(g.renderCasinoCommands(sess, "", "Table controls", []casino.MenuCommand{ - {Command: "bet / rebet", Desc: "Repeat the displayed wager"}, + commands := []casino.MenuCommand{ + {Command: "bet / rebet", Desc: "Repeat your previous wager"}, {Command: "bet min / bet max", Desc: "Use the table minimum / affordable maximum"}, - {Command: "h / st / dd / sp", Desc: "Blackjack: hit / stand / double / split (s and d still move)"}, - {Command: "insurance / decline", Desc: "Answer the insurance offer explicitly"}, {Command: "sitout", Desc: "Skip future rounds; bet to rejoin"}, {Command: "stop", Desc: "Leave now, or after your committed round"}, {Command: "option casino_display compact", Desc: "Compact action hints (detailed for full command menus)"}, {Command: "table rules", Desc: "Review this table’s rules"}, - })) + {Command: "help casino", Desc: "Quick guides to all casino games"}, + } + if t.Config.Game == casino.GameBlackjack { + commands = append(commands, + casino.MenuCommand{Command: "h / st / dd / sp", Desc: "Hit / stand / double / split (s and d still move)"}, + casino.MenuCommand{Command: "insurance / decline", Desc: "Answer the insurance offer explicitly"}) + } + sess.WriteLine(g.renderCasinoCommands(sess, "", "Table controls", commands)) } } -- cgit v1.2.3