diff options
| author | historia <[not public]> | 2026-06-25 15:40:48 -0400 |
|---|---|---|
| committer | historia <[not public]> | 2026-06-25 15:40:48 -0400 |
| commit | abd612c15799f604e671e83dc7c410ed2b44185f (patch) | |
| tree | 0597ca92350de73aac2a7cf26b2f2d6595dac0cc /internal/game/ui_help.go | |
| parent | 2725e2927a1595c7b100d942d1f14146252adeb7 (diff) | |
| download | thehouseoficarus-abd612c15799f604e671e83dc7c410ed2b44185f.tar.gz | |
slop refactor
Diffstat (limited to 'internal/game/ui_help.go')
| -rw-r--r-- | internal/game/ui_help.go | 155 |
1 files changed, 0 insertions, 155 deletions
diff --git a/internal/game/ui_help.go b/internal/game/ui_help.go deleted file mode 100644 index 28f4371..0000000 --- a/internal/game/ui_help.go +++ /dev/null @@ -1,155 +0,0 @@ -package game - -import ( - "fmt" - "path/filepath" - "strings" - - "thehouseoficarus/internal/action" - "thehouseoficarus/internal/net" - "gopkg.in/yaml.v3" -) - -type HelpDef struct { - Name string `yaml:"name"` - Category string `yaml:"category"` - Content string `yaml:"description"` -} - -type cmdEntry struct { - Name string - Type string - Desc string -} - -var commandList = []cmdEntry{ - {"alias", "Instant", "Create command shortcuts"}, - {"attack / kill", "Active", "Attack a mob"}, - {"autotrigger / auto", "Instant", "Set a module to auto-trigger"}, - {"bank", "Active", "Open bank interface"}, - {"burn", "Active", "Start a fire"}, - {"chop / cut", "Active", "Chop trees (Woodcutting)"}, - {"clean", "Free", "Clean grimy herbs (Pharmacy)"}, - {"color / colors", "Instant", "Customize display colors"}, - {"colortable", "Instant", "Display color reference chart"}, - {"construct / make", "Active", "Build furniture (Construction)"}, - {"cook", "Active", "Cook raw food on a fire or range"}, - {"craft", "Active", "Craft jewelry (Crafting)"}, - {"description / desc", "Instant", "Set your character description"}, - {"drink", "Free", "Drink a potion"}, - {"drop", "Active", "Drop items to the ground"}, - {"eat", "Free", "Eat food to restore hitpoints"}, - {"equipment / eq", "Instant", "Show equipped items"}, - {"exits", "Instant", "List available exits"}, - {"farm", "Active", "Farm crops (Farming)"}, - {"fish", "Active", "Fish at fishing spots (Fishing)"}, - {"fletch", "Free", "Fletch logs into bows (Fletching)"}, - {"get / take / pick", "Active", "Pick up items from the ground"}, - {"global", "Instant", "Chat with everyone on the server"}, - {"help", "Instant", "Show help topics"}, - {"id / identify", "Active", "Identify herbs (Pharmacy)"}, - {"inventory / i / inv", "Instant", "Show your inventory"}, - {"jack / jackin", "Active", "Jack into a terminal (Hacking)"}, - {"look / l", "Instant", "Look around or examine things"}, - {"map", "Instant", "Display an ASCII map of the area"}, - {"mine", "Active", "Mine rocks (Mining)"}, - {"mix", "Active", "Mix potions (Pharmacy)"}, - {"mods / modlist", "Instant", "List available science modules"}, - {"north / south / east / west / up / down", "Active", "Move in a direction"}, - {"option / options", "Instant", "View or change settings"}, - {"prompt", "Instant", "Set custom command prompt"}, - {"pull / push", "Active", "Interact with objects"}, - {"queued", "Instant", "Show pending tick actions"}, - {"quit", "Active", "Rest and disconnect"}, - {"remove / unwear / unwield", "Free", "Unequip items"}, - {"say", "Instant", "Chat with players in your room"}, - {"score / sc", "Instant", "View your stats and skills"}, - {"search", "Active", "Search items for loot"}, - {"smelt", "Active", "Smelt ore into bars (Smithing)"}, - {"smith", "Active", "Smith bars into items (Smithing)"}, - {"sneak", "Instant", "Toggle sneak mode"}, - {"steal", "Active", "Steal from mobs (Thieving)"}, - {"stoke", "Active", "Add logs to a fire"}, - {"style", "Instant", "Change combat style"}, - {"symbol", "Instant", "Set custom map symbol for current room"}, - {"talk / speak / ask", "Active", "Talk to mobs"}, - {"tech", "Instant", "Toggle technology abilities"}, - {"trigger", "Active", "Trigger a science module"}, - {"unalias", "Instant", "Remove command shortcuts"}, - {"use", "Active", "Use an object (crafting)"}, - {"walk", "Active", "Pathfind to a room or multi-step walk"}, - {"wear / wield", "Free", "Equip items"}, - {"who", "Instant", "List everyone online and their combat level"}, -} - -func LoadHelp(dataDir string) ([]HelpDef, error) { - dir := filepath.Join(dataDir, "help") - var helps []HelpDef - action.WalkYAMLDir(dir, func(path, id string, data []byte) error { - var h HelpDef - if err := yaml.Unmarshal(data, &h); err != nil { - return nil - } - helps = append(helps, h) - return nil - }) - return helps, nil -} - -func (g *Game) doHelp(sess *net.Session, topic string) { - if topic == "" { - unicode := true - if p := sess.Player; p != nil { - unicode = p.OptionBool("unicode") - } - - sess.WriteLine("") - t := &Table{ - Title: "Commands", - Columns: []string{"Command", "Type", "Description"}, - } - for _, c := range commandList { - t.Rows = append(t.Rows, []string{c.Name, c.Type, c.Desc}) - } - for _, line := range t.Render(unicode) { - sess.WriteLine(line) - } - sess.WriteLine("") - sess.WriteLine("Command types: Instant (runs immediately), Free (queued before active),") - sess.WriteLine("Active (replaces current action, queued per tick).") - sess.WriteLine("") - sess.WriteLine("Use 'help <command>' for detailed usage of a specific command.") - sess.WriteLine("Use 'option' to view and change settings, 'color' to customize colors.") - return - } - - helps, err := LoadHelp(g.DataDir) - if err != nil || len(helps) == 0 { - sess.WriteLine("No help available.") - return - } - - topic = strings.ToLower(topic) - for _, h := range helps { - if strings.ToLower(h.Name) == topic { - sess.WriteLine(fmt.Sprintf("\n %s", h.Content)) - return - } - } - sess.WriteLine(fmt.Sprintf("No help found for '%s'.", topic)) -} - -func firstLine(s string) string { - if idx := strings.Index(s, "\n"); idx >= 0 { - return s[:idx] - } - return s -} - -func (g *Game) executeHelp(sess *net.Session, args []string, rawInput string) { - if len(args) == 0 { - g.doHelp(sess, "") - } else { - g.doHelp(sess, strings.Join(args, " ")) - } -} |
