aboutsummaryrefslogtreecommitdiff
path: root/dev_guide/bank.md
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-10-01 14:38:08 -0400
committerhistoria <[not public]>2026-10-01 14:38:08 -0400
commit1082f3336085c15992ca83d5553c0ba52208d70a (patch)
tree4fcedaa90bc01c41456258a9d57f492f31754948 /dev_guide/bank.md
parentd4eae333a8d8a96452bbf3617aa85b50466c11a7 (diff)
downloadthehouseoficarus-1082f3336085c15992ca83d5553c0ba52208d70a.tar.gz
feat: pai gow poker added to the casino
Diffstat (limited to 'dev_guide/bank.md')
-rw-r--r--dev_guide/bank.md26
1 files changed, 26 insertions, 0 deletions
diff --git a/dev_guide/bank.md b/dev_guide/bank.md
new file mode 100644
index 0000000..ed890a7
--- /dev/null
+++ b/dev_guide/bank.md
@@ -0,0 +1,26 @@
+# Bank system internals
+
+Builder-facing bank documentation (booth object, room placement, player
+commands) lives in [../building_guide/bank.md](../building_guide/bank.md).
+This page covers the engine side.
+
+## Session state
+
+`StateBank` (defined in `internal/net/server.go`) is the session state for
+the bank interface. Input is routed through `handleBankInput` in
+`internal/game/cmd_bank.go`.
+
+## Player storage
+
+Bank items are stored in the `Player.Bank` field (`map[int]*InventorySlot`),
+saved in character YAML. Bank slots are sequential and reuse freed slots.
+There is no slot limit.
+
+## Command dispatch
+
+- `bank` is classified as `ClassActive` in `classifyCommand()`
+- `bank` case in `executeCommand()` calls `doBank(sess)`
+- `doUse()` checks for `"bank"` or `"bank booth"` targets and routes to
+ `doBank()`
+- `doBank()` checks for a `bank_booth` object in the current room
+- `handleBankInput()` dispatches deposit/withdraw/browse/leave commands