* move console stuff from loader
* compile platform sources only per platform
* move ipc from loader
* move updater from loader
* remove Loader::didLastLaunchCrash
* remove platformdata from loader
* move updaters events and filters too
very breaking change! though not annoying to upgrade. this change was
done because matjson is not really meant to be a "do everything" json
library, so taking up the very common `json` identifier was troublesome.
The previous library we used (picosha3) returned a wrong hash for one
particular file. Though this was quite rare (we only found 1 such file),
it was a bug with the library regardless.
The current sha3 library now comes from
https://github.com/stbrumme/hash-library
- add ability to automatically create a draft release
- change windows to windows-latest
- unify "Unzip CLI" and "Add CLI to Path"
- remove out folder
- prevent unnecessary files from generating on windows
- leave resources in platform-specific artifacts
- unify "Package MacOS" and "Package Windows"
- use steps outputs instead of env variables for storing version/hash
compilation still won't work, pending implementations for gdstl/codegen/tuliphook. the first two should be mostly done already. may also be good to get FileWatcher, crashlog, and the file picker implemented but they aren't necessary
the libcurl.a and libssl.a files were built using
https://github.com/ibaoger/libcurl-android. they are placed in the link/android folder because putting them in the link folder confused the macOS build.
once built, the geode binary should be loaded after nativeSetApkPath is ran (otherwise the directory setup crashes). in the future it would be nice if the internal mod also did save data path redirection, as base GD is incapable of doing this
Co-authored-by: mat <26722564+matcool@users.noreply.github.com>
- create_geode_file now redirects to a new function called setup_geode_mod
- setup_geode_mod auto-links loader
- setup_geode_mod invokes CLI (if v1.4.0+) to automatically check your dependencies and install them + link their headers and libs to your project
- fix Result::expect not working on non-copiable types
- add in-memory functions for file::Zip and file::Unzip
- ComparableVersionInfo now always returns false if major versions dont match
This is in attempt to make compile times better, as the old json library
was quite slow to compile due to many template instantiations and such a
large header.
macOS tests have shown build times from 610s to ~390s, about a 1.5x
speedup
Co-authored-by: camila314 <47485054+camila314@users.noreply.github.com>
this removes submodules and external libraries in the code in favor of
importing them as CPM packages. CPM_SOURCE_CACHE is recommended as
codegen has to readd two of the same dependencies
- rename LayerBG.hpp to General.cpp
- add addListBorders UI function for adding comment borders to a list
- change VersionInfo parsing to use streams
- remove VersionInfo::validate and instead just have VersionInfo::parse
- remove scnlib
- rewrote Loader to have a public loading API
- moved logging away from Loader
- moved texture path handling away from Loader into CCFileUtils, added new functions there for that
- bumped version to v0.7.0
- moved ModInfo to its own header
- added early loading support through mod.json instead of loader stuff
- wrote a custom Unzip implementation (essentially same as ZipUtils except with a much more simple and clean API)
- renamed `src/load` to `src/loader`
- other stuff i prolly forgor
- move all platform sources to one central folder under src/platform/name
- don't add obj-c sources on windows or platform files from other platforms on all platforms
- loader checks if resources are correct at startup, if not, downloads them and replaces
- add sha256 to hash
- change hash to use paths instead of strings
- cmake rework; GeodeFile.cmake now checks CLI version
- add optional `DONT_INSTALL` argument to `create_geode_file`
- test mods are now not installed by default
- add package_geode_resources_now command for packaging resources at configure time and creating a header with their calculated hashes
supports user objects again through proxies + string IDs for nodes +
fix nightly folder in cmake + fix codegen not hooking cocos2d funcs +
add every missing virtual to GeometryDash.bro + tons of other addresses
to Popup and move setup to be last in init + add
GEODE_PLATFORM_SHORT_IDENTIFIER macro for the platform's identifier in
GitHub release zips + add GEODE_VERSION to cmake + move unzipTo from
Index to be an exported util in file namespace + add mod resources
directories in accordance with new CLI