diff options
| author | historia <[not public]> | 2026-07-01 02:21:42 -0400 |
|---|---|---|
| committer | historia <[not public]> | 2026-07-01 02:21:42 -0400 |
| commit | 5f37dc9b6f6b79da04da70ae0c33ec8d02998587 (patch) | |
| tree | f7c309e36267a4c456fcf5bca800e614507a80af /internal/game/cmd_use.go | |
| parent | fee376102192dc6f24297a7b11324636ace3a07d (diff) | |
| download | thehouseoficarus-5f37dc9b6f6b79da04da70ae0c33ec8d02998587.tar.gz | |
feat: qol improvements to items crud in admin gui
Diffstat (limited to 'internal/game/cmd_use.go')
| -rw-r--r-- | internal/game/cmd_use.go | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/internal/game/cmd_use.go b/internal/game/cmd_use.go index d399e8f..033fd62 100644 --- a/internal/game/cmd_use.go +++ b/internal/game/cmd_use.go @@ -137,6 +137,19 @@ func (g *Game) stationRecipes(p *player.Player, stationDefID string) []*item.Ite return results } +func craftLabel(c *item.CraftDef) string { + if c == nil { + return "" + } + if c.Subtype != "" { + return c.Subtype + } + if c.Type != "" { + return c.Type + } + return "combine" +} + func (g *Game) showRecipeMenu(sess *net.Session, p *player.Player, items []*item.ItemDef, stationName string) { if len(items) == 0 { sess.WriteLine(fmt.Sprintf("You don't have anything you can make at the %s.", stationName)) @@ -149,7 +162,7 @@ func (g *Game) showRecipeMenu(sess *net.Session, p *player.Player, items []*item needTypes := false for i := range items { for j := i + 1; j < len(items); j++ { - if len(items[i].Craft) > 0 && len(items[j].Craft) > 0 && items[i].FirstCraft().Type != items[j].FirstCraft().Type { + if craftLabel(items[i].FirstCraft()) != craftLabel(items[j].FirstCraft()) { needTypes = true break } @@ -163,14 +176,8 @@ func (g *Game) showRecipeMenu(sess *net.Session, p *player.Player, items []*item sess.State = net.StateRecipeChoice var names []string for _, item := range items { - cType := "" - if len(item.Craft) > 0 { - cType = item.FirstCraft().Type - } - if cType == "" { - cType = "combine" - } - typeLabel := strings.ToUpper(cType[:1]) + cType[1:] + label := craftLabel(item.FirstCraft()) + typeLabel := strings.ToUpper(label[:1]) + label[1:] if needTypes { names = append(names, fmt.Sprintf("%s (%s)", g.itemName(sess, item), typeLabel)) } else { @@ -209,15 +216,15 @@ func (g *Game) doUseItemOnTarget(sess *net.Session, p *player.Player, itemAName, recipes := g.CraftIndex.FindByStationInput(def.ID, itemAID) if len(recipes) > 0 { - cType := "" + var firstSubtype string if len(recipes[0].Craft) > 0 { - cType = recipes[0].FirstCraft().Type + firstSubtype = recipes[0].FirstCraft().Subtype } - if cType == "smelting" { + if firstSubtype == "smelt" { var filtered []*item.ItemDef for _, item := range recipes { c := item.FirstCraft() - if c.Type != "smelting" { + if c.Subtype != "smelt" { continue } if !craftHasAllItemsQty(c, p.CountItem) { @@ -246,6 +253,10 @@ func (g *Game) doUseItemOnTarget(sess *net.Session, p *player.Player, itemAName, g.showMenuTable(sess, "What would you like to smelt?", names) return } + var cType string + if len(recipes[0].Craft) > 0 { + cType = recipes[0].FirstCraft().Type + } if cType == "smithing" { if !g.hasToolType(p, "hammer") { sess.WriteLine("You need a hammer to smith.") @@ -396,9 +407,9 @@ func (g *Game) doUseItemOnTarget(sess *net.Session, p *player.Player, itemAName, } func (g *Game) isGrimyHerb(itemID string) bool { - items := g.CraftIndex.ByType("clean") + items := g.CraftIndex.BySubtype("clean") for _, item := range items { - for _, e := range item.FirstCraft().Consume { + for _, e := range item.FirstCraft().Ingredients { for _, id := range e.Items { if id == itemID { return true |
