From 396c3facb8287b9a34076cae8f3d7b300d366d99 Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Tue, 15 Sep 2026 14:18:14 -0400 Subject: fix: atomic saves, casino RNG/config isolation, tick lifecycle --- internal/game/casino.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'internal/game') diff --git a/internal/game/casino.go b/internal/game/casino.go index 2e80bf3..eb6fa4a 100644 --- a/internal/game/casino.go +++ b/internal/game/casino.go @@ -62,6 +62,9 @@ func (g *Game) casinoTable(roomID int, gameName string) (*casino.Table, bool) { if err != nil { return nil, false } + if casino.ValidateRoomConfigs(room.CasinoTables, room.CasinoMachines) != nil { + return nil, false + } for _, cfg := range room.CasinoTables { if strings.EqualFold(string(cfg.Game), gameName) { table := g.Casino.EnsureTable(roomID, cfg) @@ -79,9 +82,13 @@ func (g *Game) casinoMachine(roomID int, gameName string) (*casino.Machine, bool if err != nil { return nil, false } + if casino.ValidateRoomConfigs(room.CasinoTables, room.CasinoMachines) != nil { + return nil, false + } for _, cfg := range room.CasinoMachines { if strings.EqualFold(string(cfg.Game), gameName) || strings.EqualFold(cfg.Variant, gameName) { - return g.Casino.EnsureMachine(roomID, cfg), true + machine := g.Casino.EnsureMachine(roomID, cfg) + return machine, machine != nil } } // Migrate older room definitions that declared slots under casino_tables; @@ -89,9 +96,10 @@ func (g *Game) casinoMachine(roomID int, gameName string) (*casino.Machine, bool if strings.EqualFold(gameName, "slots") { for _, cfg := range room.CasinoTables { if strings.EqualFold(string(cfg.Game), "slots") { - return g.Casino.EnsureMachine(roomID, casino.MachineConfig{ + machine := g.Casino.EnsureMachine(roomID, casino.MachineConfig{ ID: cfg.ID, Game: casino.GameSlots, MinBet: cfg.MinBet, MaxBet: cfg.MaxBet, - }), true + }) + return machine, machine != nil } } } -- cgit v1.2.3