Commit Graph

758 Commits

Author SHA1 Message Date
historic_bruno 4043c56518 Fixes global init order bug that caused OOS between OS X and other platforms, fixes #3499. May improve pathfinding behavior in some cases, please test!
This was SVN commit r17132.
2015-10-15 02:51:12 +00:00
mimo b0f267b61c fix typo in UnitMotion, fixes #3474
This was SVN commit r17124.
2015-10-11 11:00:11 +00:00
sanderd17 f5348c6dd6 Introduce less rounding errors in the falloff to allow a more precise territory calculation. Fixes #3334. Based on code by elexis.
This was SVN commit r17122.
2015-10-11 09:01:50 +00:00
historic_bruno 02628b8902 Removes unused pathfinder consts, patch by stanislas69. Fixes #3500
This was SVN commit r17115.
2015-10-10 06:48:42 +00:00
Itms e0093c8ecc Remove an unused function (it was used by the old pathfinder).
This was SVN commit r17103.
2015-10-04 18:02:16 +00:00
Itms 2505a2ec70 Remove a preprocessor ambiguity, fixes #3480.
This was SVN commit r17101.
2015-10-04 17:21:36 +00:00
Itms cfe4a2e568 Fix a cause of serialization problems. Fixes #3450.
This was SVN commit r17097.
2015-10-03 11:02:12 +00:00
Itms bb997f6cae Fix previous commit.
This was SVN commit r17096.
2015-10-03 10:32:30 +00:00
Itms d60940ac59 Code improvements and style fixes.
This was SVN commit r17095.
2015-10-03 08:27:19 +00:00
Itms dc69aed954 Remove some old and unused code.
This was SVN commit r17094.
2015-10-02 18:27:10 +00:00
Itms 2132f868b8 Replace the rectangle rasterization algorithm by the original version from Philip's branch.
The current version is flawed (it doesn't handle the partially
obstructed cells as it should).

Refs #3410.

This was SVN commit r17084.
2015-09-27 16:46:26 +00:00
mimo a7e0dc1534 update attack and heal range queries, patch by leper, fixes #3080
This was SVN commit r17082.
2015-09-27 12:23:40 +00:00
Itms dcf8e66aca Update the goal serialization for 03d2c5e40b. Fixes #3425.
This was SVN commit r17068.
2015-09-24 17:13:39 +00:00
Itms b77ad821c2 Reenable formations and fix/improve the communication between UnitAI and UnitMotion. With the new pathfinder some path requests can be completed instantaneously, so UnitAI has to handle MoveStarted messages even in the IDLE state.
Please note that this commit makes #3410 really visible. Formation
members might pass through buildings.

Refs #3410, #3337.

This was SVN commit r17028.
2015-09-17 16:31:23 +00:00
Itms ae6475fcc0 Fix a typo, patch by godlikeldh.
This typo didn't have any influence since dirty unit shapes are usually
discarded during the rasterization (they don't block long-range
pathfinding). Switching the order of a check in RasterizeHelper prevents
performance problems to a really small extent.

This was SVN commit r17014.
2015-09-13 10:18:37 +00:00
Itms 03d2c5e40b Support inverted goals with the long-range pathfinder. This allows units to flee and should fix problems with ranged units too close to their targets. Fixes #3405, refs #3372.
Now that units flee it's necessary to fix the unit chasing: this commit
reintroduces some code from 298115f4c5 that disappeared with the
committing of the new pathfinder. Refs #1537.

Also includes some style improvements to the UnitMotion code.

This was SVN commit r17013.
2015-09-13 09:33:09 +00:00
leper 558695365d Add some documentation about system components. Fixes #3315.
This was SVN commit r17003.
2015-09-11 04:10:26 +00:00
leper fc051d94cc Add check for non-passable (likely water-only) maps to territory percentage calculation.
Patch by s0600204. Fixes #3407.

