Suggestions

Level 15
Joined
Oct 17, 2012
Messages
746
Could you add support for WurstScript? It would be a timesaver! Manual conversions from JASS take chunks of time, which could be utilized elsewhere.

+ Add the option to turn off automatic adjustments.

Support for EditBox +1

I kind of wished that the entries in the Hall of Frame were more than just a showpiece. I would love to try them out in game.
 
Last edited:

NightKnight

Hosted Project RUID
Level 14
Joined
Sep 3, 2014
Messages
222
Could you add support for WurstScript? It would be a timesaver! Manual conversions from JASS take chunks of time, which could be utilized elsewhere.

+ Add the option to turn off automatic adjustments.

Support for EditBox +1

I kind of wished that the entries in the Hall of Frame were more than just a showpiece. I would love to try them out in game.
  • I can add support for WrustScript if a wurstscript dev is available to help with the syntax since I don't know it.
  • What are automatic adjustments?
 
Level 6
Joined
Jan 12, 2011
Messages
106
Would it be possible to request a feature?
In the View ->Background/Resolution -> Add option to load a custom 1920x1080 picture, which could be a shot from a game with custom UI - this way, even ppl like us could use this great tool to position the UI precisely having the template from the game directly.
 
Level 5
Joined
Jul 21, 2020
Messages
62
Would love a way to move around blizzard frames, (Origin Frames / BlzGetFrameByName). I can fake it with adding a bunch of backdrop frames but it would be SUPER helpful to just be able to do it natively in here. Would save days of time when I want to create a custom UI using mostly default frames.
 
Level 15
Joined
Oct 17, 2012
Messages
746
By automatic adjustments, I meant that whenever I changed the frame's coordinates by typing them in, the program would automatically adjust them to some random number. That must be the snapping feature.

+ Add the ability to select multiple frames and manipulate them together.
 
Level 20
Joined
Jun 26, 2020
Messages
1,586
Could you send an example of every blz frame command in wurst syntax? As well as an example frame being created via the different ways it can be created?
Ok, this is the functions (in Wurst you can create different functions with the same name if the parameters are diferent):
To create:
Wurst:
public function createFrame(string name) returns framehandle
public function createFrame(string name, framehandle owner, integer priority, integer createContext) returns framehandle
public function createFrame(string typeName, string name, framehandle owner, string inherits, integer createContext) returns framehandle
To edit values (the most relevants):
Wurst:
public function framehandle.setAbsPoint(framepointtype point, real x, real y)
public function framehandle.setPoint(framepointtype point, framehandle relative, framepointtype relativePoint)
public function framehandle.setPoint(framepointtype point, framehandle relative, framepointtype relativePoint, real offsetX, real offsetY)
public function framehandle.setText(string text)
public function framehandle.setTextColor(integer color)
public function framehandle.setModel(string modelFile, integer cameraIndex)
public function framehandle.setTexture(string texFile, integer flag, bool blend)
public function framehandle.setScale(real scale)
public function framehandle.setTooltip(framehandle tooltip)
public function framehandle.setWidth(real width)
public function framehandle.setHeight(real height)
public function framehandle.setSize(real width, real height)
public function framehandle.setVertexColor(integer color)
public function framehandle.setParent(framehandle parent)
public function framehandle.setFont(string fileName, real height, integer flags)
public function framehandle.setTextAlignment(textaligntype vert, textaligntype horz)
And Wurst don't use words like endfunction or even bracers, all depends of the tabs.
I made a Health bar doing somethig like this (is not the entire code, because is too long):
Wurst:
/** Creates the health-bar and to display it use the function .build()
    but before you can edit the fields */
