1
0
Bifurcation 0

Altered the structure of QuestHelper_Collector. Implemented a methodology to automatically purge data when the structure is changed. Fixed upgrade.lua to stop throwing errors UNLESS we are on a development version by escaping a character in the test that is SUPPOSED to pass ONLY on development versions.

Cette révision appartient à :
Nathanial.C.Jones 2011-02-16 02:10:13 +00:00
Parent 09742a52ae
révision 70a499e88c
2 fichiers modifiés avec 48 ajouts et 6 suppressions

Voir le fichier

@ -1,6 +1,8 @@
QuestHelper_File["collect.lua"] = "4.0.1.$svnversion$"
QuestHelper_Loadtime["collect.lua"] = GetTime()
local --[[ static ]] MINSVNVERSION = 147
local --[[ static ]] PURGEDEV = false
local debug_output = false
if QuestHelper_File["collect.lua"] == "Development Version" then debug_output = true end
@ -90,10 +92,49 @@ function QH_Collector_Init()
QuestHelper_Collector_Version = QuestHelper_Collector_Version_Current
local sig = string.format("%s on %s/%s/%d", GetAddOnMetadata("QuestHelper", "Version"), GetBuildInfo(), GetLocale(), QuestHelper:PlayerFaction())
local sig_altfaction = string.format("%s on %s/%s/%d", GetAddOnMetadata("QuestHelper", "Version"), GetBuildInfo(), GetLocale(), (QuestHelper:PlayerFaction() == 1) and 2 or 1)
if not QuestHelper_Collector[sig] or QuestHelper_Collector[sig].compressed then QuestHelper_Collector[sig] = {version = QuestHelper_Collector_Version} end -- fuckin' bullshit, man
local QHCData = QuestHelper_Collector[sig]
local svnversion = "$svnversion$"
local buildInfo, locale, faction = GetBuildInfo(), GetLocale(), QuestHelper:PlayerFaction()
local altfaction = (faction == 1) and 2 or 1
local remove_sigs = {}
for k, v in pairs(QuestHelper_Collector) do
local sig = k:match("^(%d)a$") or k:match("^(%d)b$") or k:match("^(%d)r$")
if sig then
if tonumber(sig) < MINSVNVERSION then
table.insert(remove_sigs, sig)
end
elseif k ~= svnversion then
table.insert(remove_sigs, k)
elseif k == "$svnversion\$" and PURGEDEV then
table.insert(remove_sigs, k)
end
end
for _, v in ipairs(remove_sigs) do
QuestHelper:TextOut("Removing " .. v)
QuestHelper_Collector[v] = nil
end
-- Swap buildInfo and svnversion once first alteration is complete.
-- Perhaps move locale out of the "signature"
if not QuestHelper_Collector[svnversion] then
QuestHelper_Collector[svnversion] = {}
QuestHelper_Collector[svnversion][buildInfo] = {}
QuestHelper_Collector[svnversion][buildInfo][locale] = {}
QuestHelper_Collector[svnversion][buildInfo][locale][faction] = {version = QuestHelper_Collector_Version}
elseif not QuestHelper_Collector[svnversion][buildInfo] then
QuestHelper_Collector[svnversion][buildInfo] = {}
QuestHelper_Collector[svnversion][buildInfo][locale] = {}
QuestHelper_Collector[svnversion][buildInfo][locale][faction] = {version = QuestHelper_Collector_Version}
elseif not QuestHelper_Collector[svnversion][buildInfo][locale] then
QuestHelper_Collector[svnversion][buildInfo][locale] = {}
QuestHelper_Collector[svnversion][buildInfo][locale][faction] = {version = QuestHelper_Collector_Version}
elseif not QuestHelper_Collector[svnversion][buildInfo][locale][faction] then
QuestHelper_Collector[svnversion][buildInfo][locale][faction] = {version = QuestHelper_Collector_Version}
end
--if not QuestHelper_Collector[sig] or QuestHelper_Collector[sig].compressed then QuestHelper_Collector[sig] = {version = QuestHelper_Collector_Version} end -- fuckin' bullshit, man
local QHCData = QuestHelper_Collector[svnversion][buildInfo][locale][faction]
QuestHelper: Assert(not QHCData.compressed)
QuestHelper: Assert(QHCData.version == QuestHelper_Collector_Version_Current)
QHCData.modified = time()
@ -122,7 +163,7 @@ function QH_Collector_Init()
table.insert(QHCData.routing_dump, nt)
QH_Collect_Routing_Dump = nt
end
--[[ NOPE DO NOT DO THIS! IT'LL MESS UP THE NEW SYSTEM.
do -- Clean some stuff up!
local obliterate = {}
for k, v in pairs(QuestHelper_Collector) do
@ -135,6 +176,7 @@ function QH_Collector_Init()
QuestHelper_Collector[v] = nil
end
end
--]]
-- So, why do we delay it?
-- It's simple. People are gonna update to this version, and then they're going to look at the memory usage. Then they will panic because omg this version uses so much more memory, I bet that will somehow hurt my framerates in a way which is not adequately explained!

Voir le fichier

@ -395,7 +395,7 @@ function QuestHelper_BuildZoneLookup()
local altered_index = "!!! QuestHelper_IndexLookup entry needs update: [%q] = {%s, %s, %s}"
local altered_zone = "!!! QuestHelper_Zones entry needs update: [%s][%s] = %q -- was %s"
if not index and my_version == "4.0.1.$svnversion$" then
if not index and my_version == "4.0.1.$svnversion\$" then
QuestHelper_ErrorCatcher_ExplicitError(false, altered_index:format(tostring(base_name), tostring(next_index), tostring(c), tostring(z)))
next_index = next_index + 1
else