Update FtFarmer.lua
Keith-Smith [11-14-19 - 22:16]
Update FtFarmer.lua
Fixed the farm per second issue.
diff --git a/modules/FtFarmer.lua b/modules/FtFarmer.lua
index 9897ae2..73a8893 100644
--- a/modules/FtFarmer.lua
+++ b/modules/FtFarmer.lua
@@ -1,5 +1,5 @@
-FtFarmer = ZO_Object:Subclass()
-local fm = FarmManager
+Farmer = ZO_Object:Subclass()
+local fm = FarmingManager
local function GetDisplayName(memberName)
for guildIndex = 1, GetNumGuilds() do
@@ -35,13 +35,26 @@ local function GetEmptySlot(bagNumber)
return dest
end
-function FtFarmer:New(memberName)
+local function rPrint(s, l, i) -- recursive Print (structure, limit, indent)
+ l = (l) or 100; i = i or ""; -- default item limit, indent string
+ if (l<1) then print "ERROR: Item limit reached."; return l-1 end;
+ local ts = type(s);
+ if (ts ~= "table") then print (i,ts,s); return l-1 end
+ d(i,ts); -- print "table"
+ for k,v in pairs(s) do -- print "[KEY] VALUE"
+ l = rPrint(v, l, i.."\t["..tostring(k).."]");
+ if (l < 0) then break end
+ end
+ return l
+end
+
+function Farmer:New(memberName)
local farmer = ZO_Object.New(self)
farmer:Init(memberName)
return farmer
end
-function FtFarmer:Init(memberName)
+function Farmer:Init(memberName)
self.name = memberName
self.displayName = GetDisplayName(memberName)
self.itemsFarmed = ItemList:New()
@@ -52,18 +65,21 @@ function FtFarmer:Init(memberName)
self.events = {}
self.bag = BAG_DELETE
- self.secondsPaused = 0
self.paused = false
self.pausedTime = 0
-
+ self.secondsPaused = 0
end
+
function Farmer:Pause()
if self.paused == true then
self.paused = false
- timePassed = ((GetGameTimeMilliseconds() - self.pausedTime) / 1000)
- self.secondsPaused = self.pausedTime + timePassed
- self.pausedTime = 0
+ local timePassed = ((GetGameTimeMilliseconds() - self.pausedTime) / 1000)
+ d('time passed')
+ d(timePassed)
+ d(self.pausedTime)
+ self.secondsPaused = self.secondsPaused + timePassed
+ d(self.secondsPaused)
d('Unpausing Farming Manager')
else
self.paused = true
@@ -83,12 +99,12 @@ function Farmer:Farm(itemLink, quantity)
end
end
-function FtFarmer:ItemFilter(itemData)
+function Farmer:ItemFilter(itemData)
local item = self.itemsFarmed.items[itemData.slotIndex]
return item ~= nil
end
-function FtFarmer:MoveItemsToBackpack()
+function Farmer:MoveItemsToBackpack()
local srcBag = BAG_VIRTUAL
local manager = InventoryManager:New()
local bagCache = SHARED_INVENTORY:GenerateFullSlotData(nil, srcBag)
@@ -103,7 +119,7 @@ function FtFarmer:MoveItemsToBackpack()
end
end
-function FtFarmer:DepositItemsInBank()
+function Farmer:DepositItemsInBank()
if self.bagId == BAG_DELETE then
d("Must be at a bank to deposit")
return
@@ -123,17 +139,21 @@ function FtFarmer:DepositItemsInBank()
end
end
-function FtFarmer:Deposit(itemLink, quantity)
+function Farmer:Deposit(itemLink, quantity)
local item = self.itemsDeposited:Add(itemLink, quantity)
self.totalValueDeposited = self.totalValueDeposited + (item.value * quantity)
fm.window:OnItemFarmed(item, ACTION_DEPOSIT)
end
-function FtFarmer:GetGoldPerSecond()
+function Farmer:GetGoldPerSecond()
if self.itemsFarmed.totalValue == 0 then return 0 end
- return self.itemsFarmed.totalValue / (GetTimeStamp() - self.timeStarted - self.secondsPaused)
+ local timeDifInSecs = GetDiffBetweenTimeStamps(GetTimeStamp(), self.timeStarted)
+ d(timeDifInSecs)
+ d(self.secondsPaused)
+ return self.itemsFarmed.totalValue / (timeDifInSecs - self.secondsPaused)
+ -- return self.itemsFarmed.totalValue / ((GetTimeStamp() - self.timeStarted) - self.secondsPaused)
end
-function FtFarmer:Reset()
+function Farmer:Reset()
self:Init(self.name)
end