From 1b9e2da3b3c438d8dc53d3489725dd5ba0022777 Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Thu, 11 Jun 2026 04:46:27 -0400 Subject: feat: web client, get/drop updates and fixes --- internal/object/item.go | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) (limited to 'internal/object') diff --git a/internal/object/item.go b/internal/object/item.go index 170e07f..c9b2717 100644 --- a/internal/object/item.go +++ b/internal/object/item.go @@ -37,7 +37,6 @@ type ItemDef struct { WeaponType WeaponType `yaml:"weapon_type"` Stats ItemStats `yaml:"stats"` Speed int `yaml:"speed"` - Toolbelt bool `yaml:"toolbelt"` ToolType string `yaml:"tool_type"` ToolSpeed int `yaml:"tool_speed"` } @@ -51,14 +50,46 @@ type ItemStats struct { } func (d *ItemDef) MatchesName(input string) bool { - lower := strings.ToLower(input) + lower := strings.ToLower(strings.TrimSpace(input)) + if lower == "" { + return false + } if strings.ToLower(d.Name) == lower { return true } - for _, word := range strings.Fields(d.Name) { - if strings.HasPrefix(strings.ToLower(word), lower) { + for _, alias := range d.Aliases { + if strings.ToLower(alias) == lower { + return true + } + } + if wordPrefixMatch(lower, d.Name) { + return true + } + for _, alias := range d.Aliases { + if wordPrefixMatch(lower, alias) { return true } } return false } + +func wordPrefixMatch(input, name string) bool { + inputWords := strings.Fields(input) + if len(inputWords) == 0 { + return false + } + nameWords := strings.Fields(strings.ToLower(name)) + for _, iw := range inputWords { + found := false + for _, nw := range nameWords { + if strings.HasPrefix(nw, iw) || strings.HasPrefix(iw, nw) { + found = true + break + } + } + if !found { + return false + } + } + return true +} -- cgit v1.2.3