1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-11-24 08:32:34 +02:00
Commit Graph

767 Commits

Author SHA1 Message Date
Tomasz Zieliński
72f8facc82 Fixed deadlock in WaterAdopter 2023-05-19 20:49:01 +02:00
Tomasz Zieliński
73d9f5bd0a Parallel RMG works fine for maps without water. 2023-05-19 20:30:15 +02:00
SoundSSGood
021f94a579 artifact utils 2023-05-17 17:00:31 +03:00
Ivan Savenko
cb8201876b
Merge pull request #1822 from rilian-la-te/spell-mechanics-v3
Bonus refactoring, part3 (save-incompatible)
2023-05-09 13:10:04 +03:00
Konstantin P
057a33c508 SpellSchool: use identifier instead of int
Needs redifinition of MAGIC_SCHOOL_SKILL in all mods
2023-05-07 20:37:32 +03:00
Tomasz Zieliński
19010dd834 Not needed 2023-05-07 09:15:20 +02:00
Tomasz Zieliński
966a24d27e Protect public access to Modificators with another mutex. 2023-05-07 08:24:08 +02:00
Tomasz Zieliński
a58094aefe Thread pool kinda works. 2023-05-07 07:48:12 +02:00
nordsoft
58aed364bf Don't place non-sailing boats in RMG 2023-05-07 03:24:52 +04:00
Tomasz Zieliński
3d25c2c6dc Fix thread pool closing 2023-05-06 19:47:28 +02:00
Tomasz Zieliński
a8545935c3 ThreadPool implementation. It runs, but dies from race conditions. 2023-05-06 18:54:19 +02:00
Tomasz Zieliński
a952a9e279 Remove unused code 2023-05-06 12:22:01 +02:00
Warzyw647
d74fdad432 Renamed enum EMonsterStrength to EGlobalMonsterStrength. Enum EZoneMonsterStrength unchanged. 2023-05-06 12:18:53 +02:00
Tomasz Zieliński
d22ec0ee0c Move Modificator to separate file. 2023-05-06 10:49:18 +02:00
Tomasz Zieliński
eb50ae3aa7 - Pre-distribute max number of Prisons
- Minor refactor for artifact and hero pool management
2023-05-05 10:30:36 +02:00
Tomasz Zieliński
d137f7157c Merge remote-tracking branch 'origin/develop' into parellel_rmg
# Conflicts:
#	lib/rmg/CZonePlacer.h
#	lib/rmg/TreasurePlacer.h
2023-05-05 09:00:44 +02:00
Tomasz Zieliński
35ec720555 Forget objects that were already replaced iwth an artifact. 2023-05-05 07:16:38 +02:00
Warzyw647
7f180b6e81 Split enum EMonsterStrength into EMonsterStrength and EZoneMonsterStrength.
Removed obsolete ZONE_ and GLOBAL_ from enum item names.
Simplified serialization of zone monster strength in preparation for adding zone monster strength: none.
2023-05-04 21:43:31 +02:00
Warzyw647
05e72e2e7f Don't remove zone guards in a zone with monsters: none, remove extra parentheses and add comments 2023-05-04 18:40:04 +02:00
Warzyw647
8ebaa3fd6b Adding zoneMonserStrength: none 2023-05-03 12:07:00 +02:00
Konstantin
86f5d6de69 vcmi: modernize headers 2023-04-30 13:35:54 +03:00
Tomasz Zieliński
d325051213 Some working version, needs corrections still. 2023-04-29 11:46:03 +02:00
Tomasz Zieliński
3c9599657b Use new artifact interface 2023-04-25 16:20:36 +02:00
Tomasz Zieliński
208adf1dd6 Don't use boost::format 2023-04-25 16:14:09 +02:00
Tomasz Zieliński
a9a3c456f1 Add new files 2023-04-23 10:12:53 +02:00
Tomasz Zieliński
bc4d6bb7ee Remove unused code. 2023-04-23 10:08:30 +02:00
Tomasz Zieliński
80b5c53815 Place quest artifacts after all the treasures are already created. 2023-04-23 10:08:16 +02:00
Tomasz Zieliński
88c436691d Simplify logs 2023-04-20 16:26:06 +02:00
Tomasz Zieliński
09b493681b More iterations, higher gravity constant for better results. 2023-04-20 16:13:30 +02:00
Tomasz Zieliński
55d7d7b9b5 Fix coefficients to make dead code actually be used sometimes. 2023-04-20 12:44:32 +02:00
Tomasz Zieliński
00d7901e59 Add another placement technique - swap two misplaced zones. Don't move same zones in consecutive iterations. 2023-04-20 12:24:57 +02:00
Tomasz Zieliński
c34b1cd713 Fix warning-as-errors. 2023-04-19 08:45:23 +02:00
Tomasz Zieliński
d841655c1d Scale fuzzy edges with map size. 2023-04-18 22:34:26 +02:00
Tomasz Zieliński
15592c3aff Change metric to create more interesting zone shapes. 2023-04-18 22:01:51 +02:00
Tomasz Zieliński
39154737a5 Use std::optional instead of boost::optional. 2023-04-18 19:34:54 +02:00
Tomasz Zieliński
6551585f96 Start with low stifness to let zones pass through each other - typical temperature fall.
(cherry picked from commit 435b9f7881)
2023-04-18 19:21:33 +02:00
Tomasz Zieliński
8d5cd6d072 Randomize starting positions a bit so zones don't fall exactly on the grid.
(cherry picked from commit 33eb28b570)
2023-04-18 19:21:28 +02:00
Tomasz Zieliński
fc91152da7 Fixed zones getting actually randomized after construction. Tweaks to algorithm, now it's considerably better.
(cherry picked from commit c13019059f)
2023-04-18 19:21:19 +02:00
Tomasz Zieliński
2d7a819939 Parameters which work well for Jebus - accessible desert and Blue placed away from Red
(cherry picked from commit 42c6127c79)
2023-04-18 19:21:13 +02:00
Tomasz Zieliński
494f4eaa3f Simple solution that works - by ChatGPT :)
(cherry picked from commit 7c6e4bc2fe)
2023-04-18 19:21:06 +02:00
Tomasz Zieliński
a1f094776f Use fixed starting positions for now.
(cherry picked from commit 43c51805f5)
2023-04-18 19:20:57 +02:00
Tomasz Zieliński
7d2745fda6 Simplified target function comparison.
(cherry picked from commit 809f6344ff)
2023-04-18 19:20:50 +02:00
Tomasz Zieliński
48c11f661b Fix zone attraction
(cherry picked from commit 164ecaea60)
2023-04-18 19:20:40 +02:00
Tomasz Zieliński
3f83eaafc4 Fix distance check
(cherry picked from commit 319f289dc4)
2023-04-18 19:20:32 +02:00
Tomasz Zieliński
64adc9983d - Fixes for corectness
- Space apart starting zones of players

