aboutsummaryrefslogtreecommitdiff
path: root/internal/game/casino_ux.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-09-29 18:58:28 -0400
committerhistoria <[not public]>2026-09-29 18:58:28 -0400
commit624626b9a10ae47cf7d5f6e91765570ed759bd74 (patch)
tree9812f5d254b7d9cfe1d2fcb6da53362e974541b0 /internal/game/casino_ux.go
parentff9002b96e35ad0808945e7c35791460c9ca8776 (diff)
downloadthehouseoficarus-624626b9a10ae47cf7d5f6e91765570ed759bd74.tar.gz
feat: better roulette racetrack graphics and payout table
Diffstat (limited to 'internal/game/casino_ux.go')
-rw-r--r--internal/game/casino_ux.go37
1 files changed, 28 insertions, 9 deletions
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))
}
}