-- Research Timer by hisdad -- v1 local function SortTimeA (a,b) return RT.SV.data.Craft[a].shortest < RT.SV.data.Craft[b].shortest end function RT.Init(eventCode, addOnName) if(addOnName == RT.name) then RT.Init_done = false RT.playername = GetUnitName("player") -- SavedVariables RT.SV.data = ZO_SavedVars:NewAccountWide(RT.name, 1, nil, nil ) if RT.SV.data.Craft == nil then RT.SV.data.Craft = {} RT.SV.data.Craft[RT.playername]= {} else RT.GRID_Remove_Expired() end RT.InitialiseLanguage() -- Slash commands SLASH_COMMANDS[RT.cmdsetup] = RT.CommandText_setup -- Default sort RT.SortFunction = SortTimeA -- Create Keybinds ZO_CreateStringId("SI_BINDING_NAME_RT_toggleGRID", "|c96FF00Toggle GRID|r") local timestamp = GetTimeStamp() RT.SV.data.Craft[RT.playername] = {} RT.SV.data.Craft[RT.playername]["Start"] = true RT.Collect_Data() RT.GRID_Create() RT.Init_done = true -- Only after initialised do we hook any other events. EVENT_MANAGER:RegisterForEvent(RT.name, EVENT_SMITHING_TRAIT_RESEARCH_STARTED, RT.Research_started) end end function RT.toggleGRID() if (RT.UI.GRID_TLW:IsHidden() == true) then RT.GRID_Sort() RT.UI.GRID_TLW:SetHidden(false) else RT.UI.GRID_TLW:SetHidden(true) end end function RT.Converthms(timesec) local days = 0 local hours = 0 local minutes = 0 local seconds = 0 local humanDuration local function extractIntegerUnits(sec, unitduration) local units = math.floor(sec / unitduration) return units, sec - (units * unitduration) end days, timesec = extractIntegerUnits(timesec, 60*60*24) hours, timesec = extractIntegerUnits(timesec, 60*60) minutes, seconds = extractIntegerUnits(timesec, 60) humanDuration = string.format("%d:%02d", hours, minutes) if (days > 0) then humanDuration = string.format("%dd ", days)..humanDuration end return humanDuration end function RT.CommandText_setup() RT.toggleGRID() end EVENT_MANAGER:RegisterForEvent(RT.name, EVENT_ADD_ON_LOADED, RT.Init)