RoosterDragon
2ed0656d1b
Introduce MoveCooldownHelper to prevent lag spikes from failed pathfinding
...
Several activities that queue child Move activities can get into a bad scenario where the actor is pathfinding and then gets stuck because the destination is unreachable. When the Move activity then completes, then parent activity sees it has yet to reach the destination and tries to move again. However, the actor is still blocked in the same spot as before and thus the movment finishes immediately. This causes a performance death spiral where the actor attempts to pathfind every tick. The pathfinding attempt can also be very expensive if it must exhaustively check the whole map to determine no route is possible.
In order to prevent blocked actors from running into this scenario, we introduce MoveCooldownHelper. In its default setup it allows the parent activity to bail out if the actor was blocked during a pathfinding attempt. This means the activity will be dropped rather than trying to move endlessly. It also has an option to allow retrying if pathfinding was blocked, but applies a cooldown to avoid the performance penalty. For activities such as Enter, this means the actors will still try and enter their target if it is unreachable, but will only attempt once a second now rather than every tick.
MoveAdjacentTo will now cancel if it fails to reach the destination. This fixes MoveOntoAndTurn to skip the Turn if the move didn't reach the intended destination. Any other derived classes will similarly benefit from skipping follow-up actions.
2024-07-01 15:56:11 +03:00
RoosterDragon
360f24f609
Fix IDE0055
...
This rule no longer appears to be buggy, so enforce it. Some of the automated fixes are adjusted in order to improve the result. #pragma directives have no option to control indentation, so remove them where possible.
2023-11-16 08:45:10 +02:00
RoosterDragon
4dd787be13
Fix RCS1061
2023-11-10 10:38:41 +02:00
RoosterDragon
f4af5c1764
Fix CA1852
2023-06-06 11:51:47 +03:00
abcdefg30
5bf7fe852c
Remove the copyright year numbers
2023-01-11 11:58:54 +02:00
Gustas
f7286b525c
Move AbortOnResupply from AttackAircraft to AttackFollow
2022-11-17 20:42:47 +01:00
notsinned
5242716887
Fix for turret following invisible unit
...
Fixed turret tracking invisible units after being attacked
Fix for turret following invisible unit
Fix for turrent following invisible unit
2022-10-30 14:08:29 +01:00
abcdefg30
d8349a429a
Remove unnecessary uses of Exts.IsTraitEnabled
2022-10-14 13:50:57 +03:00
abcdefg30
d830bca706
Fix force fire opportunity targets not being persisted properly
2022-08-06 15:38:46 +02:00
abcdefg30
5f86f56bed
Reduce code duplication in AttackFollow
2022-08-06 15:38:46 +02:00
abcdefg30
0134f63f4d
Fix actors with AttackFollow moving away from their targets on amove
2022-08-06 15:38:46 +02:00
abcdefg30
6a31b1f9f3
Update the copyright header year
2022-05-28 00:35:10 -05:00
Matthias Mailänder
0e7ad43425
Remove unused parameters.
2022-04-01 23:30:26 +02:00
Andre Mohren
6810469634
Updated copyright years.
2021-06-29 18:33:21 -05:00
Paul Chote
77ffc20a5f
Convert Attack*.FacingTolerance to WAngle.
2020-11-30 16:39:48 +01:00
teinarss
13581c030d
Use in parameter for Target
2020-11-06 22:02:24 +01:00
abcdefg30
9f093da61e
Unhardcode the leeway range of AttackFollow
2020-09-11 23:55:57 +02:00
teinarss
8d27d22100
Use discard syntax
2020-08-19 18:11:07 +01:00
teinarss
27f1a7ab27
Use out var syntax
2020-08-19 18:11:07 +01:00
Paul Chote
6adf45bcb4
Convert IFacing.Facing and TurnSpeed to WAngle.
2020-06-12 18:35:41 +02:00
Paul Chote
16e0ea611e
Revert "Fix AttackFollow ignoring allowMove flag when auto-targeting."
...
This reverts commit 3e116060cfc0a3e46563716c3e594a4ba3051b93.
2020-03-02 22:22:56 +01:00
Paul Chote
ab196a23e6
Fix AttackFollow ignoring allowMove flag when auto-targeting.
2020-02-14 17:30:38 +01:00
Paul Chote
51870a471a
Add AttackSource enum.
2020-01-18 16:38:53 +01:00
abcdefg30
23b3c237b7
Update the year numbers in all license headers to 2020
2020-01-05 17:00:34 +00:00
abcdefg30
1e138a9774
Drop invisible invalid targets immediately when changing stance
2019-12-14 17:17:36 +01:00
tovl
33d089a9d6
Fix lastVisibleTarget not being set in FlyAttack and AttackActivity.
2019-10-14 01:22:04 +02:00
tovl
5393b689d4
Disable preemptive targeting for queued orders.
2019-08-10 19:10:45 +01:00
Turupawn
3240b1e9eb
Overhaul target line rendering:
...
- Targets are now defined by the activities
- Queued activities are shown
- Support custom attack colors
2019-08-05 02:53:09 +01:00
tovl
d59b01597a
Always clear requested targets when exiting AttackActivity/Flyattack.
2019-07-18 23:14:56 +01:00
tovl
3790169db9
Make Tick return bool
2019-07-03 20:42:19 +02:00
tovl
b9c302a73a
Move ChildActivity handling into base Activity class.
2019-07-03 20:42:19 +02:00
Paul Chote
ff9db0bf7a
Reset RequestedTargets that are cancelled before the first attack tick.
2019-06-29 23:28:23 +02:00
Paul Chote
8f7426f579
Reduce duplication around AttackFollow's targets.
2019-06-29 23:28:23 +02:00
Paul Chote
3ca9d4b773
Drop targets when switching to a more restrictive stance.
2019-05-21 15:52:55 +02:00
Paul Chote
44c5d38a0e
Disable AutoTarget if targeting a persistent fallback.
2019-05-19 13:23:01 +02:00
tovl
9abf715fd7
Allow opportunity fire for aircraft.
2019-05-04 23:40:16 +02:00
tovl
f16ff9eaa0
Base AttackAircraft on AttackFollow and get rid of SequenceActivities.
2019-05-04 23:40:16 +02:00
tovl
30de4df749
Replace SequenceActivities with ChildActivity in several activities.
2019-03-25 20:22:35 +00:00
tovl
a17cd0fa06
Replaced Canceled state with Canceling state.
2019-03-09 21:47:43 +00:00
tovl
8191a6566b
Add missing self and optional pretick parameters to Queue, QueueChild and PrintActivity methods.
...
This means sequenceActivities needs to accept self as well.
2019-03-09 21:47:43 +00:00
Paul Chote
ab4a7e3558
Replace System.Drawing primitives with our own.
2019-03-04 18:26:42 +00:00
Paul Chote
8b618ef7bc
Fix maximum range estimation for stationary turrets.
2019-03-02 18:16:12 +01:00
Paul Chote
49621bebd0
Abort activities when we don't know how close to move to a target.
2019-02-09 19:20:10 +01:00
Paul Chote
c26e77552e
Allow turreted actors to acquire targets while doing other activities.
2019-02-03 18:07:02 +01:00
Paul Chote
012b17b974
Implement a secondary target-of-opportunity for AttackFollow.
2019-02-03 18:07:02 +01:00
Paul Chote
dc40a973e3
Allow attack orders to preempt move completion for turreted units.
2019-01-27 15:21:13 +01:00
Paul Chote
0bfc487999
Fix target invalidation and reacquisition in AttackFollow.
2019-01-26 22:53:46 +00:00
Paul Chote
d03c5b1c48
Split Target.Recalculate into methods with and without invalidation.
...
TargetExtensions is moved into its own file.
2019-01-26 22:53:46 +00:00
Paul Chote
b2d960ec19
Pass target line color to inner move activities.
2019-01-26 22:53:46 +00:00
abcdefg30
cadbd0d9ab
Change the year number in all cs headers from 2018 to 2019
2019-01-26 23:15:21 +01:00