• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

I wanna make this frames dynamic sized

Status
Not open for further replies.
Level 24
Joined
Jun 26, 2020
Messages
1,852
Hello, I made this frames to be a tooltip using the Reforged UI Designer, but I wanna make it dynamic sized (by using the trick of setting the width or height to 0), but for that I have to clear the points or don't setting 2 points and then manually set the size and everything I tried didn't worked correctly, maybe because I'm making the wrong calculations.
Here are created:
Lua:
for i = 0, 5 do
    DigimonT[i] = BlzCreateFrame("ScriptDialogButton", StockedDigimonsMenu, 0, 0)
    BlzFrameSetPoint(DigimonT[i], FRAMEPOINT_TOPLEFT, StockedDigimonsMenu, FRAMEPOINT_TOPLEFT, x1[i], y1[i])
    BlzFrameSetPoint(DigimonT[i], FRAMEPOINT_BOTTOMRIGHT, StockedDigimonsMenu, FRAMEPOINT_BOTTOMRIGHT, x2[i], y2[i])
    BackdropDigimonT[i] = BlzCreateFrameByType("BACKDROP", "BackdropDigimonT[" .. i .. "]", DigimonT[i], "", 1)
    BlzFrameSetAllPoints(BackdropDigimonT[i], DigimonT[i])
    BlzFrameSetTexture(BackdropDigimonT[i], "ReplaceableTextures\\CommandButtons\\BTNCancel.blp", 0, true)
    BlzFrameSetLevel(BackdropDigimonT[i], 1)
    t = CreateTrigger()
    BlzTriggerRegisterFrameEvent(t, DigimonT[i], FRAMEEVENT_CONTROL_CLICK)
    TriggerAddAction(t, function () PressedActions(i) end) -- :D

    DigimonTUsed[i] = BlzCreateFrameByType("BACKDROP", "Used", DigimonT[i], "", 1)
    BlzFrameSetPoint(DigimonTUsed[i], FRAMEPOINT_TOPLEFT, DigimonT[i], FRAMEPOINT_TOPLEFT, 0.0000, 0.0000)
    BlzFrameSetPoint(DigimonTUsed[i], FRAMEPOINT_BOTTOMRIGHT, DigimonT[i], FRAMEPOINT_BOTTOMRIGHT, 0.0000, 0.0000)
    BlzFrameSetTexture(DigimonTUsed[i], "UI\\Widgets\\Console\\Human\\human-console-button-highlight.blp", 0, true)
    BlzFrameSetAlpha(DigimonTUsed[i], 127)
    BlzFrameSetLevel(DigimonTUsed[i], 2)
    BlzFrameSetVisible(DigimonTUsed[i], false)

    DigimonTSelected[i] = BlzCreateFrameByType("BACKDROP", "Selected", DigimonT[i], "", 1)
    BlzFrameSetPoint(DigimonTSelected[i], FRAMEPOINT_TOPLEFT, DigimonT[i], FRAMEPOINT_TOPLEFT, 0.0000, 0.0000)
    BlzFrameSetPoint(DigimonTSelected[i], FRAMEPOINT_BOTTOMRIGHT, DigimonT[i], FRAMEPOINT_BOTTOMRIGHT, 0.0000, 0.0000)
    BlzFrameSetTexture(DigimonTSelected[i], "UI\\Widgets\\EscMenu\\Human\\checkbox-background.blp", 0, true)
    BlzFrameSetLevel(DigimonTSelected[i], 3)
    BlzFrameSetVisible(DigimonTSelected[i], false)

    DigimonTCooldownT[i] = BlzCreateFrameByType("TEXT", "name", DigimonT[i], "", 0)
    BlzFrameSetPoint(DigimonTCooldownT[i], FRAMEPOINT_TOPLEFT, DigimonT[i], FRAMEPOINT_TOPLEFT, 0.0000, 0.0000)
    BlzFrameSetPoint(DigimonTCooldownT[i], FRAMEPOINT_BOTTOMRIGHT, DigimonT[i], FRAMEPOINT_BOTTOMRIGHT, 0.0000, 0.0000)
    BlzFrameSetText(DigimonTCooldownT[i], "60")
    BlzFrameSetEnable(DigimonTCooldownT[i], false)
    BlzFrameSetScale(DigimonTCooldownT[i], 2.14)
    BlzFrameSetTextAlignment(DigimonTCooldownT[i], TEXT_JUSTIFY_CENTER, TEXT_JUSTIFY_MIDDLE)
    BlzFrameSetLevel(DigimonTCooldownT[i], 4)
    BlzFrameSetVisible(DigimonTCooldownT[i], false)

    DigimonTTooltip[i] = BlzCreateFrame("QuestButtonDisabledBackdropTemplate", DigimonT[i],0,0)
    BlzFrameSetPoint(DigimonTTooltip[i], FRAMEPOINT_TOPLEFT, DigimonT[i], FRAMEPOINT_TOPLEFT, 0.022437, 0.088828)
    BlzFrameSetPoint(DigimonTTooltip[i], FRAMEPOINT_BOTTOMRIGHT, DigimonT[i], FRAMEPOINT_BOTTOMRIGHT, 0.12277, 0.018440)
    BlzFrameSetTooltip(DigimonT[i], DigimonTTooltip[i])

    DigimonTTooltipTitle[i] = BlzCreateFrameByType("TEXT", "name", DigimonTTooltip[i], "", 0)
    BlzFrameSetPoint(DigimonTTooltipTitle[i], FRAMEPOINT_TOPLEFT, DigimonTTooltip[i], FRAMEPOINT_TOPLEFT, 0.0075630, -0.012400)
    BlzFrameSetPoint(DigimonTTooltipTitle[i], FRAMEPOINT_BOTTOMRIGHT, DigimonTTooltip[i], FRAMEPOINT_BOTTOMRIGHT, -0.012437, 0.077600)
    BlzFrameSetText(DigimonTTooltipTitle[i], "|cffFFCC00Title|r")
    BlzFrameSetEnable(DigimonTTooltipTitle[i], false)
    BlzFrameSetScale(DigimonTTooltipTitle[i], 1.14)
    BlzFrameSetTextAlignment(DigimonTTooltipTitle[i], TEXT_JUSTIFY_CENTER, TEXT_JUSTIFY_LEFT)

    DigimonTTooltipDescription[i] = BlzCreateFrameByType("TEXT", "name", DigimonTTooltip[i], "", 0)
    BlzFrameSetPoint(DigimonTTooltipDescription[i], FRAMEPOINT_TOPLEFT, DigimonTTooltip[i], FRAMEPOINT_TOPLEFT, 0.0075630, -0.027400)
    BlzFrameSetPoint(DigimonTTooltipDescription[i], FRAMEPOINT_BOTTOMRIGHT, DigimonTTooltip[i], FRAMEPOINT_BOTTOMRIGHT, -0.012437, 0.032600)
    BlzFrameSetText(DigimonTTooltipDescription[i], "|cffFFCC00Description|r")
    BlzFrameSetEnable(DigimonTTooltipDescription[i], false)
    BlzFrameSetScale(DigimonTTooltipDescription[i], 1.14)
    BlzFrameSetTextAlignment(DigimonTTooltipDescription[i], TEXT_JUSTIFY_TOP, TEXT_JUSTIFY_LEFT)

    DigimonTTooltipStatus[i] = BlzCreateFrameByType("TEXT", "name", DigimonTTooltip[i], "", 0)
    BlzFrameSetPoint(DigimonTTooltipStatus[i], FRAMEPOINT_TOPLEFT, DigimonTTooltip[i], FRAMEPOINT_TOPLEFT, 0.0075630, -0.077400)
    BlzFrameSetPoint(DigimonTTooltipStatus[i], FRAMEPOINT_BOTTOMRIGHT, DigimonTTooltip[i], FRAMEPOINT_BOTTOMRIGHT, -0.012437, 0.012600)
    BlzFrameSetText(DigimonTTooltipStatus[i], "|cffFFCC00Status|r")
    BlzFrameSetEnable(DigimonTTooltipStatus[i], false)
    BlzFrameSetScale(DigimonTTooltipStatus[i], 1.14)
    BlzFrameSetTextAlignment(DigimonTTooltipStatus[i], TEXT_JUSTIFY_CENTER, TEXT_JUSTIFY_LEFT)
