Commit Graph

30600 Commits

Author SHA1 Message Date
atlimit8
e27aa0d379 replace use of BaseAttackNotifier trait w/ DamageNotifier 2025-04-30 22:22:53 +03:00
atlimit8
2b1121b970 add DamageNotifier 2025-04-30 22:22:53 +03:00
michaeldgg2
5537a194fa DockClientManager: enter cursor per DockHost's DockType 2025-04-30 21:46:56 +03:00
Paul Chote
56c615d890 Fix invalid CachedTransform uses of MapPreview. 2025-04-30 14:06:42 +03:00
Paul Chote
e8d710dee4 Prevent remote map searches overwriting local or generated state. 2025-04-30 13:21:26 +03:00
Ashley Newson
4a4217c3b3 Fix resource calculation in map generator
The editor's resource value calculation logic was fixed in #21820 to
match actual gameplay. The map generator logic originally copied the
editor logic from EditorResourceLayer rather than ResourceLayer and
associated game logic. As such, it inherited incorrect calculations.

This change updates the map generator logic to match the now
consistent logic in both ResourceLayer classes. Map generator resource
settings are also adjusted -25% to continue roughly matching the
previous resource output.
2025-04-30 12:51:14 +03:00
Paul Chote
965a490b70 Dynamically populate map chooser tabs. 2025-04-29 12:17:27 +03:00
Paul Chote
5b7a714ac2 Replace Tileset id with Environment name. 2025-04-28 15:41:54 +03:00
Paul Chote
90013bc6d3 Migrate tileset names to Fluent. 2025-04-28 15:41:54 +03:00
Paul Chote
246a1b9fec Move map installed check to LobbyLogic. 2025-04-28 13:08:38 +03:00
Paul Chote
e5ffed2a4f Require map generators to specify valid tilesets. 2025-04-28 12:54:08 +03:00
Gustas
c41a1302b6 Fix explored map being rendered incorrectly on first frame 2025-04-26 20:45:42 +01:00
Gustas
bad58b5821 Don't fade in shellmaps 2025-04-26 20:45:42 +01:00
Gustas
4c551cef00 Add more customization to fade, shorten fade in 2025-04-26 20:45:42 +01:00
Gustas
d3b7688a7d Fix fading in not working 2025-04-26 20:45:42 +01:00
Paul Chote
9c78c45faf Split IMapGeneratorInfo into core backend and editor frontend. 2025-04-25 20:51:33 +03:00
Paul Chote
ce41ec3fc3 Skip dropdowns that have no valid options. 2025-04-25 15:21:29 +03:00
Ashley Newson
07ef98a578 Improve map-generated roads for awkward symmetries
For awkward symmetries (where there is mirroring and/or non-grid
aligned rotations), road planning now runs an extra filtering step so
that only sufficiently symmetric road plans make it to the tiling
stage.

Road planning also now extends out-of-map-bounds to more accurately
accommodate awkward rotations, improving the symmetry of pre-filtered
road plans.

A previous filter, which removes nearly horizontal or vertical roads
is now removed, as this is not fair to all rotations. This step is
less importance since the introduction of relaxed tiling.

Note that roads may be dropped entirely if the plans come out highly
asymmetric. This is not uncommon for awkward rotations. This is
preferred over presenting a map with asymmetric roads.
2025-04-25 15:09:27 +03:00
Gustas
c541a0e0dc Improve HD sheet creation 2025-04-19 16:34:13 +01:00
Ashley Newson
f1573d4b0c Add map-generated beaches to more CnC tilesets
CnC map generation previously only supported maps with water/beaches
for the DESERT tileset, as it is the only tileset with a complete set
of beach tiles. This change adds support for the other tilesets
(TEMPERAT, SNOW, WINTER) by adding fake beach templates constructed
from actors and other templates' tiles that look reasonable in both
original and remastered graphics.

