The chip legend has only ever read chips *into* an amount -- counting what is in front of somebody. Colouring up at the end of a level is the same question backwards, and it is the one the dealer answers with a rack in one hand: $205 is two hundreds and a five. So is counting a stack out for a player who is leaving. The arithmetic already existed. Payouts have been shown in chips since #73; this points the same function at the stacks. Stacks in chips Ann — $205 2×$100, 1×$5 Ben — $1,337 2×$500, 3×$100, 1×$25, 2×$5, 2×$1 Cal — $40 1×$25, 3×$5 Eve — $88 3×$25, 2×$5, 3×$1 Fay — $500 1×$500 Sits under the chip legend, because that is where the denominations it works from are set, and it only appears when there is both a legend to work from and somebody with chips. A table that never set its chip colours up gets nothing, which is what it had before. A seat on zero is left out rather than listed as nothing. Driven at five sizes across touch and pointer contexts, with a 26-character name and a $1,337,000 stack: no row spills, no page overflow, contrast clean, layout audit clean but for the landscape phone already known from #63, no console errors. Every breakdown checked by hand against its total -- 500+200+75+2 = 777 and so on. The breakdown itself is covered by the twelve tests from #73; what is new here is which seats are listed, which the browser run covers: with a legend and stacks it lists five of six seats, with the legend emptied it disappears, and with every stack zeroed it disappears. 269 tests still passing. Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_015bnp7xKUPFFSpwkYNFaPgb
497 lines
23 KiB
Plaintext
497 lines
23 KiB
Plaintext
@page
|
||
@model JoshHeaps.Net.Pages.Casino.TexasHoldemModel
|
||
@{
|
||
ViewData["Title"] = "Texas Hold'em Dealer";
|
||
Layout = "_Layout";
|
||
}
|
||
|
||
<div id="holdemApp">
|
||
<header id="holdemHeader">
|
||
<div id="holdemHeaderLeft">
|
||
<h1>Texas Hold'em Dealer</h1>
|
||
<p class="holdemSubtitle">Seat your players, track the action, split the pot.</p>
|
||
<span id="handCounterBadge" class="handCounterBadge">Hand #1</span>
|
||
</div>
|
||
<div id="holdemHeaderActions">
|
||
<a href="/casino/texasholdem/quicksplit" class="holdemBtn" title="Chop a pot without setting up a table">Quick Split</a>
|
||
<button id="nextHandBtn" class="holdemBtn" title="Move the button, small blind and big blind to the next occupied seat">Next Hand ⟳</button>
|
||
<button id="resolvePotBtn" class="holdemBtn holdemBtnAccent">Resolve Pot</button>
|
||
<button id="resetTableBtn" class="holdemBtn holdemBtnDanger">Reset Table</button>
|
||
<a href="/casino" class="holdemBtn holdemBtnGhost">← Casino</a>
|
||
</div>
|
||
</header>
|
||
|
||
<div id="holdemLayout">
|
||
<section id="tableSection">
|
||
<div id="pokerTableWrap">
|
||
<div id="pokerTable">
|
||
<div id="potBadge">
|
||
<span id="potBadgeLabel">Pot</span>
|
||
<span id="potBadgeAmount">$0</span>
|
||
</div>
|
||
</div>
|
||
<div id="betsLayer" aria-hidden="true"></div>
|
||
<div id="seatsLayer"></div>
|
||
</div>
|
||
<p id="tableHint" class="tableHint"></p>
|
||
<p class="tableHintActions">
|
||
<button type="button" id="openRulingsBtn" class="linkBtn">Common rulings</button>
|
||
</p>
|
||
</section>
|
||
|
||
<aside id="holdemSidebar">
|
||
<section id="seatEditorPanel" class="sidebarPanel seatEditorPanel">
|
||
<div class="seatSheetGrip" aria-hidden="true"></div>
|
||
<div class="seatEditorHeader">
|
||
<h2 id="seatEditorTitle">Select a seat</h2>
|
||
<button id="closeSeatEditorBtn" class="seatSheetClose" aria-label="Done editing this seat">Done</button>
|
||
</div>
|
||
<div id="seatEditorBody">
|
||
<p class="fieldHint">Click a seat at the table to edit their name, cards, chips and anything else.</p>
|
||
</div>
|
||
</section>
|
||
|
||
<details class="sidebarPanel" open>
|
||
<summary>Table Setup</summary>
|
||
<div class="panelBody">
|
||
<label class="fieldRow">
|
||
<span>Seats at table</span>
|
||
<input type="number" id="seatCountInput" min="2" max="24" value="10" />
|
||
</label>
|
||
<label class="fieldRow">
|
||
<span>Blinds move</span>
|
||
<select id="directionSelect">
|
||
<option value="clockwise" selected>Clockwise</option>
|
||
<option value="counterclockwise">Counterclockwise</option>
|
||
</select>
|
||
</label>
|
||
<label class="fieldRow">
|
||
<span>Dedicated dealer (not a seat)</span>
|
||
<input type="checkbox" id="dedicatedDealerToggle" />
|
||
</label>
|
||
<p class="fieldHint">Turn this on if a person outside the game deals — no seat shows the dealer button, but blinds still rotate automatically each hand.</p>
|
||
<div class="blindsRow">
|
||
<label class="fieldRow">
|
||
<span>Small blind</span>
|
||
<input type="number" id="smallBlindInput" min="0" step="0.5" />
|
||
</label>
|
||
<label class="fieldRow">
|
||
<span>Big blind</span>
|
||
<input type="number" id="bigBlindInput" min="0" step="0.5" />
|
||
</label>
|
||
</div>
|
||
<label class="fieldRow">
|
||
<span>Starting stack ($)</span>
|
||
<input type="number" id="defaultStackInput" min="0" step="1" placeholder="e.g. 200" />
|
||
</label>
|
||
<p class="fieldHint">Blinds post themselves each hand. Seats without their own stack start here.</p>
|
||
|
||
<details class="subPanel">
|
||
<summary>Without live betting</summary>
|
||
<div class="subPanelBody">
|
||
<label class="fieldRow">
|
||
<span>Base pot amount ($)</span>
|
||
<input type="number" id="basePotInput" min="0" step="1" placeholder="e.g. 500" />
|
||
</label>
|
||
<p class="fieldHint">For tracking a hand by hand instead of tapping the action: everyone is assumed to have put in this much, unless their seat says otherwise.</p>
|
||
</div>
|
||
</details>
|
||
</div>
|
||
</details>
|
||
|
||
<details class="sidebarPanel">
|
||
<summary>Session</summary>
|
||
<div class="panelBody">
|
||
<p id="storageWarning" class="storageWarning" hidden></p>
|
||
<h3 class="panelSubhead">Standings</h3>
|
||
<div class="standingsTableWrap">
|
||
<div id="standingsTable">
|
||
<div class="standingsRow standingsHeader">
|
||
<span>Player</span>
|
||
<span class="standingsInHead">In</span>
|
||
<span class="standingsWonHead">Won</span>
|
||
<span>Net</span>
|
||
<span title="Chips in front of them, less the cash they handed over">Cash out</span>
|
||
</div>
|
||
<div id="standingsList"></div>
|
||
</div>
|
||
</div>
|
||
<p id="standingsEmptyHint" class="fieldHint">Everyone who has bought in shows up here, with what they'd be owed if the night ended now.</p>
|
||
|
||
<div id="bankReconcile" class="bankReconcile" hidden>
|
||
<div class="bankReconcileRow">
|
||
<span>Cash taken</span>
|
||
<span id="bankCashIn"></span>
|
||
</div>
|
||
<div class="bankReconcileRow">
|
||
<span>Chips in play</span>
|
||
<span id="bankChipsInPlay"></span>
|
||
</div>
|
||
<p id="bankReconcileVerdict" class="bankReconcileVerdict"></p>
|
||
</div>
|
||
|
||
<div id="settleUp" hidden>
|
||
<h3 class="panelSubhead">Settle up</h3>
|
||
<ul id="settleUpList" class="settleUpList"></ul>
|
||
<p id="settleUpNote" class="fieldHint"></p>
|
||
</div>
|
||
|
||
<h3 class="panelSubhead">Hands</h3>
|
||
<div id="handHistoryList"></div>
|
||
<p id="handHistoryEmptyHint" class="fieldHint">Resolved pots are logged here, in case a chip count is disputed later.</p>
|
||
|
||
<div class="handHistoryActions">
|
||
<button id="exportHistoryBtn" class="holdemBtn holdemBtnSmall">Export CSV</button>
|
||
<button id="clearHistoryBtn" class="holdemBtn holdemBtnSmall holdemBtnDanger">Clear history</button>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
|
||
<details class="sidebarPanel">
|
||
<summary>Chip Legend</summary>
|
||
<div class="panelBody">
|
||
<div id="chipLegendList"></div>
|
||
<button id="addChipColorBtn" class="holdemBtn holdemBtnSmall">+ Add chip color</button>
|
||
<p class="fieldHint">Give each chip color a value, then count chips on a seat instead of typing a total.</p>
|
||
|
||
<div id="colourUp" hidden>
|
||
<h3 class="panelSubhead">Stacks in chips</h3>
|
||
<dl id="colourUpList" class="colourUpList"></dl>
|
||
<p class="fieldHint">The fewest chips that make each stack — for colouring up, or counting one out.</p>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
|
||
<details class="sidebarPanel" id="keyboardPanel">
|
||
<summary>Keyboard</summary>
|
||
<div class="panelBody">
|
||
<dl id="shortcutLegend" class="shortcutLegend"></dl>
|
||
<p class="fieldHint">Nothing fires while you're typing in a field, or while a sheet is open over the table.</p>
|
||
</div>
|
||
</details>
|
||
|
||
<details class="sidebarPanel">
|
||
<summary>Table Notes</summary>
|
||
<div class="panelBody">
|
||
<textarea id="tableNotes" rows="4" aria-label="Table notes" placeholder="Anything else worth tracking — side bets, IOUs, running totals..."></textarea>
|
||
</div>
|
||
</details>
|
||
</aside>
|
||
</div>
|
||
</div>
|
||
|
||
<template id="seatTemplate">
|
||
<div class="seat" draggable="true">
|
||
<div class="seatChairNumber"></div>
|
||
<button class="dealerChip" type="button" title="Make this seat the dealer button">D</button>
|
||
<span class="blindBadge sbBadge">SB</span>
|
||
<span class="blindBadge bbBadge">BB</span>
|
||
<div class="seatPuckName"></div>
|
||
<div class="seatPuckCards"></div>
|
||
<div class="seatPuckTotal"></div>
|
||
<div class="seatPuckStack"></div>
|
||
</div>
|
||
</template>
|
||
|
||
<template id="seatEditorTemplate">
|
||
<div class="seatEditorForm">
|
||
<label class="fieldRow">
|
||
<span>Name</span>
|
||
<input type="text" class="seatNameInput" placeholder="Seat" maxlength="24" />
|
||
</label>
|
||
<div class="seatCardToggles">
|
||
<label class="inHandToggle" title="This seat is playing the current hand">
|
||
<input type="checkbox" class="inHandCheckbox" />
|
||
<span>In hand</span>
|
||
</label>
|
||
<label class="foldToggle" title="Folded">
|
||
<input type="checkbox" class="foldCheckbox" />
|
||
<span>Fold</span>
|
||
</label>
|
||
</div>
|
||
<div class="seatCards">
|
||
<button type="button" class="cardSlot card1Slot" aria-label="Choose first card"></button>
|
||
<button type="button" class="cardSlot card2Slot" aria-label="Choose second card"></button>
|
||
</div>
|
||
<label class="fieldRow stackRow">
|
||
<span>Stack</span>
|
||
<input type="number" class="stackInput" min="0" step="1" placeholder="table default" />
|
||
</label>
|
||
<div class="seatBuyIns" hidden></div>
|
||
<div class="seatContribution">
|
||
<div class="chipCounts"></div>
|
||
<label class="fieldRow amountOverrideRow">
|
||
<span>$ amount</span>
|
||
<input type="number" class="amountOverrideInput" min="0" step="1" placeholder="auto" />
|
||
</label>
|
||
<div class="seatTotal">Total: <span class="seatTotalAmount">$0</span></div>
|
||
</div>
|
||
<div class="customFields"></div>
|
||
<button class="holdemBtn holdemBtnSmall addFieldBtn">+ field</button>
|
||
</div>
|
||
</template>
|
||
|
||
<template id="chipLegendRowTemplate">
|
||
<div class="chipLegendRow">
|
||
<input type="color" class="chipColorInput" aria-label="Chip colour" />
|
||
<input type="number" class="chipValueInput" min="0" step="0.01" placeholder="value" aria-label="Chip value" />
|
||
<button class="holdemBtn holdemBtnSmall holdemBtnDanger removeChipColorBtn">×</button>
|
||
</div>
|
||
</template>
|
||
|
||
<template id="chipCountTemplate">
|
||
<label class="chipCountRow">
|
||
<span class="chipSwatch"></span>
|
||
<input type="number" class="chipCountInput" min="0" step="1" value="0" />
|
||
</label>
|
||
</template>
|
||
|
||
<template id="customFieldTemplate">
|
||
<div class="customFieldRow">
|
||
<input type="text" class="customFieldLabel" placeholder="Label" maxlength="20" />
|
||
<input type="text" class="customFieldValue" placeholder="Value" maxlength="40" />
|
||
<button class="holdemBtn holdemBtnSmall holdemBtnDanger removeFieldBtn">×</button>
|
||
</div>
|
||
</template>
|
||
|
||
<template id="standingsRowTemplate">
|
||
<div class="standingsRow">
|
||
<span class="standingsName"></span>
|
||
<span class="standingsIn"></span>
|
||
<span class="standingsWon"></span>
|
||
<span class="standingsNet"></span>
|
||
<span class="standingsCashOut"></span>
|
||
</div>
|
||
</template>
|
||
|
||
<template id="handHistoryRowTemplate">
|
||
<div class="handHistoryRow">
|
||
<div class="handHistoryRowHeader">
|
||
<span class="handHistoryHandNumber"></span>
|
||
<span class="handHistoryPot"></span>
|
||
<span class="handHistoryTime"></span>
|
||
</div>
|
||
<div class="handHistoryPayouts"></div>
|
||
</div>
|
||
</template>
|
||
|
||
<div id="addChipsOverlay" hidden>
|
||
<div id="addChipsSheet" role="dialog" aria-labelledby="addChipsTitle">
|
||
<div class="seatSheetGrip" aria-hidden="true"></div>
|
||
<div class="addChipsHeader">
|
||
<h2 id="addChipsTitle"></h2>
|
||
<span id="addChipsSubtitle"></span>
|
||
</div>
|
||
<div id="addChipsQuick"></div>
|
||
<div class="addChipsEntry">
|
||
<span class="addChipsCurrency">$</span>
|
||
<input type="text" id="addChipsInput" inputmode="decimal" autocomplete="off" aria-label="Amount to add" />
|
||
</div>
|
||
<div class="addChipsActions">
|
||
<button id="addChipsConfirmBtn" class="holdemBtn holdemBtnAccent" type="button">Add to stack</button>
|
||
<button id="addChipsCancelBtn" data-modal-close class="holdemBtn holdemBtnGhost" type="button">Cancel</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="rulingsOverlay" hidden>
|
||
<div id="rulingsSheet" role="dialog" aria-labelledby="rulingsTitle">
|
||
<div class="seatSheetGrip" aria-hidden="true"></div>
|
||
<div class="rulingsHeader">
|
||
<h2 id="rulingsTitle">Common rulings</h2>
|
||
<button id="closeRulingsBtn" data-modal-close class="holdemBtn holdemBtnSmall holdemBtnGhost" type="button">Done</button>
|
||
</div>
|
||
|
||
<p class="rulingsIntro">
|
||
The conventions most rooms follow, for the calls that come up mid-hand.
|
||
Your house rules always win — and settle a dispute before the next hand,
|
||
not during it.
|
||
</p>
|
||
|
||
<nav id="rulingsIndex" class="rulingsIndex" aria-label="Jump to a ruling"></nav>
|
||
|
||
<section class="ruling" data-short="Misdeal">
|
||
<h3>Redeal it — misdeal</h3>
|
||
<ul>
|
||
<li>The first card goes to the wrong seat.</li>
|
||
<li>A seat entitled to a hand gets dealt out, or a seat that isn't entitled gets dealt in.</li>
|
||
<li>Two or more boxed cards turn up on the initial deal.</li>
|
||
<li>Either of the first two cards is exposed by dealer error.</li>
|
||
</ul>
|
||
</section>
|
||
|
||
<section class="ruling" data-short="Board card early">
|
||
<h3>A board card turned too early</h3>
|
||
<p>
|
||
If the fourth board card gets turned before the betting round is finished,
|
||
that card is out of play for the round. Finish the betting, then burn and
|
||
turn what would have been the fifth card in the fourth card's place.
|
||
</p>
|
||
</section>
|
||
|
||
<section class="ruling" data-short="Out of turn">
|
||
<h3>Acting out of turn</h3>
|
||
<p>
|
||
A one-off is usually just backed up if no one has acted behind them.
|
||
Doing it repeatedly is what earns a penalty.
|
||
</p>
|
||
</section>
|
||
|
||
<section class="ruling" data-short="Short all-in">
|
||
<h3>A short all-in doesn't reopen the betting</h3>
|
||
<p>
|
||
Somebody shoving in less than a full raise — say $3 more when the last
|
||
raise was $8 — does not give the players behind them another go. Anyone
|
||
who has already acted owes the difference or folds; they don't get to
|
||
raise again because a short stack happened to land between them.
|
||
</p>
|
||
<p>
|
||
A player who hadn't acted yet keeps full rights and may still raise, and
|
||
the minimum raise stays measured off the last <em>full</em> raise, not
|
||
off the short one. The action bar follows this for you.
|
||
</p>
|
||
</section>
|
||
|
||
<section class="ruling" data-short="Uncalled bet">
|
||
<h3>Chips nobody called come back</h3>
|
||
<p>
|
||
Bet more than anyone was able to call and the excess is returned to you
|
||
before the showdown — it was never contested, so it isn't part of the
|
||
pot. The pot breakdown shows it as "uncalled" rather than pretending it's
|
||
a side pot you could win.
|
||
</p>
|
||
</section>
|
||
|
||
<section class="ruling" data-short="Oversized chip">
|
||
<h3>One big chip, nothing said</h3>
|
||
<p>
|
||
The most common argument at a home table. A player facing a bet who
|
||
pushes out a single oversized chip without saying anything has
|
||
<em>called</em> — not raised, however big the chip is. To raise with one
|
||
chip you have to say "raise" before it lands; say it without an amount
|
||
and the raise is the most that chip allows.
|
||
</p>
|
||
<p>
|
||
Facing no bet, the same silent chip is a bet of the whole chip. And a
|
||
clear verbal declaration in turn is binding either way — if words and
|
||
chips disagree, whichever came first is the action.
|
||
</p>
|
||
</section>
|
||
|
||
<section class="ruling" data-short="Minimum raise">
|
||
<h3>A raise has to be a full raise</h3>
|
||
<p>
|
||
At least as much again as the last raise, or the big blind if there
|
||
hasn't been one. Anything between a call and that minimum isn't a raise
|
||
a player can make — it's a call, unless they're putting their last chips
|
||
in. The raise pad says so if you type one, and won't stop you: your
|
||
ruling beats the arithmetic.
|
||
</p>
|
||
</section>
|
||
|
||
<section class="ruling" data-short="Odd chip">
|
||
<h3>The odd chip in a split pot</h3>
|
||
<p>
|
||
When a chopped pot won't divide evenly, the odd chip goes to the first
|
||
player left of the button, not to whoever the dealer happened to tick
|
||
first. Pot payouts here order the winners that way, so the leftover lands
|
||
on the right seat every time.
|
||
</p>
|
||
</section>
|
||
|
||
<section class="ruling" data-short="String bet">
|
||
<h3>Betting in one motion — the string bet</h3>
|
||
<p>
|
||
A bet is whatever goes in on the first trip to the stack, unless the
|
||
amount was said out loud first. Reaching back for more chips without
|
||
having said "raise" is a string bet, and only the first motion stands.
|
||
Saying the number is always enough on its own: "raise to sixty" binds
|
||
whatever order the chips arrive in.
|
||
</p>
|
||
<p>
|
||
It's the rule home games invoke most and enforce least, and both are
|
||
fine — the point is that a player can't watch the table react and then
|
||
decide how much to bet. Say it, or push it all at once.
|
||
</p>
|
||
</section>
|
||
|
||
<p class="rulingsSource">
|
||
Follows the Tournament Directors Association rules, which most rooms and
|
||
home games take their lead from.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="seatMenuOverlay" hidden>
|
||
<div id="seatMenuSheet" role="dialog" aria-labelledby="seatMenuTitle">
|
||
<div class="seatSheetGrip" aria-hidden="true"></div>
|
||
<div class="seatMenuHeader">
|
||
<h2 id="seatMenuTitle"></h2>
|
||
<span id="seatMenuSubtitle"></span>
|
||
</div>
|
||
<div id="seatMenuActions"></div>
|
||
<button id="seatMenuCancelBtn" data-modal-close class="holdemBtn holdemBtnGhost" type="button">Cancel</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="cardPickerOverlay" hidden>
|
||
<div id="cardPickerSheet" role="dialog" aria-labelledby="cardPickerTitle">
|
||
<div class="seatSheetGrip" aria-hidden="true"></div>
|
||
<div class="cardPickerHeader">
|
||
<h2 id="cardPickerTitle"></h2>
|
||
<button id="cardPickerClearBtn" class="holdemBtn holdemBtnSmall" type="button">Clear</button>
|
||
<button id="cardPickerCloseBtn" data-modal-close class="holdemBtn holdemBtnSmall holdemBtnGhost" type="button">Done</button>
|
||
</div>
|
||
<div id="cardPickerSlots"></div>
|
||
<div id="cardPickerGrid"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="actionBar" aria-live="polite" hidden></div>
|
||
|
||
<div id="toastHost" aria-live="polite"></div>
|
||
|
||
<div id="confirmOverlay" hidden>
|
||
<div id="confirmModal" role="alertdialog" aria-labelledby="confirmTitle" aria-describedby="confirmMessage" tabindex="-1">
|
||
<h2 id="confirmTitle"></h2>
|
||
<p id="confirmMessage"></p>
|
||
<div class="confirmActions">
|
||
<button id="confirmCancelBtn" data-modal-close class="holdemBtn holdemBtnGhost" type="button">Cancel</button>
|
||
<button id="confirmAcceptBtn" class="holdemBtn holdemBtnDanger" type="button">Confirm</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="potWizardOverlay" hidden>
|
||
<div id="potWizardModal" role="dialog" aria-labelledby="potWizardTitle">
|
||
<div class="potWizardHeader">
|
||
<h2 id="potWizardTitle">Resolve the Pot</h2>
|
||
<button id="closePotWizardBtn" data-modal-close class="holdemBtn holdemBtnGhost">✕</button>
|
||
</div>
|
||
<div id="potWizardBody"></div>
|
||
</div>
|
||
</div>
|
||
|
||
@section Styles {
|
||
<link href="/css/casino/holdem.css?v=@ViewData["cssVersion"]" rel="stylesheet" type="text/css" />
|
||
}
|
||
|
||
@section Scripts {
|
||
<script src="~/js/casino/holdem/money.js?v=@ViewData["cssVersion"]"></script>
|
||
<script src="~/js/casino/holdem/feedback.js?v=@ViewData["cssVersion"]"></script>
|
||
<script src="~/js/casino/holdem/potCalculator.js?v=@ViewData["cssVersion"]"></script>
|
||
<script src="~/js/casino/holdem/state.js?v=@ViewData["cssVersion"]"></script>
|
||
<script src="~/js/casino/holdem/settleUp.js?v=@ViewData["cssVersion"]"></script>
|
||
<script src="~/js/casino/holdem/render.js?v=@ViewData["cssVersion"]"></script>
|
||
<script src="~/js/casino/holdem/cardPicker.js?v=@ViewData["cssVersion"]"></script>
|
||
<script src="~/js/casino/holdem/seatMenu.js?v=@ViewData["cssVersion"]"></script>
|
||
<script src="~/js/casino/holdem/addChips.js?v=@ViewData["cssVersion"]"></script>
|
||
<script src="~/js/casino/holdem/betting.js?v=@ViewData["cssVersion"]"></script>
|
||
<script src="~/js/casino/holdem/actionBar.js?v=@ViewData["cssVersion"]"></script>
|
||
<script src="~/js/casino/holdem/shortcuts.js?v=@ViewData["cssVersion"]"></script>
|
||
<script src="~/js/casino/holdem/potWizard.js?v=@ViewData["cssVersion"]"></script>
|
||
<script src="~/js/casino/holdem/handHistoryExport.js?v=@ViewData["cssVersion"]"></script>
|
||
<script src="~/js/casino/holdem/modal.js?v=@ViewData["cssVersion"]"></script>
|
||
<script src="~/js/casino/holdem/main.js?v=@ViewData["cssVersion"]"></script>
|
||
}
|