aboutsummaryrefslogtreecommitdiff
path: root/internal/game/cmd_toggle.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-06-10 01:48:28 -0400
committerhistoria <[not public]>2026-06-10 01:48:28 -0400
commita226d72e51eecb768b13600303f73483118d9104 (patch)
tree458d15ef049732c15dacc591a830d3beddbedfde /internal/game/cmd_toggle.go
parent6a0f3d7a252de4b1741cfe5e1c561412c602becc (diff)
downloadthehouseoficarus-a226d72e51eecb768b13600303f73483118d9104.tar.gz
feat: implemented janky object interaction model
Diffstat (limited to 'internal/game/cmd_toggle.go')
-rw-r--r--internal/game/cmd_toggle.go54
1 files changed, 54 insertions, 0 deletions
diff --git a/internal/game/cmd_toggle.go b/internal/game/cmd_toggle.go
new file mode 100644
index 0000000..19c111c
--- /dev/null
+++ b/internal/game/cmd_toggle.go
@@ -0,0 +1,54 @@
+package game
+
+import (
+ "fmt"
+ "strings"
+
+ "thirdcollapse/internal/net"
+ "thirdcollapse/internal/player"
+)
+
+var toggles = []struct {
+ Name string
+ Description string
+}{
+ {"description", "Long room descriptions"},
+ {"tinymap", "Mini-map display"},
+ {"xpdrops", "XP drop messages in combat"},
+ {"exits", "Long exit display in look"},
+ {"mobenter", "Messages when mobs enter the room"},
+ {"mobleave", "Messages when mobs leave the room"},
+ {"mobspawn", "Messages when mobs spawn in the area"},
+ {"reserve", "Show full reserved item details"},
+}
+
+func (g *Game) doToggle(sess *net.Session, input string) {
+ p := sess.Player.(*player.Player)
+
+ if input == "" {
+ sess.WriteLine("")
+ for _, t := range toggles {
+ status := "Off"
+ if p.Toggles[t.Name] {
+ status = "On"
+ }
+ sess.WriteLine(fmt.Sprintf(" %-12s %-3s %s", t.Name, status, t.Description))
+ }
+ g.AccountStore.SaveCharacter(p)
+ return
+ }
+
+ for _, t := range toggles {
+ if strings.ToLower(input) == t.Name {
+ p.Toggles[t.Name] = !p.Toggles[t.Name]
+ status := "Off"
+ if p.Toggles[t.Name] {
+ status = "On"
+ }
+ sess.WriteLine(fmt.Sprintf("\n%s %s.", t.Description, status))
+ g.AccountStore.SaveCharacter(p)
+ return
+ }
+ }
+ sess.WriteLine(fmt.Sprintf("\nUnknown toggle: %s", input))
+}