(cherry picked from commit 80be12ac68)
2023-04-18 19:20:23 +02:00
Tomasz Zieliński
09d50a5e9f First draft that kinda works.
(cherry picked from commit 7dd5a9c15d)
2023-04-18 19:20:12 +02:00
Konstantin
7a5775a9f9 vcmi: use std::optional 2023-04-17 00:43:13 +03:00
Ivan Savenko
b354f99cc3
Merge pull request #1936 from IvanSavenko/cpp_17_upgrade
Upgrade c++ standard to c++17
2023-04-14 19:21:17 +03:00
Ivan Savenko
44b83b2e11 Merge master -> develop 2023-04-14 16:51:35 +03:00
Tomasz Zieliński
74d028d951 Use product instead of distance sum for Subterranean Gate placement. 2023-04-12 09:31:09 +02:00
Tomasz Zieliński
e6eafca2d0 Place Mines after Monoliths. 2023-04-12 07:48:44 +02:00
Ivan Savenko
644f0f4b32 Removed ARRAY_COUNT in favor of std::size 2023-04-12 01:04:26 +03:00
Ivan Savenko
63b197b78a Converted attributes to use c++17 functionality 2023-04-12 01:03:14 +03:00
Ivan Savenko
dfa2e2a349 Merge beta into develop 2023-04-11 19:37:35 +03:00
DjWarmonger
d9a2621231
Merge pull request #1939 from vcmi/fix_top_of_map_objects
Merging after positive review.
2023-04-11 10:40:18 +02:00
Tomasz Zieliński
3c87b3934d Do not place object visible tiles over the top of the map. 2023-04-10 19:26:53 +02:00
Konstantin
fedf7d377c vcmi: remove TFaction
This is a huge change and will break save compatibility
2023-04-10 19:28:16 +03:00
Tomasz Zieliński
cf1f9c456b Removed unrelated comment 2023-04-07 21:40:47 +02:00
Tomasz Zieliński
37f1bf9d78 Merge remote-tracking branch 'origin/beta' into fix_pandora_amounts 2023-04-07 21:26:36 +02:00
Tomasz Zieliński
f1c52f501d Fix Pandora Box creature amounts to match OH3 exactly. 2023-04-07 21:23:34 +02:00
Ivan Savenko
1590c710dd
Merge pull request #1886 from rilian-la-te/fix-rmg-levels
vcmi: fix rmg header levels
2023-04-07 12:43:34 +03:00
Konstantin
a04d8b34f3 vcmi: fix rmg header levels
It was printed as char, not as int.
2023-04-06 12:48:53 +03:00
Konstantin
11b237a23c vcmi: massive refactoring v1 2023-04-05 22:33:12 +03:00
Tomasz Zieliński
aca227b5e4 Manually adjust the position of town - noticeable on S maps. 2023-04-01 17:07:43 +02:00
Tomasz Zieliński
46a24043e8 Add back Mines. 2023-03-29 17:06:17 +02:00
Tomasz Zieliński
401f2342c0 Place Mines after Towns and Monoliths. 2023-03-29 16:54:22 +02:00
Tomasz Zieliński
5ed3c2d518 Place towns and monoliths first - preferably at the zone border. 2023-03-29 16:25:13 +02:00
Tomasz Zieliński
045942fd68 Fixed warning-as-error 2023-03-28 18:25:56 +02:00
Tomasz Zieliński
b184e80b72 Use the most suitable template for object 2023-03-28 17:53:08 +02:00
Tomasz Zieliński
49c029ea6c Minor refactor 2023-03-28 17:13:24 +02:00
Tomasz Zieliński
b3a457c71a Skip objects with value too low to be placed in the zone. 2023-03-27 17:29:46 +02:00
Tomasz Zieliński
511a42f9b9 Oops missed that part. 2023-03-27 09:35:52 +02:00
Tomasz Zieliński
18a87d1ec0 Distribute limited objects evenly in zones with matching terrain 2023-03-27 09:09:58 +02:00
Tomasz Zieliński
a88e1dc1f6 Add only one template per object 2023-03-27 08:44:49 +02:00
Andrii Danylchenko
a0de223901
Merge pull request #1772 from vcmi/fix_invalid_native_terrain
Fix the case of invalid native town type
2023-03-26 13:19:01 +03:00
Tomasz Zieliński
00a77e3c5f Probably found the root cause of terrain problems. 2023-03-25 18:52:18 +01:00
DjWarmonger
2c4cde060a
Merge pull request #1694 from vcmi/extra_rmg_monoliths
This could be controversial solution, but since there were no objections, I'll give it a shot.
2023-03-25 18:38:06 +01:00
DjWarmonger
114e7d196b
Merge pull request #1698 from vcmi/object_placement_tweaks
No objections, works fine for me as well.
2023-03-25 18:13:15 +01:00
Tomasz Zieliński
68a2bb78a5 Fix the case of invalid native town type :? 2023-03-25 18:08:46 +01:00
Andrii Danylchenko
23fa7c4a9b
Merge pull request #1720 from vcmi/fix_small_lakes_clean
Don't place shipyard or boats at very small lakes
2023-03-19 19:52:22 +02:00
Andrii Danylchenko
aede3da74e
Merge pull request #1721 from vcmi/fix_rmg_infinite_loop
Fix rmg infinite loop
2023-03-19 19:46:28 +02:00
Tomasz Zieliński
9e206dbbc7 Forgot this one 2023-03-19 09:51:37 +01:00
Tomasz Zieliński
f52c465322 Allow zones to inherit properties recursively, in any order. 2023-03-19 09:27:05 +01:00
Tomasz Zieliński
dd3803b111 Don't place shipyard or boats at very small lakes
(cherry picked from commit 1d2913bea0)
2023-03-18 22:05:25 +01:00
Tomasz Zieliński
e1ced317a1 Few tweaks for boat placement to keep distance between it and other objects, especially guards. 2023-03-18 21:59:23 +01:00
Tomasz Zieliński
1dc96d6844 Fix shipyard border calculation for RMG 2023-03-18 20:12:36 +01:00
Tomasz Zieliński
23a5a32756 Add fallback for empty terrain types. Still it's a workaround and does not solve the root cause. 2023-03-18 17:00:50 +01:00
Tomasz Zieliński
f57c275603 Merge remote-tracking branch 'origin/develop' into object_placement_tweaks 2023-03-17 21:47:16 +01:00
Tomasz Zieliński
f2dc9cb48e - Place Subterranean Gates as far from other objects as possible
- Added minimum distance between zone guards
2023-03-16 18:42:28 +01:00
Ivan Savenko
383387ef29 Integrated defaultMods into mod system 2023-03-16 17:55:09 +02:00
Tomasz Zieliński
62490683ce Place objects away from zone guard in both zones, not only the where it is placed. 2023-03-16 16:20:11 +01:00
Tomasz Zieliński
5b267f9cbd - Duplicate Monolith templates to ensure at least 100 are available to RMG
- Do not use Monoliths which can't be placed at any land
2023-03-16 06:58:25 +01:00
Konstantin
5366f9190e vcmi: reduce boost::lexical_cast usage 2023-03-09 16:36:46 +03:00
Ivan Savenko
4260726e4b Provide encoding information to maps & campaigns loaders 2023-03-05 17:39:27 +02:00
Konstantin
7bfb37df4d vcmi: modernize lib/rmg 2023-02-14 02:50:39 +03:00
Konstantin
0627e1ecaa vcmi: remove unused variables from lib/rmg 2023-02-12 19:11:24 +03:00
Konstantin
cf56f7ccce vcmi: remove unused-but-set-variables 2023-01-26 23:49:00 +03:00
Ivan Savenko
47c1803c42 Finalization of refactoring:
- Entity interface now has getNameTranslated & getNameTextID methods
- Entity interface no longer has getName method
- removed (most) usages of normalizeIndentifier workaround method
- all moddable objects have identifier in form of mod:name
- all moddable object register strings in form of mod.type.name
2023-01-20 15:18:36 +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
707de75ac0 Cleared up formatting 2023-01-17 22:58:22 +02:00
Ivan Savenko
e48bd39b9c Moved road & river handlers into a separate file 2023-01-11 15:17:24 +02:00
Ivan Savenko
1e37e66e6c Replaced Terrain::BORDER and WRONG with NONE 2023-01-10 20:09:09 +02:00
Ivan Savenko
8c2b1d74be Removed unused code 2023-01-10 20:07:22 +02:00
Ivan Savenko
4f3ea0d1d9 Renamed Terrain.h/cpp -> TerrainHandler.h/cpp 2023-01-10 00:01:35 +02:00
Ivan Savenko
f51b3bca57 use JsonKey or NameTranslated instead of ambiguos Name 2023-01-10 00:01:35 +02:00
Ivan Savenko
7c7ae26e67 Map/Road/River identifiers are now private members 2023-01-10 00:01:35 +02:00
Ivan Savenko
64885bdf6b Better names for terrain parameters. Support for new movement sounds. 2023-01-10 00:01:35 +02:00
Ivan Savenko
2de3178158 Fixed game startup 2023-01-10 00:01:35 +02:00
Ivan Savenko
e1799379dd Terrain/Road/River handler are now in compileable state 2023-01-10 00:01:35 +02:00
Ivan Savenko
1468f6aded Converted terrainTypeHandler into proper handler class 2023-01-10 00:01:35 +02:00
Ivan Savenko
7a35bcc812
Merge pull request #1221 from IvanSavenko/warnings_fix
Fix remaining compiler warnings
2022-12-29 21:51:55 +02:00
Nordsoft91
785787e454
Merge branch 'develop' into interface-builder 2022-12-24 21:56:29 +04:00
Ivan Savenko
eb20a4b208 Merge remote-tracking branch 'vcmi/develop' into warnings_fix 2022-12-23 14:40:45 +02:00
nordsoft
b1f2c7aed4 Team alignments implemented 2022-12-17 08:19:16 +04:00
nordsoft
d93e844609 Use roads names instead of their filenames 2022-12-17 04:54:01 +04:00
nordsoft
f27a40dd34 Support roads and teams customization in engine 2022-12-17 03:52:40 +04:00
nordsoft
fc7f1dbc5a Fix template selection 2022-12-14 05:23:21 +04:00
nordsoft
53b2f68560 Serialize template 2022-12-14 04:37:11 +04:00
Ivan Savenko
db2a40600d Fixed some of the warnings detected by CI run 2022-12-08 23:20:42 +02:00
Ivan Savenko
fb6b3c31e8 Renamed UNUSED -> MAYBE_UNUSED macro to match c++17 attribute name 2022-12-07 18:06:47 +02:00
Ivan Savenko
3219e322ae Fixed all non-silenced gcc/clang warnings 2022-12-07 18:05:47 +02:00
Andrii Danylchenko
89f0cc66e8
Merge pull request #1213 from IvanSavenko/clone_fix
Fix crash on casting clone on modded creature
2022-12-07 17:34:52 +02:00
Ivan Savenko
2cbe6bcb47 Added common method to get names of hardcoded mod scopes 2022-12-07 15:18:19 +02:00
nordsoft
5d1b5b6c9c Throw an exception if empty zone is generated 2022-12-06 15:07:16 +04:00
nordsoft
625c18a889 Fix #3234 2022-11-18 04:05:35 +04:00
nordsoft
d5403d3eb9 Merge remote-tracking branch 'upstream/develop' into cpp-map-editor 2022-10-17 01:39:11 +04:00
nordsoft
4cb31ea912 Merge remote-tracking branch 'upstream/develop' into cpp-map-editor 2022-10-08 23:24:57 +04:00
Tomasz Zieliński
8c481dff46 Fix incorrect templates for mines in HoTA 2022-10-08 12:42:10 +03:00
Andrey Filipenkov
aa217236b3 check amount of artifacts on hero when checking requirements of a quest that requires artifact(s)
fixes case when 2 or more identical artifacts are required
2022-10-01 09:28:32 +03:00
Tomasz Zieliński
127d7ec40b Fixed asserts (only for debug build) 2022-09-29 21:10:44 +02:00
Tomasz Zieliński
20c102e648 Remove T prefix from new typedefs 2022-09-29 11:44:46 +02: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
Tomasz Zieliński
f804f8a326 Store RiverType by value, handle by reference 2022-09-26 09:51:36 +02:00
Tomasz Zieliński
2bd30556a3 Store TerrainType by havlue and handle by reference 2022-09-26 09:17:55 +02:00
Tomasz Zieliński
4ea57ea7fc A variety of suggested style tweaks 2022-09-25 09:33:56 +02:00
nordsoft
d32898b39b Merge remote-tracking branch 'upstream/develop' into cpp-map-editor
# Conflicts:
#	CMakeLists.txt
2022-09-25 00:58:43 +04: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
Tomasz Zieliński
0b56778e00 Fix for compatibility in rewrite 2022-09-23 20:01:54 +02: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
Tomasz Zieliński
ebe45d512d Moved roads and rivers to TerrainTypeHandler, by analogy to TerrainType. 2022-09-23 16:24:01 +02:00
Tomasz Zieliński
6aaf77812b Changed logic for zone placement.
Now every zone can be surface, underground, or both. This is separate from water <-> land distinction.

