Discord
Login
Community
DARK THEME

Microscript+

A basic extension to microscript bringing some common helper functions and variables, plus 8 new classes - vec2d, vec3d, timer, countdown, button, scrollbar, slider, and dynamic! https://microstudio.dev/i/JmeJuniper/msplus/

Changelog:

v1.5.2

6/24/2022

Changed

  • Classes
    • dynamic
      • Added move
      • Added setAlpha
      • Added changeAlpha
      • draw now sets the transparency of the sprite
  • Demo
    • Arrow now fades when bouncing

Deleted

  • Classes
    • list2d
      • Couldn't get it to work properly

v1.5.1 "Statistics" update

6/23/2022

New

  • Functions
    • arrayPercents
    • mean/average
    • median
    • mode
    • arrange
    • divisibleBy

v1.5 "Undo" update

6/22/2022

New

  • Functions
    • chance
    • roundPlace

Updated

  • Classes
    • Dynamic
      • BindKey now allows for "forward", "backward", "turnLeft", and "turnRight" bindings (useful for top-down games)
      • Added removeBinds
      • .width and .height and all collision tests now reflect rotation!
      • Added toggleDebug
      • Added toggleClamp

v1.4.4

6/16/2022

New

  • Functions
    • Arrayify

Updated

  • Functions
    • Stringify
      • Returns input if it cannot be stringified
    • Numberfy
      • Returns input if it cannot be numberfied

v1.4.3

6/15/2022

New

  • Demo
    • Highscore
    • Countdown
    • Help button

Updated

  • Classes
    • Dynamic
      • Added touchingWall, it returns true if the sprite is touching a wall
      • Added bindKey
  • Demo
    • Fixed aspect ratio
    • Arrow now bounces off of wall

Deleted

  • Demo
    • 1 wall

v1.4.2 "Demo" update

6/14/2022

New

  • Demo (Thanks @TinkerSmith for the idea!)

Updated

  • Classes
    • Dynamic
      • Now has setPos function, which I somehow forgot about

Deleted

  • Functions
    • Fill
      • Unnecessary, screen.clear(color) exists

v1.4.1

6/14/2022

Updated

  • Classes
    • Dynamic
      • Now has 4 new functions: colliding, addWall, updWall, getWall, deleteWall
      • .update() now features wall collision

Renamed

  • Functions
    • fillScreen -> fill

Bugfixes

  • Functions
    • Fill
      • Now fills the screen instead of drawing a border (broke v1.3)

v1.4 - "Dynamic" update

6/13/2022

New

  • Classes
    • countdown
    • dynamic
    • list2d

Updated

  • Misc
    • Lowered chance of overwriting user-defined variables (mostly "temp") by using local

v1.3.2

6/13/2022

New

  • Functions
    • map

Updated

  • Variables
    • All dynamic variables are now updated every millisecond, as opposed to every frame
  • Classes
    • Optimized scrollbar and slider, removing a lot of mathematical operations in update and draw (however, it does require a bit more computing when initiating a new instance). Not anything you would notice normally, but if you for some reason need a ton of scrollbars, or have a really really weak machine, it might help.
    • Scrollbar and slider now have a progress variable you can access, mapping the pure x/y position of the slider/scrollbar to a 0-1 range showing the progress from the starting position

Bugfixes

  • Variables
    • milliseconds and seconds are back inside the msplus object, like they're supposed to be (Broke v1.2.2)
  • Classes
    • Scrollbar and slider now actually scroll with the mouse wheel (Broke v1.3.1)

v1.3.1

6/11/2022

Updated

  • Classes
    • Scrollbar & slider now can adjust when you scroll with a mouse wheel, with a new variable scrollSpeed (If scrollSpeed is negative, it will go in reverse, if scrollSpeed is 0 or not defined, it won't react at all to mouse wheel events.)
    • Separated scrollbar's, slider's, and button's draw() into both draw() and update() in case you want to do something like stop the button/scrollbar/slider from updating (i.e. if you are in a pause menu, and don't want to let the user press the button, but still want to draw it to the screen)

v1.3 - "UI" update

6/10/2022

New

  • Functions
    • fillScreen
  • Classes
    • uiButton
    • scrollbar
    • slider

Updated

  • Classes
    • Vec2d
      • Removed .attr() in favor of .x, .y, .mag, and .dir
    • Vec3d
      • Removed .attr() in favor of .x, .y, .z, and .mag
    • Removed .getTime() from timer, in favor of .time

v1.2.2

6/10/2022

New

  • Functions
    • MultiPrint
  • Variables
    • Public
      • Milliseconds
      • Seconds
    • Private
      • StartMilliseconds
  • Prototypes
    • String
      • "*"

