Add Skins as a side game for Bingo Bango Bongo
Players can now opt into a Skins side game when creating a BBB round. The side game uses the same skins settings (carryover, net/gross, skin value, double back nine). The scorecard gains a third Skins tab during play and on the summary; the BBB leaderboard continues to rank by BBB points. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -284,10 +284,11 @@ async def create_game(request: Request, holes_count: int = Form(...),
|
||||
skin_value = float(skin_value_str) if skin_value_str else None
|
||||
skin_double_back_nine = 1 if form.get("skin_double_back_nine") == "1" else 0
|
||||
skins_net = 1 if form.get("skins_net") == "1" else 0
|
||||
side_skins_enabled = 1 if form.get("side_skins_enabled") == "1" else 0
|
||||
|
||||
await db.execute(
|
||||
"INSERT INTO games (id, format, holes_count, status, created_by, created_at, course_id, carryover, skin_value, skin_double_back_nine, skins_net) VALUES (?,?,?,?,?,?,?,?,?,?,?)",
|
||||
(game_id, format, holes_count, "active", user["id"], now, course_id, carryover, skin_value, skin_double_back_nine, skins_net),
|
||||
"INSERT INTO games (id, format, holes_count, status, created_by, created_at, course_id, carryover, skin_value, skin_double_back_nine, skins_net, side_skins_enabled) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)",
|
||||
(game_id, format, holes_count, "active", user["id"], now, course_id, carryover, skin_value, skin_double_back_nine, skins_net, side_skins_enabled),
|
||||
)
|
||||
|
||||
# Pre-fetch course holes for handicap calculation
|
||||
@@ -389,11 +390,14 @@ async def game_summary(game_id: str, request: Request, user: dict = Depends(get_
|
||||
skin_value = game["skin_value"]
|
||||
skin_double_back9 = bool(game["skin_double_back_nine"])
|
||||
skins_net = bool(game["skins_net"])
|
||||
if game["format"] == "skins":
|
||||
side_skins_enabled = bool(game.get("side_skins_enabled", 0))
|
||||
if game["format"] == "skins" or side_skins_enabled:
|
||||
carryover = bool(game["carryover"])
|
||||
net_sph = strokes_per_hole if skins_net else None
|
||||
skins_won, skins_hole_results, unclaimed, money_won, unclaimed_money = _calc_skins(
|
||||
players, scores, holes, carryover, skin_value, skin_double_back9, net_sph)
|
||||
|
||||
if game["format"] == "skins":
|
||||
results = sorted(players, key=lambda p: skins_won.get(p["id"], 0), reverse=True)
|
||||
else:
|
||||
results = sorted(players, key=lambda p: totals.get(p["id"], {}).get("total", 0), reverse=True)
|
||||
@@ -408,6 +412,7 @@ async def game_summary(game_id: str, request: Request, user: dict = Depends(get_
|
||||
"skins_won": skins_won, "skins_hole_results": skins_hole_results, "unclaimed": unclaimed,
|
||||
"money_won": money_won, "unclaimed_money": unclaimed_money, "skin_value": skin_value,
|
||||
"skin_double_back9": skin_double_back9, "skins_net": skins_net,
|
||||
"side_skins_enabled": side_skins_enabled,
|
||||
"carryover": bool(game["carryover"]),
|
||||
})
|
||||
|
||||
@@ -449,6 +454,7 @@ async def game_page(game_id: str, request: Request, user: dict = Depends(get_cur
|
||||
"skin_value": game["skin_value"],
|
||||
"skin_double_back9": bool(game["skin_double_back_nine"]),
|
||||
"skins_net": bool(game["skins_net"]),
|
||||
"side_skins_enabled": bool(game.get("side_skins_enabled", 0)),
|
||||
})
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user