• 🏆 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!
  • 🏆 Hive's 6th HD Modeling Contest: Mechanical is now open! Design and model a mechanical creature, mechanized animal, a futuristic robotic being, or anything else your imagination can tinker with! 📅 Submissions close on June 30, 2024. Don't miss this opportunity to let your creativity shine! Enter now and show us your mechanical masterpiece! 🔗 Click here to enter!

I wanna make this frames dynamic sized

Status
Not open for further replies.
Level 24
Joined
Jun 26, 2020
Messages
1,853
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
822
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,853
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,853
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