Closed 20kdc closed 6 months ago
So there was a comment that I had here detailing my plan to deal with needing to generate ZIP archives for EasyRPG Player. It turns out that I misinterpreted the blogpost. Sorry for any inconvenience. Still, I will note that the changes in Android 11's (not EasyRPG's, mind) policy pointed out by https://blog.easyrpg.org/2023/04/easyrpg-player-0-8-paralyze/ will be a significant problem for R48 if they are applied to sideloaded applications.
Alert In Regards To R48 Compatibility With Changes Made To Android (Revised)
I've kind of embarassed myself a bit with a horribly incorrect version of this alert based on misinterpretations, so let's try again.
So if you've read https://blog.easyrpg.org/2023/04/easyrpg-player-0-8-paralyze/ you may have an inkling of what this is all about.
In short, the kinds of applications that are allowed to directly access storage (i.e. `/sdcard/`) are being limited by Play Store policy.
First and foremost. This doesn't affect R48 that much so long as it stays *Play Store* policy. R48 was not and will likely never be distributed via the Play Store.
But if things do go wrong:
The good news is that EasyRPG Player appears to have moved mountains on their end to make sure that should stay working.
The bad news is that moving those mountains is a bit awkward for R48. R48 requiring a low minimum Android version limits access to APIs - including those APIs needed to stay compliant with the requirements of later Android versions.
And R48's state of being an application that works on both desktop and tablet makes this awkward anyway. Keeping this testable is difficult.
If this becomes a real problem, it might still be fixable. But there will be issues, and there may end up being a minimum version bump at the end of this.
Hopefully I got the facts right this time, - 20kdc
Kicking some "risky" stuff here to v2.0 like the UIFlowLayout stuff. v1.6 ship date should be ~31st Dec.
Need to finish up testing on Android and deal with the JUnit "Grand" tests, but then it's release time
:tada:
Chances are this wishlist will never be fulfilled, like, ever. But it'd be nice.
Ok, so in order to make this practical, this needs to be grouped into v1.6 stuff and v2.0 stuff
v1.5-maintenance (aka v1.6) stuff
Stuff here will either get in the way of branch maintenance if not applied early or is relatively inconsequential.
UI
Avoid Frenyard's "infinite" value. Instead, add "For W get H", "For H get W" operations. getWantedSize becomes non-dynamic with respect to input size, it represents the(SIZE_UNLIMITED, SIZE_UNLIMITED)
case. Importantly, this means layout loops should never happen. Relayout calls are descend-only in the Frenyard layout model, with limits declaring the reverse, rather than the iterative constraint solver that GaBIEn used. If a panel's subelements change as a result of something it's doing on layout, it needs to keep that contained.runLayoutLoop
) to adjust the layout until it stabilized (or didn't). The problems this caused with UIScrollLayout were "fixed" with even more custom code: https://github.com/20kdc/gabien-common/blob/bcaacc89ae9bb10872dd50ff5ca449d38de0543d/ui/src/main/java/gabien/ui/UIScrollLayout.java#L60Media: Imaging
should be better supported & occupy proper position in image cacheMedia: Audio
stb_vorbis
with modifications)General Fixes
RPG::MapInfo.@music_type
does. See issue 59ZIP file generation (? depends on how things actually go with Android 11)Little Refactors that can be done before the point of no return where v1.6 and v2.0 completely break code compat.
"Pizzazz": Theming system should be using PVA