construct()
    let id = this castTo int
    main = createFrame(FramehandleTypeNames.backdrop, "Health Bar", WORLD_UI, "", id)

    // Create the bar
    bar = createFrame(FramehandleTypeNames.backdrop, "Bar", main, "", id)
    background = createFrame(FramehandleTypeNames.backdrop, "Background", bar, DEFAULT_BACKGROUND_TEMPLATE, id)
    progressBar = createFrame("SIMPLESTATUSBAR", "Progress bar", bar, "", id)
    healthText = createFrame(FramehandleTypeNames.text, "Health text", bar, "", id)
    healBar = createFrame("SIMPLESTATUSBAR", "Heal bar animation", bar, "", id)
    dmgBar = createFrame("SIMPLESTATUSBAR", "Damage bar animation", bar, "", id)

    // Create the name text
    nameText = createFrame(FramehandleTypeNames.text, "Name text", main, "", id)

    // Order the frames
    main.setLevel(1)

    bar.setLevel(1)
    nameText.setLevel(2)

    background.setLevel(1)
    healBar.setLevel(2)
    dmgBar.setLevel(3)
    progressBar.setLevel(4)
    healthText.setLevel(10)

/** If all the fields are set this functions creates the health-bar*/
function build()
    main.setAbsPoint(anchor, pos)
    main.setSize(size.x, size.y)
    main.setScale(scale)
    main.setTexture(EMPTY_BACKGROUND_ROOT, 0, true)
    if myUnit != null
        currentHealth = myUnit.getHP()
        maxHealth = myUnit.getMaxHP()

    // Build the progress bar
    bar.setPoint(FRAMEPOINT_TOPLEFT, main, FRAMEPOINT_TOP, -0.012, 0.)
    bar.setPoint(FRAMEPOINT_BOTTOMRIGHT, main, FRAMEPOINT_BOTTOMRIGHT)
    bar.setTexture(EMPTY_BACKGROUND_ROOT, 0, true)

    healthText.setText(currentHealth.toString(precision) + " / " + maxHealth.toString(precision))
    healthText.setPoint(FRAMEPOINT_TOPLEFT, bar, FRAMEPOINT_TOPLEFT)
    healthText.setPoint(FRAMEPOINT_BOTTOMRIGHT, bar, FRAMEPOINT_BOTTOMRIGHT)
    healthText.setTextAlignment(TEXT_JUSTIFY_CENTER, TEXT_JUSTIFY_CENTER)

    background.setPoint(FRAMEPOINT_TOPLEFT, bar, FRAMEPOINT_TOPLEFT)
    background.setPoint(FRAMEPOINT_BOTTOMRIGHT, bar, FRAMEPOINT_BOTTOMRIGHT)

    progressBar.setTexture(barTexture, 0, true)
    progressBar.setVertexColor(barColor.toInt())
    progressBar.setValue(currentHealth/maxHealth * 100.)
    progressBar.setPoint(FRAMEPOINT_TOPLEFT, background, FRAMEPOINT_TOPLEFT, 0.006, -0.006)
    progressBar.setPoint(FRAMEPOINT_BOTTOMRIGHT, background, FRAMEPOINT_BOTTOMRIGHT, -0.006, 0.006)

    healBar.setTexture(barTexture, 0, true)
    healBar.setVertexColor(healColor.toInt())
    healBar.setPoint(FRAMEPOINT_TOPLEFT, background, FRAMEPOINT_TOPLEFT, 0.006, -0.006)
    healBar.setPoint(FRAMEPOINT_BOTTOMRIGHT, background, FRAMEPOINT_BOTTOMRIGHT, -0.006, 0.006)
    dmgBar.setTexture(barTexture, 0, true)
    dmgBar.setVertexColor(dmgColor.toInt())
    dmgBar.setPoint(FRAMEPOINT_TOPLEFT, background, FRAMEPOINT_TOPLEFT, 0.006, -0.006)
    dmgBar.setPoint(FRAMEPOINT_BOTTOMRIGHT, background, FRAMEPOINT_BOTTOMRIGHT, -0.006, 0.006)
    
    // Build the name text
    nameText.setText(text)
    nameText.setPoint(FRAMEPOINT_TOPLEFT, main, FRAMEPOINT_TOPLEFT)
    nameText.setPoint(FRAMEPOINT_BOTTOMRIGHT, main, FRAMEPOINT_BOTTOM)
    nameText.setTextAlignment(vertAlign, horzAlign)
To initiate you need have everything in a wurst file, in the top write package <Name of the file> and use the keyword init
Wurst:
package TestFrame

init
    let bar = new HealthBar()

    bar.build()

It looks like this:
1651721379723.png
 
Top