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

372 Commits

Author SHA1 Message Date
Ivan Savenko
ebc7a82c2e Converted pathfinder enum's to enum class 2023-06-21 15:38:57 +03:00
Ivan Savenko
f78470a301 Fix build 2023-06-21 14:55:25 +03:00
Ivan Savenko
bd4d2788ed Split pathfinder into multiple smaller files 2023-06-21 13:46:09 +03:00
Ivan Savenko
87fcfa4add Removed excessive pathfinder includes 2023-06-21 12:00:44 +03:00
Ivan Savenko
d51fe62804 Win/loss condition texts use MetaString 2023-06-20 19:37:27 +03:00
Ivan Savenko
6aedb99117 Cleaned up IShipyard interface 2023-06-16 17:59:10 +03:00
Ivan Savenko
5cfbdd2967 Partially split CommonConstructors.cpp into few separate files 2023-06-16 17:59:10 +03:00
Ivan Savenko
d6a357fd17 Split some map object files into smaller files. Reduced includes usage. 2023-06-02 21:47:37 +03:00
Ivan Savenko
acac42291e Remove excessive CMap.h includes 2023-05-31 23:18:38 +03:00
Andrii Danylchenko
0829593356 NKAI: composite pathfinder actions and fix for guarded bordergate 2023-05-07 09:15:37 +03:00
Konstantin
05eccbc2bb vcmi: split bonus to enumerator and HeroBonus.h 2023-05-03 18:01:06 +03:00
Konstantin
fbc05c70ac vcmi: camelCase methods of new classes
Also use EGameSettings for clamping morale and luck
2023-05-02 12:09:13 +03:00
Konstantin
af25ad0866 vcmi: split creatures and faction members 2023-05-02 00:53:50 +03:00
nordsoft
97a1758e8e Merge remote-tracking branch 'upstream/develop' into rewardable-expand 2023-05-01 21:51:10 +04:00
nordsoft
eb577a03b5 Deprecating enum constants 2023-05-01 21:49:37 +04:00
nordsoft
4b1b58b617 Change Callback to abstract 2023-05-01 21:49:37 +04:00
nordsoft
203d0a4f91 Merge remote-tracking branch 'upstream/develop' into rewardable-expand
# Conflicts:
#	lib/JsonRandom.cpp
2023-05-01 02:07:20 +04:00
nordsoft
1b4d117790 deeper decoupling 2023-04-30 17:13:07 +04:00
Konstantin
86f5d6de69 vcmi: modernize headers 2023-04-30 13:35:54 +03:00
nordsoft
e47bb3f1f9 Separate configuration and object 2023-04-30 00:59:02 +04:00
Ivan Savenko
48abf46824
Merge pull request #2005 from IvanSavenko/advmap_refactor
Refactoring of adventure map interface
2023-04-24 17:19:22 +03:00
Andrii Danylchenko
fbc9a32ad8 #2018 - fix shipyard usage for NKAI, allied shipyard should work now 2023-04-22 18:42:36 +03:00
Andrii Danylchenko
d347db4c16 Fix hero count calculation for resourceful ai mod 2023-04-22 14:47:31 +03:00
Ivan Savenko
7db67a3101 int3 now has proper hasher function 2023-04-20 22:04:24 +03:00
nordsoft
de159df481 Rename boats 2023-04-20 21:20:51 +04:00
nordsoft
0a28262c15 Merge remote-tracking branch 'upstream/develop' into boats
# Conflicts:
#	AI/VCAI/Pathfinding/AINodeStorage.cpp
2023-04-19 02:22:19 +04:00
nordsoft
37027ad17f Fix AI boat logic 2023-04-18 18:33:44 +04:00
nordsoft
ed798b06da Prepare transport enum 2023-04-18 13:04:49 +04:00
Konstantin
7a5775a9f9 vcmi: use std::optional 2023-04-17 00:43:13 +03:00
Ivan Savenko
3738171b21 Refactoring of H3M loader to make HotA format support easier
- extracted low-level reader from MapFormatH3M class
- added separate structure to define version-specific values
- cleared up some H3M format edge cases
- replaced witch hut skill vector with set
- converted several fields to enum type
2023-04-15 17:20:38 +03:00
Ivan Savenko
63b197b78a Converted attributes to use c++17 functionality 2023-04-12 01:03:14 +03:00
nordsoft
8e77b833d9 Merge remote-tracking branch 'upstream/develop' into battle-dialog 2023-04-11 15:54:08 +04:00
nordsoft
bfc75ccd39 Merge remote-tracking branch 'upstream/develop' into battle-dialog 2023-04-11 02:22:42 +04:00
Konstantin
fedf7d377c vcmi: remove TFaction
This is a huge change and will break save compatibility
2023-04-10 19:28:16 +03:00
nordsoft
ce3028bd73 Intermediate commit 2023-04-06 19:34:07 +04:00
Konstantin
11b237a23c vcmi: massive refactoring v1 2023-04-05 22:33:12 +03:00
Konstantin
22dd97ad18 vcmi: use entilites when possible part 1 2023-04-04 23:02:54 +03:00
Andrii Danylchenko
10bf9bc7a0
Merge pull request #1678 from vcmi/nkai-fix-build
NKAI: more fixes to defense and pandora
2023-04-03 22:39:11 +03:00
Andrii Danylchenko
ab84cb9931 NKAI: fix defense tasks priority evaluation 2023-04-02 10:10:17 +03:00
Andrii Danylchenko
34abc9f82d NKAI: disallow using allied shipyard 2023-04-02 10:04:10 +03:00
Andrii Danylchenko
88fb532d90 NKAI: more fixes to defense and pandora 2023-04-02 10:02:33 +03:00
Andrey Filipenkov
3602645a30 improve iterating over EPathfindingLayer 2023-03-20 11:35:19 +03:00
Ivan Savenko
a0e9e01b48 Renamed & reorganized all game mechanics settings names 2023-03-16 18:11:35 +02:00
Ivan Savenko
383387ef29 Integrated defaultMods into mod system 2023-03-16 17:55:09 +02:00
Konstantin
c4a3216288 NKAI: evaluate speciality correctly
With removal of SECONDARY_SKILL_PREMY, we need to
evaluate speciality by using TargetSourceType.
Just do it.
2023-03-16 16:46:41 +03:00
Konstantin
95503d0623 vcmi: unify movement
1. Now there is only one bonus: MOVEMENT, with 2 subtypes: 0 is sea, 1 is land
   For movement value on land depends on creature speed we use a new
   ARMY_MOVEMENT updater with global bonus. If we does not like such
   dependency, we can just remove this updater from json.