end
And here are edited:
Lua:
-- This is in a "if GetLocalPlayer() == player then" block
for i = 0, MAX_STOCK - 1 do
    local d = bank.stocked[i] ---@type Digimon
    if d then
        -- Button
        BlzFrameSetEnable(DigimonT[i], true)
        BlzFrameSetTexture(BackdropDigimonT[i], BlzGetAbilityIcon(d:getTypeId()), 0, true)
        -- Tooltip
        BlzFrameSetText(DigimonTTooltipTitle[i], GetUnitName(d.root))
        BlzFrameSetText(DigimonTTooltipDescription[i], BlzGetAbilityExtendedTooltip(d:getTypeId(), 0))
        if bank.inUse[i] then
            BlzFrameSetText(DigimonTTooltipStatus[i], "|cff0000ffIn use|r")
            BlzFrameSetVisible(DigimonTUsed[i], true)
            BlzFrameSetAlpha(DigimonTUsed[i], 127)
        else
            BlzFrameSetText(DigimonTTooltipStatus[i], "|cff00ff00Stored|r")
            BlzFrameSetVisible(DigimonTUsed[i], false)
        end
    else
        -- Button
        BlzFrameSetEnable(DigimonT[i], false)
        BlzFrameSetTexture(BackdropDigimonT[i], "ReplaceableTextures\\CommandButtons\\BTNCancel.blp", 0, true)
        -- Tooltip
        BlzFrameSetText(DigimonTTooltipTitle[i], "Empty slot")
        BlzFrameSetText(DigimonTTooltipDescription[i], "")
        BlzFrameSetText(DigimonTTooltipStatus[i], "")
    end
