1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-14 10:12:59 +02:00
Commit Graph

143 Commits

Author SHA1 Message Date
Ivan Savenko
21f6815187 Fix loading of 1.5 and older 1.6 saves 2024-12-01 16:00:09 +00:00
Ivan Savenko
3fccd85500 Use mod ID instead of translated mod name for console output 2024-11-27 14:04:03 +00:00
Ivan Savenko
a80f65439b Do not inform of mod update if remote version is older than local 2024-11-26 21:05:18 +00:00
Ivan Savenko
8a0d327ac2 Fix uncaught exception if newly updated mod has removed a submod 2024-11-26 21:04:56 +00:00
Ivan Savenko
eab03c24ee Fix installation of mods with complex dependencies such as H3Evo 2024-11-26 13:56:29 +00:00
Ivan Savenko
1678b137d8 Automatically enable all applicable compatibility patches 2024-11-26 13:55:46 +00:00
Ivan Savenko
6bad88ba99 Fix display of active submods of disabled root mods 2024-11-26 13:55:46 +00:00
Ivan Savenko
4aaa6c1eb4 Fix enabling and disabling of mods 2024-11-26 13:55:46 +00:00
Ivan Savenko
34a59d049b Implement remaining todo's, fix handling of mods with invalid
dependencies
2024-11-26 13:55:46 +00:00
Ivan Savenko
fef19f4846 Fix installation of multiple mods at once 2024-11-26 13:55:46 +00:00
Ivan Savenko
00f97fb8cd Allow mod operations such as install when possible 2024-11-26 13:55:46 +00:00
Ivan Savenko
879eb2184f Implement some TODO's, fix sonar warnings 2024-11-26 13:55:46 +00:00
Ivan Savenko
85ffb449ca Fixes mod install / uninstall / updates 2024-11-26 13:55:46 +00:00
Ivan Savenko
30ed066cea Restored mod uninstall functionality, restored translatable mod fields,
added more fields to translatable list
2024-11-26 13:55:46 +00:00
Ivan Savenko
2fcda48c65 Implemented enabling and disabling of mods with dependencies resolving 2024-11-26 13:55:46 +00:00
Ivan Savenko
37e975036c Restored display of enabled and disabled mods in Launcher 2024-11-26 13:55:46 +00:00
Ivan Savenko
ac3aecba81 Reimplemented computation of installed mod size for Launcher 2024-11-26 13:55:46 +00:00
Ivan Savenko
f72fb53117 Implemented missing mod description fields 2024-11-26 13:55:46 +00:00
Ivan Savenko
41466238fc Cleanup code 2024-11-26 13:55:46 +00:00
Ivan Savenko
87a665fb7f Restored all disabled mod functinality that was used by client 2024-11-26 13:55:46 +00:00
Ivan Savenko
67fdd14dca Cleanup 2024-11-26 13:55:46 +00:00
Ivan Savenko
06ce71087e Restored mod list display functionality in launcher 2024-11-26 13:55:46 +00:00
Ivan Savenko
f8724b9558 Reworked mod handling in Launcher in order to unify code with lib 2024-11-26 13:55:46 +00:00
Ivan Savenko
4945370fe3 Implemented validation of preset - removal of non-existing mods,
addition of newly installed mods
2024-11-26 13:55:46 +00:00
Ivan Savenko
ba9e3dca9d Mod management rework, part 1
- Replaced CModInfo class with constant ModDescription class
- Simplified mod loading logic
- Extracted some functionality from ModHandler into separate classes for
future reuse by Launcher
2024-11-26 13:55:46 +00:00
Ivan Savenko
c57120f0dd Initial support for mod presets system 2024-11-26 13:55:46 +00:00
Ivan Savenko
a2c2b28dfe
Merge pull request #4859 from IvanSavenko/map_encoding_fix
Fix selection of encoding from maps
2024-11-06 22:00:59 +02:00
Ivan Savenko
ee88cfa150 Fix selection of encoding from maps
Fixes typo from previous PR
2024-11-01 13:40:29 +00:00
Ivan Savenko
6056d385ed Always load json configs from mod that references it
This should fix rather common problem with mods, where two unrelated mods
accidentally use same file name for a config file, leading to very unclear
conflict since this result in a file override.

Now all config files referenced in mod.json are loaded specifically from
filesystem of mod that referenced it. In other words, it is no longer
possible for one mod to override config from another mod.

As a side effect, this allows mods to use shorter directory layout, e.g.
`config/modName/xxx.json` can now be safely replaced with `config/
xxx.json` without fear of broken mod if there is another mod with same
path to config. Similarly, now all mods can use `config/translation/
language.json` scheme for translation files

Since this is no longer a problem, I've also simplified directory layout
of our built-in 'vcmi' mod, by moving all files from `config/vcmi`
directory directly to `config` directory.