2. All specialities and secondary skills for movement moved to new
   system AFAIK
2023-03-16 16:46:41 +03:00
Andrii Danylchenko
fa9e1d2d83 NKAI: fix crash 2023-03-12 16:31:15 +02:00
Andrii Danylchenko
4bf570763a NKAI: improve neutral town priority handling, reduce priority of objects like star axis 2023-03-12 16:31:15 +02:00
Andrii Danylchenko
87638aafc0 NKAI: improve build behavior 2023-03-12 16:31:15 +02:00
Konstantin
bc228a938a vcmi: use enum class for EComponentType
There is really no reason not to use it
2023-03-11 21:41:57 +03:00
Konstantin
4617ce10e5 vcmi: allow showing more than one components in infobar
Up to 8, AFAIK. So, we can show multi-reward in infobox now.
One issue remain - cannot dynamically choose components size
based on text size.
2023-03-11 21:41:57 +03:00
Konstantin
5366f9190e vcmi: reduce boost::lexical_cast usage 2023-03-09 16:36:46 +03:00
Andrii Danylchenko
148c3436df NKAI: improve army gathering 2023-03-08 11:53:26 +02:00
Andrii Danylchenko
8b0c7b6601 NKAI improve defence and some fixes 2023-03-07 20:10:58 +02:00
Ivan Savenko
144ddba97d Replaced AI assertion failure with error in log 2023-03-07 00:06:58 +02:00
Ivan Savenko
aeb653c919 Fix typos 2023-03-07 00:06:58 +02:00
Ivan Savenko
11e4d84749 Implemented View Earth / View Air spells 2023-03-05 17:48:02 +02:00
Ivan Savenko
84fa19dadf
Merge pull request #1547 from dydzio0614/game-start-unrandomization
Hardcoded features for HotA-like starting conditions
2023-03-05 17:29:49 +02:00
Andrey Filipenkov
71d51beab2 change static AI approach to use static libvcmi
- now links to static AI lib targets
- solves uncaught boost exception on closing server
2023-03-02 12:09:48 +03:00
Andrey Filipenkov
4c19d8794d add option to compile AI code into libvcmi directly
- used on Android by default
- AI sources and libs are propagated to upper level with set(... PARENT_SCOPE)
2023-03-02 12:09:48 +03:00
Dydzio
7095e9d8f9 Allow heroes to start with empty armies if configured properly 2023-02-05 00:36:51 +01:00
Ivan Savenko
f8f6df02f3 Removed remaining hardcoded objects 2023-01-23 15:27:27 +02:00
Ivan Savenko
62e127fb59 Bonusing objects are now configured in json 2023-01-23 01:05:10 +02:00
Ivan Savenko
bfd6c40f25 Moved all once-per-hero visitable (sans Tree) to config 2023-01-22 22:58:53 +02:00
Ivan Savenko
05a1d7c6e3 All text for factions/towns/building are passed through translator 2023-01-20 15:18:36 +02:00
Ivan Savenko
388ed88b5d All artifact strings now pass through translator 2023-01-20 15:18:36 +02:00
Ivan Savenko
d2b837b116 All creature-related texts go through translator 2023-01-20 15:18:36 +02:00
Ivan Savenko
fa6f7513e8 All heroes-related strings are passed through translator 2023-01-20 15:18:36 +02:00
Ivan Savenko
5da407e822 All spell texts are now passed through translator 2023-01-20 15:18:36 +02:00
Ivan Savenko
246281e62a Merged vcmi/beta with vcmi/develop 2023-01-15 17:46:42 +02:00
Andrey Filipenkov
efbed6000b fix typo 2023-01-15 17:28:09 +02:00
Ivan Savenko
33a9aa8ee5 Reduced log to console 2023-01-01 20:55:26 +02:00
Ivan Savenko
370e92a90a Added workaround for no longer accessible hero in MoveHero 2022-12-25 16:12:26 +02:00
Ivan Savenko
405b2976d5 Renamed getUpgradeInfo -> fillUpgradeInfo 2022-12-25 14:03:43 +02:00
Ivan Savenko
eb20a4b208 Merge remote-tracking branch 'vcmi/develop' into warnings_fix 2022-12-23 14:40:45 +02:00
Ivan Savenko
f073c676f9 Merge 1.1 release into develop 2022-12-23 14:17:18 +02:00
Sergei Trofimovich
c2c352c6dd AI/Nullkiller/Goals/ExecuteHeroChain.cpp: catch polymorphic exceptions by reference
The suspicious code was detected by `gcc-13` as:

    AI/Nullkiller/Goals/ExecuteHeroChain.cpp: In member function 'virtual void NKAI::Goals::ExecuteHeroChain::accept(NKAI::AIGateway*)':
    AI/Nullkiller/Goals/ExecuteHeroChain.cpp:130:47: warning: catching polymorphic type 'class NKAI::cannotFulfillGoalException' by value [-Wcatch-value=]
      130 |                                         catch(cannotFulfillGoalException)
          |                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~
    AI/Nullkiller/Goals/ExecuteHeroChain.cpp:176:23: warning: catching polymorphic type 'class NKAI::goalFulfilledException' by value [-Wcatch-value=]
      176 |                 catch(goalFulfilledException)
          |                       ^~~~~~~~~~~~~~~~~~~~~~

