aboutsummaryrefslogtreecommitdiff
path: root/internal/game/cmd_use.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-06-18 02:34:56 -0400
committerhistoria <[not public]>2026-06-18 02:34:56 -0400
commitfae979b75e37b6ad57e57062a1b637a37ec87174 (patch)
tree53daaa52b5f844b5b1a50a1bad909cafdb63eabc /internal/game/cmd_use.go
parent1a9a486ca57f4de4fd1d8f00ee1a2a421f9d2273 (diff)
downloadthehouseoficarus-fae979b75e37b6ad57e57062a1b637a37ec87174.tar.gz
cleaned up various crafting menus
Diffstat (limited to 'internal/game/cmd_use.go')
-rw-r--r--internal/game/cmd_use.go53
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
}