Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sasszem/yalg
Yet another Löve2d GUI
https://github.com/sasszem/yalg
Last synced: 6 days ago
JSON representation
Yet another Löve2d GUI
- Host: GitHub
- URL: https://github.com/sasszem/yalg
- Owner: Sasszem
- License: mit
- Created: 2020-04-27T13:24:35.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-08-25T21:58:53.000Z (about 4 years ago)
- Last Synced: 2024-08-02T06:21:25.854Z (3 months ago)
- Language: Lua
- Size: 154 KB
- Stars: 10
- Watchers: 3
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-love2d - YALG - A very simple, cross-platform, reactive UI for last minute UIs. (UI)
README
# YALG
Yet another Löve2D GUI frameworkMy goal was to make a simple way to build GUI interfaces with Löve2D.
My goal was **NOT** to build a fancy or extensive GUI lib, just a quick way of building simple menus with a few buttons. Of course, it can be "abused" to do more (just look at the config example!).## About the framework
### Where it shines
- cross-platform - no external libs, just plain old Löve2D + Lua
- simple - just a few basic widgets, no need to search a very long documentation
- reactive - no manual placing of elements, the framework handles it
- hackable - just look at the config-example or the games I used it in
- retro look - simple looks with edges and cornersIt's perfect for gluing in a play game / highscores / exit menu at the last minute.
### Where it fails
- simple - it does not even have a textbox, you have to hack that together
- reactive - placing the elements where you want them can be hard
- retro look - it might not fit your game's themeYou might want to try something else if you want the best-looking UI with complex features.
Look at the [screenshots](screenshots) folder for some example looks!
### Project goals:
- Simple
- Flexible
- Not TOO resource heavy
- Finish project quick (I tend to abandon my projects, so before I got bored on this...)
- "Reactive" GUI - no manual placement of the widgets should be required
- Easy to extend
- pure LÖVE2D - no external dependencies, portable even to android### Project status
I consider this "finished", I do not plan any more features in this project. I am still open for issue reports & maybe even to some ideas.
I used this lib in two other projects, [13](https://github.com/sasszem/13) and [crossfire](https://github.com/sasszem/crossfire) sucessfuly.## Documentation
Check out the [tutorial](TUTORIAL.MD) for a quickstart!Check out the [internal api documentation](DOCS.md) for implementation details.
### Known gotchas
- spaces in the beginning or end of lines count to the size required
- if you re-use styles in a table, modifying that table later does NOT modify the styles
(this is intentional, this way you can modify each individual element separately)### Conclusion - what'll I do differently next time
(note to self and a lesson for other idiots doing stuff like this)
I'm already planning another framework in my head, so expect it in the next 1-5 years.
It might not be in Lua and Löve at all.
Some things I'll do differently:
- do NOT pullute global namespace
- somehow make owerflows work
- more, MORE event handlers - update, resize, focus in/out, selected, deselected, create, destroy...
- maybe move from declarative style to layout description files (or might as well just write a HTML renderer)
- more built-in widgets
- built in colors
- easier style switching
- widget protoyping
- better container division - the fractional pattern I used does not work that well