Iand type is now a combination of flags and can take multiple values: "type": ["LAND", "WATER", "SURFACE", "SUB", "ROCK"]. In nothing is specified, terrains get LAND | SURFACE flags by default.

Non-surface zones will default to DIRT, and non-underground zones will default to SUBTERRA.
2022-09-22 18:23:31 +02:00
nordsoft
89d0de53da Merge remote-tracking branch 'upstream/develop' into features/cpp-map-editor
# Conflicts:
#	.github/workflows/github.yml
#	launcher/modManager/cmodlist.cpp
#	lib/CModHandler.cpp
#	lib/CModHandler.h
2022-09-22 17:09:47 +04:00
Andrii Danylchenko
b4d3445559
Merge pull request #971 from kambala-decapitator/fix-warnings
Fix most project warnings
2022-09-22 16:05:32 +03:00
Andrii Danylchenko
3d3c513603
Merge pull request #929 from Nordsoft91/branch-merge-versioning
Mods versioning [part 3]
2022-09-22 14:56:20 +03:00
Andrey Filipenkov
c9c79887a7 remove unused variables 2022-09-22 11:54:10 +03:00
Tomasz Zieliński
494b0f0226 First version that compiles 2022-09-21 11:34:23 +02:00
Tomasz Zieliński
b20f649521 stash 2022-09-19 16:13:58 +02:00
nordsoft
c348c1a053 Revert "Load template name from user settings"
This reverts commit 73cc606ee2.