end
This is how looks in game:
1656379437988.png
1656379457596.png
 
Level 18
Joined
Oct 17, 2012
Messages
821
For dynamic sizing, set the width, height, or both dimensions of the TEXT frame to zero. Don't set any points for the TEXT frame. Then wrap the BACKDROP frame around the TEXT frame via setting its points. The BACKDROP frame should then dynamically resize in accordance to the dimensions of the TEXT frame, which dynamically resizes to the text content.
 
Level 24
Joined
Jun 26, 2020
Messages
1,852
For dynamic sizing, set the width, height, or both dimensions of the TEXT frame to zero. Don't set any points for the TEXT frame. Then wrap the BACKDROP frame around the TEXT frame via setting its points. The BACKDROP frame should then dynamically resize in accordance to the dimensions of the TEXT frame, which dynamically resizes to the text content.
If the points of the backdrop will depend of the text, how can I set its position if you are telling me that don't set any points for the TEXT frame?
 
Level 24
Joined
Jun 26, 2020
Messages
1,852
I followed your advices and it worked well, thank you, this is how I did it:
Lua:
for i = 0, 5 do
    DigimonT[i] = BlzCreateFrame("ScriptDialogButton", StockedDigimonsMenu, 0, 0)
    BlzFrameSetPoint(DigimonT[i], FRAMEPOINT_TOPLEFT, StockedDigimonsMenu, FRAMEPOINT_TOPLEFT, x1[i], y1[i])
    BlzFrameSetPoint(DigimonT[i], FRAMEPOINT_BOTTOMRIGHT, StockedDigimonsMenu, FRAMEPOINT_BOTTOMRIGHT, x2[i], y2[i])
    BackdropDigimonT[i] = BlzCreateFrameByType("BACKDROP", "BackdropDigimonT[" .. i .. "]", DigimonT[i], "", 1)
    BlzFrameSetAllPoints(BackdropDigimonT[i], DigimonT[i])
    BlzFrameSetTexture(BackdropDigimonT[i], "ReplaceableTextures\\CommandButtons\\BTNCancel.blp", 0, true)
    BlzFrameSetLevel(BackdropDigimonT[i], 1)
    t = CreateTrigger()
    BlzTriggerRegisterFrameEvent(t, DigimonT[i], FRAMEEVENT_CONTROL_CLICK)
    TriggerAddAction(t, function () PressedActions(i) end) -- :D

    DigimonTUsed[i] = BlzCreateFrameByType("BACKDROP", "Used", DigimonT[i], "", 1)
    BlzFrameSetPoint(DigimonTUsed[i], FRAMEPOINT_TOPLEFT, DigimonT[i], FRAMEPOINT_TOPLEFT, 0.0000, 0.0000)
    BlzFrameSetPoint(DigimonTUsed[i], FRAMEPOINT_BOTTOMRIGHT, DigimonT[i], FRAMEPOINT_BOTTOMRIGHT, 0.0000, 0.0000)
    BlzFrameSetTexture(DigimonTUsed[i], "UI\\Widgets\\Console\\Human\\human-console-button-highlight.blp", 0, true)
    BlzFrameSetAlpha(DigimonTUsed[i], 127)
    BlzFrameSetLevel(DigimonTUsed[i], 2)
    BlzFrameSetVisible(DigimonTUsed[i], false)

    DigimonTSelected[i] = BlzCreateFrameByType("BACKDROP", "Selected", DigimonT[i], "", 1)
    BlzFrameSetPoint(DigimonTSelected[i], FRAMEPOINT_TOPLEFT, DigimonT[i], FRAMEPOINT_TOPLEFT, 0.0000, 0.0000)
    BlzFrameSetPoint(DigimonTSelected[i], FRAMEPOINT_BOTTOMRIGHT, DigimonT[i], FRAMEPOINT_BOTTOMRIGHT, 0.0000, 0.0000)
    BlzFrameSetTexture(DigimonTSelected[i], "UI\\Widgets\\EscMenu\\Human\\checkbox-background.blp", 0, true)
    BlzFrameSetLevel(DigimonTSelected[i], 3)
    BlzFrameSetVisible(DigimonTSelected[i], false)

    DigimonTCooldownT[i] = BlzCreateFrameByType("TEXT", "name", DigimonT[i], "", 0)
    BlzFrameSetPoint(DigimonTCooldownT[i], FRAMEPOINT_TOPLEFT, DigimonT[i], FRAMEPOINT_TOPLEFT, 0.0000, 0.0000)
    BlzFrameSetPoint(DigimonTCooldownT[i], FRAMEPOINT_BOTTOMRIGHT, DigimonT[i], FRAMEPOINT_BOTTOMRIGHT, 0.0000, 0.0000)
    BlzFrameSetText(DigimonTCooldownT[i], "60")
    BlzFrameSetEnable(DigimonTCooldownT[i], false)
    BlzFrameSetScale(DigimonTCooldownT[i], 2.14)
    BlzFrameSetTextAlignment(DigimonTCooldownT[i], TEXT_JUSTIFY_CENTER, TEXT_JUSTIFY_MIDDLE)
    BlzFrameSetLevel(DigimonTCooldownT[i], 4)
    BlzFrameSetVisible(DigimonTCooldownT[i], false)

    DigimonTTooltip[i] = BlzCreateFrame("QuestButtonDisabledBackdropTemplate", DigimonT[i],0,0)

    DigimonTTooltipText[i] = BlzCreateFrameByType("TEXT", "name", DigimonTTooltip[i], "", 0)
    BlzFrameSetPoint(DigimonTTooltipText[i], FRAMEPOINT_BOTTOMLEFT, DigimonT[i], FRAMEPOINT_BOTTOMLEFT, 0.025000, 0.025000)
    BlzFrameSetText(DigimonTTooltipText[i], "Empty slot")
    BlzFrameSetScale(DigimonTTooltipText[i], 1.14)
    BlzFrameSetTextAlignment(DigimonTTooltipText[i], TEXT_JUSTIFY_CENTER, TEXT_JUSTIFY_LEFT)
    BlzFrameSetSize(DigimonTTooltipText[i], 0, 0.005)

    BlzFrameSetPoint(DigimonTTooltip[i], FRAMEPOINT_TOPLEFT, DigimonTTooltipText[i], FRAMEPOINT_TOPLEFT, -0.015000, 0.015000)
    BlzFrameSetPoint(DigimonTTooltip[i], FRAMEPOINT_BOTTOMRIGHT, DigimonTTooltipText[i], FRAMEPOINT_BOTTOMRIGHT, 0.015000, -0.015000)
    BlzFrameSetTooltip(DigimonT[i], DigimonTTooltip[i])
