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
42
43
44
45
46
|
package game
import (
"strings"
"thehouseoficarus/internal/casino"
"thehouseoficarus/internal/net"
)
// Tables are room fixtures in their own right, not authored scenery objects.
func (g *Game) lookBlackjackTable(sess *net.Session, target string) bool {
return g.lookCardTable(sess, target, casino.GameBlackjack)
}
func (g *Game) lookBaccaratTable(sess *net.Session, target string) bool {
return g.lookCardTable(sess, target, casino.GameBaccarat)
}
func (g *Game) lookRouletteTable(sess *net.Session, target string) bool {
return g.lookCardTable(sess, target, casino.GameRoulette)
}
func (g *Game) lookCardTable(sess *net.Session, target string, game casino.GameName) bool {
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 != game {
continue
}
id := strings.ToLower(cfg.ID)
if target != string(game) && target != string(game)+" table" && target != id && target != id+" table" && !(target == "table" && len(room.CasinoTables) == 1) {
continue
}
// Use the active configuration: live edits may be pending until a round ends.
table, ok := g.casinoTable(room.ID, string(cfg.Game))
if !ok {
return false
}
sess.WriteLine(g.renderCasinoRules(sess, table.Config))
return true
}
return false
}
|