I’m officially putting Balleg (and the engine that runs it, Bolero 2) on hiatus until I get the UI stuff under control. This has effectively been the case since about March or so.
Devlog posts in 2023 will be tersely written, maybe just a bulleted list like the one that follows. End-of-year reviews will be limited to a plain list of released libraries and projects. Maybe I’ll write some general articles or reviews (though don’t hold me to it).
Log
- Worked on joystick manager and abstract input module. These will eventually replace the equivalent source modules in Bolero 2.
- Added joystick and gamepad events to ProdUI.
- Cleaned up ProdUI widget definition system to accept a single table (from
local def = {base = {}, meta = {}}
to justlocal def = {}
). - Reduced ProdUI widget def types from three (“def” table, “fab(ricator)” function, “plan” table) to just one (“def” table). The fabs and plans are not bad ideas, but this was the wrong place to implement them. They should be higher up in the system.
- Started a “User Events” system for attaching user application logic to select widgets, either as a single callback function or as a table-sequence of callbacks.
- Added “base/generic.lua”, a clean-slate widget that can be used for special-case or bespoke widgets without having to load a definition.
- WIMP Root:
- Fixed issues related to incorrect restoration of thimble (virtual input focus) when creating and dismissing pop-up menus.
- Implemented a Tool Tip (or whatever it’s called) caption.
- Two modal frame implementations: one at the root level, and one where a single frame blocks access to another frame.
- Added ctrl+tab and shift+ctrl+tab to step through window-frames.
2022 Releases
- GaleOps: Load GraphicsGale .gal files in LÖVE
- xmlToTable: Converts a subset of XML to nested Lua tables.
- StringReader: A state wrapper for Lua string parsing functions.
- utf8Tools: Some UTF-8 utility functions for Lua.
- It’s been a while since I looked at this, and I’m not sure if it really provides anything useful above and beyond what’s in the utf8 library in Lua 5.3 and LÖVE, or if I was just being stubborn in writing my own thing.
- tableToString: A Lua table serialization library, intended for outputting table constructors with fields in a specific order.
- quickPrint: A text-printing library with virtual tab stops.
- idops (ImageData Operations): Miscellaneous functions for working with LÖVE ImageData, specifically pixel art ImageFont graphics.
- fontSet: Selects and scales ImageFonts and BMFonts relative to a TrueType font size. Intended to assist with UI scaling.
- Inspector Kern: A quick-and-dirty utility for checking if a TrueType font exhibits kerning offsets when used in LÖVE 11.4. I want to return to this as a general-purpose font test application for LÖVE 12, once ProdUI is mature.
- love_snippets:
- 9Slice Example (Obsolete! See: QuadSlice)
- Line Stipple
- A pretty lazy solution to Incremental Text Printing
- An example of converting LÖVE coloredtext tables back to string form
- An example of tracking the state of the ctrl, shift, alt and gui keys as their associated LÖVE keypressed and keyreleased events trigger.
- CursorMgr: A priority-based mouse cursor manager.
- MouseCursorPack: CC0 cursors to go with LÖVE and/or CursorMgr. They’re, uh, not that good, but I think it was worth attempting.
- QuadSlice: A 9-Slice drawing library.
- Inspector Key: A US QWERTY keyboard diagram that shows the assigned keyConstants for each key, and if they are considered held.