d35058598c0119b6e42aaeafb902a516563a980a
scriptvmtypes.h, scriptcompiletypes.h and scriptnode.h each crammed several unrelated struct definitions into one file, unlike the rest of dusk (see src/dusk/display or src/dusk/rpg/battle), which always gives a type its own file named after it, with other types reached by an explicit include or a forward declaration. - scriptvmtypes.h: scriptvmfunction_t moves into scriptvmfunction.h (next to the functions that already work with it), scriptvmname_t into scriptvmname.h, scriptvmhandler_t into scriptvmtable.h, and scriptvmimage_t gets a new scriptvmimage.h. scriptvmtypes.h keeps working as a thin re-include umbrella for the ~45 vm files that reach into several of these at once, the same role scripttypes.h already plays for the base types. - scriptcompiletypes.h: scriptlabel_t moves into scriptbuilderlabel.h, scriptloopcontext_t into scriptcompileloopcontext.h, scriptincluderesolver_t into scriptcompile.h, and the big scriptbuilder_t gets a new scriptbuilder.h. Breaking the resulting include cycle needed scriptbuilderlabel.h and scriptcompileloopcontext.h to forward-declare scriptbuilder_t/scriptlabel_t rather than pull in full definitions they only ever use by pointer, and scriptcompile.h to define scriptincluderesolver_t before including scriptcompiletypes.h instead of after. - scriptnode.h: scriptfuncnode_t (a function declaration, not a kind of expression/statement node) moves into a new scriptfuncnode.h. Also gives scriptbuilder_t and scriptlabel_t proper struct tags (previously anonymous, which doesn't allow forward declaration) to match the project's _s tag / _t typedef convention from the previous pass. Co-Authored-By: Claude Sonnet 5 <[email protected]>
Dusk
RPG Game Project, small and able to run on a PSP.
Building
Each build target has different requirements. You can take a look at the git workflow to see how the builds are done for each target. In addition, for accessing the editor and building the game on your host system, install the following packages, depending on your system;
Fedora;
sudo dnf install git make gcc cmake python python-polib python3-pillow python3-dotenv python3-numpy python-qt5 python3-pyopengl SDL2-devel zlib-devel libzip-devel bzip2-devel openssl-devel lzma-sdk-devel xz xz-devel lua-devel libmad-devel
libmad-devel (used for MP3 decoding) is GPL-licensed and ships in the
RPM Fusion free repository rather than Fedora's
base repos - make sure RPM Fusion is enabled first.
Ubuntu;
sudo apt-get install git build-essential gcc python python-polib python3-pillow python3-dotenv python3-numpy python3-pyqt5 python3-opengl libmad0-dev
Arch Linux;
sudo pacman -S git base-devel gcc python python-polib python-pillow python-dotenv python-numpy python-pyqt5 python-opengl libmad
Languages
C
89.7%
JavaScript
3.5%
CMake
3.1%
Python
2.1%
HTML
0.8%
Other
0.7%