end
Lua:
for i = 0, MAX_STOCK - 1 do
    local d = bank.stocked[i] ---@type Digimon
    if d then
        local id = d:getTypeId()
        -- Button
        BlzFrameSetEnable(DigimonT[i], true)
        BlzFrameSetTexture(BackdropDigimonT[i], BlzGetAbilityIcon(id), 0, true)
        -- Tooltip
        local text = GetHeroProperName(d.root) .. "\n\n" .. BlzGetAbilityExtendedTooltip(id, 0) .. "\n\n"
        if bank.inUse[i] then
            text = text .. "|cff0000ffIn use|r"
            BlzFrameSetVisible(DigimonTUsed[i], true)
            BlzFrameSetAlpha(DigimonTUsed[i], 127)
        else
            text = text .. "|cff00ff00Stored|r"
            BlzFrameSetVisible(DigimonTUsed[i], false)
        end
        BlzFrameSetText(DigimonTTooltipText[i], text)
        BlzFrameSetSize(DigimonTTooltipText[i], 0.25, 0)
    else
        -- Button
        BlzFrameSetEnable(DigimonT[i], false)
        BlzFrameSetTexture(BackdropDigimonT[i], "ReplaceableTextures\\CommandButtons\\BTNCancel.blp", 0, true)
        -- Tooltip
        BlzFrameSetText(DigimonTTooltipText[i], "Empty slot")
        BlzFrameSetSize(DigimonTTooltipText[i], 0, 0.005)
    end
    -- Re-size
    BlzFrameClearAllPoints(DigimonTTooltip[i])
    BlzFrameSetPoint(DigimonTTooltip[i], FRAMEPOINT_TOPLEFT, DigimonTTooltipText[i], FRAMEPOINT_TOPLEFT, -0.015000, 0.015000)
    BlzFrameSetPoint(DigimonTTooltip[i], FRAMEPOINT_BOTTOMRIGHT, DigimonTTooltipText[i], FRAMEPOINT_BOTTOMRIGHT, 0.015000, -0.015000)
end
 
Status
Not open for further replies.
Top