Similar to object passing by value and reference passing polymorphic
exceptions by reference likely destroys them when copy-constructed to
a base class. Let's catch them by reference.
2022-12-17 21:50:57 +00:00
Andrii Danylchenko
56bf8ec2c4 #1228 - prevent second AI activation on AI defeat due to wrong EndTurn packet 2022-12-14 22:13:26 +02:00
Andrii Danylchenko
01980f4310 Small optimization of NKAI pathfinder 2022-12-10 22:08:16 +02:00
Ivan Savenko
25bceda4ea Added convertToVisitablePos/convertFromVisitablePos to CGHeroInstance
This method replaces old convertPosition, but with more clear names and
without hardcoded magic constants.
2022-12-09 14:42:47 +02:00
Ivan Savenko
8dcecdc235 Fix deprecation warning 2022-12-09 14:16:23 +02:00
Ivan Savenko
db2a40600d Fixed some of the warnings detected by CI run 2022-12-08 23:20:42 +02:00
Ivan Savenko
facf77b3ae vstd::unique -> std::unique 2022-12-07 23:36:20 +02:00
Ivan Savenko
d85ee019ec Removed CGHeroInstance::convertPosition method 2022-12-07 22:51:32 +02:00
Ivan Savenko
49cbd5adc9 CGHeroInstance::convertPosition is no longer static method 2022-12-07 22:34:08 +02:00
Ivan Savenko
2855606a88 Enabled & fixed -Woverloaded-virtual warning from gcc/cland
- fixed almost all instances of overloaded-virtual warning
- cleared up inheritance & method overrides in code affected by warning
2022-12-07 21:50:45 +02:00
Ivan Savenko
3219e322ae Fixed all non-silenced gcc/clang warnings 2022-12-07 18:05:47 +02:00
nordsoft
d4c9b8f6b5 Absolute threshold for retreat decision 2022-12-06 16:11:52 +04:00
SoundSSGood
909dcb82fa use ArtifactID 2022-11-29 00:32:18 +02:00
Andrii Danylchenko
e31beafa17 #1100 - fix visiting allied dwellings 2022-11-23 02:40:56 +04:00
Andrii Danylchenko
8b964be71f
Merge pull request #1111 from GermanAizek/develop
Code refactor and fix condition bug
2022-11-15 09:23:16 +02:00
lainon
7fdad4e0f6 Code refactor following C++ standard and condition fixes 2022-11-15 03:20:55 +03:00
Andrii Danylchenko
3676152644 #1102 - NKAI: one more freeze - no mains with strong army 2022-11-10 21:12:08 +02:00
Andrii Danylchenko
233b850daf NKAI: a few crash/hang fixes 2022-11-07 13:58:20 +02:00
Andrii Danylchenko
ebf4854801 Battle AI: add some comments + refactoring 2022-10-23 11:41:03 +03:00
Andrii Danylchenko
601ced3749 BattleAI: rework movement when no targtes 2022-10-23 11:41:03 +03:00
Andrii Danylchenko
c2cc801f60
Merge pull request #1073 from kambala-decapitator/ios-conan
[Conan] add iOS support, bump dependencies, improvements
2022-10-22 12:40:48 +03:00
Andrey Filipenkov
f10e5e3b99 [Conan] add iOS support 2022-10-16 13:25:38 +03:00
Andrii Danylchenko
e9c725181c NKAI: fix retreat logic 2022-10-15 15:15:12 +03:00
Andrii Danylchenko
153cccdf46 NKAI: hire retreated hero 2022-10-14 12:00:56 +03:00
Andrii Danylchenko
82a9f82e1c BattleAI: retreat 2022-10-14 12:00:56 +03:00
Andrii Danylchenko
eeea01d778 NKAI: namespace 2022-10-04 08:40:14 +03:00
Andrii Danylchenko
2434fe3f6f NK: fix AI speed 2022-10-01 13:49:27 +03:00
DjWarmonger
58a3abb643
Merge pull request #963 from vcmi/terrain-rewrite
Terrain rewrite
2022-09-29 18:24:05 +02:00
Andrii Danylchenko
878aabd4d6
Merge pull request #981 from kambala-decapitator/fix-analyzer-warnings
Fix Clang Analyzer warnings
2022-09-29 19:23:24 +03:00
Tomasz Zieliński
f386f42166 Merge remote-tracking branch 'origin/develop' into terrain-rewrite
# Conflicts:
#	lib/Terrain.cpp
#	lib/Terrain.h
#	lib/battle/CBattleInfoEssentials.cpp
#	lib/rmg/ObstaclePlacer.cpp
#	lib/rmg/RiverPlacer.cpp
2022-09-27 07:50:17 +02:00
Andrey Filipenkov
802147c5b7 add some asserts that shouldn't fire 2022-09-26 14:06:55 +03:00
Andrey Filipenkov
72feb538ce add explicit null pointer checks 2022-09-25 10:05:16 +03:00
Tomasz Zieliński
fd63cb6109 and here 2022-09-25 08:07:22 +02:00
Andrey Filipenkov
659be89a01 remove setting values that are never read 2022-09-24 16:52:38 +03:00
Andrey Filipenkov
dab9d206f1 Revert "don't build Nullkiller for 32-bit"
This reverts commit 0a5c5c3e1da76f0e202c61e9abfca9603ca7af7c.
2022-09-24 15:55:23 +03:00
Andrey Filipenkov
2a958a346e don't build Nullkiller for 32-bit 2022-09-24 15:55:23 +03:00
Andrey Filipenkov
5e838008df merge launcher and client
launcher is a static lib now
2022-09-24 15:55:22 +03:00
Andrey Filipenkov
c6e51852d0 add ability to build VCMI as single process
"Client process -> shared VCMI lib <- Server process" is turned into "shared Client-VCMI lib -> process <- static Server-VCMI lib"
- adds lib_client and lib_server targets that define distinct namespaces
- lib_client is a dynamic library which is shared with AI libs, lib_server is static
2022-09-24 15:55:21 +03:00
Andrey Filipenkov
ff635edc0b wrap all library code into namespace if VCMI_LIB_NAMESPACE is defined
preparation for having client and server in a single process
2022-09-24 15:55:21 +03:00
Andrey Filipenkov
3388583089 use component-based install to copy only what's needed for every app 2022-09-24 15:55:20 +03:00
Andrey Filipenkov
8319c30695 copy external TBB dylib to app package 2022-09-24 15:55:20 +03:00
Andrey Filipenkov
9dc5f3ed8b improve RPATH handling, apply RPATH when installing dylibs 2022-09-24 15:55:20 +03:00
Tomasz Zieliński
a5077245a8 Merge remote-tracking branch 'origin/develop' into terrain-rewrite
# Conflicts:
#	lib/Terrain.cpp
#	lib/Terrain.h
2022-09-23 20:01:13 +02:00
Andrey Filipenkov
c9c79887a7 remove unused variables 2022-09-22 11:54:10 +03:00
Andrey Filipenkov
143b0983e6 fix enum value 2022-09-22 11:54:09 +03:00
Andrey Filipenkov
1d57c40740 wrap && conditions in parentheses when near || 2022-09-22 11:54:09 +03:00
Andrey Filipenkov
aae1d4fed5 fix variable type in for-in loops 2022-09-22 11:54:09 +03:00
Andrey Filipenkov
a1cf120ea6 add missing virtual destructors 2022-09-22 11:54:09 +03:00
Tomasz Zieliński
494b0f0226 First version that compiles 2022-09-21 11:34:23 +02:00
DjWarmonger
7ba271edf1
Rotation rebase2 (#912)
* Instead of [x][y][z] coordinates, map will be stored as [z][x][y].
* Nullkiller AI can get it too.
* Use boost::multi_array instead of nested vectors
* In MapHandler too
* Rotate foreach algorithms, too
* VCAI gets rotated, too
2022-09-18 17:39:10 +03:00
DjWarmonger
5e2d87abd7
Update AI/Nullkiller/Goals/ExecuteHeroChain.cpp
Co-authored-by: Andrey Filipenkov <decapitator@ukr.net>
2022-09-14 16:23:13 +02:00
Tomasz Zieliński
931f4af2df typo 2022-09-14 15:24:39 +02:00
nordsoft
c24fc89fe3 Lambda decltype on compile time instead of runtime 2022-09-14 12:08:20 +03:00
Tomasz Zieliński
40585a66c0 Style, commend - requested 2022-09-11 11:31:28 +03:00
Tomasz Zieliński
1649cf2bb9 misc comments 2022-09-11 11:31:27 +03:00
Tomasz Zieliński
6ae3b77d80 AI will not wait to conwuer fort if possible 2022-09-11 11:31:27 +03:00
Tomasz Zieliński
f0bb97b0d2 AI will actually attack all heroes when possible - and win the game eventually :) 2022-09-11 11:31:27 +03:00
Tomasz Zieliński
b52faad4c7 + Stack speed is valuable
+ Hero movement is also very valuable
2022-09-11 11:31:27 +03:00
Tomasz Zieliński
a83753a7d2 AI will now pick Prisons if possible 2022-09-11 11:31:27 +03:00
Tomasz Zieliński
cbf2a1b7cc AI will consider Pandora Box as a valuable object - good for every occasion! 2022-09-11 11:31:27 +03:00
Tomasz Zieliński
faa6ca401e Fixed duplicated value 2022-09-11 11:31:27 +03:00
Tomasz Zieliński
f4de5453c6 + AI will consider free slot (or lack of it) for creature reward from a bank
+ AI might use banks for resources other than gold
2022-09-11 11:31:27 +03:00
Nordsoft91
aaa07e4d2e New terrain support - part 1 (#755)
Initial support of new terrains
2022-09-11 11:31:26 +03:00
Soar Qin
188607b05f Replace cotire with CMake builtin precompiled headers support (Requires CMake version >= 3.16) 2022-06-17 17:20:08 +03:00
Soar Qin
c87df8e704
Fix warnings/errors on MSVC (#753)
* Fix warnings/errors on MSVC
1. update googletest to tag release-1.11.0 to make googletest and
   googlemock compile on MSVC2022.
2. set gtest_force_shared_crt to ON in test cmake project to make tests
   compile on MSVC.
3. add /wd4251 and /wd4275 to MSVC compile flags to ignore DLL related
   warnings for class exports.
4. fix some other warnings and errors while compiling on MSVC2022.
2022-06-11 18:45:34 +03:00
Andrii Danylchenko
31c9d6e28d Fix performance issue related to TurnInfo construction 2022-06-06 09:47:37 +03:00
Konstantin
8fc14369a4
CMake presets. (#744)
* CI: use single build action
* CMake: use imported targets
* CI: do not build boost for linux
* CMake: add FORCE_BUNDLED_MINIZIP option
* linux: use external minizip and fuzzylite
* CMake: add presets
* .gitignore: ignore cmake build dirs
* github: use cmake presets
2022-05-26 08:55:20 +03:00
Andrii Danylchenko
6da233c387 NullkillerAI: fix build analyser when town has no upgrade for creature 2022-05-01 10:26:07 +03:00
val-gaav
7466839182 Update AIGateway.cpp 2022-04-26 15:08:02 +03:00
Andrii Danylchenko
fa9a420f99 Fix a few crashes 2022-04-17 09:10:53 +03:00
Andrii Danylchenko
02b2f35143 Nullkiller: fix crash 2022-03-05 15:51:03 +02:00
Dmitry Orlov
ea2931c6ea Fix: Get rid of 'Tile is not visible' error message 2022-01-30 12:31:07 +02:00
Andrey Filipenkov
af6d666778 use high_resolution_clock instead of steady_clock 2021-11-23 11:56:06 +03:00
Andrey Filipenkov
fc064b1c45 replace boost::chrono with std::chrono 2021-11-23 10:23:55 +03:00