Objectives can be either primary or secondary objectives. Primary ones
influence the outcome of the game. If all primary objectives are
completed the game is won, and lost when any of them fails.
Objectives can be added at any stage during the game, allowing to react
dynamically to game events.
The objectives backend only contains the information about the
objectives themselves. It does not check if objectives are completed or
failed. Instead, the state of objectives must be manually marked. The
backend, however, does check whether the game is won or lost.
Changes included:
Warhead code split out of weapon code and refactored.
Warhead functionality now split into several classes, each handling one effect/impact.
Additional custom warheads can now be defined and called via yaml.
Custom warheads inherit the abstract class Warhead,
which provides target check functions.
Custom warheads have to define their own impact functions,
and can also define their own replacement for check
functions.
string[] CloneableTypes checks Cloneable.Types
Cloneable:
string[] Types checked by ClonesProductionUnits.CloneableTypes
Added INotifyOtherProduction
for notifying self when another actor
produces a unit.
- Add separate ImmutablePalette and MutablePalette classes since the distinction is extremely important to HardwarePalette.
- Keep a cache of palettes in HardwarePalette to avoid reallocation them every time ApplyModifiers is called.
- Palettes that are not allowed to be modified are copied to the buffer once when added, rather than every time ApplyModifiers is called.
- The AdjustPalette method now takes a read-only dictionary to prevent the dictionary being messed with.
- Added a constant for the palette size to remove its usage as a magic number in several areas.
- The ColorPreviewManagerWidget is annoying in that it needs to actually permanently update a palette after it has been added. To allow this, HardwarePalette now allows a palette to be replaced after initialization. The WorldRenderer therefore now also updates the PaletteReference it created earlier with the new palette to prevent stale data being used elsewhere.
-Palette for decorations can now be defined under SelectionDecorations trait.
-Adds pip types Ammo and AmmoEmpty.
-LimitedAmmo PipTypes are now customizable.
-Adds art, sequences and rules entries for TS mod decorations that were missing/using a wrong palette.
-Adds PrimaryBuilding trait to TS weapon factories and helipads.
In Mobile.cs IsMoving now has a public set as opposed to the initial internal.
Added IMoveInfo interface to go with *Info classes that require IMove.
WithRotor now uses IMove.IsMoving instead of (self.CenterPosition.Z > 0) as part of a check.