From c621f5489dfc7cd745299ec614696527a16d3540 Mon Sep 17 00:00:00 2001 From: Kevin Lyles Date: Wed, 7 Jul 2010 14:24:15 -0500 Subject: [PATCH] Detect some partial loads and keep waiting --- ItemScanner.lua | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/ItemScanner.lua b/ItemScanner.lua index a1aa139..6fd400f 100644 --- a/ItemScanner.lua +++ b/ItemScanner.lua @@ -3,6 +3,17 @@ local CONSECUTIVE_INVALID_TO_IGNORE = 5 local VALID_DELAY = 0.025 local INVALID_DELAY = 5 +local patterns = { + "^Design:", + "^Formula:", + "^Manual:", + "^Pattern:", + "^Plans:", + "^Recipe:", + "^Schematic:", + "^Technique:", +} + local function scanItemLink(link) local textL, textR @@ -11,7 +22,40 @@ local function scanItemLink(link) ItemScannerHiddenTooltip:SetHyperlink(link) local startTime = GetTime() - while ItemScannerHiddenTooltipTextLeft1:GetText():find(RETRIEVING_ITEM_INFO) do + local isPattern, hasReq = false, false + while true do + local numLines = ItemScannerHiddenTooltip:NumLines() + local done = numLines > 1 + if done then + if not isPattern then + local text = _G["ItemScannerHiddenTooltipTextLeft1"]:GetText() + for _, pattern in ipairs(patterns) do + if text:find(pattern) then + isPattern = true + break + end + end + end + -- We can skip the first line because it will only be RETRIEVING_ITEM_INFO if we only have one line + for i = 2, numLines do + local text = _G["ItemScannerHiddenTooltipTextLeft" .. i]:GetText() + if text:find(RETRIEVING_ITEM_INFO) then + done = false + break + elseif text:find("%(%d/[01]%)$") then + done = false + break + elseif isPattern and not hasReq then + hasReq = text:find("^\nRequires") + end + end + if isPattern and not hasReq then + done = false + end + if done then + break + end + end coroutine.yield() if GetTime() - startTime >= INVALID_DELAY then -- If we got anything useful, keep it -- 1.7.9.5