Bugfixes

  • Functions
    • Contencate
      • Works properly again (Broke v1.1)

v1.2.1 - "Type Conversion v2" update

6/8/2022

Updated

  • Functions
    • Numberfy
      • Now supports lists (where the first object is a valid string) and returns informative errors
    • Stringify
      • Now supports objects & functions (Note: Functions do not return the code you enter, they return a lower-level code filled with instructions like STORE_LOCAL, LOAD_LOCAL, and FUNCTION_APPLY_VARIABLE 1

Renamed

  • Functions
    • angle -> dirTo

Bugfixes

  • Functions
    • Numberfy
      • Now actually works (broke v1.1)
    • Stringify
      • Now works properly with numbers and lists again (broke v1.1.1)

v1.2 - "Vector Revamp" update

6/7/2022

New

  • Classes
    • vec3d

Updated

  • Classes
    • Vec2d
      • Revamped, renaming .getAttr() to .attr(), massively improving + and -, fixing * to be mathematically correct, and removing / and &

Renamed

  • Classes
    • Vec2d -> vec2d

v1.1.2

6/7/2022

Updated

  • Functions
    • Stringify
      • Added newlines to stringify, making it clearer to read

Bugfixes

  • Functions
    • Stringify
      • Fixed stringify returning 0 when given a class (broke v1.1.1)
  • Classes
    • Vec2d
      • Fixed Vec2d division multiplying instead of dividing (Thanks @Sebastian!) (broke v1)

v1.1.1

6/7/2022

Updated

  • Functions
    • Stringify
      • Now supports non-MSPLUS classes (Thanks @Sebastian!)

Renamed

  • Functions
    • randBetween -> rand

v1.1 - "Type Conversion" update

6/6/2022

New

  • Functions
    • Numberfy

Updated

  • Functions
    • Stringify
      • Reports an error when inputting an object or non MSPLUS class instead of attempting and possibly outputting weird results
      • Added support for MSPLUS classes Vec2d and timer

Misc

  • Simplified function & variable calling by only requiring the name of the function/variable, not requiring .func. or .var.
  • Put classes in the msplus object to avoid overwriting

v1 - "Initial" update

6/6/2022

New

  • Functions
    • randomBetween
    • clamp
    • lerp
    • sign
    • dist2d
    • dist3d
    • angle
    • stringify
    • contencate
    • rgbStr
    • rgbaStr
  • Variables
    • Public
      • wasdY
      • wasdX
      • arrowY
      • arrowX
  • Classes
    • Vec2d
    • timer

In stringify you could replace the error message with

str = "object: "
for property in a.class
  str = str + property + "=" + a[property] + ", "
end
return str

to handle unknown types.

Also, not sure what you're trying to do with operators "/" for the vector?

(edit: corrected typo in the code - now uses correct a variable name)

@Sebastian I tried to do that with the objects, but it didn't work, didn't think to do it with classes though, thank you! As for the /, it's just division, I figured there might be a rare case where someone might want it, so I added it :p

Ok, but I think you made a mistake in definition?

"/" = function(a, b)
      return new Vec2d(a.x*b.x, a.y*b.y)
    end

And beside that - division of a vector by another vector is not defined in mathematics, so if someone needs it, then they have a bigger problem ;)

Oops, thanks for catching that! Honestly, Vec2d was kinda rushed, I'm going to redo it soon

Dang, this is growing quickly :)

P.S. are you planning on releasing some demo to show the use of some of your extensions? Especially looking at your dynamics and walls :)

Live Long and Tinker

Thank you :D I'm really excited for dynamics, so expect some more updates to that! And yeah I better start work on a demo, I have procrastinated that long enough XD

Edit: Aaand... Done! Nothing much, but I think it helps show the usefulness of dynamics and some other things

Aaaaaah, that makes much more sense right away :) So basically by assigning walls to a dynamic object it creates kind of collision groups, or so.

Thanks a lot for the example :)

@TinkerSmith Yeah, pretty much. I was thinking of having them a separate class, but then you would need to call something like sprite.updWallPos(wall) and it would be annoying :/ Glad you enjoyed! (P.S. I'm almost done with a new update that adds keybinding and a way to see if a sprite is touching a wall, I think you'll like it :D )

Cool. I might need some walls soon, but haven't had time yet to further explore it.

Have to see how it works when I have multiple players/NPCs and one set of walls

@Tinkersmith Walls are assigned to a single dynamic at a time (really it's just an array named this.walls with some objects with x y width and height) so they won't transfer :/

Post a reply

Progress

Status

Preview
Cancel
Post
Validate your e-mail address to participate in the community