This means all CnC tilesets have feature parity in the map generator.
2025-04-19 15:45:49 +03:00
Paul Chote
ede12610a8 Change Map.MapSize from int2 to Size. 2025-04-19 14:06:32 +03:00
Paul Chote
2fbbff2860 Change Size.ToString output to support FieldLoader. 2025-04-19 14:06:32 +03:00
Gustas
cd9001e7b9 Don't allocate empty sheets 2025-04-19 11:25:17 +01:00
Gustas
87cff1f6f1 Localise DummyBot 2025-04-19 11:11:53 +01:00
Gustas
39aec39364 Initialise VertexBuffers immediately 2025-04-19 10:40:31 +01:00
Ashley Newson
a2096b6768 Use MultiBrush as the input and output of TilingPath
This generalizes TilingPath to accept MultiBrushes instead of templates
and makes the output also a MultiBrush. As a result:

- Composite or faked templates can be used in tiling. This will (in a
  later change) be used to support CnC beaches outside of the desert
  tileset.
- The tiling result can be previewed without committing it onto the map,
  making it more viable for adoption as an editor tool.
- The full shape of the tiling result can be inspected without messily
  reading it back off of the map, simplifying some map generator logic.
- Separates map generation-specific segment definitions from the core
  template definitions.
- As MultiBrushes can be many-to-one with templates, there is no need to
  have a one-to-many template-segment relationship. Multi-segment
  templates, such as roads, now use multiple brushes instead. This
  simplifies the logic of segment consumers.

Previously, MultiBrushes which contained no offset information in their
definitions were automatically aligned such that the first tile was
under 0,0. This is no longer the case. This was previously done for use
in MultiBrush.PaintArea to improve tile packing success, but the
alignment is now handled automatically by PaintArea instead.

Due to some impure refactoring which changes the randomization of
tiling choices, map generation results may change.
2025-04-18 18:19:11 +03:00
Paul Chote
cf11c6633e Simplify Player and Symmetry options.
Player now specifies the total player count,
and the Symmetry options adjust to show only
valid options.
2025-04-18 13:49:20 +03:00
Paul Chote
31154e3d2d Remove derived properties from Parameters. 2025-04-18 13:49:20 +03:00
michaeldgg2
e10cdc6690 Docking: fix aircraft clients trying to dock with different host than expected 2025-04-18 11:19:27 +03:00
Ashley Newson
f09959ecba Support relaxed end points in TilingPath
Whilst TilingPath has always allowed deviating from the path points
between the start and end point, it didn't allow deviation from the
start or end points themselves. This change allows the end point to
deviate if the tiling would otherwise fail. The start point remains
strictly positioned, as before. Loop end points (which must necessarily
match the start) also remain strict.

The ExperimentalMapGenerator is modified to benefit from the relaxed
tiling constraints. As a result, failed map generation due to tiling
failures is much rarer, and will make some otherwise very inflexible
template categories viable for tiling.

Includes some impure refactoring around the treatment of start,
intermediate, and end segments. As such, this changes map generation
output, even for maps which already tiled perfectly.

A previous workaround used for CnC road templates, whereby additional
segments were defined for road ending templates, is now redundant and
cleaned up.
2025-04-18 11:13:23 +03:00
Paul Chote
b2acc653a0 Promote map generators to stand-alone editor tools. 2025-04-18 11:00:53 +03:00
Paul Chote
78f660124c Rewrite map generator settings UI logic. 2025-04-18 11:00:53 +03:00
RoosterDragon
8f46247dc9 MiniYaml.From* methods support deferred execution.
Previously, the MiniYaml.From* helpers such as FromStream would consume the entire input and then return a list of top-level nodes. Now, the input is processed using deferred execution and top-level nodes are yielded as they are resolved from the input.

The motivating use-case is MapCache, which currently manually buffers nodes before passing to MiniYaml.FromString in order to improve responsiveness when large payloads are processed. Now that MiniYaml.FromStream yields results back as they come in, we can switch to that without disadvantage.

