Skip to content

Row related functions

9thCore edited this page Nov 13, 2023 · 10 revisions

The functions on this page are available by loading the row.lua extension. It is loaded by default.

level:getrow(index)

Returns the row at index index in the form of an object with functions to modify values of it.

Example:

mycoolrow = level:getrow(0) -- Get the first row in the level.
-- Now you can do stuff with it, such as
mycoolrow:movex(1, 75, 1, 'Linear')
-- to move the first row in the level.
-- The function used above will be explained later.

row:setroom(beat, room)

Moves the row into the room room at beat beat. Note that room is 0-indexed.

Example:

mycoolrow:setroom(2, 1) -- at beat 2 mycoolrow will be moved into room 1 (second room),
mycoolrow:setroom(6, 0) -- and at beat 6 it will be moved into room 0.

row:movex(beat, x, duration, ease)

Moves the row to x% on the x axis at beat beat with a duration duration and ease ease.
x can be a string surrounded by {} instead, representing a RDCode formula.

Example:

mycoolrow:movex(4, 75, 1, 'OutExpo') -- at beat 4, move mycoolrow's x position to 75% with a duration of 1 beat and OutExpo ease
mycoolrow:movex(6, '{f0}', 1, 'Linear') -- and at beat 6, move to f0 over 1 beat, linearly. if f0 is 25, it will go to 25%

row:movey(beat, y, duration, ease)

Moves the row to y% on the y axis at beat beat with a duration duration and ease ease.
y can be a string surrounded by {} instead, representing a RDCode formula.

Example:

mycoolrow:movey(6, 30, 0, 'OutQuad') -- at beat 6, move mycoolrow's y position to 30% with a duration of 0 beats and OutQuad ease

row:movesx(beat, x, duration, ease)

Scales the row on the x axis to x times its original size with a duration duration and ease ease.
x can be a string surrounded by {} instead, representing a RDCode formula.

Example:

mycoolrow:movesx(8, 2, 1, 'InQuint') -- at beat 8, set mycoolrow's horizontal size to 2 times its original size (equivalent to 200% in the editor) with a duration of 1 beat and InQuint ease.

row:movesy(beat, y, duration, ease)

Scales the row on the y axis to y times its original size with a duration duration and ease ease.
y can be a string surrounded by {} instead, representing a RDCode formula.

Example:

mycoolrow:movesy(6, 1.5, 1, 'InQuint') -- at beat 6, set mycoolrow's vertical size to 1.5 times its original size (equivalent to 150% in the editor) with a duration of 1 beat and InQuint ease.

row:rotate(beat, rot, duration, ease)

Rotates the row to rot degrees with a duration duration and ease ease.
rot can be a string surrounded by {} instead, representing a RDCode formula.

Example:

mycoolrow:rotate(3, 90, 0.5, 'OutSine') -- at beat 3, rotate mycoolrow to 90 degrees with a duration of 0.5 beats and OutSine ease.

row:movepivot(beat, pivot, duration, ease)

Moves the row's pivot to pivot with a duration duration and ease ease. pivot 0 is equivalent to 0% and pivot 1 is equivalent to 100%.

Example:

mycoolrow:movepivot(2, 0.5, 1, 'InExpo') -- at beat 2, move the row's pivot to its center with a duration of 1 beat and InExpo ease.

row:movecx(beat, x, duration, ease)

Offsets the row's character from its original position by x% on the x axis at beat beat with a duration duration and ease ease.
x can be a string surrounded by {} instead, representing a RDCode formula.

Example:

mycoolrow:movecx(2, -5, 0.5, 'InElastic') -- at beat 2, offset the row's character by -5% (5% to the left) with a duration of 0.5 beats and InElastic ease.

row:movecy(beat, y, duration, ease)

Offsets the row's character from its original position by y% on the y axis at beat beat with a duration duration and ease ease.
y can be a string surrounded by {} instead, representing a RDCode formula.

Example:

mycoolrow:movecy(2, 10, 0.5, 'InElastic') -- at beat 2, offset the row's character by 10% (10% up) with a duration of 0.5 beats and InElastic ease.

row:crotate(beat, rot, duration, ease)

Rotates the row's character to rot degrees with a duration duration and ease ease.
rot can be a string surrounded by {} instead, representing a RDCode formula.

Example:

mycoolrow:crotate(4, -90, 1, 'OutElastic') -- at beat 4, rotate mycoolrow's character to -90 degrees with a duration of 1 beat and OutElastic ease.

row:movecsx(beat, x, duration, ease)

Scales the row's character on the x axis to x times its original size with a duration duration and ease ease.
x can be a string surrounded by {} instead, representing a RDCode formula.

Example:

mycoolrow:movecsx(8, 2, 1, 'InQuint') -- at beat 8, set mycoolrow's character's horizontal size to 2 times its original size (equivalent to 200% in the editor) with a duration of 1 beat and InQuint ease.

row:movecsy(beat, y, duration, ease)

Scales the row's character on the y axis to y times its original size with a duration duration and ease ease.
y can be a string surrounded by {} instead, representing a RDCode formula.

Example:

mycoolrow:movecsy(6, 1.5, 1, 'InQuint') -- at beat 6, set mycoolrow's character's vertical size to 1.5 times its original size (equivalent to 150% in the editor) with a duration of 1 beat and InQuint ease.

row:movehx(beat, x, duration, ease)

Offsets the row's heart from its original position by x% on the x axis at beat beat with a duration duration and ease ease.
x can be a string surrounded by {} instead, representing a RDCode formula.

Example:

mycoolrow:movehx(2, -5, 0.5, 'InElastic') -- at beat 2, offset the row's heart by -5% (5% to the left) with a duration of 0.5 beats and InElastic ease.

row:movehy(beat, y, duration, ease)

Offsets the row's heart from its original position by y% on the y axis at beat beat with a duration duration and ease ease.
y can be a string surrounded by {} instead, representing a RDCode formula.

Example:

mycoolrow:movehy(2, 10, 0.5, 'InElastic') -- at beat 2, offset the row's heart by 10% (10% up) with a duration of 0.5 beats and InElastic ease.

row:hrotate(beat, rot, duration, ease)

Rotates the row's heart to rot degrees with a duration duration and ease ease.
rot can be a string surrounded by {} instead, representing a RDCode formula.

Example:

mycoolrow:hrotate(4, -90, 1, 'OutElastic') -- at beat 4, rotate mycoolrow's heart to -90 degrees with a duration of 1 beat and OutElastic ease.

row:movehsx(beat, x, duration, ease)

Scales the row's heart on the x axis to x times its original size with a duration duration and ease ease.
x can be a string surrounded by {} instead, representing a RDCode formula.

Example:

mycoolrow:movehsx(8, 2, 1, 'InQuint') -- at beat 8, set mycoolrow's heart's horizontal size to 2 times its original size (equivalent to 200% in the editor) with a duration of 1 beat and InQuint ease.

row:movehsy(beat, y, duration, ease)

Scales the row's heart on the y axis to y times its original size with a duration duration and ease ease.
y can be a string surrounded by {} instead, representing a RDCode formula.

Example:

mycoolrow:movehsy(6, 1.5, 1, 'InQuint') -- at beat 6, set mycoolrow's heart's vertical size to 1.5 times its original size (equivalent to 150% in the editor) with a duration of 1 beat and InQuint ease.

row:move(beat, p, duration, ease)

A helper function to make creating multiple movements at once easier. p is a key-value table where the key is what function to call and the value is the parameter.

Example:

mycoolrow:move(2, {     -- at beat 2,
    x = 40,         -- move the row to 40% on the x axis,
    sy = 0.5,       -- scale the row to half its size on the y axis,
    rotate = 90,        -- rotate the row by 90 degrees, (you can also use rot!)
    crotate = -90,         -- rotate the row's character by -90 degrees, (you can also use crot!)
    hrotate = 180       -- rotate the row's heart by 180 degrees, (you can also use hrot!)
}, 1, 'Linear')         -- with a duration of 1 beat and Linear ease.

row:playexpression(beat, expression)

Plays the expression expression at beat beat.

Example:

mycoolrow:playexpression(2, 'happy') -- play the happy expression at beat 2

row:swapexpression(beat, target, expression)

Replaces the expression target with the expression expression at beat beat.

Example:

mycoolrow:swapexpression(2, 'neutral', 'happy') -- replace the neutral expression with the happy expression at beat 2

row:setvisibleatstart(vis)

Set whether the row will be visible at start.

Example:

mycoolrow:setvisibleatstart(true) -- mycoolrow will be visible at start
mycoolrow:setvisibleatstart(false) -- mycoolrow will no longer be visible at start

row:setborder(beat, bordertype, color, opacity, duration, ease)

Sets the row's border to bordertype, with the color color, opacity opacity at beat beat with a duration duration and ease ease. bordertype should be None, Outline or Glow.

Example:

mycoolrow:setborder(2, 'Glow', 'FF0000', 100, 1, 'OutExpo') -- at beat 2, sets mycoolrow's border to Glow, with a color of FF0000 (red), opacity of 100 (fully opaque) with a duration of 1 beat and OutExpo ease.

row:settint(beat, showtint, color, opacity, duration, ease)

If showtint is true, sets the row's tint to color with opacity% opacity, with a duration duration and ease ease. If false, removes the tint from the row.

Example:

