aboutsummaryrefslogtreecommitdiff
path: root/internal/game/save.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-09-16 17:05:17 -0400
committerhistoria <[not public]>2026-09-16 17:05:17 -0400
commit1dad15698845d370e998f7cc5feb8aece3fab58f (patch)
tree8d58058782de9f422573e1f8efd5d130ce7d1ce9 /internal/game/save.go
parenta6cf03a6ae98e4fb675da25046d148e92bcf7206 (diff)
downloadthehouseoficarus-1dad15698845d370e998f7cc5feb8aece3fab58f.tar.gz
refactor: remove dead code, consolidate save/error handling, add lint gate
Diffstat (limited to 'internal/game/save.go')
-rw-r--r--internal/game/save.go26
1 files changed, 26 insertions, 0 deletions
diff --git a/internal/game/save.go b/internal/game/save.go
new file mode 100644
index 0000000..8e1af3d
--- /dev/null
+++ b/internal/game/save.go
@@ -0,0 +1,26 @@
+package game
+
+import (
+ "log"
+
+ "thehouseoficarus/internal/player"
+)
+
+// Best-effort persistence helpers. Gameplay code re-saves a character or
+// account after most state changes; a save failure there is not recoverable
+// by the caller, so these helpers log it once in one place instead of
+// silently discarding it at ~100 call sites. Lifecycle transactions (create,
+// delete, rename, migration) intentionally do NOT use these: they must
+// propagate save errors to the caller.
+
+func (g *Game) saveCharacter(p *player.Player) {
+ if err := g.AccountStore.SaveCharacter(p); err != nil {
+ log.Printf("save character %s: %v", p.Name, err)
+ }
+}
+
+func (g *Game) saveAccount(acc *player.Account) {
+ if err := g.AccountStore.SaveAccount(acc); err != nil {
+ log.Printf("save account %s: %v", acc.Name, err)
+ }
+}