From 76c71bc53cb4a3e9155665ca8842b3de2abe92fe Mon Sep 17 00:00:00 2001 From: Jim Whitehead Date: Sun, 30 Nov 2014 12:33:28 +0100 Subject: [PATCH] De-duplicate zone names to fix fuzzy searching --- TomTom.lua | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 50 insertions(+), 4 deletions(-) diff --git a/TomTom.lua b/TomTom.lua index b616afd..a1372ab 100755 --- a/TomTom.lua +++ b/TomTom.lua @@ -1164,11 +1164,57 @@ SLASH_TOMTOM_WAY2 = "/tway" SLASH_TOMTOM_WAY3 = "/tomtomway" local nameToMapId = {} -local mapIds = lmd:GetAllMapIDs() +do + -- Fetch the names of the continents + local continentNames = {} + local continentData = {GetMapContinents()} + + for c = 1, (#continentData / 2) do + local index = (c*2) - 1 + local areaId, name = continentData[index], continentData[index+1] + local instanceId = GetAreaMapInfo(areaId) + continentNames[instanceId] = name + end + + for idx, areaMapId in pairs(GetAreaMaps()) do + local name = GetMapNameByID(areaMapId) + local a,b,c = GetAreaMapInfo(areaMapId) + local parent = (c == -1 and a or c) + local parentName = continentNames[parent] or GetMapNameByID(parent) + + if name and nameToMapId[name] then + if type(nameToMapId[name]) ~= "table" then + -- convert to a table + nameToMapId[name] = {nameToMapId[name]} + end -for idx, mapId in ipairs(mapIds) do - local mapName = lmd:MapLocalize(mapId) - nameToMapId[mapName] = mapId + table.insert(nameToMapId[name], areaMapId) + else + nameToMapId[name] = areaMapId + end + end + + -- Handle any duplicates + local newEntries = {} + for name, areaId in pairs(nameToMapId) do + if type(areaId) == "table" then + nameToMapId[name] = nil + for idx, areaId in pairs(areaId) do + local a,b,c = GetAreaMapInfo(areaId) + local parent = (c == -1 and a or c) + local parentName = continentNames[parent] or GetMapNameByID(parent) + if parentName then + local newName = name .. ':' .. parentName + newEntries[newName] = areaId + end + end + end + end + + -- Add the de-duplicated entries + for name, areaId in pairs(newEntries) do + nameToMapId[name] = areaId + end end local wrongseparator = "(%d)" .. (tonumber("1.1") and "," or ".") .. "(%d)" -- 1.7.9.5