- Overrides for miscellaneous configs like mainmenu.json should works as
before
- Images / animations (png's or def's) work as before (and may still
result in confict)
- Rebalance mods work as before and can modify another mod via standard
`modName:objectName` syntax
2024-10-31 14:49:11 +00:00
Ivan Savenko
e714a02063
Merge pull request #4849 from IvanSavenko/map_encoding
Better handling of encoding detection for maps and campaigns
2024-10-31 15:07:36 +02:00
Ivan Savenko
22f517686d Better handling of encoding detection for maps and campaigns
Now VCMI will use either preferred language or install language to load
maps and campaigns that are part of "core" mod, or, in other words -
placed in Maps directory of H3 data (like most of manually downloaded
maps and campaigns are)

If game data is in English, then game can safely use encoding of player-
selected language (such as Chinese) to load maps. After all, both GBK
and all Win-125X encoding are superset of ASCII, so English map will
always load up correctly.

Maps that are part of a mod still use mod language as before - it is up
to mod maker to correctly set up mod language.
2024-10-30 11:54:35 +00:00
Ivan Savenko
c1c9e2e4f0
Merge pull request #4820 from kdmcser/softDenpendency
add support for soft dependencies
2024-10-30 13:31:46 +02:00
kdmcser
5c5bac12eb
Update lib/modding/CModHandler.cpp
Co-authored-by: Ivan Savenko <saven.ivan@gmail.com>
2024-10-29 00:35:32 +08:00
kdmcser
123f3923d3
Update lib/modding/ContentTypeHandler.cpp
Co-authored-by: Ivan Savenko <saven.ivan@gmail.com>
2024-10-29 00:35:03 +08:00
Ivan Savenko
565c02d61c Added 'translate missing' command for convenience 2024-10-26 12:54:35 +00:00
kdmcser
3b72594743 add support for soft dependencies 2024-10-26 19:15:12 +08:00
Ivan Savenko
604e3b5c67
Merge pull request #4763 from IvanSavenko/herohandler_split
Split CHeroHandler.cpp/.h into 1 file per class
2024-10-14 19:05:48 +03:00
Ivan Savenko
10ad0fc760 Split CHeroHandler.cpp/.h into 1 file per class
All parts of CHeroHandler.cpp are now in lib/entities/hero
Adjusted includes to use new paths
No functionality changes
2024-10-13 14:01:09 +00:00
Ivan Savenko
a8e84c55f6 Fix some of the new warnings from sonarcloud 2024-10-11 10:45:29 +00:00
Ivan Savenko
2399a5a765
Merge pull request #4712 from IvanSavenko/detect_conflict
Detection of potential conflicts between mods
2024-10-07 17:57:52 +03:00
Ivan Savenko
8e4152bc81 It is now possible to define objects directly in mod.json instead of
using path to file with object definition
2024-10-06 19:42:15 +00:00
Ivan Savenko
1488629628 Add simple support for translation of strings that were changed by
another mod
2024-10-06 19:42:15 +00:00
Ivan Savenko
b85ccccb37 Minor refactoring of translations:
- removed unsuccessful and broken validation of translations
- pass JsonNode when registering strings to provide information on mod
source
2024-10-06 19:42:15 +00:00
Ivan Savenko
66fdad145c Added an option to configure validation level in launcher 2024-10-06 19:21:33 +00:00
Ivan Savenko
3e3f842fbe Respect dependencies when checking for filesystem conflicts 2024-10-06 17:20:58 +00:00
Ivan Savenko
d849e53499 Implement detection of mod compatibility patches 2024-10-06 16:11:32 +00:00
Ivan Savenko
d0aba56a5e Analyze json object modifications to detect mod conflicts 2024-10-06 13:58:41 +00:00
Ivan Savenko
2439d176a0 Analyze filesystem of mods to detect potential mod conflicts 2024-10-06 13:58:41 +00:00
Ivan Savenko
8225eb454e Added GameSettings to gamestate, potentially allowing to define game
settings per map (or in random map template)
2024-09-05 15:16:27 +00:00
Ivan Savenko
36c1ed670f Support for configurable town fortifications
Removed most of hardcoded checks for fort level or for presence of fort/
citadel/castle buildings.

It is now possible to define which parts of town fortifications are
provided by town buildings

Configuration for H3-like fortifications is provided in
buildingsLibrary.json and will be used automatically by mods as long as
mods have buidings named "fort", "citadel" and "castle".

Alternatively, mods can separately define:
- hitpoints of walls (shared value for all sections)
- hitpoints of central, upper and lower towers (separate values)
- presence of moat
- shooters for each tower (separate values)
2024-08-28 19:42:14 +00:00