# Conflicts:
#	lib/rmg/CRmgTemplateStorage.cpp
#	lib/rmg/CRmgTemplateStorage.h
#	mapeditor/windownewmap.cpp
2022-09-19 02:46:01 +04:00
Nordsoft91
60264aae29
Apply suggestions from code review
Co-authored-by: Andrey Filipenkov <decapitator@ukr.net>
2022-09-19 01:18:17 +04: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
nordsoft
1b6f4a5cf3 Rebase on develop 2022-09-17 17:43:59 +04:00
Nordsoft91
e4ac0d4370
Editor prerequisites [part 2] (#889) 2022-09-17 14:04:01 +03:00
DjWarmonger
3d2dc2335b Switch ObjectTemplate to shared_ptr<const> (#870) 2022-09-11 16:13:53 +03:00
nordsoft
cf9314507b Fix crash in rmg 2022-09-11 11:31:27 +03:00
DjWarmonger
f81d869b4a Mine roads (#808)
* Create dirt roads to mines if there are no roads in a zone.
2022-09-11 11:31:27 +03:00
nordsoft
670bca2fdb Randomly shuffle required objects to avoid patterns 2022-09-11 11:31:27 +03:00
Nordsoft91
8f0dcf928c Fix problems with water zone (#784) 2022-09-11 11:31:27 +03:00
Nordsoft91
e028875fe3 Fix RMG bug with incorrect town placement (#779)
* Fix RMG bug with incorrect town placement
* Readability tweak
2022-09-11 11:31:27 +03:00
Nordsoft91
454889598f Improve treasure placement logic (#775)
Improve treasure placement logic (#775)
2022-09-11 11:31:27 +03:00
Nordsoft91
1451385a9b Fix problem with empty areas (#772)
* Fixes for obstacles and treasures
2022-09-11 11:31:27 +03:00
Nordsoft91
2edf9ef3a4 Fix for sealed-off treasures (#771)
Fix for sealer-off treasures
2022-09-11 11:31:27 +03:00
Nordsoft91
4bd0ff680a Random map generator refactoring (#762)
random map generator refactoring and improvements
2022-09-11 11:31:27 +03:00
Andrii Danylchenko
4b4cc3cf4b battlefields in VLC and custom bonuses for terrain patches 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
Nordsoft91
5054ee011a Rmg water support (#751)
* Roads added to shipyard
* Load general rmg parameters from config
* Fix issue with default zone guard
* Move magic numbers related to balance to randomMap.json
2022-06-11 18:40:24 +03:00
Nordsoft91
5c1a66ab69 Rmg water support (#745)
* RMG: water support and refactoring
* Fix seers hut bug
2022-06-11 18:40:24 +03:00
Nordsoft91
9d06e51631
Place proper towns in underground (#743)
Implement feature of proper town selection in underground and surface
* Some minor refactoring of rmg
2022-05-28 16:03:50 +03:00
Nordsoft91
a8265c7052
[0002285] Implement feature with extra resources near mines (#742)
* RMG: clear start position
* [0002285] some heaps of resources are placed nearby mines
* Fix leak in case of inability to place resource
* Fix indentation according to vcmi style
* Add constant for random amount of resources
* Code review fixes
2022-05-23 13:08:36 +03:00
Konstantin
c6b198ce14
Warning fix (I moved C++17 and CI to another branch) (#739)
* clang warning fixes
* use CMake 3.10 due to MXE CI does not have 3.13 yet

Co-authored-by: Konstantin <rilian@niisi.ras.ru>
2022-05-19 15:14:50 +03:00
Andrii Danylchenko
8b11b42aaf Fix RMG to place special dwellings like elemental conflux 2022-04-09 10:57:24 +03:00
AlexVinS
ecaa9f5d0b Entities redesign and a few ERM features
* Made most Handlers derived from CHandlerBase and moved service API there.
* Declared existing Entity APIs.
* Added basic script context caching
* Started Lua script module
* Started Lua spell effect API
* Started script state persistence
* Started battle info callback binding
* CommitPackage removed
* Extracted spells::Caster to own header; Expanded Spell API.
* implemented !!MC:S, !!FU:E, !!FU:P, !!MA, !!VR:H, !!VR:C
* !!BU:C, !!BU:E, !!BU:G, !!BU:M implemented
* Allow use of "MC:S@varName@" to declare normal variable (technically v-variable with string key)
* Re-enabled VERM macros.
* !?GM0 added
* !?TM implemented
* Added !!MF:N
* Started !?OB, !!BM, !!HE, !!OW, !!UN
* Added basic support of w-variables
* Added support for ERM indirect variables
* Made !?FU regular trigger
* !!re (ERA loop receiver) implemented
* Fixed ERM receivers with zero args.
2021-02-14 19:05:43 +03:00
Dmitry Orlov
55b3f0b24c Fix: Map objects sometimes do not increment primary skills for some heroes 2021-02-13 00:24:14 +03:00
Dmitry Orlov
3cb0dfb143 Fix: RMG issues: 1) hota 2) assertions 2020-10-25 01:03:32 +03:00
John Bolton
a05ae78e67 Fixed lots of warnings.
Disabled the following (for MSVC only) that couldn't (or shouldn't) be fixed.

4003: not enough actual parameters for macro 'identifier'
4250: 'class1' : inherits 'class2::member' via dominance
4251: 'type' : class 'type1' needs to have dll-interface to be used by clients of class 'type2'
4275: non dll-interface class 'type1' used as base for dll-interface class 'type2'
2020-10-04 02:20:18 -07:00
laikh
edc1d06f4e Random Map Generator Option: Allow having more computer only players than human/computer players
Remove unused variable humanPlayersCount and function getHumanOnlyPlayerCount()
2020-07-07 19:45:53 +08:00
Michał Kalinowski
ac6b477aa2 Simplify statements
-Simplify return statements across the code
2019-03-31 09:43:14 +03:00
Alexander Shishkin
b00e935e4d
Warnings fixes (#538)
Warnings fixes
* Suppress `missing-braces` for Clang
* Fixed many C4275 warnings
* Fixed almost all Clang/GCC warnings
* Silence most frequent MSVC warning.
* Fixed some pessimizing-move warnings
* Fixed some unused capture warnings
2019-01-19 13:52:02 +03:00
Michał Janiszewski
7be9aa4868 Prevent shadowing of function arguments by local vars 2018-10-29 16:56:14 +01:00
Alexander Shishkin
f563712782
fix formatting
Co-Authored-By: godric3 <godric3@users.noreply.github.com>
2018-10-28 16:36:11 +01:00
godric3
7ded9dbda8 Fix crash when generating random map with random number of players 2018-10-27 18:18:08 +02:00
DJWarmonger
273802c92c I have no idea what I'm doing 2018-07-26 12:14:29 +02:00
Johannes 'josch' Schauer
95bec98936
lib/rmg/CRmgTemplateZone.cpp: Remove a variable that was introduced in 2016 but never used 2018-04-19 15:07:21 +02:00
Johannes 'josch' Schauer
56fefca806
lib/rmg/CRmgTemplateZone.cpp: Add parenthesis to make operator precedence unambiguous 2018-04-19 15:06:26 +02:00
Arseniy Shestakov
ac66fc7f42 Full rework of pre-game interface and networking
New features for players:
* Loading for multiplayer. Any save could be used for multiplayer.
* Restart for multiplayer. All clients will restart together.
* Loading from single save.
* Hotseat mixed with network game. Multiple players per client.
* Now connection to server could be cancelled.
* Return to menu on disconnections instead of crashes.
* Restoring of last selected map, save or campaign on next run.

TLDR on important changes in engine code:
* UI: work with server separated from UI
* UI: all explitic blitting replaced with IntObject's
* UI: all new code use smart pointers instead of DISPOSE
* Gameplay always start through lobby controlled by server.
* Threads receiving netpacks now shared for lobby and gameplay.
* Campaigns: heroes for crossover now serialized as JsonNode.
2018-04-04 14:24:26 +07:00
AlexVinS
9d108d59db Redone RMG template serialization using JSON serializer, added tests 2018-03-10 19:36:19 +03:00
AlexVinS
26aad17295 Actually copy zone data from map generator template
* fixes https://bugs.vcmi.eu/view.php?id=2482
2018-03-05 17:05:48 +03:00
Nikolay Shalakin
3795985de9 Eliminate warnings / errors. Pull request #388 2018-02-11 15:17:14 +03:00
Michał Kalinowski
26a222ac62 Change JsonType to enum class (#393)
Change enum JsonType to enum class JsonType
2017-11-27 00:18:18 +03:00
DJWarmonger
8f42cdea67 Refactoring: use private pointer to CMapGenerator 2017-11-03 21:03:51 +01:00
AlexVinS
0868164147 (int) -> static_cast<int> 2017-08-12 15:43:41 +03:00
AlexVinS
15138c23de Finished conversion to new logging API
* removed logger streams
* (float3|int3)::operator() -> (float3|int3)::toString(), it was too ugly and confusing.
2017-08-11 23:06:27 +03:00
AlexVinS
143ff682bc Logging cleanup 2017-08-10 21:59:55 +03:00
AlexVinS
85e952f25f Logging cleanup 3 2017-08-10 20:17:10 +03:00
AlexVinS
61e241308d Logging cleanup 2017-08-10 19:52:05 +03:00
ArseniyShestakov
9d9c026c85 Code style: serialize everything on own lines for easier debugging (#357) 2017-07-31 16:35:42 +03:00
Arseniy Shestakov
cdd9dbc7f1 Code style: avoid some ambiguous else if indentation
If some code intentionally want to break else if to achieve specific indentation there must be braces.
2017-07-19 03:42:26 +03:00
ArseniyShestakov
a4c0ad94b1 Code style: remove default value hints in definitions (#342)
Some are outdated and this is something IDE are useful for.
2017-07-15 14:08:20 +03:00
Arseniy Shestakov
f1e5797834 Code style: move or add licensing information on top of every file 2017-07-14 01:26:03 +03:00
Arseniy Shestakov
dbcd79c48a Code cleanup: remove double and unneded semicolons 2017-07-12 22:01:10 +03:00
DJWarmonger
4d1fb67594 Sanity check for Coverity #1366290.
(Vector should never be empty, especially for chosen zone).
2017-05-27 21:37:05 +02:00
DJWarmonger
346d2ac588 Possible fix for #2681. 2017-05-27 14:57:45 +02:00
AlexVinS
a85b4cf2a5 * WIP on event condition format
* Hero portrait serialization
* Fix town spells serialization

* Added support for float exponential part in Json
* Added support for int64 in Json
* Added basic Hero definitions serialization
* Added rumors serialization
* Advanced player info serialization.
* Added Disposed heroes serialization, (!) not covered with tests yet
* Added Local event serialization
* Added Pandoras box serialization
* Added Seer hut reward serialization
* Added CQuest serialization
* Added API for map object instance names serialization.
* Added random dwelling options serialization
* Advanced town options serialization
* Advanced hero options serialization
* More map format tests
* A lot of fixes, cleanup and refactoring
2017-05-27 00:23:19 +03:00
DjWarmonger
73c62f1b4c Restore cut ring around main town. 2016-12-21 22:23:55 +01:00
DjWarmonger
4b3a878c00 Fix for passability. 2016-12-21 13:37:19 +01:00
DjWarmonger
a0596ebecf Add clearance under town to ensure passability. 2016-12-21 10:43:24 +01:00
DjWarmonger
cc452bdfa9 Improved road routing so they can go under any passable object. 2016-12-21 10:10:37 +01:00
DjWarmonger
f78b524731 - Remove obstacle in front of player-owned towns
- Allow obstacles to touch town object
2016-12-20 15:23:47 +01:00
DjWarmonger
e37c35e439 Zone guard will cause object be placed as far away from it as possible in both zones. 2016-12-20 11:58:39 +01:00
DjWarmonger
ee3aec55f2 Correct implementations of A* algorithm. Seemingly fixes #2496, it's also faster. 2016-12-15 16:29:23 +01:00
DjWarmonger
63d33a1e7c Extract priority queue construction for reuse. 2016-12-15 12:58:16 +01:00
DjWarmonger
4102546977 Corrected road generation - they will be straight whenever possible. 2016-12-15 12:36:47 +01:00
AlexVinS
609c6f81bd Fixed a few CWE-457 2016-11-27 22:37:41 +03:00
DjWarmonger
56b201e7e8 Fixed CID 1366289 and 1366290. 2016-11-25 19:32:54 +01:00
AlexVinS
5a3854a8de Fixed CID 1288852, CID 1243202 2016-11-25 16:51:31 +03:00
AlexVinS
db40e125eb Fixed CID 1243181, CID 1197449, CID 1366374, CID 1366377, CID 1366359 2016-11-24 21:56:30 +03:00
dydzio
5c07e1c432 Minor typo fixes 2016-11-10 11:51:47 +01:00
Vadim Markovtsev
c696746017 Fix some compilation warnings 2016-10-28 08:07:05 +02:00
AlexVinS
42e7128acc Fixed possible use-after-free crash with artifacts registration in RMG. 2016-09-08 14:48:48 +03:00
AlexVinS
6dc47a2de0 Fixed use-after-free crash with quests registration in RMG.
* code taken from PR #200
2016-09-08 14:48:46 +03:00
Arseniy Shestakov
452e28d183 Remove some useless includes found by cppclean
This of course was tested and shouldn't break anything
2016-08-26 04:42:16 +03:00
DjWarmonger
dea39b8497 Complete solution for Subterranean Gate placement. 2016-08-15 21:37:38 +02:00
DjWarmonger
7600f8cf08 Quick fix - stop spawning Subterranean Gates at the edge of the map. 2016-08-14 08:36:15 +02:00
DjWarmonger
f995756973 First part of Subterranean Gates rework. Fixes #http://bugs.vcmi.eu/view.php?id=2450 2016-08-13 19:48:44 +02:00
DjWarmonger
8186fcae99 Removed some legacy code, work in progress. 2016-08-13 12:42:45 +02:00
DjWarmonger
452027cd8d Handle ObjectInfo via pointer to avoid expensive copy. 2016-08-11 10:49:19 +02:00
DjWarmonger
2410f0af61 - WeightedRule optimization - part 1
- comments, style
2016-08-11 07:49:08 +02:00
DjWarmonger
2bffd4e5c1 Moar optimization! 2016-08-09 13:40:46 +02:00
DjWarmonger
7f0b852449 Huge optimization based on profiling - cut generation time by almost half (Jebus XL+U). 2016-08-09 10:12:13 +02:00
DjWarmonger
08dccb4cc3 Use binary search for roulette wheel. TODO: implement in other places. 2016-08-08 22:16:31 +02:00
DjWarmonger
7db2fc6d25 Fixes. Works correctly only for player factions configured in RMG options. 2016-08-06 12:16:13 +02:00
DjWarmonger
f980de7107 Place starting zones on surface/underground depending on player faction - first draft. 2016-08-06 10:04:03 +02:00
AlexVinS
57e588cba1 attempt to fix travis build 2016-07-28 13:15:19 +03:00
DjWarmonger
5a1383fea8 Correct implementation for previous fix. 2016-07-25 18:37:42 +02:00
DjWarmonger
d9556332e1 Hopefully fixed zone guards misplaced due to paths connecting at acute angles. 2016-07-24 18:15:23 +02:00
DjWarmonger
40f28778c2 Minor optimization, saves few seconds. 2016-07-14 14:24:11 +02:00
DjWarmonger
7d7b51d0db Generated zones can now have different sizes depending on template. 2016-07-13 10:35:31 +02:00
DjWarmonger
1d8fb01f46 More even distribution of surface / underground zones + refactoring. 2016-07-13 07:54:52 +02:00
DjWarmonger
ac68dca328 Fixed zone placer so it now correctly evaluates found solution. 2016-07-12 21:23:45 +02:00
DjWarmonger
aecf834cc1 Fixed placing of close objects #2447. Some additional refactoring. 2016-07-12 11:42:03 +02:00
DjWarmonger
e1e520f0a2 Removed "growing" zones which don't fit the rest of algorithm. Zones are now better connected on complex maps. 2016-07-11 15:44:24 +02:00
DjWarmonger
c3cbe89e2a Last improvement: attract zones and push them bakc in separate steps. 2016-07-10 18:16:32 +02:00
DjWarmonger
87ef3701aa Probably better fitness function. 2016-07-10 16:37:54 +02:00
DjWarmonger
8ceceb897e Fixed zones falling into negative cordinates. Should fix "assert(size)" crashes. 2016-07-10 14:32:45 +02:00
DjWarmonger
fb3adf762a Improved zone placer - zones on different levels are allowed to overlap completely. 2016-07-10 13:32:33 +02:00
DjWarmonger
f139b70279 Changed Subterranean Gate placement algorithm - now they are meant to be equidistant from both zone centers. 2016-07-10 12:29:48 +02:00
DjWarmonger
a66893af28 Fixed bug with Subterranean Gates:
Failed to connect (-1,-1,-1) with center of teh zone.
2016-07-10 10:11:29 +02:00
DjWarmonger
cfacd1adc3 Random template format change:
Tempaltes now can have optional "name" parameter for different names than identifier.
2016-06-06 11:30:51 +02:00
DjWarmonger
4101cabc22 Hidden unnecessary log. 2016-06-05 10:25:52 +02:00
DjWarmonger
053b342721 Minor optimization for object selection. 2016-06-05 10:18:10 +02:00