diff options
Diffstat (limited to 'internal/game/cmd_toggle.go')
| -rw-r--r-- | internal/game/cmd_toggle.go | 54 |
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)) +} |
