aboutsummaryrefslogtreecommitdiff
path: root/internal/casino/blackjack.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/casino/blackjack.go')
-rw-r--r--internal/casino/blackjack.go12
1 files changed, 9 insertions, 3 deletions
diff --git a/internal/casino/blackjack.go b/internal/casino/blackjack.go
index b5beb1e..83c183f 100644
--- a/internal/casino/blackjack.go
+++ b/internal/casino/blackjack.go
@@ -187,6 +187,9 @@ func (t *blackjackTable) bet(name, spot string, amount int, wallet Wallet) []Eve
if amount < t.Config.MinBet || amount > t.Config.MaxBet {
return []Event{t.private(name, fmt.Sprintf("Blackjack bets must be %s.", betRangeText(t.Config.MinBet, t.Config.MaxBet)))}
}
+ if wallet == nil {
+ return []Event{t.private(name, "Wallet unavailable.")}
+ }
wager, err := wallet.Wager(amount)
if err != nil {
return []Event{t.private(name, walletErrorMessage(err))}
@@ -244,6 +247,7 @@ func (t *blackjackTable) tick() []Event {
if active == nil {
// Unreachable while mid-round leaves are blocked; keep the game moving.
t.activePlayer++
+ t.activeHand = 0
return t.finishHand()
}
// A lone bettor has no time limit at all. With two or more bettors
@@ -581,10 +585,12 @@ func (t *blackjackTable) turnMenuLocked(name string) Event {
e := t.private(name, "Your turn.")
e.Color = "casino_menu"
deadline := t.timer.remaining()
+ heading := fmt.Sprintf("Your turn | %d ticks remaining", deadline)
if p.Connected && t.bettorCount() <= 1 {
- deadline = t.ceiling.remaining()
+ // A lone bettor's clock never ticks, so a countdown would be frozen.
+ heading = "Your turn | no time limit"
}
- e.Menu = &MenuView{Heading: fmt.Sprintf("Your turn | %d ticks remaining", deadline), Commands: withTableHints(blackjackActionCommands(actions), nil)}
+ e.Menu = &MenuView{Heading: heading, Commands: withTableHints(blackjackActionCommands(actions), nil)}
for i := range e.Menu.Commands {
c := &e.Menu.Commands[i]
if c.Command == "double" || c.Command == "split" {
@@ -693,7 +699,7 @@ func (t *blackjackTable) settle() []Event {
if !p.HasBet {
continue
}
- needsBalance := p.LeaveAfter || p.SitOutAfter || !p.Connected
+ needsBalance := p.SettlementBalanceNeeded(false)
lines := make([]settlementLine, 0, len(p.hands)+1)
for i, hand := range p.hands {
result, payout, settleErr := settleHand(hand, dealerTotal, dealerBlackjack, t.Rules)