mycoolrow:settint(4, true, '0000FF', 50, 1, 'OutExpo') -- at beat 4, sets mycoolrow's tint to 0000FF (blue), opacity of 50 with a duration of 1 beat and OutExpo ease.

row:setopacity(beat, opacity, duration, ease)

Sets the row's opacity to opacity at beat beat with a duration duration and ease ease.

Example:

mycoolrow:setopacity(6, 50, 1, 'InQuint') -- at beat 6, set mycoolrow's opacity to 50% with a duration of 1 beat and InQuint ease.

row:show(beat, smooth)

Shows the whole row at beat beat. smooth 0 makes the transition instant, 1 makes the transition smooth (particles of smoke) and 2 makes the full transition, with the expanding of the row.

Example:

mycoolrow:show(4, 0) -- at beat 4, show the row instantly
mycoolrow:hide(6, 1) -- at beat 6, hide the row smoothly (more about this lower)
mycoolrow:show(8, 2) -- at beat 8, show the full appearing of the row

row:hide(beat, smooth)

Hides the whole row at beat beat. smooth 0 makes the transition instant and 1 makes the transition smooth.

Example:

mycoolrow:hide(4, 1) -- at beat 4, hide the row smoothly
mycoolrow:show(5, 0) -- at beat 5, show the row instantly
mycoolrow:hide(8, 0) -- at beat 8, hide the row instantly

row:showchar(beat, smooth)

Shows only the row's character at beat beat. smooth 0 makes the transition instant and 1 makes the transition smooth.

Example:

mycoolrow:showchar(4, 1) -- at beat 4, show only the row's character smoothly
mycoolrow:show(5, 0) -- at beat 5, show the whole row instantly
mycoolrow:showchar(8, 0) -- at beat 8, show only the row's character instantly

row:showrow(beat, smooth)

Shows only the row's row (everything except the character) at beat beat. smooth 0 makes the transition instant and 1 makes the transition smooth.

Example:

mycoolrow:showrow(4, 1) -- at beat 4, show only the row's row smoothly
mycoolrow:show(5, 0) -- at beat 5, show the whole row instantly
mycoolrow:showrow(8, 0) -- at beat 8, show only the row's row instantly

row:togglevis(beat, smooth)

Toggles the row's visibility at beat beat, shows the row if it's hidden and hides it if it's visible. smooth 0 makes the transition instant and 1 makes the transition smooth.

Example:

mycoolrow:hide(2, 0) -- at beat 2, hide the row instantly
mycoolrow:togglevis(4, 0) -- at beat 4, toggle its visibility, showing it instantly
mycoolrow:togglevis(6, 1) -- at beat 6, toggle it again, hiding it smoothly

level:allborder(beat, bordertype, color, opacity, duration, ease)

Sets every row's border to bordertype, with the color color, opacity opacity at beat beat with a duration duration and ease ease. bordertype should be None, Outline or Glow. Same as calling row:setborder for every row manually.

Example:

level:allborder(2, 'Glow', 'FF0000', 100, 1, 'OutExpo') -- at beat 2, sets every row's border to Glow, with a color of FF0000 (red), opacity of 100 (fully opaque) with a duration of 1 beat and OutExpo ease.

level:allglow(beat, color, opacity, duration, ease)

Sets every row's border to the glow, with the color color, opacity opacity at beat beat with a duration duration and ease ease. Same as calling row:setborder for every row manually or level:allborder with 'Glow' for bordertype.

Example:

level:allglow(2, 'FF0000', 100, 1, 'OutExpo') -- at beat 2, sets every row's border to Glow, with a color of FF0000 (red), opacity of 100 (fully opaque) with a duration of 1 beat and OutExpo ease.

level:alloutline(beat, color, opacity, duration, ease)

Sets every row's border to the outline, with the color color, opacity opacity at beat beat with a duration duration and ease ease. Same as calling row:setborder for every row manually or level:allborder with 'Outline' for bordertype.

Example:

level:alloutline(2, 'FF0000', 100, 1, 'OutExpo') -- at beat 2, sets every row's border to Outline, with a color of FF0000 (red), opacity of 100 (fully opaque) with a duration of 1 beat and OutExpo ease.

level:alltint(beat, showtint, color, opacity, duration, ease)

If showtint is true, sets every row's tint to color with opacity% opacity, with a duration duration and ease ease. If false, removes the tint from every row. Same as calling row:settint for every row manually.

Example:

level:alltint(4, true, '0000FF', 50, 1, 'OutExpo') -- at beat 4, sets every row's tint to 0000FF (blue), opacity of 50 with a duration of 1 beat and OutExpo ease.

level:hideallatstart()

Takes no parameters, and simply marks all rows to be hidden at the start of the level.

Example:

level:hideallatstart()
Clone this wiki locally