NOTE: This system is currently in alpha and will be on sale until the beta! Because of this there will be bugs and missing features. Please report any issues / suggestions to firstname.lastname@example.org or post them in this forum topic, thanks!
This is a Local Windowing Interface system that aims to give GameMaker: Studio 2.3 easy-to-use but feature rich interface features!
The system is designed to auto-scale and adjust for multiple screen sizes, render only when updates occur, and handle all input events through a passive signaling system. You need only spawn your element and set some properties to be well on your way. The combined anchoring / margin system handles positioning all elements in their proper places.
Not all elements are yet implemented or implemented fully. The currently implemented elements / features are as follows:
The entire system is based on a tree structure. You can attach elements together and each element will base its position and scale according to the parent. All children are aware of changes to the parent so features like disabling an element, toggling visibility, changing theme, etc. is auto-managed for the children as well.
The system knows when elements update as well thus only calculating position updates and re-rendering pieces that are necessary.
Input events are handled through 'signals'. Each element contains a signaler that you can attach a method to. So, for example, you can attach a popup's 'set_visible' function to a button's 'pressed' signal so that the popup becomes visible whenever the button is pressed.
Lastly is the grouping system. You can create an LWIGroup structure and attach it to any element. Certain elements will behave differently depending on if they are in a group. For example, checkboxes will convert to radio buttons. Button-based drop-menus will know to auto-open when hovered over if one in the group is open, etc.
There are plans to greatly expand included elements, albeit it is quite simple to create your own custom elements by inheriting any one of the included structs. Some further planned elements / features are as follows:
I will be expanding existing systems further as well.
This has currently been officially tested on Windows and Linux. HTML5 and, hopefully, Android will be supported down the road.
I generally include external documentation for my extensions but my doc generator requires an update for GameMaker: Studio 2.3. Until I can rewrite it there will be no online documentation. However, I have included extensive function / struct headers, a few notes to introduce you to the system, and a heavily-commented example setup.
This project is currently in alpha because I want to get feedback! If you use the system and are really itching for a feature or think something could be designed a bit better, please let me know! I will be actively monitoring requests.
Please see this post for the change log.