This was SVN commit r17002.
2015-09-11 02:16:21 +00:00
Itms 9da482ead4 Based on previous experimental changes, major update to the unit motion.
With this change, units will not check their movement against all
obstructions when moving: terrain and static obstructions are assumed to
be handled by the long-range pathfinder.
However, when static obstructions are changed, the paths have to be
invalidated. In order to minimize the performance impact, units will
check for obstructions when they move after a passability change. If
they collide with something, they will recompute a path that will take
into account the new passability map.

Also includes some code cleanup. This patch should not change
performance a lot: the lower number of checks should give a small
performance improvement while using the message broadcasting system
should hurt it a bit.

Fixes #3376, #3337, #1914.

This was SVN commit r16998.
2015-09-10 18:12:13 +00:00
leper 5a685b84ca Recompute the cost grid in the TerritoryManager when needed. Patch by s0600204. Fixes #3399, #3400.
This was SVN commit r16990.
2015-09-06 22:35:38 +00:00
Itms 448b8248cf Revert my experimental changes from the previous days. Hopefully I can design something that doesn't introduce a ton of new issues. Refs #3376
This was SVN commit r16986.
2015-09-05 18:20:08 +00:00
Itms 1d89d05956 Don't try to short-path to non-point goals, because the algorithm won't deal with connectivity. Fixes another bug reported in #3363.
This was SVN commit r16985.
2015-09-04 20:43:05 +00:00
Itms 3005637370 Make a compromise between f240374b28 and f134ac63bb by making the filtering of pathfinding-blocking shapes conditional.
Those shapes need to be taken into account when computing a short path,
but they need to be discarded when checking movements or they will
create long/short inconsistencies.

This was SVN commit r16981.
2015-09-03 20:09:25 +00:00
Itms 8dde1cda94 Style cleanup, and remove a wrong TODO.
This was SVN commit r16974.
2015-09-02 17:40:31 +00:00
Itms f134ac63bb Revert most of f240374b28 which was actually bad. It caused units to get stuck because the obstructions won't block the same paths when rasterized on the grid and when directly tested for collisions.
As a general rule, pathfinding-blocking shapes should not be tested
against for movements. Only the passability grid should be considered.
As the algorithm which tests paths on this grid was fixed in 1c9ea56800,
it can be safely used.

Fixes #3376.

This was SVN commit r16971.
2015-09-02 15:50:16 +00:00
Itms f47cb2c711 Fix the OOS reported by elexis in #3335, and clean some whitespace and style.
The list of modified entities was thrown out on global visibility
updates (those happen on rejoin) but only in-world entities were
actually updated then, causing problems with garrisoning.

Now the list of modified entities can happen to be large, so replace the
hacky check for infinite loops by a real check.

This was SVN commit r16962.
2015-08-30 17:42:10 +00:00
leper 2aef62d65f Handle backrefs properly for maps and sets. Fixes #3374.
Allocate the tag for the backreference before deserializing the content,
to match the order of serializing.

This was SVN commit r16959.
2015-08-30 04:51:16 +00:00
leper c9893b3dd0 Test serialization of nested maps. Refs #3164, #3374.
This was SVN commit r16954.
2015-08-30 00:06:39 +00:00
leper 8217fa1a0e Warn about range queries that can never return any results.
This was SVN commit r16951.
2015-08-29 22:49:49 +00:00
Itms 8e70140ec2 Handle properly static shapes that overlap the edge of the map (likely to happen with square maps).
This should fix #3364.

This was SVN commit r16944.
2015-08-28 11:38:14 +00:00
Itms d129ae3cd8 Fix a special situation where map control percentage wasn't computed properly.
Also improve the code and fix a typo.

Based on patch by s0600204, fixes #3378.

