Quantcast

Refactored daily reset discovery

Alar of Daggerspine [03-26-15 - 13:27]
Refactored daily reset discovery

Signed-off-by: Alar of Daggerspine <alar@aspide.it>
Filename
GarrisonCommander-Broker/ldb.lua
diff --git a/GarrisonCommander-Broker/ldb.lua b/GarrisonCommander-Broker/ldb.lua
index f3fa540..eeda654 100644
--- a/GarrisonCommander-Broker/ldb.lua
+++ b/GarrisonCommander-Broker/ldb.lua
@@ -35,7 +35,7 @@ local NEXT=NEXT
 local NONE=C(NONE,"Red")
 local DONE=C(DONE,"Green")
 local NEED=C(NEED,"Red")
-local dbversion=2
+local dbversion=1

 local spellids={
 	[158754]='herb',
@@ -69,9 +69,7 @@ function addon:ldbCleanup()
 	end
 end
 function addon:ldbUpdate()
-	self:CheckDailyReset()
 	dataobj:Update()
-	farmobj:Update()
 end
 function addon:GARRISON_MISSION_STARTED(event,missionID)
 	local duration=select(2,G.GetPartyMissionInfo(missionID)) or 0
@@ -98,8 +96,9 @@ function addon:UNIT_SPELLCAST_START(event,unit,name,rank,lineID,spellID)
 	if (unit=='player') then
 		if spellids[spellID] then
 			name=names[spellids[spellID]]
-			if not self.db.realm.farms[ns.me][name] then
-				self.db.realm.farms[ns.me][name]=true
+			if not self.db.realm.farms[ns.me][name] or  today > self.db.realm.farms[ns.me][name] then
+				self:CheckDateReset()
+				self.db.realm.farms[ns.me][name]=today
 				farmobj:Update()
 			end
 		end
@@ -121,65 +120,36 @@ function addon:CheckDateReset()
 		return day,reset
 	end

-	today=format("%04d%02d%02d",year,month,day)
+	today=year*10000+month*100+day
 	if month==1 and day==1 then
 		local m, y, numdays, firstday = CalendarGetAbsMonth( 12, year-1 )
-		yesterday=format("%04d%02d%02d",y,m,numdays)
+		yesterday=y*10000+m*100+numdays
 	elseif day==1 then
 		local m, y, numdays, firstday = CalendarGetAbsMonth( month-1, year)
-		yesterday=format("%04d%02d%02d",y,m,numdays)
+		yesterday=y*10000+m*100+numdays
 	else
-		yesterday=format("%04d%02d%02d",year,month,day-1)
+		yesterday=year*10000+month*100+day
 	end
 	if (reset<3600*3) then
 		today=yesterday
 	end
-	if self.db.realm.lastday<today then self:Print("Daily reset") addon:CleanFarms() end
-	self.db.realm.lastday=today
-end
-function addon:CheckDailyReset()
-	if lastreset < 0 then
-		lastreset= GetQuestResetTime()
-		return
-	end
-	if lastreset < GetQuestResetTime() then
-	--@debug@
-		self:Print("Time reset")
-	--@end-debug@
-
-		lastreset =GetQuestResetTime()
-		self:CleanFarms()
-	end
+	self:ScheduleTimer("CheckDateReset",60)

 end
-function addon:CleanFarms()
---@debug@
-	self:Popup(L["Are you oaky if I reset daily timer?"].. " " .. self.db.realm.lastday .. " " .. today,
-		function()
---@end-debug@
-		for p,j in pairs(self.db.realm.farms) do
-			for s,_ in pairs(j) do
-				j[s]=false
-			end
-		end
---@debug@
-	end)
---@end-debug@
-end
 function addon:CountMissing()
 	local tot=0
 	local missing=0
 	for p,j in pairs(self.db.realm.farms) do
 		for s,_ in pairs(j) do
 			tot=tot+1
-			if not j[s] then missing=missing+1 end
+			if not j[s] or j[s] < today then missing=missing+1 end
 		end
 	end
 	return missing,tot
 end
 function addon:DiscoverFarms()
 	local shipmentIndex = 1;
-	local buildings = C_Garrison.GetBuildings();
+	local buildings = G.GetBuildings();
 	for i = 1, #buildings do
 		local buildingID = buildings[i].buildingID;
 		if ( buildingID) then
@@ -187,24 +157,26 @@ function addon:DiscoverFarms()
 			if (tContains(buildids.mine,buildingID)) then
 				names.mine=name
 				if not self.db.realm.farms[ns.me][name] then
-					self.db.realm.farms[ns.me][name]=false
+					self.db.realm.farms[ns.me][name]=0
 				end
 			end
 			if (tContains(buildids.herb,buildingID)) then
 				names.herb=name
 				if not self.db.realm.farms[ns.me][name] then
-					self.db.realm.farms[ns.me][name]=false
+					self.db.realm.farms[ns.me][name]=0
 				end
 			end

 		end
 	end
+	farmobj:Update()
 end
 function addon:SetDbDefaults(default)
 	default.realm={
 		missions={},
-		farms={["**"]={}},
-		lastday="0",
+		farms={["*"]={
+				["*"]=false
+			}},
 		dbversion=1
 	}
 end
@@ -217,12 +189,25 @@ function addon:OnInitialized()
 		self.db:ResetDB()
 		self.db.realm.dbversion=dbversion
 	end
+	-- Compatibility with alpha
+	if self.db.realm.lastday then
+		for k,v in pairs(addon.db.realm.farms) do
+			for s,d in pairs(v) do
+				v[s]=self.db.realm.lastday
+			end
+		end
+		self.db.realm.lastday=nil
+	end
+
 end
-function addon:OnEnabled()
-	lastreset=GetQuestResetTime()
-	self:ScheduleTimer("CheckDateReset",2)
+function addon:DelayedInit()
+	self:CheckDateReset()
+	self:ZONE_CHANGED_NEW_AREA()
 	self:ScheduleRepeatingTimer("ldbUpdate",2)
-	self:ScheduleTimer("ZONE_CHANGED_NEW_AREA",1)
+	farmobj:Update()
+end
+function addon:OnEnabled()
+	self:ScheduleTimer("DelayedInit",2)
 end
 dataobj=LibStub:GetLibrary("LibDataBroker-1.1"):NewDataObject("GC-Missions", {
 	type = "data source",
@@ -262,7 +247,7 @@ function farmobj:OnTooltipShow()
 			self:AddLine(k,C.Orange())
 		end
 		for s,d in pairs(v) do
-			self:AddDoubleLine(s,d and DONE or NEED)
+			self:AddDoubleLine(s,(d and d==today) and DONE or NEED)
 		end
 	end
 	self:AddLine("Manually mark my tasks:",C:Cyan())