Goal is to fix problems with translatino exporting in some edge cases,
specifically:
- If a mod has compatibility-type submod that depends on another mod and
changes some strings, game only exports modified strings (discovered
with Ruins mod)
- Since 1.8 development is starting to get new features, including
modding changes, we no longer can use same vcmi build to validate both
1.7 and 1.8 mods. This change allows us to keep both 1.7 and 1.8 builds
in same PPA, allowing mod validation CI to select one depending on
active branch.
Changes:
- Game will now correctly turn off another mod for second re-run of
automated export, allowing to correctly export both changed and original
strings
- Removed 'debian' directory from root, Ubuntu packaging files are now
in 'packaging' directory,
- Ubuntu PPA build will now generate two packages: 'vcmi' and 'vcmi-1.7'
(soon to be changed to 1.8). This allows to explicitly install specific
vcmi branch via versioned package, or install latest version via 'vcmi'
package
- Replaced several compatibility branches with Ubuntu 22.04 and 24.04
packaging overrides with different set of files in 'packaging' directory
Current plan is:
1. Build new packages for 1.7 on daily PPA, using master branch + this
commit
2. Rebase this commit onto 1.8/develop, update packaging rules, and
switch PPA to 1.8
3. Modify mod workflow to install either 1.7 or 1.8 build depending on
active branch
Better version of translation exporting logic. Compared to existiing
version it:
- places generated json's in same directory structure as recommended for
mods (`modname/Content/configtranslation/language.json`). Files are
placed in same directory before (`exported`) to reduce chance of
information loss on overwrite
- (mostly) correctly handled mods that overwrite strings from another
submod of the same mod. For now only simple cases are handled (within
same mod, and without long overwrite chains), which seems to be
sufficient for existing mods
New translation is done by server (vcmiserver / VCMI_Server.exe) and not
by client command - this is due to reloading of library in runtime which
at the moment can't be done on client, especially during ongoing game