Commit Graph
100 Commits
Author SHA1 Message Date
Ivan Savenko 5ec750e0f5 Created changelog entries for next release. Please keep it up-to-date. 2014-03-09 13:26:03 +00:00
Ivan Savenko d2ae847ecf - files in local directories (saves & configs) now always have higher
priority than mods. Fixes #1685 and #1733
- fixed possible crash on exit in dispose() function
- (vcmibuilder) fixes problem with partial mp3 -> ogg conversion
2014-03-08 16:05:23 +00:00
Ivan Savenko 5cbec833c2 - (linux) XDG filesystem support
BIG NOTE TO LINUX USERS
All user data has been moved according to XDG specs:
- Game data (H3 files and mods) and saves: from ~/.vcmi to ~/.local/
- Temporary files, including logs: from ~/.vcmi to ~/.cache/vcmi
- Config files: from ~/.vcmi/config to ~/.config/vcmi

For compatibility VCMI will read game data from ~/.vcmi as well but this
is temporary behavior and will be removed
2014-03-04 14:51:10 +00:00
Ivan Savenko e101caa997 Fixed possible buffer overflow on visiting tavern
Introduction of unicode made fixed-length buffers too short in some
cases
2014-02-26 21:20:36 +00:00
Ivan Savenko 78609871ae bugfixing:
- fixed parsing of campaign bonuses (conversion to building ID)
- CONTROL event condition can be also fulfilled by allies
- fix for crash on opening exchange window in Russian version
2014-02-26 17:32:42 +00:00
Ivan Savenko 5563db9145 - my part of chagelog + some formatting
- version bump on Linux side
- enabled PCH by default in cmake
2014-02-26 14:19:14 +00:00
Ivan Savenko 8d36bcabce Split registerTypes into multiple files, now in lib/registerTypes
directory in order to reduce huge memory usage by gcc
2014-02-24 19:57:33 +00:00
Ivan Savenko b5568edcc0 fixed compilation with gcc/clang
fix for #1699
2014-02-19 07:27:41 +00:00
Ivan Savenko 48d6e2cd59 - move campaigns description into new config file, campaignSets.json
- campaigns parser uses binary reader, fixes #1711
- fixed description of change resolution button
2014-02-14 22:46:06 +00:00
Ivan Savenko 8d178fbcf5 Minor fixes:
- fog of war will be initialized after bonuses are set (needed if heroes
have scouting or arts with sight bonus)
- victory condition "control all dwellings" also requires golem factory/
- it is possible to dismiss troops during exchange between heroes
2014-02-09 19:47:23 +00:00
Ivan Savenko 7f07a30d7d More fixes for map-specific crashes, fixes #1427 and #733
- if special victory condition is present AND there is only one player
normal victory condition will be disabled
- added new triggered condition, constant value
- if target of CONTROL/DESTROY condition is removed from map, triggered
condition will be replaced with constant
- fixed randomization of armies with random stacks
2014-02-09 12:10:02 +00:00
Ivan Savenko e6f433795b - fixed some crashes on staring a map/campaign 2014-02-08 21:05:24 +00:00
Ivan Savenko 562dc02b3b - fixed crash on decompressing some files from gzip stream (reported on
forums)
2014-02-08 10:30:10 +00:00
Ivan Savenko 77946e88f1 - fixed Adriane special. Should make Playing with Fire campaign playable 2014-02-02 12:45:08 +00:00
Ivan Savenko 94a6e02107 - found yet another missing victory condition, fixes 1684 2014-02-02 11:05:05 +00:00
Ivan Savenko 14535c1c7b - fixed crash on finishing a campaign. 2014-02-01 14:32:09 +00:00
Ivan Savenko 6e252aa0d5 - metadata will be printed before node value, fixes #1678 2014-02-01 13:23:12 +00:00
Ivan Savenko 27be6a8f13 - new mods (not mentioned in modSettings.json) will be enabled by
default
2014-01-30 14:51:15 +00:00
Ivan Savenko 45c186bba8 some code cleanup in launcher, tweaked appearence of mod list 2014-01-30 12:35:17 +00:00
Ivan Savenko 3779a54ddd - probably fixed 1671
- fixed missing loss condition in Birth of Barbarian
- fixed some bugs found by cppcheck
2014-01-30 11:08:37 +00:00
Ivan Savenko 47c91e03b5 - fix to last commit
- workaround to crash on disabling auto-battle (somehow client
"remembers" one command given during auto-battle)
2014-01-14 14:34:08 +00:00
Ivan Savenko c5b74a2dce Miscellaneous fixes:
- proper block of "back" button in campaign menu.
- proper block of AI switch in battles
- vertical garrisons can now be attacked from top
- better UI logging, vcmi will print to log file all pressed buttons
- server will not try to build already existing building
2014-01-13 17:44:21 +00:00
Ivan Savenko fb5c9fc972 - creatures availability tests no longer check for built buildings.
Fixes #1650
- do not crash if town has 0 creatures on some dwelling level
- do not crash if dwelling for some level is not present in town at all
2014-01-11 18:12:09 +00:00
Ivan Savenko bc1e726be4 - fixed crash on loading modsettings.json from 0.94 2014-01-09 20:15:32 +00:00
Ivan Savenko 1f325bafb3 fixes #1619 and #1647
- removed some no longer needed code from map handler
- blocked "back" button on campaign map screen if some of scenarios are
already completed
2014-01-05 13:45:44 +00:00
Ivan Savenko 2c4c964a45 Large rewrite of adventure map objects:
- replaced CDefObjInfo with ObjectTemplate class
- ObjectTempate is a direct member of objects instead of pointer with
shared ownership across CMap, handler and game objects
- simplified handling of objects that can change appearance (e.g. towns)
- all object queries regarding object appearance/blockmaps use h3m pos
instead of relative positions
- removed need of modhandler::reload
- cleanup of some old code
2014-01-02 23:48:38 +00:00
Ivan Savenko 2b9e074d54 - implements level limit (Mantis #1620)
- added workaround to weird bug where vcmi fails to find objects for
win/loss conditions
2014-01-01 16:12:53 +00:00
Ivan Savenko cd8a0c01e4 Data for campaign win/loss conditions. All campaigns should now have
correct conditions.
All custom conditions are now validated using schema.

Note that some of scenarios may not work due to instant win/loss, mostly
because some placeholders fail to import (Mantis #1643)
2014-01-01 13:30:31 +00:00
Ivan Savenko 7e02f6b670 Support for overriding victory/defeat conditions from h3m map or
campaign:
- new file MapFormatJson that implements small subset of Json map
format, as described on wiki
- vcmi will read overrides from file config/mapOverrides.json (currently
empty)
- Json writer for logical expressions

TODO: write data for map overrides
2013-12-30 23:09:58 +00:00
Ivan Savenko a8b9258840 missing dll_linkage 2013-12-29 14:35:38 +00:00
Ivan Savenko 96cc1b0e75 fixed slow loading of map selection window 2013-12-29 12:18:02 +00:00
Ivan Savenko 0c5be52a42 Win/loss conditions based on logical expressions, yet another large
changeset:
- victory/defeat will be detected using triggered events
- vcmi will convert h3 conditions into set of triggered events
- it is possible to either change number of days without towns or even
remove this loss condition completely
- possibility of custom win/loss text and icons in pregame (no longer
connected to win/loss conditions)

Still missing:
- No interface to pass custom events/victory conditions into the game 
- AI would benefit from improvemets (handle all victory conditions,
select best one to fulfill)
- You have X days till defeat message still hardcoded to 7 days
2013-12-29 11:27:38 +00:00
Ivan Savenko f6c1dace6c Minors:
- By default, cmake will keep debug info
- removed warnings from adventure map infobox (part of #1636)
- adventure map infobox will refresh on artifact changes (part of #1636)
- moved terrain music files to terrains.json file
- player should act before AI in all games, not only campaigns
2013-12-28 18:57:08 +00:00
Ivan Savenko 7806bda663 fixed possibly duplicated skills on levelup 2013-12-23 16:05:19 +00:00
Ivan Savenko 41cb1603e1 Fix for #1624 :
- recreate adventure map interface on each scenario (to make sure that
there is no garbage data from prev. game)
- added check to avoid such situations in future
2013-12-20 15:00:48 +00:00
Ivan Savenko 29f4a12814 - fixed some evil memory leaks
- fixed recursive dependency of castles
2013-12-19 19:43:16 +00:00
Ivan Savenko 881a7cf862 - added check to avoid recursion in AI town building code
- restored previously missing AI shield during AI turn
2013-12-19 17:29:35 +00:00
Ivan Savenko 7d7e65a316 changes in hero class format:
- new property: affinity (might/magic) since in mods it is impossible to
rely on odd/even numeric indexes
- property commander is now part of hero class
2013-12-13 18:27:54 +00:00
Ivan Savenko c7899fc14a - improved detection of missing files
Now vcmi will detect situations when file is present in another mod
which is not marked as dependency
2013-12-13 08:53:44 +00:00
Ivan Savenko ed329c5a1f - minor refactoring for filesystem, moved checksum calculation to
loading stage from initialization
- fixes for launcher
2013-12-11 17:12:39 +00:00
Ivan Savenko 5de70ba235 Minor fixes:
- properly re-enable necessary mods during update
- do not crash if building border is fully-colored
2013-12-08 10:07:06 +00:00
Ivan Savenko 6427827b33 Fixed extremely slow parsing of maps directory 2013-12-06 09:13:55 +00:00
Ivan Savenko 122db9963b More string ID's for buildings:
- town hall slots now use string ID's
- converted building requirements to new format
- "upgrades" property from buildings now uses string ID's
- several fixes for improved support of alternative creatures
- removed no longer needed "id" property from structures

Old mods should still work but will produce error messages during
validation
2013-12-04 10:36:39 +00:00
Ivan Savenko b1e638d1af More fixes:
- logical expressions should compile without cpp include
- fixed #1608 and #1610
2013-12-04 03:54:02 +00:00
Ivan Savenko 3d3f93275d Multiple minor fixes:
- fixed starting armies of some heroes, including Bron #1602
- (debian) added vcmi-dbg package with debug information
- proper randomization of hero secondary skills, fixes #1603
- second capitol will show up as disabled immediately #1604
- proper deserialization of boost::variant
- empty file will no longer crash JsonNode parser
- fixed some compiler warnings
2013-12-03 09:03:37 +00:00
Ivan Savenko ee1b0459e6 Extended building dependencies:
- buiding/structure lists must use object format. This may break some
outdated mods.
- generic support for logical expressions that consist from and/or/not
operators.
- string ID's for buidings are now actually used.
2013-12-02 11:58:02 +00:00
Ivan Savenko 27a30b5ff9 - compile fix
- fixed crash if json defines only one creature horde
2013-11-24 11:36:51 +00:00
Ivan Savenko 2b6cdd5f41 - (linux) launcher will be available in OS start menu/launchers as
"VCMI" and client will be present as "VCMI Client"
2013-11-16 18:13:30 +00:00
Ivan Savenko 2b3405fa50 - minor optimizations
- fixed incorrect error reporting in launcher
- set WoG version to "0.0.0" so full version will be installed from repo
in future
- updated debian required packages list
- launcher will be enabled by default
2013-11-14 13:21:09 +00:00
Ivan Savenko 3560bbb7f3 two patches/pull requests from janisozaur
- replace our custom bmap with std::map::at()
- compile fixes for editor
2013-11-12 10:45:42 +00:00
Ivan Savenko f56cccb716 - fixed bug where having towns with less than 16 heroes would result in
invalid random heroes on map start.
2013-11-12 10:09:55 +00:00
Ivan Savenko 29d655c621 Trying to organize mod handler a bit better.
- vcmi will now generate checksum for base game (H3 data)
- only text files in Data in config directories affect checksum
2013-11-11 20:11:51 +00:00
Ivan Savenko f691061d94 A bit improved error reporting for checksum calculation. 2013-11-10 13:43:55 +00:00
Ivan Savenko 29e98b2d51 - modhandler will only validate new, changed or mods that failed
validation last time.
- fixed several issues with modSettings.json file
- some refactoring of modhandler, still needs some work.
2013-11-09 19:10:16 +00:00
Ivan Savenko 55577d0ac4 - fixed missing DLL_LINKAGE
- use precalculated checksum for zip files
- UNUSED macro to silence some warnings
2013-11-09 13:49:36 +00:00
Ivan Savenko dd73573c5c - vcmi can now calculate crc32 checksum of a file
- reorganized internal filesystem structure - all files from one mod are
now grouped in same FS node
- modhandler will now calculate crc32 checksum for each mod
- modhandler now knows validation status of each mod

todo - use checksum to determine mods that have not changed since last
start and disable validation for them.
2013-11-08 20:36:26 +00:00
Ivan Savenko ee6cdbeffe went through the rest of cppcheck warnings, mostly harmless 2013-11-07 12:48:41 +00:00
Ivan Savenko 71d6b0fea9 - Fixed some warnings from cppcheck
- Minor improvements to JSON validation
- Cleanup in SDL_Extensions.cpp
- Implemented new propery for creature format: idle animation duration
- Disabled idle animation of some of conflux creatures (was clearly
broken)
2013-11-06 13:42:58 +00:00
Ivan Savenko 0e3eae3095 patch from KroArtem 2013-11-03 12:51:25 +00:00
Ivan Savenko c4716d0a9a - reordered files in cmake so files with long compile times will be
compiled first.
- changed format of modSettings.json, VCMI should properly update file
on the first run.
- implemented property "defaultTavern" that acts as default value for
"tavern" entry in hero class and town formats.
2013-11-03 12:07:23 +00:00
Ivan Savenko 6cb3cb006d Several minor fixes/features
- moved all traslatable strings into one json file, removed threats.txt file
- implemented "spellbook animation" option
- fixed missing central tower when attacking fort
2013-10-27 13:05:01 +00:00
Ivan Savenko 9237e6d97d Improved json validation
- split JsonNode.cpp into JsonNode and JsonDetail files
- validation should be notably faster (at least 10% faster loading)
- support for "format" field, allows checking existance of files.
- minor fixes in schemas
- msk/msg files are now optional
2013-10-26 19:33:34 +00:00
Ivan Savenko e2c037402c Unicode support.
- boost-locale library is now required (boost 1.48 or higher)
- Unicode namespace that contains UTF-8 handling
- All non-ASCII strings from H3 data will be converted to UTF-8 during loading
- All JSON files MUST use UTF-8. 
- H3 data encoding can be selected via launcher or directly in config file
2013-10-25 21:45:14 +00:00
Ivan Savenko f6a3d6770f - chinese fonts now use fallback to H3 fonts for ASCII characters
- proper messages for not implemented main menu entries
- some cleanup of CMessage::breakText()
2013-10-20 21:53:27 +00:00
Ivan Savenko 012212698e compile fixes, cmake files update 2013-10-20 13:51:05 +00:00
Ivan Savenko f838cceddd - fixes Inferno Castle Gate 2013-10-17 13:54:12 +00:00
Ivan Savenko c9e3192419 (linux) version set to 0.94 2013-10-01 19:03:09 +00:00
Ivan Savenko 03bca320fe - fixed update presence detection in launcher 2013-10-01 15:14:05 +00:00
Ivan Savenko d09294e40a compile fix, fixes blit order of heroes in siege 2013-09-30 08:45:26 +00:00
Ivan Savenko 84dea676f2 compile fix, fixes missing end-of-line #1483 2013-09-28 13:32:49 +00:00
Ivan Savenko eb6ff6b114 fixes #1482, add one pixel spacing for Chinese fonts 2013-09-25 21:15:15 +00:00
Ivan Savenko 208df34fc2 bigfixing & new file: launcher/jsonutils.cpp
- launcher uses json parser from vcmi lib instead of one from Qt #1469
- fixed abilities overrides for some creatures #1476
- fixed hero portraits in seer huts #1402
- ttf fonts will render text in utf-8 mode. Not really useful at this point
- new settings entry, available in launcher: encoding. Unused for now.
2013-09-21 18:29:26 +00:00
Ivan Savenko 6331995afd minors:
- fixes missing line of pixels with Chinese fonts
- disabling a mod won't disable all its requirements as well
2013-09-08 18:35:09 +00:00
Ivan Savenko e13dc872e0 - support for Chinese fonts (GBK 2-byte encoding)
- fixes #1446
2013-09-08 16:49:23 +00:00
Ivan Savenko 42879225f0 minor fixes:
- don't crash if image can't be player-colored (no palette)
- fixes #1447
- compile fix
2013-09-08 13:02:34 +00:00
Ivan Savenko 76c77d58f6 const-ified CTown. May fix #1444 2013-09-06 21:57:16 +00:00
Ivan Savenko 8515bd037d basic error reporting for launcher. 2013-09-05 21:25:03 +00:00
Ivan Savenko 0a627698d8 - fixes crash on giving banned skills to hero (partial #1427)
- fixes hover text for prisons - they should not display name of imprisoned hero
- missing bits for launcher, Linux-specific
2013-09-04 23:00:51 +00:00
Ivan Savenko 6ec96b50d7 - compile fix 2013-09-02 13:24:32 +00:00
Ivan Savenko 708b0c6f47 - fixes #1424 - added missing override and CLabel::visibleText() 2013-09-01 17:34:46 +00:00
Ivan Savenko 7f43150bb9 - fixes #1423 - convert values to int before using 2013-08-31 00:21:29 +00:00
Ivan Savenko fba4c2cf9e - fixes #874 2013-08-30 13:19:08 +00:00
Ivan Savenko 8ac6a1fcf4 - fixes 1394 2013-08-29 20:35:24 +00:00
Ivan Savenko 83440f1149 A bit more text-related work:
- credits screen will use multi-line label instead of hackish usage of text box
- campaign intro movie player now plays voiced intro
- minor fixes to last commit
2013-08-29 16:41:14 +00:00
Ivan Savenko 6bee105d7d Some refactoring of text display widgets:
- renamed some methods/classes with better names + some consistency (no more print, setTxt and setText that do exactly same thing)
- TextBox now contains label widget instead of inheriting it
- smooth scrolling support (up/down buttons still scroll one line)
2013-08-29 13:46:27 +00:00
Ivan Savenko fb4fb79be2 - by defaut launcher will use repository from vcmi.eu 2013-08-26 10:03:47 +00:00
Ivan Savenko 4287b2b7bb fixes for launcher, as discussed on forums:
- renamed files that should be preprocessed with moc: they will have _moc suffix (cpp files were also renamed for consistency)
- fixed disabling of mods that have dependent on them mods
- repositories will be reloaded if changed
- may have fixed non-starting vcmi client on Win
2013-08-24 20:11:51 +00:00
Ivan Savenko 7cbfdd509c VCMI Launcher/Mod manager. See forum post for details. 2013-08-22 14:22:49 +00:00
Ivan Savenko cf4b3c91cb - updated wog/vcmi mod.json files
- found situation where JsonNode parser won't report warning: comma after last element in arrays or objects. Fixed this in our config files but parser change is disabled for now due to huge number of warnings from mods.
2013-08-20 19:32:21 +00:00
Ivan Savenko db1dc1dcc6 - fixed terrain music restarting every tile
- field "contact" for mod.json schema
2013-08-20 10:47:40 +00:00
Ivan Savenko 5654fef901 - ZipArchive namespace for operations with zip archives, located in CZipLoader.h/cpp.
- new fields in mod format, for use with mod manager (check config/shemas/mod.json for details)
- removed some 0.92 compatibility from mods loading
- several compile fixes
2013-08-19 11:50:53 +00:00
Ivan Savenko 45c2bd7511 hopefully fixes #1397. Still too much magic in this code :( 2013-08-09 17:37:41 +00:00
Ivan Savenko 8beee29482 - corrected "isToReverse" check, partially fixes 1397
- ballistics fix
- minor
2013-08-06 15:25:51 +00:00
Ivan Savenko c81a31c74a - catapult attacks should be identical to H3
- catapult may miss and attack another part of wall instead (this is how it works in H3)
- minor fixes
2013-08-06 11:20:28 +00:00
Ivan Savenko b57b14b752 - fixed several bugs with siege graphics, including #1389
- removed "shooterHeight" property - seems to be same in all towns.
2013-07-31 22:24:44 +00:00
Ivan Savenko ee09c5301e minor fixes:
- vcmi can play music files from archives
- converted resource_reward fields in bank_config into json object, fixes 3000 gems reward in shipwreck
- some compile fixes for minizip
2013-07-31 11:36:42 +00:00
Ivan Savenko 1d9139303a introduced zip support into vcmi
- minizip library is now part of sources, located at lib/minizip
- cmakefiles will compile minizip as dynamic library (Note: only 2 files used by vcmi are included in minizip.so)
- zip files can be loaded similar to other archives via filesystem.json
- mods can use Content.zip instead of Content/ directory. Files in directory will replace files in archive.
2013-07-30 15:02:55 +00:00
Ivan Savenko 77496bcea9 - fixed several cases of accessing full path to files in archives 2013-07-29 11:38:18 +00:00
Ivan Savenko 9f7c89d5e3 - more filesystem logging and possible fix for Win
- added missing destructor for loaders
- added missing override kewords
- added unused for now ARCHIVE_ZIP filetype
2013-07-29 10:08:02 +00:00
Ivan Savenko b87897096c Filesystem handling is now more flexible
- removed CResourceLoader class in favor of one that implements resource loader interface
- removed global pool of files, in favour of more dynamic approach
- renamed some files to match current situation
All these changes are needed mostly for future mod manager + .zip support
2013-07-28 14:49:50 +00:00