diff options
| author | historia <[not public]> | 2026-06-18 02:34:56 -0400 |
|---|---|---|
| committer | historia <[not public]> | 2026-06-18 02:34:56 -0400 |
| commit | fae979b75e37b6ad57e57062a1b637a37ec87174 (patch) | |
| tree | 53daaa52b5f844b5b1a50a1bad909cafdb63eabc /internal/game/cmd_use.go | |
| parent | 1a9a486ca57f4de4fd1d8f00ee1a2a421f9d2273 (diff) | |
| download | thehouseoficarus-fae979b75e37b6ad57e57062a1b637a37ec87174.tar.gz | |
cleaned up various crafting menus
Diffstat (limited to 'internal/game/cmd_use.go')
| -rw-r--r-- | internal/game/cmd_use.go | 53 |
1 files changed, 29 insertions, 24 deletions
diff --git a/internal/game/cmd_use.go b/internal/game/cmd_use.go index cb521f3..7c7bca0 100644 --- a/internal/game/cmd_use.go +++ b/internal/game/cmd_use.go @@ -56,10 +56,7 @@ func (g *Game) doUseItemOnTarget(sess *net.Session, p *player.Player, itemAName, uniqueA := uniqueItemNames(matchesA) if len(uniqueA) > 1 { - sess.WriteLine("Which one?") - for _, name := range uniqueA { - sess.WriteLine(fmt.Sprintf(" - %s", name)) - } + g.showWhichOne(sess, matchesA) return } @@ -102,14 +99,14 @@ func (g *Game) doUseItemOnTarget(sess *net.Session, p *player.Player, itemAName, g.promptHowMany(sess, filtered[0].ID) return } - sess.PendingMenu = recipeMenuData(filtered) - sess.State = net.StateRecipeChoice - sess.WriteLine("\nWhat would you like to smelt?") - for i, r := range filtered { - sess.WriteLine(fmt.Sprintf(" %d) %s", i+1, g.recipeName(sess, &r))) - } - sess.WriteLine(fmt.Sprintf(" %d) Nothing", len(filtered)+1)) - return + sess.PendingMenu = recipeMenuData(filtered) + sess.State = net.StateRecipeChoice + var names []string + for _, r := range filtered { + names = append(names, g.recipeName(sess, &r)) + } + g.showMenuTable(sess, "What would you like to smelt?", names) + return } if recipes[0].Type == "smithing" { if !g.hasToolType(p, "hammer") { @@ -124,13 +121,14 @@ func (g *Game) doUseItemOnTarget(sess *net.Session, p *player.Player, itemAName, g.promptHowMany(sess, recipes[0].ID) return } - sess.PendingMenu = recipeMenuData(recipes) - sess.State = net.StateRecipeChoice - sess.WriteLine(fmt.Sprintf("\nWhat would you like to make with %s on the %s?", itemAName, def.Name)) - for i, r := range recipes { - sess.WriteLine(fmt.Sprintf(" %d) %s", i+1, g.recipeName(sess, &r))) - } - return + sess.PendingMenu = recipeMenuData(recipes) + sess.State = net.StateRecipeChoice + var names []string + for _, r := range recipes { + names = append(names, g.recipeName(sess, &r)) + } + g.showMenuTable(sess, fmt.Sprintf("What would you like to make with %s on the %s?", itemAName, def.Name), names) + return } for _, ui := range def.UseInteractions { @@ -158,8 +156,14 @@ func (g *Game) doUseItemOnTarget(sess *net.Session, p *player.Player, itemAName, uniqueB := uniqueItemNames(matchesB) if len(uniqueB) > 1 { sess.WriteLine("Which '" + itemBName + "'?") - for _, name := range uniqueB { - sess.WriteLine(fmt.Sprintf(" - %s", name)) + seen := make(map[string]bool) + for _, m := range matchesB { + if seen[m.Name] { + continue + } + seen[m.Name] = true + def, _ := g.ItemStore.Load(m.ID) + sess.WriteLine(fmt.Sprintf(" - %s", g.itemColorize(sess, def, m.Name))) } return } @@ -174,10 +178,11 @@ func (g *Game) doUseItemOnTarget(sess *net.Session, p *player.Player, itemAName, if len(matched) > 1 { sess.PendingMenu = combineMenuData(matched) sess.State = net.StateRecipeChoice - sess.WriteLine("\nWhat would you like to make?") - for i, def := range matched { - sess.WriteLine(fmt.Sprintf(" %d) %s", i+1, g.itemColorize(sess, def, def.Name))) + var names []string + for _, def := range matched { + names = append(names, g.itemColorize(sess, def, def.Name)) } + g.showMenuTable(sess, "What would you like to make?", names) return } |