The maintains the performance where map cache can update search results as each node comes in over the network rather than having to wait for the entire batch to be transferred. Now we can also remove the string buffer that captures each node, reducing memory pressure and simplifying the code.
2025-04-13 14:12:25 +03:00
RoosterDragon
5676d7be40 Prevent crash when using QuantizedFacings: 0 on BodyOrientation.
This override allows quantization to be disabled, and is used by the TS mod as the voxel based actors can be rotated to any orientation/facing. To prevent a divide by zero error for these actors, we need to return early from QuantizeFacing just like we do in QuantizeOrientation.

However, when QuantizedFacings is not explicitly set to zero, we still want to catch errors when artwork sequences have zero facings. The new check would cause such errors to be hidden. To prevent this add some exceptions with a detailed error message.
2025-04-13 14:00:22 +03:00
N.N
d459d3883d Add SoundFX for Ornibomb, Devastator Meltdown, Sabotuer 2025-04-06 12:28:08 +02:00
Gustas
af0dee3382 Fix incorrect tile definition 2025-04-06 12:19:26 +02:00
RoosterDragon
a4317fec57 MiniYaml applies removal during merging as well as inheritance.
Currently removal nodes in MiniYaml are only applied whilst resolving inherited nodes. When merging collections to override existing nodes the removals are not resolved, resulting in duplicate key errors if you remove a node to then add it back with different values.

Now, removal nodes are also resolved when merging, allowing nodes to be removed as overridden during merging just like they can be with inheritance.
2025-04-06 12:14:16 +02:00
RoosterDragon
3c2945c1bc Add OpenRA.Test to the solution build configuration.
When the solution is built, previously the Test and WindowsLauncher projects were excluded. Now only the WindowsLauncher project is excluded. This avoids needing to build the Test project separately after building the solution.
2025-04-06 00:04:42 +03:00
abcdefg30
d136ccc350 Don't allow actors to disguise themselves as themselves 2025-04-05 17:12:20 +03:00
Paul Chote
76cbd5582d Show FixedColorPalette options in the asset browser. 2025-04-04 17:39:17 +03:00
Paul Chote
d26d9e0b9c Remove redundant custom tiberium sprites. 2025-04-04 17:39:17 +03:00
Paul Chote
c187d21b95 Remove TD Jungle tileset.
This tileset was community content, and does not have remastered assets.
There is no realistic prospect to creating equivalent remastered assets,
which leaves removal in order to achieve parity between classic and
remastered modes.
2025-04-04 14:29:50 +03:00
RoosterDragon
36660b89e9 Silence IDE0290.
This rule recommends use of primary constructors. Apply the suggestions on simple POCOs, adjusting some to readonly/structs/records at the same time. For more complex classes, the use of primary constructors is more distracting than helpful, so silence the rule. IDEs can still offer fixes for using primary constructors, but it will not show up as a build issue.
2025-04-02 10:18:32 +03:00
Paul Chote
3de6a5fd5a Use the TerrainRenderer for rendering template-based bridges. 2025-04-02 10:08:39 +03:00
Paul Chote
737890d395 Fix PBOG offset not accounting for zoom. 2025-04-02 09:59:40 +03:00
Paul Chote
c04041e328 Add StructureSold notification placeholder for TDHD. 2025-04-01 20:23:05 +03:00
Paul Chote
c028d8ad29 Define ColorShift data for TDHD. 2025-04-01 20:23:05 +03:00
Paul Chote
597e8e1573 Replace fog palette with sequence alpha. 2025-04-01 20:23:05 +03:00
Paul Chote
0b03d7ea31 Enable player color for crushed sequences. 2025-04-01 20:23:05 +03:00
Paul Chote
ee24d0539a Replace custom oil derrick sprite with palette. 2025-04-01 20:23:05 +03:00