aboutsummaryrefslogtreecommitdiff
path: root/dev_guide/bank.md
diff options
context:
space:
mode:
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