aboutsummaryrefslogtreecommitdiff
path: root/internal/game/blackjack_rules.go
blob: 2a0712d617c1452134b0ade7aec9b1122f5c19ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package game

import (
	"strings"

	"thehouseoficarus/internal/casino"
	"thehouseoficarus/internal/net"
)

// A cabinet's published pay table is public; another player's cards are not.
func (g *Game) lookVideoPokerCabinet(sess *net.Session, target string) bool {
	if g.Casino == nil || sess.Player == nil {
		return false
	}
	room, err := g.World.LoadRoom(sess.Player.RoomID)
	if err != nil {
		return false
	}
	target = strings.TrimSpace(strings.ToLower(target))
	for _, cfg := range room.CasinoTables {
		if cfg.Game != casino.GameVideoPoker {
			continue
		}
		id := strings.ToLower(cfg.ID)
		if target != id && target != id+" machine" && target != id+" cabinet" {
			continue
		}
		table, ok := g.casinoTable(room.ID, cfg.ID)
		if !ok {
			return false
		}
		if seated, playing := g.Casino.Participation(sess.Player.Name); playing && seated == table {
			g.emitCasinoEvents(table.Status(sess.Player.Name))
			return true
		}
		c := table.Config.VideoPoker.Normalize()
		sess.WriteLine(table.Config.Label() + g.renderCasinoSnapshot(sess, &casino.VideoPokerSnapshot{Config: c, ShowPayTable: true, Denomination: 1, Hands: casino.CabinetHandCounts(c.Cabinet, c.Variant)[0], FeatureOn: c.Feature != "", Multiplier: 1}))
		return true
	}
	return false
}