This was SVN commit r16941.
2015-08-27 16:26:32 +00:00
Itms a63b7a0126 Add ability to query the map control percentage, and use this value in the summary screen. Patch by s0600204, fixes #3321
This was SVN commit r16933.
2015-08-23 17:44:37 +00:00
Itms ba82743777 Some range-based for loops.
This was SVN commit r16926.
2015-08-20 12:58:41 +00:00
Itms b2e8a241d2 Properly check loaded scripts in the second simulation instance of a serialization test. Fixes #3238
This was SVN commit r16925.
2015-08-20 12:52:29 +00:00
Itms 1ab3a4a02d Fix 6506bc20cb, refs #3238
This was SVN commit r16924.
2015-08-20 12:49:43 +00:00
leper 558d43bac5 Replace some functor structs with lambdas, closures or range-based fors.
This was SVN commit r16923.
2015-08-19 03:33:04 +00:00
leper 36c6b50944 Revert emplace for associative containers. Fixes #3366.
GCC < 4.8.0 does not support emplace for those.
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44436.

This was SVN commit r16922.
2015-08-19 03:32:47 +00:00
Itms 1c9ea56800 Fix the CheckLineMovement algorithm. Added some comments and a test to avoid problems.
This addresses some "stuck units" cases.

This was SVN commit r16918.
2015-08-13 16:21:39 +00:00
Itms 01de76f4be Code improvements for the hierarchical pathfinder: cache hits and variable initialization.
This was SVN commit r16917.
2015-08-11 15:21:11 +00:00
Itms 28ef270571 Enhance the MakeGoalReachable algorithm to handle better non-point goals.
Fixes #3363, #3297.

This was SVN commit r16915.
2015-08-11 09:47:08 +00:00
leper 8bfe16cac8 Use in-place construction.
This was SVN commit r16894.
2015-07-29 23:44:17 +00:00
leper c5eb9b7bb7 Range-based for for VfsPath loops.
This was SVN commit r16893.
2015-07-29 23:44:12 +00:00
leper da48c8c26f Some const refs and one const function.
This was SVN commit r16882.
2015-07-27 01:08:25 +00:00
Itms f240374b28 Fix a number of short/long range pathfinder inconsistencies revealed by 128a603287.
This was SVN commit r16869.
2015-07-18 12:33:40 +00:00
Itms 128a603287 Use the terrain-only grid for terrain edges in the short pathfinder algorithm. This grid is updated on each terrain change, whereas the passability grid is updated once a turn. This caused OOS on rejoin, fixes #3292.
However, using the terrain-only grid reveals one discrepancy between the
short pathfinder (which uses unit radii) and the long one (which uses
unit clearances). So I implemented the change proposed by sanderd17 in
#3294, which is removing unit radius and using only the pathfinder
clearance. Refs #3294
Now some tweaking has to be done in the templates, so that units get a
passability class suited to their apparent size. In the meantime the
unit motion is quite bugged.

This was SVN commit r16867.
2015-07-18 08:37:49 +00:00
Itms 8fc4ecaa6b Fix previous commit, stupid typo...
This was SVN commit r16859.
2015-07-15 16:57:23 +00:00
Itms b58f8ab969 Serialize the activation flag of the scripted Visibility component.
Currently only preview entities are affected, and they are not
serialized, but it could break a lot of things in the future.

This was SVN commit r16858.
2015-07-15 16:55:05 +00:00
Itms 39d93ea17c Change the handling of modified entities in the visibility update.
The game has to deal with situations such as: the visibility of an
entity changes, a mirage is created for it -> the mirage visibility is
updated -> the entity visibility is updated back.
All of this process now happens in the same turn, and all updates are
guaranteed to be performed. This fixes a source of serialization errors
and rejoin OOSes.

Fixes #3107

This was SVN commit r16857.
2015-07-15 16:46:59 +00:00
Itms 9f1b85d562 Remove a useless global terrain update when modifying environment settings in Atlas.
Also make sure that the settings are updated in the game view in a
non-hacky way.

This was SVN commit r16855.
2015-07-14 17:08:02 +00:00
Itms 0c45e3b5d0 Correctly compute the masks for shared visibility updates. The old code was working only because of luck when shared vision was always reciprocal.
Refs #2055, fixes #3327

This was SVN commit r16842.
2015-07-11 16:45:09 +00:00