-- Craft Research Timer (CRT) by @aTo (EU) -- v0.4.8 local num_char --track character number drawing for, for positioning local k,v function CRT.GRID_Create() -- Fenetre de base CRT.UI.GRID_TLW= WINDOW_MANAGER:CreateTopLevelWindow("CRT_GRID_TLW") CRT.UI.GRID_TLW:SetHidden(CRT.SV.Settings.GRID.hidden) CRT.UI.GRID_TLW:SetClampedToScreen(false) CRT.UI.GRID_TLW:SetMovable(CRT.SV.Settings.lock) CRT.UI.GRID_TLW:SetMouseEnabled(true) CRT.UI.GRID_TLW:SetDrawLayer(1) CRT.UI.GRID_TLW:SetScale(CRT.SV.Settings.GRID.Scale) CRT.UI.GRID_TLW:SetAnchor(TOPLEFT, GuiRoot, TOPLEFT, CRT.SV.Settings.GRID.offset.X, CRT.SV.Settings.GRID.offset.Y) CRT.UI.GRID_TLW:SetHandler("OnMouseUp", function(self) CRT.Save_position("GRID")end) CRT.UI.GRID_TLW:SetHidden(true) --/background CRT.UI.GRID_BD = WINDOW_MANAGER:CreateControlFromVirtual("CRT_GRID_BD",CRT.UI.GRID_TLW, "ZO_DefaultBackdrop") CRT.UI.GRID_BD:SetAlpha(CRT.SV.Settings.GRID.BackdropAlpha) CRT.UI.GRID_BTN = WINDOW_MANAGER:CreateControl("CRT_GRID_BTN" , CRT.UI.GRID_TLW, CT_BUTTON) CRT.UI.GRID_BTN:SetDimensions( 30 , 30 ) CRT.UI.GRID_BTN:SetAnchor(TOPRIGHT,CRT.UI.GRID_TLW,TOPRIGHT,5,-10) CRT.UI.GRID_BTN:SetState( BSTATE_NORMAL ) CRT.UI.GRID_BTN:SetMouseOverBlendMode(0) CRT.UI.GRID_BTN:SetNormalTexture("/esoui/art/buttons/decline_down.dds") CRT.UI.GRID_BTN:SetMouseOverTexture("/esoui/art/buttons/decline_up.dds") CRT.UI.GRID_BTN:SetHandler( "OnClicked" , function(self) CRT.UI.GRID_TLW:SetHidden(true); CRT.SV.Settings.GRID.hidden = true end ) CRT.Char_sort() for _, v in ipairs(CRT.CharsInOrder) do CRT.GRID_Create_Character(v) end end function CRT.GRID_Create_Character(k) local x, y if (num_char == nil) then num_char = 0 end if ((CRT.SV.data.Craft[k][0]["Simu_craft"] ~= 0 or CRT.SV.data.Craft[k][1]["Simu_craft"] ~= 0 or CRT.SV.data.Craft[k][2]["Simu_craft"] ~= 0)) then -- display main window --- Why? CRT.UI.GRID_TLW:SetHidden(CRT.SV.Settings.GRID.hidden) -- label for chracter name CRT.UI.GRID_WD[k] = {} CRT.UI.GRID_WD[k][k] = WINDOW_MANAGER:CreateControl("CRT_GRID_"..k.."_"..k,CRT.UI.GRID_TLW,CT_LABEL) --CRT.UI.GRID_WD[k][k]:SetHidden(false) CRT.UI.GRID_WD[k][k]:SetFont("ZoFontGame") CRT.UI.GRID_WD[k][k]:SetDimensions(360,20) CRT.UI.GRID_WD[k][k]:SetColor(CRT.SV.Settings.GRID.Color.r, CRT.SV.Settings.GRID.Color.g, CRT.SV.Settings.GRID.Color.b, CRT.SV.Settings.GRID.Color.a) CRT.UI.GRID_WD[k][k]:SetAlpha(1) CRT.UI.GRID_WD[k][k]:SetAnchor(TOPLEFT,CRT.UI.GRID_TLW,TOPLEFT,0,120*num_char) CRT.UI.GRID_WD[k][k]:SetHorizontalAlignment(1) CRT.UI.GRID_WD[k][k]:SetText(string.upper(k)) if (num_char == 0) then x = 0 y = 20 else x = 0 y = 20+num_char*120 -- tab down 120 end -- Create section headers with dummy text for each skill --blacksmithing CRT.UI.GRID_WD[k][0] = {} CRT.UI.GRID_WD[k][0][0] = {} CRT.UI.GRID_WD[k][0][0]["BS_Icon"] = WINDOW_MANAGER:CreateControl("CRT_GRID_"..k.."_0_icon",CRT.UI.GRID_TLW,CT_TEXTURE) CRT.UI.GRID_WD[k][0][0]["BS_Icon"]:SetHidden(false) CRT.UI.GRID_WD[k][0][0]["BS_Icon"]:SetDimensions(20,20) CRT.UI.GRID_WD[k][0][0]["BS_Icon"]:SetAlpha(1) CRT.UI.GRID_WD[k][0][0]["BS_Icon"]:SetAnchor(TOPLEFT,CRT.UI.GRID_TLW,TOPLEFT,0,y) CRT.UI.GRID_WD[k][0][0]["BS_Icon"]:SetTexture("/esoui/art/icons/ability_smith_007.dds") CRT.UI.GRID_WD[k][0][0]["BS_Text"] = WINDOW_MANAGER:CreateControl("CRT_GRID_"..k.."_0_text",CRT.UI.GRID_TLW,CT_LABEL) CRT.UI.GRID_WD[k][0][0]["BS_Text"]:SetHidden(false) CRT.UI.GRID_WD[k][0][0]["BS_Text"]:SetFont("ZoFontGame") CRT.UI.GRID_WD[k][0][0]["BS_Text"]:SetDimensions(360,20) CRT.UI.GRID_WD[k][0][0]["BS_Text"]:SetColor(CRT.SV.Settings.GRID.Color.r, CRT.SV.Settings.GRID.Color.g, CRT.SV.Settings.GRID.Color.b, CRT.SV.Settings.GRID.Color.a) CRT.UI.GRID_WD[k][0][0]["BS_Text"]:SetAlpha(1) CRT.UI.GRID_WD[k][0][0]["BS_Text"]:SetAnchor(TOPLEFT,CRT.UI.GRID_TLW,TOPLEFT,20,y) CRT.UI.GRID_WD[k][0][0]["BS_Text"]:SetText("Loading") --Clothing CRT.UI.GRID_WD[k][1] = {} CRT.UI.GRID_WD[k][1][0] = {} CRT.UI.GRID_WD[k][1][0]["CL_Icon"] = WINDOW_MANAGER:CreateControl("CRT_GRID_"..k.."_1_icon",CRT.UI.GRID_TLW,CT_TEXTURE) CRT.UI.GRID_WD[k][1][0]["CL_Icon"]:SetHidden(false) CRT.UI.GRID_WD[k][1][0]["CL_Icon"]:SetDimensions(20,20) CRT.UI.GRID_WD[k][1][0]["CL_Icon"]:SetAlpha(1) CRT.UI.GRID_WD[k][1][0]["CL_Icon"]:SetAnchor(TOPLEFT,CRT.UI.GRID_TLW,TOPLEFT,120,y) CRT.UI.GRID_WD[k][1][0]["CL_Icon"]:SetTexture("/esoui/art/icons/ability_tradecraft_008.dds") CRT.UI.GRID_WD[k][1][0]["CL_Text"] = WINDOW_MANAGER:CreateControl("CRT_GRID_"..k.."_1_text",CRT.UI.GRID_TLW,CT_LABEL) CRT.UI.GRID_WD[k][1][0]["CL_Text"]:SetHidden(false) CRT.UI.GRID_WD[k][1][0]["CL_Text"]:SetFont("ZoFontGame") CRT.UI.GRID_WD[k][1][0]["CL_Text"]:SetDimensions(360,20) CRT.UI.GRID_WD[k][1][0]["CL_Text"]:SetColor(CRT.SV.Settings.GRID.Color.r, CRT.SV.Settings.GRID.Color.g, CRT.SV.Settings.GRID.Color.b, CRT.SV.Settings.GRID.Color.a) CRT.UI.GRID_WD[k][1][0]["CL_Text"]:SetAlpha(1) CRT.UI.GRID_WD[k][1][0]["CL_Text"]:SetAnchor(TOPLEFT,CRT.UI.GRID_TLW,TOPLEFT,140,y) CRT.UI.GRID_WD[k][1][0]["CL_Text"]:SetText("Loading") --Woodworking CRT.UI.GRID_WD[k][2] = {} CRT.UI.GRID_WD[k][2][0] = {} CRT.UI.GRID_WD[k][2][0]["WO_Icon"] = WINDOW_MANAGER:CreateControl("CRT_GRID_"..k.."_2_icon",CRT.UI.GRID_TLW,CT_TEXTURE) CRT.UI.GRID_WD[k][2][0]["WO_Icon"]:SetHidden(false) CRT.UI.GRID_WD[k][2][0]["WO_Icon"]:SetDimensions(20,20) CRT.UI.GRID_WD[k][2][0]["WO_Icon"]:SetAlpha(1) CRT.UI.GRID_WD[k][2][0]["WO_Icon"]:SetAnchor(TOPLEFT,CRT.UI.GRID_TLW,TOPLEFT,240,y) CRT.UI.GRID_WD[k][2][0]["WO_Icon"]:SetTexture("/esoui/art/icons/ability_tradecraft_009.dds") CRT.UI.GRID_WD[k][2][0]["WO_Text"] = WINDOW_MANAGER:CreateControl("CRT_GRID_"..k.."_2_text",CRT.UI.GRID_TLW,CT_LABEL) CRT.UI.GRID_WD[k][2][0]["WO_Text"]:SetHidden(false) CRT.UI.GRID_WD[k][2][0]["WO_Text"]:SetFont("ZoFontGame") CRT.UI.GRID_WD[k][2][0]["WO_Text"]:SetDimensions(360,20) CRT.UI.GRID_WD[k][2][0]["WO_Text"]:SetColor(CRT.SV.Settings.GRID.Color.r, CRT.SV.Settings.GRID.Color.g, CRT.SV.Settings.GRID.Color.b, CRT.SV.Settings.GRID.Color.a) CRT.UI.GRID_WD[k][2][0]["WO_Text"]:SetAlpha(1) CRT.UI.GRID_WD[k][2][0]["WO_Text"]:SetAnchor(TOPLEFT,CRT.UI.GRID_TLW,TOPLEFT,260,y) CRT.UI.GRID_WD[k][2][0]["WO_Text"]:SetText("Loading") for id_craft = 0, 2,1 do for simcraft = 1, 3,1 do if (num_char == 0) then x = (120*id_craft)+20 y = 20+(20*simcraft) else x = (120*id_craft)+20 y = 20+num_char*120+(20*simcraft) end CRT.UI.GRID_WD[k][id_craft][simcraft] = {} -- item icon CRT.UI.GRID_WD[k][id_craft][simcraft]["item_icon"] = WINDOW_MANAGER:CreateControl("CRT_GRID_"..k.."_"..id_craft.."_"..simcraft.."_icon",CRT.UI.GRID_TLW,CT_TEXTURE) CRT.UI.GRID_WD[k][id_craft][simcraft]["item_icon"]:SetHidden(true) CRT.UI.GRID_WD[k][id_craft][simcraft]["item_icon"]:SetDimensions(20,20) CRT.UI.GRID_WD[k][id_craft][simcraft]["item_icon"]:SetAlpha(1) CRT.UI.GRID_WD[k][id_craft][simcraft]["item_icon"]:SetAnchor(TOPLEFT,CRT.UI.GRID_TLW,TOPLEFT,x-20,y) CRT.UI.GRID_WD[k][id_craft][simcraft]["item_icon"]:SetMouseEnabled(true) CRT.UI.GRID_WD[k][id_craft][simcraft]["item_icon"]:SetHandler("OnMouseEnter", function (self) ZO_Tooltips_ShowTextTooltip(self, TOP, CRT.SV.data.Craft[k][id_craft][simcraft]["Item_name"]) end) CRT.UI.GRID_WD[k][id_craft][simcraft]["item_icon"]:SetHandler("OnMouseExit", function (self) ZO_Tooltips_HideTextTooltip() end) -- trait icon CRT.UI.GRID_WD[k][id_craft][simcraft]["trait_icon"] = WINDOW_MANAGER:CreateControl("CRT_GRID_"..k.."_"..id_craft.."_"..simcraft.."_trait",CRT.UI.GRID_TLW,CT_TEXTURE) CRT.UI.GRID_WD[k][id_craft][simcraft]["trait_icon"]:SetHidden(true) CRT.UI.GRID_WD[k][id_craft][simcraft]["trait_icon"]:SetDimensions(20,20) CRT.UI.GRID_WD[k][id_craft][simcraft]["trait_icon"]:SetAlpha(1) CRT.UI.GRID_WD[k][id_craft][simcraft]["trait_icon"]:SetAnchor(TOPLEFT,CRT.UI.GRID_TLW,TOPLEFT,x,y) CRT.UI.GRID_WD[k][id_craft][simcraft]["trait_icon"]:SetMouseEnabled(true) CRT.UI.GRID_WD[k][id_craft][simcraft]["trait_icon"]:SetHandler("OnMouseEnter", function (self) ZO_Tooltips_ShowTextTooltip(self, TOP, CRT.SV.data.Craft[k][id_craft][simcraft]["Trait_description"]) end) CRT.UI.GRID_WD[k][id_craft][simcraft]["trait_icon"]:SetHandler("OnMouseExit", function (self) ZO_Tooltips_HideTextTooltip() end) -- text CRT.UI.GRID_WD[k][id_craft][simcraft]["text"] = WINDOW_MANAGER:CreateControl("CRT_GRID_"..k.."_"..id_craft.."_"..simcraft.."_text",CRT.UI.GRID_TLW,CT_LABEL) CRT.UI.GRID_WD[k][id_craft][simcraft]["text"]:SetHidden(true) CRT.UI.GRID_WD[k][id_craft][simcraft]["text"]:SetFont("ZoFontGame") CRT.UI.GRID_WD[k][id_craft][simcraft]["text"]:SetDimensions(360,20) CRT.UI.GRID_WD[k][id_craft][simcraft]["text"]:SetColor(CRT.SV.Settings.GRID.Color.r, CRT.SV.Settings.GRID.Color.g, CRT.SV.Settings.GRID.Color.b, CRT.SV.Settings.GRID.Color.a) CRT.UI.GRID_WD[k][id_craft][simcraft]["text"]:SetAlpha(1) CRT.UI.GRID_WD[k][id_craft][simcraft]["text"]:SetAnchor(TOPLEFT,CRT.UI.GRID_TLW,TOPLEFT,x+20,y) end end num_char = num_char+1 CRT.UI.GRID_TLW:SetDimensions(360,120*num_char) end end function CRT.GRID_Update(timestamp) for k, _ in pairs(CRT.SV.data.Craft) do if ( (CRT.SV.data.Craft[k][0]["Simu_craft"] ~= 0 or CRT.SV.data.Craft[k][1]["Simu_craft"] ~= 0 or CRT.SV.data.Craft[k][2]["Simu_craft"] ~= 0)) then for id_craft = 0, 2,1 do if (CRT.SV.data.Craft[k][id_craft]["MaxResearch"] ~= nil ) then local MaxResearch = CRT.SV.data.Craft[k][id_craft]["MaxResearch"] local Simu_craft = CRT.SV.data.Craft[k][id_craft]["Simu_craft"] if (id_craft == 0) then CRT.UI.GRID_WD[k][id_craft][0]["BS_Text"]:SetText(" "..Simu_craft.." / "..MaxResearch) elseif(id_craft == 1) then CRT.UI.GRID_WD[k][id_craft][0]["CL_Text"]:SetText(" "..Simu_craft.." / "..MaxResearch) elseif(id_craft == 2) then CRT.UI.GRID_WD[k][id_craft][0]["WO_Text"]:SetText(" "..Simu_craft.." / "..MaxResearch) end end for simcraft = 1, 3,1 do if (CRT.SV.data.Craft[k][id_craft][simcraft] ~= nil)then CRT.UI.GRID_WD[k][id_craft][simcraft]["item_icon"]:SetHidden(false) CRT.UI.GRID_WD[k][id_craft][simcraft]["item_icon"]:SetTexture(CRT.SV.data.Craft[k][id_craft][simcraft]["Item_icon"]) CRT.UI.GRID_WD[k][id_craft][simcraft]["trait_icon"]:SetHidden(false) CRT.UI.GRID_WD[k][id_craft][simcraft]["trait_icon"]:SetTexture(CRT.SV.data.Craft[k][id_craft][simcraft]["Trait_icon"]) local currenttimer = CRT.SV.data.Craft[k][id_craft][simcraft]["EndTimeStamp"] - timestamp - 1 if (currenttimer > 0) then CRT.UI.GRID_WD[k][id_craft][simcraft]["text"]:SetHidden(false) CRT.UI.GRID_WD[k][id_craft][simcraft]["text"]:SetText(CRT.Converthms(currenttimer)) elseif (currenttimer <= 0) then CRT.UI.GRID_WD[k][id_craft][simcraft]["text"]:SetHidden(false) CRT.UI.GRID_WD[k][id_craft][simcraft]["text"]:SetText("|cFF0000Finished|r") end end end end end end end