GithubHelp home page GithubHelp logo

ethanjli / linerider-userscript-mods Goto Github PK

View Code? Open in Web Editor NEW

This project forked from emergentstudios/linerider-userscript-mods

0.0 0.0 0.0 115 KB

Userscript mods for Line Rider

JavaScript 100.00%

linerider-userscript-mods's People

Contributors

conundrumer avatar ethanjli avatar mhenr18 avatar

linerider-userscript-mods's Issues

Add line adjustment to the Line Metadata mod

It would be nice to be able to view and adjust the angle and length of the selected lines, with a user setting for adjusting from either the x1,y1 endpoint or the x2,y2 endpoint or from the endpoint with smaller or larger x/y

Interface to set the starting velocity of riders

Right now the only way to change rider position is to drag an icon, and there's no GUI support to change the starting velocity of riders. It'd be great if we could adjust the starting velocities of riders. For more precise positioning, and for adjusting the position only along one axis, it'd also be nice to have a GUI for setting each rider's position numerically.

Make input handling smarter in number spinners

I received the following bug report:

there's an annoying thing where you can't erase the input boxes and type a new number, side effect being if you want to type "-15" you like, have to type 15 and then add the "-" after, if you try to just start typing with "-" it resets to 0. So if you select it and type "-15" you wind up with "015"

The issue here is probably that the onChange handler for number inputs is (via parseFloatOrDefault) trying to parse the input value even when it's blank, which resets the value back to zero. We can add a special handling case where it does nothing if the input value is an empty string, and that should probably fix this issue.

Multi-segment Bezier tool

It'd be great if the Bezier tool functioned more like a proper pen tool where all handles are editable simultaneously, instead of requiring a "Commit" before the next segment is added and made editable.

Animation overlay

This would show a grey translucent overlay of where the lines were in the last frame relative to the camera. It would enable nice animations. Ideally it could be configured with either a frame offset relative to the current frame, or with a fixed frame ID.

We'll need to figure out how to call the getPlaybackCamera and/or getCurrentCamera selectors. It may also be useful to investigate window.store.getState().simulator.engine.

Linear/rotational array mod

This would repeatedly apply a particular simple transformation (e.g. translation or rotation) to the selection, drawing making a copy with each application of the transformation. It'd be even better if it could output the copies onto separate layers, but that may be complicated.

Allow many mods to fit into the UI

Ideally we'd have a scrollable sidebar/overlay for all mods, and mods would register as accordion panels within that sidebar. Right now, installing many mods means that users can quickly run out of screen real-estate.

This may need to be implemented in linerider.com

Unify mods & custom tools with each other

  • Officially fork from upstream: update the download URLs to this repo, update the README to provide direct links to the raw files for tampermonkey
  • Unify the implementations of UI elements in the toolboxes
  • Allow spinners to be pushed beyond their limits, while maintaining the limits of the range sliders
  • Standardize all custom tools and mods to keep the box open when "Commit" is pressed
  • Investigate whether we can push common code out to a Mod Support mod
  • Have small and large sliders wherever it makes sense
  • Unify the implementations of state management
  • Have independent "Reset" buttons on sliders wherever it makes sense (e.g. in custom tools)
  • See if we can make a stable vertical ordering of userscript mods, e.g. by giving each mod a priority number

Dragging selections around within the Transform Mod is janky

  • Often, trying to click on the selection results in the selection being cancelled. This probably needs a fix in linerider.com, to have wider margins of error for clicking on selections before they actually get deselected. In the meantime, we may be able to pop up a dialog box asking the user to confirm that they meant to change their selection? Or we may be able to make the selection persist until a "Reselect" button is pressed, even if the user clicks away?
  • The transform previews disappear while the selection is being dragged around. This probably also needs a fix in linerider.com

Randomization in Transform Mod

It was requested to be able to randomize the rotation of the selection in the transform mod. Perhaps we can add a checkbox which toggles showing/hiding randomization actions, including one for the rotation setting. To keep things simple and intuitive, we can just use the slider limits as the randomization limits.

Tiling preview mod

Tiling preview would draw virtual duplicate copies of the current selection at a certain translational and/or rotational offset (e.g. for triangular/square/hexagonal tiling)

"Commit as Copy" in Transform Mod

It'd be nice if the Transform Mod could behave as if the tool will copy the old selection, make a new copy with the transformation applied, on the currently-selected layer, and select that new copy (without resetting the settings). This allows patterning, like the linear/rotational array mod described in #11, with fine manual control. It'd probably be an "advanced mode" tool.

Allow changing the selection's layer from the Selection Metadata Mod

In order to change which layer a selection is on, we currently have to do a sequence of copying a selection, changing the layer, pasting the selection, changing the layer, and re-selecting the old selection in order to delete it. This is annoying.

We should be able to add a drop-down menu to the Selection Metadata Mod to change which layer the selection is on. Implementation: The lines array in the loadOriginals function of the selection metadata mod exposes a way to change the layer ID of each line, so that we can change which layer the line is on. store.getState().simulator.engine.engine.state.layers gives an array of layers, so we can look up the name of each layer from its ID.

SVG import mod

  • Right now lr-svg (https://github.com/conundrumer/lr-svg) requires installing nodeJS to run a script locally
  • Right now lr-svg requires layer names from a hard-coded pattern, instead of allowing the user to specify which layer to import
  • lr-svg might not work properly with Inkscape's SVG format

It'd be pretty great if we could do the svg import within the browser, as a mod.

Easier interface to change the layer lines are on

Currently, in order to move lines from one layer to another you have to copy the lines, delete them, and paste them to the other layer. It's annoying and unnecessarily complicated. It'd be great if the Line Metadata mod could get the list of layers and make a drop-down for selecting a layer to move them to.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.