Compare commits

...

11347 Commits

Author SHA1 Message Date
Paul Chote
253e02ae08 Remove dependency on VCRUNTIME140.dll.
(cherry picked from commit bb6400f6f8585523c31dfeb7ab95073263aadd3c)
2023-02-13 21:27:35 +02:00
penev92
f707b9c975 Fixed Makefile check of MacOS architecture 2023-02-05 00:19:18 +01:00
abcdefg30
8629e578e3 Throw an ArgumentException when trying to translate null keys
(cherry picked from commit e4bb13ea07)
2023-02-03 08:36:24 +02:00
abcdefg30
c65cfd3528 Fix an NRE in ConnectionLogic
(cherry picked from commit 84add8a03d)
2023-02-03 08:34:57 +02:00
Azarus
7ad6cfda40 Add an option to check if an actor can be captured via Lua 2023-01-30 13:47:02 +02:00
Dean Simmons
393fd585b1 Only return file paths when returning zip contents
(cherry picked from commit e1b78c4821)
2023-01-26 19:26:59 +02:00
penev92
ea221f9bfb Fixed RA parabomb/paradrop support power tooltips
The AFLD's AirstrikePower@parabombs' description wasn't updated to the latest balance patch (3 Badgers -> 1 Badger)
2023-01-26 09:32:54 +01:00
N.N
b4ca81d1bd Fix deviator GrantExternalCondition Warhead
Warhead now applies only to enemy and neutral units.
2023-01-18 23:43:12 +01:00
RoosterDragon
49590bb5f7 Fix Locomotor cache coherency for disabled or paused mobile actors.
The cache in Locomotor that is populated via the UpdateCellBlocking method disagreed with the non-cached logic of IsBlockedBy when dealing with Mobile actors. The cache determined an actor to be moving if it was both movable and had horizontal movement types. IsBlockedBy determined an actor to be moving if it had horizontal movement types, but did not check if it was movable. This difference in checks could allow a mobile trait that was disabled or paused and which had horizontal movement to be treated differently be the two methods. UpdateCellBlocking would consider it not moving due to the disabled/paused trait. IsBlockedBy would consider it moving as it didn't care about the disabled/paused state of the trait.

Now, we unify the two methods to consider a mobile trait that is disabled/paused as not moving. This prevents HierarchicalPathFinder from crashing on the inconsistent state, i.e. when asked to path search through a cell of a mobile unit which has disabled or paused movement, but which has horizontal movement types from prior movement.
2023-01-17 18:58:34 +01:00
David Wilson
2d059c0d95 Fix to ensure Windows uninstaller removes reg entries from the 64 bit registry 2023-01-14 13:50:04 +01:00
penev92
d5dd6a9086 Added ITilesetSpecificPaletteInfo for linting 2023-01-10 16:37:56 +00:00
Gustas
a7ca0f0699 Fixed UnhardcodeBaseBuilderBotModule update rule
Update rules should should not read `modData.DefaultRules`

(cherry picked from commit 80b92fb667)
2023-01-10 18:13:01 +02:00
Gustas
4b02d9b700 Fixed UnhardcodeSquadManager update rule
Update rules should should not read `modData.DefaultRules`

(cherry picked from commit 29d21545a6)
2023-01-10 18:12:58 +02:00
Gustas
ebf55c8d86 Exclude Plugs from TS protection types
(cherry picked from commit 326f8115a0)
2023-01-10 18:12:51 +02:00
Paul Chote
f928922f3a Add BeforeUpdate* methods for update rules.
These make it possible to write more advanced update
rules that query state across multiple actors, or
based on resolved state.

(cherry picked from commit 129db98a2f)
2023-01-10 18:05:11 +02:00
penev92
bc3743d9ff Added an update rule for adding ControlGroups 2023-01-10 00:14:45 +01:00
penev92
8aa6600655 Added an update rule for DomainIndex removal
Also for adding the new HPF-related PathFinderOverlay and HierarchicalPathFinderOverlay that were added at the same time.
2023-01-10 00:14:04 +01:00
Ivaylo Draganov
215b3d8ab3 Clarify the wording and explain the meaning of some labels in settings
(cherry picked from commit 04648a66e6)
2023-01-09 21:59:41 +02:00
Matthias Mailänder
a397670dce Fix URL button blocking the party button. 2023-01-08 23:07:44 +01:00
Matthias Mailänder
43d7f9c6df Bump DiscordRichPresence library. 2023-01-08 23:07:42 +01:00
Gustas
6904ea8c6b Fixed a spelling error in Discovery ant mission 2023-01-07 17:02:19 +01:00
Gustas
d702d58d1a Remove bogus bridge tiles from temperate tileset 2023-01-07 17:02:18 +01:00
abcdefg30
e0b0c5624f Remove custom network frame counting from ReplayConnection 2023-01-04 09:35:06 +00:00
abcdefg30
33773f895c Specify targetable offsets for the repair pad in Dune 2000 2023-01-03 13:33:20 +01:00
Matthias Mailänder
9f759f3cc2 Enforce use of 'var' instead of explicit type.
(cherry picked from commit 19ecddcd86)
2022-12-29 10:05:20 +02:00
Paul Chote
9fb4302b2f Downgrade OpenAL-soft to 1.10.1.
1.12.2 introduces noticeable behaviour changes
to source positioning and cash ticks. This also
fixes missing sound backends on Linux.
2022-12-28 00:19:39 +01:00
abcdefg30
4685c1a6b1 Change into the correct directory before trying to push
Each workflow step starts back in the default directory,
so we need to checkout the repository folder again
2022-12-24 16:04:51 +01:00
abcdefg30
70bc5b097d Let the documentation workflow fetch the required git branch 2022-12-24 16:04:45 +01:00
Paul Chote
7691507baf Fix pseudo-fullscreen window size on macs with a notch. 2022-12-24 12:12:12 +01:00
abcdefg30
8d6cebe654 Fix map actors not being spawned with the correct owner 2022-12-24 11:20:58 +02:00
Matthias Mailänder
daf10c34a6 Fix invalid actors not spawning in-game. 2022-12-23 18:33:50 +01:00
Matthias Mailänder
d96ec21b95 In map editor replace invalid actor owners with neutral. 2022-12-23 18:33:49 +01:00
Paul Chote
aea1182bb5 Implement state prediction for lobby ready checkbox. 2022-12-23 16:34:05 +02:00
Paul Chote
b413b97a52 Implement state prediction for debug menu checkboxes. 2022-12-23 16:34:05 +02:00
Paul Chote
7daa27f123 Implement state prediction for lobby checkboxes. 2022-12-23 16:34:05 +02:00
Paul Chote
f3f98d8750 Package macOS releases as a universal binary.
* Minimum macOS version is raised to 10.11.
* App bundles ship 3 versions of the runtime and engine binaries,
  and a fat launcher that selects the appropriate runtime/apphost.
* Mono is used for macOS 10.11 - 10.14, or if OPENRA_PREFER_MONO
  environment variable has been set.
2022-12-23 12:55:53 +02:00
Paul Chote
69eeb2dc84 Update native deps to include macOS and Linux arm64 binaries. 2022-12-23 12:55:53 +02:00
Paul Chote
7cee29ff70 Report CPU arch in logs and sysinfo. 2022-12-23 12:54:29 +02:00
Paul Chote
5e80fee913 Fix MiniYaml source locations being lost when merging. 2022-12-23 10:45:24 +02:00
Gustas
c1474204e2 Added carryalls to spectator Economy statistics 2022-12-21 21:09:16 +01:00
N.N
223f9408fd Change tile 9 to Rough TerrainType 2022-12-21 19:57:19 +02:00
Gustas
674ca8555b Fix contrail using the wrong colors 2022-12-21 19:36:12 +02:00
abcdefg30
275325b0cf Run the CI workflow on PRs targeting prep 2022-12-21 13:28:48 +02:00
Paul Chote
06e399d3ce Bubble unhandled double-click events to OnClick. 2022-12-20 23:06:19 +01:00
RoosterDragon
d6d77eab7c HPF is aware of map projection changes.
An event is added to Map to indicate when the cell projection is changed. This is important as this can mean Map.Contains(CPos) could now return different results for the cell. The HierarchicalPathFinder is made aware of these changes so it can rebuild any out-of-date information. This fixes prevent a crash if a cell that was previously outside the map changes height and becomes inside the map. The local path search will explore the cell as it is inside the map - but if the HPF was unaware if had been updated, it will still consider the cell to be outside the map and unreachable, resulting in a crash.
2022-12-20 09:48:44 +13:00
RoosterDragon
2392566c1d HPF handles searches from unreachable source cells into cut off areas.
If a path search is performed by the HierarchicalPathFinder when the source cell is unreachable location, a path is still allowed and starts from one of the cells adjacent to the location. If moving into one of these cells results in the actor moving into an isolated area that cannot reach the target this would previously crash as no abstract path could be found. Now we handle such locations by giving them a unreachable cost so the path search will not attempt to explore them.

Imagine a map split into two by a one tile wide line of impassable cliffs. If an actor is on top of these cliffs it is allowed to path because it can "jump off" the cliff and move into the cell immediately either side of it. However it is important which side it chooses to jump into, as one it has moved off the cliff it loses access to the other side. The previous error came about because the path might try and search on the side that couldn't reach the target location. Now we avoid that being considered.
2022-12-20 09:48:36 +13:00
Matthias Mailänder
028467f150 Fix documentation deployment. 2022-12-18 12:57:21 +13:00
abcdefg30
eee4b04248 Fix the actor edit panel not always getting closed properly 2022-12-18 12:25:21 +13:00
Gustas
f551b542f3 Fix map editor sliders stealing focus 2022-12-15 21:06:25 +01:00
Smittytron
5d5419702b Remove MustDestroy from longbows in Soviet 11 2022-12-10 16:16:24 +02:00
Smittytron
47e89b7d76 Fix Siberian Conflict 3 win trigger 2022-12-10 16:16:13 +02:00
N.N
9bb0409f19 Update D2k map pool 2022-12-07 23:39:44 +01:00
abcdefg30
80ac494948 Fix carryables vanishing when another unit is picked up 2022-12-04 17:41:44 +02:00
abcdefg30
eb82f2b975 Remove a stray $ from infront of the version string when writing logs 2022-12-03 23:49:24 +02:00
abcdefg30
a5c8db82da Mark the script as executable 2022-12-02 23:32:41 +01:00
abcdefg30
2a26ff6818 Revert "Update Ubuntu"
This reverts commit ac351f6e65.
2022-12-02 23:32:39 +01:00
Matthias Mailänder
5a11d54956 Execute self-contained binaries with runtime as backfall 2022-12-02 23:03:58 +01:00
Gustas
26c5a8b76c Add cell reference HPF crash messages 2022-12-02 17:50:13 +01:00
Matthias Mailänder
efcfab78dc Unify file extensions. 2022-12-01 19:54:07 +02:00
Matthias Mailänder
ac351f6e65 Update Ubuntu 2022-12-01 19:54:07 +02:00
abcdefg30
42bdc9e53e Replace influence instead of throwing an exception in AddInfluence 2022-12-01 18:13:16 +01:00
Gustas
3097efc5b6 Fix UnreserveCarryable unreserving carryables of other carriers 2022-12-01 18:13:16 +01:00
Gustas
853422409f Fix AutoCaryall not unreserving when cargo dies 2022-12-01 18:13:16 +01:00
abcdefg30
f097250394 Make sure PickupUnit runs a TakeOff activity before ending 2022-12-01 18:13:16 +01:00
Paul Chote
96e0f96c12 Remove redundant order copies. 2022-11-27 23:00:53 +01:00
Paul Chote
0a4c4162be Always serialize orders. 2022-11-27 23:00:52 +01:00
Paul Chote
10ff24f24e Fix frame number not being included in pre-serialized order packets. 2022-11-27 23:00:51 +01:00
Matthias Mailänder
aeb96d98f3 Update notarisation to XCode 13 tooling. 2022-11-27 20:32:57 +01:00
Paul Chote
cf4bfdcdfb Fix display bounds when running on macbooks with a notch. 2022-11-26 20:45:22 +01:00
dnqbob
d55af8d75d HarvesterBotModule should not command harvesters that cannot be ordered 2022-11-24 23:22:04 +01:00
Matthias Mailänder
dd9e75d017 Show the host in the download failed error message. 2022-11-23 23:36:10 +01:00
Matthias Mailänder
1b6220962e Fix unknown host not getting translated. 2022-11-23 23:36:08 +01:00
Vapre
f70f2acb39 ExceptionHandler, fix npe. 2022-11-22 12:35:33 +01:00
Matthias Mailänder
32e2507bff Revert "Scripts: Check exit status of background process"
This reverts commit 3f106bef72.
2022-11-20 20:36:58 +02:00
Matthias Mailänder
22a42b7dc9 Manually add game speeds to the linter. 2022-11-18 23:14:54 +01:00
Gustas
c01e4043e8 Introduce MinDistance to AreaBeam projectile 2022-11-17 20:51:28 +01:00
Thomas Christlieb
c8665c98a6 fix misclicks through sidebar 2022-11-16 23:22:39 +01:00
abcdefg30
e54b88a6cb Remove dead code inside SupportPower.cs 2022-11-16 20:45:33 +02:00
RoosterDragon
b8a71215eb Fix Locomotor IsMoving checks.
The Locomotor IsMoving check was allowing us to consider another actor that moving as not a blocker. However for some reason it also considered the actor trying to path being mobile as sufficient for this check to pass which did not make sense. We remove that extra check and inline the method.

This was a regression from 4a609bbee8 which changed the method from IsMovingInMyDirection (which required the lookup of the mobile trait) to just IsMoving. It should have removed the lookup as not required.

This fixes a crash in HPF which was considered the location as blocked when Locomotor considered it unblocked because the logic was not aligned. Removing this check aligns the logic and resolves the crash.
2022-11-15 15:42:02 +02:00
Vapre
7005da3592 SpriteRenderer, do not copy vertex array data each flush. 2022-11-14 23:33:24 +01:00
Gustas
243e2b2a2a Fix cloned widgets not having default cursor set 2022-11-13 15:05:48 -06:00
RoosterDragon
a85ac26367 Pathing considers reachability of source cells consistently.
Using the local pathfinder, you could not find a path to an unreachable destination cell, but it was possible to find a path from an unreachable source cell if there was a reachable cells adjacent to it.

The hierarchical pathfinder did not have this behaviour and considering an unreachable source cell to block attempts to find a path.

Now, we unify the pathfinders to use a consistent behaviour, allowing paths from unreachable source cells to be found.
2022-11-13 19:59:36 +01:00
abcdefg30
bedfa622d7 Update AUTHORS 2022-11-12 07:57:12 +01:00
Gustas
0b86936dcd Nerf player experience 2022-11-10 23:33:52 +01:00
ThomasChr
6c348620f3 Use Stop button on (production) buildings to reset rally point fixes #20414 2022-11-09 08:44:09 +02:00
Gustas
ad269555d9 Don't let the player interrupt takeoff after a succesful caryall pickup 2022-11-08 21:51:12 +01:00
Gustas
5db07097e8 Fix carryall not removing influence when cancelling land activity 2022-11-08 21:51:12 +01:00
Gustas
b401f601de Refresh ChatDisabledUntil when entering a new server 2022-11-06 22:28:52 +01:00
Gustas
33a1bb8e6b Don't disable chat in replays 2022-11-06 22:28:52 +01:00
Ivaylo Draganov
4ecf4f9f3f Add a .zsync suffix to appimagecheck URL to pass appimaged checks
Depends on changes in the master server that rewrite the appimagecheck URL.
2022-11-06 14:00:25 +01:00
Matthias Mailänder
81020e70fa Fix actors with immobile actors that don't occupy space
to be placed everywhere way outside the map boundaries.
2022-11-05 21:41:39 +01:00
Matthias Mailänder
74c35edbd9 Fix a crash when flood filling tiles outside of the map. 2022-11-04 00:10:46 +01:00
Gustas
64908c8e70 Fix RenameContrailProperties UpdateRule 2022-11-03 23:35:57 +01:00
Matthias Mailänder
889be47b23 Remove dubFinder style sheet. 2022-11-02 21:33:32 +01:00
Vapre
4fc232f2a6 Authors, anvilvapre. 2022-11-02 14:05:53 +02:00
ThomasChr
a3f8b41e25 Add dropdown for sorting maps in map chooser dialog 2022-11-01 12:08:01 +02:00
abcdefg30
c664af4fe2 Seal the Server.Connection class
Solves CA1816
2022-10-31 12:19:34 +01:00
abcdefg30
a00348dac1 Dispose all connections when shutting down a server 2022-10-31 12:19:34 +01:00
abcdefg30
111d9e4230 Fix replay player disconnect handling 2022-10-30 14:55:55 +01:00
Gustas
7cdc98c8fa FIx anti-ground missiles damaging air units and vice versa 2022-10-30 14:40:39 +01:00
dnqbob
583d85cc2e Allow weapons with no damage warheads to be fired 2022-10-30 14:38:16 +01:00
N.N
08de346e31 fix worm spawn in campaing 2022-10-30 14:32:25 +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
Gustas
57143087d7 Fix Aircraft not updating influence when changing height
Occupied cells was defined by height yet we didn't update actor map on changing height. This in some scenarios could have caused the aircraft to forget to remove its influence from actor map
2022-10-30 14:01:32 +01:00
darkademic
f612d82797 Use MacOS 11 for release packaging. 2022-10-29 18:30:58 +02:00
Matthias Mailänder
c22b3f30bb Log OpenRA and Operating System language on crash. 2022-10-29 13:36:36 +03:00
Matthias Mailänder
147804ac30 Inline variables. 2022-10-29 13:36:36 +03:00
EoralMilk
949ef1662d Add mouse scroll to ProductionPaletteWidget 2022-10-28 19:33:57 +02:00
Matthias Mailänder
efe65701e4 Expose game speeds to localisation. 2022-10-27 23:30:19 +02:00
penev92
425c678cd9 Fix TD missions file not using package syntax 2022-10-24 11:45:36 +02:00
Matthias Mailänder
71956cb2a2 Documentation split release/playtest into different branches. 2022-10-21 18:54:58 +03:00
Matthias Mailänder
34ccaf6e9d Fix a crash in Fall of Greece 1: Personal War 2022-10-21 10:42:48 -05:00
Matthias Mailänder
5c8a537efd Fix a crash in Allies 06a. 2022-10-21 10:42:48 -05:00
abcdefg30
c100e64c8e Update Tiberium Forest 2022-10-21 10:35:52 -05:00
Matthias Mailänder
8f415bc7af Localize developer debug cheats. 2022-10-21 17:08:16 +02:00
Matthias Mailänder
44aaf4dd07 Localise text notifications. 2022-10-21 17:08:16 +02:00
Gustas
c041ea7d39 Crash on image/panel not found and add TryGet functions for searching 2022-10-20 19:28:02 +02:00
Gustas
e743e6dd61 Simplify boolean expressions in ProductionPaletteWidget 2022-10-20 19:20:45 +02:00
Gustas
af3d6792b8 Fix ProductionPalette ClockAnimation and NotBuildableAnimation being ignored. 2022-10-20 19:20:45 +02:00
Matthias Mailänder
bd138db9e2 Don't use header tags for non-headers. 2022-10-20 11:02:58 +03:00
Orb370
d9a8a0619c TD-Fall-2022-Balance-Commit 2022-10-19 20:23:19 +03:00
Gustas
686f158117 Refactor BindButtonIcon 2022-10-19 18:26:24 +02:00
abcdefg30
3de0b7982e Adjust the ZOffset of pyle to avoid clipping through the flagpole 2022-10-19 12:23:35 +02:00
abcdefg30
3f5e5e43b3 Make the exit cells of the GDI Barracks transient 2022-10-19 12:23:35 +02:00
Matthias Mailänder
5c3d4a7fe4 Return an error message for invalid cash amounts. 2022-10-18 23:16:20 +02:00
Gustas
347148e02f Allow cash ticking sound to overlap 2022-10-18 22:36:44 +02:00
abcdefg30
fde4f8d0e5 Throw an exception when map.yaml cannot be read 2022-10-18 22:27:51 +02:00
abcdefg30
95c0846ced Remove the filename from the undefined MapFormat exception 2022-10-18 22:27:51 +02:00
abcdefg30
40e207200a Fix a typo in the undefined MapFormat exception message 2022-10-18 22:27:51 +02:00
Matthias Mailänder
acc2c11e69 Fix SupportPowers ClockAnimation being ignored. 2022-10-17 14:20:11 +03:00
abcdefg30
df484633f7 Update the TD map pool 2022-10-14 21:22:42 -05:00
abcdefg30
9498f067bc Remove crate crushing from Visceroids 2022-10-14 20:56:47 -05:00
abcdefg30
625dca6435 Fix dinos not being able to crush crates 2022-10-14 20:56:47 -05:00
Gustas
3181102415 Fix default expressions in commit 75f642bd09 2022-10-14 14:15:57 +03:00
abcdefg30
6e6c828c85 Fix SquadManagerBotModule caching in RenderDebugState 2022-10-14 13:50:57 +03:00
abcdefg30
d8349a429a Remove unnecessary uses of Exts.IsTraitEnabled 2022-10-14 13:50:57 +03:00
abcdefg30
75f642bd09 Introduce FirstEnabledConditionalTraitOrDefault 2022-10-14 13:50:57 +03:00
Gustas
858d782af1 Simplify 'default' expression (IDE0034) 2022-10-11 17:40:05 +02:00
abcdefg30
02d9ba020d Add a workaround for unbinding script members on Mono 2022-10-10 20:27:07 +03:00
Unrud
a2a34dafde MacOS buildpackage: Fix deduplication
The variable `${MOD}` was not enclosed in quotes, but the value contained a space. This caused the argument to be split into two parts.
Using **find** isn't necessary due to globbing.
2022-10-09 00:39:28 +02:00
Gustas
ab26878033 Fix MapCache mapUpdates 2022-10-08 23:08:53 +02:00
Gustas
7f677f1842 Allow driving under crates and crushable units 2022-10-07 21:06:04 +02:00
Gustas
5abbdc37cb Revert "Fix crushables and crates causing HPF to crash."
This reverts commit 5765e51c56.
2022-10-07 21:06:04 +02:00
Gustas
625dc1dd35 Fix subterranean units teleporting to surface and jump jets to ground 2022-10-06 23:03:33 +02:00
Matthias Mailänder
ee0d37f2b1 Add back the man page install 2022-10-05 22:01:04 +02:00
Matthias Mailänder
38a22ebd55 These are not Linux exclusive. 2022-10-05 22:01:04 +02:00
Gustas
043e6f662f Make demolition conditional 2022-10-04 21:55:17 +02:00
Matthias Mailänder
eb897d755e Add observer vision stats. 2022-10-03 20:48:18 +02:00
Ivaylo Draganov
e7dcbb3c2d Improve translation of power/silo usage tooltip
- Fix an instance where "silo-usage" translation was used without
arguments
- Use the same translation reference for the "Power usage"
- Make the ResourceBarWidget accept a cached transform with the tooltip
text
so it won't have to build the string itself
- Display an infinity symbol when the infinite power cheat is used
- Removes a magic number that is no longer used (>1000000 to check for
unlimited power)
2022-10-03 12:00:42 +02:00
Gustas
ba763ac0f0 Add highlighted state to GetCachedStatefulImage 2022-10-01 16:52:04 +03:00
abcdefg30
a75818026a Use SDL.SDL_OpenURL instead of Process.Start to open FAQ and Logs 2022-10-01 14:19:30 +03:00
Matthias Mailänder
6bd631618c Remove unnecessary value assignment (IDE0059) 2022-10-01 14:15:33 +03:00
abcdefg30
757c4d84c7 Change the incompatible replay dialogue text from "Cancel" to "OK" 2022-09-29 23:34:59 +03:00
abcdefg30
b2498fec7d Fix a crash when version or mod of a replay are null 2022-09-29 23:34:59 +03:00
abcdefg30
0d6a7b3c52 Add line breaks to the incompatible replay translations 2022-09-29 23:34:59 +03:00
abcdefg30
a691112c54 Update Linguini to 0.3.1 2022-09-29 23:34:59 +03:00
RoosterDragon
3c66ca709a Fix some bugs in LongBitSet
- Use LongBitSetAllocator and not BitSetAllocator. Using the wrong allocator means all string based checks and displays would provide incorrect results.
- Remove LongBitSetAllocator.Mask which wasn't being calculated or Reset correctly. We can use world.AllPlayersMask to provide the same effect at use sites.
2022-09-29 21:58:17 +02:00
Matthias Mailänder
0080e98390 Fix No Players No Bots No Spectators label overlapping. 2022-09-26 22:47:33 +03:00
tomas
7b7ccf4128 Fix crash in OrderBuffer 2022-09-26 22:44:13 +03:00
Gustas
899298442a Rename the remaining properties in ScrollItemWidget
BaseName: to BackGround:
2022-09-26 13:33:21 +02:00
Matthias Mailänder
f6d13baf4b Use inline strings. 2022-09-26 11:05:15 +03:00
Matthias Mailänder
90a2b677f1 Exit with error code on invalid commands and arguments. 2022-09-26 11:05:15 +03:00
Gustas
fe72dd4140 Remove a ScrollItem header hack
with the merge of #20218 headers no longer need to be selected
2022-09-24 16:23:59 +02:00
Gustas
6b63114aaa Rename ScrollWidget BaseName to Background
To match button
2022-09-24 16:23:59 +02:00
Gustas
5e6f14c9ee Polish TD ScrollItemWidget 2022-09-24 16:23:59 +02:00
RoosterDragon
5765e51c56 Fix crushables and crates causing HPF to crash.
When crushables and crates change their Location/TopLeft, their crushability is cached, but when their CenterPosition is changed, their cached crushability is not refreshed. Since their CrushableBy functions depends on IsAtGroundLevel, which depends on the CenterPosition, this means that when the crushability is cached it will depend on the current height of the object. If the height of the object changes, the cache is not refreshed and now contains out of date information.

The Locomotor cache and the HPF both cache this same information, but at different times. HPF caches immediately, but Locomotor caches on demand which means there can be a delay. This means they can have inconsistent, differing views of the crushability information. This eventually surfaces in a "The abstract path should never be searched for an unreachable point." error from HPF when it detects the inconsistency.

The bug is that Locomotor was caching information without refreshing it when required. Fixing this to refresh the cache when the CenterPosition changes is likely to have negative performance impacts. As would removing crushability from the cache. These would both be fixes that address the underlying bug.

The high impacts of a proper fix lead us to a workaround instead. If we set the CenterPosition before setting the Location, then when the Location is set and the caches are refreshed, the new CenterPosition is available when caching the crushability information. This means logic depending on IsAtGroundLevel will get the new information and cache a more up-to-date view of things. This means when changing both the CenterPosition and Location together we now cache correct information. However calls that set only the CenterPosition and not the Location can still result in a bad cache state. Although this is imperfect it is an improvement over current affairs, and has less impact.
2022-09-24 15:15:53 +02:00
Gustas
1809817b3f Add ContrailEndColor and Contrail transparency control 2022-09-24 13:19:22 +02:00
Gustas
d8f45714a7 Add contrail property descriptions to Bullet and Missile 2022-09-24 13:19:22 +02:00
Gustas
56b665f243 Add TrailDelay to Contrail 2022-09-24 13:19:22 +02:00
Gustas
c781eb0cab Add pressed state to RA and TS ScrollItemWidget 2022-09-22 17:11:33 +02:00
abcdefg30
28adb915f5 Make CheckPalettes report duplicate palettes 2022-09-21 20:06:11 +02:00
abcdefg30
97c96c46f4 Only search for palette definitions on the world actor 2022-09-21 20:06:11 +02:00
abcdefg30
0bbcff973f Only query the palette attribute once in CheckPalettes 2022-09-21 20:06:11 +02:00
N.N
ae7fc11472 Minor adjustment into the D2k
Minor adjustment into the D2k

- Add rally point into the Palace
- removed harvester MustBeDestroyed in campaing
- Players can see they carryalls and ornothopers under the fog.
- Increased CameraRemoveDelay on Superweapons so player can see superweapon impact.
2022-09-21 18:06:18 +02:00
RoosterDragon
70c2ec15d3 Change spaces to tabs.
To follow code style.
2022-09-19 23:36:30 +02:00
Unrud
3f106bef72 Scripts: Check exit status of background process 2022-09-18 10:30:58 +02:00
Unrud
5b085b6c15 Scripts: Remove obsolete comment 2022-09-18 10:30:58 +02:00
Unrud
c29f1590c9 Scripts: Remove exit stmts covered by errexit 2022-09-18 10:30:58 +02:00
Unrud
e2fd7ce7ed Scripts: Remove some subshells that ignore errors 2022-09-18 10:30:58 +02:00
Unrud
1b9a86c0a0 Sciprts: Set pipefail or remove pipes
Errors in pipes are ignored otherwise
2022-09-18 10:30:58 +02:00
Unrud
946cd8f322 Scripts: Set errexit to catch errors 2022-09-18 10:30:58 +02:00
Unrud
7cd0d8c079 Scripts: Prevent paths interpreted as args 2022-09-18 10:30:58 +02:00
Unrud
ea02b90636 Scripts: Quote path variables 2022-09-18 10:30:58 +02:00
Gustas
bb2ee37cc0 Add pressed state to D2K ScrollItemWidget 2022-09-18 10:07:46 +02:00
Shrooblord
70771da45a don't notify players a Harvester is under attack when it's actually healing
Co-authored-by: Gustas <37534529+PunkPun@users.noreply.github.com>
2022-09-17 18:57:59 +02:00
penev92
49ac9079a2 Renamed SpriteSequence documentation command and output file 2022-09-17 15:15:42 +02:00
penev92
04afa4a72c Added some sorting to documentation output 2022-09-17 15:15:42 +02:00
penev92
6b98a75658 Added referencing types to enum definitions 2022-09-17 15:15:42 +02:00
penev92
07b9c941b4 Added documentation page title 2022-09-17 15:15:42 +02:00
penev92
eda3dfa50f Added enum export to documentation generation 2022-09-17 15:15:42 +02:00
Ivaylo Draganov
a985452907 Add myself to AUTHORS 2022-09-16 09:46:20 +01:00
Zachary Schirm
1339faa5f4 Disallowed Save Map without Title and Author Input 2022-09-13 18:48:21 +03:00
Gustas
d95c6e821c Use CachedTransform in ImageWidget 2022-09-13 16:11:18 +02:00
Matthias Mailänder
1536530f78 Add a fake .zsync suffix parameter to pass linting. 2022-09-13 13:20:05 +03:00
Matthias Mailänder
d3a8b07f05 Remove unread private member (IDE0052) 2022-09-13 10:36:57 +03:00
Gustas
43e0cca663 Prevent game from starting with unavailable map 2022-09-12 20:13:42 +02:00
Vapre
7f404f64a6 Selection, cache DeveloperMode trait. 2022-09-11 22:00:18 +03:00
Matthias Mailänder
3be0e9e8a5 Add an in-game encyclopedia to Dune 2000. 2022-09-11 20:19:58 +03:00
RoosterDragon
d2a3659078 Fix landed aircraft above ground level not removing influence on take off.
When the Land activity is run, the aircraft adds influence to the cell so it cannot be used by other actors. When the TakeOff activity runs, it removes the influence so the cell can be used by other actors.

However, when a Carryall picks up a unit, it is told to Land with a vertical offset - it never reaches ground level. When the TakeOff activity runs, it saw the aircraft was above ground level and bailed out. The means the influence is never removed. The cell is now unusable despite the fact the Carryall has left.

To fix this, TakeOff now checks if influence was applied instead of checking if the aircraft is above ground level. If so, we know the Land activity had decided that influence was required, even if the aircraft has not made it to ground level. When TakeOff runs, it will treat it as a proper take off event even though the aircraft is already above ground level. This means influence will be removed and the cell will become accessible as intended.

In ActorMap, we also fix a design flaw where disposed actors where excluded from queries. This caused cache inconsistencies with clients using ActorMap.CellUpdated event to rely on updates. This event will not get called when the actor was disposed, so the downsteam client may have cached the actors at that location, only for them to "change" when the actor is later disposed. This could cause the Locomotor and HierarchicalPathFInder to have inconsistent views of the actors on the map, causing crashes if the inconsistent state broken some internal invariants. The only reason to exclude disposed actors would be to cover up for the actors not being removed properly from the map, which is fixed now aircraft are handled correctly. If ever an actor isn't removed from the actor map, then the caller needs fixing rather than having the actor map exclude it.
2022-09-11 20:04:12 +03:00
Matthias Mailänder
b8e261ff2f Code cleanup in the Tiberian Dawn Lua scripts.
Uppercase global variables.
Declare local variables.
Remove unused variable.
2022-09-11 19:44:38 +03:00
Matthias Mailänder
ca45e02265 Fix untranslated strings in skirmish objectives. 2022-09-10 22:58:28 +03:00
Ivaylo Draganov
3453d13188 Adjust faction label width in lobby to fit better when truncated 2022-09-10 18:26:40 +02:00
Vapre
e3aa2dc6c0 HitShape, query trait via actor cached targetable positions. 2022-09-10 18:23:12 +02:00
abcdefg30
f88b6d78ff Move update rules from 20201213 to 20210321 2022-09-10 17:52:19 +02:00
Vapre
7754e486ee GpsDotEffect, ShouldRender, optimization. 2022-09-10 17:49:58 +02:00
RoosterDragon
7e67889294 Fix a crash when trying to pathfind from unusable custom movement layers.
If a path search is attempted from a location outside the map, then PathSearch will filter these out to prevent any crashes. The path search will result in no path. However if the location is within the map but on a custom movement layer that the locomotor cannot use, this currently crashes. To fix this we apply a similar filtering logic to ignore any source locations that cannot be used, and so the path search will result in no path for these as well.
2022-09-10 15:24:25 +02:00
penev92
c52913716c Added SpriteSequence documentation generation 2022-09-09 21:18:58 +02:00
penev92
dc8c0221e7 Fixed documentation Python script handling of null
The script would serialize null values as "None" in the Markdown files it produces, which is not great. It's better to leave empty strings.
2022-09-09 21:18:58 +02:00
penev92
99b27bbe7b Added missing file extensions to asset browser
These are all file extensions used by the respective mods ingame, so they should be visible in the asset browser as well.
2022-09-09 16:57:22 +03:00
penev92
60b85c933e Reorder asset browser UI's asset list and filters 2022-09-09 16:57:22 +03:00
penev92
8a38ac0d24 Added an asset type filter to AssetBrowserLogic 2022-09-09 16:57:22 +03:00
Gustas
4901de24b1 Select LastModifiedMap when entering ServerCreation 2022-09-09 14:31:25 +03:00
Gustas
81561778a2 Select LastModifiedMap when entering MissionBrowser
And add auto-updating to the play button
2022-09-09 14:31:25 +03:00
Gustas
63b76d1b53 Select LastModifiedMap when entering LobbyLogic 2022-09-09 14:31:25 +03:00
Gustas
02b6a260af Make IngameMenuLogic use ShowMenu 2022-09-09 14:31:25 +03:00
Zachary Schirm
9a5d352e41 Disallow saving the game with an empty name field 2022-09-09 11:39:31 +03:00
Zachary Schirm
125a7b8c88 Disallow Join button without IP address input
Disallow join button without IP address Input

Closes #20234

Trying to join a server with an empty address crashes the game. This fix disallows pressing join button without ip address field input.  Updated to reuse search for joinButton vs 2 separate calls to search.
2022-09-09 11:22:52 +03:00
Gustas
ee0d958cd1 Fixed incorect fluent name in MissionBrowserLogic 2022-09-08 23:45:11 +02:00
Gustas
9ae27b8e60 Fix team 0 being translated in SpawnSelectorTooltipLogic 2022-09-08 23:45:11 +02:00
Gustas
1b00cef30f Fix a few tooltip translations being called every frame
in WorldTooltipLogic and IngamePowerBarLogic
2022-09-08 23:45:11 +02:00
Ivaylo Draganov
56a9acd035 Extract a couple of untranslated strings 2022-09-08 23:45:11 +02:00
dnqbob
6ccd000257 Make building and bridge repair traits public 2022-09-07 14:04:23 +02:00
Matthias Mailänder
fb5624880b Fix sorting. 2022-09-06 20:52:04 +03:00
Matthias Mailänder
67aa0cdede Avoid Count() when Any() could be used (CA1827) 2022-09-06 20:52:04 +03:00
Matthias Mailänder
7ba6a49378 Avoid using LINQ on indexable collections (CA1826) 2022-09-06 18:02:39 +02:00
Matthias Mailänder
68ca09e896 Fixed "bots" not getting translated in Lobby dropdowns 2022-09-05 22:35:50 +02:00
reaperrr
145f6abc09 Add option to limit render fps to game tick rate
This helps slow systems that struggle to render 2 frames per game tick.
2022-09-04 17:00:37 +03:00
penev92
216029dc27 Fix a crash with BlockingCollection in Connection
The BlockingCollection would have `IsAddingCompleted` to true, but `IsComplete` to false, slipping through the cracks and causing an InvalidOperationException ("The collection has been marked as complete with regards to additions.") when trying to add to it.
We now add a check on `(Try)SendData` to only try to add if we can. The collection is still viable for reading until empty/`IsComplete`.
2022-09-04 13:04:17 +03:00
RoosterDragon
2a681d3791 Fix HierarchicalPathFinder considering some unreachable cells as reachable.
When using the internal AbstractCellForLocalCell method to check if a local cell is reachable, this should return null when the cell is unreachable. If multiple abstract cells were required for that grid, this worked as intended. Only reachable cells are stored in the localCellToAbstractCell mapping. For a grid that required only a single abstract cell, which is the common case, we optimize this to store only the single abstract cell rather than the whole mapping for potentially 100 cells in that grid. However this makes no distinction between the reachable and unreachable cells, so when we check later we get incorrect results. If a cell is unreachable but belongs to the same grid as a single group of reachable cells then we incorrectly report it as reachable. The easiest way to see this incorrect behaviour is when the PathExists is called and can sometimes indicate a path exists when it does not.

To fix this, we now ensure we perform a check to see if the cell is reachable in this single layer case, this allows us to retain the optimization where we don't need to store the whole mapping, but allows us to correctly indicate when cells are unreachable.
2022-09-03 19:28:47 +02:00
Vapre
63499c6334 ShroudRenderer, fix, no shroud or fog in editor. 2022-09-03 19:20:25 +02:00
Vapre
57ce88cc9a ShroudRenderer, fix, render Shroud if fog disabled. 2022-09-02 20:13:56 -05:00
Matthias Mailänder
e2284f660c Add documentation to TeslaZap. 2022-09-02 19:58:48 -05:00
Matthias Mailänder
3513d37702 Fix a line break. 2022-09-02 19:58:48 -05:00
penev92
737cdd7851 Reworked trait documentation generation
Switched the Utility's ExtractTraitDocsCommand output to JSON.
Updated documentation generation to use that and the new Python script to generate the Markdown file, same as the Weapon documentation.
2022-09-02 20:56:55 +02:00
penev92
a522457bb6 Reworked weapon documentation generation
Switched the Utility's ExtractWeaponDocsCommand output to JSON.
Added a Python script to generate documentation Markdown from JSON.
2022-09-02 20:56:55 +02:00
penev92
c21bf31ebc Fixed weapon docs not including WeaponInfo
Also made some code cleanups in the weapon docs export code.
2022-09-02 20:56:55 +02:00
penev92
a73d710bec Added Util.InternalTypeName() 2022-09-02 20:56:55 +02:00
penev92
9ed2e699c6 Fix tiny error in output string 2022-09-02 20:56:55 +02:00
penev92
2f0f5f4cda Fixed ScrollPanelWidget not resetting on Clear 2022-09-02 16:16:45 +02:00
Gustas
8402d7d476 Improved Widget.RemoveChildren performance
Modifying the list potentially several thousand times is really slow, so notify the child elements that they are being removed and then clear the list in one go.
2022-09-02 16:16:45 +02:00
penev92
378c447ded Misc fixes in AssetBrowserLogic and MapOverlaysLogic 2022-09-02 16:16:45 +02:00
penev92
df836620dc Added missing spacing to map editor dropdowns 2022-09-02 16:16:45 +02:00
Ivaylo Draganov
c1e1765c2f Move game speed lobby dropdown before time limit dropdown
Game speed is the more frequently changed option and with the current
layout it was buried below the fold.
2022-09-02 16:09:05 +02:00
Matthias Mailänder
0b67b5bfae Extract translation strings. 2022-09-02 14:41:24 +03:00
Gustas
dfd5a960ed Fix RepairableBuilding never stopping repair 2022-09-01 18:30:47 +03:00
RoosterDragon
2d45e67bca Teach HierarchicalPathFinder about Immovable actors.
By tracking updates on the ActorMap the HierarchicalPathFinder can be aware of actors moving around the map. We track a subset of immovable actors that always block. These actors can be treated as impassable obstacles just like terrain. When a path needs to be found the abstract path will guide the search around this subset of immovable actors just like it can guide the search around impassable terrain. For path searches that were previously imperformant because some immovable actors created a bottleneck that needed to be routed around, these will now be performant instead. Path searches with bottlenecks created by items such as trees, walls and buildings should see a performance improvement. Bottlenecks created by other units will not benefit.

We now maintain two sets of HPFs. One is aware of immovable actors and will be used for path searches that request BlockedByActor.Immovable, BlockedByActor.Stationary and BlockedByActor.All to guide that around the immovable obstacles. The other is aware of terrain only and will be used for searches that request BlockedByActor.None, or if an ignoreActor is provided. A new UI dropdown when using the `/hpf` command will allow switching between the visuals of the two sets.
2022-08-31 23:12:42 +02:00
RoosterDragon
7e7d94ca89 Fix Locomotor CellCache to not consider transit only cells as crushable.
When the UpdateCellBlocking encountered a transit-only cell (the bibs around a building) it would bail from the loop. This would leave the cellCrushablePlayers set to all players. It would update the cell cache and mark that cell as a crushable location.

When CanMoveFreelyInto would later evaluate a cell, it would consider it passable because the crushable check would pass (cellCache.Crushable.Overlaps(actor.Owner.PlayerMask)) rather than because the transit check (otherActor.OccupiesSpace is Building building && building.TransitOnlyCells().Contains(cell)) would pass.

Although this meant the cell was treated as passable in either scenario, it means the cache contained incorrect data. The cell does not contain any crushable actors but the cache would indicate it did. Correcting this means we can rely on the crushability information stored in the cache to be accurate.
2022-08-31 23:12:42 +02:00
RoosterDragon
77779023d5 Notify of shroud state changes when using DevVisibility cheat.
When this cheat is used by notifying of shroud changes we invoke the usual logic that would occur if the visibility had been granted by units. Without this change any cached information about the visibility is not refreshed. Without this refresh actors with different visibility may not act correctly.

One aspect this improves is frozen actors. Using the visibility cheat will show up all actors on the map. If the cheat is then disabled than frozen actors will appear in their place. Prior to this change a frozen actor would fail to appear if the cheat had caused it to be revealed. Healthbars and selection boxes are also made consistent for similar reasons.
2022-08-31 23:31:48 +03:00
RoosterDragon
1fc1bdc849 Fix frozen actors lacking tooltips if they have the cloak ability.
Since bbf5970bc1 we update frozen actors only when required.

In 8339c6843e a regression was fixed where actors created in line of sight would be invisible.

Here, we fix a related regression where cloaked units that are revealed, and then frozen when you move out of line of sight would lack tooltips.

The fix centers around the setting of the Hidden flag. In the old code this used CanBeViewedByPlayer which checks for visibility modifiers and then uses the default visibility. The bug with this code is that when a visibility modifier was not hiding the actor, then we would report the default visibility state instead. However the frozen visibility state applies here which means if the frozen actor is visible, then we consider the actor to be hidden and therefore tooltips will not appear. In the fixed version we only consider the modifiers. This means a visibility modifier such as Cloak can hide the frozen actor tooltips. But otherwise we do not consider the frozen actor to be hidden. This prevents a frozen actor from hiding its own tooltips in some unintended circular logic. Hidden now becomes just a flag to indicate if the visibility modifiers are overriding things, as intended.
2022-08-31 23:31:48 +03:00
Mustafa Alperen Seki
16babc1975 Fix Fog color on Radar. 2022-08-31 16:04:40 +03:00
Vapre
215898c7ec ScriptActorInterfaces, unbind on actor destroy. 2022-08-30 21:44:39 +02:00
Gustas
fc1d8d2355 Update RA maps to format 12 2022-08-30 20:03:40 +02:00
Gustas
f98a74f70d Update TD maps to format 12 2022-08-30 20:03:40 +02:00
Gustas
89bb800dbf Update D2K maps to format 12 2022-08-30 20:03:40 +02:00
Gustas
09cb38bc6e Update TS maps to format 12 2022-08-30 20:03:40 +02:00
Gustas
c40675cfba Include map.png into uid generation 2022-08-30 20:03:40 +02:00
RoosterDragon
bcf4ff3b7c Prevent radar crash when dealing with map height. 2022-08-30 19:58:48 +02:00
Gustas
539bb09d50 Fix shroud selector dropdown 2022-08-29 21:13:27 +03:00
Gustas
51c09ddae9 Fix Mission Group having all headers selected 2022-08-29 13:45:38 +03:00
Gustas
08dbfe0cbd Refactor ScrollItemWidget to use stateful image names 2022-08-29 13:45:38 +03:00
Gustas
11a2e6e19b Add more confirmation dialogue to the map editor
When saving on top of another map, or when saving on a map that has been edited outside the map editor
2022-08-29 12:31:01 +03:00
Gustas
d3589c051d Add descriptions to all projectiles and warheads 2022-08-29 12:26:33 +03:00
Vapre
6e547469d6 Shroud, combine IsVisible and IsExplored into a single function. 2022-08-28 18:50:51 +02:00
Ivaylo Draganov
cc1f10dd35 Truncate faction name in lobby dropdown button 2022-08-25 10:44:17 +03:00
dnqbob
29fc2b80d9 WithMuzzleOverlay is decoration 2022-08-21 23:59:15 +02:00
Gustas
ce254f8b46 Add per player mutes 2022-08-20 14:52:49 +02:00
Gustas
81da717f19 Add chat on/off icon to glyphs 2022-08-20 14:52:49 +02:00
Gustas
16198c121c Increase the size of ingame-info panel
And add an Actions section for Kick
2022-08-20 14:52:49 +02:00
Gustas
dde10249d5 Fixup faction and score info UI
And increase spectator name length to match regular players
2022-08-20 14:52:49 +02:00
Gustas
58fcffa429 Add anti-flood protection 2022-08-20 10:24:25 +02:00
tomas
ac623d784a Remove Do() and replace with foreach() 2022-08-19 22:38:38 +02:00
tomas
92478a219e Fix crash when selecting the same map 2022-08-18 00:03:50 +02:00
Gustas
3ab6d3f00a Remove map editor debug message 2022-08-17 23:29:11 +02:00
RoosterDragon
32aaac1dc2 HierarchicalPathFinder.PathExists checks the locations are in map bounds.
Without this, passing locations outside the map could cause a crash instead of reporting no path.
2022-08-17 10:13:27 +03:00
Gustas
ae3a1c2561 Add truncation to FactionLabel 2022-08-16 18:58:45 +03:00
Mustafa Alperen Seki
1b1868fca6 Render every available ProductionIconOverlay. 2022-08-16 15:08:51 +03:00
Mustafa Alperen Seki
54340591e3 Unhardcode VeteranProductionIconOverlay. 2022-08-16 15:08:51 +03:00
Gustas
d438508994 Added try/catch for TypeDictionary errors in Lint code
TypeDictionary errors are very hard for modders to debug as they don't mention which actor is causing the error
2022-08-15 23:19:18 +02:00
Matthias Mailänder
cc58fe1a0f Extract translation strings. 2022-08-14 16:11:51 +02:00
Matthias Mailänder
8201a57b10 Don't complain about re-usable terms not getting referenced. 2022-08-14 16:11:51 +02:00
Matthias Mailänder
2c8c6e50da Code cleanup 2022-08-14 16:11:51 +02:00
Gustas
10ac07bf9f Fix ChooseInitialMap 2022-08-13 17:14:21 +02:00
RoosterDragon
8339c6843e Fix actors not being visible when created within sight range of an enemy.
Since bbf5970bc1 we only update frozen actor state on demand rather than every tick. However when the actor was initially created we were failing to set the initial visibility state if the frozen actor was invisible.

With this fix, we now set the visibility states on creation correctly. This fixes an issue where enemy actors created within line of sight would not appear.
2022-08-13 12:05:03 +03:00
RoosterDragon
2599cb26d8 Allow custom cost to exclude source locations in path searches.
During the refactoring to introduce HierarchicalPathFinder, custom costs were no longer applied to source locations. The logic being that if we are already in the source location, then there should be no cost added to it to get there - we are already there!

Path searches support the ability to go from multiple sources to a single target, but the reverse is not supported. Some callers that require a search from a single source to one of multiple targets perform their search in reverse, swapping the source and targets so they can run the search, then reversing the path they are given so things are the correct way around again. For callers that also use a custom cost like the harvester code that do this in order to find free refineries, they might want the custom cost to be applied to the source location. The harvester code uses this to filter out overloaded refineries. It wants to search from a harvester to multiple refineries, and thus reverses this in order to perform the path search. Without the custom cost being applied to the "source" locations, this filtering logic never gets applied.

To fix this, we now apply the custom cost to source locations. If the custom cost provides an invalid path, then the source location is excluded entirely. Although this seems unintuitive on its own, this allows searches done "in reverse" to work again.
2022-08-13 11:58:45 +03:00
RoosterDragon
df858e06d6 Fix HierarchicalPathFinder failing to consider multiple source locations.
When asked to find a path from multiple source locations, the abstract search is used to determine which source locations are viable. Source locations that cannot be reached on the abstract graph are excluded from the local path search. As we know the locations are unreachable, this prevents the local path search from expanding over the entire search space in an attempt to find these unreachable locations, preventing wasted effort.

In order to determine these reachable locations, the abstract search is expanded successively trying to reach each source location each time. However, this failed to account for a property of the ExpandToTarget for which a comment is now added. If the location was found previously, then expanding to try and find it again will fail. If the source locations were close together, it was likely that the initial expansions of the search space would have included them, and thus they would not be found on a later expansion. This would mean these locations would incorrectly be thought unreachable.

To fix this, we check if the location has already been explored (has CellStatus.Closed in the graph). If so we can check the cost to determine if it is reachable.
2022-08-13 11:58:45 +03:00
abcdefg30
f49536ea12 Use Attribute.IsDefined over GetCustomAttributes 2022-08-12 20:14:54 +02:00
Matthias Mailänder
aa14c9c570 Add VTOL landing exhaust animation. 2022-08-12 00:54:44 +03:00
Matthias Mailänder
1073a7124f Remove an unused field from TakeOff.cs 2022-08-12 00:54:44 +03:00
Gustas
542c5dcfc3 Cleanup directional cursor yaml 2022-08-08 23:28:51 +02:00
Gustas
88e2314776 Add directional support powers to D2K ornithopters 2022-08-08 23:28:51 +02:00
Gustas
fd9758dcbf Make game timer only blink on pause 2022-08-08 10:47:05 +02:00
RoosterDragon
bbf5970bc1 Update frozen actors only when required.
Previously, actors that were visible would refresh their frozen actor state every tick in preparation for the actor becoming hidden, and the frozen actor appearing as a placeholder instead.

By using ICreatesFrozenActors.OnVisibilityChanged when can avoid refreshing the state constantly, and instead just refresh it the moment the frozen actor needs to appear. This provides a nice performance improvement on the cost on managing frozen actors.
2022-08-07 16:50:53 +02:00
darkademic
e827e9952e Additional performance graph colors so same color is not used multiple times. 2022-08-06 22:33:27 +02:00
abcdefg30
dc6be0fd77 Change the IRC link from Freenode to Libera in the issue template config 2022-08-06 16:12:25 +02:00
abcdefg30
47b6f564e3 Add a link to Discord to the PR template and change Freenode to Libera 2022-08-06 16:12:25 +02: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
Unrud
b88ebd8499 Make Red Alert SVG artwork square
Fix typo in height (128 instead of 138).
2022-08-04 20:02:44 +02:00
RoosterDragon
93998dc4a7 Add a PathFinderOverlay to visualize path searches.
Activated with the '/path-debug' chat command, this displays the explored search space and costs when searching for paths. It supports custom movement layers, bi-directional searches as well as visualizing searches over the abstract graph of the HierarchicalPathFinder. The most recent search among selected units is shown.
2022-08-03 23:12:42 +02:00
RoosterDragon
aef65d353d Replace DomainIndex internals with a lookup from HierarchicalPathFinder instead
Teach HierarchicalPathFinder to keep a cache of domain indices, refreshing them only on demand and when invalidated by terrain changes. This provides an accurate and quick determination for checking if paths exist between given locations.

By exposing PathExistsForLocomotor on the IPathFinder interface, we can remove the DomainIndex trait entirely.
2022-08-03 23:12:42 +02:00
RoosterDragon
5a8f91aa21 Add a hierarchical path finder to improve pathfinding performance.
Replaces the existing bi-directional search between points used by the pathfinder with a guided hierarchical search. The old search was a standard A* search with a heuristic of advancing in straight line towards the target. This heuristic performs well if a mostly direct path to the target exists, it performs poorly it the path has to navigate around blockages in the terrain. The hierarchical path finder maintains a simplified, abstract graph. When a path search is performed it uses this abstract graph to inform the heuristic. Instead of moving blindly towards the target, it will instead steer around major obstacles, almost as if it had been provided a map which ensures it can move in roughly the right direction. This allows it to explore less of the area overall, improving performance.

When a path needs to steer around terrain on the map, the hierarchical path finder is able to greatly improve on the previous performance. When a path is able to proceed in a straight line, no performance benefit will be seen. If the path needs to steer around actors on the map instead of terrain (e.g. trees, buildings, units) then the same poor pathfinding performance as before will be observed.
2022-08-03 23:12:42 +02:00
abcdefg30
cea9ceb72e Support multiple With(Turret)AimAnimation traits 2022-08-03 21:11:03 +02:00
abcdefg30
f2eb42a4b2 Make With(Turret)AimAnimation support multiple AttackBase traits 2022-08-03 21:11:03 +02:00
abcdefg30
ee3c54b572 Disallow starting a game without players 2022-08-03 21:03:46 +02:00
abcdefg30
ea72c50fb4 Fix GrantConditionOnPowerState not being usable on player actors 2022-08-03 20:58:21 +02:00
abcdefg30
1628ce64db Fix lobby error messages from the server being untranslated 2022-08-03 20:54:13 +02:00
dnqbob
8d3ff9d2fc UnhardcodeBaseBuilderBotModule rule update 2022-08-03 11:22:59 +02:00
dnqbob
013ec52108 Unhardcode defenses in BaseBuilderBotModule 2022-08-03 11:22:59 +02:00
Vapre
e8748200f7 Demolishable, trivial optimization. 2022-08-02 00:29:59 +03:00
Vapre
3f3687f71d Widget, avoid copying child list when reverse iterating. 2022-07-31 22:10:49 +02:00
N.N
a9d1b771a0 Align ORA d2k to original D2k
Align ORA D2k weapons to better match original d2k.
2022-07-28 23:42:00 +02:00
RoosterDragon
8dec998d8f Fix tab completion to work for all available commands.
Commands are registered in WorldLoaded event handlers, and IngameChatLogic takes all registered commands and provides tab completion. However IngameChatLogic is also created during WorldLoaded via LoadWidgetAtGameStart. No initialization order is enforced between commands and LoadWidgetAtGameStart, so they can appear in any order.

If a command gets registered before LoadWidgetAtGameStart runs, then it will get tab completion. If it gets registered after then no tab completion is available, even though the command can still be used and appears when using '/help'.

To fix this, we allow the tab completion to check for available commands lazily, meaning it will check for available commands every time the tab key is pressed. This means it will always have the full list of commands available regardless of the initialization order.
2022-07-26 16:42:18 +02:00
teinarss
999af0c05b Add OrderBuffer and time synchronisation. 2022-07-26 15:09:08 +03:00
abcdefg30
4435bdec3c Fix a crash when there is no briefing text 2022-07-25 20:19:36 -05:00
Gustas
e00887e4e1 Make support power fakes infiltratable 2022-07-25 20:07:02 -05:00
N.N
75554123f6 make ornithopter targetable
make ornithopter targetable by anti-air units

update to use just one Targetable type
2022-07-24 21:17:28 +02:00
Gustas
bf5bd63635 Refactor checkbox 2022-07-23 18:32:43 +02:00
Vapre
804bff1b0e TooltipWidgetContainer, load tooltip ui only when visible. 2022-07-18 17:54:57 +02:00
Andre Mohren
0e5f33ef93 PlayerColorPalette now using the full palette if no RemapIndex is set. 2022-07-18 12:23:39 +03:00
Andre Mohren
df72d303b8 Added PaletteFromGrayscale. 2022-07-18 12:23:39 +03:00
Gustas
b597c000d6 Update LobbyLogic to use the new MapCache map tracking 2022-07-17 22:23:13 +02:00
Gustas
6bcf194874 Add map update tracking to MapCache and fix crash when restarting a game 2022-07-17 22:23:13 +02:00
AspectInteractive2
a1a50d6c98 Added rotation logic to the renderer to enable the use of Interpolated Facings. 2022-07-17 17:03:53 +02:00
Sieds Aalberts
e060d6eb05 CellLayer TryGetValue. Return a value if within cell layer bounds. 2022-07-15 20:41:26 +03:00
Gustas
a5ea98ae35 Add RAGL S12 balance 2022-07-15 19:05:41 +02:00
penev92
4f34029556 Added a missing SequenceReferenceAttribute 2022-07-15 19:23:41 +03:00
tomas
5f4ed5f16b Update TextNotificationsManager to use Ui.Send 2022-07-15 19:19:09 +03:00
tomas
b0329aad35 Add Mediator for UI notifications 2022-07-15 19:19:09 +03:00
Matthias Mailänder
91fbd618ce Fix a crash when encountering 0 byte .vqa placeholders. 2022-07-12 23:23:28 +02:00
Leo512bit
9e34299085 Changed anypower tag name to A Power Plant
Updated wording and changed cnc

Capitlazied and added TS
2022-07-11 23:31:41 +02:00
Unrud
0a36d6f995 Use python3 for gtk-dialog.py
As mentioned in https://github.com/OpenRA/OpenRA/pull/20059#issuecomment-1166288560
2022-07-10 18:55:25 +02:00
Unrud
678f249c63 Scripts: Disable markup in error messages
Error messages are displayed using the following methods:

* **zenity** parses pango markup and replaces escaped characters
* **kdialog** replaces (some) escaped characters
* **gtk-dialog.py** replaces `\n`
* **printf** interprets format strings and replaces escaped characters
* **echo** just displays the text

The error messages themself contain escaped characters and paths from variables.

This PR unifies the behavior by:

* Use **printf** to format error messages and replace escaped characters
* Setting `--no-markup` for **zenity** to disable pango markup and escaped characters
* Remove `\n` replacement from **gtk-dialog.py**.
* Use plain **echo** instead of **printf**
2022-07-10 18:55:25 +02:00
Gustas
a03e794140 Add an option to disable chat in replays 2022-07-08 19:40:04 +02:00
abcdefg30
8a98ad51fd Fix sequences only being checked on actors with RenderSprites 2022-07-08 10:28:39 +03:00
abcdefg30
0ded8f8080 Allow null images for SmokeImage on SmudgeLayer 2022-07-08 10:28:39 +03:00
Gustas
36a86c2cd8 Nerf supply truck XP gain 2022-07-06 19:55:49 -05:00
abcdefg30
90ea611cee Rename the 20201213 update rules directory to 20210321 2022-07-05 16:44:17 +02:00
Unrud
bd6d69c5a1 Makefile: More robust check-scripts
Use **xargs** to pass results of **find** instead of word splitting. Word splitting fails when filenames contain white spaces (or if no files are found).
2022-07-05 16:07:01 +02:00
abcdefg30
8e1dce4bbe Add a lint check for maps without playable player 2022-07-05 16:01:22 +02:00
Gustas
7439f8b20a Update AUTHORS 2022-07-05 16:12:09 +03:00
Vapre
8c042a243e PathSearch, make TargetPredicate a readonly private field. 2022-07-04 20:34:23 +02:00
Matthias Mailänder
834de4efbe Port to Linguini 2022-07-02 22:32:37 +01:00
Matthias Mailänder
9d8c2bb4c4 Recommend .ftl syntax highlighting. 2022-07-02 22:32:37 +01:00
Sieds Aalberts
f5de8be3f0 Rectangle equals, trivial optimization. 2022-07-02 23:40:01 +03:00
Paul Chote
c8df1e864c Rework sequence docs plumbing. 2022-07-02 14:10:52 +03:00
Paul Chote
2037e37d4e Replace Sequence EmbeddedPalette with HasEmbeddedPalette. 2022-07-02 14:10:52 +03:00
abcdefg30
c1822d1cef Fix NREs in CheckUnknownWeaponFields 2022-06-26 23:46:51 +01:00
abcdefg30
82692b9d7f Fix crashes in WeaponInfo when warheads or projectiles cannot be created 2022-06-26 23:46:51 +01:00
abcdefg30
185bef39b0 Fix "Inherits" nodes being resolved as objects during linting 2022-06-26 23:46:51 +01:00
abcdefg30
5fe166dfd3 Fix an NRE in CheckUnknownTraitFields 2022-06-26 23:46:51 +01:00
penev92
07ec2d03fb Added an option to run utility.cmd programatically
And still pass arguments to Utility.exe without having to manually input them.
2022-06-26 16:14:22 +01:00
penev92
c3c5dbfa35 Unhardcoded SpriteSequence properties
To prepare them for documentation generation.
Also added descriptions to SpriteSequence implementations and their properties.
Also made a few code style fixes.
2022-06-26 15:41:19 +01:00
abcdefg30
d1f7fb8fb8 Serialize the actor generation for network orders 2022-06-25 18:18:49 +02:00
abcdefg30
13145557c8 Fix the switch-case formatting in Order.Deserialize 2022-06-25 18:18:49 +02:00
Mustafa Alperen Seki
c15af9f68a Ignore nonexistent actors in D2k importer code instead of crashing. 2022-06-24 22:26:15 +01:00
Mustafa Alperen Seki
6083eb4ac8 Remove D2k CheckImportActors 2022-06-24 22:26:15 +01:00
penev92
07db77fb8d Fix RemoveTurnToDock update rule 2022-06-24 21:16:26 +01:00
Ivaylo Draganov
5f42c7c8df Add support for readonly hotkeys and expose chat input hotkeys 2022-06-24 19:42:53 +01:00
Matthias Mailänder
1969ae361c Add missing ISync 2022-06-12 18:40:35 +02:00
Paul Chote
d050fe9f26 Move UnitOrderGenerator to Mods.Common. 2022-06-12 11:57:38 +02:00
Paul Chote
6eb8a4568b Allow mods to replace UnitOrderGenerator with their own default. 2022-06-12 11:57:38 +02:00
Paul Chote
bbe068f6cb Move IOrderGenerator to OpenRA.Orders namespace. 2022-06-12 11:57:38 +02:00
Ivaylo Draganov
320228f9d9 Add hotkeys for editor map overlays 2022-06-10 18:21:57 +02:00
Ivaylo Draganov
13ceda3259 Add hotkeys for map editor tabs 2022-06-10 18:21:57 +02:00
Ivaylo Draganov
b02a3d0f8f Remove unused yaml node in editor chrome 2022-06-10 18:21:57 +02:00
RoosterDragon
c9ee902510 Fix issues preventing suboptimal path searches.
Two different issues were causing a path search to not explore cells in order of the cheapest estimated route first. This meant the search could sometimes miss a cheaper route and return a suboptimal path.

- PriorityQueue had a bug which would cause it to not check some elements when restoring the heap property of its internal data structure. Failing to do this would invalidate the heap property, meaning it would not longer return the items in correct priority order. Additional tests ensure this is covered.
- When a path search encountered the same cell again with a lower cost, it would not update the priority queue with the new cost. This meant the cell was not explored early enough as it was in the queue with its original, higher cost. Exploring other paths might close off surrounding cells, preventing the cell with the lower cost from progressing. Instead we now add a duplicate with the lower cost to ensure it gets explored at the right time. We remove the duplicate with the higher cost in CanExpand by checking for already Closed cells.
2022-06-07 15:47:02 +02:00
penev92
c1cb9ea6be Removed an using, redundant when building on Mono 2022-06-03 21:43:43 +02:00
abcdefg30
6a31b1f9f3 Update the copyright header year 2022-05-28 00:35:10 -05:00
Matthias Mailänder
3f328a14be Hack removal 2022-05-24 21:07:54 -05:00
Matthias Mailänder
709512b166 Add Lua API export in EmmyLua syntax. 2022-05-24 21:07:54 -05:00
RoosterDragon
550db7e958 Ensure SpawnStartingUnits initializes after Locomotor.
Prior to ef44c31a72, Locomotor would be earlier in the trait initialization sequence than SpawnStartingUnits. After this commit, the initialization sequence was perturbed and SpawnStartingUnits would initialize first. When SpawnStartingUnits would query CanEnterCell this would generate a null reference as Locomotor had not yet initialized.

SpawnStartingUnitsInfo is made to initialize NotBefore LocomotorInfo to enforce the required trait ordering.
2022-05-24 12:45:03 -05:00
darkademic
1fc3785f79 Make range modifiers apply to AreaBeam projectile. 2022-05-22 19:42:23 -05:00
RoosterDragon
89042014bd Gracefully handle trying to find paths outside the map.
Rather than crashing, return no path instead.
2022-05-22 17:39:44 -05:00
abcdefg30
4ec19b3486 Remove deprecated airstrike and paratrooper methods for Lua 2022-05-22 10:57:30 -05:00
abcdefg30
7ec74749be Remove the deprecated WAngle.Range accessor for Lua 2022-05-22 10:57:30 -05:00
abcdefg30
c827d1a4ab Remove deprecated integer facing handling for Lua 2022-05-22 10:57:30 -05:00
abcdefg30
660130653c Use TryGetValue instead of ContainsKey and a lookup for cached sounds 2022-05-22 10:39:27 -05:00
abcdefg30
ea04a7fec5 Clear cached notifications when initializing a new map/mod 2022-05-22 10:39:27 -05:00
abcdefg30
9d481854f3 Make currentSounds readonly 2022-05-22 10:39:27 -05:00
atlimit8
85b9cf0a69 Fix fatal radar sound bug
The following error occurs on a map where the radar activation sound plays:
Exception has occurred: CLR/System.ArgumentException
An exception of type 'System.ArgumentException' occurred in System.Private.CoreLib.dll but was not handled in user code: 'Property set method not found.'
   at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture)
   at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, Object[] index)
   at OpenRA.FieldLoader.LoadField(Object target, String key, String value) in /home/jason/git/OpenRA/OpenRA.Game/FieldLoader.cs:line 609
   at OpenRA.WidgetLoader.LoadWidget(WidgetArgs args, Widget parent, MiniYamlNode node) in /home/jason/git/OpenRA/OpenRA.Game/Widgets/WidgetLoader.cs:line 60
   at OpenRA.WidgetLoader.LoadWidget(WidgetArgs args, Widget parent, MiniYamlNode node) in /home/jason/git/OpenRA/OpenRA.Game/Widgets/WidgetLoader.cs:line 67
   at OpenRA.WidgetLoader.LoadWidget(WidgetArgs args, Widget parent, MiniYamlNode node) in /home/jason/git/OpenRA/OpenRA.Game/Widgets/WidgetLoader.cs:line 67
   at OpenRA.WidgetLoader.LoadWidget(WidgetArgs args, Widget parent, MiniYamlNode node) in /home/jason/git/OpenRA/OpenRA.Game/Widgets/WidgetLoader.cs:line 67
   at OpenRA.WidgetLoader.LoadWidget(WidgetArgs args, Widget parent, String w) in /home/jason/git/OpenRA/OpenRA.Game/Widgets/WidgetLoader.cs:line 43
   at OpenRA.Game.LoadWidget(World world, String id, Widget parent, WidgetArgs args) in /home/jason/git/OpenRA/OpenRA.Game/Game.cs:line 160
   at OpenRA.Mods.Common.Widgets.Logic.LoadIngamePlayerOrObserverUILogic..ctor(Widget widget, World world) in /home/jason/git/OpenRA/OpenRA.Mods.Common/Widgets/Logic/Ingame/LoadIngamePlayerOrObserverUILogic.cs:line 34
2022-05-21 16:10:08 +02:00
Eduardo Cáceres
a1811b4b04 Add fixed issues as warnings to .editorconfig 2022-05-18 11:42:36 -05:00
Eduardo Cáceres
c224bfdc0d Include name in authors 2022-05-18 11:42:36 -05:00
Eduardo Cáceres
8ced155ca3 Simplify 'always true' expressions
Co-authored-by: atlimit8 <atlimit8-vcs@gmx.com>
2022-05-18 11:42:36 -05:00
Eduardo Cáceres
aa998a46d9 Simplify collection initialization 2022-05-18 11:42:36 -05:00
Eduardo Cáceres
cae43808d9 Optimize string comparison 2022-05-18 11:42:36 -05:00
Eduardo Cáceres
c0d270b87d Abstract class with public constructor 2022-05-18 11:42:36 -05:00
Eduardo Cáceres
1b69ff017d Dictionary optimization 2022-05-18 11:42:36 -05:00
Eduardo Cáceres
b71402f64d Convert extension in real extension 2022-05-18 11:42:36 -05:00
Eduardo Cáceres
2677e9c013 Use pattern matching 2022-05-18 11:42:36 -05:00
Eduardo Cáceres
aed2b8afae Remove unnecessarily interpolated strings 2022-05-18 11:42:36 -05:00
Eduardo Cáceres
7eb64ea6fc Use read-only autoimplemented property when possible 2022-05-18 11:42:36 -05:00
Eduardo Cáceres
79f321cb44 .Any(), .Count() -> .Count or .Length 2022-05-18 11:42:36 -05:00
penev92
6eb4fe8980 Added a VSCode task to run the utility 2022-05-15 23:06:25 -05:00
penev92
9a30d260a1 Added launch profiles for the Utility project 2022-05-15 23:06:25 -05:00
abcdefg30
581b5cfacf Resolve an IDE0017 warning in ImportLegacyMapCommand 2022-05-11 15:33:23 +02:00
Paul Chote
c6dc0b58be Change macOS control group defaults back to Cmd. 2022-05-09 14:58:01 +02:00
Ivaylo Draganov
6a1a6b6397 Add platform override support for hotkeys and unhardcode editor hotkeys 2022-05-07 20:55:49 +01:00
Ivaylo Draganov
1cf4838b08 Remove unneeded yaml nodes from hotkey settings 2022-05-03 22:22:55 +02:00
Ivaylo Draganov
f0e69c3f64 Add hotkey filtering functionality (by name and by context) 2022-05-03 22:22:55 +02:00
Paul Chote
56153aac9f Search x86_64 before other multiarch dirs. 2022-05-01 11:55:28 +02:00
Leo512bit
ddef76e833 Added more thief voice lines 2022-04-30 17:19:48 -05:00
Ivaylo Draganov
0522576f73 Allow scrolling of settings panels while hovering a section header 2022-04-30 21:46:55 +02:00
abcdefg30
512eaf2746 Use Building instead of D2kBuilding for the Sietch actor 2022-04-30 12:28:28 -05:00
RoosterDragon
714b38c97c Add CellCostChanged event to Locomotor.
This event allows subscribers to be made aware when the terrain costs for a cell change.
2022-04-30 15:56:04 +02:00
Ivaylo Draganov
bc676fbf78 Add text notifications to many in-game events 2022-04-30 12:39:29 +01:00
Ivaylo Draganov
ea0bcbd1cc Adjust position of transients panel in TS 2022-04-30 12:39:29 +01:00
Ivaylo Draganov
24b9482cc1 Add support for transient text notifications matching speech notifications 2022-04-30 12:39:29 +01:00
Ivaylo Draganov
9f723be65a Add checkbox to settings for toggling transient notifications 2022-04-30 12:39:29 +01:00
Ivaylo Draganov
a1e6ac85dc Add transient notifications pool 2022-04-30 12:39:29 +01:00
RoosterDragon
e22b6de4e8 Rename PathGraph to MapPathGraph.
Move PathCostForInvalidPath and MovementCostForUnreachableCell constants into a new static class, PathGraph.
2022-04-27 23:19:59 +02:00
RoosterDragon
a1a583ea0a Split out a base class for PathGraph.
Move the domain logic involved into a base class named DensePathGraph. The base class contains all the domain logic necessary to traverse a graph including concepts such as custom movement layer.

PathGraph becomes responsible for proving a backing array for the pathfinding information, and is where the pooling logic lives instead, helping split the two concepts out.
2022-04-27 23:19:59 +02:00
penev92
86515610a5 Made all projectile and warhead fields readonly
This came up while working on the new documentation generation and comparing the results to ORAIDE's own code parser.
2022-04-26 22:37:12 +02:00
penev92
2bac492a65 Made all traitInfo fields readonly
This came up while working on the new documentation generation and comparing the results to ORAIDE's own code parser.
2022-04-26 22:37:12 +02:00
Gustas
135823fced fix crash when non-host exits map chooser 2022-04-25 23:03:27 +02:00
Paul Chote
a152bf7324 Replace custom mono defines with toolchain-provided defines. 2022-04-24 20:31:47 +02:00
RoosterDragon
3e5666ca53 Return an empty path when a search with no locations is made.
The restores the previous behaviour before FindUnitPathToTargetCell was introduced. This prevents callers such as the harvester code crashing when a harvester tries to route home to a refinery, but there are no refineries.
2022-04-24 12:52:18 +02:00
RoosterDragon
7df39f3522 On Locomotor initialization, update blocked cells.
Prior to ef44c31a72, Locomotor would be earlier in the trait initialization sequence than SpawnMapActors. Locomotor would assume no actors on the map, and register to update blocked cells when new ones were added. When SpawnMapActors created actors, Locomotor was made aware and kept up-to-date.

After this commit, the initialization sequence was perturbed and SpawnMapActors would initialize first. Locomotor would assume no actors on the map and thus be unaware of these starting units, meaning those starting units would not cause blocking, allowing units to pass through them.

There are two possible fixes. SpawnMapActorsInfo can initialize NotBefore<LocomotorInfo>, enforcing that actors are spawned after locomotor is ready. Or we can remove the assumption in Locomotor that the map starts empty, and have it update blocked cells on startup. The latter seems cleaner, so any other traits that may want to spawn actors don't have to be aware sequencing their initialization with the Locomotor trait, instead things would "just work".
2022-04-24 12:48:52 +02:00
Matthias Mailänder
4c08e449e0 Fix master server respond not being localized. 2022-04-23 22:29:40 +01:00
Paul Chote
0dbd8264b8 Handle exceptions thrown by HttpClient.GetAsync. 2022-04-23 22:44:05 +02:00
Matthias Mailänder
6c81590b20 Extract translation strings. 2022-04-21 13:26:55 +03:00
Matthias Mailänder
99033ab016 Localize dedicated server messages. 2022-04-21 13:26:55 +03:00
Matthias Mailänder
fe15748cc0 Wrap console logging with time stamp. 2022-04-21 13:26:55 +03:00
Matthias Mailänder
aaa3b49496 Update Mono.NAT 2022-04-21 13:11:45 +03:00
RoosterDragon
ecb7c16751 Tweak handling of nullable types in LUA doc generation.
The types for Int32 and Boolean are currently replaced with friendly names of int and bool for the docs. Ensure we apply the same handling when these are nullable types, changing the output from Int32? and Boolean? to int? and bool?
2022-04-18 13:02:05 +02:00
RoosterDragon
d2935672ca Fix the shape of the IPathFinder interface, ensure all path searches use it.
Some path searches, using PathSearch, were created directly at the callsite rather than using the pathfinder trait. This means some searches did not not benefit from the performance checks done in the pathfinder trait. It also means the pathfinder trait was not responsible for all pathing done in the game. Fix this with the following changes:
- Create a sensible shape for the IPathFinder interface and promote it to a trait interface, allowing theoretical replacements of the implementation. Ensure none of the concrete classes in OpenRA.Mods.Common.Pathfinder are exposed in the interface to ensure this is possible.
- Update the PathFinder class to implement the interface, and update several callsites manually running pathfinding code to instead call the IPathFinder interface.
- Overall, this allows any implementation of the IPathFinder interface to intercept and control all path searching performed by the game. Previously some searches would not have used it, and no alternate implementations were possible as the existing implementation was hardcoded into the interface shape.

Additionally:
- Move the responsibility of finding paths on completed path searches from pathfinder to path search, which is a more sensible location.
- Clean up the pathfinder pre-search optimizations.
2022-04-18 11:18:43 +01:00
RoosterDragon
2583a7af31 After NotBefore<> support to control initialization order.
Requires<T> means that trait of type T will be initialized first, and asserts that at least one exists. The new NotBefore<T> means that trait of type T will be initialized first, but allows no traits.

This allows traits to control initialization order for optional dependencies. They want to be initialized second so they can rely on the dependencies having been initialized. But if the dependencies are optional then to not throw if none are present.

We apply this to Locomotor which was previously using AddFrameEndTask to work around trait order initialization. This improves the user experience as the initialization is applied whilst the loading screen is still visible, rather than the game starting and creating jank by performing initialization on the first tick.
2022-04-18 10:31:47 +01:00
Mustafa Alperen Seki
62e7c7a318 Make PortableChrono PausableConditional. 2022-04-17 12:14:50 +02:00
Mustafa Alperen Seki
9de8d8854d Pass PortableChrono instead of PortableChronoInfo to PortableChronoOrderGenerator. 2022-04-17 12:14:50 +02:00
Matthias Mailänder
648c56bca1 Don't crash when joining a game after asset installation. 2022-04-17 00:27:36 +03:00
Matthias Mailänder
0f90713aba Added addition error logging to graphics.log when SDL fails 2022-04-16 22:37:05 +02:00
Mustafa Alperen Seki
30f14dcc4c Fix Army Spectator tab not using FactionImages. 2022-04-15 18:17:49 +02:00
RoosterDragon
ac0969d688 Use nameof instead of hardcoded strings in reflection calls.
This helps improve the safety of code the uses reflection when methods may get renamed, and helps navigating code as the nameof will show up when searching for references to members.
2022-04-14 19:58:15 +02:00
Gustas
b254eb0f3d Add dynamic map refresh 2022-04-14 16:16:38 +02:00
Gustas
61df7974b0 Make the delete button not call MapCache every frame 2022-04-14 16:16:38 +02:00
tomas
515aba0ee7 Update SDL to 2.0.20 2022-04-13 20:13:01 +02:00
Matthias Mailänder
af3362c62f Use string.Contains(char) instead of string.Contains(string)
with single characters
2022-04-13 20:09:57 +02:00
Matthias Mailänder
3bc28ba6e2 Use inline string replacement. 2022-04-13 20:09:57 +02:00
dnqbob
4f43b157a8 Add place variant building for BaseBuilderBotModule.
1. If it follow the refinery placing logic, then we can use Facings in PlaceBuildingVariants to help BaseBuilderBotModule "rotates" it to minefield.

2. If it is a normal building, BaseBuilderBotModule will place a random variant actor.
2022-04-12 22:28:03 +02:00
penev92
f74d1c3cf8 Adjusted D2k mission player colors
PlayerReference colors in D2k missions only affect chat text and minimap colors because actors use specific palette colors.
So using the colors from the original game's minimap.
2022-04-12 22:15:02 +02:00
penev92
2866342522 Add missing PlayerReferences in D2k map import 2022-04-12 22:15:02 +02:00
tomas
8e19463450 Fix desync handling 2022-04-12 21:56:46 +02:00
abcdefg30
dab8ee4f94 Load campaign and utils Lua scripts before map scripts 2022-04-12 21:54:11 +02:00
Mustafa Alperen Seki
c71af0e613 Make NukePower MissileImage optional. 2022-04-12 21:52:29 +02:00
Mustafa Alperen Seki
60b123c641 Split NukePower MissileImage from MissileWeapon. 2022-04-12 21:52:29 +02:00
Matthias Mailänder
0260884369 Added translation support for server orders. 2022-04-03 19:23:26 +02:00
Matthias Mailänder
ee95d2591f Code cleanup. 2022-04-03 19:23:26 +02:00
Matthias Mailänder
7735107deb Add a script trigger overlay. 2022-04-02 18:01:00 +02:00
Matthias Mailänder
058fb51f4c Reduce the menu button size to save space. 2022-04-02 18:01:00 +02:00
Matthias Mailänder
0e7ad43425 Remove unused parameters. 2022-04-01 23:30:26 +02:00
RoosterDragon
ea243b8558 Fix crash in TSEditorResourceLayer when adding resources.
Ensure cells are within map bounds when checking if adjacent cells should be cleared during resource placement.
2022-03-26 23:07:41 +01:00
abcdefg30
e685731b33 Add an update rule for the removal of AttackFrontal's FacingTolerance 2022-03-13 11:16:47 +01:00
abcdefg30
889425ab0f Remove AttackFrontal's FacingTolerance and define it explicitly in rules 2022-03-13 11:16:47 +01:00
dnqbob
9049ae6f20 Add a backawrd moving option for mobile 2022-03-13 10:46:04 +01:00
Vapre
83357af14c WorldRenderer, replace foreach ActorsWithTraits with ApplyToActorsWithTrait. #18798. 2022-03-13 10:45:01 +01:00
Matthias Mailänder
00356b8bbd Setup Tiberian Sun forest fires. 2022-03-12 17:16:43 +01:00
Mustafa Alperen Seki
b54a724aea Add ability to override CannotPlaceNotification per queue. 2022-03-12 12:55:41 +01:00
Matthias Mailänder
a6cb20a4ec Fix overlapping tracks when vehicle rotates.
Also optimize the function slightly.
2022-03-12 12:53:59 +01:00
Matthias Mailänder
5220da1bae This can never be null. 2022-03-12 12:53:59 +01:00
Mustafa Alperen Seki
2f1edd4516 Remove Replacable actors for LineBuild too. 2022-03-11 22:32:08 +01:00
Mustafa Alperen Seki
a7004b2db7 Check for placeablilty of LineBuild Segment instead of the Post. 2022-03-11 22:32:08 +01:00
Mustafa Alperen Seki
153bd14f9e Add Force-Move undeploy to D2k Thumper Infantry. 2022-03-11 22:29:45 +01:00
Leo512bit
d2611ebfb4 Added fsmap to music.ymal and set the lose music to it.
Signed-off-by: Leo512bit <leonardmatthewteyssier@gmail.com>
2022-03-11 21:36:43 +01:00
Ivaylo Draganov
eadc8ad689 Change color of labels that correspond to disabled inputs
- Add a new widget type for input and extend it from other input widgets
- Add a new label type that can be linked to an input widget
- Change the label color when the input's disabled state changes
2022-03-07 21:01:33 +01:00
Mustafa Alperen Seki
0203476da9 Update variables for Flash lua function. 2022-03-05 15:19:01 +01:00
Mustafa Alperen Seki
7e4c3acda3 Fix ZRamp only allowing integer values. 2022-03-02 19:41:49 +01:00
darkademic
e082497a1a Corrected StartBurstReport sound synchronisation when used with FireDelay. 2022-02-26 10:40:19 -06:00
Matthias Mailänder
9605e5ad9c Use the new MiniYAML GitHub syntax. 2022-02-26 17:04:50 +01:00
Matthias Mailänder
da4fb27fca Use modern string syntax. 2022-02-26 17:04:50 +01:00
penev92
57d3321d0f Make WithDockingAnimation optional
The `Refinery` trait has a hardcoded usage of `SpriteHarvesterDockSequence`, which requires the harvester to have `WithDockingAnimation`, making it inconvenient-at-best to NOT have a docking/unloading animation.
2022-02-23 22:06:07 +01:00
IceReaper
fa8bfc6ca0 Allow mods to implement new building placement conditions and cursors. 2022-02-22 01:20:38 +02:00
penev92
0f1ff3f2fc Recommend the MiniYAML language server extension
Recommends  https://marketplace.visualstudio.com/items?itemName=openra.oraide-vscode  as a VSCode extension for the OpenRA workspace.
2022-02-20 16:30:38 +01:00
Mustafa Alperen Seki
91f626c42a Make WithVoxelWalkerBody PausableConditional. 2022-02-18 12:24:23 +01:00
dnqbob
6c33d47ef3 Update rule on renaming 'CloakTypes' to 'DetectionTypes' 2022-02-12 19:30:21 +01:00
dnqbob
831bed2c4d Add enter-cloak & exit-cloak effect for Cloak 2022-02-12 19:30:21 +01:00
RoosterDragon
d67f696bd0 Move BlockedByActor, IPositionableInfo, IPositionable to Mods.Common.
Actor previously cached targetable locations for static actors as an optimization. As we can no longer reference the IPositionable interface, move this optimization to HitShape instead. Although we lose some of the efficiency of caching the final result on the actor, we gain some by allowing HitShape to cache the results as long as they have not changed. So instead of being limited to static actors, we can extend the caching to currently stationary actor.
2022-02-11 23:35:08 +01:00
RoosterDragon
d8a4d7fd1d Cache the global mix database in MixLoader
We can reuse this global database as it doesn't change, rather than loading a new copy each time a new mix file is parsed.
2022-02-11 14:05:55 +01:00
RoosterDragon
f5d1fe4bc4 Use more efficient search in MergeIntoResolved
Switch Enumerable.FirstOrDefault to List.Find. The latter can avoid some allocations because the concrete collection type is known.
2022-02-11 14:01:16 +01:00
RoosterDragon
ed72e61f8f Add detailed documentation for BlockedByActor enum. 2022-02-08 23:34:07 +01:00
RoosterDragon
9cd55df584 Ensure editorconfig naming styles align with StyleCop SA13XX style rules.
Aligns the naming conventions defined in editorconfig (dotnet_naming_style, dotnet_naming_symbols, dotnet_naming_rule) which are reported under the IDE1006 rule with the existing StyleCop rules from the SA13XX range.

This ensures the two rulesets agree when rejecting and accepting naming conventions within the IDE, with a few edges cases where only one ruleset can enforce the convention. IDE1006 allows use to specify a naming convention for type parameters, const locals and protected readonly fields which SA13XX cannot enforce. Some StyleCop SA13XX rules such as SA1309 'Field names should not begin with underscore' are not possible to enforce with the naming rules of IDE1006.

Therefore we enable the IDE1006 as a build time warning to enforce conventions and extend them. We disable SA13XX rules that can now be covered by IDE1006 to avoid double-reporting but leave the remaining SA13XX rules that cover additional cases enabled.

We also re-enable the SA1311 rule convention but enforce it via IDE1006, requiring some violations to be fixed or duplication of existing suppressions. Most violations fixes are trivial renames with the following exception. In ActorInitializer.cs, we prefer to make the fields private instead. ValueActorInit provides a publicly accessible property for access and OwnerInit provides a publicly accessible method. Health.cs is adjusted to access the property base instead when overriding. The reflection calls must be adjusted to target the base class specifically, as searching for a private field from the derived class will fail to locate it on the base class.

Unused suppressions were removed.
2022-02-07 19:14:45 +01:00
Gustas
13ee62c181 Make overlay dropdown optional 2022-02-06 19:21:43 +01:00
Gustas
addfdf50fa Crash when EditorWorld does not have BuildableTerrainOverlay 2022-02-06 19:21:43 +01:00
reaperrr
a17af87a5e Fix aircraft with TakeOffOnCreation=false not freeing exit
...when another actor gets produced.
2022-02-06 19:20:29 +01:00
reaperrr
44fc4a1d0f Fix random placement of AssociateWithAirfieldActivity
It doesn't belong to IMove, so it doesn't belong into that region.
Put it near ICreationActivity where it belongs.
2022-02-06 19:20:29 +01:00
darkademic
257ef95963 Suffix projectile shadow palettes with player name if IsPlayerPalette = true. 2022-02-06 19:18:59 +01:00
Matthias Mailänder
9bb41630e7 Update documentation action to .NET 6 2022-02-06 18:06:44 +01:00
Ivaylo Draganov
f5ab9d95fe Make remove from control group hotkey available only to players 2022-02-06 09:09:33 -06:00
Mustafa Alperen Seki
c096934db8 Fix projectile shadow alpha calculation. 2022-02-04 23:35:44 +01:00
Ivaylo Draganov
1813edc74b Add contexts for hotkey validation 2022-02-04 18:49:05 +01:00
RoosterDragon
1bc95a290f Preallocate dictionary size in ToDictionaryWithConflictLog 2022-02-02 15:10:37 +01:00
Smittytron
74cced319c Change terrain type of clear straight bridge tiles 2022-01-31 14:19:47 +01:00
RoosterDragon
bd30c66f95 Reuse object arrays in FieldLoader Parse methods 2022-01-30 19:47:06 +01:00
RoosterDragon
2ab3917f29 Clean up usage of DomainIndex
- When a path search is being performed the path search will not attempt route to inaccessible cells, so domain index checks to avoid inaccessible cells in the search predicate are redundant and can be removed.
- DomainIndex is a required world trait, so we don't need to use TraitOrDefault and therefore can avoid dealing with the null case.
2022-01-30 16:22:26 +01:00
Matthias Mailänder
4b4b0125a2 Make UnitsInRange accessible to mod code. 2022-01-30 11:56:43 +01:00
Matthias Mailänder
240c96b781 Expose sprite sequence to linting and documentation. 2022-01-30 11:56:43 +01:00
RoosterDragon
6dc189b7d1 Rearrange various API surfaces related to pathfinding.
The existing APIs surfaces for pathfinding are in a wonky shape. We rearrange various responsibilities to better locations and simplify some abstractions that aren't providing value.

- IPathSearch, BasePathSearch and PathSearch are combined into only PathSearch. Its role is now to run a search space over a graph, maintaining the open queue and evaluating the provided heuristic function. The builder-like methods (WithHeuristic, Reverse, FromPoint, etc) are removed in favour of optional parameters in static creation methods. This removes confusion between the builder-aspect and the search function itself. It also becomes responsible for applying the heuristic weight to the heuristic. This fixes an issue where an externally provided heuristic ignored the weighting adjustment, as previously the weight was baked into the default heuristic only.
- Reduce the IGraph interface to the concepts of nodes and edges. Make it non-generic as it is specifically for pathfinding, and rename to IPathGraph accordingly. This is sufficient for a PathSearch to perform a search over any given IGraph. The various customization options are concrete properties of PathGraph only.
- PathFinder does not need to deal with disposal of the search/graph, that is the caller's responsibility.
- Remove CustomBlock from PathGraph as it was unused.
- Remove FindUnitPathToRange as it was unused.
- Use PathFinder.NoPath as the single helper to represent no/empty paths.
2022-01-30 11:47:52 +01:00
Matthias Mailänder
cd1fe2d23b Fix saving into writable system directories. 2022-01-30 11:46:42 +01:00
abcdefg30
2af8296f48 Add the possibility to always show detection circles 2022-01-30 11:41:02 +01:00
abcdefg30
7c085e49c7 Cache DetectCloaked traits in RenderDetectionCircle 2022-01-30 11:41:02 +01:00
xan2622
13fbc412d2 removal 2022-01-30 11:28:16 +01:00
abcdefg30
a9cd2d41c7 Fix ToAhsv using the wrong type for alpha 2022-01-29 13:44:02 +01:00
Ivaylo Draganov
7a93b9ea8c Make control group hotkeys configurable
- Split control groups management to its own interface
- Add hotkeys for selecting, creating, adding to and combining with control groups
- Add a ControlGroups widget to manage the player interaction
2022-01-28 18:38:18 +01:00
Gustas
04b456d6c2 Create overlays dropdown 2022-01-26 23:09:18 +01:00
Gustas
2f130b17ba Fix buildable overlay not updating and make ramps unbuildable 2022-01-23 22:37:02 +01:00
penev92
9cc631ca7e Added a rule about using object initializers 2022-01-23 13:14:57 +01:00
penev92
ab09ce21b4 Changed code to use object initializers everywhere 2022-01-23 13:14:57 +01:00
penev92
70e2769a85 Added a rule about the readonly modifier
Also added a rule to silence StyleCop complaining about StaticReadonlyFieldsMustBeginWithUpperCaseLetter to match what we already have configured for the IDE.
2022-01-22 18:47:06 +00:00
penev92
bf332b6619 Fixed fields missing the readonly modifier 2022-01-22 18:47:06 +00:00
Piotr Usewicz
f83e27d647 Point towards arm libraries
When compiling for macOS using `unix-generic` on Apple M1 processors, point sarchdirs towards the correct location in Homebrew for arm64.
2022-01-22 18:21:36 +00:00
penev92
a67cfabd1e Reordered code style rules
To order them by their number.
2022-01-20 22:10:28 +01:00
penev92
8dbaa0c49f Added more explanations to .editorconfig 2022-01-20 22:10:28 +01:00
penev92
92d1d64dce Changed one-liner braces rule to silent
Having this set to "none" disabled the IDE's option to add braces, whereas "silent" lets it do it on the user's request while still not suggesting it on its own.
2022-01-20 22:10:28 +01:00
penev92
31b3647c09 Added a rule about unordered modifiers 2022-01-20 22:10:28 +01:00
penev92
d37336456d Fixed inconsistent declaration modifier order 2022-01-20 22:10:28 +01:00
penev92
3bacd81b8b Added a rule about zero-length array allocations 2022-01-20 22:10:28 +01:00
penev92
0d24ccc47a Fixed unnecessary zero-length array allocations
Changed all currently present zero-length array allocations in the codebase to use `Array.Empty` instead.
2022-01-20 22:10:28 +01:00
Paul Chote
1312c1aa72 Rename macOS compat packages to mono. 2022-01-20 19:31:43 +01:00
penev92
19dd23e349 Beautified the .editorconfig file 2022-01-19 14:37:14 +01:00
dnqbob
242d589c45 Make AI airstrike aircraft spawns randomly 2022-01-17 15:43:20 +01:00
Mustafa Alperen Seki
d149624b84 Add Lua Scripting for Carryall. 2022-01-12 14:24:13 +01:00
penev92
860ec642b8 Addressed review comments
- Renamed `IVideo.CurrentFrameNumber` to `CurrentFrameIndex`
 - Improved logged error message in VideoPlayerWidget
 - Renumbered fields in ThreadedGraphicsContext
2022-01-11 18:16:31 +01:00
penev92
248b8d1102 Renamed IVideo implementations
To match the interface they are implementing.
2022-01-11 18:16:31 +01:00
penev92
6f0509d235 Removed now-unused ITexture.SetData() overload 2022-01-11 18:16:31 +01:00
penev92
cb8530fbae Reworked internal palettes in video reader classes
This removes the need to pack & unpack color bytes as uints for no gain.
2022-01-11 18:16:31 +01:00
penev92
c4ab7041b8 Updated VideoPlayerWidget to play new IVideo data
Added optional padding to video frames because that's what VideoPlayerWidget expects.
Keeping the option to not use padding for other use-cases like converting frames to PNG.
2022-01-11 18:16:31 +01:00
penev92
ee29d0f9c7 Changed IVideo.CurrentFrameData uint[,] -> byte[] 2022-01-11 18:16:31 +01:00
penev92
1b5f2f1b39 Removed caching properties from video readers
Those seem redundant since the frame number is guaranteed to match the loaded data inside CurrentFrameData.
2022-01-11 18:16:31 +01:00
penev92
0df3b34c52 Did a beautification pass on IVideo and family
Removed property backing fields where applicable, introduced C#7 syntax for properties.
Renamed a bunch of interface properties and class private members with more descriptive names.
Did some inconsequential reordering.
2022-01-11 18:16:31 +01:00
abcdefg30
556413c91d Add whitespace fixes from the automatic update rule run 2022-01-11 18:09:05 +01:00
abcdefg30
f3bc450e20 Fix an oversight in the update rule for AttackBomber's FacingTolerance 2022-01-11 18:09:05 +01:00
abcdefg30
6556b33cef Move update rules to the correct subfolders and paths 2022-01-11 18:09:05 +01:00
abcdefg30
15c2800601 Retire the release-20191117 UpdatePath 2022-01-11 18:09:05 +01:00
abcdefg30
d660ce9c47 Change the UpdatePath targets from playtest-20201213 to release-20210321 2022-01-11 18:09:05 +01:00
Matthias Mailänder
6770c08bf9 Fix scrollitem-nohover-hover not found. 2022-01-11 17:40:58 +01:00
Ivaylo Draganov
99ac128820 Add selected actors count to feedback notification text 2022-01-09 19:07:45 +01:00
Mustafa Alperen Seki
fe05382b24 Change "actor id" to "actor name" in some descs. 2022-01-09 19:02:05 +01:00
Mustafa Alperen Seki
3c60a515f7 Add CarryableConditions to Carryall. 2022-01-09 19:02:05 +01:00
penev92
b67954451a Removed obsolete file OpenRA.sln.DotSettings
- The DEFAULT_PRIVATE_MODIFIER behaviour is now handled by the .editorconfig file via `dotnet_style_require_accessibility_modifiers = omit_if_default:warning`.
 Also added `dotnet_diagnostic.IDE0040.severity = warning` there to raise compile-time errors in the CI.
 - The field naming conventions seem to already be covered by (some) analyzer rules (checked in both VS and VSCode) - IDE1006/SA1306 and SA1307.
2022-01-09 18:58:37 +01:00
penev92
2f6f214bac Removed a bunch of explicit access modifiers 2022-01-09 18:58:37 +01:00
penev92
413d564f1d Removed obsolete file stylecop.json
It currently has two functions, both of which are covered by our .editorconfig file.
2022-01-09 18:58:37 +01:00
penev92
1326bca65c Updated .gitignore file
Removed some obsolete entries now that there is a new build directory.
2022-01-09 18:58:37 +01:00
Mustafa Alperen Seki
721210eafe Fix RevealsMap's effect not being removed for non-owners. 2022-01-09 18:53:16 +01:00
penev92
c6dacb50e8 Added hiding of the palette picker in the AssetBrowser 2022-01-09 18:40:32 +01:00
penev92
495faea96b Updated scale sliders to accout for the new AssetBrowser layout 2022-01-09 18:40:32 +01:00
penev92
b6b417d42f Fixed AssetBrowserLogic disposing audio streams prematurely 2022-01-09 18:40:32 +01:00
penev92
6fb228ddd1 Fixed Mp3Loader and OggLoader not resetting stream position 2022-01-09 18:40:32 +01:00
penev92
87b92b53a4 Reworked ISoundFormat.LengthInSeconds implementations 2022-01-09 18:40:32 +01:00
penev92
631297417c Fixed background music playing momentarily in AssetBrowser when switching to a video asset 2022-01-09 18:40:32 +01:00
penev92
001efc9409 Added containing package name to asset tooltip 2022-01-09 18:40:32 +01:00
penev92
8d20487cb6 Added manual playing and stopping of audio in the AssetBrowserLogic
Also added visualisation of audio file length and progress and improved asset cleanup.
2022-01-09 18:40:32 +01:00
penev92
abea3a0f74 Fixed AudFormat and WavFormat implementations of ISoundFormat.LengthInSeconds
- Fixed a rounding issue in `WavReader.WaveLength()`.
- Fixed `AudReader.SoundLength()` not resetting the stream position.
- Fixed crashes caused by disposed streams because `LengthInSeconds` would try and calculate the length on the fly. It is now precalculated and cached (making it consistent across all 5 current `ISoundFormat` implementations).
- Fixed a crash in `AudReader.LoadSound()`'s `out Func<Stream> result` because that func would try and access the disposed stream's `Length` property. That works for `SegmentStream`, but not for `FileStream`.
- Fixed frameCount/soundLength label positioning in the AssetBrowser window to avoid text clipping .
2022-01-09 18:40:32 +01:00
penev92
8b944e9c82 Added audio playback to the AssetBrowser 2022-01-09 18:40:32 +01:00
penev92
7a9e0863d6 Added a scale slider for sprites in the AssetBrowser 2022-01-09 18:40:32 +01:00
penev92
40c728269c Added a scale slider for models in the AssetBrowser 2022-01-09 18:40:32 +01:00
penev92
6907081c2b Paused shellmap music when opening videos in the AssetBrowser 2022-01-09 18:40:32 +01:00
penev92
a058b1f5bd Split AssetBrowser supported formats
Splitting them from one array into separate allows us to then reliably pick how each asset should be presented. Also lets us unhardcode some checks like "if file is .vxl ... else is sprite".
2022-01-09 18:40:32 +01:00
abcdefg30
8ac2815c9e Fix the first Land ctor not passing targetLineColor on 2022-01-07 01:22:16 +01:00
abcdefg30
942a0c8712 Update an outdated comment in Land.cs 2022-01-07 01:22:16 +01:00
Matthias Mailänder
cdac14b92b Avoid duplicate field. 2022-01-06 16:10:49 +02:00
Matthias Mailänder
718bf88b9a Remove superflous null checks
and cache a dictionary lookup.
2022-01-06 01:54:27 +01:00
Ivaylo Draganov
eb4de47362 Add support for disabled click sound in scrollbar widget 2022-01-05 21:15:19 +01:00
Ivaylo Draganov
c3dfac7ade Remove redundant default hotkey UI notice 2022-01-04 18:35:41 +01:00
Ivaylo Draganov
5aeae694be Use disabled button state for slider thumb 2022-01-04 18:35:41 +01:00
Ivaylo Draganov
bdfe025059 Update introductory prompts to match settings layout 2022-01-04 18:35:41 +01:00
Ivaylo Draganov
8a2b63c944 Update lobby options tab layout to match settings layout 2022-01-04 18:35:41 +01:00
Ivaylo Draganov
9f96d4159a Update common game ingame info tabs to match settings layout 2022-01-04 18:35:41 +01:00
Ivaylo Draganov
955464ee1d Update TD game info panel to match the settings panel 2022-01-04 18:35:41 +01:00
Ivaylo Draganov
3ecaf76804 Overhaul settings panel layout
- make the panel larger
- place settings widgets in a scroll panel
- arrange settings widgets in two columns
- make tabs in TD vertical
2022-01-04 18:35:41 +01:00
Smittytron
a36eb585d3 Fix HiveGassed regression in Ant03 2022-01-04 12:50:00 +01:00
abcdefg30
bf7ec4aec1 Update nuget packages 2022-01-04 12:34:30 +01:00
abcdefg30
b448f2d324 Disable trimmed publishing 2022-01-04 12:34:30 +01:00
abcdefg30
b12c15ea9d Update to .NET 6 2022-01-04 12:34:30 +01:00
abcdefg30
eae6d33cd9 Fix highlighting of the credits tabs 2021-12-30 12:42:56 +00:00
Smittytron
3c24a3f9c7 Update Allies10a to work with Lua cleanup 2021-12-29 17:13:09 +01:00
Matthias Mailänder
bb27837149 Don't make support airplanes huntable. 2021-12-28 13:08:38 -06:00
Ivaylo Draganov
87534022b3 Make size and white-space of game save/load panel more consistent 2021-12-28 17:48:21 +01:00
Ivaylo Draganov
d2c08c72bd Adjust size, position and white-space of several panels 2021-12-28 17:48:21 +01:00
Ivaylo Draganov
0261dcaa7a Make size and white-space of "Mission Browser" panel consistent 2021-12-28 17:48:21 +01:00
Ivaylo Draganov
d14ba6b04d Make size and white-space of "Replay Browser" panel consistent 2021-12-28 17:48:21 +01:00
Ivaylo Draganov
a69d86c587 Make size and white-space of "Asset Browser" panel consistent 2021-12-28 17:48:21 +01:00
Ivaylo Draganov
8fb3bbe5f9 Make size and white-space of "Music" and "Credits" panels consistent 2021-12-28 17:48:21 +01:00
Matthias Mailänder
1c00a2fbec Bump NUnit slightly. 2021-12-27 22:33:06 +01:00
Matthias Mailänder
82ce4717aa Bump Pfim 2021-12-27 22:33:06 +01:00
Matthias Mailänder
2b23bde925 Bump NVorbis 2021-12-27 22:33:06 +01:00
Matthias Mailänder
bc52e8b6a9 Bump Mono.NAT 2021-12-27 22:33:06 +01:00
Matthias Mailänder
fb296d7dcb Bump Fluent.Net 2021-12-27 22:33:06 +01:00
Matthias Mailänder
6997b973ee Fix a null reference exception. 2021-12-17 14:11:19 +01:00
dnqbob
c968a2a902 Contrail smooth&color fix 2021-12-16 23:48:03 +01:00
Matthias Mailänder
5fcc049040 Fix a null reference exception. 2021-12-08 21:07:19 +01:00
Matthias Mailänder
ff20c1c59d Avoid unnecessary variable assignment. 2021-12-06 13:19:28 +01:00
Matthias Mailänder
2c5f1f343f Code style. 2021-12-06 13:19:28 +01:00
Matthias Mailänder
b147da388a Mark fields readonly. 2021-12-06 13:19:28 +01:00
Matthias Mailänder
4a60d56753 Add a lint tag and documentation. 2021-12-06 13:19:28 +01:00
Matthias Mailänder
9d905d8291 Remove unused parameters and variables. 2021-12-06 13:19:28 +01:00
Matthias Mailänder
07815143f1 Fix CA1825 warnings on empty array initialisation. 2021-12-06 13:19:28 +01:00
RoosterDragon
727084c5fc Run spell check over solution 2021-12-05 19:23:43 +01:00
Matthias Mailänder
b3d290edd9 Rename support power field for consistency. 2021-12-05 14:56:01 +01:00
Matthias Mailänder
9852bd08e4 Clean up existing rules. 2021-12-05 14:56:01 +01:00
RoosterDragon
3bde4ebbaf Fix Move.PathSearchOrder
Each successive value of BlockedByActor is a superset of the previous value. Having a mixed up order of values in PathSearchOrder is not useful.

In the previous ordering, if a search for Immovable failed to find a path, it would then attempt Stationary. However Stationary is *more* restrictive then Immovable. If Immovable failed, there is no way Stationary could succeed. This means the search for Stationary is wasted effort.

In the fixed ordering, we try Stationary first. In the fixed ordering there are no pointless searches. Every search might succeed where the previous one failed and is therefore useful to try.
2021-12-05 13:53:56 +01:00
Matthias Mailänder
f44a2ea9a3 Fix formatting problems. 2021-12-05 13:17:32 +01:00
Matthias Mailänder
5eaba4f893 Unhardcode AI defensive priorities. 2021-12-05 13:17:32 +01:00
Matthias Mailänder
e82aa9977e Unhardcode AI air units and exclude scripted aircraft. 2021-12-05 13:17:32 +01:00
Matthias Mailänder
00ece1ba55 Add configurable tooltips to the Discord integration. 2021-12-05 13:09:59 +01:00
Matthias Mailänder
c9022bcb73 Add support for superweapon detected sounds. 2021-12-05 13:02:15 +01:00
darkademic
c51327c4cc Make yaml check utility load each map separately to reduce memory usage. 2021-12-04 20:07:19 +01:00
Ivaylo Draganov
695b7865d3 fixup! Add support for non-overlapping sound notifications 2021-11-29 23:44:59 +01:00
Ivaylo Draganov
fa6ff32f65 Add support for non-overlapping sound notifications 2021-11-29 23:44:59 +01:00
RoosterDragon
137d384304 Remove path caching.
The path cache was originally a moderate benefit, but over time a couple of things have conspired against it:

- Only paths with BlockedByActor.None are cached. Originally all paths regardless of blocking were cached but this was deemed unacceptable due to potentially returning outdated paths as actors move about. Paths with BlockedByActor.None are only invalidated if terrain conditions change, which are rarer.
- Move will try and find a path 4 times, trying with a different BlockedByActor check each time. BlockedByActor.None is the last check and only reached if the other searches fail. This is a rare scenario.

Overall, this means the hit rate for the cache is almost non-existent. Given the constraints on path validity it seems unlikely that the hit rate could be improved significantly, therefore it seems reasonable to remove the cache entirely to remove the overhead of cache management.
2021-11-29 01:03:14 +01:00
Paul Chote
31bd32e7ef Allow launcher scripts to run from other working directories. 2021-11-28 23:09:32 +01:00
GeorgeD64
e00efbf53d Added map name support to Launch.Map command line parameter
Fixed code based on feedback

Replaced try/catch block with a null check and exception throw

Fixed code based on feedback

Fixed code based on feedback

Simplified Launch.Map parameter to use map name directly
2021-11-28 23:06:26 +01:00
Ivaylo Draganov
a537346580 Move selection hotkeys out of world interaction widget
- Split SelectionUtils for selecting actors in the world to a static class
- Split selection hotkeys into their own logic classes
2021-11-27 15:06:39 +01:00
Ivaylo Draganov
e9cc89a336 Yield keyboard focus upon leaving the ingame chat tab 2021-11-27 14:57:04 +01:00
Gustas
975da89400 RAGL balance changes 2021-11-27 13:33:55 +01:00
Matthias Mailänder
5ed3f55ed2 Use global idle hunt. 2021-11-26 23:39:41 +01:00
Matthias Mailänder
b9bfbfd5ac Use global objective initialisation. 2021-11-26 23:39:41 +01:00
Matthias Mailänder
d42edfc0b9 Use global difficulty. 2021-11-26 23:39:41 +01:00
Matthias Mailänder
58b105f0d4 Reorganize global .lua files. 2021-11-26 23:39:41 +01:00
Matthias Mailänder
a502e85e68 Fail gracefully when there is just one default difficulty. 2021-11-26 23:39:41 +01:00
RoosterDragon
a59f4b2c4a Add a helper for multiplying by sqrt(2) 2021-11-25 22:50:22 +01:00
RoosterDragon
f0e24f6d21 Make knowledge of height discontinuities live in Locomotor not PathGraph. 2021-11-21 17:52:12 +01:00
RoosterDragon
8c627aa185 Clean up PathSearch
- Remove functionality for tracking cells considered during the search, as nothing relies on this.
- Rename various parameters in the expand function to closer match naming of fields used in CellInfo, intended to improve clarity.
2021-11-21 12:03:16 +01:00
Orb370
e1ade59a32 TD Balance Fall 2021 Commit
TD-Balance-Fall-2021 Commit

TD-Balance-Fall-2021-Commit
2021-11-20 17:37:43 -06:00
RoosterDragon
290ed17c9d Adjust some naming and order of parameters in CellInfo
- Make Status the first field.
- Rename EstimatedTotal to EstimatedTotalCost to make it clearer it has the same unit as the CostSoFar field.
- Rename PreviousPos to PreviousNode as node terminology is a better match for usage.
2021-11-20 12:13:42 +01:00
Matthias Mailänder
98b25ddd5e Check for dead actors when searching for exits. 2021-11-18 20:52:05 +01:00
RoosterDragon
31267aa22d Fix some incorrect logic in PathGraph.GetConnections.PathGraph
Firstly, when dealing with maps with height discontinuities, the neighbouring cells we need to search are more that the set we need to search on flat maps. We ensure that as we traverse a map with varying height, we now consider cells "behind" us that may have become accessible due to a height change.

Secondly, when considering connections available via Custom Movement Layers, make sure the target cell on the new layer is actually enterable. Previously this cell would be reported as a valid connection, even if it wasn't actually possible to enter the cell as it was blocked. We also apply the same optimization of ignoring already closed cells.
2021-11-16 00:33:19 +01:00
RoosterDragon
1d23c23d06 Adjust span comparisons for clarity and add some test cases. 2021-11-15 13:20:34 +01:00
RoosterDragon
5416910249 Remove unused method in MiniYaml 2021-11-15 13:20:34 +01:00
RoosterDragon
73547c31ec Remove MiniYamlNodes alias in MiniYaml. 2021-11-15 13:20:34 +01:00
RoosterDragon
2db312a792 In MiniYaml, presize some collections and trim lists during parsing. 2021-11-15 13:20:34 +01:00
RoosterDragon
0f01df5474 Avoid string allocations in MiniYaml parsing.
- Stream lines in as memory rather than needing to realise a string for each line, via a new method in StreamExts.
- Use span to avoid string allocations during parsing until we want to realise the node itself, in MiniYaml.FromLines.
- Change several callsites to use the streaming extension method rather than string method where possible.
2021-11-15 13:20:34 +01:00
penev92
270c566570 Fixed the Windows make script building in Release
This is a follow-up to PR 19379, which aimed to "provide an easy debug option for VSCode developers", but only did so for non-Windows users. VSCode has been building in Release mode for ever and continued to do so on Windows after that PR.
2021-11-14 10:07:18 +00:00
RoosterDragon
225bcbbd22 Normalize all support dir paths to end with a directory separator.
Previously, some paths used a separator and some did not. This broke some de-duplication logic in ExternalMods which tried to enumerate distinct paths but would end up running logic on the same directory more than one as it was provided both with and without a trailing directory separator. By normalizing the path this logic now works.
2021-11-13 22:24:43 +01:00
Vapre
d53601daa6 World, SyncHash, cache per tick. 2021-11-13 21:46:40 +01:00
RoosterDragon
dd9d600ef9 Change GetCustomMovementLayers to expose an array, not a dictionary.
As there are few custom movement layers, using an array is good for improving lookup speed. Additionally, we can simplify some code by reserving index 0 of the array for the ground layer. Code that needs to maintain a state for the ground layer and every custom movement layer can now maintain a flat array of state using index 0 for the ground layer, and the the ICustomMovementLayer.Index for the custom movement layer. This removes a lot of ternary statements checking for the ground layer special case.
2021-11-13 12:15:48 +00:00
Ivaylo Draganov
3310f14dea Use mission notifications pool with appropriate chat line template 2021-11-12 22:30:07 +01:00
penev92
a71da0a25a Unhardcoded engine credits file
Moved the file name/path to ModCredits, read from mod.yaml
2021-11-12 22:24:44 +01:00
Matthias Mailänder
9b1cec7712 Add support for gapless looping music. 2021-11-11 23:49:54 +01:00
abcdefg30
9916e4c4ac Fix a crash in the TSEditorResourceLayer neighbour validation 2021-11-11 15:09:24 +01:00
abcdefg30
31cec0c17f Fix a crash in the TSResourceLayer neighbour validation 2021-11-11 15:09:24 +01:00
reaperrr
430c7a4d7d Fix TD voice crashes
The original PR used too much copy-paste.
2021-11-08 14:46:41 +01:00
Matthias Mailänder
7d83d4d47f Add OmniSharp settings. 2021-11-08 14:41:34 +01:00
Matthias Mailänder
2fa1c05ed0 Ignore workspace settings. 2021-11-08 14:41:34 +01:00
Matthias Mailänder
f7fd3dfff8 Remove workspace settings. 2021-11-08 14:41:34 +01:00
abcdefg30
93c45255f1 Move a using into the Mono specific code path 2021-11-07 00:26:15 +01:00
abcdefg30
280dd8e2a5 Update launch-game.cmd to specify Engine.LaunchPath and support restarting 2021-11-06 11:21:13 +01:00
Paul Chote
5d83706eae Require an explicit launch path for mod registrations.
This also removes a workaround that allowed the current mod to be
registered even if it defined a bogus path. Uses of Game.ExternalMods
should therefore always use TryGetValue and correctly handle it
returning false.
2021-11-06 11:21:13 +01:00
Paul Chote
4275e87c57 Show an error prompt if restart mod switch fails. 2021-11-06 11:21:13 +01:00
Gustas
c5a6577cee Fix production scalling 2021-11-05 00:01:21 +01:00
Matthias Mailänder
ade5d211e9 IRC moved to Libera 2021-10-31 17:02:00 +01:00
Matthias Mailänder
e05b86b935 Recommend the OpenRA Lua extension. 2021-10-30 13:11:14 +02:00
Matthias Mailänder
e8ee31cd6e The launch settings have been migrated to .NET Core already. 2021-10-30 13:11:14 +02:00
Matthias Mailänder
59bed108b1 Minor csharp warning fixes. 2021-10-30 13:11:14 +02:00
abcdefg30
05420ab5ce Fix the Windows packing script not working with wget only 2021-10-29 22:25:59 +02:00
abcdefg30
32bc561878 Add a check for wine64 to the Windows packaging 2021-10-29 22:25:59 +02:00
abc013
311b6fcd83 Don't count actors owned by noncombatant players to kills statistic 2021-10-29 21:07:06 +02:00
abc013
c0da9f1eab Fix walls counting to kills/deaths statistic 2021-10-29 21:07:06 +02:00
Ivaylo Draganov
98434ef96b Add audio feedback for selection hotkeys 2021-10-29 20:55:41 +02:00
Ivaylo Draganov
9b9c116097 Add text feedback for type selection hotkey when selection is empty 2021-10-29 20:55:41 +02:00
Ivaylo Draganov
3c77df276a Add full-stop to UI feedback text notifications 2021-10-29 20:55:41 +02:00
Ivaylo Draganov
a680cae00c Move audio muted/unmuted notifications to feedback pool 2021-10-29 20:55:41 +02:00
Ivaylo Draganov
01d47566cc Add a transients panel with corresponding chrome logic and a notification template 2021-10-29 20:55:41 +02:00
Ivaylo Draganov
9e92340ea7 Rework chat line templates and logic
- Extract chat line templates and logic so they can be reused across widgets
- Make text notification styling entirely template driven (by removing chat color configuration and making color optional for `TextNotification`)
- Add a new TextNotificationsDisplay widget (based on and replacing ChatDisplayWidget)
- Add timestamp support to text notifications
2021-10-29 20:55:41 +02:00
abc013
8416dc3f2d Fix wrong subcell offsets for TS 2021-10-27 21:53:39 +02:00
abc013
c33290c19b Display error message instead of stack trace in battlefield news when failing to fetch news 2021-10-27 18:40:52 +02:00
teinarss
1a56cee9a1 Add Tick scale plumbing 2021-10-26 22:40:15 +02:00
Oliver Brakmann
7f3130c7a6 Use TimeLimitManager in mission Allies10a 2021-10-26 16:40:47 +02:00
Oliver Brakmann
be4466115d Do not update countdown label unless there is a timelimit 2021-10-26 16:40:47 +02:00
Smittytron
0c42f59656 Add Allies10a 2021-10-26 16:40:47 +02:00
Orb370
3a56532f0b Fix Europe Map Commit
Fix Europe Map Commit

Fix Europe Map Commit

Fix Europe Map Commit
2021-10-26 16:18:18 +02:00
abc013
442752b6ba Fix owner of selected actor not always being selected owner in editor 2021-10-24 22:54:10 +02:00
abc013
0898655175 Fix radar preview not updating when editing actor owner 2021-10-24 22:54:10 +02:00
RoosterDragon
3bee524c6b Avoid allocation in PackageEntry.HashFilename
This is a very frequently called method during loading, and taking some care to avoid allocations improves performance noticeably.
2021-10-24 21:40:01 +02:00
RoosterDragon
2ed4cb8aff Ensure Clear(T) also have a safety check to ensure no listener is attached.
Move related methods next to each other.
Change Clear(T) to use Array.Fill.
2021-10-23 15:43:47 +02:00
RoosterDragon
19760b04bd Allow the default value of a CellInfo to be an Unvisited location.
In CellInfoLayerPool, instead of having to store a layer with the default values, we know we can just clear the pooled layer in order to reset it. This saves on memory, and also makes resetting marginally faster.

In PathSearch, we need to amend a check to ensure a cell info is not Unvisited before we check on its cost.
2021-10-23 15:43:47 +02:00
Matthias Mailänder
6edd5d7bfa Avoid an unnecessary assignment. 2021-10-22 22:02:15 +02:00
Matthias Mailänder
a3ccc81892 Remove unused fields and parameters. 2021-10-22 22:02:15 +02:00
Matthias Mailänder
3b5bfb4bf4 Avoid initialisation of empty arrays. 2021-10-22 22:02:15 +02:00
Matthias Mailänder
5ff9d9a1f1 Add missing flags attribute required for HasFlags. 2021-10-22 22:02:15 +02:00
penev92
f056cbba13 Added a bunch of TraitLocationAttributes
Also moved a few traits to their proper subfolders.
2021-10-16 20:52:50 +02:00
penev92
67598dd151 Moved some traits from ^BaseWorld to World in TS 2021-10-16 20:52:50 +02:00
Paul Chote
166583b1ec Fix disabled chat focus issues. 2021-10-16 13:34:39 -05:00
penev92
e1e76411f7 Added a rule for unused usings to OpenRA.ruleset
Unfortunately due to bugs in the analyzers or something else, the IDE0005 doesn't work as expected. The "officially suggested" workaround is to enable XML documentation generation to trigger IDE0005 during compiling. Then we need to add three more rules to silence the warnings that come from the XML documentation generation. We also need to enable code style enforcing on build for all of this to work.
Known issue is that all of this produces a bunch (tens to hundreds) of obscure analyzer warnings on older versions of Visual Studio, but those seem to not be causing issues.
2021-10-15 13:12:33 +02:00
penev92
8ba6d13b2f Removed unused using directives 2021-10-15 13:12:33 +02:00
Matthias Mailänder
3790a4a6a4 Fix actor has multiple AttackBase traits. 2021-10-15 12:11:35 +02:00
abcdefg30
e8e0e155e5 Explain the try-finally clause in Sync.cs in a comment 2021-10-14 19:45:29 +02:00
abcdefg30
b366db7175 Revert "Directly run unsynced functions if we don't check sync hashes"
This reverts commit 1dc0a603c7.
2021-10-14 19:45:29 +02:00
penev92
3ce32fe354 Added faction-specific units for colorpicker previews in TS 2021-10-13 23:59:11 +02:00
Matthias Mailänder
2b361ad41e Add a link to the web chat
as ircs:// isn't linked on GitHub
and not everyone is familiar with IRC clients
2021-10-12 10:57:35 +02:00
Matthias Mailänder
f9f540f47e Website repository has changed. 2021-10-12 10:57:35 +02:00
Matthias Mailänder
c9b0ddf772 Add a link to Discord with badge. 2021-10-12 10:57:35 +02:00
Matthias Mailänder
139af0c2bc Fix a crash when building placements are moved out of the map. 2021-10-12 10:47:34 +02:00
Orb370
d88198e61e Allow Targeting While Defenses are in the Construction Animation Commit 2021-10-11 17:49:44 -05:00
RoosterDragon
df9398a871 Use named pathfinding constants.
- Rename CostForInvalidCell to PathCostForInvalidPath
- Add MovementCostForUnreachableCell
- Update usages of int.MaxValue and short.Maxvalue to use named constants where relevant.
- Update costs on ICustomMovementLayer to return short, for consistency with costs from Locomotor.
- Rename some methods to distinguish between path/movement cost.
2021-10-10 17:09:38 +02:00
abcdefg30
884e6cdb51 Exempt D2k Harvesters from slowness modifiers applied when damaged 2021-10-09 14:55:27 -05:00
abcdefg30
4269fc67d5 Remove hacks around checking sync while disposing the shellmap 2021-10-09 21:13:35 +02:00
abcdefg30
69248132ad Don't desync while the world is disposing 2021-10-09 21:13:35 +02:00
abcdefg30
1dc0a603c7 Directly run unsynced functions if we don't check sync hashes 2021-10-09 21:13:35 +02:00
Ivaylo Draganov
091d756c14 Change lobby options description to make sense in both disabled and enabled state 2021-10-09 08:43:28 -05:00
RoosterDragon
9bcbbdd3fc Remove unused code in Move. 2021-10-09 00:02:00 +02:00
abcdefg30
a930c123ed Initialize the Discord rich presence with an empty presence 2021-10-08 00:47:10 +03:00
abcdefg30
62c083bb01 Remove a bogus and unneeded import 2021-10-08 00:47:10 +03:00
Raf Czlonka
5cc1405f3f Update links
- _http_ `->` _https_ where appropriate
- _wiki.openra.net_ `->` _https://github.com/OpenRA/OpenRA/wiki_
- _bugs.openra.net_ `->` _https://github.com/OpenRA/OpenRA/issues_
- the IRC channel is now on Libera.Chat + make it into a URI

This is in order to be consistent (one link to GitHub wiki already
exists), reflect reality, as well as avoid unnecessary redirects.
2021-10-07 12:38:36 -05:00
VonNah
0e33d08384 Fixed incorrect voice lines for Generic-, Vehicle-, Moebius- and CommandoVoice.
Signed-off-by: VonNah <vonnahora@gmail.com>
2021-10-03 19:39:28 -05:00
abcdefg30
dc11b82fc9 Fix a NRE in DeliverUnit.ReleaseUnit.OnFirstRun 2021-10-02 22:01:24 +01:00
RoosterDragon
6e0917169d Teach FieldLoader.ParseCPos about CPos.Layer. 2021-10-02 21:54:26 +01:00
RoosterDragon
4cc33b2871 Add some ToString overrides to improve debug experience. 2021-10-02 21:54:26 +01:00
RoosterDragon
3a020e96fe Update ICustomMovementLayer to not depend on actor for costs.
No implementations require the actor.
2021-10-02 21:47:24 +01:00
RoosterDragon
6f3b4ecae9 Speed up Map.Contains checks for non-flat maps.
We observe that most cells within a map lie within a region where no matter their height, their projection would still remain in map bounds. We can utilise this to perform a fast check for such cells and skipping the expensive checks on their actual height. We only need to check the actual height of a cell if this could cause the projection to go out of bounds.
2021-10-02 21:43:11 +01:00
abcdefg30
d370cb48c5 Remove unreachable code in TransformsIntoTransforms 2021-10-02 21:34:51 +01:00
KonH
9ed809943d Just use Dispose methods without arguments (disposing always passed as true) 2021-10-02 22:14:08 +02:00
KonH
8bce6eb3ac Remove GC.SuppressFinalize calls from classes without destructors 2021-10-02 22:14:08 +02:00
teinarss
279e7eb1c9 Disable Stylecop on debug config 2021-10-02 21:13:58 +02:00
Paul Chote
defaf92752 Send order queue length in ping responses. 2021-10-02 21:03:00 +02:00
Paul Chote
2d08f2bbfd Allow the server to ack no or multiple packets in the same frame. 2021-10-02 21:03:00 +02:00
Zimmermann Gyula
a13d046304 Add twinkle effects to the gems. 2021-10-02 20:17:03 +02:00
Matthias Mailänder
a2a668077c Refactor RandomDelay:
Allow different types of random
and reflect other use cases by renaming.
2021-10-02 20:17:03 +02:00
RoosterDragon
3a7aeb5324 Ensure TargetLineRenderable width and marker size don't get lost.
By making the constructor take non-optional parameters, this highlights some calls sites which were forgetting to set these values. These are now fixed.

Set the path debug to have a marker size of 2 for better visibility.
2021-10-02 12:14:54 +01:00
Vapre
9d4d4bb924 Locomotor, PathGraph, trivial optimizations. 2021-10-01 22:21:47 +02:00
tovl
a428aaa602 Make sure OpenAlSound.Source is never accessed after the source is freed for reuse 2021-10-01 21:15:52 +02:00
tovl
2bc03b4d84 Fix OpenAlSound.Complete being incorrect when OpenAl source is reused. 2021-10-01 21:15:52 +02:00
teinarss
289c4ef2b7 Remove Microsoft.DotNet.PlatformAbstractions 2021-09-29 20:52:44 +02:00
teinarss
80b6a5a27f Update nuget packages 2021-09-29 20:52:44 +02:00
Ivaylo Draganov
7f2ac477a2 Improve Game.Mod argument check in launch script 2021-09-28 21:44:53 +02:00
Ivaylo Draganov
69b375dc48 Replace zenity select dropdown with a list 2021-09-28 21:44:53 +02:00
Vapre
e8bae2e50a Crash on capture fix. #19482. 2021-09-27 21:19:12 +01:00
Matthias Mailänder
6b3eee8481 Don't just swallow the web exception. 2021-09-27 20:16:22 +02:00
Paul Chote
3d73d5ef29 Remove incorrect comment and merge nested conditionals. 2021-09-27 19:48:05 +02:00
Paul Chote
a0d49729f5 Ignore modifiers when applying terrain damage. 2021-09-27 19:31:25 +02:00
Ikko Ashimine
a573052f2e Fix typo in rules.yaml
recieved -> received
2021-09-27 18:08:05 +02:00
Ivaylo Draganov
994ba35507 Add description to difficulty lobby option for missions 2021-09-26 21:25:08 +01:00
Ivaylo Draganov
2d178f5033 Do not center lobby options vertically in the scroll panel 2021-09-26 21:25:08 +01:00
Ivaylo Draganov
f018fdecdd Remove special handling for cases when there's only one game info tab
The addition of the lobby options tab ensures that there will always
be at least two tabs ("Objectives" and "Options").
2021-09-26 21:25:08 +01:00
Ivaylo Draganov
fa0adb5a1b Hide various lobby options from missions and minigames 2021-09-26 21:25:08 +01:00
Ivaylo Draganov
3e0834b4ef Display lobby options in-game on a dedicated tab 2021-09-26 21:25:08 +01:00
RoosterDragon
fc5f8fcd31 Fix indent 2021-09-26 15:49:48 +02:00
RoosterDragon
2f955e01f5 Fix style errors 2021-09-26 15:49:48 +02:00
Paul Chote
c958bf9680 Restore threaded renderer. 2021-09-26 15:19:20 +02:00
Matthias Mailänder
98b87004cc Bump SharpZipLib. 2021-09-26 11:18:15 +01:00
Paul Chote
8588af1001 Disable chat for the first 5s (configurable) after joining a server. 2021-09-23 12:52:20 +02:00
teinarss
9eab92e90a Add Rich Presence button with link to website 2021-09-22 15:57:54 +02:00
Paul Chote
2424ddc79a Move NetTickScale (now NetFrameInterval) control to the server. 2021-09-21 15:12:36 +02:00
Paul Chote
df798fb620 Overhaul client latency calculations.
The ping/pong orders are replaced with a dedicated
(and much smaller) Ping packet that is handled
directly in the client and server Connection wrappers.

This allows clients to respond when the orders are
processed, instead of queuing the pong order to be
sent in the next frame (which added an extra 120ms
of unwanted latency).

The ping frequency has been raised to 1Hz, and pings
are now routed through the server events queue in
preparation for the future dynamic latency system.

The raw ping numbers are no longer sent to clients,
the server instead evaluates a single ConnectionQuality
value that in the future may be based on more than
just the ping times.
2021-09-21 15:12:36 +02:00
Paul Chote
67face8cf0 Rename connection packet handling. 2021-09-21 15:12:36 +02:00
Paul Chote
4eefa637a3 Remove obsolete threaded renderer workarounds. 2021-09-20 22:33:25 +02:00
Paul Chote
be8e2cf3a4 Move OpenGL context creation to the main thread. 2021-09-20 22:33:25 +02:00
Matthias Mailänder
f08a0b113e Allow mods to customize application title. 2021-09-19 22:29:50 +02:00
Matthias Mailänder
3a8957c6f3 Remove unused function parameter. 2021-09-19 22:29:50 +02:00
Smittytron
99006a02ed Add destroy triggers for prison actors in Allies03a 2021-09-18 21:26:10 +02:00
Smittytron
77e1e77387 Use FireClusterWarhead with barrels 2021-09-18 21:26:10 +02:00
Matthias Mailänder
0604a58581 Send a ping when the server is shut down
and stop the LAN beacon.
2021-09-18 17:38:52 +01:00
Matthias Mailänder
58e482c05a Fix hashset documentation. 2021-09-18 13:16:25 +01:00
Matthias Mailänder
eba266aecf Use MarkDown tables in trait documentation export. 2021-09-18 12:52:27 +01:00
Matthias Mailänder
5bf4daddec Set the default game name to the player name. 2021-09-15 18:39:24 +02:00
Paul Chote
54c08748e0 Overhaul player disconnect notifications. 2021-09-12 22:53:50 +02:00
abcdefg30
b8e343bee9 Fix Phase Transports not uncloaking while unloading 2021-09-12 10:47:33 +02:00
Vapre
5ae4662f08 RunUnsynced, do not recalculate sync hash on reentry. Cache debug settings. 2021-09-12 10:06:44 +02:00
Paul Chote
b3159d7515 Fix d2k map editor crash if spice is placed at the edge of map. 2021-09-09 10:19:17 +02:00
abcdefg30
a1e62158e2 Add a workaround for "Check around synced code" problems 2021-09-08 20:26:53 +02:00
abcdefg30
777d966958 Remove unnecessary server creation when creating a new map 2021-09-08 20:26:53 +02:00
abcdefg30
0b75991fbc Make the editor use an EchoConnection instead of a local server 2021-09-07 20:45:50 +02:00
Paul Chote
e0e219793f Fix shellmap OrderManager use after dispose. 2021-09-02 23:23:23 +02:00
Paul Chote
8f412f869d Move order latency control to the server. 2021-09-02 23:23:23 +02:00
Paul Chote
6421c17515 Rework IConnection implementations:
* EchoConnection is now a trivial buffer that stores
  and repeats orders directly without serialization.

* NetworkConnection no longer subclasses EchoConnection,
  and now also caches local orders without serialization.

* Replay recording was moved to NetworkConnection
  (it is never used on EchoConnection).
2021-09-02 23:23:23 +02:00
Paul Chote
408f30b5cd Extract OrderIO.SerializeOrders helper.
Note: This changes immediate orders to no longer be
individually framed in their own packets.
2021-09-02 23:23:23 +02:00
teinarss
db74f155bb Update DropClient to always drop Connection 2021-09-02 08:05:37 +02:00
Matthias Mailänder
978de64903 Don't count suicides into the game score. 2021-09-02 08:00:44 +02:00
Matthias Mailänder
e616cd1bcb Save the player color in the introduction panel. 2021-09-02 07:39:54 +02:00
Andre Mohren
2c84c43607 Fixed odd sprite size "frame hopping". 2021-09-02 07:34:13 +02:00
Paul Chote
442d91537e Don't display spectator info for scripted players. 2021-08-28 23:15:02 +02:00
Paul Chote
7f92d64d84 Disable replay player visibility dropdown in singleplayer missions. 2021-08-28 23:15:02 +02:00
Paul Chote
c7700a8a2b Fix DropDownButtonWidget ignoring yaml separator overrides. 2021-08-28 23:15:02 +02:00
Paul Chote
e389c00a11 Remove packet byte wrangling from OrderManager. 2021-08-26 22:00:59 +02:00
Paul Chote
52b597d5d2 Remove order latency checks from BaseBuilderQueueManager. 2021-08-26 22:00:59 +02:00
Paul Chote
8a587ddeab Disable depth-buffer command if EnableDepthBuffer is disabled. 2021-08-25 17:42:44 +02:00
Paul Chote
512dee0ac0 Fix rendering glitches with EnableDepthBuffer disabled. 2021-08-25 17:42:44 +02:00
Matthias Mailänder
024beacafb Don't smear the paste while moving the mouse. 2021-08-22 16:06:21 +02:00
teinarss
b4256df9c1 Cleanup in Connection 2021-08-22 09:43:25 +01:00
reaperrr
c860bf19ee Add GDI 05c
Well, 05eb really, but until we implement campaign progression,
calling it 'c' is the easiest way to differentiate it without breaking
our mission title length/alignment conventions.
2021-08-21 20:34:50 +02:00
Paul Chote
06ea7bf923 Regenerate TS map previews. 2021-08-21 14:16:02 +02:00
Paul Chote
3551eb3128 Fix map preview bounds calculation. 2021-08-21 14:16:02 +02:00
Paul Chote
7f94d67d39 Replace Map.CustomTerrain radar colors with IRadarTerrainLayer.
* TSVeinsRenderer now shows border cells on the radar
* BuildableTerrainLayer now uses the radar colors defined on the individual tiles
* CliffBackImpassabilityLayer no longer overrides the underlying terrain color.
2021-08-21 14:16:02 +02:00
Paul Chote
72c0c7e38b Remove rocks and trees from TS minimap previews. 2021-08-21 14:16:02 +02:00
Paul Chote
2a2785d8c9 Fix model debug sprite rectangle rendering. 2021-08-21 13:45:41 +02:00
Paul Chote
7a3dae428a Work around clipping on ramp type 7. 2021-08-21 13:45:41 +02:00
Paul Chote
dcd3e8d444 Ignore terrain slopes when calculating model shadows.
This is less realistic, but better matches the original
game and is the only practical way to reduce visual issues
caused by long shadows being cast over multiple cells.
2021-08-21 13:45:41 +02:00
Paul Chote
68710e48a6 Add terrain orientation support for Mobile. 2021-08-21 13:45:41 +02:00
Paul Chote
c88d1bbefa Add WRot SLerp and axis-angle ctor.
These allow more complex calculations to be made
using rotations.
2021-08-21 13:45:41 +02:00
Paul Chote
d509d3f5f9 Fix carryall InitialActor creation. 2021-08-20 21:04:18 +02:00
Smittytron
8a4945d20a Polish and standardize Allies01 2021-08-20 20:48:05 +02:00
Andre Mohren
0ea6a5626f Do not enforce mods to use stylecop. 2021-08-20 20:45:31 +02:00
Paul Chote
864cc4becc Fix weather particle physics.
The trait documentation specified that the speed
and offset values are px/tick, but they have actually
always been treated as px/render.

Fix the update logic and rescale the map definitions
to account for the fixed behaviour.
2021-08-20 20:38:37 +02:00
Paul Chote
d2257f9784 Fix macOS compat build dock icon, app name, dark mode support. 2021-08-20 20:34:23 +02:00
Paul Chote
f70457a66f Remove unused symbol lookups. 2021-08-20 20:34:23 +02:00
Paul Chote
278a4acf96 Fix Engine.LaunchPath for macOS compatibility builds. 2021-08-20 20:34:23 +02:00
Paul Chote
be3412ee74 Fix depth offsets for sprite with non-zero ZRamp.
Bibs and other effects that should be drawn at ground level
can now simply define ZRamp: 1, Offset: <X>,<Y>,1, avoiding the
need to account for the Y offset or internal sprite offsets.
2021-08-20 20:17:55 +02:00
Paul Chote
27f9f35efb Fix incorrect world height to screen depth conversion. 2021-08-20 20:17:55 +02:00
Paul Chote
ef1aee5e95 Fix and document the depth buffer calculations. 2021-08-20 20:17:55 +02:00
Paul Chote
962d6496bd Overhaul depth preview rendering:
* Replace Jet color map with grayscale
* Added Shift + \ hotkey to toggle preview
* Added Shift + [, Shift + ] hotkeys to change contrast
* Added Shift + ;, Shift + ' hotkeys to change offset
2021-08-20 20:17:55 +02:00
Paul Chote
91c5f2cabe Add Cityscape map. 2021-08-20 20:17:55 +02:00
Paul Chote
a9c6430924 Fix TS map importer:
- Fix infantry subcells and facing
- Import sandbags/walls.
2021-08-20 20:17:55 +02:00
Vapre
2ea2815529 CallFunc, avoid null check. 2021-08-20 12:31:04 +02:00
Paul Chote
5eb4c6a0bb Set _KDE_NET_WM_DESKTOP_FILE x11 window property.
This explicitly tells KDE to associate the OpenRA window with
the integrated appimage desktop file, allowing it to use the
correct resolution icon for the task switcher.
2021-08-16 20:18:00 +02:00
abcdefg30
4145723ef0 Remove Sdl2HardwareCursorException 2021-08-14 17:11:34 +01:00
abcdefg30
b8ba1b36fe Don't throw an exception when creating a hardware cursor fails 2021-08-14 17:11:34 +01:00
Matthias Mailänder
f63e15f5de Fix igloos being labeled as haystacks in-game. 2021-08-11 19:09:20 -05:00
MustaphaTR
2f44b016b0 Add a condition per tileset. 2021-08-11 19:09:20 -05:00
Matthias Mailänder
b7bba5d55a Restrict sonar pulse to unshrouded water. 2021-08-11 22:46:19 +02:00
teinarss
fba4c5049c Replace Thread.CurrentThread.ManagedThreadId with Environment.CurrentManagedThreadId 2021-08-10 23:02:18 +02:00
Vapre
573a6cf645 FindAndDeliverResources, trivial optimizations. 2021-08-10 23:59:43 +03:00
reaperrr
eff7e803bf Minor MoveOrderTargeter optimization
IsTraitPaused should be cheaper than Map.Contains,
so let's perform the cheaper check first.
2021-08-10 18:26:05 +02:00
reaperrr
58f55b808a Add comment in Mobile
This isn't obvious to people not entirely familiar
with the code.
2021-08-10 18:26:05 +02:00
reaperrr
777a927c04 Cache unchanging values for MoveWithinRange
In theory, CandidateMovementCells could be called
every tick, so let's avoid creating the vars
every time.
2021-08-10 18:26:05 +02:00
Matthias Mailänder
0249116206 Rename instant to fast charge to avoid tab complete clash. 2021-08-09 13:17:47 -05:00
Ivaylo Draganov
2d0e7040db Add separate chat panel for spectators and players
Forces the chat and performance panels to be re-initialized when a
player transitions to spectators. This ensures that spectators don't
get to see faction themed widgets.
2021-08-08 12:50:31 +01:00
Paul Chote
edd3a2eb75 Fix ingame menu tab display. 2021-08-07 13:12:56 -05:00
Paul Chote
29f4f5a0cd Remove redundant ts ingame-info.yaml. 2021-08-07 13:12:56 -05:00
abcdefg30
ba7e1319ac Remove DisableWindowsRenderThread and use threaded renderering for non windowed mode 2021-08-07 14:49:09 +01:00
Ivaylo Draganov
7a1169744e Add tooltips to map name and author in map chooser 2021-08-05 18:36:50 +02:00
abcdefg30
453d59ae16 Defer rollover checks while generating selection decorations 2021-08-05 01:43:35 +03:00
Vapre
35e9fade06 PathGraph, skip closed cells early. Fix #19579. 2021-08-04 20:02:12 +02:00
Paul Chote
8fc042fed1 Fix style nits in OrderEffects. 2021-08-02 21:50:32 +02:00
Paul Chote
2c5fce5e3c Add missing TraitLocation to OrderEffects. 2021-08-02 21:50:32 +02:00
Paul Chote
7a93ff3258 Add support for TS-style tinted target flashes. 2021-08-02 21:50:32 +02:00
Paul Chote
9291263609 Fix indentation in OrderEffects. 2021-08-02 21:50:32 +02:00
Matthias Mailänder
f4a5878a53 Fix veinholes on Sunstroke. 2021-08-01 14:56:53 -05:00
Paul Chote
1ecb3bf99a Don't add empty Translations nodes to maps. 2021-07-31 13:14:46 +02:00
reaperrr
c88994a0dd Fix unarmed civilians being selected as combat units 2021-07-30 09:03:29 -05:00
fruehstueck
29b0999da3 Add GDI 8b 2021-07-30 09:03:29 -05:00
Paul Chote
b08117dc93 Don't report "Primary Building Selected" when nothing changes. 2021-07-29 16:19:53 +02:00
Paul Chote
99322cee8f Set the closest production to Primary when force-targeting rallypoints. 2021-07-29 16:19:53 +02:00
Vapre
e201e410f4 PathGraph, skip closed cells early.
In path finding GetConnections considers connections to already closed cells and calculates the cost for them. The caller afterwards ignores them. These are 15% of all connections.
2021-07-27 14:49:22 +02:00
Paul Chote
24f64ae1a8 Fix an edge case where the wrong sheet may be mapped to a depth sprite. 2021-07-25 19:20:19 +02:00
Ivaylo Draganov
1f3f489328 Show map preview tooltip only if needed 2021-07-25 00:25:08 +01:00
Ivaylo Draganov
31056d4253 Add tooltip to overflowing map title in server browser 2021-07-25 00:25:08 +01:00
Paul Chote
70892a6661 Change DrawSprite calls to provide scales instead of sizes.
This allows us to remove a hacky workaround for calculating
depth offsets when sprites have size.Z == 0.
2021-07-25 00:32:17 +02:00
Paul Chote
8e94e1d5ec Rework WidgetUtil sprite rendering helpers. 2021-07-25 00:32:17 +02:00
Vapre
2e6f444285 Map.Contains check grid type once. 2021-07-24 15:34:56 +02:00
abcdefg30
dcaa658678 Remove an outdated reference to ConditionManager 2021-07-23 11:04:07 -05:00
Hang
249bc4abc8 Fix the hide-map sequence of the d2k crate-effects
Frame 4218 belongs to explosion/nuke sequence, which should not part of crate-effects/hide-map sequence
2021-07-22 23:13:16 +02:00
Hang
757ca0561f Update misc.yaml
Typo Lenght -> Length
2021-07-21 13:36:25 +02:00
Vapre
001134ce59 Do not start DiscordService client if disabled. 2021-07-21 12:13:21 +02:00
Paul Chote
f8ed768e39 Change makefile/packaging "RUNTIME=dotnet" to "RUNTIME=net5". 2021-07-18 20:57:22 +02:00
Chris Harris
1c6ca394c1 Fix duplicate ActorIDs 2021-07-17 23:27:25 +02:00
Vapre
627fd4e68b CellLayer.Index inline CPos.ToMPos. 2021-07-16 09:51:55 +02:00
Paul Chote
7bfe83cce7 Fix WithIdleOverlay PlayerPalette editor rendering. 2021-07-15 12:05:09 +02:00
Matthias Mailänder
d169210531 Display the production overlay only where the unit will exit. 2021-07-14 19:06:22 -05:00
Matthias Mailänder
902006bf53 Fix editor losing copy after each paste. 2021-07-13 21:01:33 -05:00
Mustafa Alperen Seki
dcb70d12e3 Make Harvester conditional. 2021-07-12 15:41:04 +02:00
Matthias Mailänder
cd90c70cdf Fix a null reference exception. 2021-07-12 15:20:34 +02:00
Matthias Mailänder
f1f5df3749 Fix .shp icons being misdetected as .wsa animations. 2021-07-12 11:49:06 +02:00
Matthias Mailänder
b2f18ad0ad Add support for .ogg files. 2021-07-12 00:35:16 +02:00
Matthias Mailänder
af0b7621d2 Minor fixes. 2021-07-12 00:35:16 +02:00
Matthias Mailänder
2bd7869059 Fix haystacks being selectable buildings. 2021-07-12 00:15:38 +02:00
Matthias Mailänder
e1816a6da0 Fix a crash when opening map Chernobyl with the editor. 2021-07-11 16:38:27 +01:00
teinarss
f3777a25e6 Refactor send and receive Orders loop 2021-07-10 23:35:47 +02:00
teinarss
5e1468facb Fix NRE with ConnectionStateChanged 2021-07-08 01:12:05 +02:00
Matthias Mailänder
3e6e5a83f3 I feel like I am back. 2021-07-07 15:20:47 +02:00
Paul Chote
25c095619a Parse Mp3 length from metadata tags. 2021-07-07 15:20:47 +02:00
Matthias Mailänder
407372268d Add support for .mp3 files. 2021-07-07 15:20:47 +02:00
Paul Chote
aa798c252b Remove "X has joined the game." notification when starting a Skirmish. 2021-07-06 13:12:51 +02:00
Ivaylo Draganov
9c658ad36b Increase the opacity of panel-gray-gdi 2021-07-06 10:13:43 +02:00
Ivaylo Draganov
2923077b3d Style TD in-game chat and performance graph with faction colors 2021-07-06 10:13:43 +02:00
Ivaylo Draganov
cbdf6c3747 Add faction suffix support to text fields and scroll panels 2021-07-06 10:13:43 +02:00
Ivaylo Draganov
9687988976 Use pattern matching syntax in AddFactionSuffixLogic 2021-07-06 10:13:43 +02:00
Ivaylo Draganov
64e76e1a90 Make text fields yield keyboard focus on "Esc" in a consistent way
- search fields clear the input and yield if empty
- chat field and actor edit field yield without clearing
2021-07-04 23:37:29 +02:00
reaperrr
df8295fa2c Make aircraft turn speed scale with speed modifiers 2021-07-04 21:26:45 +01:00
reaperrr
0ac277a88d Improve Aircraft TurnSpeed getters readability 2021-07-04 21:26:45 +01:00
reaperrr
5a548d6acc Introduce IdleMovementSpeed
That actually factors in speed modifiers and trait pause/disable.
2021-07-04 21:26:45 +01:00
reaperrr
1262a9c6c9 Minor FlyIdle perf optimization
None of these prerequisites change on the fly,
so cache the result in the activity ctor.
2021-07-04 21:26:45 +01:00
reaperrr
5ecb3eec16 Fix IdleTurnSpeed ignoring trait pause/disable 2021-07-04 21:26:45 +01:00
Ivaylo Draganov
2ea6bfba7b Allow the player to toggle the display of UI Feedback chat pool 2021-07-04 14:02:58 +01:00
Ivaylo Draganov
6af354ff99 Split chat lines into pools
- Add a common class for passing around chat lines
- Add wrapper methods for adding chat lines
- Combine repeated chat lines in the display widget
2021-07-04 14:02:58 +01:00
abc013
0a02bd524a Update DestroyResourceWarhead to support Resource type and amount options. 2021-07-04 11:13:05 +01:00
Paul Chote
f9b058d36b Add click sounds to color widgets. 2021-07-03 12:18:25 -05:00
Paul Chote
bc51461427 Make sure the hue returned by Color.RgbToHsv is positive. 2021-07-03 12:18:25 -05:00
Paul Chote
fca12fd707 Validate custom color picker colors. 2021-07-03 12:18:25 -05:00
teinarss
1f1373509e Refactor server orders 2021-07-03 14:55:03 +01:00
Abdurrahmaan Iqbal
a8900d9860 Rebind chat hotkeys to prevent Tab changing chat mode
Enter/Shift+Enter now toggle team/all chat respectively and Shift+Tab switches chat mode instead of Tab
2021-07-03 14:49:03 +01:00
Abdurrahmaan Iqbal
6967c1fff3 Pass KeyInput to OnKey functions 2021-07-03 14:49:03 +01:00
abc013
2742985520 Prevent saving and starting a map when max player count is exceeded. 2021-07-03 08:25:16 -05:00
Smittytron
347a09e6cf Switch remaining RA missions to Normal default difficulty 2021-07-03 00:25:53 +02:00
Smittytron
e1a28078bb Fix difficulty dropdown for RA mission Sarin Gas 2: Down Under 2021-07-03 00:25:53 +02:00
Smittytron
27562ab88f Fix and standardize TD mission difficulty dropdowns 2021-07-03 00:25:53 +02:00
reaperrr
9371cecc00 Render disabled targetable positions in gray
Instead of not rendering them at all.
Also moved their debug overlay to HitShape.
2021-07-02 10:58:29 +01:00
reaperrr
feba9f2b9f Make orientation caching in HitShape readonly
HitShape Requires<BodyOrientation> anyway.
2021-07-02 10:58:29 +01:00
reaperrr
6d55161043 Show disabled HitShapes in gray
Instead of disabling their debug overlay entirely.
2021-07-02 10:58:29 +01:00
Andre Mohren
7356f2506b Moved flashimage to world trait. 2021-07-01 16:38:51 +02:00
Ivaylo Draganov
ad4425d11e Use cached transforms for images in widgets 2021-07-01 14:21:22 +01:00
Matthias Mailänder
c8ab409d38 Allow mod code to access the buildable terrain overlay. 2021-07-01 12:41:06 +01:00
Smittytron
9a587d2aaa Standardize player naming in Ant01 2021-06-30 23:11:10 +02:00
Smittytron
bcbd2418b4 Adjust hard difficulty in Ant01 2021-06-30 23:11:10 +02:00
Andre Mohren
8a776c7138 32bpp bullets no longer crash without palette. 2021-06-30 22:58:03 +02:00
Andre Mohren
6810469634 Updated copyright years. 2021-06-29 18:33:21 -05:00
VonNah
5a7a09a6a7 Fixed the crumble-overlay of all the buildings. 2021-06-27 15:29:57 +02:00
Leo512bit
e60e7beeef Slower damaged units 2021-06-26 09:24:30 -05:00
Ivaylo Draganov
9313638997 Fix handicap dropdown disabled state 2021-06-25 09:25:17 -05:00
Ivaylo Draganov
1af2ab566e Fix player handicap erroneously set to player team 2021-06-25 09:25:17 -05:00
Andre Mohren
de6b8b6a74 32bpp terrain does not need a palette. 2021-06-25 10:38:53 +02:00
Andre Mohren
62207313a0 32bpp assets dont need a palette to be defined. 2021-06-25 10:33:54 +02:00
teinarss
b3b10729cd Remove ServerExternalMod from OrderManager 2021-06-12 12:50:51 +02:00
teinarss
91f99eeb4c Cleanup in Connect 2021-06-12 12:50:51 +02:00
teinarss
a1b3450b47 Remove Password and Endpoint from OrderManager 2021-06-12 12:50:51 +02:00
Matthias Mailänder
da4bf7f191 Document and test the building placement preview for Dune 2000. 2021-06-12 12:43:03 +02:00
tjk-ws
a893cf9cb6 Unhardcode weapon ammo consumption
fix gh actions
2021-06-11 10:21:24 -05:00
Ivaylo Draganov
9fa5dcc055 Remove unused method in WidgetUtils 2021-06-11 10:16:34 -05:00
abcdefg30
fe146cb77a Remove superfluous Buildable traits from dummy helper actors 2021-06-10 19:22:46 -05:00
Vapre
fc49d6943a OrderIO performance improvement
OrderIO, ToOrderList, skip if frame is empty,
which occurs often each client each frame.
2021-06-09 23:31:27 +02:00
Matthias Mailänder
44b2dda585 Add an editor overlay for unbuildable terrain. 2021-06-06 21:14:44 +02:00
Matthias Mailänder
3980e4fa90 Use consistent and easy to read debug command names.
Reorganize dev cheat command handling.
2021-06-06 18:40:48 +02:00
darkademic
ca2bef3cd1 Updated TD unit speeds to account for move jumpy-ness fix. 2021-06-04 23:20:13 +02:00
darkademic
cbd82c7204 Updated RA unit speeds to account for move jumpy-ness fix. 2021-06-04 23:17:41 +02:00
teinarss
82115c6bf7 Move Text handling to its own class 2021-06-04 21:47:39 +02:00
Paul Chote
2a26ddc622 Replace server Select loop with individual client threads.
This guarantees that any unexpected blocking calls due to network
issues cannot stall the main server thread.
2021-05-30 14:37:25 +02:00
Paul Chote
6535411744 Move SendData to Connection. 2021-05-30 14:37:25 +02:00
Paul Chote
7c02b4d264 Add Connection.EndPoint property. 2021-05-30 14:37:25 +02:00
Paul Chote
7e79e69eae Remove public mutable state from Connection. 2021-05-30 14:37:25 +02:00
Paul Chote
dacacdf130 Remove global fallback to software cursors on error.
We now only fall back for the specific cursors that failed.
2021-05-30 12:01:44 +02:00
abc013
8fede9d6ba Add ValidStances checks to BlocksProjectiles and Gate. 2021-05-27 21:37:37 +02:00
teinarss
d10c592987 Fix crash in OrderManager 2021-05-23 12:44:18 +01:00
reaperrr
acccb01c76 Fix Move regression
If progress == Distance, we must not move again on the same tick,
but still 'return true' to avoid losing a tick in the case
when this is the last Move tick followed by a different activity
(or a new queued Move, for example via waypoints).
2021-05-23 10:49:40 +02:00
Matthias Mailänder
6876fe45e1 Use nameof for additional robustness in trait documentation. 2021-05-22 23:22:31 +01:00
Matthias Mailänder
52a4b5acd7 Fix documentation about GeneratesShroud to CreatesShroud rename. 2021-05-22 23:22:31 +01:00
Smittytron
92b6401360 Remove Thief from Exodus 2021-05-22 23:29:42 +02:00
Smittytron
ea24a15011 Set mission default difficulties to normal 2021-05-22 23:29:42 +02:00
Smittytron
243dc965c0 Move IdleHunt function to campaign-global.lua 2021-05-22 23:29:42 +02:00
Smittytron
f1f9098109 Move TRUK prereq overrides to campaign-rules.yaml 2021-05-22 23:29:42 +02:00
Smittytron
79b3f9bf06 Use proper title case conventions in mission names 2021-05-22 23:29:42 +02:00
Smittytron
dff245a9ce Fix tile error in Soviet09 2021-05-22 23:29:42 +02:00
Smittytron
91f9fa0f1f Add Ant 03 2021-05-22 13:42:09 +02:00
Smittytron
6f919fc232 Change anthill to correct impassable tiles 2021-05-22 13:42:09 +02:00
Smittytron
ce277481c3 Add Aftermath mission In the Nick of Time 2021-05-22 13:31:40 +02:00
Smittytron
d2039a14e1 Add Counterstrike mission Fall of Greece 2: Evacuation 2021-05-22 13:27:46 +02:00
Paul Chote
a27ef16911 Add EngineRootPath csproj property to simplify SDK inheritance. 2021-05-22 11:22:26 +02:00
Paul Chote
dc3dc7df73 Fix map-player bots not working on dedicated servers.
The host is almost never going to be client index 0
on public dedicated servers. Set to the actual host
client ID instead.
2021-05-22 11:18:45 +02:00
abcdefg30
872adbec0a Remove crate crushing from visceroids in TD and TS 2021-05-17 09:57:43 +02:00
Paul Chote
c64cfea179 Allow mods to downscale framebuffer resolution for large world viewports. 2021-05-16 14:22:52 +02:00
Paul Chote
84dff779ac Work around rendering glitches with non-unity pixel scales. 2021-05-16 14:22:52 +02:00
Paul Chote
0d4b81fe6f Set world framebuffer size based on minimum zoom.
This avoids reallocating buffers each time the player changes zoom level.
2021-05-16 14:22:52 +02:00
Paul Chote
0735345674 Set world framebuffer size based on minimum zoom.
This avoids reallocating buffers each time the player changes zoom level.
2021-05-16 14:10:32 +02:00
Paul Chote
bb15bd20c0 Add support for 16 bit floating point textures. 2021-05-16 14:10:32 +02:00
Paul Chote
95f5d162ef Increase SheetCount back to 8.
This was previously decreased to support legacy GPUs
that only supported 8 texture image units and we need
to reserve one of these for the palette texture.

OpenGL 3.X mandates a minimum of 16 (and most most GL2
cards also supported it) so we can now safely increase
this limit.
2021-05-16 14:10:32 +02:00
Smittytron
7967a462a1 Add override to prevent Orca construction in Nod07c 2021-05-16 13:27:39 +02:00
Smittytron
e225785744 Remove Medium Tank overrides from Nod08a and Nod08b 2021-05-16 13:27:39 +02:00
Smittytron
46dcdfa58e Remove Light Tank override from GDI05a 2021-05-16 13:27:39 +02:00
Smittytron
f8debe340f Add building override for Chem Trooper in GDI05b 2021-05-16 13:27:39 +02:00
Smittytron
83f99727a7 Change E3 to Infantry.Nod in GDI03 2021-05-16 13:27:39 +02:00
Smittytron
cbf84f62d4 Use correct overrides in GDI02 2021-05-16 13:27:39 +02:00
VonNah
fa68954dda Fixed incorrect Harkonnen Devastator warhead impact sound. 2021-05-15 23:07:25 +02:00
Paul Chote
98caae106f Move Palette traits to their own directory.
Also adds missing TraitLocation definitions.
2021-05-15 15:29:46 +02:00
Paul Chote
3bc42543fa Decouple color picker palette definitions to their own trait. 2021-05-15 15:29:46 +02:00
Paul Chote
57d955ec72 Change Color.ToAhsv to tuple syntax. 2021-05-15 15:29:46 +02:00
Paul Chote
96e333a30e Fix TS colorpicker turret facing. 2021-05-15 15:29:46 +02:00
Paul Chote
560f1a6466 Restrict player color choices to the hue-saturation plane. 2021-05-15 15:29:46 +02:00
Paul Chote
4042d5b179 Preserve original brightness when remapping player colors. 2021-05-15 15:29:46 +02:00
Paul Chote
9d62ce214c Move color picker actor type from metrics to ColorPickerManager. 2021-05-15 15:29:46 +02:00
Paul Chote
f65de2dd43 Merge ColorPreviewManagerWidget into ColorPickerManager. 2021-05-15 15:29:46 +02:00
Paul Chote
7b58f03f1c Move ColorValidator logic into a new ColorPickerManager trait. 2021-05-15 15:29:46 +02:00
oldnaari
52577c1de9 Fix Atreides silo damaged sequence
Fix the Atreides silo rendering as full silo instead of damaged silo when damaged
2021-05-14 13:43:13 +02:00
reaperrr
fc3f200357 Replace F in OrderManager 2021-05-09 15:00:07 +01:00
Paul Chote
d89f14dcbc Limit resource center queries to 50 maps at a time. 2021-05-09 15:37:30 +02:00
teinarss
96b8273916 Remove FrameData and update OrderManager 2021-05-09 15:08:48 +02:00
Smittytron
eda79d8626 Add Soviet10 2021-05-08 23:57:07 +02:00
teinarss
0c50057220 Update KickSpectators clientCount to be passed as int 2021-05-08 22:20:59 +02:00
teinarss
10676be377 Replace F extension with string interpolation 2021-05-08 22:20:59 +02:00
teinarss
1385aca783 Move ConnectionTarget to its own file 2021-05-08 20:41:40 +02:00
abcdefg30
121959efe4 Update the Desc of AttackBase.FacingTolerance 2021-05-04 10:44:23 -05:00
Paul Chote
8d2ec78713 Replace TerrainType.CustomCursor with Mobile.TerrainCursors. 2021-05-04 11:56:23 +02:00
Paul Chote
01371f2c65 Expose TransformsIntoAircraft move cursor to yaml. 2021-05-04 11:56:23 +02:00
Paul Chote
b344bba59a Expose Aircraft move cursor to yaml. 2021-05-04 11:56:23 +02:00
Paul Chote
a6d393f19b Fix a crash when using legacy GL. 2021-05-04 09:46:31 +02:00
Matthias Mailänder
7e19d6a205 Fix Player and Actor Properties / Commands rendering. 2021-05-04 01:13:18 +02:00
reaperrr
92a9f1e234 Split expansion mission categories in Allied and Soviet
It's not always apparent from the title which faction a mission
belongs to, and players may want to know beforehand
instead of having to guess.
2021-05-03 19:22:37 +01:00
Greg Solo
c39f7e521a Use shell param instead of duplicating the flow 2021-05-03 19:17:03 +01:00
Greg Solo
c9b9efe745 Setup debug make to support vscode debug 2021-05-03 19:17:03 +01:00
Vapre
a5a371f1ff GameSettings, EnableDiscordService. 2021-05-03 11:42:57 +01:00
Matthias Mailänder
b491e892ff Lint check the harvest cursor. 2021-05-03 10:58:35 +01:00
reaperrr
771932354b Remove unused leftovers from GDI08a
Those became redundant due to using global MoveAndHunt
in SendWaves.
2021-05-01 20:48:28 +02:00
reaperrr
89f270b67c GDI08a typo fix 2021-05-01 20:48:28 +02:00
abcdefg30
3276373745 Pause rendering when the window is minimized 2021-04-26 21:56:20 +01:00
teinarss
5667081764 Fix log should be disposed correctly 2021-04-26 21:50:26 +01:00
teinarss
b23d533006 Update Log to wait for items in worker thread 2021-04-26 21:50:26 +01:00
Matthias Mailänder
1f01d0b6b1 Add a Fluent based translation system. 2021-04-24 16:49:17 +02:00
reaperrr
f1a9a5180d Use real (milli)seconds for notifications
Allows for more fine-grained control, while
adding independence from gamespeed and getting
rid of magic * 25 multiplications.
2021-04-21 19:34:16 +02:00
Paul Chote
bb8a634ba8 Fix map installation. 2021-04-21 18:57:44 +02:00
Paul Chote
f9294f0e9e Enable dedicated server lint checks. 2021-04-21 18:57:44 +02:00
Paul Chote
9770967b04 Optimize MapPreview rule loading. 2021-04-21 18:57:44 +02:00
Paul Chote
0bbb32e8ac Rework MapPreview custom rule handling.
The previous asynchronous approach did not work particularly well,
leading to large janks when switching to custom maps or opening the
mission browser.

This commit introduces two key changes:

 * Rule loading for WorldActorInfo and PlayerActorInfo is made
   synchronous, in preparation for the next commit which will
   significantly optimize this path.
 * The full ruleset loading, which is required for map validation,
   is moved to the server-side and managed by a new ServerMapStatusCache.
   The previous syntax check is expanded to include the ability to run
   lint tests.
2021-04-21 18:57:44 +02:00
Paul Chote
61d64287e1 Move LoadMaps after InitializeFonts.
This allows text to be displayed earlier in the loading screen.
2021-04-21 18:57:44 +02:00
Paul Chote
abee274f88 Remove direct access to MapPreview.Rules. 2021-04-21 18:57:44 +02:00
reaperrr
53e6d974f0 Change Crate.Lifetime from 'seconds' to ticks
As far as I could tell, this was the last place that still
used 'seconds' instead of ticks, apart from
some sound notification intervals (which are better
converted to real [milli]seconds).

Also renamed ScaredyCat.PanicLength to PanicDuration for
consistency and easier finding.
2021-04-19 20:03:08 +02:00
reaperrr
e3fd54e147 Replace * 25 in internal tick defaults with actual total
While the idea behind it is understandable,
this was inconsistent with the bulk of other defaults.
2021-04-19 20:03:08 +02:00
Vapre
52d39db84a Fix possible endless loop in replay recorder while opening save file. 2021-04-15 18:10:45 +02:00
reaperrr
27ddae3df9 Fix Move jumpy-ness on MovePart transitions
There were 2 issues at work here, both when progress
would overshoot Distance (which is the usual case,
rather than the exception):
- the overshot progress was passed on by MoveFirstHalf, however
  OnComplete would make the next MovePart start ticking the
  same tick on which the old MovePart reached Distance,
  but move by carryoverProgress +(!!!) terrain speed instead of moving
  by just the left-over carryoverProgress.
- MoveSecondHalf would not pass any overshot progress to the
  next MoveFirstHalf queued by parent Move, leading to
  the next MoveFirstHalf performing a full-speed move the same tick
  MoveSecondHalf finished its last move.
2021-04-15 18:03:42 +02:00
reaperrr
4c7e3d8f3a Rename fraction to distance/progress in MovePart 2021-04-15 18:03:42 +02:00
reaperrr
646495fc5f Simplify MovePart code
InnerActivity and UpdateCenterLocation made this
overly complex and hard to read & debug.

This also fixes a bug that would make an outdated
facing being passed during OnComplete (because
InnerActivity was cached before UpdateCenterLocation
could set the correct final facing).
2021-04-15 18:03:42 +02:00
Mustafa Alperen Seki
a9661a233a Fix Lua error in Har8 when Merc HFac is captured after Palace is killed. 2021-04-13 21:39:24 +02:00
CrazyAlex25
2d05e10819 Modify build properties 2021-04-12 00:44:17 +02:00
Matthias Mailänder
5a0bcc01a6 Add a lint check for trait placement on hardcoded actor names. 2021-04-11 20:20:00 +02:00
Smittytron
0d3c624bbc Standardize usage of AddObjective in RA missions 2021-04-11 12:26:14 +02:00
Smittytron
26fbcf6076 Change fence owner in Soviet01 2021-04-11 12:26:14 +02:00
Smittytron
418fca3d9e Move OnAnyDamaged function to campaign-global.lua 2021-04-11 12:26:14 +02:00
Smittytron
dd366f8cf9 Rename top-o-the-world script file 2021-04-11 12:26:14 +02:00
Smittytron
6b63e88056 Move crate lifetime overrides to campaign-rules.yaml 2021-04-11 12:26:14 +02:00
Smittytron
a96e2fb588 Add Soviet11b 2021-04-10 23:00:31 +02:00
Smittytron
ca2f966c3b Add Soviet 11a 2021-04-10 22:26:40 +02:00
reaperrr
e161d9daa7 Misc TraitDictionary style fixes 2021-04-10 15:59:24 +02:00
reaperrr
aa834db1e3 Make perf.log output for ticking things opt-in
Both writing to perf.log frequently as well as GetTimestamp
aren't free and hurt performance particularly on slower systems
(which can have notably higher output to perf.log, further
amplifying the problem).
Therefore we make simulation perf logging opt-in.

Additionally, logging of the current tick and tick type
(local/net) is removed from debug.log, and some
remnant debug logging for kills and pips is removed
to keep performance-sensitive logging limited to
perf.log.
2021-04-10 15:59:24 +02:00
Paul Chote
a1df91b665 Allow BuildingInfluence to track overlapping buildings in the same cell. 2021-04-10 14:28:31 +02:00
Paul Chote
bc286b78bf Add AnyBuildingAt method to BuildingInfluence. 2021-04-10 14:28:31 +02:00
Paul Chote
19c7e14393 Simplify BuildingInfo.IsCloseEnoughToBase adjacency checks. 2021-04-10 14:28:31 +02:00
reaperrr
1a9dfc0893 Refactor GameSpeed setting
*Remove internal GameSpeed defaults
 Enforce setting values explicitly all the time
 Require definition of a DefaultSpeed

*Remove Global.Timestep default

*Remove the hacky Timestep/OrderLatency setting via LobbyInfo

*Fix shellmaps ignoring mod-defined gamespeeds

*Make DateTimeGlobal use the MapOptions gamespeed
2021-04-09 22:58:14 +01:00
Matthias Mailänder
fe129956bb Make the resource layer optional in the map editor. 2021-04-07 12:19:55 +01:00
reaperrr
eec7de4646 Fix RA infantry shadow being visible when parachuting 2021-04-04 17:06:03 -05:00
teinarss
605181efe4 Update Log to use worker thread 2021-04-03 22:53:30 +01:00
Paul Chote
fc0ed75a94 Fix Firestorm asset installation. 2021-04-03 15:12:18 -05:00
Smittytron
d95c4146e2 Rework objectives in Situation Critical 2021-04-03 17:58:00 +01:00
Vapre
38f0d50648 Minor optimization. Save a call to IsAlliedWith if not disguised. #18791. 2021-04-03 17:12:12 +01:00
reaperrr
808d8e63bc Add GiveUnitCrateActions for ships to RA 2021-04-03 16:22:27 +01:00
reaperrr
55967035d9 Update RA wcrate.shp
Now uses the original colors again.
Also added back a frame without shadow (for
parachuting).
2021-04-03 16:22:27 +01:00
reaperrr
13a101f11f Add a frame with shadow to both TD crate types
And remove the crate.shp in return
(which was just scrate.shp with shadow).

Also fixes WCRATE actor to actually use the correct .shp.
2021-04-03 16:22:27 +01:00
Paul Chote
35a0a3cf90 Remove rcedit after building windows packages. 2021-04-03 12:19:41 +02:00
Smittytron
08d8f5d8d9 Swap c1 and c7 out of CivilianEvacuees in Monster Tank Madness 2021-04-03 11:38:33 +02:00
Smittytron
f7c9eccf7a Add Selectable Class to technicians 2021-04-03 11:38:33 +02:00
teinarss
6ba9e64380 Rename modifiablePalettes to mutablePalettes in HardwarePalette 2021-04-03 11:33:31 +02:00
teinarss
8b0a3ea680 Remove our own impl of ReadOnlyList and update usages 2021-04-03 11:33:31 +02:00
teinarss
e12ff2c59d Remove our own ReadOnlyDictionary and update usages 2021-04-03 11:33:31 +02:00
Smittytron
afbdb395b2 Add SelectableSupportUnit to Thief 2021-04-03 11:24:00 +02:00
teinarss
3d381e6e32 Make SpriteFont.Measure take zero allocations 2021-04-03 11:22:45 +02:00
Matthias Mailänder
a02737107e Add a .wsa file reader. 2021-04-03 11:19:06 +02:00
Matthias Mailänder
590ab88c45 Don't prefer braces (for one liners). 2021-04-03 10:53:08 +02:00
Patrick
7a7c07e9c4 fix AreaBeam + GrantExternalConditionWarhead bug 2021-04-02 13:05:20 +02:00
reaperrr
40aafe586d Move Game.Timestep to Widget
Game.Timestep wasn't used for anything other than
UI anymore anyway, moving it makes this more clear.
2021-04-02 12:00:42 +01:00
abcdefg30
6b93f955a4 Fix a crash in LevelUpCrateAction 2021-04-02 11:57:44 +01:00
reaperrr
75a3bb4f0b CellIsEvaluating perf optimization
If an actor has Mobile, it implements IOccupySpace
so we can use OccupiesSpace to save a trait look-up.
2021-03-27 22:29:13 +00:00
reaperrr
441e18b898 Remove PathHash
This is 9(!) years old and we haven't had
pathfinding-related desyncs in quite a while.

We can still bring this back later if we ever
need it again.
2021-03-27 22:29:13 +00:00
reaperrr
b8e64df4b1 Remove SmokeTrailWhenDamaged
One of the most outdated and limited traits remaining,
which can do nothing LeavesTrails doesn't cover by now.
2021-03-27 18:42:57 +00:00
Matthias Mailänder
d15e7f76fc Port back to Mono.Nat and make discovery async. 2021-03-27 18:36:12 +00:00
Andre Mohren
3f510b6d93 Make ISpriteLoader aware of the source file name. 2021-03-27 17:36:59 +01:00
teinarss
d60c05eff3 Change to use pattern matching 2021-03-27 17:29:20 +01:00
Paul Chote
7c0e4b25ae Specify interaction bounds relative to the mod tile size. 2021-03-27 16:31:50 +01:00
Smittytron
852241d98e Add Allies05c 2021-03-27 14:46:11 +01:00
Smittytron
8deba81214 Add Allies05b 2021-03-27 13:55:27 +01:00
Smittytron
887a093f46 Add Counterstrike mission Siberian Conflict 3: Wasteland 2021-03-27 13:32:40 +01:00
Smittytron
4778dba36d Fix whitespace issues in RA mission browser 2021-03-27 13:25:22 +01:00
Smittytron
438b2240f4 Add AI infantry production to Soviet02a 2021-03-27 13:25:22 +01:00
Smittytron
58a6333834 Add AI infantry production to Soviet02b 2021-03-27 13:25:22 +01:00
Smittytron
f8feec685f Use correct sprite for Moneycrate 2021-03-27 13:25:22 +01:00
Smittytron
79404cd397 Link campaign-global.lua to remaining missions 2021-03-27 13:25:22 +01:00
Smittytron
6a6c5848c2 Remove fake building overrides from Survival01 2021-03-27 13:25:22 +01:00
Smittytron
420c8ebc4c Remove fake building overrides from Allies02 2021-03-27 13:25:22 +01:00
Matthias Mailänder
c0ea95ca46 Update itch user name. 2021-03-27 11:34:03 +00:00
Matthias Mailänder
1a8d971145 Fix a syntax error. 2021-03-27 11:07:35 +00:00
Paul Chote
7afcb9d757 Fix TS infantry player color. 2021-03-27 11:06:12 +01:00
Smittytron
8a5c0736f5 Remove CivilianKilled notification default from TD 2021-03-27 10:58:29 +01:00
Castle
12b6bb9448 Allow BlendMode of RgbaColorRenderer to be changed 2021-03-23 17:07:20 +01:00
reaperrr
e2a6b55d44 Move up Undamaged check in DamageState
A mere int comparison is obviously cheaper than
a comparison between two multiplications,
so pulling this above the checks of other damage states
allows us to bail early for undamaged actors.
2021-03-21 17:37:42 +01:00
reaperrr
c240c0a24b Only apply non-100 damage modifiers in InflictDamage
Profiling has shown that filtering them out early is cheaper
than applying those percentage modifiers anyway.

Additionally, profiling shows foreach loops to be cheaper
than LINQ here as well.
2021-03-21 17:37:42 +01:00
reaperrr
2528b79610 Fix D2k DamagesConcrete overrides 2021-03-21 11:09:41 +00:00
Matthias Mailänder
e13fd4816e Extract the directory if the registry value points to a filename. 2021-03-20 18:42:02 +01:00
Andre Mohren
1f6e0f582a Fixed aiming not propertly stopped. 2021-03-20 18:33:04 +01:00
Matthias Mailänder
bbbed49f82 Add a lint check for cursor definitions. 2021-03-20 17:37:16 +01:00
Matthias Mailänder
cefb2e7cc6 Remove unused trait lookup. 2021-03-20 17:37:16 +01:00
Paul Chote
470bc4e092 Polish deployed mobile sensor array:
- Force temperate palette to avoid glitches on snow maps
- Add missing active animation
2021-03-20 17:15:56 +01:00
Paul Chote
08c7c80bb7 Render building lights as their own tint-ignoring animations. 2021-03-20 17:15:56 +01:00
Paul Chote
5832ec76d4 Render integrated muzzle flashes as their own tint-ignoring animations. 2021-03-20 17:15:56 +01:00
Paul Chote
594e5b80d7 Add WithMakeOverlay trait. 2021-03-20 17:15:56 +01:00
Paul Chote
14a434975a Add facing support to WithAttackOverlay. 2021-03-20 17:15:56 +01:00
Paul Chote
6854b23bcc Add custom palette support to WithSpriteBody. 2021-03-20 17:15:56 +01:00
Paul Chote
0c52d275fa Add TransparentIndex to PaletteFromFile. 2021-03-20 17:15:56 +01:00
Paul Chote
e63b9b4986 Add condition support to ActorLostNotification. 2021-03-20 17:07:29 +01:00
Paul Chote
0e270bec56 Restrict Chronoshiftable trait to Mobile and Husk actors. 2021-03-20 17:04:42 +01:00
Andre Mohren
f5f06b86ad ExplosionOnDamageTransition now Conditional. 2021-03-20 17:02:47 +01:00
Paul Chote
fcc3008b00 Implement proper TS Tiberium and Vein logic. 2021-03-20 16:45:41 +01:00
Paul Chote
0bdd46451e Overhaul resource layer logic:
* ResourceType trait has been removed.
* Simulation-related data is now defined on the
  ResourceLayer (which mods can subclass/replace).
* Support non-money resources by moving the resource
  values to the PlayerResources trait.
* Allow mods to disable the neighbour density override
  and instead always use the map-defined densities.
* Allow mods to define their own resource placement
  logic (e.g. allow resources on slopes) by subclassing
  (Editor)ResourceLayer.
* Improve ability to subclass/override ResourceRenderer
  by exposing more virtual methods.
2021-03-20 16:45:41 +01:00
Paul Chote
c35e9fb016 Remove custom D2k spice variant logic and improve editor cursor sprite. 2021-03-20 16:45:41 +01:00
Paul Chote
80e92849da Replace ResourceType with strings in interfaces/public methods. 2021-03-20 16:45:41 +01:00
Paul Chote
dcd8eccee4 Replace ResourceLayer references with IResourceLayer in traits/warheads. 2021-03-20 16:45:41 +01:00
Paul Chote
5adcbe4c78 Use IResourceLayer for editor resources. 2021-03-20 16:45:41 +01:00
Paul Chote
0b93556c06 Add resource updating methods to IResourceLayer. 2021-03-20 16:45:41 +01:00
Paul Chote
7e9d291223 Add IResourceRenderer interface. 2021-03-20 16:45:41 +01:00
Paul Chote
1dc26a9b8e Pass resource type and count to IAcceptResources instead of the value. 2021-03-20 16:45:41 +01:00
Paul Chote
3dbc6400a6 Use IResourceLayer in BaseBuilderBotModule. 2021-03-20 16:45:41 +01:00
reaperrr
adf1aeb06a Add support for pool-specific ammo pips decoration 2021-03-20 15:31:41 +01:00
Vapre
be224934a5 FieldLoader, use dictionary for GetValue to make it twice as fast. 2021-03-17 18:18:53 +01:00
teinarss
6b74093c04 Add readonly to structs 2021-03-14 15:17:57 +01:00
reaperrr
65c796dec7 Use Mobile.Pathfinder to reduce trait look-ups 2021-03-14 12:28:54 +00:00
reaperrr
503e706d45 Check for IsReloading in HasAnyValidWeapons
For Attack*.CanAttack().

Allows us to drop the additional check for armaments with ammo.
2021-03-14 12:28:54 +00:00
reaperrr
a1f974bd40 Save Mobile trait look-up in AttackBase 2021-03-14 12:28:54 +00:00
Unrud
11171ff649 Makefile: Fail target version when not a git repository 2021-03-13 15:57:17 +00:00
Paul Chote
3ff1888d74 Fail Situation Critical if Volkov is killed before entering the world. 2021-03-13 15:55:24 +00:00
Paul Chote
cbea08e1fe Fix non-relative path handling in install logic. 2021-03-13 15:56:38 +01:00
Paul Chote
b622afd7fd Fix self-contained packaging. 2021-03-13 13:12:31 +01:00
Paul Chote
7694d0842b Fix two outdated comments. 2021-03-12 21:52:16 +01:00
Paul Chote
a90e6940ab Add sequence scale and alpha support to ShroudRenderer. 2021-03-12 21:52:16 +01:00
Paul Chote
96c3825b6a Add alpha support to TerrainSpriteLayer. 2021-03-12 21:52:16 +01:00
Paul Chote
a6467cb515 Fix Nullable type handling in Lua docs. 2021-03-10 17:46:44 +01:00
Paul Chote
d52ba83f96 Replace terniary null checks with coalescing. 2021-03-08 18:11:25 +01:00
reaperrr
2473b8763b Rename methods/activities with Visual in them
While they may be only 'visual' in terms of influence/cell grid,
they all do update CenterPosition, which is essentially the
actual world position of the actor.
'Visual' would imply that it only affects the position where the
actor is drawn, which is inaccurate.
Furthermore, using the term 'Visual' here would make
naming future methods/properties related to visual interpolation
unnecessarily complicated, because that's where we might
need a real 'Visual(Only)Position'.
2021-03-08 11:19:11 +01:00
teinarss
7073279ab8 Replace WebClient with HttpClient 2021-03-07 16:04:57 +00:00
teinarss
ed43071792 Compile engine and mod dlls as NET5 when not using mono 2021-03-07 16:04:57 +00:00
teinarss
4a1e4f3e16 Use expression body syntax 2021-03-07 13:00:52 +00:00
Paul Chote
555c43843b Fix lobby checkbox event rectangle overlapping with scrollbars. 2021-03-05 18:58:51 +01:00
Paul Chote
a0d75d1e63 Fix rendering artifacts with RA's dialog5 background. 2021-03-05 18:33:39 +01:00
reaperrr
1a7a47fa08 Randomize AI idle harvester scan intervals 2021-02-28 18:58:03 +01:00
teinarss
c2279d3071 Change GetField calls to use nameof 2021-02-28 18:43:51 +01:00
teinarss
ed295ae315 Change throw exceptions to use nameof in parameter 2021-02-28 18:43:51 +01:00
teinarss
53b781960c Change FieldLoader.LoadUsing to use nameof 2021-02-28 18:43:51 +01:00
penev92
6b794ba3e5 Added the "missing" song to the D2k TestFiles
Since it's music it's optional, so the players still won't know anything happened, but if they do open the content manager they will have a chance for an automatic installation.
2021-02-28 12:29:15 +00:00
penev92
2f95e56256 Fixed incorrect D2k song installation 2021-02-28 12:29:15 +00:00
pizzaoverhead
c8644adc85 Fix TLS error on Win7. 2021-02-28 10:15:29 +00:00
Paul Chote
8b81078929 Fix lighting effects in "The Pit" map. 2021-02-24 19:20:48 +01:00
Paul Chote
76a10283c4 Fix TS effect translucency/lighting effects. 2021-02-24 19:20:48 +01:00
Paul Chote
0975102e92 Add Alpha support to sequences.
Alpha can specify a single value for the sequence
or values for each frame in the sequence.

AlphaFade: True can be specified to linearly fade
to transparent over the length of the animation.
2021-02-24 19:20:48 +01:00
Paul Chote
445d943549 Remove obsolete shadow palette definitions. 2021-02-20 02:08:40 +01:00
Paul Chote
554486fb0b Replace projectile, WithShadow, WithParachute shadows with tint effects. 2021-02-20 02:08:40 +01:00
penev92
1c1af89bb9 Fixed D2k VQA videos crashing the game 2021-02-19 13:38:12 +01:00
Trevor Nichols
536c130a39 Add MSADPCM audio format decoding support 2021-02-19 01:56:57 +01:00
Matthias Mailänder
5aa67a42c1 Bump Eluant version to support Unicode strings. 2021-02-18 23:16:49 +01:00
Paul Chote
f661d1ba48 Remove OLDLST campaign overrides. 2021-02-14 18:13:21 +01:00
reaperrr
717b9ba1e6 Fix TS GDI temperate radar sprite
Unlike its snow counterpart, the transition between building
and its shadow was jarring, making it look as if there was a
1-pixel gap between them. Fixed that.

Also applied some very subtle polish by replacing some non-
remapable red pixels (nothing worth porting to snow variant, though).
2021-02-14 14:40:58 +00:00
reaperrr
c57cc96145 TS radars Z offset fixes
The lower borders of the sprites were cut off without this.
2021-02-14 14:40:58 +00:00
Smittytron
16fa1ef144 Change Z-offsets that overlap Repair Facility 2021-02-14 14:31:50 +00:00
Smittytron
788f0f3e24 Change Z-offsets that overlap Service Depot 2021-02-14 14:31:50 +00:00
Unrud
ccf9c8fb22 AppStream Metadata: Add violence-worship: moderate 2021-02-14 14:16:53 +00:00
Unrud
ee31146501 Update AppStream metadata for linux packaging
A few small improvements:
* The type `desktop` was renamed to `desktop-appliaction` (a long time ago)
* Add `launchable` to tell how the application can be launched
* Use `https` for homepage link
* Add link to the bugtracker
* Update `oars-1.0` to `oars-1.1`
* Remove all unnecessary `content_attribute` entries with value `none`
2021-02-14 14:16:53 +00:00
Vapre
f176a0ed83 Fix. Call EndGame in one place of server main loop. Ensure UPnP port forward is removed always. 18807. 2021-02-14 13:54:48 +00:00
Matthias Mailänder
e7cfd2765c Make UI cursors configurable. 2021-02-14 13:09:59 +00:00
abcdefg30
96c4554644 Remove GenericSelectTarget 2021-02-14 12:51:12 +00:00
Mustafa Alperen Seki
df94f0ec8b Add InitialActor to Carryall. 2021-02-14 12:47:08 +00:00
Adam Mitchell
9ee7294c81 Improve shroud performance 2021-02-12 20:58:56 +01:00
Smittytron
5cf622fb6e Improve AI response in Nod03b 2021-02-12 20:38:37 +01:00
Smittytron
8711d8799c Improve AI response in Nod03a 2021-02-12 20:38:37 +01:00
Smittytron
e9a6a3afc5 Add clarifying objective to Monster Tank Madness 2021-02-12 02:30:12 +01:00
abcdefg30
9c29264be7 Drop FlyAttackRun targets when we don't have valid armaments against them 2021-02-12 02:17:26 +01:00
abcdefg30
e6c9d5fc96 Don't check IsTraitDisabled twice when calculating IsTargetableBy 2021-02-12 02:17:26 +01:00
Paul Chote
d09476c603 Remove custom palettes from building placement previews. 2021-02-12 02:08:30 +01:00
Orb
5bda6852a4 APC Balance Tweak Commit 2021-02-09 23:07:44 +01:00
Ivaylo Draganov
641b05eb21 Split settings panels logic and add support for custom panels 2021-02-08 11:25:50 +01:00
reaperrr
62fd11d5c4 Fix deployed tick tank sprites
Several pixels used non-remapable red colors.
2021-02-06 22:46:52 +01:00
Smittytron
e807664437 Add TanyaRescued speech notification to Downunder 2021-02-06 01:18:48 +01:00
Smittytron
e46440b94f Correct the ownership of walls in Allies05a 2021-02-06 01:18:48 +01:00
Smittytron
30ea1e23b4 Delay SendReinforcements() to split notifications 2021-02-06 01:18:48 +01:00
Smittytron
4db2fd980a Kill pillboxes with barrels in Soviet01 2021-02-06 01:18:48 +01:00
Smittytron
9580d61fb0 Fix spaces in Monster Tank Madness 2021-02-06 01:18:48 +01:00
Smittytron
27aefcc0ce Fix tabs in Ant01 2021-02-06 01:18:48 +01:00
Smittytron
b8b1a4930c Change BarrelExplode CreateEffect to large_napalm 2021-02-05 23:41:03 +01:00
Smittytron
d7a40f3bdb Change BarrelExplode to use FireDeath 2021-02-05 23:41:03 +01:00
Paul Chote
fb0031d34a Rename remaining Stance references to PlayerRelationship. 2021-02-04 23:14:09 +01:00
Paul Chote
b3821e71dc Fix Tanya's prone firing animations. 2021-02-02 23:05:07 +01:00
Unrud
8a90413b87 Use version from VERSION file
The `VERSION` variable doesn't work with a release tarball, because it requires git to be set correctly.
Instead this reads the version from the `VERSION` file.
2021-02-01 23:13:48 +01:00
abcdefg30
115984054d Increase the reload delay of the prison colt to match the normal colt 2021-01-31 22:35:42 +00:00
abcdefg30
69addda86c Fix the gun sounds not playing in Allies05a 2021-01-31 22:35:42 +00:00
Smittytron
c2379f251d Fix crash in Allies 05a on SamBarrel kill 2021-01-31 18:52:47 +01:00
abcdefg30
3422bf1b59 Remove the 'docs' target from the windows make file 2021-01-30 21:08:25 +00:00
Paul Chote
e830d1e9c2 Fix Concrete placement on invalid terrain. 2021-01-30 14:48:04 +01:00
Smittytron
f767c24601 Remove SpawnActorOnDeath from civilian structures 2021-01-30 13:47:14 +01:00
Paul Chote
2c09b1414c Ignore invalid server entries instead of the entire list. 2021-01-30 13:44:51 +01:00
Paul Chote
df1191db5b Don't crash if a null uid is given to QueryRemoteMapDetails. 2021-01-30 13:44:51 +01:00
Paul Chote
62433ecb8b Prevent AttackPopupTurreted.TickIdle from running while disabled. 2021-01-30 13:16:58 +01:00
Paul Chote
09f680201f Restore missing versioned source code package. 2021-01-30 13:04:23 +01:00
reaperrr
5ba662cfae Fix RA inf death anims playing too fast 2021-01-30 01:23:39 +00:00
Paul Chote
d6d0fd597d Fix Tanya firing animation. 2021-01-29 15:04:42 +01:00
Paul Chote
fec1c813a5 Support burst-specific infantry attack animations. 2021-01-29 15:04:42 +01:00
Paul Chote
547b6d19dc Reduce Tanya firing rate. 2021-01-29 15:04:42 +01:00
Paul Chote
5e6dd50c3b Suppress error messages from make.ps1 clean.
Also removed obsolete ./*/bin removal.
2021-01-29 14:54:40 +01:00
Paul Chote
4251ed69bb Keep Discord join button active for spectators. 2021-01-29 14:38:13 +01:00
Paul Chote
b05ee80d5c Remove first-client check from LobbySettingsNotification.
ClientWithIndex may rarely be null, causing a crash.
In any case we do want to report these changes to the first client, as
somebody else may have changed the settings and left.
2021-01-29 14:35:32 +01:00
Paul Chote
84ced8704d Fix bot-controlled aircraft stalling above cloaked targets. 2021-01-29 14:30:27 +01:00
teinarss
58313520f0 Change renderables to class to avoid boxing 2021-01-29 00:24:27 +01:00
reaperrr
0d8ef1a1dd Make Contrail conditional and public
Also moved it to 'Render' subfolder while at it.
2021-01-28 23:30:45 +01:00
Matthias Mailänder
28ddab7cc2 Disallow building sell during construction. 2021-01-27 22:51:58 +01:00
Matthias Mailänder
8f06b0a836 Add a "structure sold" notification. 2021-01-27 22:51:58 +01:00
Paul Chote
3b768dacf5 Increase map chooser dialog size to match the lobby. 2021-01-25 20:43:53 +01:00
Smittytron
d67b3245e0 Change hospital owner in Nod07b 2021-01-24 10:47:05 +00:00
abcdefg30
a1dd1fc5d1 Fix an compiler error on bleed 2021-01-23 23:15:58 +00:00
Paul Chote
889153ce81 Add shadow rendering for resource sprites. 2021-01-23 20:59:53 +01:00
teinarss
30e5c807b0 Add Map and server name to discord details 2021-01-22 14:14:02 +01:00
Paul Chote
db2fded24d Fix AutoTarget.ChooseTarget ignoring AttackBase.TargetFrozenActors. 2021-01-21 19:25:07 +01:00
Paul Chote
82a9809192 Remove RenderSprites.Scale. 2021-01-21 18:22:11 +01:00
Paul Chote
f6b40b2bce Allow sequences to define a Scale factor. 2021-01-21 18:22:11 +01:00
abcdefg30
fd75e03d9c Use pattern matching in FieldSaver 2021-01-21 18:05:07 +01:00
Paul Chote
d6a05f2ea2 Fix Sardarkaur not attacking while attack-moving. 2021-01-17 19:42:49 +01:00
Paul Chote
f51603e440 Add ShpRemastered sprite loader. 2021-01-16 23:16:34 +01:00
Paul Chote
f341c9a8a6 Add TGA and DDS sprite loaders. 2021-01-16 23:16:34 +01:00
Paul Chote
765944cfa2 Switch macOS and Linux default toolchain to .NET 5. 2021-01-16 22:58:05 +01:00
Paul Chote
15c926b6b9 Move DefineConstants="MONO" into OpenRA.Game.csproj. 2021-01-16 22:58:05 +01:00
teinarss
b486112c98 Fix broken editorconfig 2021-01-16 22:28:17 +01:00
Paul Chote
223a0015a6 Allow terrain depth sprites to be loaded from a second file. 2021-01-16 22:09:08 +01:00
Paul Chote
632af7c7e6 Support mixed indexed/BGRA terrain tiles. 2021-01-16 22:09:08 +01:00
Paul Chote
142870d78a Support multiple sheets in TerrainSpriteLayer. 2021-01-16 22:09:08 +01:00
Paul Chote
b0aa32cd1b Support multiple palettes in TerrainSpriteLayer. 2021-01-16 22:09:08 +01:00
Matthias Mailänder
281229e8b4 Update path according to latest appstream specifications. 2021-01-16 20:02:19 +01:00
Matthias Mailänder
8f0d53ffd9 Document the target platform parameter during install
as it otherwise copies the system binaries.
2021-01-16 20:02:19 +01:00
Matthias Mailänder
ddfa5a4d35 Get rid of unnecessary Makefile variables. 2021-01-16 20:02:19 +01:00
Matthias Mailänder
cbf2e2e2ef Don't contain the build root in the wrappers. 2021-01-16 20:02:19 +01:00
Matthias Mailänder
62803aff88 Create BIN_PATH first on shortcut installation. 2021-01-16 20:02:19 +01:00
VonNah
bc9cd57fa0 Fix vehicle explosion and missile impact sounds in Tiberian Dawn 2021-01-16 01:32:20 +00:00
VonNah
93fa9bdfb8 Fixed an issue where RadarUp and DisablePower/EnablePower use the wrong sound effects.
Signed-off-by: VonNah <vonnahora@gmail.com>
2021-01-16 00:48:35 +00:00
reaperrr
808c5f0951 Remove ScriptTriggers from map deco actors
Removes it from destroyed fields, trees and rocks in RA and C&C.

This trait isn't free in terms of performance due to all the
INotify* calls, and the mentioned actors should rarely
- if ever - need it. Besides, if a mission ever really needs
this on those actors, the trait can be added back via
map rules.
2021-01-16 00:44:03 +00:00
Paul Chote
a70637f28f Fix missing System.Threading.Tasks.Parallel in packaged net5 builds. 2021-01-15 12:18:00 +01:00
Paul Chote
a12e4657ee Update apt metadata before installing dependencies. 2021-01-12 23:09:11 +01:00
Paul Chote
53db1230ab Move default tileset parsing to Mods.Common. 2021-01-11 21:57:55 +01:00
Paul Chote
207e09fea9 Add plumbing for mod-defined terrain loaders. 2021-01-11 21:57:55 +01:00
Paul Chote
b86b638700 Move editor template rendering to TerrainRenderer. 2021-01-11 21:57:55 +01:00
Paul Chote
995c33a942 Remove Ruleset.TileSet. 2021-01-11 21:57:55 +01:00
Paul Chote
6d6efd5fe8 Move tileset image validation to TerrainRendererInfo. 2021-01-11 21:57:55 +01:00
Paul Chote
2782620081 Add ITemplatedTerrainInfo interface. 2021-01-11 21:57:55 +01:00
Paul Chote
be2ca77acf Add ITerrainInfoNotifyMapCreated interface. 2021-01-11 21:57:55 +01:00
Paul Chote
87790069e9 Add ITerrainInfo interface. 2021-01-11 21:57:55 +01:00
Paul Chote
0a374e2264 Move ownership of tile sprites to the terrain renderer. 2021-01-11 21:57:55 +01:00
Paul Chote
2eee911c58 Fix infantry freezing death animations in Top o' the World mission. 2021-01-11 11:32:38 +01:00
Paul Chote
bb65646c4d Fix Grenadier death animation in Sarin Gas 3 mission. 2021-01-11 11:32:38 +01:00
Paul Chote
fea700fb72 Add death types support to the Lua Kill() API. 2021-01-11 11:32:38 +01:00
tovl
560c3230cd Let harvesters only search for refineries when needing to unload. 2021-01-10 23:43:48 +01:00
Paul Chote
e990a83b7a Cancel support power targeting if power cannot be activated. 2021-01-10 22:42:32 +01:00
Paul Chote
02a2624bcc Add a per-player handicap option to the lobby.
Handicaps reduce unit health, firepower, and build speed.
2021-01-10 22:23:52 +01:00
Paul Chote
c7c78eda80 Increase lobby and server list width. 2021-01-10 22:23:52 +01:00
Paul Chote
b1200b8078 Switch make.ps1 to downloading from our GeoIP data mirror. 2021-01-10 21:13:26 +01:00
Matthias Mailänder
0cb25f1044 Fix syntax errors. 2021-01-10 21:06:39 +01:00
Matthias Mailänder
8ee728891d Use the GitHub action variable for clickable links. 2021-01-10 21:06:39 +01:00
Matthias Mailänder
bbaa475287 Update SDL 2 nuget package to match the platform. 2021-01-10 21:04:44 +01:00
Matthias Mailänder
7bc17b59f5 Add a generic video player widget. 2021-01-10 10:21:17 +01:00
Smittytron
514652bb6a Add Aftermath mission Shock Therapy 2021-01-10 02:34:50 +01:00
Paul Chote
3e7665146a Avoid BuildUnit crash if the item is invalidated before the task runs. 2021-01-10 01:34:51 +01:00
Paul Chote
16d0f8a5a6 Add a setting to pause the shellmap. 2021-01-10 00:23:30 +01:00
Paul Chote
aeab9a8116 Group bot AttackMove orders. 2021-01-09 23:55:50 +01:00
Orb
f9a5669eb4 Playtest-Balance-Tweaks Commit 2021-01-09 23:22:49 +01:00
Paul Chote
868736fe1a Remove obsolete --check-runtime-assemblies utility command. 2021-01-09 19:53:22 +01:00
Paul Chote
0984de6bea Change install_assemblies_mono to install all bin contents. 2021-01-09 19:53:22 +01:00
Paul Chote
69ffd70d3f Switch Appimages to net 5. 2021-01-09 19:53:22 +01:00
Paul Chote
2fae69c0ba Run appimagetool directly. 2021-01-09 19:53:22 +01:00
Paul Chote
f1d66a4c70 Use ULFO format for non-compat disk images (requires macOS 10.11+). 2021-01-09 19:53:22 +01:00
Paul Chote
84ce33fe9c Trim unused assemblies to reduce packaged size further. 2021-01-09 19:53:22 +01:00
Paul Chote
e583165dff Replace duplicate runtime files with hardlinks to reduce dmg size. 2021-01-09 19:53:22 +01:00
Paul Chote
7bedba5837 Switch macOS packages to .NET 5. 2021-01-09 19:53:22 +01:00
Paul Chote
8c9b9df125 Change WithColoredOverlay to use a color instead of a palette. 2021-01-06 00:06:51 +01:00
Paul Chote
96641873ae Replace highlight palette with tint effects. 2021-01-06 00:06:51 +01:00
Paul Chote
8edd9de278 Replace ITintableRenderable with IModifyableRenderable. 2021-01-06 00:06:51 +01:00
Paul Chote
67754e8693 Add alpha support to SpriteRenderer. 2021-01-06 00:06:51 +01:00
Paul Chote
b88495c689 Remove palettes from base IRenderable. 2021-01-06 00:06:51 +01:00
Paul Chote
71b13c7b5d Disable AttackPopupTurreted state changes when paused. 2021-01-03 12:46:47 +01:00
nvrnight
b3f39bffce Issue #18936: The game no longer crashes when TextFieldWidget sends Enter key press and onSelect action is null. 2021-01-03 12:26:52 +01:00
Smittytron
b44a9ab5fc Fix palettes in Fall of Greece 1 2021-01-02 22:43:28 +01:00
Smittytron
e34255b0b2 Add campaign-palettes to missions lacking it 2021-01-02 22:43:28 +01:00
Paul Chote
2fee62af4d Fix exit priority ordering. 2021-01-02 15:43:03 +01:00
Paul Chote
fc1032cd9e Start rally point lines at the spawn position instead of the exit cell. 2021-01-02 15:29:18 +01:00
Paul Chote
60195e2842 Prevent Health: 100 from being added to actors. 2021-01-02 15:12:20 +01:00
Paul Chote
6fed31717c Fix map editor inverting preview color channels. 2021-01-02 11:43:55 +01:00
Paul Chote
aee3eb99c3 Fix --dump-sequence-sheets crash. 2021-01-02 11:43:55 +01:00
Paul Chote
3aa6fd3dc4 Add a friendly type name for Nullable<T>. 2021-01-02 11:38:24 +01:00
teinarss
5e74e58b22 Add support for dotnet core for Windows 2021-01-01 19:42:01 +01:00
abcdefg30
fef7a018f2 Add an update rule 2020-12-31 12:09:56 +01:00
abcdefg30
1d4891b017 Rename several MP traits 2020-12-31 12:09:56 +01:00
Ivaylo Draganov
e9a803e3c1 Update launch.json to work with the new launcher 2020-12-30 17:31:37 +01:00
Nah
4abe7d5895 Update defaults.yaml
Fix the Building's SoundOnDamageTransition DamagedSounds with the correct one and add a second sound file to DestroyedSounds for more variation like in the original Tiberian Dawn.
2020-12-30 14:06:56 +00:00
abcdefg30
cd68db5c11 Move myes1 and mrise1 from Select to Move Mechanic Voices 2020-12-30 02:01:00 +00:00
abcdefg30
ae9f437bb8 Enable mechanic voices from Aftermath 2020-12-30 02:01:00 +00:00
Smittytron
a047893049 Remove out of bounds actors from Exodus 2020-12-30 01:51:27 +00:00
Smittytron
5b2733decf Fix lag issue on Exodus by narrowing exit area 2020-12-30 01:51:27 +00:00
Ivaylo Draganov
ff60540fac Add player random faction info in the objectives panel 2020-12-30 01:44:50 +00:00
abcdefg30
a68a91bb39 Explicitly return on failure in make.ps1 2020-12-29 21:26:07 +01:00
abcdefg30
0bf8d2241f Correct Shock Trooper Move and Select voices 2020-12-29 21:15:53 +01:00
Orb
06850e6271 Fix-MT-Sound-Commit 2020-12-28 10:56:20 +01:00
Paul Chote
62fa3b7c9c Rename SpriteFrameType enums. 2020-12-25 18:51:25 +01:00
Paul Chote
ce09b402d0 Fix definition and use of non-indexed sprite color channels.
Our SpriteFrameType names refer to the byte channel order rather than
the bit order, meaning that SpriteFrameType.BGRA corresponds to the
standard Color.ToArgb() etc byte order when the (little-endian) integer
is read as 4 individual bytes.

The previous code did not account for the fact that non-indexed Png
uses big-endian storage for its RGBA colours, and that SheetBuilder
had the color channels incorrectly swapped to match and cancel this out.

New SpriteFrameType enums are introduced to distinguish between BGRA
(little-endian) and RGBA (big-endian) formats, and also for 24bit data
without alpha. The channel swizzling / alpha creation is now handled
when copying into the texture atlas, removing the need for non-png
ISpriteLoader implementations to allocate an additional temporary array
and reorder the channels during load.
2020-12-25 18:51:25 +01:00
Paul Chote
6e7ad9df25 Remove vestigial translation plumbing.
This was never completed to the level required to
be properly used ingame.
2020-12-25 16:18:28 +01:00
Matthias Mailänder
fb20479379 Add .vxl support to the asset browser. 2020-12-25 00:00:11 +00:00
Matthias Mailänder
9d181e88d2 Name the files that cause crashes. 2020-12-25 00:00:11 +00:00
Vapre
e90fc1ef39 As proposed by Leonardo-Ferreira. 2020-12-24 23:43:35 +00:00
Vapre
ce013f17d6 Server DispatchOrdersToClients create frame once for all clients.
Avoid creating frame data per client connection. Avoid
the allocation of a memory stream and setting frame header
and copying frame data.
2020-12-24 23:43:35 +00:00
Vapre
78253ce284 Activity, fixes.
Do not call SkipDoneActivities method recursively via the
NextActivity property. Rather use the nextActivity member.
Avoiding additional function calls and a recursively
growing stack.

Do not call ChildActivity and NextActivity properties
twice in a row. Once to test for null and after to access
it's value. It will cause the complete list of activities
to be traversed twice looking for non done activities.

Replace Queue method with a version that does not the
NextActivity property causing an extra call to
SkipDoneActivities. Avoid calling Queue recursively.

Similar replace QueueChild with a version that does
not call additional methods.

Note that ActivitiesImplementing returns only non
done activities. The method name does not suggest this.

Please consider making NextActivity a method to cleary indicate it
involves the logic of skipping Done activities. To let
the called know it is 'expensive'.

Please consider renaming the protected property ChildActivity to
FirstChildActivityNotDone to avoid it being used as childActivity.

Please consider maintaining a pointer to the first
non done activity. This avoids the need the each time find it.
2020-12-24 23:02:07 +00:00
Taryn Hill
2671e40c1d feat: ActorSpawnManager.SpawnInterval supports 1 or 2 values
Providing 2 values creates a range from which a value is randomly selected.
2020-12-24 22:15:15 +00:00
Matthias Mailänder
04cda69ef9 This compression is actually not yet supported. 2020-12-24 22:05:37 +00:00
Matthias Mailänder
b4c483ce1a Fix channels. 2020-12-24 22:05:37 +00:00
Matthias Mailänder
9a9f58d744 Support 8 bit .aud files. 2020-12-24 22:05:37 +00:00
Matthias Mailänder
d38fe542a2 Improve performance. 2020-12-24 15:56:18 +00:00
Matthias Mailänder
80503fbf36 Bump SharpZipLib. 2020-12-24 13:48:21 +00:00
Paul Chote
99a23b4056 Fix an incorrect comment in install_assemblies_mono 2020-12-24 12:08:56 +01:00
Matthias Mailänder
13a7de4b6b Allow a system chat label override. 2020-12-24 10:01:54 +00:00
teinarss
73bba97aaa Update MasterServerPinger to modern approach 2020-12-22 20:57:40 +01:00
abcdefg30
d6e9cdab5b Add the 9th Dark Tournament map as "Oil Spill" 2020-12-21 21:08:39 +01:00
Paul Chote
1a177bc2de Remove unused variables from Map.SavePreview. 2020-12-19 13:07:01 +01:00
Paul Chote
e0b3e631fe Remove obsolete null checks. 2020-12-19 13:07:01 +01:00
Paul Chote
2518a353af Add lint test for invalid map tiles. 2020-12-19 13:07:01 +01:00
Paul Chote
989800efff Fix missing tiles in upstream maps. 2020-12-19 13:07:01 +01:00
Paul Chote
c02846e2cb Replace invalid tiles on map load. 2020-12-19 13:07:01 +01:00
Matthias Mailänder
09db4a0e25 Enable debug mode by default. 2020-12-15 23:06:05 +01:00
Trevor Nichols
a85da9d86c Implement loader for MegV3 file format 2020-12-15 11:11:05 +01:00
Paul Chote
920d00bbae Use nearest-neighbour scaling in --debug-chrome-regions utility command. 2020-12-14 22:38:25 +01:00
Ivaylo Draganov
62475279ee Remove unneeded chrome yaml declarations 2020-12-14 20:52:38 +01:00
Matthias Mailänder
d8e979d283 Remove dead code. 2020-12-14 20:38:50 +01:00
Paul Chote
299b8880dd Fix api output directory. 2020-12-14 18:33:35 +01:00
Paul Chote
61027e4067 Fix docs.openra.net repository reference. 2020-12-14 18:33:35 +01:00
Paul Chote
a7249c10dc Fix docs.openra.net documentation workflow. 2020-12-13 15:35:31 +01:00
Paul Chote
611d12ac78 Migrate CI and packaging from Travis CI to GitHub Actions. 2020-12-12 20:17:29 +00:00
abcdefg30
ef9f26a60d Fix MissionObjectives not properly ending the game 2020-12-12 14:59:49 +01:00
abcdefg30
aeaffc0a8e Properly restrict the spectator view in mission maps 2020-12-12 14:59:49 +01:00
Paul Chote
e3084e230e Switch mirror for nsis3 package. 2020-12-12 14:54:50 +01:00
Paul Chote
4c01c772f8 Fix incorrect animation playing when moving infantry stop to attack. 2020-12-12 14:40:13 +01:00
Paul Chote
ed94f7680a Revert "Fix WithInfantryBody wrongly overwriting attack animations"
This reverts commit 1a63cc4a41.
2020-12-12 14:40:13 +01:00
yuantse
408d66cdaf Add Allies 09a 2020-12-12 13:18:08 +01:00
Smittytron
c4a0f2f169 Add Counterstrike mission Sarin Gas 3: Controlled Burn 2020-12-12 13:15:18 +01:00
Paul Chote
26b28d26da Prevent Civilians from wandering onto Tiberium. 2020-12-12 12:54:46 +01:00
Paul Chote
8ded6dafd4 Add AvoidTerrainTypes to ScaredyCat. 2020-12-12 12:54:46 +01:00
Paul Chote
57a94ad667 Add AvoidTerrainTypes to Wanders. 2020-12-12 12:54:46 +01:00
Paul Chote
53933a4d8f Fix restart black screen race condition. 2020-12-11 22:57:57 +01:00
Paul Chote
6606d7dd93 Add DisplayFaction details to the replay metadata. 2020-12-11 18:05:44 +01:00
Paul Chote
7a256dcafa Fix rally point target line exit display. 2020-12-11 17:25:30 +01:00
abcdefg30
7899c52b6d Add an update rule 2020-12-11 17:13:02 +01:00
abcdefg30
919c670502 Update the rules of the default mods 2020-12-11 17:13:02 +01:00
abcdefg30
aac3174efc Rename Stances to Relationships in the yaml api 2020-12-11 17:13:02 +01:00
Paul Chote
a8d3d5c79a Fix Neutral crushing checks. 2020-12-08 20:17:11 +01:00
Paul Chote
7c852d90fb Ignore aircraft when searching for enemy targets. 2020-12-07 23:39:22 +01:00
Paul Chote
269ce9c406 Exclude carryalls from AI squads. 2020-12-07 23:39:22 +01:00
Paul Chote
53d98ec255 Abort squad states that are not able to move. 2020-12-07 23:39:22 +01:00
Paul Chote
7a7cd21578 Fix TD SAM Site facings being reset when damaged while closed. 2020-12-07 01:44:04 +01:00
abcdefg30
2b363e4e1c Fix WithInfantryBody wrongly overwriting attack animations 2020-12-07 00:29:16 +01:00
Paul Chote
b1560ae69c Overhaul packaging scripts and helpers:
- Shared helpers extracted to functions.sh for use by upstream packaging,
  Mod SDK, and downstream packaging (via the Makefile targets).
- Assembly management separated from data and combined between engine
  and mods to prepare for pending .NET core requirements.
- Streamline Makefile targets.
- Clean up a lot of old technical debt.
2020-12-06 17:16:47 +01:00
Paul Chote
f3ebe07540 Fix WithDeliveryAnimation overriding sell animation. 2020-12-06 09:49:40 +01:00
Orb
6cac587753 ST Death Explosion Change Commit 2020-12-06 09:47:22 +01:00
Paul Chote
09e6cc4add Enable dark mode support on macOS. 2020-12-05 17:09:32 +00:00
Paul Chote
5a2f91be1c Fix building bibs not blocking placement. 2020-12-05 17:06:04 +00:00
Paul Chote
25071b813e Prevent concrete from spawning underneath already placed building bibs.
This is the equivalent to reverting 83b61ab.
2020-12-05 17:06:04 +00:00
Paul Chote
d61bd675c4 Revert "Remove BuildingInfluence from ResourceLayer."
This reverts commit 1634f3b70e.
2020-12-05 17:06:04 +00:00
Paul Chote
582e2774ac Revert "Remove BuildingInfluence from building adjacency check."
This reverts commit 33a1ca5965.
2020-12-05 17:06:04 +00:00
Paul Chote
5a52ce5330 Revert "Remove BuildingInfluence trait."
This reverts commit 34bf143328.
2020-12-05 17:06:04 +00:00
abcdefg30
31c9b4fc80 Revert renderable buffer sorting improvements 2020-12-05 17:03:03 +00:00
abcdefg30
4953ce314b Make Attack turn during its own tick 2020-12-05 16:41:30 +00:00
Paul Chote
86519bfda5 Expose Player.HomeLocation to the Lua API. 2020-12-05 14:14:56 +01:00
teinarss
2c9a36b9a3 Update float3 to readonly and use in modifier for parameters. 2020-12-02 20:37:50 +01:00
Paul Chote
d3847d49ed Fix windows package filenames. 2020-12-02 19:41:24 +01:00
Paul Chote
57f40a0b20 Remove obsolete variable definition. 2020-12-02 19:41:24 +01:00
Paul Chote
fa05f4e4b0 Generate Unicode-aware Windows installers. 2020-12-02 19:41:24 +01:00
Paul Chote
754f41ecd1 Remove redundant python check from Linux package creation. 2020-12-02 19:41:24 +01:00
Paul Chote
4b6e1c2198 Add a utility wrapper script for non-Windows. 2020-12-02 16:57:51 +01:00
teinarss
e6db2c98d0 Make WRot readonly and use in parameter modifier 2020-12-01 22:54:39 +00:00
Paul Chote
942f1e2d9e Fix infantry ignoring the default subcell when produced.
They were being created with the correct subcell, but was rejecting it
as invalid because it was already occupied (by the unit itself).
2020-12-01 22:39:11 +01:00
Paul Chote
da5c94858f Evaluate exit distance from the exit cell instead of the spawn position. 2020-12-01 22:35:43 +01:00
Paul Chote
77ffc20a5f Convert Attack*.FacingTolerance to WAngle. 2020-11-30 16:39:48 +01:00
abcdefg30
d75fed3a00 Replace chan with c10 in actors spawned from selling RA tech buildings 2020-11-30 01:07:36 +01:00
Matthias Mailänder
2aba054fe8 Move it to the right folder. 2020-11-29 18:27:59 +01:00
Paul Chote
3b1f4ba07f Fix production exit desync. 2020-11-28 17:49:36 +01:00
Paul Chote
d35768e0f9 Rework Windows launchers:
- Use SDL2 message boxes instead of Winforms.
- Use a proper project instead of compiling a single file.
- Use assembly attributes instead of modifying strings in the source code.
- Remove generic OpenRA.exe launcher.
- Replace MakeLAA.exe with a python script.
2020-11-27 20:32:02 +01:00
Paul Chote
07a10069db Introduce new OpenRA.exe entrypoint and change OpenRA.Game to a library. 2020-11-27 20:32:02 +01:00
Paul Chote
20fe59e844 Output compiled binaries to ./bin. 2020-11-24 17:53:48 +01:00
Paul Chote
6ad5b9ebc4 Allow the game root directory to be moved away from the binaries. 2020-11-24 17:53:48 +01:00
Paul Chote
dd0b08d54a Replace ^ and . in platform paths with ^SupportDir and ^EngineDir. 2020-11-24 17:53:48 +01:00
Paul Chote
1cc1f93fb0 Rename Platform.GameDir to Platform.EngineDir. 2020-11-24 17:53:48 +01:00
Paul Chote
72f1f06ebc Remove Platform.UnresolvePath. 2020-11-22 16:42:46 +01:00
Paul Chote
151cea96e9 Remove Platform.IsPathRelativeToSupportDirectory. 2020-11-22 16:42:46 +01:00
Paul Chote
888915b53b Use Platform.GameDir explicitly in hardcoded paths. 2020-11-22 16:42:46 +01:00
Paul Chote
de7a84e8ed Don't use Platform.ResolvePath when constructing hardcoded paths. 2020-11-22 16:42:46 +01:00
Paul Chote
1dd5b113c7 Fix asset browser and map editor paths for SDK-based mods. 2020-11-22 16:42:46 +01:00
Paul Chote
e9ad38667e Expose TransformsInto* targetline colors to yaml. 2020-11-21 14:52:54 +01:00
abcdefg30
05e8026713 Remove or use unused variables in TransformsIntoAircraft 2020-11-20 23:12:44 +01:00
abcdefg30
5b75649888 Fix TransformsIntoAircraft transforming on all orders 2020-11-20 23:12:44 +01:00
Matthias Mailänder
c22392eb1e Enable itch app auto updates on Windows. 2020-11-17 19:46:28 +01:00
dnqbob
7c2a51df38 Make OrderGenerator flexible on mouse input for modder 2020-11-17 19:18:04 +01:00
reaperrr
05cb9b1fbf Fix dock sequence dock/undock notifications
- move Refinery dock/undock notifications to OnStateDock/-Undock
and only call Undock if Dock was also called.
- Add INotifyHarvesterAction support to VoxelHarvesterDockSequence.
2020-11-15 16:56:28 +01:00
reaperrr
6bba35c330 Fix TS harvesters getting stuck in unload graphics
when refinery is destroyed while unloading.
2020-11-15 16:56:28 +01:00
reaperrr
90d9ee1f5c Fix harv dock sequence issuing drag despite cancellation 2020-11-15 16:56:28 +01:00
reaperrr
385f01247b Fix harvs dragging to refinery even if it died while turning 2020-11-15 16:56:28 +01:00
reaperrr
996029ee38 Fix undock anim playing even if docking was cancelled
...before dock anim could run.

The undock animation would play even if the dock anim
hadn't run (meaning the sequence cancelled before the docking
completed, for example due to refinery death).
2020-11-15 16:56:28 +01:00
reaperrr
87929b3d91 Fix dock animation continuing after refinery died
OnStateDock would always be triggered, even if the
refinery was killed before the harvester would finish
docking.
2020-11-15 16:56:28 +01:00
abcdefg30
e7e50cc101 Remove WorldUtils.AreMutualAllies 2020-11-15 16:37:51 +01:00
abcdefg30
d6c0926856 Remove LaysTerrain 2020-11-15 16:33:32 +01:00
abcdefg30
99ec119ffd Move LaysTerrain functionality to D2kBuilding 2020-11-15 16:33:32 +01:00
abcdefg30
6b2920cc91 Introduce D2kBuilding 2020-11-15 16:33:32 +01:00
abcdefg30
05f933f007 Add an update rule for the DamagedByTerrain refactor 2020-11-15 16:33:32 +01:00
abcdefg30
80aeb5ada6 Refactor DamagedByTerrain 2020-11-15 16:33:32 +01:00
abcdefg30
83ea65d4ff Require IOccupySpace for DamagedByTerrain 2020-11-15 16:33:32 +01:00
Paul Chote
46b3b01b89 Fix WithVoxelBarrel orientation calculations. 2020-11-15 13:51:12 +00:00
Orb
973f679939 TD Veterancy Adjustment Commit 2020-11-15 09:46:54 +01:00
abcdefg30
6de1b7b915 Always mark defeated/victorious players as spectating 2020-11-15 09:45:16 +01:00
Orb
e7ce739fec TD Fix Repair Times Commit 2020-11-15 09:42:21 +01:00
abcdefg30
bf14a4ce80 Remove an unused variable from LoadComplete 2020-11-15 09:38:02 +01:00
abcdefg30
8840a690c6 Fix maps without spawn points no longer working 2020-11-15 09:38:02 +01:00
abcdefg30
77e85e7c58 Change DisabledSpawnPoints from List to HashSet 2020-11-15 09:38:02 +01:00
Pavol Molnar
6943cf5ad5 fixed tooltip, issue 18301 2020-11-15 09:36:56 +01:00
Vapre
17996dfdfc Shroud, access ProjectedCellLayer by array index. Shroud.touchedCount to avoid Tick updates.
Shroud, access ProjectedCellLayer by array index over PPos index.

Performance improvement. Avoid the multiple PPos to array index
conversions in the same method call by calculating the cell
layer index once.

Background:

`Shroud.Tick` and `ProjectedCellLayer.Index(PPos puv)` shows up
in profile reports as one of the most expensive methods
(9% of CPU time).

In `Shroud.Tick` calls `ProjectedCellLayer.Index(PPos puv)` multiple
times for the same or different cell layers of the same dimension.

Improvement:

Benchmark results show an 0.5ms mean improvement in tick
time and 0.3 improvement in render time -
on a replay map of 1.12 min of play at max speed.

Render time:
       render222052(bleed)  render221934(this commit)
count   8144.000000   8144.000000
mean      11.410075     11.470100
std        5.004876      4.731463
min        3.450700      3.638400
25%        7.409100      7.015900
50%       12.410600     12.435900
75%       13.998100     14.242900
max      149.036200    149.656500

Tick time:
       tick_time222043(bleed)  tick_time221923(this commit)
count      2366.000000      2366.000000
mean          4.762923         4.275833
std           3.240976         3.206362
min           0.263900         1.653600
25%           4.145375         3.668600
50%           4.779350         4.240050
75%           5.232575         4.611775
max          85.751800        87.387100

Shroud.touchedCount to avoid Tick updates if no cells touched.

Avoids iterating over all map cells of the `touched` cell layer.

Tick time improvement of 40%+ - during at least the first two
minutes of gameplay.

During the first minutes of a game - out of every 1000 ticks
only 10-100 result in the Shroud - of any player - to be touched.

For certains player types (Neutral, Creep) less Shroud updates
are expected throughout a complete game.

Throughout a complete game human/AI players can also have no
Shroud touches during certain Ticks.
2020-11-14 18:33:49 +00:00
reaperrr
7f32776701 Fix some RA effect warheads ignoring water actors 2020-11-14 16:06:21 +01:00
reaperrr
fce109a46d Fix piff anims of Sniper and SilencedPPK weapons 2020-11-14 16:06:21 +01:00
reaperrr
748292324a Update RA/TD light guns cosmetic effects
Use single piff instead of piffs per impact on
M60s and M1, but in return add visual inaccuracy.

Gave minigunner MG two additional delayed effect warheads
to match sound and fire animation.
2020-11-14 16:06:21 +01:00
reaperrr
efe0de2ecb Move around TD Pistol yaml
Feels more organized if located below the inherited
^LightMG, like all other inheritors.
2020-11-14 16:06:21 +01:00
reaperrr
cac9940736 Support 'inaccuracy' on effect warhead
Purely cosmetic, allows to 'fake' slight inaccuracy without
affecting game balance on weapons like light machine guns.
2020-11-14 16:06:21 +01:00
abcdefg30
559b143265 Use FlyForward for strafing 2020-11-14 12:50:02 +00:00
abcdefg30
a66305e282 Fix the constructor order of FlyForward 2020-11-14 12:50:02 +00:00
abcdefg30
b3aa61ee8e Make fields readonly where possible 2020-11-14 12:50:02 +00:00
abcdefg30
80436a3195 Add a distance based constructor to FlyForward 2020-11-14 12:50:02 +00:00
abcdefg30
5127a6813d Rename FlyTimed to FlyForward 2020-11-14 12:50:02 +00:00
tovl
84eb3c54ef Expose targetline colors to yaml.
All targetlines can now be set to a custom color in yaml or set to be invisible.
All automated behaviours including scripted activities now have no visible target lines.
2020-11-14 12:04:19 +00:00
abcdefg30
ea3c7a3c34 Remove the Stances dictionary 2020-11-14 11:04:41 +00:00
abcdefg30
718cf37146 Misc code improvements 2020-11-14 11:04:41 +00:00
abcdefg30
10f645bf77 Replace usage of the Stances dict by a method call 2020-11-14 11:04:41 +00:00
abcdefg30
eda9966d27 Rename Stance to PlayerRelationship 2020-11-14 11:04:41 +00:00
abc013
672172d1f1 Add missing PlayNotification calls to SelectTarget. 2020-11-12 19:52:06 +00:00
abcdefg30
a366e37014 Fix angles in the Descriptions of TDGunboat 2020-11-10 20:32:08 +01:00
Trevor Nichols
d66e0bb22e Right click lobby spawns to disable or remove players. 2020-11-07 19:33:28 +01:00
teinarss
13581c030d Use in parameter for Target 2020-11-06 22:02:24 +01:00
teinarss
13a8b6bda2 Make Target readonly 2020-11-06 22:02:24 +01:00
Paul Chote
3aaaa95618 Apply range modifiers to Missile RangeLimit. 2020-11-05 19:15:13 +01:00
abcdefg30
e3929d7ded Fix reservable crashing when unreserving and attack moving 2020-11-05 13:22:22 +01:00
teinarss
2c62f747d9 Fix style in issue template config 2020-11-04 23:26:04 +01:00
teinarss
e08818cca1 Update issue template with links to FAQ 2020-11-04 23:26:04 +01:00
Matthias Mailänder
b4670345dd Don't crash when the bullet bounces outside of the map. 2020-11-04 10:59:55 +01:00
abcdefg30
0320dcdef9 Revise the RA map pool 2020-11-02 21:32:25 +00:00
Mustafa Alperen Seki
8b12cce250 Disable neutral Oil Derricks in TD and RA. 2020-11-02 21:27:37 +00:00
Mustafa Alperen Seki
6bb7ab0f97 Add GrantConditionOnCombatantOwner. 2020-11-02 21:27:37 +00:00
Matthias Mailänder
b32346d65f Add a range marker to the nuke targeter. 2020-11-02 10:13:29 +00:00
darkademic
8f9c212921 Make AI randomly select from map squares with above average attractiveness when using support powers. 2020-11-01 21:20:00 +00:00
Orb
df39d4fcc4 TD Map Pool 2020 Commit 2020-11-01 19:21:23 +00:00
RoosterDragon
4daa5193b6 Use tie breaks for sort order in WorldRenderer.GenerateRenderables 2020-11-01 19:00:20 +00:00
abc013
13596c1474 Add offset to Explodes. 2020-10-31 17:48:21 +01:00
abc013
bb71b59e18 Improve explosion determination. 2020-10-31 14:55:13 +01:00
abc013
f2797c711c Add InvalidBounceTerrain parameter to Projectile. 2020-10-31 14:55:13 +01:00
Paul Chote
6b6b1e56e6 Resolve random players and spawn points in server replays. 2020-10-31 14:31:44 +01:00
abcdefg30
7b75a78e38 Fix free-of-charge repairing still costing credits 2020-10-30 15:12:47 +01:00
Taryn Hill
2cea4b26e8 vscode debugging: build before launching 2020-10-30 13:58:05 +01:00
dnqbob
48f4a98c6a Fix AI air squad misbehaving in TS maps
Change Cpos to Mpos by Pchote
2020-10-30 09:20:01 +01:00
Paul Chote
9ddc9073c2 Revert "Determine stance for spectators based on shroud selection"
This reverts commit e459fde031.
2020-10-30 08:36:23 +01:00
abcdefg30
774f2e0852 Fix Production.cs not properly using INotifyCreated 2020-10-29 21:42:03 +00:00
abcdefg30
f5a963ac47 Production now uses nearest exit to rally point. 2020-10-29 21:42:03 +00:00
Vapre
38f1f1e5c2 Replace TraitContainer.AllEnumerator with ApplyToAll.
As proposed in the past in #13577.

Replace TraitContainer.All() that uses the custom AllEnumerator with
TraitContainer.ApplyToAllX() that takes an action as argument.

The AllEnumerator.Current function show up in profiling reports since it is
used each tick multiple times for multiple traits. The function is 'heavy'
because it creates TraitPair<T>'s temporary objects for each actor
trait combination.

In the past about 20k ITick trait pairs were present during an average
multi player game.

Using an Apply function that takes an action avoid the need to create
these temporary objects.

To be able to still use 'DoTimed' somewhat efficiently the measurement
was moved to inside the trait container method.

Results in a 25% performance improvement in accessing all traits of
a certain type.

Apply function could be used for other TraitContainer functions as well
for further improvements.

Test result for calling on a dummy trait on 20k actors a 1000 times:
  1315 ms traitcontainer.AllEnumerator (current)
   989 ms traitcontainer.Apply (this commit)
2020-10-29 21:21:12 +00:00
Mustafa Alperen Seki
4cdbf74256 Add Align: to SupportPowerTimerWidget. 2020-10-29 19:46:51 +01:00
Andrew Odintsov
bd0738c5c4 Determine stance for spectators based on shroud selection 2020-10-26 23:39:42 +00:00
Paul Chote
72c82cb080 Remove BuildingInfluence trait. 2020-10-26 16:51:12 +01:00
Paul Chote
b9dd59cd63 Remove BuildingInfluence from building adjacency check. 2020-10-26 16:51:12 +01:00
Paul Chote
79019b06ca Remove BuildingInfluence from Plug placement. 2020-10-26 16:51:12 +01:00
Paul Chote
90b25be1b6 Remove BuildingInfluence from ResourceLayer. 2020-10-26 16:51:12 +01:00
Paul Chote
e4faa6b0f0 Remove BuildingInfluence from Aircraft. 2020-10-26 16:51:12 +01:00
Paul Chote
1a3dfdc67f Remove BuildingInfluence from LaysTerrain. 2020-10-26 16:51:12 +01:00
Paul Chote
8d2156fb30 Remove BuildingInfluence from BuildableTerrainLayer. 2020-10-26 16:51:12 +01:00
Paul Chote
5e032edd28 Remove redundant BuildingInfluence checks.
Buildings are already excluded by the ActorMap checks.
2020-10-26 16:51:12 +01:00
Vapre
63d597e4ad ShroudRenderer UpdateShroud only when at least one cell is dirty.
UpdateShroud shows up in profile reports as one of the most
active methods (2.3% CPU time, main mono thread).

This commit introduces `anyCellDirty` to indicate that at lease one
of the cells was marked as dirty.

Avoiding the need to traverse all projected cells of the map
to find any dirty cell.

This reduces the number of shroud updates by at least 50% during a
test game. I assume this is related to renders occurring more
often than logic ticks(?).
2020-10-25 23:01:19 +01:00
Pavel Penev
4135045ca4 Added valid TerrainTypes to the Minelayer trait
Also added a configurable deploy cursor and fixed Minelayer target cell validation checks, which should make for a much better experiencing when dragging over an area with blocking terrain, shroud, fog, etc.
2020-10-24 12:20:15 +02:00
abcdefg30
538623c835 Add a lint check for player counts 2020-10-24 10:09:22 +02:00
abcdefg30
3674583053 Throw an exception at load when a map has more than 64 players 2020-10-24 10:09:22 +02:00
Paul Chote
daa8c74c37 Improve Replaceable logic:
- Remove BuildingInfluence checks
- Support multiple Replaceable/Replacement traits on the same actors
- Fix description typos
2020-10-22 22:15:43 +02:00
Mustafa Alperen Seki
8aeec24c9b Add DamageTypes to Demolition 2020-10-21 18:41:16 +02:00
RoosterDragon
54c4a05062 Classes derived from Stream override ReadByte.
The Stream.ReadByte method is implemented by allocating a 1 byte buffer and calling into Read(byte[], int, int). Override ReadByte in derived classes to avoid needing to allocate this small temp buffer.

Also, fix some bugs in the stream implementations. Remove Write capability from MergedStream that didn't make sense. Add guards into SegmentStream to ensure reads and writes belonged to the segment - otherwise a reader or writer could access regions of the base stream that were outside the intended segment.
2020-10-20 22:53:32 +02:00
RoosterDragon
466de89e17 PackageEntry.HashFilename avoids stream reads .
Operate directly on the array to avoid overhead of stream reads.
2020-10-20 22:53:32 +02:00
RoosterDragon
6eaf51d450 CursorManager avoids use of BitConverter.
Avoid allocating a small temp array via BitConverter.GetBytes, and instead use bitwise ops to isolate the components of the color.
2020-10-20 22:53:32 +02:00
RoosterDragon
7c8dc5d5f4 XccGlobalDatabase allocation improvements
- Use the count to size the capacity of the list.
- Use a char array as a buffer, so will can build each string directly rather than needing a ToArray call first.
2020-10-20 22:53:32 +02:00
RoosterDragon
4f34d3edb3 Improvements in MiniYaml allocation
- Clone method will use the node count to create the correct capacity.
- ResolveInherits will use the node count as the suggested initial capacity.
- FromStream will now stream lines, rather than reading the whole file into memory and then splitting into lines.
2020-10-20 22:53:32 +02:00
RoosterDragon
0efdbc762d Avoid ReadBytes calls in some StreamExts methods.
Read individual bytes to avoid allocating small temp arrays.
2020-10-20 22:53:32 +02:00
Matthias Mailänder
5e42c03afc Replace more \n characters with write lines. 2020-10-19 22:37:01 +01:00
Matthias Mailänder
58726160a9 Reduce the indention level to show the table of contents. 2020-10-19 22:37:01 +01:00
Matthias Mailänder
8cd9215756 Add an additional new line before the unordered list. 2020-10-19 22:37:01 +01:00
Orb
0e33640b14 Code Polish TD Commit 2020-10-19 13:33:25 +02:00
reaperrr
a1c8cbab0b Enable recoil anim on RA/TD Gun Turrets 2020-10-18 20:39:22 +02:00
reaperrr
50b484df56 Fix RA/TD defense turrets facing issues
By using WithSpriteTurret instead of
WithEmbeddedTurretSpriteBody.
2020-10-18 20:39:22 +02:00
reaperrr
99facd2797 Fix default facing of RA/TD Gun Turrets
Compare with make anim and original, 224 was
one facing too far.
2020-10-18 20:39:22 +02:00
Paul Chote
f79e1cacf0 Fix and document FMV scanline rendering. 2020-10-18 20:15:11 +02:00
Paul Chote
82069db724 Fix FMV aspect ratio. 2020-10-18 20:15:11 +02:00
Paul Chote
5a7dc385a3 Remove obsolete LocomotorInfo caching. 2020-10-18 18:19:56 +02:00
darkademic
49e7a33db0 Fixed WithRangeCircle when Visibility is set to Always. 2020-10-18 18:06:22 +02:00
Paul Chote
90b26681eb Remove trait queries from Actor ctor. 2020-10-18 18:00:17 +02:00
Matthias Mailänder
14fc0254c6 Make all range circles fully configurable. 2020-10-18 15:08:17 +01:00
Matthias Mailänder
214aa64ce3 Fix Analyzer warning: V3128 field is used before initialized 2020-10-18 14:53:35 +01:00
abcdefg30
a7bb217887 Make the calculation of DesiredLocalFacing more readable 2020-10-18 14:48:05 +01:00
abcdefg30
10cb8090ec Remove the second arrow on the preview of gdi08a 2020-10-18 14:33:52 +01:00
abcdefg30
1fdecb4e9d Fix briefing text and video of nod04a 2020-10-18 14:33:52 +01:00
abcdefg30
575596c9ad Fix map previews and order in TD 2020-10-18 14:33:52 +01:00
RoosterDragon
e11c8436bd Misc changes to reduce allocation:
- Avoid creating new strings in SpriteRenderer.Flush.
- ProductionQueue.CancelUnbuildableItems can exit early if the queue is empty. It can also use a set of names for quicker lookups.
- OpenGL.CheckGLError avoids a Enum.HasFlag call.
2020-10-17 23:48:48 +02:00
RoosterDragon
c23efea402 Comments to justify GC.Collect calls, compact LOH during load. 2020-10-17 23:48:48 +02:00
RoosterDragon
8d3cec5bea When a render method has nothing to render, eagerly return.
By eagerly returning an empty enumerable in these cases, this avoids allocating an enumerable for the whole render method if nothing will be drawn.
2020-10-17 23:48:48 +02:00
RoosterDragon
87389d3051 Reuse a list in FrozenActor.RefreshState 2020-10-17 23:48:48 +02:00
RoosterDragon
71e3ca4493 Sort renderables in-place in WorldRenderer.GenerateRenderables 2020-10-17 23:48:48 +02:00
RoosterDragon
2adee1e374 Use HasMovementType to avoid Enum.HasFlag allocations. 2020-10-17 23:48:48 +02:00
RoosterDragon
094ccf76b0 Prefer Min/MaxBy overloads to OrderBy().First() patterns 2020-10-17 23:48:48 +02:00
RoosterDragon
bb116034c7 Avoid or reduce LINQ allocations required in various areas. 2020-10-17 23:48:48 +02:00
Paul Chote
da53d5b776 Fix a divide by zero crash in Move. 2020-10-17 22:31:35 +02:00
abcdefg30
75fe0e524f Fix units not attack moving to waypoints after resupply/takeoff 2020-10-17 19:48:54 +01:00
Matthias Mailänder
0ded0355c1 Allow mod code to set rally point indicators. 2020-10-16 18:14:33 +01:00
Matthias Mailänder
4da14cee0a Disable UPnP on local games. 2020-10-16 18:14:33 +01:00
Orb
90c8e112e2 Stealth C17 Checkbox 2020-10-16 18:09:43 +01:00
Orb
d49bf81d95 TD Balance 2020 3 Commit 2020-10-16 17:52:41 +01:00
abcdefg30
abbe16b6ec Remove default parameters 2020-10-15 10:53:06 +02:00
abcdefg30
274bf06eae Fix evacuated civilians not staying at the GDI base 2020-10-15 10:53:06 +02:00
abcdefg30
dcf7b6b3f6 Add an alternative escape route to the south 2020-10-15 10:53:06 +02:00
abcdefg30
4173e40a9d Use actor names instead of searching for actors with a type 2020-10-15 10:53:06 +02:00
abcdefg30
1abd272862 Fix actor naming since those are not Nod soldiers 2020-10-15 10:53:06 +02:00
abcdefg30
946bf7b9fa Let civilians flee away from - not towards - the player in Nod04b 2020-10-15 10:53:06 +02:00
Matthias Mailänder
0d64fa549b Fix the command bar selecting dead units
and crashing while doing a trait lookup on them.
2020-10-14 19:58:24 +02:00
abcdefg30
8a7020b4ef Ignore the length requirement of sync orders we want to drop 2020-10-14 19:53:49 +02:00
abcdefg30
1bc19e788c Drop and log sync orders with mismatching length 2020-10-14 19:53:49 +02:00
abcdefg30
c17110dac5 Make OrderManager fields readonly where possible 2020-10-14 19:53:49 +02:00
abcdefg30
d07b34e67e Style fixups in ReplayConnection.cs 2020-10-14 19:53:49 +02:00
abcdefg30
accecee018 Fix savegames not saving sync packets correctly 2020-10-14 19:53:49 +02:00
abcdefg30
1861174d38 Add a Order.SyncHashOrderLength const 2020-10-14 19:53:49 +02:00
Curtis Shmyr
8d5ed65feb Remove effective owner check when choosing armament 2020-10-14 19:52:34 +02:00
Paul Chote
a375f0e58a Rewrite spawn point assignment logic. 2020-10-13 20:41:39 +02:00
RoosterDragon
b2b639434c ThreadedGraphicsContext improvements.
- VertexBuffer interface redefined to remove an IntPtr overload for SetData. This removes some unsafe code in TerrainSpriteLayer. This also allows the ThreadedVertexBuffer to use a buffer and post these calls, meaning the SetData call can now be non-blocking.
- ThreadedTexture SetData now checks the incoming array size. As the arrays sent here are usually large (megabytes) this allows us to avoid creating temp arrays in the LOH and skip Array.Copy calls on large arrays. This means the call is now blocking more often, but significantly reduces memory churn and GC Gen2 collections.
2020-10-13 15:54:53 +02:00
Curtis Shmyr
5eadd26f66 Set lobby bool display values to start uppercase 2020-10-12 22:05:35 +02:00
Curtis Shmyr
c0cbca26ea Use lobby option display values when clients join 2020-10-12 22:05:35 +02:00
RoosterDragon
8fb65fd9bf Use string pooling in MiniYaml to de-duplicate strings in memory.
These config files often contain many repeated strings which result in different string references in memory. By using a pool, we can detect when the strings are equal and reuse an existing reference as strings are immutable.

The FromLines will now use a pool to de-duplicate strings for a single call. By allowing a pool to be provided as a parameter, we can reuse even more strings. The MapCache defines such a pool so that strings are reused across all maps in the cache for even more savings.
2020-10-12 21:57:08 +02:00
RoosterDragon
9072d645fd Use TrimExcess to shrink lists used by MiniYaml after loading 2020-10-12 21:57:08 +02:00
Paul Chote
597b8b1caa Hide legacy GL support behind a feature flag. 2020-10-12 12:24:22 +02:00
Paul Chote
2c0d512727 Package and default to GLES via ANGLE on windows. 2020-10-12 12:24:22 +02:00
Paul Chote
87c5cc96ad Add an "Automatic" GL profile. 2020-10-12 12:24:22 +02:00
Paul Chote
fc844cfa6d Print the GL_RENDERER string to stdout on engine start. 2020-10-12 12:24:22 +02:00
Paul Chote
1ab1c30e39 Remove glGetTexImage/glBindFragDataLocation on GLES.
These functions are not available in GLES3.
2020-10-12 12:24:22 +02:00
reaperrr
f2a1a497c7 Fix Pillbox damage
These were overlooked during the RA target type
refactor.
2020-10-12 11:56:55 +02:00
Paul Chote
1ddbe50b3f Add inline node inclusion support to mod.yaml. 2020-10-11 01:42:59 +02:00
Paul Chote
dd7b8b24af Use tileset ID in sequences instead of the TileSet object. 2020-10-11 01:23:15 +02:00
abcdefg30
6dcb701d1d Fix a crash in AIUtils 2020-10-10 17:54:55 +02:00
reaperrr
f67b7ad837 Cache IResolveOrder traits on Actor
Avoids looking up all of them each time
an actor is given an order.
2020-10-10 13:59:40 +01:00
reaperrr
a4a409f39b Pass world directly to UnitOrders.ResolveOrder
Avoids order.Subject.World look-ups.

Also removes validOrders parameter,
we can get that directly from World now.
2020-10-10 13:59:40 +01:00
reaperrr
904a5f60d1 Cache IOrderValidator traits on World 2020-10-10 13:59:40 +01:00
dnqbob
ca8341d432 Avoid WaterCheck crash in base builder 2020-10-10 11:44:43 +02:00
Clément Bœsch
815bbc6ee8 Save disconnect frame in the GameInformation
This information is useful to infer a winner in case the winstate is
unknown.
2020-10-10 01:17:39 +02:00
Clément Bœsch
ca8870a5cf Server: handle wins/losses using Sync hash
Signed-off-by: Paul Chote <pchote@users.noreply.github.com>
2020-10-10 01:17:39 +02:00
Clément Bœsch
e5da58e2b4 Server: add basic replay recording
Signed-off-by: Paul Chote <pchote@users.noreply.github.com>
2020-10-10 01:17:39 +02:00
Paul Chote
dd18829def Traits: add ICreatePlayersInfo
Signed-off-by: Clément Bœsch <u@pkh.me>
2020-10-10 01:17:39 +02:00
Paul Chote
41814a881d Player: move player name resolve in a dedicated function
Signed-off-by: Paul Chote <pchote@users.noreply.github.com>
2020-10-10 01:17:39 +02:00
Clément Bœsch
d708f46d50 Orders: make SyncHash packet size check more accurate 2020-10-10 01:17:39 +02:00
Clément Bœsch
11f57b2b26 Protocol: add defeat state bitfields to Sync packets
Signed-off-by: Paul Chote <pchote@users.noreply.github.com>
2020-10-10 01:17:39 +02:00
Paul Chote
60df247416 Streamline SpawnOccupant management. 2020-10-09 12:19:19 +02:00
Trevor Nichols
6f32196f89 Support List<> for FieldSaver/FieldLoader 2020-10-07 22:04:10 +02:00
abcdefg30
d647aab7fe Fix d2k conyards granting an unconsumed "auto-concrete" condition 2020-10-06 23:25:12 +01:00
Mustafa Alperen Seki
be88c33399 Add a lobby option to disable Concrete in D2k. 2020-10-06 13:29:33 +02:00
Mustafa Alperen Seki
7372da150a Make LaysTerrain Conditional. 2020-10-06 13:29:33 +02:00
Mustafa Alperen Seki
3ec3eac160 Don't StartOnThreshold if the trait is disabled. 2020-10-06 13:29:33 +02:00
reaperrr
0990caefd7 Fix turreted defenses always realigning
This looks weird, doesn't match the originals
and makes map-defined custom facings useless.
2020-10-06 12:53:11 +02:00
Paul Chote
fc1786e243 Fix turrets immediately realigning on actor creation. 2020-10-05 15:13:48 +02:00
Matthias Mailänder
7e61199458 Fix a link in the Lua documentation. 2020-10-05 10:11:30 +02:00
Paul Chote
0672553a07 Lock Server.LobbyInfo to prevent races with callback threads. 2020-10-04 20:31:07 +02:00
reaperrr
8d1f72c104 Fix for SquadManagerBotModule
Aircraft and ships are immediately assigned a squad,
so adding them to `unitsHangingAroundTheBase` is bogus.
2020-10-04 00:31:35 +01:00
reaperrr
6337067032 Clean up property names + defaults of smudge smoke 2020-10-02 23:46:48 +02:00
reaperrr
7395a3ed2d Use cached world instead of query in SmudgeLayer 2020-10-02 23:46:48 +02:00
abcdefg30
e4e1878a4b Remove an used TerrainTemplateInfo constructor 2020-10-02 12:09:42 +02:00
abcdefg30
cc8908d7eb Make ProductionParadrop and ProductionAirdrop refund undelivered actors 2020-10-02 11:51:48 +02:00
abcdefg30
0dac4520ad Add a 'refundableValue' parameter to 'Produce' 2020-10-02 11:51:48 +02:00
Paul Chote
cc2e369475 Fix corrupted final frame in VQA playback. 2020-10-02 11:37:00 +02:00
tovl
92189e4b50 Let docking angle be determined by the host building. 2020-10-02 11:28:14 +02:00
abcdefg30
2e8c85ff0b Add support for querying the Passengers of an actor via Lua 2020-10-02 11:24:52 +02:00
abcdefg30
798aff1140 Fix ValidStances of RevealsMap not working 2020-10-02 11:17:03 +02:00
Niklas Holma
8596ce00cc Add a text field next to the map editor actor initializer sliders. 2020-09-28 15:46:19 +02:00
Matthias Mailänder
b5613acad8 Don't put absolute paths of developer machines in there. 2020-09-28 12:47:27 +02:00
Matthias Mailänder
7e992d44c8 Fix a crash when refineries share a cell. 2020-09-28 12:45:20 +02:00
Matthias Mailänder
7a7393b9f0 cachedWidth is never assigned. 2020-09-27 22:56:41 +01:00
Matthias Mailänder
f13e6fb76d Fix Analyzer warning V3008 variable is assigned values twice. 2020-09-27 22:56:41 +01:00
Mustafa Alperen Seki
3e83346915 Add DamageTypes to SoundOnDamageTransition. 2020-09-27 21:22:52 +01:00
Mustafa Alperen Seki
761d3583c4 Add DeathTypes to ShakeOnDeath. 2020-09-27 21:22:52 +01:00
abcdefg30
1a4b773fda Replace 'is' by 'as' and a null check in ScriptMemberWrapper 2020-09-27 22:17:20 +02:00
Matthias Mailänder
930f8ab207 Reset lobby ready state when options change server side. 2020-09-27 15:06:48 +02:00
Matthias Mailänder
2e438f1da9 Remove superfluous null checks. 2020-09-27 00:11:25 +01:00
abcdefg30
4627387ae3 Document the 'CancelActivity' field 2020-09-26 23:20:00 +01:00
abcdefg30
fd69bce609 Use CancelActivity instead of hackily using ResolveOrder 2020-09-26 23:20:00 +01:00
abcdefg30
391d9030cb Move update rules into their correct subfolder 2020-09-26 23:20:00 +01:00
abcdefg30
1ad9a4b65d Move shared color definitions to common metrics 2020-09-26 23:05:28 +01:00
abcdefg30
c6cc2405d3 Move shared sound definitions to common metrics 2020-09-26 23:05:28 +01:00
Matthias Mailänder
0e39cc7829 Tooltip is a conditional trait.
Fix Analyzer warning: V3146 Possible null dereference.
2020-09-26 22:59:39 +01:00
Matthias Mailänder
8d7e5f4663 Fix Analyzer warning: V3022 Expression is always true. 2020-09-26 22:59:39 +01:00
Paul Chote
e320bbfc87 Add disclaimer in readme. 2020-09-26 13:40:20 +02:00
Paul Chote
2e104046d4 Remove music downloads. 2020-09-26 13:40:20 +02:00
reaperrr
9cf38c1784 Increase Pillbox muzzle anim length
Length of muzzle anim now roughly matches the length
of the sound and impact animations.
2020-09-20 20:34:44 +02:00
Paul Chote
1aca6da1ea Hide "Furthest" battlefield camera option if the mod disables it. 2020-09-20 20:28:28 +02:00
abcdefg30
ce4d263b52 Fix AttackMove getting unarmed units stuck 2020-09-20 12:02:20 +02:00
abcdefg30
53c02eb2b9 Fix a crash in the Move activity 2020-09-18 20:12:42 +02:00
abcdefg30
82a2148300 Fix grouped orders not being validated correctly 2020-09-15 10:16:50 +02:00
Paul Chote
b72a58b917 Add missing ActorReferences to yaml dictionaries. 2020-09-15 09:27:50 +02:00
Paul Chote
7f7bce50dc Add dictionary support for ActorReference. 2020-09-15 09:27:50 +02:00
Paul Chote
290e214638 Remove unexpected RenderSprite.FactionImage fallback. 2020-09-12 17:52:46 +02:00
Paul Chote
ad4d6eaec9 Improve --check-missing-sprites error handling. 2020-09-12 17:52:46 +02:00
Paul Chote
cd9bf53e1a Use nameof() to reference image fields. 2020-09-12 17:52:46 +02:00
Paul Chote
ac8b312140 Generalize --check-sequence-sprites to --check-missing-sprites. 2020-09-12 17:52:46 +02:00
Paul Chote
3e849568ff Improve exception message for bogus tileset definitions. 2020-09-12 17:52:46 +02:00
Paul Chote
5d6961619d Fix WithIdleOverlayInfo Image override. 2020-09-12 17:52:46 +02:00
Paul Chote
94180f6a0a Add SequenceReference support for dictionaries. 2020-09-12 17:52:46 +02:00
Paul Chote
7803686aec Rewrite sequence linting / missing file handling.
- Distinguish between missing sequences and missing sprites
- Lint default sequences as well as maps
- Improved performance
- Correctly handle null images
2020-09-12 17:52:46 +02:00
Paul Chote
b8e60ca8ec Fix SequenceReference definitions. 2020-09-12 17:52:46 +02:00
Paul Chote
b985edbc29 Add ModData to ILintRulesPass.Run. 2020-09-12 17:52:46 +02:00
Paul Chote
ffdb3f86d7 Move mod-specific lint attributes to Mods.Common. 2020-09-12 17:52:46 +02:00
Paul Chote
c9b2a34561 Save SubCellInit as an integer. 2020-09-12 17:17:26 +02:00
Paul Chote
e5dc0309f1 Support OPENRA_DISPLAY_SCALE environment variable on Windows. 2020-09-12 00:37:20 +02:00
abcdefg30
57a3ad8ae2 Replace 'inner' with 'move' inside AttackMoveActivity 2020-09-12 00:30:33 +02:00
abcdefg30
ad3722e19f Add support for circumventing the target scan limit in AttackMove 2020-09-12 00:30:33 +02:00
abcdefg30
a12d127fd6 Rework the internals of AttackMoveActivity
Avoids creating and throwing away inner activities unnecessarily
2020-09-12 00:30:33 +02:00
abcdefg30
e80ebfae35 Use readonly where possible in AttackMoveActivity 2020-09-12 00:30:33 +02:00
abcdefg30
4669d6b378 Work around a sound issue when loading saves 2020-09-12 00:18:25 +02:00
abcdefg30
9f093da61e Unhardcode the leeway range of AttackFollow 2020-09-11 23:55:57 +02:00
abcdefg30
c0d31688c4 Exclude walls from the assets value 2020-09-11 23:44:30 +02:00
abcdefg30
86698e7822 Exclude C17, A10 and carryall.reinforce from the assets value 2020-09-11 23:44:30 +02:00
abcdefg30
3fc5859f08 Add 'AddToAssetsValue' to 'UpdatesPlayerStatistics' 2020-09-11 23:44:30 +02:00
tovl
f9bb663f6b Allow thieves to capture landed aircraft in RA mod. 2020-09-10 18:18:09 +02:00
tovl
5e8121bd0b Properly cancel EnterActor when target capturable trait is disabled. 2020-09-10 18:18:09 +02:00
Paul Chote
9cd6df2929 Replace DecorationPosition with mod-defined string ids. 2020-09-09 23:16:05 +02:00
Matthias Mailänder
b16cbeacb6 Sort contents before merging to unify UIDs across filesystems. 2020-09-07 17:25:24 +02:00
Matthias Mailänder
4d46464bc6 Fix an invalid target crash
target.CenterPosition is referenced in warhead orientation later
2020-09-06 12:21:15 +01:00
Matthias Mailänder
7746dc55f0 Remove the table of content
which is auto-generated by mkdocs.
2020-09-06 11:44:23 +01:00
Matthias Mailänder
5d9e8b56c5 Use fewer hard-coded HTML tags to improve mkdocs rendering. 2020-09-06 11:44:23 +01:00
Matthias Mailänder
d1c06365a8 Move automatic API documentation to docs.openra.net 2020-09-06 11:44:23 +01:00
Matthias Mailänder
b56ddc1a08 Check global scripts for Lua errors. 2020-09-05 21:13:47 +01:00
Orb
ae8c8e781f TD Balance Summer 2020 2 2020-09-05 21:02:59 +01:00
reaperrr
1344b1f2e3 Remove system order checks from PlayerStatistics
ResolveOrder for actors isn't even used
for these.
2020-09-05 17:22:04 +01:00
reaperrr
36df25dcb4 GivesExperience performance optimization
Move some look-ups to creation to reduce contribution
to actor death cost.
2020-09-05 17:16:00 +01:00
reaperrr
84246d287d Merge two ifs into one in SpawnActorOnDeath 2020-09-05 17:16:00 +01:00
reaperrr
6d0fbfa21f Explodes performance optimization
Cache armaments on creation, avoid LINQ.

Also merge and put first the DamageThreshold == 0
check in Damaged, because the common default IS 0,
so most of the time the IsTraitDisabled and
IsInWorld checks are redundant.
2020-09-05 17:16:00 +01:00
abcdefg30
034c6824de Fix MiG missiles damaging airborne actors 2020-09-05 18:06:30 +02:00
reaperrr
c8afa4a2a8 Remove defenderStats look-up from UpdatePlayerStatistics
playerStats is updated on owner change,
so it should always be identical to the removed defenderStats.
2020-09-05 11:12:38 +02:00
abcdefg30
1a77f7320b Fix a crash when updating the DiscordPresence party size 2020-09-05 10:36:35 +02:00
abcdefg30
183ece1360 Remove the unused SetPlayers method 2020-09-05 10:36:35 +02:00
abcdefg30
035cc3da99 Turn DiscordService's 'GetService' into property 2020-09-05 10:36:35 +02:00
ABrandau
c01c39954a Update Harpy Rotor 2020-09-01 18:57:43 +02:00
Matthias Mailänder
c48eb572e3 Remove MuzzleSplitFacings and expose MuzzleSequence to testing. 2020-09-01 18:53:43 +02:00
Paul Chote
b03ab1212f Remove install-core target. 2020-09-01 18:48:54 +02:00
Paul Chote
8a9b5e7e01 Split a separate "compat" macOS package that uses the system mono. 2020-09-01 18:48:54 +02:00
Paul Chote
9b90e4f25a Remove Coverity references. 2020-09-01 18:48:54 +02:00
Paul Chote
8a4401bdcb Fix Appveyor GeoIP download. 2020-09-01 18:48:54 +02:00
Paul Chote
d52e90cf23 Improve .travis.yml compatibility for non-OpenRA deploys. 2020-09-01 18:48:54 +02:00
Paul Chote
14ef0a7740 Remove markdown/html pages from windows install. 2020-09-01 18:48:54 +02:00
Paul Chote
c1f79b348a Generate platform-specific artwork from common source files. 2020-09-01 18:48:54 +02:00
Paul Chote
62166a50d9 Move itch upload script. 2020-09-01 18:48:54 +02:00
Brent Gardner
283b330403 Workaround for GLES 2.0 hardware 2020-09-01 18:00:51 +02:00
teinarss
2cf6b74295 Refactoring on GetEventBounds in Widget 2020-09-01 17:56:12 +02:00
abcdefg30
1a9f707d18 Remove the last reference to DedicatedLoop 2020-08-30 18:12:48 +02:00
Aigamo
06a1c88e86 Replace 0x7FFFFFFF with int.MaxValue 2020-08-29 12:37:20 +01:00
ycanardeau
f358b566b1 Replace NetFrameNumber >= 1 with GameStarted 2020-08-29 12:37:20 +01:00
reaperrr
15fc27d142 Use cached selected in SelectionDecorationsBase 2020-08-28 12:24:07 +02:00
reaperrr
ad20597d74 Cache hue picker sprite in HueSliderWidget 2020-08-27 21:17:37 +02:00
reaperrr
6d409a7c97 Cache indicator sprite in ResourceBarWidget at initialization 2020-08-27 21:17:37 +02:00
reaperrr
36d5ae5421 Cache SupportPowersWidget offsets at initialization
As well as overlay font.
2020-08-27 21:17:37 +02:00
tovl
db9744ea7f Let TS aircraft turn slower when circling. 2020-08-27 21:15:38 +02:00
tovl
5e62fe86fc Add IdleSpeed to aircraft trait. 2020-08-27 21:15:38 +02:00
Paul Chote
6cfa27c33b Replace per-color font caches with tinted rendering. 2020-08-24 18:38:08 +02:00
Taryn Hill
a405969199 docs: link to docs.openra.net instead of wiki.openra.net in readme for generated trait docs 2020-08-23 11:20:02 +02:00
Paul Praet
9a6f3b4c05 Reset Ready status of players in Lobby when options change
Addresses #11274
2020-08-23 00:05:55 +03:00
Matthias Mailänder
7be059a79b Download our cached version after they blocked Travis CI... 2020-08-22 13:06:08 +02:00
reaperrr
29b55de042 Cache rectangles and font in ProductionTabsWidget 2020-08-21 18:06:18 +02:00
reaperrr
235fb19aa8 Cache overlay traits in ProductionPaletteWidget
Instead of looking this up every Draw tick,
cache and update it only when a non-null new
CurrentQueue is set (as the overlays can only change
at that time).
2020-08-21 18:06:18 +02:00
reaperrr
c0f54fa4fc Cache offsets in ProductionPaletteWidget
At least those that never change.
2020-08-21 18:06:18 +02:00
reaperrr
cdc216aca0 Fix airborne husk target types
Doesn't really make a difference, since it only matters
for effect warheads and those already could target both
air and ground actors, but GroundActor was still wrong.
2020-08-20 20:46:58 +02:00
reaperrr
4505053618 Simplify CreateEffectWarhead code
Simplified and streamlined code,
based on past feedback and suggestions.

Note: The new methods will move to
Warhead later, once they're used by more
than one warhead.
2020-08-20 20:46:58 +02:00
abcdefg30
e0d53126d6 Remove the Light Tank husk 2020-08-20 19:17:39 +02:00
abcdefg30
12ff1dd14c Add RAGL balance changes 2020-08-20 19:17:39 +02:00
abcdefg30
50db3152f6 Fix the windows uninstaller name 2020-08-20 17:33:48 +02:00
teinarss
9c4fd0e3d3 Use Null-Propagation Operator 2020-08-19 18:11:07 +01: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
teinarss
d52e4793fe Refactor classes to structs 2020-08-19 11:54:29 +02:00
teinarss
544ac6cb33 Fix crash after entering manage content 2020-08-19 11:40:43 +02:00
Paul Chote
06fbc1a6cf Hide TraitInfo.InstanceName from FieldLoader. 2020-08-17 20:13:32 +02:00
abcdefg30
edab10e6a6 Make the Phase Transport uncloak during repair by mechanics 2020-08-16 21:01:16 +02:00
abcdefg30
dd99fc93e4 Uncloak during resupply when "UncloakOn: Dock" is defined 2020-08-16 21:01:16 +02:00
abcdefg30
dbe824d4e5 Correct "offseted" to "offset" 2020-08-16 15:02:56 +02:00
Paul Chote
6e73d7f5c2 Tidy MapEditorLogic ctor. 2020-08-16 14:17:45 +02:00
Paul Chote
960056d300 Fix mod switcher icon handling. 2020-08-16 14:17:45 +02:00
Paul Chote
3efac3287e Fix Session.Deserialize error handling. 2020-08-16 14:17:45 +02:00
Paul Chote
c4b4a8c8a5 Fix incorrect ramp fill in Map.Resize. 2020-08-16 14:17:45 +02:00
Paul Chote
b833f033bf Remove redundant check from LabelWithHighlightWidget. 2020-08-16 14:17:45 +02:00
Paul Chote
ad75e2be89 Remove redundant check from SupportPowerInstance. 2020-08-16 14:17:45 +02:00
Orb
7ee4fbeb0d New Money Settings 2020-08-15 21:02:01 +01:00
Paul Chote
9886f0ca9a Fix Harvester crash when multiple resource renderers are used. 2020-08-15 18:43:40 +02:00
Paul Chote
46cf56d6ff Remove editor-specific resource rendering.
Mods must manually move their *ResourceRenderer definitions from
World onto BaseWorld to restore resource rendering in the editor.
2020-08-15 18:43:40 +02:00
Matthias Mailänder
e7af295b5e Allow news per mod. 2020-08-15 16:21:21 +01:00
Matthias Mailänder
9d179d9a1a Initialize the font only once and make it configurable. 2020-08-15 16:13:21 +01:00
Matthias Mailänder
15010f9567 Fix production palette ignoring yaml font overrides. 2020-08-15 16:13:21 +01:00
Oliver Brakmann
a7f4f6c1cf Use LeaveMapAtClosestEdge for scripted MiGs on Intervention 2020-08-15 13:38:57 +01:00
Oliver Brakmann
3eeb677f14 Add LeaveMapAtClosestEdge idle behaviour for Aircraft 2020-08-15 13:38:57 +01:00
Paul Chote
ef69a3de66 Use nameof() in PaletteReference. 2020-08-15 13:41:45 +02:00
abcdefg30
0aa5e07252 Send the 'minefieldStart' along with a 'PlaceMinefield' order 2020-08-15 11:34:00 +01:00
abcdefg30
07d58337f1 Let order generators account for selection changes 2020-08-15 11:34:00 +01:00
abcdefg30
b5e3f25418 Fix CashTrickler crashing without IOccupiesSpace 2020-08-15 11:21:39 +01:00
teinarss
19b02875c7 Use Tuple syntax 2020-08-15 10:37:10 +01:00
Taryn Hill
8a74f6ea18 change whitespace-only lines to empty lines in Lua scripts 2020-08-14 15:08:14 +02:00
abcdefg30
a847f3eafa Fix actors not yet in the world improperly updating power state 2020-08-14 11:46:38 +02:00
Curtis Shmyr
a751f074e7 Added actor parameter to Lua UnloadPassenger 2020-08-10 10:38:35 +02:00
Paul Chote
75cb5c2166 Convert turret facings to WAngle relative to the body. 2020-08-09 19:43:53 +02:00
Paul Chote
70a86bed7a Optimize WRot negation.
The conjugate of a quaternion just negates the x/y/z components, so
there is no need to recalculate from scratch and throw away precision
by forcing a quat->euler->quat round trip.
2020-08-09 19:43:53 +02:00
dnqbob
f67f8ed05e WithLandingCraftAnimation can stop on all movement 2020-08-09 13:22:56 +02:00
Mustafa Alperen Seki
1ae53220d6 Add CurrentMuzzleFacing to FireClusterWarhead. 2020-08-09 13:18:39 +02:00
Matthias Mailänder
c546cb552e Make the fonts configurable. 2020-08-09 13:14:32 +02:00
Matthias Mailänder
10f8836d7b Fix a null reference exception. 2020-08-09 13:14:32 +02:00
dnqbob
7ecd4124ce Make "RepairableNear" public, helpful for modder 2020-08-08 13:20:39 +02:00
abcdefg30
54cd77be8e Add Tiberium near the transformable tree in cnc64gdi01 2020-08-05 11:45:11 +02:00
Mustafa Alperen Seki
43388cb7fc Don't check HasAdequateRefineryCount if no RefineryTypes defined. 2020-08-05 11:29:22 +02:00
Mustafa Alperen Seki
4cc5104fde Unhardcode AI's MinimumRefineryCount numbers. 2020-08-05 11:29:22 +02:00
Curtis Shmyr
d519cabae3 Add actor experience to the Lua API 2020-08-03 18:35:50 +02:00
abcdefg30
9852e29835 Fix subs targeting naval structures by default 2020-08-03 17:50:36 +02:00
Matthias Mailänder
3a427c3630 Add a sequence reference attribute to label fallbacks. 2020-08-02 22:15:13 +02:00
Matthias Mailänder
336656e8f7 Remove superflous warning as null is a valid value here. 2020-08-02 22:15:13 +02:00
Matthias Mailänder
06ad9666e8 Replace burns with more modular and testable trait combinations. 2020-08-02 22:15:13 +02:00
Matthias Mailänder
728e0c6600 If it defaults to the actor type, then it shouldn't be required. 2020-08-02 22:15:13 +02:00
Matthias Mailänder
657e690bdd Add an image override. 2020-08-02 22:15:13 +02:00
Matthias Mailänder
2d36d0a659 Reflect in naming that negative SelfHealing is a thing. 2020-08-02 22:15:13 +02:00
Matthias Mailänder
c42fd5d2e2 Add IsDecoration as a configurable option. 2020-08-02 22:15:13 +02:00
Trevor Nichols
10bf97eff6 Reduce severity of editorconfig and prefer multiline braces 2020-08-02 14:37:39 +02:00
Matthias Mailänder
ea9992247d Reorder string placeholders. 2020-08-02 12:00:53 +02:00
Matthias Mailänder
b90fecff76 Remove the prefixed method name. 2020-08-02 12:00:53 +02:00
Matthias Mailänder
a4fc9fea3b Unify AIUtils.BotDebug prefixes. 2020-08-02 12:00:53 +02:00
abcdefg30
b7c7eff2a2 Fix the position of the red cross in RA 2020-08-02 11:56:15 +02:00
Stuart McHattie
8c10dc406a Prevent Mac's Cmd+Q from exiting the game
This operation can be devastating if you were trying to assign a control group using Cmd + 1 but accidentally catch the Q key during gameplay.
2020-07-28 23:12:39 +01:00
Stuart McHattie
05c3861426 Add myself to the authors list 2020-07-28 23:12:39 +01:00
Matthias Mailänder
1ef5db8896 Document the built in hitshape types. 2020-07-28 23:42:26 +02:00
Andre Mohren
006a87692a Removed unused imports. 2020-07-28 18:22:51 +02:00
Oliver Brakmann
e019b70420 Fix actor previews for actors with types written in capital letters 2020-07-26 10:57:18 +02:00
Smittytron
70ec5b0344 Add flash to mission paranukes 2020-07-26 10:52:06 +02:00
abcdefg30
5401ace540 Add a death animation to Visceroids 2020-07-24 18:13:11 +02:00
abcdefg30
ab9081c852 Force enable Visceroids in the default rules 2020-07-24 18:13:11 +02:00
Matthias Mailänder
3a9b35980c Revert "Reduce order latency locally"
This reverts commit 20e5219cf4.
2020-07-21 21:58:31 +02:00
Matthias Mailänder
150439d215 Revert "Change where we send orders"
This reverts commit 616d9421d6.
2020-07-21 21:58:31 +02:00
Matthias Mailänder
b01a534a98 Revert "Refactor the OrderManager and world tick loop, improves input latency"
This reverts commit f642cead44.
2020-07-21 21:58:31 +02:00
Trevor Nichols
758b0b08d0 Add to .editorconfig additional naming rules to match this codebase's style 2020-07-21 16:15:30 +02:00
teinarss
f87ba1d8a4 Update SP maps with transformable trees 2020-07-20 14:05:52 +02:00
teinarss
67fa7bdcc9 Add TransformsNearResources 2020-07-20 14:05:52 +02:00
Matthias Mailänder
0b03aca104 Fix linter for player palettes. 2020-07-19 10:44:55 +02:00
Paul Chote
3bf61f1043 Fix incorrect rotation calculation in ThrowsShrapnel. 2020-07-19 10:41:05 +02:00
Paul Chote
ac975f4139 Convert yaml-exposed facings to WAngle. 2020-07-19 10:41:05 +02:00
abcdefg30
6d12301f88 Fix the aircraft facing slider in the editor 2020-07-18 01:45:00 +02:00
Andre Mohren
914950c4a5 When zooming using the mousewheel, zoom towards the pointer location. 2020-07-17 20:12:10 +02:00
Paul Chote
b417b267dd Store quaternion components directly.
This avoids precision loss when combining rotations.
The equivalent Euler angles are calculated for external use
but the quaternion components are preferred for any further
internal calculations.
2020-07-17 15:02:32 +02:00
Paul Chote
aae497eff1 Pass pre-combined rotations into the rendering code. 2020-07-17 15:02:32 +02:00
Paul Chote
3c9db4c2ac Add WRot.Rotate to allow rotations to be combined. 2020-07-17 15:02:32 +02:00
Paul Chote
8c3793e7ea Rename WRot.Zero to WRot.None. 2020-07-17 15:02:32 +02:00
Oliver Brakmann
60a7f53491 Fix target lines appearing not long enough on screen
Also changes the Delay attribute from ticks to milliseconds.
2020-07-16 00:28:05 +02:00
Mustafa Alperen Seki
04bfd62f2f Fix FireClusterWarhead playing wrong Report sound. 2020-07-15 23:55:01 +02:00
Paul Chote
117b8b3653 Change tiberium colors to match the original game. 2020-07-13 14:02:02 +02:00
Paul Chote
70cb0d2924 Improve TS map importer and reimport classic maps. 2020-07-13 14:02:02 +02:00
Paul Chote
c5ea496c45 Add terrain lighting definitions to TS. 2020-07-13 14:02:02 +02:00
Paul Chote
01e955ca37 Implement TS-style terrain lighting. 2020-07-13 14:02:02 +02:00
Paul Chote
fdb66c769c Change terrain layers to track sequences instead of sprites. 2020-07-13 14:02:02 +02:00
Paul Chote
38b3fbbdbe Fix [RequireExplicitImplementation] failures on event properties. 2020-07-13 14:02:02 +02:00
Paul Chote
3bc5d2d02c Add INotifyEditorPlacementInfo interface.
This allows TraitInfos to act when the actor preview is placed
in the editor, returning arbitrary data which the editor stores
and gives back if the preview is removed.
2020-07-13 14:02:02 +02:00
Paul Chote
ac7eda8ca2 Add support for rendering tinted artwork. 2020-07-13 14:02:02 +02:00
reaperrr
baf58f53b3 Adapt SpreadDamageWH to ImpactOrientation
The ImpactOrientation needs to be computed from
point of impact to target if the target wasn't hit directly.

Also adapted warhead code to use WarheadArgs consistently,
as well as pass HitShape instead of just HitShapeInfo
(both needed for future and/or downstream features).
2020-07-12 19:52:55 +02:00
reaperrr
8513a83331 Add ImpactOrientation to WarheadArgs
Allows to pass the horizontal facing/yaw
and vertical angle/pitch of the carrier
projectile to warheads for further use.

Add ImpactPosition to WarheadArgs

InflictDamage doesn't pass the impact pos
directly, and the very point of WarheadArgs
is to avoid adding more and more arguments
to the warhead methods.
2020-07-12 19:52:55 +02:00
Orb
bf7fecff10 TD Balance Summer 2020 2020-07-12 19:31:59 +02:00
Oliver Brakmann
6e1f2f636c Increase GameOverDelay for missions from 1.5 to 3 secs 2020-07-12 15:06:55 +02:00
Oliver Brakmann
8b3db6f3d6 Allow granting a condition to Carryalls currently carrying units 2020-07-12 14:36:01 +02:00
Matthias Mailänder
39d0abe982 Remove bit rot. 2020-07-12 14:32:32 +02:00
teinarss
c2026dc254 Add Discord Rich Presence 2020-07-12 14:27:59 +02:00
Matthias Mailänder
cae6c28754 Change the prefix in front of replays. 2020-07-12 13:43:05 +02:00
Sly
3b99924799 Corrected spelling error 2020-07-10 14:48:22 +02:00
Sly
b2b548b103 Corrected spelling error 2020-07-10 14:46:40 +02:00
Pavel Penev
c2e3806a77 Added a FlashPaletteEffect to RA nukes and removed from D2k 2020-07-10 13:22:54 +02:00
Pavel Penev
25500a7dda Updated a stale copyright header 2020-07-10 13:22:54 +02:00
Pavel Penev
8c394a4cb5 Created FlashPaletteEffectWarhead and removed the hardcoded flashing from NukeLaunch
Not actually hardcoded, but there was a hard dependency in NukeLaunch on FlashPaletteEffect and explicit flashing checks.
2020-07-10 13:22:54 +02:00
Pavel Penev
2e7bd4de4b Fixed a bug with the NukeLaunch's Player palette 2020-07-10 13:22:54 +02:00
Matthias Mailänder
7261322e41 Add support for Visual Studio Code. 2020-07-10 12:33:57 +03:00
abcdefg30
cada396733 Fix a crash when previewing an actor using WithCrateBody in the editor 2020-07-09 20:31:03 +02:00
Chris
9f9709f058 Add python3 support to launch-game.sh 2020-07-09 20:21:48 +02:00
abcdefg30
26fc65209d Fix the bogus Actors iterator 2020-07-09 18:11:53 +02:00
Adam Mitchell
f642cead44 Refactor the OrderManager and world tick loop, improves input latency 2020-07-09 13:48:55 +02:00
Adam Mitchell
616d9421d6 Change where we send orders 2020-07-09 13:48:55 +02:00
Adam Mitchell
20e5219cf4 Reduce order latency locally 2020-07-09 13:48:55 +02:00
Vapre
9edda21b06 Avoid three time array lookup in TraitContainer.Actors. 2020-07-09 12:16:04 +02:00
Paul Chote
6d6822ca15 Update map inits in RA/TD/D2k. 2020-07-08 20:38:30 +02:00
Paul Chote
a2269e7ee7 Convert (Dynamic)FacingInit, (Dynamic)TurretFacingInit to WAngle. 2020-07-08 20:38:30 +02:00
Paul Chote
e8f443f4a9 Remove TurretFacingsInit and PlugsInit. 2020-07-08 20:38:30 +02:00
Ivaylo Draganov
67f8452178 Add button to override duplicate hotkey bindings 2020-07-08 19:59:07 +02:00
Ivaylo Draganov
47f6e407d9 Cancel hotkey rebind on Esc key press 2020-07-08 19:59:07 +02:00
abcdefg30
889e2152a4 Cache ProjectedCellBounds during load time 2020-07-08 18:37:50 +02:00
abcdefg30
173aae1f81 Directly check the map bounds instead of converting to PPos 2020-07-08 18:37:50 +02:00
abcdefg30
baed80983b Fix the launch-game.sh newlines not displaying in the console 2020-07-07 22:30:55 +02:00
abcdefg30
b00423dc76 Correct the crash dialog title 2020-07-07 22:30:55 +02:00
abcdefg30
376ed15079 Correct the support folder location in the crash dialog 2020-07-07 22:30:55 +02:00
abcdefg30
a6d8d6cd8e Use tabs as indentation consistently 2020-07-07 22:30:55 +02:00
Paul Chote
b3ee8b447e Reduce duplication between Map and PlayerRadarTerrain. 2020-07-07 22:12:22 +02:00
Paul Chote
5f588561b6 Rewrite TS minimap rendering:
* Rename LeftColor and RightColor to MinColor and MaxColor
  These are mapped from LowRadarColor and HighRadarColor in
  the original inis, and appear to be used to set the bounding
  values for selecting a random colour, NOT for left/right
  pixels (which caused noticeably wrong banding).

* Adjust brightness based on terrain height.
  MinHeightColorBrightness and MaxHeightColorBrightness
  were chosen by trial/error to match the original
  map preview rendering.
2020-07-07 22:12:22 +02:00
Smittytron
83c53e17e0 Allow repairable tech buildings in campaign-rules 2020-07-07 19:47:10 +02:00
Smittytron
c028488894 Add Soviet 09 2020-07-07 19:47:10 +02:00
abcdefg30
b066005f7e Fix AttackBomber marking aircraft that are not in the world as in range 2020-07-06 22:30:41 +02:00
abcdefg30
87e33a75c6 Fix a crash when calling an airstrike at the map edge 2020-07-06 22:30:41 +02:00
Matthias Mailänder
4961b0943b Add a text base spy disguise decoration. 2020-07-05 21:43:12 +02:00
Smittytron
eda1e9c266 Add Counterstrike mission Siberian Conflict 1: Fresh Tracks 2020-07-05 21:33:56 +02:00
abcdefg30
bc7bf174d8 Don't tick the announcement timer when not in low power
When entering low power it will be reset to 0 again anyway
2020-07-05 20:37:17 +02:00
abcdefg30
2e06d5790b Update the PowerState only when power is added or removed 2020-07-05 20:37:17 +02:00
abcdefg30
ab8790e8f1 Style/Readability changes 2020-07-05 20:37:17 +02:00
abcdefg30
7d630e63e7 Let Railgun implement ISync 2020-07-05 18:10:14 +02:00
Smittytron
77899191f3 Add Aftermath mission Situation Critical 2020-07-05 17:21:43 +02:00
Smittytron
6871873e93 Add Counterstrike mission Fall of Greece 1: Personal War 2020-07-05 15:59:18 +02:00
Smittytron
fc4bd131cd Add Aftermath mission: Production Disruption 2020-07-05 15:58:10 +02:00
Pavel Penev
d866286f82 Added back the DescAttributes on projectiles' Inaccuracy fields 2020-07-05 13:04:18 +02:00
Pavel Penev
76dfda164e Moved projectile inaccuracy calculations to Common.Util
Also moved the InaccuracyType enum there. This also quietly adds the RangeModifiers to the calculations for all projectiles, while they were only used on Bullet so far, which seemed very wrong.
2020-07-05 13:04:18 +02:00
Pavel Penev
134d47e48c Added InaccuracyType.Absolute to projectiles 2020-07-05 13:04:18 +02:00
Pavel Penev
a2dbd5e013 Changed weapons in D2k to use the new PerCellIncrement inaccuracy
Also adjusted the inaccuracy values. This should bring inaccuracy in D2k pretty much in line with the original game, with the potential liberty of decreased inaccuracy for the Deviator tank.
2020-07-05 13:04:18 +02:00
Pavel Penev
c27412c83a Added InaccuracyType enum and updated projectiles accordingly
Also updated the inaccuracy calculations to account for the new inaccuracy type - either based on distance up to a max defined inaccuracy at max range (old style) or based on distance with each cell (1024 range) increasing the inaccuracy with a set step.
2020-07-05 13:04:18 +02:00
Pavel Penev
4143aba595 Added syncing to some Railgun projectile fields 2020-07-05 13:04:18 +02:00
Ivaylo Draganov
39ccac4022 Refactor command bar buttons to use unified widget state names 2020-07-05 11:50:45 +01:00
Ivaylo Draganov
7943f4deb6 Unify widget state image suffixes (disabled, pressed, hover, focus)
- Add a property for arrows image collection (in drop-downs, scrollbars
and production tabs)
- Add a property for separators image collection (in drop-downs)
- Add hover and disable states to the drop-down separator
- Unify button, textfield and checkbox state suffixes
2020-07-05 11:50:45 +01:00
Curtis Shmyr
2dda2d7689 Added lua IsCloaked actor property 2020-07-04 21:06:52 +02:00
Matthias Mailänder
b8f2a14ea0 Automatically upload release to itch.io using butler. 2020-07-04 20:59:10 +02:00
Oliver Brakmann
595809f090 Fix Carryalls waiting for actors on transit-only tiles 2020-07-04 16:47:17 +02:00
abcdefg30
477db9cd4a Fix travis builds not failing when errors occur during static checking 2020-07-03 21:29:25 +01:00
teinarss
67ff292d62 Refactor WorldRenderer to use less allocations 2020-07-03 17:41:41 +02:00
darkademic
ae882b85a9 Make AI randomly scan map for targets for its air squads. 2020-07-02 23:05:49 +02:00
abcdefg30
5e92915095 Fix the cargo unload regression with scripted transports
The activity is not interruptible, so we'd continue after the Move regardless
2020-07-02 21:14:35 +02:00
Smittytron
95809db03c Move Harvester overrides to campaign-rules.yaml 2020-07-02 19:29:37 +02:00
Smittytron
6d5a5121bc Remove worthless function from Allies08 2020-07-02 19:29:37 +02:00
Smittytron
86992751c7 Update Soviet-08a 2020-07-02 19:29:37 +02:00
Smittytron
2eba8b6c37 Add Soviet-08b 2020-07-02 19:29:37 +02:00
Smittytron
e1523e939d Utilize Panic function with added OnDamaged trigger 2020-06-28 17:30:24 +02:00
Smittytron
15a92f443d Replace paraprop power with scripted drops in Soviet01 2020-06-28 17:30:24 +02:00
KorGgenT
b57c68e392 Fix units walk over tunnels and under bridges. 2020-06-28 17:21:54 +02:00
Matthias Mailänder
e95fcb6bc0 Don't let blossom tree poof all at the same time. 2020-06-28 13:43:33 +02:00
Matthias Mailänder
6581fcb6a7 Add a random interval to idle animations. 2020-06-28 13:43:33 +02:00
tovl
6551337bd8 Make TS walkers AlwaysTurnInPlace. 2020-06-28 00:11:26 +02:00
tovl
137df52fdd Make infantry AlwaysTurnInPlace. 2020-06-28 00:11:26 +02:00
tovl
b79aa7eb6a Add AlwaysTurnInPlace option to Mobile. 2020-06-28 00:11:26 +02:00
Alfred Lang
1c8c49dc8e Fix do allow AI do place plugbuildings like RBG Tower on GDI Component Tower 2020-06-27 10:35:06 +02:00
Andrew Odintsov
f0c808d2fc Replace FloodFill with IEditorAction implementation 2020-06-24 19:08:54 +02:00
Curtis Shmyr
26d9ae88df Replace TargetAndAttack with a global aircraft attack function 2020-06-23 20:09:42 +02:00
Curtis Shmyr
3c7f119bb1 Add a damage parameter to Lua OnDamage callback 2020-06-23 19:58:31 +02:00
Ian T. Jacobsen
fea35923f0 Minefield now shows red when out of map bounds and Minelayer now does not get stuck at edge of map
Made it impossible to detect enemy units again

Fix whitespace
2020-06-21 20:16:57 +02:00
Paul Chote
9627776318 Add pitch and roll to TS aircraft. 2020-06-21 18:05:40 +02:00
Paul Chote
6dcde3af72 Allow voxel-based aircraft to pitch and roll. 2020-06-21 18:05:40 +02:00
Paul Chote
43717a89b5 Add Orientation getter to IFacing. 2020-06-21 18:05:40 +02:00
Matthias Mailänder
c7ba359688 Add drop pod reinforcements. 2020-06-21 17:28:24 +02:00
Matthias Mailänder
dc3dbf6d85 Remove uneccessary parentheses. 2020-06-21 17:28:24 +02:00
Smittytron
71664c85ff Fix TargetTypes regression in SnipeWeapon 2020-06-21 12:34:43 +02:00
Nikita Pozdeev
cb41be113a Fix map editor radar ignoring color from terrain 2020-06-20 14:37:23 +02:00
Matthias Mailänder
4fe7daa85e Fix juggernaut preview being disabled by default. 2020-06-19 21:30:34 +02:00
abcdefg30
f75afc6ee4 Fix a compilation error in WithInfantryBody.cs 2020-06-19 20:01:04 +02:00
abcdefg30
67fd71ab92 Add a ProjectedCellLayer and use it in Shroud.cs 2020-06-19 18:31:51 +02:00
abcdefg30
385e70552e Create CellLayerBase 2020-06-19 18:31:51 +02:00
Matthias Mailänder
1e2c67bfca Increase UPnP device discovery timeout. 2020-06-19 18:00:27 +02:00
Paul Chote
56739f87fb Allow plugs to be configured in the map editor. 2020-06-19 17:57:56 +02:00
Paul Chote
571eb7614f Support multiple turrets in the editor. 2020-06-19 17:57:56 +02:00
Paul Chote
c6c3a8c60d Make ActorPreview and EditorActorPreview wrap ActorReference. 2020-06-19 17:57:56 +02:00
Paul Chote
ae7cfa56b7 Restrict IActorPreviewInitInfo to ActorInit. 2020-06-19 17:57:56 +02:00
Paul Chote
b856613194 Add ISingleInstanceInit interface.
Inits that are logically singletons (e.g. actor
location or owner) should implement this interface
to avoid runtime inconsistencies.

Duplicate instances are rejected at init-time,
allowing simpler queries when they are used.
2020-06-19 17:57:56 +02:00
Paul Chote
86305879cb Parse Enum *ValueInit as string values, not integers. 2020-06-19 17:28:01 +02:00
Paul Chote
e5a1a8a706 Replace deprecated API usage. 2020-06-19 17:28:01 +02:00
Paul Chote
27602a4a97 Add WAngle-compatible airstrike/paratrooper APIs. 2020-06-19 17:28:01 +02:00
Paul Chote
a98e460257 Expose WAngle to Lua API and deprecate old Facing. 2020-06-19 17:28:01 +02:00
Paul Chote
0349435650 Remove deprecated Paratrooper API methods. 2020-06-19 17:28:01 +02:00
Paul Chote
c3fbdca18f Add yellow-shirt technician. 2020-06-19 17:09:13 +02:00
Paul Chote
acb5245a28 Restore correct palette and voices for RA civilians.
A new C11 infantry has been added to use the custom
c3 sprite that was originally added back when only
c1 and c2 were used in OpenRA.
2020-06-19 17:09:13 +02:00
Paul Chote
23561cd76b Add custom palette support to WithInfantryBody. 2020-06-19 17:09:13 +02:00
Paul Chote
d3ab3d7d78 Move IndexedPlayerPalette to Mods.Common and add a non-player version. 2020-06-19 17:09:13 +02:00
Matthias Mailänder
5b870be83f Let the 2nd civilian panic when his mate gets electrocuted. 2020-06-19 16:50:28 +02:00
Matthias Mailänder
6130d5622c Add a panic function to the Lua API. 2020-06-19 16:50:28 +02:00
abcdefg30
318c4e3456 Remove InitialStanceAI overrides from campaign missions 2020-06-19 16:46:34 +02:00
abcdefg30
ab701449e2 Change Subs to use the Defend stance by default 2020-06-19 16:46:34 +02:00
abcdefg30
9a3447d863 Fix airstrike and paratroopers power not removing cameras at the map edge 2020-06-19 16:04:54 +02:00
matjaeck
5280637adf Fix PickupUnit not validating cargo on first run. 2020-06-19 15:59:14 +02:00
Matthias Mailänder
3bce55ac44 Cancel the attack when no traits are active. 2020-06-19 13:43:03 +02:00
Curtis Shmyr
a3f79503ed Fix Lua DisplaySystemMessage writing twice 2020-06-16 13:11:02 +02:00
Curtis Shmyr
02d462a82c Fix copying public key to clipboard if already authed 2020-06-13 19:15:27 +02:00
Smittytron
3d17328d0d Fix regression and cleanup scu35ea 2020-06-12 23:50:44 +02:00
reaperrr
0e81abc21b Fix weapons not accounting for Air
If a weapon was aiming at a target position rather
than an actor target, it would always check target types
of the terrain below, ignoring altitude (and therefore ignoring
"InvalidTargets: Air").
2020-06-12 21:00:53 +02:00
Paul Chote
803b930405 Change IFacing.TurnSpeed to WAngle. 2020-06-12 18:35:41 +02:00
Paul Chote
6adf45bcb4 Convert IFacing.Facing and TurnSpeed to WAngle. 2020-06-12 18:35:41 +02:00
Matthias Mailänder
01417c88c5 Add missing actor reference for lint testing. 2020-06-10 19:07:14 +02:00
abcdefg30
60bbbe0d93 Fix the Death Hand launch notification playing for the player not enemy 2020-06-10 18:57:08 +02:00
Matthias Mailänder
888dfd3654 Stop the boat to remove it immediately. 2020-06-09 22:40:32 +02:00
Matthias Mailänder
12de56ff62 Fix crash notication "AlertBeep" not found. 2020-06-09 22:40:32 +02:00
Matthias Mailänder
b7cee41c54 Fix TD gunboat not updating actor map influence. 2020-06-09 22:40:32 +02:00
Paul Chote
10aac03f75 Add CompositeActorInit and simplify chronoshift inits. 2020-06-08 19:18:38 +02:00
Paul Chote
0eb0041f90 Allow ActorInits to target a specific trait by matching the @ suffix. 2020-06-08 19:18:38 +02:00
Paul Chote
b38018af9c Replace IActorInit with an abstract class.
A shared ValueActorInit<T> is introduced to reduce duplication
in the most common init cases, and an ActorInitActorReference
allow actors to be referenced by map.yaml name.
2020-06-08 19:18:38 +02:00
Unknown
4df5ac0385 Change default to ground-attack 2020-06-07 10:31:44 -05:00
Unknown
a7476bc303 Improve detail + double fire rate/half damage 2020-06-07 10:31:44 -05:00
Unknown
cc4b3cb361 Add APC ground attack sprite turret 2020-06-07 10:31:44 -05:00
Ivaylo Draganov
31a965b29a Add suffix to player name in shroud selector 2020-06-06 14:40:48 +01:00
Ivaylo Draganov
7a213338a2 Add helper method to add suffix to player name label 2020-06-06 14:40:48 +01:00
abcdefg30
fb27a25e52 Fix a crash with support powers and units without selection decorations 2020-06-06 13:46:27 +01:00
abcdefg30
534b09ae4a Fix bots not working after adminship was transferred 2020-06-03 18:30:18 +02:00
abcdefg30
341a9f370c Fix a crash in Evacuation 2020-06-02 22:53:40 +02:00
Matthias Mailänder
607d9b2d5c Fix index out of bounds exception for off world aircraft. 2020-06-02 19:25:53 +01:00
abcdefg30
507ce40ad2 Fix a crash in LegacyBridgeLayer 2020-06-02 19:22:19 +01:00
reaperrr
f58c3aed32 Use OccupiesSpace to save more trait look-ups
This time in Locomotor.IsBlockedBy.
2020-06-02 20:08:34 +02:00
reaperrr
55e85bd9ca Save Mobile look-up in BasePathSearch
By casting to OccupiesSpace and then
looking up Info.LocomotorInfo directly.
2020-06-02 20:08:34 +02:00
reaperrr
4bf614c5cd Use OccupiesSpace to avoid Mobile look-up in Move
While individual trait look-ups may be cheap,
if a large army that is currently standing still gets
its first move-including order, the look-ups of dozens
or even hundreds of actors may happen on the same tick.

Therefore this may help reducing that first-order lag spike,
at least a little bit.
2020-06-02 20:08:34 +02:00
abcdefg30
96b06c75d1 Make Resupply display target lines for all queued move activities 2020-06-02 18:23:54 +02:00
Matthias Mailänder
d261648ab0 Fix BeingCapturedCondition getting revoked from the wrong actor. 2020-06-02 10:45:49 +02:00
Paul Chote
7b81b9e806 Bullet Facing -> WAngle. 2020-06-01 21:34:32 +02:00
Paul Chote
a93aea3e4e AreaBeam Facing -> WAngle. 2020-06-01 21:34:32 +02:00
Paul Chote
2cfacc2c7d ProjectileArgs facing -> WAngle. 2020-06-01 21:34:32 +02:00
Paul Chote
6d6b21a0eb Convert Aircraft.Facing to WAngle. 2020-06-01 20:25:38 +02:00
Matthias Mailänder
7a78c37851 Add .NET Coding Conventions 2020-05-31 13:27:03 +01:00
Ivaylo Draganov
b8a9f41892 Add missing trait descriptions for cursors and unify the language 2020-05-31 00:12:04 +02:00
Ivaylo Draganov
227567dfe1 Formatting: wrap and indent long argument lists 2020-05-31 00:12:04 +02:00
Ivaylo Draganov
d5ff5c672b Add configurable cursors for entering allied actor targeters 2020-05-31 00:12:04 +02:00
Ivaylo Draganov
393f6eca3a Add configurable target cursors to various traits 2020-05-31 00:12:04 +02:00
Paul Chote
d193ef856e Fix harvest animation facing glitch. 2020-05-30 19:58:03 +02:00
abcdefg30
44d3691fa1 Assign Player.IsBot before calling INotifyCreated.Created 2020-05-30 19:47:29 +02:00
abcdefg30
27d0465891 Remove workarounds for querying the PlayerActor in Created 2020-05-30 19:47:29 +02:00
abcdefg30
52a9fcef3c Rename "Created" to "Initialize" and let it handle adding to the world 2020-05-30 19:47:29 +02:00
abcdefg30
7386816f52 Manually construct the PlayerActor to fix crashes during actor creation 2020-05-30 19:47:29 +02:00
abcdefg30
9c0075b233 Move hardcoded PlayerActorTypes to shared const variables 2020-05-30 19:47:29 +02:00
abcdefg30
e4c5700baf Remove an unused using 2020-05-30 19:47:29 +02:00
reaperrr
e1b7df8b6a Use OccupiesSpace to avoid Mobile look-ups
in PathFinder.FindUnitPath and FindUnitPathToRange.
2020-05-30 04:05:29 -05:00
Paul Chote
c999b2d778 Convert QuantizeFacing to WAngle facings. 2020-05-28 21:23:51 +02:00
Paul Chote
bfb6c671fb Change QuantizeFacing to return a facing instead of an index. 2020-05-28 21:23:51 +02:00
Paul Chote
7c6ec577dc Rewrite ActorInit queries. 2020-05-28 19:04:53 +02:00
Paul Chote
626b40f31b Account for ramps in terrain height calculations. 2020-05-28 09:41:55 -05:00
Paul Chote
5af12440ba Replace MapGrid.CellCorners with a new CellRamp struct. 2020-05-28 09:41:55 -05:00
Paul Chote
4614f6febe Cache cell ramps to avoid repeated tileset lookups. 2020-05-28 09:41:55 -05:00
Pavel Penev
1354ffc32e Added multiple production speedup to D2k
Based on the specification in issue 18051.
2020-05-27 10:32:35 +02:00
Pavel Penev
3723939c99 Adjusted D2k build times to match the original game
Removed custom production queue speedups and custom actor build time slowdowns and adjusted BuildDurations based on the specifications in issue 18051.
2020-05-27 10:32:35 +02:00
Pavel Penev
e099739e13 Reduced HitShape radius of D2k units to minimum
Since they are only used to hold the armor type anyway.
2020-05-27 10:28:25 +02:00
Pavel Penev
21a48cc41d Switched D2k to use the new DamageCalculationType
This brings D2k in line with the damage model of the original game.
2020-05-27 10:28:25 +02:00
Pavel Penev
4740266308 Added DamageCalculationType enum to SpreadDamageWarhead 2020-05-27 10:28:25 +02:00
Pavel Penev
78139413d7 Equalized the DoImpact methods in damage warheads 2020-05-27 10:28:25 +02:00
Pavel Penev
f0578a75f4 Cleaned up DamageWarhead
Reordered methods and fixed access modifiers. Also removed unused using statements from warheads.
2020-05-27 10:28:25 +02:00
abcdefg30
7a0e55a02a Restore trailing whitespaces to windows batch scripts 2020-05-26 22:57:11 +02:00
reaperrr
f132bac80d Add Tree armor type and remove tree-only warheads
This simplifies #12467.
Using a tree-exclusive amor type is far more efficient
than adding more warheads, which cost performance
due to their huge Spread

This also restores the 100% efficiency vs. trees for
some of the incendiary nuke warheads (which have
reduced efficiency vs. Wood since #13643).

Note: Atomic had two tree-only warheads with a Delay
of 15, I believe the first one to be a copy-paste error
and moved the damage to the regular SpreadDamage
with a Delay of 10.
2020-05-26 22:51:29 +02:00
reaperrr
109ea4fe5b Fix Barrel explosion damage 2020-05-26 22:46:26 +02:00
Matthias Mailänder
f33feafd0e Add TurnOnIdle. 2020-05-25 13:07:19 +02:00
reaperrr
9195356e3a Upgrade DepthCharge effect setup
- med_explosion instead of small_explosion on surface hit
- only play explosion on surfaced subs
- only play h2obomb2.aud when hitting a submerged sub
2020-05-24 13:26:40 +02:00
reaperrr
eff91108f4 Make RA ships show both explosion and splash
...when destroyed, to imply sinking.
2020-05-24 13:26:40 +02:00
reaperrr
e40c0516e6 Adapt RA warheads to new target types 2020-05-24 13:26:40 +02:00
reaperrr
c580a94ab7 Fix RA weapon ValidTargets 2020-05-24 13:26:40 +02:00
reaperrr
6a545bb942 Streamline RA target types
No more sharing of target types between terrain
and actors (except bridges), removed 'Ground(Actor)'
from WaterActors (was only used by weapons/warheads,
which can just list both ground- and water types.
2020-05-24 13:26:40 +02:00
Matthias Mailänder
672bd2d9fe Don't crash when putting the trait on the World actor. 2020-05-24 12:36:26 +02:00
Ivaylo Draganov
3ab4a584ab Remove trailing white-space from various files 2020-05-23 11:38:44 +02:00
Ivaylo Draganov
150d02ac0d Remove trailing white-space from lua files 2020-05-23 11:38:44 +02:00
Ivaylo Draganov
6d26f60904 Remove trailing white-space from yaml files 2020-05-23 11:38:44 +02:00
abcdefg30
b42276953f Fix a crash when a harvester is rebuilt in cnc64gdi01 2020-05-22 21:25:58 +02:00
abcdefg30
7c290b9f76 Fix not all harvesters in cnc64gdi01 being rebuilt 2020-05-22 21:25:58 +02:00
abcdefg30
51fe1d6629 Let AI autotargeting in D2k ignore sandworms 2020-05-22 20:40:36 +02:00
Matthias Mailänder
8f558d2b47 Add a bullet bounce sound. 2020-05-21 14:44:13 +02:00
abcdefg30
3f5fadf2e9 Move stray update rules into the correct subfolder 2020-05-21 14:08:14 +02:00
abcdefg30
07c16cee1d Add TargetTypes to HealActorsCrateAction 2020-05-21 14:08:14 +02:00
abcdefg30
24130dfcdc Add an update rule for the RenameHealCrateAction rename 2020-05-21 14:08:14 +02:00
abcdefg30
15a2341a91 Rename HealUnitsCrateAction to HealActorsCrateAction 2020-05-21 14:08:14 +02:00
Paul Chote
86f61298e6 Replace ITraitInfo interface with TraitInfo class. 2020-05-21 13:01:04 +02:00
abcdefg30
3cd7ec3878 Make the TS Test AI build aircraft 2020-05-21 10:05:05 +02:00
abcdefg30
8b13d3e4c7 Fix resupply not displaying target lines correctly 2020-05-19 22:11:20 +02:00
Ivaylo Draganov
327d451abc Add trim_trailing_whitespace to .editorconfig 2020-05-18 17:39:24 +02:00
atlimit8
2dac16ee02 add SquadManagerBotModuleInfo.IgnoredEnemyTargetTypes 2020-05-17 22:02:32 +01:00
abcdefg30
d4b92a19d7 Remove bogus weapon override defintions from TD campaign maps 2020-05-17 13:39:51 +01:00
tovl
e0357596f5 Correct aircraft repulsion direction when outside of the map. 2020-05-17 12:46:17 +02:00
atlimit8
1ef27d18c1 check name for Actor.GrantCondition() 2020-05-17 12:33:29 +02:00
Matthias Mailänder
1d2d8ed107 Don't hard-code the transparent background color. 2020-05-16 22:28:52 +01:00
reaperrr
1bf01bc214 Remove WaterStructure TargetType from RA SYRD/SPEN
- only used for auto-targeting
- inconsistent with their fakes (which didn't have this)
- unnecessary, since the 'Ship' target type covers all
  surface water actors we want to be auto-targetable by default,
  while 'Structure' is enough to add syard/spen in AttackAnything.
2020-05-15 08:22:02 +02:00
reaperrr
0015deca47 Fix TS Tiberium Fiend target types
Was missing Creep, preventing actors from
auto-targeting it (unlike all other critters).
2020-05-15 08:22:02 +02:00
reaperrr
ddfdc6e90f Clean up TD weapon ValidTargets
- Missiles can now force-fire on water like other weapons
- Superweapons can now target empty water
- made Chemspray null InvalidTargets to avoid yaml-merge issues
- Improved APCGun effect warhead perf by ignoring actors
- removed stale Tiberium weapon mission overrides
2020-05-15 08:22:02 +02:00
abcdefg30
5db2ad54f2 Fix a scripting error in nod04b 2020-05-14 22:40:44 +01:00
teinarss
b8a5750529 Add map.contains check to CanStayInCell 2020-05-14 20:06:21 +02:00
Andrew Odintsov
98d5b8c7cc Remove redundant call to OnTextEdited 2020-05-14 11:01:48 +02:00
Andrew Odintsov
3f34154a1e Add OnTextEdited call to RemoveSelectedText
This would allow expty text box to be processed and disable filtering
2020-05-14 11:01:48 +02:00
thisisjacob
3119f831b3 Added notice for entering vehicles in docs 2020-05-13 17:25:49 -05:00
thisisjacob
8a07b762a2 Changed documentation for OnEnterComplete 2020-05-13 17:25:49 -05:00
Matthias Mailänder
551ab2fc59 Cache the footprint LINQ for performance. 2020-05-12 20:53:05 -05:00
Zimmermann Gyula
99957e57b9 Update the default mods. 2020-05-12 20:53:05 -05:00
Matthias Mailänder
be2c59bc6e Add upgrade rule to convert ranges to footprints. 2020-05-12 20:53:05 -05:00
Zimmermann Gyula
57f9a49b66 Use footprints in ChronoshiftPower. 2020-05-12 20:53:05 -05:00
Zimmermann Gyula
54bd0eb99d Use footprints in GrantExternalConditionPower. 2020-05-12 20:53:05 -05:00
Zimmermann Gyula
485faac294 Implement SupportPower.CellsMatching. 2020-05-12 20:53:05 -05:00
Andrew Odintsov
d531d6f3ef Simplify groupActors condition 2020-05-12 15:06:50 +02:00
Andrew Odintsov
3a9fdb82f5 Add IsInWorld check for controlled groups 2020-05-12 15:06:50 +02:00
reaperrr
5024ae1156 TS ClusterMissile typo fix 2020-05-10 15:20:25 +02:00
abcdefg30
0135dd9ed3 Use inheritance to shorten the desert shellmap custom rules 2020-05-09 14:36:50 -05:00
abcdefg30
a6e9b86bbe Remove AnnounceOnKill Tanya overwrites from the desert shellmap 2020-05-09 14:36:50 -05:00
abcdefg30
237c4444b5 Remove DeathSounds overwrites from the desert shellmap 2020-05-09 14:36:50 -05:00
reaperrr
a68467292e Use TargetType.Invalid checks instead of IsValidFor 2020-05-09 17:59:23 +02:00
reaperrr
978c69d0c3 Make Warhead.IsValidTarget method protected
IsValidTarget is never called from outside warheads.
2020-05-09 17:59:23 +02:00
reaperrr
3eabc59921 Make resource warheads AirThreshold-aware 2020-05-09 17:59:23 +02:00
reaperrr
2b3d99fac2 Sanitize resource warheads
- Fix potential crash due to invalid target (no CenterPosition)
- Fix potential crash on multiple ResourceLayers
2020-05-09 17:59:23 +02:00
reaperrr
2bdefe0e9e Move AirThreshold to Warhead
To reduce duplication and for later use in more warheads.
2020-05-09 17:59:23 +02:00
reaperrr
de81fc2aca Minor CreateEffectWarhead optimization
Palette only matters if we actually display an explosion.
2020-05-09 17:59:23 +02:00
reaperrr
b514e0a6e7 D2k yaml comment removal
Naming the warhead for its purpose is cleaner
than comments, in my opinion.
2020-05-09 17:56:08 +02:00
reaperrr
715dfa4541 Use args in FireClusterWarhead methods
Instead of directly passing damage modifiers.
2020-05-09 17:56:08 +02:00
reaperrr
ac57a37224 DamageWarhead polish
Use BitSet.IsEmpty.
2020-05-09 17:56:08 +02:00
Paul Chote
afd620b092 Reimplement ClassicQuantizeFacing using a look-up-table. 2020-05-09 10:40:50 -05:00
Paul Chote
552bceb07c SpriteEffect facing -> WAngle. 2020-05-09 10:20:23 -05:00
Paul Chote
fe58ed1283 Animation facing -> WAngle. 2020-05-09 10:20:23 -05:00
Paul Chote
361e2d463c ISpriteSequence facing -> WAngle. 2020-05-09 10:20:23 -05:00
atlimit8
259c8d2c98 Merge ConditionManager trait directly into Actor 2020-05-09 15:46:11 +02:00
abcdefg30
e12c1dc9aa Retire the "release-20190314" path 2020-05-09 13:08:10 +01:00
abcdefg30
7fb49e383d Update and fix the latest update path and rules 2020-05-09 13:08:10 +01:00
Matthias Mailänder
1df3e28253 Initialize RangeModifiers. 2020-05-08 20:58:27 +02:00
Paul Chote
bacec2689d Remove error message duplication. 2020-05-08 15:17:44 +02:00
jrb0001
bf397591f9 Implement IPv6 support for server and direct connect 2020-05-08 15:17:44 +02:00
Matthias Mailänder
bd1a936c7a Add the armed technician. 2020-05-08 09:42:14 +02:00
Matthias Mailänder
0871d6e321 Setup the Firestorm civilian voices. 2020-05-08 09:42:14 +02:00
abcdefg30
265d296db6 Add infiltration sounds support to InfiltrateForSupportPowerReset 2020-05-05 15:16:09 -05:00
Matthias Mailänder
5ec136b57c Don't play the make animation on the wall sprite body. 2020-05-05 13:23:58 +02:00
atlimit8
f1e8f9c9d0 Fixed PNG frame count calculation
This fixes the order of operations and rounding issue, making it columns * rows.
2020-05-02 23:14:31 +02:00
Paul Chote
f03841c4e4 Hide selection decorations when spectators zoom too far out. 2020-05-02 14:30:04 -05:00
Pavel Penev
0ae58ff0ea Adjusted damage spread ranges on weapons in D2k to match the original game 2020-05-02 20:22:01 +01:00
Pavel Penev
390c1899ca Changed weapons in D2k to have a linear damage falloff to match the original game 2020-05-02 20:22:01 +01:00
Matthias Mailänder
89aa6d1e4e Don't attack during buildup. 2020-05-02 20:07:09 +01:00
Matthias Mailänder
24638b02a9 Fix turret build sounds. 2020-05-02 20:07:09 +01:00
Matthias Mailänder
4b0ab6ab37 Add the crumble overlay to the turrets. 2020-05-02 20:07:09 +01:00
Matthias Mailänder
1f02d9f141 Add the make animation for the turrets. 2020-05-02 20:07:09 +01:00
Matthias Mailänder
0103c38c13 Don't change the animation when it's not your turn. 2020-05-02 20:07:09 +01:00
Matthias Mailänder
3cc76f91b4 Fix the make animation for the silos. 2020-05-02 20:07:09 +01:00
abcdefg30
10dc248f07 Remove unused usings from BaseBuilderBotModule 2020-05-02 14:05:44 -05:00
abcdefg30
d1f89c6217 Update the Desc of GrantCondition 2020-05-02 14:05:44 -05:00
abcdefg30
76ba4fc32d Use a modular AI in soviet05 2020-05-02 14:05:44 -05:00
abcdefg30
37f90fff44 Throw LuaExceptions instead of InvalidDataExceptions in ConditionProperties 2020-05-02 14:05:44 -05:00
abcdefg30
9fa6da3bc7 Add PlayerConditionProperties 2020-05-02 14:05:44 -05:00
abcdefg30
aa8cf237ab Make Greece the owner of all starting actors in soviet05 2020-05-02 14:05:44 -05:00
Matthias Mailänder
c131728aa4 Give more context when crashing during .png sheet loading. 2020-05-02 13:26:06 -05:00
Paul Chote
2abd137494 Remove OpenRA.PostProcess.exe.
The LAA flag is now set when packaging
Windows release installers.
2020-05-02 17:26:54 +02:00
Paul Chote
90815ace59 Add a decoration glyph for friendly units in tunnels. 2020-05-02 16:16:16 +02:00
Matthias Mailänder
53d916d7f1 Add some basic error handling to png metadata writing. 2020-05-02 04:13:34 -05:00
reaperrr
2b4035979b Make all warheads use WarheadArgs
Instead of passing damageModifiers directly.
2020-05-02 03:09:18 +03:00
Matthias Mailänder
38cdc93010 Default the optional effect sequence to null 2020-05-01 19:43:36 +03:00
Matthias Mailänder
346dad3898 Remove trailing spaces. 2020-05-01 19:43:36 +03:00
Matthias Mailänder
42256bc262 Add an out of bounds check. 2020-05-01 19:41:06 +03:00
Matthias Mailänder
70babb4067 Validate the target before querying it's center position. 2020-05-01 16:53:29 +02:00
Matthias Mailänder
3603e6373d Check for invalid targets. 2020-04-30 01:42:19 -05:00
Matthias Mailänder
bd1760682f Rename WithNukeLaunch* traits to WithSupportPower*. 2020-04-30 01:37:05 -05:00
Matthias Mailänder
52d0490f95 Supersede INotifyNuke 2020-04-30 01:37:05 -05:00
Matthias Mailänder
b3b0aa75ae Add new interfaces for support powers. 2020-04-30 01:37:05 -05:00
Paul Chote
e42d177920 Include selection decorations when calculating ScreenMap bounds. 2020-04-30 00:09:57 +02:00
Paul Chote
c2156af7b0 Restore missing minelayer pips. 2020-04-29 22:59:48 +02:00
dnqbob
86394eb56c "FindEnemy" functions ignore hidden actors
(helped by reaperrr and abcdefg30)
2020-04-28 15:35:02 +02:00
dnqbob
2d7790f5e4 StateBase.cs modified:
1. Optimize & move "ammo" related function from "AirStates.cs" to StateBase.cs

2. Optimize & move "IsRearm" function from "AirStates.cs" to StateBase.cs, name changed to "IsRearming"

(optimized by reaperrr)
2020-04-28 15:35:02 +02:00
Matthias Mailänder
3df43529a6 Document BitSet<TargetableType> 2020-04-27 16:06:32 +02:00
Matthias Mailänder
a1c9b27057 Add InfiltrateForSupportPowerReset 2020-04-27 16:06:32 +02:00
abcdefg30
089dd233a5 Correct the support dir location in ExtractSettingsDocsCommand 2020-04-26 12:38:11 +01:00
Matthias Mailänder
86a7a0bd6c Move Render*Circle traits to their base traits. 2020-04-26 10:30:50 +02:00
Paul Chote
7ebca36a9c Disable debug callbacks on Intel HD 4000. 2020-04-25 21:03:43 +02:00
Paul Chote
d5aed5a88a Expose GL Profile in settings menu. 2020-04-25 21:03:43 +02:00
Paul Chote
dac1f270ce Restore legacy OpenGL 2.1 support. 2020-04-25 21:03:43 +02:00
Paul Chote
839be24053 Replace PreferGLES settings flag with GLProfile enum. 2020-04-25 21:03:43 +02:00
Paul Chote
91c4179f05 Split GLProfile from GLFeatures. 2020-04-25 21:03:43 +02:00
Matthias Mailänder
a4b427bfac Clarify AttackPanicChance and add PanicChance. 2020-04-24 18:38:54 +02:00
reaperrr
250f5bec18 Misc yaml style fixes 2020-04-24 18:22:35 +02:00
reaperrr
336e2a10e0 Fixed RA STNK turret not using fudged facings 2020-04-24 18:22:35 +02:00
reaperrr
b5e9b7635e MoveClassicFacingFudge update rule 2020-04-24 18:22:35 +02:00
reaperrr
0df7fa1596 Add sequence update rule support 2020-04-24 18:22:35 +02:00
reaperrr
c10487d635 Move ClassicFacingFudge support to Mods.Cnc
This moves the TD/RA-specific re-mapping of sprite facings
and coordinates to Mods.Cnc.
2020-04-24 18:22:35 +02:00
abcdefg30
bc9b3bef74 Fix a crash when completing objectives in Allies06 out of order 2020-04-23 21:56:46 +01:00
abcdefg30
e57462e7ca Make attack moving and guarding use a grouped order 2020-04-21 01:35:40 -05:00
abcdefg30
78bf27709f Add basic support for grouped orders 2020-04-21 01:35:40 -05:00
Matthias Mailänder
fc84cd9204 Add an is in world check to fix a crash. 2020-04-21 01:15:43 -05:00
Matthias Mailänder
e361f7b246 The category field has been pluralized. 2020-04-19 15:21:10 +02:00
Matthias Mailänder
b0497b7505 Fix double whitespace. 2020-04-19 15:21:10 +02:00
Zimmermann Gyula
a894e31fa5 Remove now obsolete tileset palette entry. 2020-04-19 15:21:10 +02:00
Matthias Mailänder
dd062adec2 Add descriptions as those are not obvious in this context. 2020-04-18 13:56:26 -05:00
Matthias Mailänder
d187575a2c Make support power icons configurable and testable. 2020-04-18 13:56:26 -05:00
teinarss
85096c4ba2 Update CoordinateTest to be compatible with new nunit version. 2020-04-18 11:36:25 -05:00
teinarss
e13fd693c3 Add Nuget packages for all dependencies 2020-04-18 11:36:25 -05:00
Mustafa Alperen Seki
cc35512472 Add a trait to reveal the whole map when conditions are met. 2020-04-18 10:49:25 -05:00
abcdefg30
4e548291ce Treat transit-only tiles as invalid locations for minelayers 2020-04-18 13:35:06 +01:00
abcdefg30
3ba86f329f Remove Game.HasInputFocus 2020-04-17 22:26:03 -05:00
Mustafa Alperen Seki
5b34af0f12 Change all instances of ToLower() to ToLowerInvariant() 2020-04-17 17:01:42 -05:00
Adam Mitchell
0a9eb1ff83 Fix units stuck on transit-only when resupplying 2020-04-17 11:13:46 +02:00
abcdefg30
942dd0e5f7 Adapt the utility commands to import crates as well 2020-04-17 10:52:59 +02:00
abcdefg30
400102f3d3 Remove a TODO about grey nod colors 2020-04-17 10:52:59 +02:00
abcdefg30
9ccdeb3d36 Set the wcrate and scrate sequences up 2020-04-17 10:52:59 +02:00
abcdefg30
7e0f0dd2d2 Add missing money crates to TD campaign missions 2020-04-17 10:52:59 +02:00
abcdefg30
d920cbb7f6 Move money crates to a default in the shared campaign rules 2020-04-17 10:52:59 +02:00
Paul Chote
417677e6f4 Work around and explain color picker conversion issue. 2020-04-17 10:41:08 +02:00
Paul Chote
33f3038316 Fix map-specific factions remaining selected when changing map. 2020-04-16 16:49:00 +02:00
Paul Chote
429dbe3e0c Block profiles with revoked keys from joining auth-only servers. 2020-04-16 16:43:10 +02:00
abcdefg30
471fc44751 Add more engineers to the wave in nod07
Otherwise buildings will only be damaged
2020-04-16 13:21:33 +02:00
abcdefg30
1b8e346307 Fix APC reinforcements in nod07a and b 2020-04-16 13:21:33 +02:00
abcdefg30
a456583a08 Fix a crash in nod07b 2020-04-16 13:21:33 +02:00
Paul Chote
a63c17baab Disable IP tooltip in skirmish games. 2020-04-15 23:16:24 +02:00
Paul Chote
9c4faddc0f Switch GeoIP database from MaxMind to IP2Location.
The IP2Location data is licensed under CC BY-SA, which
allows us to distribute the database with releases.
2020-04-15 23:16:24 +02:00
Paul Chote
6828c4c1e9 Fix long player locations overrunning the player tooltip. 2020-04-15 23:16:24 +02:00
Matthias Mailänder
80131e7ec0 Group readonly fields. 2020-04-15 21:42:50 +02:00
Matthias Mailänder
ac381a6f58 Allow multiple ResourceRenderer traits. 2020-04-15 21:42:50 +02:00
Matthias Mailänder
521b516bf9 Mark suggested fields as readonly. 2020-04-15 21:42:50 +02:00
netnazgul
6a825f8e60 Modify preset colors to not get flagged by color validator 2020-04-14 18:31:18 +02:00
Paul Chote
f0a243ca10 Fix mine layer desync.
World.FogObscures depends on the local RenderPlayer and should not
be used from simulation code!
2020-04-12 23:06:55 +02:00
Matthias Mailänder
e5457a3390 Allow wall renderers in mod code. 2020-04-11 16:29:00 +02:00
Matthias Mailänder
47e21f8bef Remove unused using. 2020-04-11 16:29:00 +02:00
Matthias Mailänder
331b854e4e Add a lint check for production bar types. 2020-04-10 21:00:26 +02:00
Matthias Mailänder
274bc9cbba Add missing sequence reference. 2020-04-10 20:56:54 +02:00
Matthias Mailänder
827f8d95b4 Remove unused using. 2020-04-10 20:56:54 +02:00
Matthias Mailänder
2946dd35d5 Spaces to tabs. 2020-04-10 20:14:39 +02:00
Matthias Mailänder
74d884787d Remove trailing tabs/spaces. 2020-04-09 22:32:05 +02:00
Matthias Mailänder
5516e16fb8 Make the default player color configurable in mod.yaml 2020-04-09 22:32:05 +02:00
reaperrr
cadf4eb322 Limit TS fona to temperate theater
Their art wasn't drawn with snow terrain in mind,
so no point in allowing to place them on snow maps.
2020-04-07 22:04:16 +02:00
Matthias Mailänder
269249e86e Fix the fona sequence definitions. 2020-04-07 22:04:16 +02:00
Matthias Mailänder
30f87d2308 Port some Translucent=yes from Art.ini 2020-04-07 22:00:31 +02:00
Zimmermann Gyula
8b7e72b95e Add three additional blending modes. 2020-04-07 22:00:31 +02:00
abcdefg30
1e64048956 Cache PlayerResources and unit cost in Resupply 2020-04-07 21:27:16 +02:00
abcdefg30
8512e696f5 Add Creeps as enemy in all D2k missions 2020-04-07 21:19:08 +02:00
abcdefg30
6a03a9ec5f Fix a yaml error in GDI08a 2020-04-07 20:59:17 +02:00
netnazgul
5e04c99d57 Fix tile errors on the map "Pie of Animosity" 2020-04-07 20:53:28 +02:00
Mustafa Alperen Seki
82f15491c0 Allow Engineers in RA to enter undamaged (Camo) PillBoxes. 2020-04-03 04:09:43 -05:00
Mustafa Alperen Seki
101843fbb7 Make EngineerRepairable conditional. 2020-04-03 04:09:43 -05:00
Zimmermann Gyula
9e534f3804 Add damagetypes to repairing. 2020-03-31 01:10:51 -05:00
Punsho
ca3cfc0184 RA Balance patch 2020-03-29 21:57:12 +02:00
Paul Chote
d62fb901e2 Fix actors with no footprint leaving stale data when deleted. 2020-03-29 21:10:45 +02:00
Matthias Mailänder
73a2b59c2c Add additional notification support to infiltration. 2020-03-29 12:00:16 -05:00
Paul Chote
2c7a56625c Move selectableActor check inside InputOverridesSelection. 2020-03-29 13:20:10 +02:00
Ivaylo Draganov
e2572b214f Adjust spacing and width in editor category dropdown 2020-03-28 20:41:03 +00:00
abcdefg30
d22cd3a74f Adjust the map visibility panel height 2020-03-28 20:41:03 +00:00
abcdefg30
0c8fcedfdf Start with randomized wind strength 2020-03-28 19:46:47 +01:00
Paul Chote
99009c37ce Fix and simplify WeatherOverlay:
- Fix rendering issues
- Track particles in world pixels instead of screen pixels
- Removed un/underused fade in/out support
- Update wind once per tick instead of once per particle
- Make Particle struct readonly
2020-03-28 19:46:47 +01:00
Paul Chote
d9f5771778 Make the right edge of the airfield transitable. 2020-03-28 19:13:14 +01:00
Paul Chote
d35b5070fb Fix minelayers leaking enemy mine positions through the fog. 2020-03-28 18:49:07 +01:00
Paul Chote
02f41f9afc Fix SpriteEffect updating twice in the first tick. 2020-03-28 17:12:25 +01:00
abcdefg30
c797aa1d5e Change syrf to syrd on the desert shellmap 2020-03-27 19:24:22 +01:00
Paul Chote
b2f7f67756 Fix and simplify ScrollPanelWidget thumb rect calculation. 2020-03-26 16:54:46 +01:00
dnqbob
09014ab6d5 transformation can pass exp to new actor 2020-03-26 02:04:44 -05:00
Matthias Mailänder
8f8747d65e Always show the building fake tags 2020-03-26 00:52:24 -05:00
Ivaylo Draganov
be19e137e2 Align lobby bits in the player tab in TD 2020-03-25 13:01:49 +01:00
Paul Chote
3155291064 Restore ability to configure RMB orders + RMB panning. 2020-03-25 12:36:21 +01:00
Paul Chote
a5b22e6a36 Remove text caching from CncLoadScreen.
We have repeatedly failed at invalidating these
cached values when things change, so the small perf
win is not worth the hassle.
2020-03-25 12:20:14 +01:00
Paul Chote
9c251e8b6a Fix detection circle line rendering. 2020-03-24 20:59:46 +01:00
Matthias Mailänder
6056568182 Remove unused terrain type. 2020-03-24 19:48:54 +01:00
Zimmermann Gyula
7b7c1da18d Add a shared parallel production queue. 2020-03-24 13:35:15 -05:00
Paul Chote
fb5b4b3547 Rename Defense button tooltip to Support. 2020-03-24 13:13:18 -05:00
Paul Chote
19918d485e Disable plugs when there are no sockets to place them. 2020-03-24 13:13:18 -05:00
Paul Chote
45c6c6ba10 Fix Waste Refinery bib. 2020-03-24 13:13:18 -05:00
Paul Chote
0e436bc686 Move plugs and superweapons to Building queue. 2020-03-24 13:13:18 -05:00
Ivaylo Draganov
b0dfea0a09 Adjust the stroke of the muted indicator glyph 2020-03-24 16:56:49 +01:00
Paul Chote
2c4e6c4188 Remove special-case rollover rendering. 2020-03-24 00:07:10 -05:00
Paul Chote
9f3254dbd1 Implement isometric selection boxes for TS structures. 2020-03-24 00:07:10 -05:00
Paul Chote
88cdad4189 Add support for polygon selection shapes. 2020-03-24 00:07:10 -05:00
Paul Chote
4ba50a4379 Remove IEquatable from ActorBoundsPair. 2020-03-24 00:07:10 -05:00
Paul Chote
2b6c104011 Update RA decorations. 2020-03-24 00:07:10 -05:00
Paul Chote
4b446d100e Update D2k decorations. 2020-03-24 00:07:10 -05:00
Paul Chote
f9ca2114a9 Update TS decorations. 2020-03-24 00:07:10 -05:00
Paul Chote
afc9c6ef85 Update TD decorations. 2020-03-24 00:07:10 -05:00
Paul Chote
ac200f6173 Rework decoration renderable traits:
- Removed implicit pip definitions and IPips interface.
  New decoration traits have been added to render them.
  Pip types are no longer hardcoded in OpenRA.Game.

- Decoration rendering is now managed by SelectionDecorations(Base),
  which allows us to remove assumptions about the selection box
  geometry from the decoration traits.

- RenderNameTag has been replaced by WithNameTagDecoration, which is
  an otherwise normal decoration trait.

- Unify the configuration and reduce duplication between traits.

- Removed hardcoded references to specific selection box renderables.

- Remove legacy cruft.
2020-03-24 00:07:10 -05:00
Paul Chote
73a78eadb1 Move Interactable and Selectable to Mods.Common. 2020-03-24 00:07:10 -05:00
Matthias Mailänder
c5139fb6c2 Remove the hard-coded ban of placing buildings on resources. 2020-03-23 23:48:33 -05:00
Paul Chote
9faf9aa1b9 Replace deprecated native OpenAL with OpenAL Soft on macOS. 2020-03-23 11:13:31 +01:00
unknown
3c2e9be248 Add gdi09ea 2020-03-21 21:09:52 +01:00
Matthias Mailänder
5b59f6612f Remove .lua scripts from the .NET solution file. 2020-03-21 17:30:26 +00:00
abcdefg30
3d69363f35 Add support for destroying enemy carryalls 2020-03-21 10:58:17 +01:00
abcdefg30
b580b4fd33 Add support for an announcement function for carryall reinforcements 2020-03-21 10:58:17 +01:00
abcdefg30
74f86d70f8 Add Ordos06a 2020-03-21 10:58:17 +01:00
abcdefg30
3959104f9b Let VS2019 remove a duplicate line from the solution 2020-03-21 10:58:17 +01:00
Paul Chote
1ff037a257 Remove invalid caching from GCOT. 2020-03-20 17:43:24 +01:00
abcdefg30
32700df117 Fix the settings tooltip container being overwritten ingame 2020-03-20 16:06:06 +01:00
Matthias Mailänder
b4edec215e Fix spy ignoring the target's faction. 2020-03-19 23:11:38 +01:00
Michael Silber
dffa1e45f4 Add gdi08a 2020-03-17 19:04:36 +01:00
Paul Chote
df3b6dde34 Update macOS launcher to fix "View Logs" button. 2020-03-16 20:15:58 +01:00
Matthias Mailänder
834bbf467e Make GlobalLightingPaletteEffect public 2020-03-16 11:10:30 +01:00
Paul Chote
4d4f94208e Cache CandidateMovementCells within the same tick. 2020-03-12 17:07:14 +01:00
Paul Chote
416713de0c Fix infantry switching subcells and blocking eachother while moving. 2020-03-11 15:40:12 +01:00
Paul Chote
c523ca8efe Fix FreeSubCell ignoring preferred subcell requests. 2020-03-11 15:40:12 +01:00
Paul Chote
9acea56108 Fix pathing across transit-only cells. 2020-03-11 15:40:12 +01:00
Paul Chote
44a7422375 Fix variable naming in Locomotor. 2020-03-11 15:40:12 +01:00
abcdefg30
0d0e7eb179 Fix aircraft not taking off properly 2020-03-08 17:20:39 +01:00
abcdefg30
ea6c840343 Fix the panic chance calculation in ScaredyCat 2020-03-08 16:33:23 +01:00
abcdefg30
d2db0913ac Fix the missle jamming chance calculation 2020-03-08 16:33:23 +01:00
Punsho
3721dae74d Making missiles properly go over terrrain and track air units 2020-03-07 13:00:28 +01:00
Matthias Mailänder
9050a2447b Add remappable support to production icons. 2020-03-04 22:02:30 +01:00
abcdefg30
df4c363e9c Notify blockers upon paradropping 2020-03-03 20:51:39 +00:00
abcdefg30
a909a3e692 Ignore self and actors not at ground level in Parachutable.OnLanded 2020-03-03 20:51:39 +00:00
abcdefg30
dd26253905 Fix the IgnoreActor check in Parachutable 2020-03-03 20:51:39 +00:00
abcdefg30
69b7ba2d22 Fix NREs in ProductionParadrop 2020-03-03 20:51:39 +00:00
Paul Chote
d2f306e488 Fix GetActorsAt(CPos, SubCell) with special-case subcells.
If given FullCell or Any we should be returning actors in
any subcell, not none.
2020-03-03 20:06:51 +01:00
Paul Chote
4a6fefa434 Disable idle scanning on RA planes. 2020-03-02 22:22:56 +01:00
Paul Chote
16e0ea611e Revert "Fix AttackFollow ignoring allowMove flag when auto-targeting."
This reverts commit 3e116060cf.
2020-03-02 22:22:56 +01:00
Paul Chote
05a2e77be2 Add support for uncompressed databases. 2020-03-02 17:29:30 +01:00
Paul Chote
dd2fa36261 Fix invalid channel server crash. 2020-03-02 17:29:30 +01:00
abcdefg30
5fa1dec6d8 Fix a crash in --clear-invalid-mod-registrations 2020-03-02 17:26:34 +01:00
Paul Chote
f86d96794d Add explicitly defined version strings to the lua docs. 2020-03-02 17:24:17 +01:00
Paul Chote
304307df5a Fix wiki script again. 2020-03-01 16:41:19 +00:00
Paul Chote
c8856749f3 Only update the wiki from the Linux host. 2020-03-01 16:10:07 +00:00
Paul Chote
ce91c5a76f Fix WithDisguisingInfantryBody idle animation crash. 2020-03-01 14:43:12 +01:00
Paul Chote
e6314a944c Round dropdown arrow position to an integer pixel. 2020-03-01 14:41:17 +01:00
Paul Chote
93d006e14e Fix incorrect end point rendering in DrawConnectedLine. 2020-02-29 18:13:54 +01:00
Paul Chote
d73ed7670a Port missions to the new Paratroopers API. 2020-02-29 16:07:24 +01:00
Paul Chote
c0587cc568 Introduce ActivateParatroopers Lua API.
SendParatroopers and SendParatroopersFrom are now deprecated.
The paratrooper actors themselves can be accessed using the
Trigger.OnPassengerExited trigger.
2020-02-29 16:07:24 +01:00
Paul Chote
ed415cb637 Remove deprecated *Upgrade Lua API methods. 2020-02-29 16:07:24 +01:00
abcdefg30
a10deddf53 Update the Lua API 2020-02-28 18:48:05 +01:00
abcdefg30
a5bc841355 Ignore the types of an exit when the production type is null or empty 2020-02-28 18:48:05 +01:00
Paul Chote
41657dd291 Allow spectators to be kicked after the game starts. 2020-02-28 00:04:49 +01:00
abcdefg30
a7d5b7b8b0 Fix FreeActorWithDelivery not being properly conditional 2020-02-27 18:50:51 +01:00
reaperrr
eb007fc43c Add Frames support to Combine 2020-02-27 18:44:34 +01:00
Paul Chote
301d09ea8f Remove undefined RequiresForceMove from TransformsIntoTransforms. 2020-02-27 18:42:48 +01:00
Paul Chote
ac46b4b791 Fix transparent pixels in Mobile Flack icon. 2020-02-27 00:11:39 +01:00
Paul Chote
fb7c781a66 Add multi-resolution mod icon support. 2020-02-26 23:47:15 +01:00
Paul Chote
e5309ee586 Remove unused InstalledMods.Icons cache. 2020-02-26 23:47:15 +01:00
Paul Chote
84df61c672 Add multi-resolution badge support. 2020-02-26 23:47:15 +01:00
Paul Chote
de4a7cecf0 Rework multi-resolution sprite handling:
- Sprite.Bounds now refers to rectangles in the source image.
  Use this when copying pixels, etc.
- Sprite.Size now refers to sizes in effective pixel coordinates.
  Use this when rendering.
- Sheet.DPIScale has been removed.
- "Density" term is introduced to refer to the number of artwork
  pixels per effective pixel.
2020-02-26 23:47:15 +01:00
abc013
c0ece00c4b Prevent production cycling when producing actor does not occupy space 2020-02-26 23:25:41 +01:00
Paul Chote
6ba02800ab Add TransformsIntoTransforms to enable queued MCV redeploy. 2020-02-24 12:56:49 +01:00
Paul Chote
84419e4259 Add queued argument to CanIssueDeployOrder. 2020-02-24 12:56:49 +01:00
Paul Chote
2016ab105e Fix Reverses parsing. 2020-02-23 16:41:57 +01:00
Paul Chote
def65b10bd Don't crash with an unhelpful IndexOutOfRangeException. 2020-02-23 16:41:57 +01:00
Matthias Mailänder
31d98cc802 Reduce the electro death loop length. 2020-02-23 16:41:57 +01:00
Matthias Mailänder
ccbaa4f816 Setup the original laser zap death animation. 2020-02-23 16:41:57 +01:00
Matthias Mailänder
2049d1b26a Allow guessing of sprite sequence length from number of frames. 2020-02-23 16:41:57 +01:00
Matthias Mailänder
15f8469272 Use the original elongated tesla zap death animation. 2020-02-23 16:41:57 +01:00
Matthias Mailänder
43cac2f051 Don't complain about shadow frame length when there are none. 2020-02-23 16:41:57 +01:00
Matthias Mailänder
39b7db2703 Allow repetition of frames in sequence setups. 2020-02-23 16:41:57 +01:00
Paul Chote
d3291ea585 Fix script error in ordos05. 2020-02-23 11:03:23 +01:00
Ivaylo Draganov
2e8740d6a8 Change default hotkey bindings for select and cycle production buildings 2020-02-22 20:06:21 +00:00
Ivaylo Draganov
1bcad55c1f Add a hotkey to select the current production facility 2020-02-22 20:06:21 +00:00
Paul Chote
7ffc689037 Fix TD panel-transparent definition. 2020-02-22 12:39:11 -06:00
Paul Chote
7d17916e3f Load badges on the main thread. 2020-02-22 19:19:20 +01:00
abcdefg30
e877bb1206 Fix GrantConditionOnProduction not using ShowSelectionBar 2020-02-22 18:05:40 +00:00
reaperrr
226159d220 AttackBase ResolveOrder optimization
Only check for "Stop" when the other 'if' didn't apply.
2020-02-22 17:56:47 +00:00
reaperrr
da4ed24064 Mobile ResolveOrder optimization
When the order is "Move", the other two 'if' checks
are redundant, so 'else if' makes more sense here.
2020-02-22 17:56:47 +00:00
reaperrr
b524dc9b72 Carryall ResolveOrder optimization
There can be only one OrderString at a time,
so we make 'PickupUnit' an "else if", too.
2020-02-22 17:56:47 +00:00
reaperrr
1e43a8f590 Minor Aircraft ResolveOrder optimization
Streamline RTB if checks.
2020-02-22 17:56:47 +00:00
Matthias Mailänder
805a8fc556 Specify unicode without BOM as standard. 2020-02-22 18:44:10 +01:00
Robert
885931ae74 Run every color validation together
This ensures that color picks that have multiple issues will
have them all checked at the same time, including ensuring that
the fix for one issue doesn't cause another issue.

Handling of the onError action has been changed from being called
at once to collecting the potential errors in a HashSet to deduplicate
them and then calling onError after a valid color has been found.
(Otherwise you would in the worst case get 256 error messages logged!)
2020-02-22 16:31:29 +00:00
Robert
4d4f1d6068 Avoid null vectors when making colors valid
If the picked color and a forbidden color are identical (like
if they both picked the same palette color and in the special case
when a picked color is outside of the allowed range and the method
returns the picked color as the forbidden color),
the vector between them is zero and the maths for adjusting
the color fails by hitting the iteration limit. This changes
the zero vector to the smallest possible vector in order to
avoid the issue.

This can result in some seriously close adjustments in the case of
picking identical palette colors, which might
be undesirable compared to picking a new palette color.
2020-02-22 16:31:29 +00:00
Robert
fafa219d11 Added error message if color could not be adjusted
The failsafe in ColorValidator aborts after 255 iterations of
adjusting the color and picks a random color. This message makes it
clearer to the user. Results in two messages being displayed,
first one about adjusting and the about a random color pick.
2020-02-22 16:31:29 +00:00
Paul Chote
eae287efc3 Fix travis packaging. 2020-02-22 10:28:48 -06:00
Paul Chote
8903577227 Update native libraries shipped in the AppImages:
* SDL2 reverted back to 2.0.8 (2.0.9 and 2.0.10 generate compilation
  errors so are missing from the libs tarball)
* Package Freetype 2.0.10
2020-02-22 10:28:48 -06:00
Matthias Mailänder
103cb61020 Add a new rallypoint established notification. 2020-02-22 17:16:17 +01:00
Ivaylo Draganov
1dd1786469 Reduce duplication of "Battlefield Control" chat line label 2020-02-22 15:58:00 +00:00
Ivaylo Draganov
3e2022a3dd Allow players to mute shellmap background music 2020-02-22 15:50:01 +00:00
Paul Chote
28f7604172 Reset nextScanTime only when actually scanning for targets. 2020-02-22 16:30:07 +01:00
Paul Chote
96463634c7 Add --debug-chrome-regions utility command. 2020-02-22 16:18:45 +01:00
Paul Chote
01f5ecb2f9 Fix save game loading screen stripe bounds. 2020-02-22 16:14:32 +01:00
reaperrr
d835090d0b Move LCWCompression support to Mods.Cnc 2020-02-22 15:40:37 +01:00
reaperrr
c687600d66 Duplicate part of LCWCompression to VqaReader
Duplicates the part needed by the VqaReader,
so we can move LCWCompression to Mods.Cnc
ahead of VQA (which has some additional prerequisites).
2020-02-22 15:40:37 +01:00
reaperrr
ed618c807d Streamline LCWCompression code
Just making it more concise to reduce line count.
No functionality/efficiency changes.
2020-02-22 15:40:37 +01:00
Paul Chote
85faa5edf6 Add visual indicator when the game is muted. 2020-02-22 14:42:11 +01:00
Paul Chote
3f601e1ec1 Update color picker hue slider when the color changes. 2020-02-22 14:00:12 +01:00
teinarss
9d68b815a1 Fix tooltip in Observer widgets 2020-02-22 11:38:53 +01:00
teinarss
cffe5e3d9d Add owner token to TooltipContainer 2020-02-22 11:38:53 +01:00
Paul Chote
7e72cd262c Fix FlyAttack invalid target crash. 2020-02-19 23:35:16 -06:00
Paul Chote
9a6602656b Ignore nearEnough if we think the actor can get closer. 2020-02-18 19:37:17 +01:00
Matthias Mailänder
57da756f2f Set the camera pitch to 30° 2020-02-18 00:49:04 +01:00
abcdefg30
40bb45a02b Deprecate the release-20181215 path 2020-02-17 20:14:56 +00:00
abcdefg30
f73d23661f Update the update paths for release-20200202 2020-02-17 20:14:56 +00:00
Paul Chote
09a019f9c6 Add a lint check for LockFaction on mission players. 2020-02-16 20:51:29 +01:00
Paul Chote
4ec258cbdd Add missing LockFaction definitions to nod09, 10a, 10b. 2020-02-16 20:51:29 +01:00
Paul Chote
41d7a2d429 Fix an integer overflow when calculating selection priorities. 2020-02-16 17:57:04 +01:00
abcdefg30
7cec1b771d Fix Actor.CurrentActivity bogusly pointing to finished activities 2020-02-16 16:58:06 +01:00
abcdefg30
b1b74c13c3 Ensure that we never tick an activity before calling OnFirstRun 2020-02-16 16:58:06 +01:00
abcdefg30
c4a5540bfd Ensure that we never run Done child activities 2020-02-16 16:58:06 +01:00
abcdefg30
abcb2ea512 Directly mark queued activities that are cancelled as Done 2020-02-16 16:58:06 +01:00
Paul Chote
f45dd24781 Update AppImage SDL2 dependency to 2.0.10. 2020-02-16 14:53:42 +01:00
Paul Chote
8d23994a04 Update Windows SDL2 dependency to 2.0.10. 2020-02-16 14:53:42 +01:00
Paul Chote
46e0b3b363 Update macOS SDL2 dependency to 2.0.10. 2020-02-16 14:53:42 +01:00
Paul Chote
689049cc12 Fix NRE in ArmyUnit constructor. 2020-02-16 13:57:19 +01:00
Paul Chote
1485194ef3 Automatically scale DPI under Linux. 2020-02-16 13:44:50 +01:00
Paul Chote
4203a3191f Overhaul macOS packaging:
- Build on Travis-CI macOS VM
- Sign and notarize for distribution
- Create macOS-specific files from generic sources during packaging
- Add volume icon
- Rename osx directory to macos
2020-02-15 18:51:21 +01:00
Paul Chote
7b4019577d Force disable glDebugMessageCallback on Linux+AMD. 2020-02-15 11:38:30 +01:00
Paul Chote
52f4e24e22 Fix spectator minimap not updating when in "Disable Shroud" view. 2020-02-14 23:07:31 +01:00
Paul Chote
ab196a23e6 Fix AttackFollow ignoring allowMove flag when auto-targeting. 2020-02-14 17:30:38 +01:00
Paul Chote
3a688e03f0 Add multiple levels of fallback. 2020-02-12 21:17:39 +00:00
Paul Chote
a43335c7b0 Restore transient blocker check in pathfinding queries. 2020-02-12 21:17:39 +00:00
Paul Chote
585b8dc13c Set default rally point to an empty path. 2020-02-09 16:52:22 +01:00
Paul Chote
b2f0ac15e8 Generalize RallyPointInfo.Offset to support arbitrary length paths. 2020-02-09 16:52:22 +01:00
Paul Chote
9dc4ea8541 Fix production door not closing if the actor stays on the exit cell. 2020-02-09 16:52:22 +01:00
teinarss
817f75c808 Add unique ingame-observer.yaml for D2K 2020-02-09 16:37:21 +01:00
teinarss
7e3830e053 Updated production spec widget to handle overflow 2020-02-09 16:37:21 +01:00
teinarss
b81ede2d64 Added widget showing the army for players in spec 2020-02-09 16:37:21 +01:00
Mustafa Alperen Seki
6ab0ace9e1 Add PlayLaunchSounds() to SupportPowers which are missing it. 2020-02-09 13:34:46 +01:00
Paul Chote
85a5b6cc17 Fix subcell crusher logic. 2020-02-09 13:18:57 +01:00
Ivaylo Draganov
62af58c2e6 Calculate position of dropdown arrow glyph based on image width 2020-02-09 12:53:30 +01:00
abcdefg30
aeacc86028 Remove a loop closure guard variable 2020-02-09 12:18:09 +01:00
abcdefg30
5c4ec1bf0e Fix a crash when a SourceActor does not occupy space 2020-02-09 12:18:09 +01:00
abcdefg30
e3f545cae9 Make WarheadArgs.Source nullable 2020-02-09 12:18:09 +01:00
Paul Chote
71cbfc5968 Change default player color to dark red. 2020-02-08 20:09:02 +01:00
Paul Chote
fdc3a6a32d Change default name from Newbie to Commander. 2020-02-08 20:09:02 +01:00
Paul Chote
e6c1356d59 Add introduction prompt on first run. 2020-02-08 20:09:02 +01:00
Paul Chote
e8df28c518 Extract sysinfo logic to its own class. 2020-02-08 20:09:02 +01:00
Martin Bertsche
98aef70e88 Added display selection option to settings for fullscreen modes. 2020-02-08 18:14:35 +00:00
abcdefg30
de0bb9ee39 Fix a crash in the ReplaceAttackTypeStrafe update rule 2020-02-06 21:52:46 +00:00
tovl
c18857f15d Let immovable actors block individual minefield cells. 2020-02-06 22:26:15 +01:00
Paul Chote
9a0916afbb Add UI Scale dropdown to the settings menu. 2020-02-04 19:56:15 +01:00
Paul Chote
6388a6bff4 Add Graphics.UIScale setting to modify UI size. 2020-02-04 19:56:15 +01:00
Paul Chote
ce445f993c Add SupportDir argument to the launch-dedicated scripts. 2020-02-04 00:21:52 +01:00
Paul Chote
0e39c98989 Ignore empty support directory overrides. 2020-02-04 00:21:52 +01:00
Paul Chote
c2bc313bf0 Fix key repeat events queueing many deploy/scatter/stop orders. 2020-02-01 13:18:04 +01:00
Paul Chote
5c76a6e7a7 Fix key up events queueing duplicate deploy/scatter/stop orders. 2020-02-01 13:18:04 +01:00
Matthias Mailänder
1e8912b4e4 Fix the namespace. 2020-02-01 02:42:25 +01:00
abcdefg30
6cc27eaa76 Fix the description of VeteranProductionIconOverlay 2020-01-31 13:55:56 +01:00
Ivaylo Draganov
1020a7bfab Use common notice colors for UPnP status labels 2020-01-31 00:50:25 +01:00
Ivaylo Draganov
b80928bd95 Display a confirmation prompt on settings panel reset 2020-01-30 23:06:49 +01:00
abcdefg30
a6371f6fa9 Fix mission specific buildings not granting prerequisites 2020-01-29 20:59:45 +00:00
Paul Chote
bf314fdc7b Define window size in effective pixel coordinates. 2020-01-26 20:22:49 +01:00
Paul Chote
f0033c44c7 Use full window resolution on Windows. 2020-01-26 20:22:49 +01:00
Paul Chote
fd64ad7c89 Support rendering at non-integer display scales:
* 2x and 3x DPI artwork can be specified using
  Image2x and Image3x in chrome.yaml.
* Images are rendered using bilinear interpolation.
* For non-integer screen scales, prefer downscaling
  the next biggest resolution image over upscaling.
2020-01-26 20:22:49 +01:00
Paul Chote
809b1507a6 Fix font rendering at non-integer display scales. 2020-01-26 20:22:49 +01:00
Paul Chote
d91495a041 Allocate 1px empty margin between sprites. 2020-01-26 20:22:49 +01:00
Paul Chote
84daf890d3 Use antialiasing filter when rendering world annotations. 2020-01-26 20:22:49 +01:00
Paul Chote
1bc6fb0f46 Use antialiasing filter when rendering UI icons and actors. 2020-01-26 20:22:49 +01:00
Paul Chote
1f849e9f7d Add antialiasing support for paletted sprites. 2020-01-26 20:22:49 +01:00
Paul Chote
bd4724842c Fix software cursor rendering at fractional scales. 2020-01-26 20:22:49 +01:00
Paul Chote
25a7299c67 Fix scroll event position calculation. 2020-01-26 20:22:49 +01:00
Paul Chote
518450cd8a Extract load screen sheet handling into a superclass. 2020-01-26 20:22:49 +01:00
Paul Chote
57a8cf7a59 Rework Display settings tab. 2020-01-26 17:11:45 +01:00
Paul Chote
83732f299b Add DropDownButtonWidget.PanelAlign. 2020-01-26 17:11:45 +01:00
Paul Chote
f730b55255 Move hardware cursor control to hidden DisableHardwareCursors setting. 2020-01-26 17:11:45 +01:00
Paul Chote
370f7a44fa Restore cursor doubling for "default" cursor. 2020-01-26 17:11:45 +01:00
Paul Chote
f7e5111123 Apply cursor doubling setting without requiring a restart. 2020-01-26 17:11:45 +01:00
Paul Chote
847db5e59b Merge HardwareCursor and SoftwareCursor into CursorManager. 2020-01-26 17:11:45 +01:00
Mustafa Alperen Seki
d7f43b33c7 Make GrantConditionOnAttack PausableConditional 2020-01-26 17:05:02 +01:00
Paul Chote
3a6d88cfef Align settings to the standard row height. 2020-01-26 16:52:14 +01:00
Paul Chote
70f899c8d1 Remove unused localization options from settings.yaml. 2020-01-26 16:52:14 +01:00
Paul Chote
e138afc328 Overhaul Input settings. 2020-01-26 16:52:14 +01:00
Paul Chote
a84c914317 Move highlighting logic into a dedicated widget. 2020-01-26 16:52:14 +01:00
Paul Chote
46d59eef5e Update TD cash glyphs. 2020-01-25 22:02:43 +01:00
Paul Chote
79d25b9eca Update RA cash glyphs. 2020-01-25 22:02:43 +01:00
Paul Chote
cc530649c7 Fix horizontal positioning of dropdown arrow glyph. 2020-01-25 21:56:02 +01:00
abcdefg30
aeb623498f Remove old update rules 2020-01-25 21:29:36 +01:00
Mustafa Alperen Seki
d4b08850f3 Fix conditionality of DisguiseTooltipInfo. 2020-01-25 17:28:15 +02:00
Paul Chote
1fada0f2b4 Add KHR suffix as defined by the KHR_debug spec. 2020-01-25 13:44:06 +01:00
Paul Chote
b08f9886be Add Graphics.DisableGLDebugMessageCallback setting. 2020-01-25 13:44:06 +01:00
reaperrr
46384d25f2 Improve Rectangle HitShape debug overlay
Showing vertical sides, too.
2020-01-25 13:38:35 +01:00
reaperrr
9dcba8710b Add turret-linking support to HitShape
Allows to link a HitShape to the
position and facing of a turret.
2020-01-25 13:38:35 +01:00
reaperrr
b839204c7f Minor WithInfantryBody reorganisation
Move PlayStandAnimation to a more suitable position
inside the file.
2020-01-25 13:26:25 +01:00
reaperrr
595b6c8923 Greatly simplified WithInfantryBody TickIdle code
There was a lot of redundancy and unnecessary
complexity in several checks.

This now also prevents infantry from randomly
restarting and potentially switching between stand
sequences if there are no idle sequences.
Old behavior can still be replicated by listing
stand sequences as IdleSequences.
2020-01-25 13:26:25 +01:00
Ivaylo Draganov
9474bdba5c Use proper glyph for in-game chat close button 2020-01-25 13:17:09 +01:00
abcdefg30
f5aa304e09 Add stray update rules to the correct path 2020-01-25 10:48:50 +00:00
Pavel Penev
93bec9e430 Updated the default mods' weapons 2020-01-24 13:09:37 +01:00
Pavel Penev
d33a5bf94e Added an UpgradeRule CreateScreenShakeWarhead 2020-01-24 13:09:37 +01:00
Pavel Penev
b00154e2bc Created ShakeScreenWarhead and removed the hardcoded shaking from NukeLaunch and MadTank 2020-01-24 13:09:37 +01:00
reaperrr
6220d7e62e Introduce WarheadArgs
- Passes additional arguments to warheads on impact
- Uses that to reduce parameter count of DoImpact by 1
2020-01-21 19:31:34 +01:00
Paul Chote
fdc0a6e2b9 Rework TS Chrome in preparation for UI scaling. 2020-01-19 20:36:59 +01:00
Paul Chote
f37d9a7010 Rework D2k Chrome in preparation for UI scaling. 2020-01-19 20:34:18 +01:00
abcdefg30
9f66e3936d Add issue templates for the new issue template chooser 2020-01-19 17:27:43 +01:00
Paul Chote
f1325e12d4 Extract text contrast radius to ChromeMetrics and reduce to 1px. 2020-01-19 17:18:22 +01:00
Paul Chote
7611449d3d Reimplement text contrast using greyscale dilation. 2020-01-19 17:18:22 +01:00
abcdefg30
15b2d6b9e0 Let all Positionable traits notify visual position changes 2020-01-18 23:07:23 +00:00
Paul Chote
d0f44143c2 Fix activity cancellation on FlyAttack RTB.
* AbortOnResupply will now cancel queued activities
  in addition to the current attack.
* Resupply if no ammo is available during a standard attack.
* Don't resupply (move directly to target) if no ammo is available
  during an attack move (C&C3 style).
2020-01-18 16:38:53 +01:00
Paul Chote
51870a471a Add AttackSource enum. 2020-01-18 16:38:53 +01:00
Paul Chote
6f52365f9d Don't run NextActivity if it has been canceled. 2020-01-18 16:38:53 +01:00
Paul Chote
66b8689957 Use 32bit modcontent cursor. 2020-01-17 16:49:58 +01:00
Paul Chote
4fd475f7c2 Add RGBA cursor support. 2020-01-17 16:49:58 +01:00
Paul Chote
522861e484 Support 32 bit png sprites. 2020-01-17 16:49:58 +01:00
Paul Chote
1111ce4754 Add support for 32 bit BGRA sprites. 2020-01-17 16:49:58 +01:00
Paul Chote
cdbee49280 Fix slider ticks in TD. 2020-01-17 13:42:51 +01:00
reaperrr
aa63696933 Update rule for WithPermanentInjury removal 2020-01-16 22:56:39 +01:00
reaperrr
10540839f6 Make crippled TS Cyborgs use permanent TakeCover
This is more in line with original behavior.
Also allows us to remove WithPermanentInjury.
2020-01-16 22:56:39 +01:00
reaperrr
a9eca2cf54 Add support for enabling prone state permanently
Negative ProneTime now activates prone state
permanently as soon as the trait is enabled.
2020-01-16 22:56:39 +01:00
Paul Chote
d6436858a9 Fix IPAddress capitalization. 2020-01-15 12:12:54 +01:00
Paul Chote
38cb818469 Anonymise client IPs and allow server operators to disable sharing. 2020-01-15 12:12:54 +01:00
Paul Chote
422cc2b0d0 Hide location and IP labels if not known. 2020-01-15 12:12:54 +01:00
Paul Chote
d74a5065b9 Require GeoLite2 database path to be specified by the server operator. 2020-01-15 12:12:54 +01:00
Paul Chote
6b2c019caa Evaluate player location on the server. 2020-01-15 12:12:54 +01:00
Paul Chote
c430884c8b Require GeoLite2 database path to be specified by the server operator. 2020-01-15 12:12:54 +01:00
Matthias Mailänder
8dda6d8e3d Remove unnecessary null check. 2020-01-14 22:08:57 +01:00
Matthias Mailänder
c43d581e7f Add cursor palette support to GIMP/Jasc palette definitions. 2020-01-14 22:08:57 +01:00
teinarss
f0b69f8b8d Separated resource rendering into another trait 2020-01-14 19:38:47 +01:00
Matthias Mailänder
0e93d85273 Move the AssetBrowserFileEndingsFilter to IGlobalModData
to avoid mods having to duplicate the whole chrome layout.
2020-01-13 13:46:34 +01:00
Paul Chote
adb3c8e39c Split fixed-wing attack and strafe attack types. 2020-01-12 21:06:35 +01:00
tovl
85bc843554 Fix aircraft failing to engage targets within range. 2020-01-12 21:06:35 +01:00
Matthias Mailänder
c95216cd19 Move the hard-coded shroud palette to the C&C folder. 2020-01-12 19:35:41 +00:00
Paul Chote
cc05621c10 Draw editor terrain/resource preview as part of the world. 2020-01-12 18:30:50 +01:00
Paul Chote
e74033bded Render editor actor previews as part of the world. 2020-01-12 18:30:50 +01:00
Paul Chote
fe25fdf0ff Improve robustness of editor actor cell checks. 2020-01-12 18:30:50 +01:00
Paul Chote
1282650274 Rework RA Chrome in preparation for UI scaling. 2020-01-12 18:16:41 +01:00
Paul Chote
d622015b59 Fix Texture.GetData under GLES. 2020-01-12 17:04:23 +01:00
Paul Chote
524e8875d0 Restore MODIFIER_OVERRIDES handling of unmodified attack move hotkey. 2020-01-12 16:33:35 +01:00
Paul Chote
8c2a2d2cb8 Rework TD/modcontent chrome in preparation for UI scaling. 2020-01-12 15:52:12 +01:00
abcdefg30
a28992aa38 Default LocalClientId in ReplayConnection to -1
We do not have a local client in replays.
This change prevents anything from accidentally using (sometimes there might be clients with ID 0 present).
2020-01-12 14:23:34 +01:00
Paul Chote
0db4085950 Load and save registrations to both the active and legacy support directories. 2020-01-12 14:10:23 +01:00
Paul Chote
f162d90e9f Rework support dir initialization. 2020-01-12 14:10:23 +01:00
abcdefg30
abfb28a4f3 Fix the Build function in gdi04b 2020-01-12 14:04:51 +01:00
abcdefg30
c15a555cff Fix cargo initialisation 2020-01-12 13:58:04 +01:00
abcdefg30
e1c07d32d5 Prevent cell triggers in sarin-gas-2 from firing several times 2020-01-12 13:49:25 +01:00
tovl
fbfef903ac Let movement trigger visibility recalculation. 2020-01-12 04:50:25 +01:00
tovl
695d9a6cb1 Centralize shroud changes in one pass to improve performance. 2020-01-12 04:50:25 +01:00
Paul Chote
0106ed3669 Restore red lines for harvester targets. 2020-01-12 04:08:59 +01:00
abcdefg30
ac42dd79ca Make the command bar directly check if a GuardOrderGenerator is active 2020-01-12 00:54:38 +00:00
abcdefg30
deffc2dd15 Add support for defining the palette of WithResourceLevelOverlay 2020-01-12 00:47:20 +00:00
reaperrr
bb1d5f1d5c Fix ReloadAmmoPool.ResetFire ignoring multipliers 2020-01-11 23:29:37 +00:00
teinarss
43eabdf54a Fix naming in editor 2020-01-11 22:03:26 +00:00
tovl
0e32cbee5e Fix crash in RallyPointIndicator. 2020-01-11 21:26:47 +00:00
reaperrr
308c64c7b1 Fix trait order issues with KillsSelf 2020-01-06 21:47:53 +00:00
reaperrr
16c2062d9d Replace LandOnCondition with landing when paused 2020-01-06 21:47:53 +00:00
reaperrr
ac44367440 Refactor Spin to MaximumSpinSpeed
Additionally, add descriptions to
other FallsToEarth properties.
2020-01-06 21:47:53 +00:00
reaperrr
20beb4abe1 Fix Harpy husk rotor offset 2020-01-06 21:47:53 +00:00
reaperrr
a369634ea8 Display EMP effect on EMP'd aircraft's husks
When EMP'd while airborne.
2020-01-06 21:47:53 +00:00
reaperrr
7a095f30ec Make TS aircraft crash when EMP'd mid-air
And refuse move orders if EMP'd while landed.
Matches original behaviour.
2020-01-06 21:47:53 +00:00
Punsho
59bcac410f Make EMP effect carryall and orca transport 2020-01-06 21:47:53 +00:00
reaperrr
4499343ed2 Make Aircraft actually pausable/disableable
This commit makes aircraft
- ignore any aircraft-specific orders while disabled
- show blocked move cursor while paused
- set speeds to zero while paused or disabled
2020-01-06 21:47:53 +00:00
reaperrr
4b006bc484 Make Aircraft PausableConditional
Note: This commit only does the minimum changes
to implement PausableConditional, there are no
logic changes yet (like disabling movement on PauseOnCondition).
2020-01-06 21:47:53 +00:00
abcdefg30
23b3c237b7 Update the year numbers in all license headers to 2020 2020-01-05 17:00:34 +00:00
Matthias Mailänder
e33cf8a8ae Fix a crash when cursor is null. 2020-01-05 13:27:53 +00:00
Matthias Mailänder
7e9a3d3bc9 Unhardcode transparent index in manual palettes as well. 2020-01-05 13:17:43 +00:00
Matthias Mailänder
6ea85a1a62 Don't hard-code the transparent background color. 2020-01-05 13:17:43 +00:00
Ivaylo Draganov
535144b208 Use system chat line for audio muted/unmuted notifications 2020-01-04 23:05:25 +00:00
Paul Chote
439cd4aded Rework HardwareCursor sprite padding.
All frames in a sequence now use the same bounds
and hotspot, and have a size that is a multiple of 8.
2020-01-04 22:45:51 +01:00
tovl
2094142b7d Include tunnel check in CanStayInCell. 2020-01-04 16:04:27 +00:00
tovl
196d9670d3 Disallow units from idling on bibs in TS. 2020-01-04 16:04:27 +00:00
tovl
434c46058f Disallow units idling on service depot. 2020-01-04 16:04:27 +00:00
tovl
c360d8bcef Make service depot passable. 2020-01-04 16:04:27 +00:00
teinarss
76221471ff Remove unused code from Cargo trait 2020-01-03 19:34:56 +01:00
teinarss
a9d7535915 Remove cargo initialization from Tick 2020-01-03 19:34:56 +01:00
teinarss
20610d05a2 Remove CurrentAdjacentCells update on each tick in Cargo 2020-01-03 19:34:56 +01:00
Ivaylo Draganov
af5d8a3bbe Add a hotkey to cycle harvesters 2020-01-02 23:42:22 +01:00
abcdefg30
ab348336f5 Fix ants teleporting into the map area
Waypoint17 is not at the map edge, waypoint7 is.
Also fixes a path, since waypoint20 -> waypoint10 is going back and makes no sense.
Going directly waypoint20 -> waypoint2 works and as compensation I added waypoint21 -> waypoint10 -> waypoint2.
2020-01-02 16:34:38 +00:00
reaperrr
804d61a6a1 Fix DeliverUnit-related crash 2020-01-01 20:42:36 +01:00
Paul Chote
baa5b3d25e Bypass fingerprint validation for skirmish/mission servers. 2020-01-01 20:33:30 +01:00
Paul Chote
8f2bf27edf Replace Server.Dedicated with Server.Type. 2020-01-01 20:33:30 +01:00
abcdefg30
a9f37bc9f1 Remove a leftover geoip reference from the linux packaging script 2019-12-31 17:03:05 +00:00
unknown
79136a520f Remove dublicate function 2019-12-31 17:32:43 +01:00
Paul Chote
adf1c0b616 Remove GeoIP database from install/packaging scripts. 2019-12-31 17:28:30 +01:00
Paul Chote
e063e13ff4 Remove automatic GeoIP download from the build scripts.
The database file is now locked behind an account login.

https://blog.maxmind.com/2019/12/18/significant-changes-to-accessing-and-using-geolite2-databases/
2019-12-31 17:28:30 +01:00
reaperrr
9d7ecdbc2c Disable SupportPowerInstances when player lost
Fixes bots using player actor powers after defeat.
2019-12-30 22:50:54 +01:00
reaperrr
7a57f0e6ef Expose delay of WithDeathAnimation
Allows to show it a few ticks after death if the modder
wishes so.
2019-12-30 18:01:09 +00:00
reaperrr
c55c65f6d7 Add delay support to SpriteEffect 2019-12-30 18:01:09 +00:00
reaperrr
037ce9ebf3 Rename ProneTime to Duration
More in line with our property naming conventions.

Additionally, added descs to ProneOffset and
ProneSequencePrefix, since at  least the purpose of
the former isn't entirely clear without looking at the code.
2019-12-30 11:34:41 +01:00
reaperrr
cef940fea9 Fix TakeCover to be disabled properly
Speed and Damage modifiers were ignoring IsTraitDisabled.
2019-12-30 11:34:41 +01:00
Paul Chote
a7ae93978a Disable sound controls when no audio device is available. 2019-12-29 17:53:44 +01:00
Paul Chote
4052620f94 Rename dummy sound label to "No Sound Output". 2019-12-29 17:53:44 +01:00
Paul Chote
032c412e09 Fix WithTextDecoration rendering. 2019-12-28 21:44:26 +01:00
Paul Chote
5a686b3289 Fix duplicated/distorted SequencePlaceBuildingPreview annotations. 2019-12-28 20:56:09 +01:00
Paul Chote
2bf16a34d6 Filter invalid actor IDs when restoring selection save data. 2019-12-28 20:48:46 +01:00
Paul Chote
7ccc63b51c Fix incorrect region definitions. 2019-12-28 19:15:36 +01:00
Paul Chote
e7253fd643 Manual chrome.yaml cleanups. 2019-12-28 19:15:36 +01:00
Paul Chote
f3d7bf403e Rework chrome.yaml format and panel rendering. 2019-12-28 19:15:36 +01:00
Paul Chote
0b8a367867 Fix MiniYaml parsing of empty comments 2019-12-28 19:15:36 +01:00
abcdefg30
aabfd91001 Fix an indentation style issue in TransformsIntoAircraft 2019-12-28 19:16:21 +03:00
Ivaylo Draganov
3d1b4c2509 Remove "Surrender" button for single player games 2019-12-28 15:06:26 +00:00
Ivaylo Draganov
14bc7885b3 Always prompt the user to confirm when leaving a game 2019-12-28 15:06:26 +00:00
Ivaylo Draganov
2204e807b8 Add restart button to main menu for single player (missions, skirmish, replays) 2019-12-28 15:06:26 +00:00
abcdefg30
baa50c9c53 Pass DamageTypes in Explodes 2019-12-28 10:54:27 +01:00
Paul Chote
7d887f0332 Fix NV shader compile errors in combined.frag. 2019-12-27 20:20:42 +01:00
Paul Chote
51eaa17b1e Replace frame limit text field with a slider. 2019-12-26 17:25:38 +01:00
Paul Chote
35a36b4cdf Disable frame limiter by default
VSync does a more reliable job of this.
2019-12-26 17:25:38 +01:00
Paul Chote
2231183fe0 Account for game ticks when applying the frame limiter. 2019-12-26 17:25:38 +01:00
Paul Chote
656a260171 Add VSync setting. 2019-12-26 17:25:38 +01:00
abcdefg30
959c750851 Move voice playing for orders into a helper function 2019-12-23 15:01:36 +01:00
abcdefg30
4d407da3e6 Fix a potential crash in PlayVoiceForOrders 2019-12-23 15:01:36 +01:00
abcdefg30
bb1d1f8140 Remove a nowadays unnecessary loop safeguard 2019-12-23 14:57:50 +01:00
abcdefg30
d2db707521 Move unit order resolving into a helper function 2019-12-23 14:53:13 +01:00
Abdurrahmaan Iqbal
a107da0888 Fix for mod credits overriding engine credits 2019-12-23 13:48:47 +00:00
Paul Chote
b1f7c5c4e3 Remove overlapping vision ranges from RA actors.
This brings a significant perf saving by reducing
the number of evaluated tiles.
2019-12-23 13:53:08 +01:00
Paul Chote
04bad1ae66 Add MinRange support to AffectsShroud. 2019-12-23 13:53:08 +01:00
Paul Chote
5830d4de6c Fix ATEK vision ranges. 2019-12-23 13:53:08 +01:00
abcdefg30
bb85146544 Make orcas buildable on nod07c 2019-12-21 00:48:03 +01:00
abcdefg30
c4ab5d4561 Fix/Update the patrols on nod07c 2019-12-21 00:48:03 +01:00
abcdefg30
54e2aad1cd Fix broken reinforcements on gdi04 and limit them to 3 waves 2019-12-21 00:48:03 +01:00
abcdefg30
b1f6c69fce Use a global script in Tiberian Dawn 2019-12-21 00:48:03 +01:00
abcdefg30
dbe73a06ad Remove ISync from RallyPoint 2019-12-15 23:21:27 +01:00
Paul Chote
f36d0cc214 Fix ModContent cursor. 2019-12-15 22:29:26 +01:00
abcdefg30
1e138a9774 Drop invisible invalid targets immediately when changing stance 2019-12-14 17:17:36 +01:00
abcdefg30
905e02b765 Prevent a crash in AutoTarget.HasValidTargetPriority 2019-12-14 17:17:36 +01:00
Paul Chote
3487846636 Restore NukePower support for proxy actors. 2019-12-14 17:07:16 +01:00
tovl
203fff0ab7 Allow queued structure rallypoints. 2019-12-13 23:51:03 +01:00
tovl
3236499fb7 Increase IMove.MoveTo call flexibility. 2019-12-13 23:51:03 +01:00
Paul Chote
28dbda29e3 Add zoom hotkeys. 2019-12-13 21:29:43 +01:00
Paul Chote
1dcb903580 Implement new viewport size/zoom UI. 2019-12-13 21:29:43 +01:00
Paul Chote
860117daf9 Implement optimized pixel-art antialiasing mode for non-integer world zoom. 2019-12-13 21:29:43 +01:00
Paul Chote
cd368b43df Draw GPS dots using the UI renderers. 2019-12-13 21:29:43 +01:00
Torleif West
ae4b2591bf fix for RA2 cloning vats
formatting

minor formatting

passing CI

closing line bracket

use production unit

opening should not be followed by a blank line

revert tab change
2019-12-12 22:08:25 +01:00
Paul Chote
b0c65c5eb9 Overhaul cursor double setting. 2019-12-11 13:38:52 +01:00
Paul Chote
010fafc6d3 Fix hardware cursors on systems with >150% DPI scaling. 2019-12-11 13:38:52 +01:00
Paul Chote
79aac08a48 Fix turret positioning in the map editor. 2019-12-11 11:02:04 +01:00
Paul Chote
630ca0aefb Draw editor selection box using the UI renderers. 2019-12-11 11:02:04 +01:00
abcdefg30
2918ecadaa Fix team chat messages not always being displayed 2019-12-10 13:05:38 +01:00
reaperrr
82be8d9990 Move AUD support to Mods.Cnc 2019-12-09 22:06:53 +01:00
reaperrr
4d92fde5f7 Remove VqaReader dependency on AudReader
Use ImaAdpcmReader directly, since VQAs only contain
header-less raw IMA  ADPCM audio.
2019-12-09 22:06:53 +01:00
reaperrr
5afc1c1443 Remove duplication between IMA and AUD readers
These parts were identical duplicates, so I removed them
and made AudReader depend on ImaAdpcmReader instead.

Applied some style fixes while I was at it.
2019-12-09 22:06:53 +01:00
abcdefg30
22374ed732 Remove the bogus 'GameSaved' speech notification definition 2019-12-08 21:56:24 +01:00
abcdefg30
bc484a9858 Add 'AirstrikeReady' to 'DisablePrefixes' 2019-12-08 21:56:24 +01:00
abcdefg30
9a57980952 Remove 'AbilityInsufficientPower' from cnc's notifications 2019-12-08 21:56:24 +01:00
Ivaylo Draganov
0900ac2b2f Remove stray "Hotkeys" label in the Input Settings panel in TD 2019-12-08 21:38:28 +01:00
reaperrr
4751b1a176 Move ShpTDLoader, LZO and XORDelta formats to Mods.Cnc
They're pretty much RA/TD-specific formats.
2019-12-08 19:43:51 +00:00
reaperrr
cd123830c3 Move VocLoader from D2k to Cnc
My assumption that the D2 mod would want,
let alone need Mods.D2k was wrong.
Meanwhile, it does need Mods.Cnc for at least
the Pak format as well, so this is a good enough
compromise.
2019-12-08 18:14:17 +00:00
Ivaylo Draganov
93e42b0b27 Add selection tiers as inheritable templates 2019-12-08 18:39:21 +01:00
tovl
088919fecc Change color of selection box based on selection mode. 2019-12-08 17:34:10 +01:00
reaperrr
efc06a020b Move WithDeliveryAnimation to Mods.Common 2019-12-08 16:03:14 +00:00
reaperrr
fe1d3b3821 Move ProductionAirdrop to Mods.Common 2019-12-08 16:03:14 +00:00
reaperrr
948a9c9b19 Add ProductionAirdrop.ActorType update rule 2019-12-08 16:03:14 +00:00
Paul Chote
2603a495e6 Add render_world perf sampler. 2019-12-08 04:36:31 +01:00
Paul Chote
8c41e6a3f7 Remove redundant zoom parameter. 2019-12-08 04:36:31 +01:00
Paul Chote
327866ffc3 Render world via an intermediate FrameBuffer. 2019-12-08 04:36:31 +01:00
Paul Chote
0c8a47b5af Add scissor support to IFrameBuffer. 2019-12-08 04:36:31 +01:00
Paul Chote
e7de7b4c05 Introduce World and UI rendering phases. 2019-12-08 04:36:31 +01:00
Paul Chote
ebd1557523 Draw voxel debug annotations using the UI renderers. 2019-12-08 04:36:31 +01:00
abcdefg30
9a5eaa7cb7 Don't throw an exception when a field is missing 2019-12-07 09:15:38 +01:00
Curtis Shmyr
f037436536 Added TooltipName as an actor Lua property 2019-12-06 09:33:23 +01:00
abcdefg30
b1571ad17a Make Parachutable public 2019-12-05 23:13:35 +01:00
Paul Chote
494a7870d6 Add fallback exits to RA Kennel. 2019-12-05 18:01:09 +01:00
Paul Chote
dbe1d2d928 Add fallback exits to TS barracks. 2019-12-05 18:01:09 +01:00
Paul Chote
2146dd29bb Add priority levels to Exit. 2019-12-05 18:01:09 +01:00
matjaeck
5ac9d2c2f1 Fix botmodules querying the Player actor before it is assigned. 2019-12-05 01:48:56 +01:00
reaperrr
a74235bdbc Move ShpD2 and TmpRA/TD loaders to Mods.Cnc
Reducing the count of proprietary formats in Mods.Common.

Note: Moving ShpD2 to Mods.Cnc is intentional. RA/TD
use it for their original mouse shp files, and any D2(k) mod
will normally need Mods.Cnc anyway, while we can avoid
adding a Mods.D2k dependency to RA/TD this way.
2019-12-01 16:23:54 +01:00
reaperrr
a98a96b05d Update update rule paths 2019-11-30 20:08:27 +01:00
abc013
b4c116cb31 Fix ExtractLanguageStrings utility command 2019-11-29 16:40:00 +01:00
reaperrr
074ebefee1 Fix FCOM still providing space while being captured 2019-11-27 23:04:28 +01:00
tovl
6fb3dc050b Let CreateGroup use ExtraActors field. 2019-11-26 22:06:37 +01:00
tovl
00ce1d7ee6 Allow additional actor IDs to be send with orders. 2019-11-26 22:06:37 +01:00
reaperrr
b8e15fbe40 Move FastByteReader from LCW to own file
And make it public.
Making it easier to move formats that depend on it
to Mods.Cnc independently later.
2019-11-23 19:04:27 +01:00
reaperrr
3f06541b2b Move Shp conversion/remap commands to Mods.Cnc 2019-11-23 19:04:27 +01:00
reaperrr
65728bc032 Move VocLoader to Mods.D2k
While this is strictly speaking a D2 format, any
D2 mod is pretty much guaranteed to use Mods.D2k,
so this should be a good enough place to move it to.
2019-11-23 19:04:27 +01:00
reaperrr
c4597b5c6b Fix RA desert tree fire palette
By default WithDamageOverlay uses the actors'
palette, but RA's desert terrain uses the TD desert.pal
which isn't compatible with RA's fire animation shps.
2019-11-23 18:40:27 +01:00
abcdefg30
142f823e6f Explain that CanEnterCell ignores 'subCell' if there is a free subcell 2019-11-21 14:13:17 +01:00
abcdefg30
25b7386f0d Let Mobile's CanEnterCell consider ToSubCell 2019-11-21 14:13:17 +01:00
abcdefg30
4717e98c48 Add a subCell parameter to IPositionableInfo.CanEnterCell 2019-11-21 14:13:17 +01:00
abcdefg30
980c1e1b6a Fix McvManagerBotModule spamming deploy orders
Removes the 'activeMCVs' list since it was not useful.
The real bugfix is not iterating over 'activeMCVs' when issueing new orders
(this was previously needed for already discovered mcvs that stopped)
but over 'newMCVs' instead.
2019-11-20 16:44:39 +01:00
teinarss
a47f60d3a6 Add a trait PlayerRadarTerrain to track explored terrain 2019-11-20 16:24:56 +01:00
reaperrr
ee00954f2e Replace AmmoPool lookup methods with properties
And gave the more suitable names while at it.
This is more in line with how we do things in
other places.
2019-11-20 15:45:41 +01:00
teinarss
c77aa4c8f9 Add IsDead check to FerryUnit OnFirstRun 2019-11-19 15:59:27 +01:00
reaperrr
8181a452cb Fix some header dates
Seems these were overlooked or merged after
the dates of the other files were updated.
2019-11-17 22:32:51 +01:00
Paul Chote
f39b688c39 Add GrantPrerequisiteChargeDrainPower and DrainPrerequisitePowerOnDamage.
These traits implement the Firestorm defense charge/drain logic.
2019-11-17 17:06:29 +01:00
Paul Chote
1fa90c0474 Allow support powers to override the icon overlay/tooltip labels. 2019-11-17 17:06:29 +01:00
Paul Chote
70b020205d Rename *Time to *Ticks and increase internal resolution. 2019-11-17 17:06:29 +01:00
Paul Chote
e03abdc0da Add support for custom SupportPowerInstances. 2019-11-17 17:06:29 +01:00
Paul Chote
61c56dcb00 Fix DamageModifier crashes when an actor is demolished.
Demolish calls GetDamageModifier with a null Damage.
2019-11-17 17:06:29 +01:00
Paul Chote
6b1e81a7b5 Spawn ejected pilots inside a FrameEndTask. 2019-11-16 23:07:58 +01:00
RoosterDragon
04912ea996 Expose a setting for Weighted A*
Replace Constants.CellCost and Constants.DiagonalCellCost with a dynamically calculated value based on the lowest cost terrain to traverse. Using a fixed value meant the pathfinder heuristics would be incorrect.

In the four default mods, the minimum cost is in fact 100, not 125. This increase would essentially allow the pathfinder to return suboptimal paths up to 25% longer in the worst case, but it would be quicker to do so.

This is exactly what Weighted A* does - overestimate the heuristic by some factor in order to speed up the search by checking fewer routes. This makes the heuristic inadmissible and it may now return suboptimal paths, but their worst case length is bounded by the weight. A weight of 125% will never produce paths more than 25% longer than the shortest, optimal, path.

We set the default weight to 25% to effectively maintain the existing, suboptimal, behaviour due to the choice of the old constant - in future it may prove a useful tuning knob for performance.
2019-11-15 13:05:41 +01:00
Abdurrahmaan Iqbal
72eb4e1749 Fix #17230: Dummy audio output class 2019-11-14 23:46:14 +01:00
blackhand1001
70b1df6ce7 Fix squadmanager adding naval units to ground attack forces.
Fix squadmanager adding naval units to ground attack forces. This was breaking the behavior of both naval and ground squads.
2019-11-09 11:19:09 +01:00
abcdefg30
a586f10875 Don't allow movement for actors without IMove
However, this does not check if any existing IMove traits are enabled.
2019-11-08 23:31:59 +01:00
abcdefg30
980c0c9cd4 Fix actors returning fire at invisible attackers 2019-11-08 23:31:59 +01:00
blackhand1001
d20182f158 Simplify for loop structure now that it only has one check
Simplify for loop structure now that it only has one check
2019-11-08 21:04:32 +01:00
blackhand1001
49d07e9d64 Fix MCV Manager glitch when restrict building area is enabled.
Fix MCV Manager glitch when restrict building area is enabled. It was checking if the location was close enough to the Base center instead of using the MCV Managers min and max ranges. This would cause it to often have no valid locations despite having a huge range.
2019-11-08 21:04:32 +01:00
matjaeck
ba73842747 Allow GrantCondition to grant conditions permanently. 2019-11-08 16:37:13 +01:00
matjaeck
900e857bfa Let AI ignore frozen actors and target original actors instead. 2019-11-08 15:32:06 +01:00
Abdurrahmaan Iqbal
d2819dca77 Show dialogue only when there are unsaved changes 2019-11-07 20:33:43 +01:00
blackhand1001
780982dbe2 Add PlaceDefenseTowardsEnemyChance trait to basebuilderbotmodule
Add PlaceDefenseTowardsEnemyChance trait to basebuilderbotmodule. This defeaults to 100 which is the current behavior. This change now allows you to set the chance that bots will place defenses evenly around the base like the AI in stock red alert and Tiberian sun did.
2019-11-06 10:30:36 +01:00
reaperrr
2de51ae73c Cache IPathFinder in Mobile at creation
Avoiding look-ups on every move order,
as well as reducing line lengths.
2019-11-03 20:53:29 +01:00
Paul Chote
27205b30e5 Remove landing behaviour from force-move orders on selectable buildings. 2019-11-02 18:29:16 +00:00
abcdefg30
34f4c9bdaa Prevent chronoshifting an empty selection 2019-11-02 11:29:28 +01:00
Abdurrahmaan Iqbal
023750db06 Prevent showing wall connections in unexplored terrain 2019-11-01 22:13:38 +01:00
teinarss
c94cf61069 Fix OccupiedCells for units sharing cells 2019-10-31 21:49:07 +00:00
Paul Chote
5315f8603f Override selection if the mouse is over an already selected actor. 2019-10-30 14:53:23 +01:00
Paul Chote
0e4cb53ada Pass contextual information to TargetOverridesSelection. 2019-10-30 14:53:23 +01:00
Paul Chote
3d6621f7ff Force selection cursor when selection overrides input. 2019-10-30 14:53:23 +01:00
Paul Chote
9d4f683d80 Remove WorldRenderer argument from InputOverridesSelection. 2019-10-30 14:53:23 +01:00
Paul Chote
0cfd6337ff Fix InputOverridesSelection only considering the closest actor. 2019-10-30 14:53:23 +01:00
Paul Chote
230a0b330c Fix EjectOnDeath pilot spawning. 2019-10-29 23:03:11 +01:00
Paul Chote
3ee697a54d Install x64 release into correct Program Files on Windows. 2019-10-28 21:03:49 +01:00
tovl
d2991247a3 Add separate condition to mobile for disabling nudging only. 2019-10-28 19:35:32 +01:00
tovl
38caadfdf0 Clean up nudging code. 2019-10-28 19:35:32 +01:00
tovl
c4d1468f62 Make locomotor cache and nudging logic aware of mobile trait status. 2019-10-28 19:35:32 +01:00
reaperrr
7e5b1abc0e Simplified initial Wanders countdown initialization
I don't see a technical reason for the old approach.
2019-10-27 18:03:34 +02:00
RoosterDragon
b98123d9f8 Use SegmentStream.CreateWithoutOwningStream to avoid reading data into memory.
To avoid creating copied data in memory (e.g. via MemoryStream), this method can be used to reference offsets on files on disk, reducing memory requirements.
2019-10-24 20:48:14 +02:00
blackhand1001
9a9bf441ba Add UseResourceStorage trait to CashTrickler 2019-10-23 20:20:03 +02:00
Paul Chote
1599eac66c Rename SelectionBoxRenderable to SelectionBoxAnnotationRenderable. 2019-10-20 23:46:33 +02:00
Paul Chote
43e84c89ef Rename SelectionBarsRenderable to SelectionBarsAnnotationRenderable. 2019-10-20 23:46:33 +02:00
Paul Chote
8e280ef0a7 Rename RangeCircleRenderable to RangeCircleAnnotationRenderable. 2019-10-20 23:46:33 +02:00
Paul Chote
81d9b705a6 Rename DetectionCircleRenderable to DetectionCircleAnnotationRenderable. 2019-10-20 23:46:33 +02:00
Paul Chote
4ec0fa299d Rename TextRenderable to TextAnnotationRenderable. 2019-10-20 23:46:33 +02:00
Paul Chote
7937383bf4 Replace scaleSizeWithZoom with SpriteAnnotation. 2019-10-20 23:46:33 +02:00
Paul Chote
e772adb0a9 Draw annotations using the UI renderers. 2019-10-20 23:46:33 +02:00
Paul Chote
8c1b0f1afe Add IEffectAnnotation interface. 2019-10-20 23:46:33 +02:00
Paul Chote
0ff078968d Change IPlaceBuildingDecorationInfo to use annotations. 2019-10-20 23:46:33 +02:00
Paul Chote
7d1ce0c83b Add annotation support to IOrderGenerator. 2019-10-20 23:46:33 +02:00
Paul Chote
1dc84f48de Migrate traits to IRenderAnnotations. 2019-10-20 23:46:33 +02:00
Paul Chote
edaa7918fc Add IRenderAnnotations(WhenSelected) interfaces. 2019-10-20 23:46:33 +02:00
Paul Chote
060ea80ca4 Fix infantry idle animations playing immediately after creation. 2019-10-20 16:38:25 +02:00
Paul Chote
c15a0a54bb Don't consider unit creation as movement. 2019-10-20 16:38:25 +02:00
Paul Chote
252c833320 Don't override spawn CenterPosition for non-aircraft reinforcements. 2019-10-19 23:45:42 +02:00
abcdefg30
fdd3bffa1d Throw a lua exception when setting an owner to null/nil 2019-10-19 13:34:43 +02:00
Paul Chote
988d6079e3 Disable Carryable while submerged. 2019-10-19 13:11:00 +02:00
Paul Chote
f14d3985a0 Allow carryall pickup orders on deployed vehicles. 2019-10-19 13:11:00 +02:00
Paul Chote
5f8fa7a35a Add UndeployOnPickup to GrantConditionOnDeploy. 2019-10-19 13:11:00 +02:00
Paul Chote
69970d42f3 Prevent movement pausing at invalid position. 2019-10-19 13:11:00 +02:00
Paul Chote
ae34410c80 Replace MoveIntoWorld with ReturnToCell/AssociateWithAirfield. 2019-10-17 23:31:15 +02:00
Paul Chote
9b4d149a06 Revert "Suppress MoveIntoWorldInit for map-placed Mobile actors."
This reverts commit f0c28cc153.
2019-10-17 23:31:15 +02:00
abcdefg30
f5f626cd89 Revert "Production should set SubCellInit"
This reverts commit fa1ca981ac.
2019-10-17 23:31:15 +02:00
Abdurrahmaan Iqbal
763e6d8109 Fix #17229: Refactor ReturnToBase.cs 2019-10-17 10:28:43 +02:00
reaperrr
aa953ba5a1 Remove unused and buggy stand2 sequence from ants
They were unused, their settings were wrong,
and even if fixed they'd make idle ants look
glitchy, because the game switches between
stand sequences randomly.
2019-10-15 14:48:11 +02:00
reaperrr
33bba98773 Fix zombie stand2 sequence and run tickrate 2019-10-14 17:28:46 +02:00
abc013
8b1f1b21e7 Adjusted die sequence length of zombie 2019-10-14 17:28:46 +02:00
abc013
3ec0aa55b9 Fixed zombie.shp
Added missing zombie attack frame
and other fixes.
2019-10-14 17:28:46 +02:00
tovl
33d089a9d6 Fix lastVisibleTarget not being set in FlyAttack and AttackActivity. 2019-10-14 01:22:04 +02:00
abcdefg30
1d90e08bd0 Guard against overlaps on HiDPI by having a 5px border on graphs 2019-10-14 01:02:23 +02:00
abcdefg30
acf028581a Special case the TD spectator UI to fit the minimum width 2019-10-14 01:02:23 +02:00
abcdefg30
9084295d7c Reduce the width of the combat stats tab 2019-10-14 01:02:23 +02:00
abcdefg30
3f89f74d8e Reduce the Width of INGAME_OBSERVERSTATS_BG 2019-10-14 01:02:23 +02:00
reaperrr
88d930579b Fix missing rules in prep update path 2019-10-13 22:37:03 +01:00
abc013
3d3814f336 Add isDead-check to the flamethrowers in allies06b 2019-10-13 18:14:10 +02:00
abc013
3e244998cd Make normal difficulty on allies06b easier 2019-10-13 18:14:10 +02:00
Nakarin Srijumrat
17bec1435b increased ingame edge scrollspeed to 30 from 10 2019-10-13 13:20:24 +02:00
teinarss
fa1ca981ac Production should set SubCellInit 2019-10-12 00:08:15 +02:00
abcdefg30
e9020048fb Add an update rule to remove 'yes' and 'no' 2019-10-12 00:07:05 +02:00
abcdefg30
76ad9962d7 Split off a new UpdatePath for changes not going into prep-1908 2019-10-12 00:07:05 +02:00
abcdefg30
55c3f313b1 Remove 'yes' and 'no' in favor of 'true' and 'false' 2019-10-12 00:07:05 +02:00
abc013
c4f48ad521 Use another plug location for placing plugs on a building when current plug location is already blocked 2019-10-11 22:52:55 +02:00
Paul Chote
ba2d2299d9 Update macOS launcher package.
This pulls in a fix for the missing libmono-native-compat.dylib
2019-10-11 21:58:32 +02:00
abcdefg30
f9f1167b62 Minor style fixes 2019-10-11 21:48:24 +02:00
abcdefg30
e2bbbde494 Reduce string allocations in ObserverStatsLogic 2019-10-11 21:48:24 +02:00
abcdefg30
3672b4e674 Keep army and income graph disabled if they were disabled once 2019-10-11 21:48:24 +02:00
abcdefg30
ee839869fc Replace "$/min" by "Income" and increase graph update rates 2019-10-11 21:48:24 +02:00
abcdefg30
4ca42f6e83 Remove $/min from the basic stats 2019-10-11 21:48:24 +02:00
abcdefg30
0ad8320bff Add an XAxisTicksPerLabel property to LineGraphWidget 2019-10-11 21:48:24 +02:00
abcdefg30
feb58801e0 Work around a recursive loop in TargetAndAttack 2019-10-11 21:00:53 +02:00
Paul Chote
3860cd1b98 Add "Deployed" checkbox in the map editor actor properties. 2019-10-10 19:50:05 +02:00
Paul Chote
c08e290f44 Add "Spawn Child Actor" checkbox in the map editor actor properties. 2019-10-10 19:50:05 +02:00
Paul Chote
966290a623 Add EditorActorCheckbox plumbing. 2019-10-10 19:50:05 +02:00
Paul Chote
5eaa99827d Suppress MoveIntoWorldInit for map-placed Mobile actors. 2019-10-07 19:02:48 +02:00
tovl
eed00ded0d pause MovePart when Mobile is paused. 2019-10-06 20:28:20 +01:00
Jonas A. Lind
1557f4c134 Redo buildpaletteorder for RA vehicles
Restructure RA's vehicle build tab. More streamlined and better looking.
2019-10-06 20:22:16 +02:00
abcdefg30
acea19312d Fix FallsToEarth queueing an activity in its ctor 2019-10-06 14:42:50 +01:00
abcdefg30
56726a0533 Add an ICreationActivity interface 2019-10-06 14:42:50 +01:00
abcdefg30
39f8d34494 Fix setting the position of the wrong actor 2019-10-06 14:42:50 +01:00
abcdefg30
ab87e78dff Fix the XAxis of LineGraphWidget not being updated properly 2019-10-06 13:10:58 +01:00
abcdefg30
548ff411ef Cache method call results in variables in Draw of LineGraphWidget 2019-10-06 13:10:58 +01:00
Chris Cameron
36c48e1785 feat: Using a glDebugMessageCallback instead of glGetError on devices that support it 2019-10-05 21:26:20 +01:00
Punsho
460f5bbb30 Make EMP dissable subterranean units while they're underground 2019-10-05 19:19:57 +02:00
Punsho
d9ec3e0d88 Make EMP dissable detection of mobile sensor array 2019-10-05 19:19:57 +02:00
Punsho
e1e7691fb4 Make laser fence dissable on emp 2019-10-05 19:19:57 +02:00
tovl
ac6431acf8 Clean up usage of CancelActivity. 2019-10-05 19:07:54 +02:00
teinarss
1e786b8e31 Add null check to EditorDefaultBrush for resources 2019-10-05 18:39:39 +02:00
Paul Chote
575541ff4e Remove double-negative from appimage wrapper. 2019-10-05 18:25:13 +02:00
Paul Chote
e94f20f7ca Reset environment variables before switching mods. 2019-10-05 18:25:13 +02:00
Paul Chote
3bda890f7b Add Engine.LaunchWrapper launch argument for mod switching. 2019-10-05 18:25:13 +02:00
Paul Chote
bdd0f68a4a Compile using Mono 6.4.0. 2019-10-05 18:24:45 +02:00
Paul Chote
275365917c Update packaged mono to 6.4.0. 2019-10-05 18:24:45 +02:00
SoScared
b9b7f435dd Redo buildpaletteorder for D2K buildings 2019-10-05 18:21:08 +02:00
Andre Mohren
7f7341a369 Fixed incorrect sequence frame amount checks using Stride. 2019-10-05 18:03:09 +02:00
Paul Chote
c30bb28210 Filter invalid actors when loading and saving games. 2019-10-05 17:50:10 +02:00
Paul Chote
3ad3c39b21 Replace actor list with count in UnitBuilderBotModule. 2019-10-05 17:50:10 +02:00
abcdefg30
b839796b89 Fix double clicking a save in the save game dialogue loading it 2019-10-05 17:39:23 +02:00
abcdefg30
ca92e13b24 Fix harvesters idling on Infiltration 2019-10-05 16:09:42 +02:00
abcdefg30
294908485f Fix the town attackers in Infiltration not stopping 2019-10-05 16:09:42 +02:00
abcdefg30
d2a2c11326 Remove unnecessary SearchFromHarvesterRadius overwrites from TD missions 2019-10-05 16:03:32 +02:00
abcdefg30
716aeb1e8c Add SearchFromProcRadius to TD missions that need it 2019-10-05 16:03:32 +02:00
abcdefg30
321c891bc0 Fix a crash when MaxLevel of GainsExperience is zero 2019-10-05 15:56:59 +02:00
teinarss
d34bce9eab Remove CanEnterCell from OccupiedCells 2019-10-05 14:37:54 +02:00
teinarss
9bfc324c04 Mark cells that have changed MovementType as dirty 2019-10-05 14:37:54 +02:00
Ivaylo Draganov
ad02adff3e Set duplicates flag for hotkeys in HotkeyManager 2019-10-05 13:17:20 +02:00
Punsho
38f5d2c100 RA balance changes for September 2019 2019-10-05 11:03:06 +01:00
Michael Silber
81eb939d4d Fix destroyed truck escaping ra mission sarin-gas-1 2019-10-04 22:41:10 +01:00
Paul Chote
865d8d77e0 Expire invalid instances from the SupportPowerBotModule cache. 2019-10-01 19:25:30 +02:00
Paul Chote
cf427f8cb3 Drop invalid power references when loading save games. 2019-10-01 19:25:30 +02:00
abcdefg30
6f85711252 Increase the SearchFromProcRadius radius in soviet05 2019-09-30 20:28:26 +02:00
abcdefg30
70c278dec5 Remove the now unnecessary Helper refinery 2019-09-30 20:28:26 +02:00
Punsho
9ca7eb6ab1 Make mine targetable on attack everything stance for AutoTargetGround 2019-09-28 14:20:23 +02:00
teinarss
93704ccfcf Add check to see if transport is dead to UnreserveSpace 2019-09-28 14:08:01 +02:00
abcdefg30
411316726b Fix the expansion mcv in soviet05 being transported off the map 2019-09-28 14:01:36 +02:00
abcdefg30
4d2b70acd1 Revert the search radius decrease in D2k 2019-09-28 13:58:24 +02:00
abcdefg30
c0620bd186 Revert the search radius decrease in TS 2019-09-28 13:58:24 +02:00
teinarss
0e6fa51bb0 Rename duplicated actors 2019-09-27 18:04:29 +02:00
teinarss
76034c198e Added Undo Redo to editor 2019-09-27 17:40:32 +02:00
teinarss
1f78b3a425 Cleanup in MapEditorTabsLogic 2019-09-27 17:40:32 +02:00
tovl
48059e8249 Skip rally point if order is queued after resupply. 2019-09-26 18:39:44 +02:00
tovl
09cd56b367 Add missing target line to aircraft taking off from resupplying. 2019-09-26 18:39:44 +02:00
tovl
145b6a05a3 Refactor unreserve actions. 2019-09-26 18:39:44 +02:00
tovl
5787f74af9 Prevent bogus attackmove on take-off. 2019-09-26 18:39:44 +02:00
Punsho
78d7f79817 Fix ctank and stank building faster then they should 2019-09-26 17:13:42 +02:00
abcdefg30
9356c8afd0 Fix unarmed units idling on the ts shellmap 2019-09-24 16:48:52 +02:00
abcdefg30
72bff74ca5 Fix passengers idling on the ts shellmap 2019-09-24 16:48:52 +02:00
abcdefg30
2d304efb73 Convert all spaces to tabs in the ts shellmap script 2019-09-24 16:48:52 +02:00
abcdefg30
c7784cbc8e Fix reinforcements on the ts shellmap not attack moving 2019-09-24 16:48:52 +02:00
Punsho
e1a5a725b0 Fix MRV not auto targeting vehicles 2019-09-22 18:46:56 +02:00
tovl
3d4838b5bc Make airlift landing direction configurable. 2019-09-21 18:16:34 +02:00
tovl
b4270af170 Fix airlift direction in isometric mods. 2019-09-21 18:16:34 +02:00
tovl
3fb54ea6ea Add option for airlift to arrive from player baseline. 2019-09-21 18:16:34 +02:00
tovl
ed7667683b Fix deployed units being nudgeable. 2019-09-19 20:52:13 +02:00
SoScared
61aaac888b Add map Climax to RA map pool 2019-09-16 00:21:47 +02:00
RoosterDragon
6c9fbd40dc Implement IEquatable on structs.
Any struct which overrides object.Equals(object obj) should implement IEquatable<T> to gain a more efficient Equals(T other) overload. This overload will be used by hashing collections like Dictionary which enables them to check equality without boxing the struct.
2019-09-15 19:56:58 +02:00
tovl
4a609bbee8 Allow units to give way when path is blocked by oncoming unit. 2019-09-15 17:51:34 +01:00
Ivaylo Draganov
32309bb8ea Add duplicate hotkey tracking with a boolean property on the definition 2019-09-15 16:35:18 +02:00
Paul Chote
df2300bee0 Fix player viewport saving for non-spectators. 2019-09-15 15:11:47 +02:00
Oliver Brakmann
6e18de4370 Fix idling aircraft on Intervention 2019-09-15 15:02:01 +02:00
abcdefg30
0462cfa507 Remove selling from Infilitration
It is weird, unsatisfying for the player and inconsistent with the rest of our missions
2019-09-15 14:51:32 +02:00
abcdefg30
aee9ee6187 Fix potentially bogus usages of OnAllRemovedFromWorld 2019-09-15 14:51:32 +02:00
RoosterDragon
31918e8712 Add UnionRectangles extension method. 2019-09-14 22:09:40 +02:00
Paul Chote
0e6c37d765 Convert TerrainGeometryOverlay to IRenderAboveShroud. 2019-09-14 18:49:44 +02:00
Paul Chote
f45423ed76 Convert EditorSelectionLayer to IRenderAboveShroud. 2019-09-14 18:49:44 +02:00
Paul Chote
b3984c8db4 Convert WarheadDebugOverlay to IRenderAboveShroud. 2019-09-14 18:49:44 +02:00
Paul Chote
999ad0e18a Convert CustomTerrainDebugOverlay to IRenderAboveShroud. 2019-09-14 18:49:44 +02:00
Paul Chote
ccd07b6cfe Convert ExitsDebugOverlay to IRenderAboveShroudWhenSelected. 2019-09-14 18:49:44 +02:00
Paul Chote
60e42c1ea1 Convert CombatDebugOverlay to IRenderAboveShroud. 2019-09-14 18:49:44 +02:00
Paul Chote
c9ed749908 Add (Polygon|Circle|Line)AnnotationRenderable. 2019-09-14 18:49:44 +02:00
Paul Chote
a9a43d54f7 Convert WithRangeCircle to IRenderAboveShroud. 2019-09-14 18:49:44 +02:00
abcdefg30
7f6149713e Fix actors with no footprint not being copied and pasted 2019-09-13 23:55:48 +01:00
tovl
eb39080248 Allow minefields to start and end on occupied cells. 2019-09-13 23:47:34 +01:00
matt barbier
97fe36af5a Moved GrantExternalConditionToProduced into the Traits/Conditions folder 2019-09-13 22:04:35 +01:00
teinarss
c15f66aa62 PlayerStatistics should stop ticking after lost/win 2019-09-13 21:42:11 +01:00
reaperrr
694680720e Updated AcceptsOrder check to be more readable
This hopefully also fixes handling of multiple enabled
RejectsOrders traits.
2019-09-13 19:49:19 +01:00
abcdefg30
465ee97090 Prevent users from selecting a directional target outside the map 2019-09-13 14:47:29 +02:00
Paul Chote
a8b1762464 Fix ActorPreviewWidget viewport manipulation. 2019-09-13 11:24:57 +02:00
tovl
46c0b4cf31 Fix crash with dead cargo. 2019-09-13 10:34:15 +02:00
Jan Beich
4f99982ef1 Extend Linux dllmap to other systems
- Drop `os` in Eluant config as it's only used on Linux
- Make generic to help BSDs and Solaris
- Update OpenAL-CS and SDL2-CS to get the same

Exception of type `System.DllNotFoundException`: lua51.dll
TypeName=``
  at (wrapper managed-to-native) Eluant.LuaApi.lua_newstate(Eluant.LuaRuntime/LuaAllocator,intptr)
  at Eluant.LuaRuntime..ctor ()
  at Eluant.MemoryConstrainedLuaRuntime..ctor ()
  at OpenRA.Scripting.ScriptContext..ctor (OpenRA.World world, OpenRA.Graphics.WorldRenderer worldRenderer, System.Collections.Generic.IEnumerable`1[T] scripts)
  at OpenRA.Mods.Common.Scripting.LuaScript.OpenRA.Traits.IWorldLoaded.WorldLoaded (OpenRA.World world, OpenRA.Graphics.WorldRenderer worldRenderer)
  at OpenRA.World.LoadComplete (OpenRA.Graphics.WorldRenderer wr)
  at OpenRA.Game.StartGame (System.String mapUID, OpenRA.WorldType type)
  at OpenRA.Game.LoadShellMap ()
  at OpenRA.Mods.Common.LoadScreens.BlankLoadScreen.StartGame (OpenRA.Arguments args)
  at OpenRA.Game.InitializeMod (System.String mod, OpenRA.Arguments args)
  at OpenRA.Game.Initialize (OpenRA.Arguments args)
  at OpenRA.Game.InitializeAndRun (System.String[] args)
  at OpenRA.Program.Main (System.String[] args)
2019-09-13 00:25:50 +02:00
Jan Beich
fe48eede0e command -v with more than one argument is non-portable
On FreeBSD build fails, so check if `msbuild` exists without arguments.

$ gmake
command: wrong number of arguments
OpenRA requires the 'msbuild -verbosity:m -nologo' tool provided by Mono >= 5.4.
gmake: *** [Makefile:154: core] Error 1

# FreeBSD sh
$ command -v echo ls
command: wrong number of arguments

# dash
$ command -v echo ls
echo

# ksh, bash, zsh
$ command -v echo ls
echo
/bin/ls
2019-09-13 00:25:50 +02:00
Paul Chote
afe3e24cda Remove duplication in Texture. 2019-09-12 18:58:37 +01:00
Paul Chote
ce8112fb5a Migrate rendering to OpenGL 3.2 / OpenGL ES 3.0. 2019-09-12 18:58:37 +01:00
Paul Chote
91c63034d3 Clean references to disposed textures. 2019-09-12 18:58:37 +01:00
teinarss
d712bdea85 Locomotor cache should handle custom layers 2019-09-09 21:39:25 +02:00
abcdefg30
912a424596 Replaced "Earned this min" by an Oil Derrick count in the economy statistics 2019-09-08 12:47:33 +02:00
abcdefg30
1e6660ecb2 Add an "UpdatesDerrickCount" trait 2019-09-08 12:47:33 +02:00
Paul Chote
8f267ebcef Remove IronCurtainable from RA aircraft. 2019-09-08 12:24:27 +02:00
teinarss
c13fb80257 Fix crushable logic for actors in cell 2019-09-07 13:31:57 +01:00
abcdefg30
ca8ca2df5c Fix a division by zero error in FindAndDeliverResources
by preventing an overflow through dividing directly
2019-09-07 10:48:20 +01:00
puritylake
aff3bf369b #17018 Gets rif of cutoff line in chat window 2019-09-06 23:02:50 +02:00
teinarss
6fe31e44cb More robust logic for ThisMinute stats 2019-09-06 14:00:42 +02:00
teinarss
6795fb6967 GetAvailableSubCell should block cells outside the map 2019-09-06 13:32:09 +02:00
abcdefg30
9516ee511d Remove the duplicate Selectable trait on TENF 2019-09-06 13:18:37 +02:00
Paul Chote
1d106e71c4 Save screenshots via the frame buffer. 2019-09-04 20:20:04 +02:00
Paul Chote
c0ee346c1c Render via an intermediate frame buffer. 2019-09-04 20:20:04 +02:00
Paul Chote
d2298b6f04 Allow FrameBuffer clear color to be customized. 2019-09-04 20:20:04 +02:00
Paul Chote
09dd66fd5a Correctly fix BlendMode.Subtractive alpha handling. 2019-09-04 20:20:04 +02:00
Paul Chote
b93c7cabb3 Render voxels before BeginFrame. 2019-09-04 20:20:04 +02:00
Oliver Brakmann
5d786f411f Update comment in Activity.cs
SequenceActivities() was removed.
2019-09-02 01:45:35 +02:00
reaperrr
801f5ba525 Rename FlyCircle to FlyIdle and make it tick TickIdle
It now handles both hovering and circling aircraft, for consistency.
2019-09-01 16:38:44 +02:00
teinarss
ce29dcad87 Update PlayerResources capacity from INotify* methods 2019-08-28 00:32:01 +02:00
reaperrr
8edd202b64 Move InflictDamage method back to DamageWarhead
From TargetDamageWarhead.
Saves a few lines and allows warheads that are not
TargetDamageWarhead-based to use it.
2019-08-27 23:05:19 +02:00
reaperrr
07de3ba5e0 Change default preview facing to 96
92 is not a multiple of 8, and all sprite actors
in the official mods have at most 32 facings.
2019-08-27 22:59:22 +02:00
Paul Chote
2b4ad71151 Remove unused OwnerLinkedProc field. 2019-08-25 17:20:38 +02:00
Paul Chote
815ea1e13b Make LastSearchFailed local to FindAndDeliverResources. 2019-08-25 17:20:38 +02:00
Paul Chote
1d2b3ac917 Update the displayed replay filename after renaming. 2019-08-25 16:10:29 +02:00
Paul Chote
c1be8d277e Disable player color for TD walls. 2019-08-25 15:33:46 +02:00
Paul Chote
19d9541aad Disable player color for RA walls. 2019-08-25 15:33:46 +02:00
teinarss
4dd8472d9b Reset server after game 2019-08-25 15:30:45 +02:00
Paul Chote
6702395357 Fix flare animation definition in RA and TD. 2019-08-25 15:24:32 +02:00
tovl
946c9f420b Fix Move not cancelling during turns. 2019-08-25 13:13:37 +02:00
Paul Chote
8b0f2e1462 Fix NRE in SquadManagerBotModule. 2019-08-24 14:33:11 +02:00
Paul Chote
d5f42c0628 Recalculate visibility during moves too. 2019-08-23 14:31:29 +02:00
Paul Chote
76d1447a91 Fix incorrect shroud visibility for stationary units. 2019-08-23 14:31:29 +02:00
Paul Chote
4db3da61e1 Avoid an integer (long) overflow in FindAndDeliverResources. 2019-08-23 14:15:51 +02:00
Ivaylo Draganov
be1f820674 Move hotkey dialog logic into SettingsLogic, fix bugs and improve usability of the dialog 2019-08-23 14:08:09 +02:00
tovl
ed8abe9861 Define nearenough parameter for aircraft so they can exit movement early when stuck. 2019-08-23 13:54:58 +02:00
reaperrr
e71001f4f8 Fix Resupply closeEnough bugs
Fixes that
- RepairableNear actors wouldn't move close enough
- isCloseEnough would return 'true' even if the host
  is invalid.
2019-08-22 10:26:36 +01:00
Paul Chote
8457dfdc39 Add Gatekeeper notice to macOS dmg. 2019-08-21 15:16:00 +01:00
Paul Chote
a491bae39b Bind triggers to RA Shellmap's APC passengers. 2019-08-21 11:24:20 +02:00
Paul Chote
f31cfe5b96 Fix SendParatroopers return value. 2019-08-21 11:24:20 +02:00
Paul Chote
ab94ea9715 Discourage harvesters from wandering too far from the refinery. 2019-08-20 20:22:39 +02:00
Paul Chote
7e4da8ea2c Don't reload after finishing a field. 2019-08-20 19:51:12 +02:00
Paul Chote
7311ae889f Clear placed mines queued fields too. 2019-08-20 19:51:12 +02:00
Paul Chote
9aec48aec3 Lay mines in order from start to end. 2019-08-20 19:51:12 +02:00
abcdefg30
3a51cf0ef8 Update AUTHORS 2019-08-20 19:26:02 +02:00
teinarss
7544d4b4e6 Cells with Temporary blockers should not exit early in locomotor cache 2019-08-19 19:06:57 +02:00
abcdefg30
345905bf68 Remove the gunboat from Lost Souls 2019-08-19 16:55:35 +02:00
abcdefg30
8cf6aa267c Allow single observers to use spectator team chat in mp 2019-08-19 16:45:15 +02:00
tovl
3fe78a8311 Add to AUTHORS. 2019-08-19 00:33:38 +02:00
tovl
2d394f33b8 Fix units from transports appearing at load point. 2019-08-19 00:33:38 +02:00
tovl
70459b311e Refactor FlyAttack to make strafing runs interruptible when target becomes invalid. 2019-08-18 12:50:20 +02:00
Paul Chote
e600848947 Fix crash for invalid Resupply hosts. 2019-08-18 12:48:17 +02:00
Hedog
2a6f2bbe0e Update movement inside leap to show attack animation 2019-08-17 12:42:06 +02:00
Paul Chote
2c24a607bc Fix Target.Positions returning null for invalid FrozenActors. 2019-08-15 20:13:04 +02:00
Ivaylo Draganov
8f7da18dc5 Kill buildings on surrender in TS 2019-08-15 19:13:15 +02:00
tovl
08c472b2e2 Disallow attack-moving units from chasing their targets. 2019-08-15 18:03:30 +02:00
Paul Chote
441585b3aa Truncate SLOT_OPTIONS and PLAYER_ACTION dropdown labels. 2019-08-15 17:25:14 +02:00
Paul Chote
78302ea593 Rework aircraft rally point handling. 2019-08-15 17:02:27 +02:00
reaperrr
08db7586d4 Fix Enter cursor for non-TakeOffOnResupply
If the aircraft does not take off on resupply,
we allow it to enter resuppliers without ForceMove modifier.

ResolveOrder already handled this correctly, only the cursor
shown was wrong.
2019-08-13 02:26:21 +02:00
teinarss
e05dc0afe3 Remove support power timers from spectator ui 2019-08-13 02:13:54 +02:00
Paul Chote
9c81507d6d Adjust lobby option bin margins. 2019-08-12 19:13:05 +02:00
abcdefg30
ea80a13b11 Let the utility remove stray trailing whitespaces 2019-08-11 16:40:55 +02:00
abcdefg30
84fbcd7c47 Apply the update rule to the default mods 2019-08-11 16:40:55 +02:00
abcdefg30
bfc3e1354b Rename SearchFromOrderRadius to SearchFromHarvesterRadius 2019-08-11 16:40:55 +02:00
abcdefg30
698ef5e375 Don't use SearchFromProcRadius when searching from self.Location 2019-08-11 16:40:55 +02:00
abcdefg30
ead35bccda Decrease SearchFromProcRadius and SearchFromOrderRadius 2019-08-11 16:40:55 +02:00
reaperrr
b7d966f78f Don't exit FlyOffMap immediately on leaving map
Usually they'll get removed afterwards, so they need to be
out of players' sight before ending this activity.
2019-08-11 16:28:42 +02:00
reaperrr
64780fc865 Fix ProductionAirdrop aircraft removal timing
...when leaving map before finishing TakeOff.
2019-08-11 16:28:42 +02:00
teinarss
ff1d4ec9ae Fix Out of sync caused by Locomotor cache 2019-08-11 09:53:02 +02:00
abcdefg30
859d01da7d Always remove the spawn cameras after prison infiltration 2019-08-10 21:20:17 +01:00
abcdefg30
a8ff8e75fc Make warfactory infiltration a secondary objective 2019-08-10 21:20:17 +01:00
abcdefg30
7ddae59d83 Prevent a second infiltration of warfactory or prison 2019-08-10 21:20:17 +01:00
abcdefg30
851d115a44 Fix allies05a crashing by ensuring the cameras exist before removing them 2019-08-10 21:20:17 +01:00
tovl
a8b9562d74 Adjust waypoint linewidths. 2019-08-10 21:17:38 +01:00
tovl
8690a4a6ce CLean up type check in harvesterbotmodule. 2019-08-10 19:12:50 +01:00
tovl
1b4ab564fe Fix AI harvester not resuming after chronoshift. 2019-08-10 19:12:50 +01:00
tovl
5393b689d4 Disable preemptive targeting for queued orders. 2019-08-10 19:10:45 +01:00
teinarss
4193247169 Reset Locomotor cache on world loaded 2019-08-10 17:34:11 +02:00
teinarss
ab9834fdcd Update locomotor cache when Crushable is enabled/disabled 2019-08-10 17:34:11 +02:00
teinarss
277906c657 Fixes on blocking logic 2019-08-10 17:34:11 +02:00
Tomase
98602cb1cb Change impassable terrain to short.max 2019-08-10 17:34:11 +02:00
Paul Chote
702f4d1937 Remove unused return values from Show*Dropdown methods. 2019-08-10 16:03:59 +02:00
Paul Chote
d0faaf29ff Restore selection lines for TargetLinesType.Automatic spectators. 2019-08-10 16:03:59 +02:00
Paul Chote
19aea3c07a Change target line default to "Manual". 2019-08-10 16:03:59 +02:00
Paul Chote
95ca14d4a3 Replace DrawTargetLine checkbox with an Automatic/Manual/Disabled dropdown. 2019-08-10 16:03:59 +02:00
Paul Chote
2909445452 Display target lines when the Waypoint command bar mode is active. 2019-08-10 16:03:59 +02:00
Paul Chote
292196e2d6 Allow left click to cancel AttackMove without clearing selected units. 2019-08-10 13:08:32 +02:00
Paul Chote
ad099b5c98 Allow Attack Move and Guard OGs to be activated while shift is held. 2019-08-10 13:08:32 +02:00
abcdefg30
d1c56d78e1 Fix spamming repair orders repairing faster 2019-08-10 11:39:12 +01:00
tovl
c0d5cd750d Add missing target lines. 2019-08-10 12:17:36 +02:00
teinarss
daa82d113e Prevent crash when unloading Cargo structures 2019-08-10 11:52:33 +02:00
Ivaylo Draganov
017eca3dc1 Add support for "select all" and "select by type" for multiple players 2019-08-09 22:40:09 +02:00
reaperrr
7cfc65010f Fix that aircraft with TakeOffOnResupply can't force-land 2019-08-09 09:45:40 +02:00
reaperrr
969be686a3 Fix aircraft with TakeOffOnResupply not taking off
...after auto-resupply.
2019-08-09 09:45:40 +02:00
abcdefg30
ddf824b494 Fix AutoCarryall crashing when the cargo dies 2019-08-08 17:46:34 +02:00
reaperrr
ac3b3db7ac Made Resupply canceling more robust
The following improvements are made here:
- merged and streamlined the two IsCanceling checks in Tick
  into one that covers both isCloseEnough cases
- isCloseEnough now only checks distance to host
  if host is still valid and otherwise returns 'false'
- called transports are now also cancelled when host becomes
  invalid, not only if the activity is cancelled via order
- aircraft now always take off if the host becomes invalid
- ground actors only try to leave if host is still existing
2019-08-08 17:22:53 +02:00
Paul Chote
ddc4c4ff06 Add queuing support to RepairOrderGenerator for units. 2019-08-07 21:31:20 +02:00
Paul Chote
1543ccb749 Reverse target line draw order. 2019-08-07 14:03:40 +02:00
reaperrr
b0a7865cfa Reduce Map.Contains(CPos) cost in legacy mods
If a mod uses rectangular maps and no height levels,
checking if the CPos is within Bounds
should be enough and cheaper than the whole ToMPos
conversion and checks.
2019-08-07 14:02:18 +02:00
Paul Chote
8ffd8ae822 Remove ShowTargetLines from delivery Lua API calls.
Lines should only be activated in response to an
explicit player action.
2019-08-06 17:56:56 +02:00
Paul Chote
96263d47c5 Restore target line display for allied players and spectators.
Change behaviour to require the force-display modifier to reduce
visual noise.
2019-08-06 17:52:43 +02:00
tovl
58bb7fcbc0 Rework minefield visualisation. 2019-08-05 02:53:09 +01:00
tovl
b7a7b7aa7e Revise target line colours to distinguish different attack types. 2019-08-05 02:53:09 +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
Paul Chote
bc4dea406d Fix AttackTDGunboatTurreted exiting early. 2019-08-05 02:53:09 +01:00
tovl
8c7ff3b5b0 Make VisualMove uninterruptible by making Turn a Child of Drag. 2019-08-04 11:48:59 +02:00
tovl
207305e7d2 Reimplement MADtank logic as activity. 2019-07-30 11:03:32 +02:00
tovl
9e6f8aef60 Do not cancel parent activity when refinery is destroyed. 2019-07-29 19:56:23 +02:00
Paul Chote
a4b8ffa99d Allow PBOG to nudge blocking helicopters. 2019-07-28 11:31:24 +02:00
Paul Chote
2f99512bd4 Clear dirty blocking cells after updating. 2019-07-27 17:21:43 +02:00
Paul Chote
6345655bb1 Add a PerfSample to UpdateCellBlocking. 2019-07-27 17:21:43 +02:00
Paul Chote
8ae2b00414 Allow boxes to be placed in interior maps. 2019-07-27 13:11:51 +02:00
Paul Chote
6e978db1da Extract a ^Box template to reduce duplication. 2019-07-27 13:11:51 +02:00
4mfie
ff02b8ba06 Add timestamps to server log files
Servers are now writing timestamps to the log files using the the ISO 8601 timestamp format defined in the game server settings.
2019-07-27 10:47:24 +01:00
Andre Mohren
ebc533ed53 Exception should inform which actors causes it. 2019-07-27 10:44:30 +01:00
teinarss
b5c387774c Fixed selecting none in spec dropdown should set none as active panel 2019-07-27 10:17:34 +01:00
teinarss
cc84daacea Added cache for cell cost and blocking 2019-07-26 15:54:22 +02:00
teinarss
fb1af81280 Updated TerrainInfo cost to use short 2019-07-26 15:54:22 +02:00
teinarss
27077d6427 Added CellUpdated event to ActorMap 2019-07-26 15:54:22 +02:00
teinarss
3a17b26405 Creating PlayerMask 2019-07-26 15:54:22 +02:00
teinarss
2ddf9fa826 Using Locomotor instead of Info for pathfinding 2019-07-26 15:54:22 +02:00
Paul Chote
c00b13a18e Fix player color when a client is bumped to a spectator slot. 2019-07-24 23:07:12 +02:00
reaperrr
4c3f2f3afa Fix aircraft allowing enter when it should not
Show "enter-blocked" cursor when resupply is not possible,
except when
-  the actor CanForceLand,
- does not TakeOffOnResupply,
- and has active ForceEnter modifier.
2019-07-23 17:01:41 +02:00
reaperrr
5b3e6175ea Fix Repairable returning order targeter for aircraft
Aircraft (currently) does its own order targeting for resupplies,
so this could lead to conflicts.
2019-07-23 17:01:41 +02:00
reaperrr
e7769357a8 Improve AircraftCanEnter readability 2019-07-23 17:01:41 +02:00
reaperrr
e662f17f06 Fix that VTOLs can ignore TurnToDock/-Land
When already at horizontal target position, no Turn was queued.
2019-07-23 16:17:18 +02:00
tovl
d9e1a68453 Cancel carryall transport request when cancelling order. 2019-07-22 22:54:01 +02:00
Punsho
9ac3d7507c Add Fake Allied Barracks to RA 2019-07-21 23:59:14 +02:00
reaperrr
f25449a3bf Set InitialFacing for TS aircraft to 224
North-East looks better as starting and landing facing.
2019-07-21 16:29:38 +02:00
reaperrr
30c2e6b4d2 Remove Resupply re-queueing hack from Aircraft
By preventing that other traits can remotely cancel Resupply
or ReturnToBase.
2019-07-21 16:29:38 +02:00
reaperrr
bfcdb3a8a2 Add IdleBehavior enum to Aircraft 2019-07-21 16:29:38 +02:00
reaperrr
d185f6e9f1 Remove AbortOnResupply from Aircraft again
This was accidentally re-added during a rebase in
a previous PR.
2019-07-21 16:29:38 +02:00
reaperrr
7f4fbfcf46 Change Resupply closeEnough 'infinite' to negative
...instead of 'zero'.

Returning 'true' at a distance of zero was a legacy left-over
that isn't used anymore once #16695 is merged.
2019-07-21 15:17:09 +02:00
reaperrr
fa41554309 Fix actors resupplying even if too far from resupplier 2019-07-21 15:17:09 +02:00
teinarss
f46cad5347 Fix game minute in PlayerStatistics 2019-07-21 14:23:25 +02:00
teinarss
e06c97bc03 Updated the LineGraphWidget with new layout 2019-07-21 14:23:25 +02:00
teinarss
60250e621c Fix random flag for spec in score screen 2019-07-21 13:50:02 +02:00
teinarss
551d72b061 Fixes flag in spec ui 2019-07-21 13:50:02 +02:00
tovl
c5558e2145 Remove SequenceActivities. 2019-07-20 23:41:31 +02:00
Ivaylo Draganov
86c8dfe96e Add a tooltip text to overflowing ButtonWidget in hotkey settings panel 2019-07-20 17:39:07 +02:00
Ivaylo Draganov
ef0cb7552d Revert "Scissor the text of a ButtonWidget if it overflows and display a tooltip"
This reverts parts of commit 76a6e7ec92.
2019-07-20 17:39:07 +02:00
Punsho
70dc053c5f RA balance changes 2019-07-20 12:09:54 +01:00
tovl
a38c2d9aae Allow ReturnToBase to exit if actor does not land at building. 2019-07-19 12:19:15 +02:00
tovl
ed18ecfcaf Allow explicit landing orders to be disabled in yaml. 2019-07-19 12:14:39 +02:00
teinarss
931d5acc33 Balancing changes TD 2019-07-19 12:08:45 +02:00
tovl
0e62490d57 Let autocarryall switch destination when carryable switches destination. 2019-07-19 10:49:24 +02:00
tovl
231825d0d0 Remove WaitForTransport activity. 2019-07-19 10:49:24 +02:00
tovl
922c6e9c40 Fix harvesters losing their last harvesting position when carried by carryall. 2019-07-19 10:49:24 +02:00
tovl
d59b01597a Always clear requested targets when exiting AttackActivity/Flyattack. 2019-07-18 23:14:56 +01:00
reaperrr
83a607e089 Fix resupply anim continuing if docked actor dies during resupply 2019-07-18 22:59:27 +01:00
Punsho
8fa7bb16f8 Remove redundant burst delay from heavy tanks 2019-07-18 13:31:43 +02:00
reaperrr
4bf659ca38 CanSlide update rule 2019-07-18 10:26:43 +02:00
reaperrr
747e60d8b1 Revert FlightDynamics yaml changes
- TD and RA were straight up reverted.

- D2k was manually reverted with following changes:
-- Frigate staying VTOL.
-- Carryall staying CanSlide: true but CanHover: false.
-- bogus VTOL/CanHover flags on Ornithopter staying removed.

- TS was manually reverted to keep the behavior
improvements of the original FlightDynamics PR.
2019-07-18 10:26:43 +02:00
reaperrr
cf4d73ab91 Revert FlightDynamics
This needs more thought and most parts might get superseded
by other approaches.

Kept CanSlide separation from CanHover.
2019-07-18 10:26:43 +02:00
reaperrr
aa5c8b4efa Revert FlightDynamics update rule 2019-07-18 10:26:43 +02:00
Mustafa Alperen Seki
30e2b69dba Fix several traits missing OrderString checks for VoicePhraseForOrder 2019-07-16 10:04:55 +01:00
reaperrr
c51f2c036a Make aircraft always take off after repair
Reservable logic doesn't handle repairs, and we
don't want aircraft to block repair bays etc. until it does.
2019-07-15 23:48:54 +01:00
reaperrr
a010c72780 Fixed comment typo in Aircraft 2019-07-15 23:48:54 +01:00
reaperrr
5211eb25aa Improve handling of finished/cancelled Resupply 2019-07-15 23:48:54 +01:00
reaperrr
5b65e618ee Remove Resupply Cancel override
This became detrimental to actor responsiveness
while resupplying.
2019-07-15 23:48:54 +01:00
reaperrr
e4011b86ac Move AbortOnResupply to AttackAircraft
Additionally, if AbortOnResupply is set to 'true',
abort FlyAttack right away when queueing ReturnToBase.
2019-07-15 23:48:54 +01:00
reaperrr
1f16cb6864 Make Repairable(Near) implement interfaces explicitly 2019-07-15 23:48:54 +01:00
reaperrr
1bb988512f Move AmmoPool RemainingTicks reset to Rearmable
This is a better place to do this than the Resupply activity.
2019-07-15 23:48:54 +01:00
reaperrr
f71912f337 Move movement to resupplier inside Resupply activity
From Repairable(Near).
2019-07-15 23:48:54 +01:00
reaperrr
a7fa372045 Fix Resupply regression
The work-around was originally written with ground units in mind
and caused issues with aircraft.
2019-07-15 23:48:54 +01:00
abcdefg30
4fc6a911a0 Disable MAD tanks on exodus 2019-07-15 23:33:58 +01:00
abcdefg30
e37474cf63 Make some Soviet actors buildable in exodus
Their Allied counter-parts are already buildable.
Arty is still excluded on purpose.
2019-07-15 23:33:58 +01:00
abcdefg30
7908ce6274 Remove unnecessary definitions
The production buildings for those units are not buildable
2019-07-15 23:33:58 +01:00
abcdefg30
736a726a2b Rebrand leftover Hind rules in the missions 2019-07-15 23:33:58 +01:00
Paul Chote
579d2c19e2 Add --check-conditional-trait-interface-overrides utility command.
This command is used by `make check` to detect traits that incorrectly
override interface methods that are required for conditions to work
correctly.
2019-07-14 00:41:59 +02:00
Paul Chote
6eaf615798 Fix conditional traits that incorrectly override INotifyCreated. 2019-07-14 00:41:59 +02:00
Punsho
37325dbfc7 Reskin Hind with Black Hawk sprite 2019-07-13 01:10:30 +02:00
reaperrr
701b1524e5 Fix InstantHit crashing if blockable and target is dead
If the weapon has TargetActorCenter, the projectile is Blockable
and the target dies the same tick the projectile is fired but before
the 'blocked' check is performed, the target.CenterPosition lookup
would crash since the target has become invalid.

Work around this by ignoring TargetActorCenter and using
args.PassiveTarget position instead if the target is already dead.
2019-07-12 22:09:14 +02:00
tovl
71a1060ecb Prevent carryalls picking up non-existent units. 2019-07-11 13:19:19 +02:00
tovl
0562814efa Prevent carryalls delivering non-existent units. 2019-07-11 13:19:19 +02:00
Ivaylo Draganov
768043bc4e Add missing tooltip container to settings.yaml 2019-07-10 19:55:30 +01:00
reaperrr
1c03fb9e51 Revert Simplify CreateEffectWarhead
Reverts #16312.
2019-07-07 19:15:08 +02:00
tovl
2912bff850 Fix location checks for queued deployment. 2019-07-07 00:40:38 +01:00
abcdefg30
b4b3ce68a9 chrome.yaml style fixes 2019-07-05 13:38:49 +02:00
reaperrr
da8a353e65 Remove redundant code from ProductionAirdrop
With the updated Land code, this is now obsolete.
2019-07-05 00:03:36 +02:00
reaperrr
bbf4495668 Update rule for FlightDynamics 2019-07-05 00:03:36 +02:00
reaperrr
990087d434 FlightDynamics yaml changes
Rules updates for official mods.
2019-07-05 00:03:36 +02:00
reaperrr
0ebeb30880 Replace various Aircraft fields with FlightDynamics
Replaces various booleans with a FlightDynamics flag list.
2019-07-05 00:03:36 +02:00
tovl
824db72a4c Prevent VisualMoveIntoTarget from overshooting when turning. 2019-07-03 20:42:19 +02:00
tovl
985020b4ad Simplify special exits of several acitivities. 2019-07-03 20:42:19 +02:00
tovl
3790169db9 Make Tick return bool 2019-07-03 20:42:19 +02:00
tovl
09c1611239 Always check if activity state is Done. 2019-07-03 20:42:19 +02:00
tovl
714b09ac4f Add default for Activity-Tick 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
tovl
37379daf3c Refactor MoveAdjacentTo. 2019-07-03 20:42:19 +02:00
tovl
3ac5ac25f6 Queue WaitForTransport childactivity in OnFirstRun. 2019-07-03 20:42:19 +02:00
abcdefg30
b35dfb50a8 Remove Selectable from planes in TD 2019-07-01 20:19:10 +01:00
Punsho
4f6aa79e91 Normalise Construction Yard Cost 2019-07-01 17:04:14 +02:00
Paul Chote
5d8b6d6057 Fix force-landed transports taking off after (un)loading passengers. 2019-07-01 16:00:03 +02:00
Paul Chote
da0b24e891 Disable water trails for carried Hover MLRS. 2019-06-30 18:04:43 +02:00
tovl
71a035315c Prevent infinite loop between FlyAttack and ReturnToBase. 2019-06-30 18:04:43 +02:00
tovl
5920de1384 Airborne transports only land to (un)load. 2019-06-30 18:04:43 +02:00
tovl
76422933f6 Allow forced landing on helipads and enforce takeoff otherwise. 2019-06-30 18:04:43 +02:00
tovl
79a48765d9 Allow VTOLs to land with force-move 2019-06-30 18:04:43 +02:00
tovl
8e5875453a Improve Carryall behaviour and integration with Aircraft. 2019-06-30 18:04:43 +02:00
tovl
adecd4ca87 Overhaul Land activity:
- Landing on an actor is no longer blocked by the underlying terrain
- Land in a nearby cell if the requested location is blocked
- Internally manages the fixed-wing landing sequence
- ProductionAirdrop transport waits until the exit is free before landing
2019-06-30 18:04:43 +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
Ivaylo Draganov
caa440ce9a Adjust height of multiplayer-browser chrome to be in line with other panels 2019-06-29 23:10:25 +02:00
Ivaylo Draganov
3fb60740be Add support for opening DropDownButtonWidget upwards if clipped by the viewport 2019-06-29 23:10:25 +02:00
Ivaylo Draganov
e23054631d Add "Flat" and "Low Priority" selection modes to default mods 2019-06-29 20:46:12 +02:00
Ivaylo Draganov
c1fc0c1b74 Allow selection priority to be modified using a hotkey 2019-06-29 20:46:12 +02:00
Mustafa Alperen Seki
3e39ada304 Implement DetectCloakedMultiplier. 2019-06-28 12:19:08 +02:00
Mustafa Alperen Seki
d36973138c Implement ReloadAmmoDelay multiplier. 2019-06-28 12:16:48 +02:00
Ivaylo Draganov
c9ff54bfd5 Add hotkey settings panel with a hotkey remap dialog
* Add HotkeyDialogLogic.cs
* Add dialog-hotkey.yaml to all mods
* Add `GetFirstDuplicate` method to HotkeyManager to aid in validation
* Add "Player" and/or "Spectator" type to all hotkeys to allow for
validation based on overlapping types
* Change settings.yaml and SettingsLogic.cs to work with the new dialog
2019-06-28 12:10:48 +02:00
Ivaylo Draganov
9783fdaf78 Change the name of Keycode.UNKNOWN to "Undefined" 2019-06-28 12:10:48 +02:00
Ivaylo Draganov
7dfd91bc39 Remove from HotkeyManager hotkeys found in settings.yaml but not in hotkey definitons 2019-06-28 12:10:48 +02:00
Ivaylo Draganov
db8c8fee4d Add generic notice colors for the UI (info, success, warning, error) 2019-06-28 12:10:48 +02:00
Ivaylo Draganov
76a6e7ec92 Scissor the text of a ButtonWidget if it overflows and display a tooltip
Also:
* add a variable to a comomn pattern used for truncating text in HotkeyEntryWidget and TextFieldWidget
2019-06-28 12:10:48 +02:00
teinarss
f325a4d190 Relative mouse pos 2019-06-27 23:34:16 +02:00
teinarss
d7643602c1 Added a MouseAttachmentWidget to render the Direction arrows in SelectDirectionalTarget 2019-06-27 23:34:16 +02:00
teinarss
f07fb57e98 Rework relative mouse events. 2019-06-27 23:34:16 +02:00
teinarss
647cc2698b CursorViewportZoomed in SelectDirectionalTarget 2019-06-27 23:34:16 +02:00
teinarss
ffd3834849 Lock mouse position 2019-06-27 23:34:16 +02:00
abcdefg30
7bbfd823d0 Fix Minelayer crashes 2019-06-27 20:22:10 +02:00
Paul Chote
739f437c18 Fix blocked cursor for queued undeploy orders. 2019-06-25 01:15:10 +02:00
RoosterDragon
8f573568c8 Fix PostProcess command to handle paths with spaces. 2019-06-24 23:19:24 +02:00
Paul Chote
98125a3d94 Fix Mobile conditions.
The explicit IObservesVariables implementation was hiding
the base PausableConditionalTrait variable initialization.
2019-06-24 16:25:40 +02:00
Paul Chote
71ed22a473 Fix crate paradrop animation. 2019-06-22 15:52:19 +03:00
Paul Chote
d70c86d37a Allow crates to spawn in water. 2019-06-22 15:52:19 +03:00
Paul Chote
a2d51753ba Fix final parachuted actor position. 2019-06-22 15:52:19 +03:00
Ivaylo Draganov
d26919efd5 Fix position of lobby admin icon in player tooltips 2019-06-21 23:07:34 +01:00
RoosterDragon
58dced7e05 Silence some doc errors in VS2019. 2019-06-21 21:22:12 +02:00
teinarss
b647d46196 Vertical alignment in TS 2019-06-21 12:51:45 +02:00
teinarss
95874ccfde Vertical alignment in RA 2019-06-21 12:51:45 +02:00
teinarss
ed1250b14d Vertical alignment in D2k 2019-06-21 12:51:45 +02:00
teinarss
702a419fc5 Vertical alignment fixes in common 2019-06-21 12:51:45 +02:00
teinarss
d2639645bf Vertical alignment on labels in TD 2019-06-21 12:51:45 +02:00
teinarss
cc588f11c4 Updated vertical alignment for labels in Manage Content 2019-06-21 12:51:45 +02:00
teinarss
4e84545b55 Updated ChatDisplayWidget to use the new vertical alignment 2019-06-21 12:51:45 +02:00
teinarss
ab382ce4d6 Removed BaseLine and updated ButtonWidget and CheckboxWidget to use Font.TopOffset 2019-06-21 12:51:45 +02:00
teinarss
9982b01642 Get the Ascender value from mod.yaml instead from the Font 2019-06-21 12:51:45 +02:00
Paul Chote
a260b50ce1 Document the revised protocol. 2019-06-20 22:50:17 +02:00
Paul Chote
c6232f20f9 Split Protocol version into Handshake vs Orders.
Handshake is kept at 7.
Orders is incremented to 8 to reflect immediate order changes.
2019-06-20 22:50:17 +02:00
Paul Chote
fe41dcb45e Restore 0xFE order for handshakes.
This restores handshake compatibility with protocol 7 servers.
2019-06-20 22:50:17 +02:00
Paul Chote
bfddfec461 Replace magic numbers with an OrderType enum. 2019-06-20 22:50:17 +02:00
Paul Chote
862a274357 Merge ServerOrder into Order and 0xFE order type into 0xFF. 2019-06-20 22:50:17 +02:00
Paul Chote
90ebffc6c0 Remove unused PauseGame handling.
Pause is not an immediate order.
2019-06-20 22:50:17 +02:00
Paul Chote
9daf02a955 Remove unused field from HandshakeRequest.
This field was not serialised, so compatibility
is not impacted.
2019-06-20 22:50:17 +02:00
Paul Chote
1e23c0a7b7 Fix bot PlaceBuilding orders. 2019-06-20 18:51:02 +01:00
reaperrr
db0c6d88bf Fix AbortOnResupply not working
Going by yaml rules, all(!) aircraft in the shipping
mods should be aborting any previous activities
on resupply. None actually did, due to this bug.
2019-06-20 15:01:30 +01:00
Ivaylo Draganov
9f59b007ab Add palette order to support powers in TD, RA and d2k 2019-06-15 09:55:22 +02:00
Ivaylo Draganov
a85b634655 Add SupportPowerPaletteOrder to SupportPowerInfo 2019-06-15 09:55:22 +02:00
Paul Chote
a8b7fcaf87 Fix undeploy orders always being queued. 2019-06-15 09:49:23 +02:00
Mustafa Alperen Seki
b63792c73e Update global mix database.dat with Sole Survivor definitions. 2019-06-15 06:23:24 +02:00
reaperrr
c8a42cbce2 Introduce AirAttackType
Aircraft attack behavior (currently FlyBy or Hover)
is now controlled via this instead of the CanHover boolean.
2019-06-10 12:43:34 +02:00
Paul Chote
b59ae476e4 Add PlaceBuildingVariant trait. 2019-06-10 11:46:32 +02:00
Paul Chote
44e41cc054 Add key handling to order generators. 2019-06-10 11:46:32 +02:00
Mustafa Alperen Seki
0eb5063260 Add lua function Media.DisplaySystemMessage 2019-06-09 16:29:42 +02:00
reaperrr
97084effac Improve Aircraft firstTick code
- Remove ReserveSpawnBuilding:
Only used in one place, and removing it
avoids a double GetActorBelow() look-up.

- Remove FallsToEarth check form Aircraft.firstTick:
Aircraft triggers UnReserve() on actor disposal,
so this work-around should no longer be necessary.
2019-06-09 11:24:07 +01:00
Paul Chote
788e73db64 Enable StyleCop rule SA1115. 2019-06-08 19:28:14 +02:00
Paul Chote
4dd08d9dc2 Enable StyleCop rule SA1500. 2019-06-08 19:26:53 +02:00
Paul Chote
ebf2ce32c0 Make sure braces for multi-line statements are on their own lines. 2019-06-08 19:26:53 +02:00
Paul Chote
c89f8dbb89 Enable StyleCop rule SA1002. 2019-06-08 18:46:03 +02:00
Paul Chote
65856f3b0e Fix remaining semicolon spacing issues. 2019-06-08 18:46:03 +02:00
Paul Chote
c253aaeb9d Replace for(;;) with while (true). 2019-06-08 18:46:03 +02:00
Paul Chote
4d8aaeb690 Enable StyleCop rule SA1128. 2019-06-08 18:44:50 +02:00
Paul Chote
674155a8dd Move ctor initializers to their own line. 2019-06-08 18:44:50 +02:00
reaperrr
979ed1b140 Merge HeliAttack into FlyAttack
And polish CanHover FlyAttack behavior:

- Get rid of direct TickFacing usage
- Fix that the CanHover facing/altitude update would override
  TakeOff child of Fly
- Streamline the queueing of child activities
- Get rid of a direct FlyTick in favor of relying on Fly activity
- Pull queueing of TakeOff out of the if-else
2019-06-08 17:07:18 +01:00
Paul Chote
a7617b2443 Reseed the RNG when restarting a game. 2019-06-08 16:23:33 +02:00
abcdefg30
586fa80943 Defer running the contents of TraitEnabled in WithMoveAnimation 2019-06-08 15:28:54 +02:00
Paul Chote
1aa80f9c11 Add download hashes for the default mod packages. 2019-06-08 13:39:17 +02:00
Paul Chote
03c1eaad76 Add a SHA1 check for downloaded packages. 2019-06-08 13:39:17 +02:00
Paul Chote
1d3754f9c0 Enable StyleCop rules SA1509, SA1513. 2019-06-08 13:20:14 +02:00
Paul Chote
548de12e85 Add newlines after closing braces. 2019-06-08 13:20:14 +02:00
Paul Chote
9f15754926 Remove scoped blocks in ReplayBrowserLogic. 2019-06-08 13:20:14 +02:00
Paul Chote
208b5b9686 Enable StyleCop rule SA1129. 2019-06-08 13:19:57 +02:00
Paul Chote
ebd36891dc Switch other struct types to default(T). 2019-06-08 13:19:57 +02:00
Paul Chote
dba1301b61 Change new BitSet<T> to default(BitSet<T>). 2019-06-08 13:19:57 +02:00
Paul Chote
37889af20e Enable StyleCop rule SX1101 2019-06-08 13:19:27 +02:00
Paul Chote
dabc7ec8dd Remove unnecessary this. references. 2019-06-08 13:19:27 +02:00
Paul Chote
ebe37a44ad Require force move for all undeploy-triggering orders. 2019-06-08 02:09:30 +02:00
Paul Chote
5d886b79f1 Remove AlternateTransportsMode.
This conflicts with undeploy orders and has been largely
superseded by queued enter orders.
2019-06-08 02:09:30 +02:00
Paul Chote
ecd8dee575 Add TransformsInto* traits to trigger construction yard undeploy. 2019-06-08 02:09:30 +02:00
Paul Chote
1b026b7e20 Disable out-of-range non-force targeting for deployed units. 2019-06-08 02:09:30 +02:00
Paul Chote
c853e8c5d6 Disable non-force move for deployed units. 2019-06-08 02:09:30 +02:00
tovl
ea036d4cc0 Allow move orders to cancel DeployForGrantedCondition. 2019-06-08 02:09:30 +02:00
reaperrr
8589e26dc2 Resolve rally point target on first run. 2019-06-07 22:18:33 +01:00
reaperrr
e6402d28a3 Fix and streamline MaximumPitch values in TS
The internal default is way too low for TS aircraft
(especially when passing cliffs).
2019-06-07 22:18:33 +01:00
reaperrr
52ef5617d3 Clarify MaximumPitch and AltitudeVelocity descriptions
AltitudeVelocity is strictly only for vertical-only movement,
MaximumPitch is only for altitude changes during horizontal movement.
2019-06-07 22:18:33 +01:00
reaperrr
ac08f24828 Make aircraft move to CruiseAltitude on new order 2019-06-07 22:18:33 +01:00
reaperrr
ce3d7c98ad Refactor TakeOff
- Make it self-contained by moving actual take-off
  from 'Fly' to this
- Make 'moveToRallyPoint' a simple boolean
- Make AttackMove to rally point a child activity
- Make TakeOff uninterruptible
2019-06-07 22:18:33 +01:00
reaperrr
4f8f8cfb9d Merge HeliFly into Fly 2019-06-07 22:18:33 +01:00
reaperrr
5698ea0910 Remove HeliFlyAndLandWhenIdle
Already obsolete, as aircraft with CanHover do properly become idle
and land when LandOnIdle is set to 'true'.
They currently need VTOL too, but all CanHover-aircraft
in the shipping mods have that and it will be fixed soon as well.
2019-06-07 22:18:33 +01:00
abcdefg30
27cfa9b1f0 Fix MAD tanks always being repairable 2019-06-06 00:48:50 +02:00
abcdefg30
bf6fa94224 Remove unnecessary comments from aircraft.yaml 2019-06-05 00:54:55 +02:00
abcdefg30
26ec5946b3 Add LandableTerrainTypes to D2k's frigate 2019-06-05 00:54:55 +02:00
abcdefg30
1a078d13aa Remove the Ore landable terrain type from TRAN in TD 2019-06-05 00:54:55 +02:00
abcdefg30
c10f4e53e0 Work around C17s not being able to deliver units 2019-06-05 00:54:55 +02:00
Paul Chote
760a2b483e Fix RA/TD map editor copy/paste tile definitions. 2019-06-02 16:09:12 +02:00
Mustafa Alperen Seki
ccc68b0272 Make Crate trait public. 2019-06-02 15:34:06 +02:00
Paul Chote
229bac6777 Disable capturing while the make animation is playing. 2019-06-02 15:26:26 +02:00
reaperrr
3ff8fb3cd2 Rename Hovers' OffsetModifier to BobDistance 2019-06-02 10:00:58 +01:00
reaperrr
2f1f0c8aec Adapt TS aircraft to changed Hovers defaults 2019-06-02 10:00:58 +01:00
reaperrr
d5c66d9474 Fix or prevent bugs in Hovers
- Clamp fallTickHeight to at least 1,
  to avoid potential DivideByZero crash.
- Prevent modders from setting values that
  are bogus or would trigger other bugs,
  via loadtime YamlExceptions.
2019-06-02 10:00:58 +01:00
reaperrr
b60346abb1 Polish various aspects of Hovers
- Use WDist instead of int for fields
- Change default values to approximately restore previous
  releases' default behavior
- Improve and clarify descriptions
2019-06-02 10:00:58 +01:00
teinarss
4fae77ed1c Writing benchmark data at the end of the game 2019-06-02 00:00:48 +02:00
Ivaylo Draganov
982291119c Fix misaligned TD production tooltip icons 2019-06-01 08:52:59 +01:00
Paul Chote
1614cba99e Fix warhead removal lint warnings. 2019-05-31 20:55:38 +02:00
Paul Chote
fb075dc803 Improve linting of weapon and trait yaml removals. 2019-05-31 20:55:38 +02:00
ltem
2a7ea28b74 Fix inconsistency in oberserver statistics 2019-05-31 20:50:23 +02:00
abcdefg30
11e4c971c4 Fix a compiler error (wrong using) in D2kActorPreviewPlaceBuildingPreview 2019-05-31 16:36:19 +02:00
Evgeniy S
3a30b013a5 Move Selection into a Trait 2019-05-31 15:50:53 +02:00
Paul Chote
6723306bb4 Remove Enum.HasFlag from building preview generation. 2019-05-31 15:44:09 +02:00
Paul Chote
697935f931 Display yellow footprint for cells that trigger damage in D2k. 2019-05-31 15:44:09 +02:00
Paul Chote
3b2b093e0e Use original RA and TD footprint artwork. 2019-05-31 15:44:09 +02:00
Paul Chote
b3c1d96027 Add place previews for TS building plugs. 2019-05-31 15:44:09 +02:00
Paul Chote
087887250f Add line-build palette to RA, TD, D2k. 2019-05-31 15:44:09 +02:00
Paul Chote
3f9e4a313f Improve visibility of building placement preview. 2019-05-31 15:44:09 +02:00
Paul Chote
cdad07d172 Fix footprint type for line build structures. 2019-05-31 15:44:09 +02:00
Paul Chote
52fd32c311 Split IPlaceBuildingPreviewGeneratorInfo from PBOG. 2019-05-31 15:44:09 +02:00
Paul Chote
e2b27328bd Rework paradrop logic to be more robust. 2019-05-31 15:31:47 +02:00
Paul Chote
829b8cd2e1 Fix loadscreen text when switching between internal mods. 2019-05-31 15:22:08 +02:00
abcdefg30
1c965d812f Fix WithSpriteBody crashes 2019-05-29 20:58:45 +01:00
reaperrr
7a403c9af5 Play StartSequence when With*SpriteBody is enabled
Not only on actor creation.
2019-05-28 22:13:38 +02:00
reaperrr
666169e9b9 Add LockOnInaccuracy to Missile 2019-05-28 22:13:38 +02:00
Ivaylo Draganov
fde215360c Add tooltips to overflowing labels 2019-05-27 17:28:47 +02:00
Ivaylo Draganov
1fee50be2e Add TruncateLabelWithTooltip helper function
* Move GetContrastColor helper to SpriteFont
* Move WidgetUtils  from OpenRA.Game.Widgets to OpenRA.Mods.Common.Widgets
2019-05-27 17:28:47 +02:00
Ivaylo Draganov
79d1899426 Remove redundant compiler workaround 2019-05-27 17:28:47 +02:00
Paul Chote
1c6c55092f Fix Appveyor builds. 2019-05-26 23:13:37 +02:00
Paul Chote
4358b0956e Fix RunConfiguration condition whitespace. 2019-05-26 23:13:37 +02:00
Paul Chote
bb5268bef6 Package separate x64 and x86 Windows installers. 2019-05-26 23:13:37 +02:00
Paul Chote
4f7dca809f Fix csproj formatting. 2019-05-26 23:13:37 +02:00
Paul Chote
845fca25d1 Change platform from x86 to Any CPU (preferring 64 bit)
A Release-x86 configuration allows x86 Windows installers to still be created.
2019-05-26 23:13:37 +02:00
Paul Chote
7cf939fc68 Update OpenAL-CS.
Required for Win64 support.
2019-05-26 23:13:37 +02:00
Paul Chote
aed6098eaa Change default support dir location on Windows and Linux:
Windows now prefers the ApplicationData directory
Linux now prefers XDG_CONFIG_HOME

Fall back to the previous directory to avoid data loss or duplication.
2019-05-26 21:13:35 +02:00
teinarss
c89f4b7a76 Added tooltip to support powers in spec ui 2019-05-26 19:08:24 +01:00
teinarss
12484caf04 Added field to ProductionQueue to customize ordering in ObserverProductionIconsWidget 2019-05-26 19:04:54 +01:00
reaperrr
71995dbcbe Fix Bullet contrails 2019-05-26 13:02:54 +02:00
abcdefg30
29d238ba03 Empty the default of TrailSequences in NukePower (version 2) 2019-05-26 01:19:12 +02:00
Mustafa Alperen Seki
e007568e17 Make ClonesProducedUnits Conditional. 2019-05-25 23:19:41 +02:00
Paul Chote
1ed36da107 Update macOS launcher tag in fetch-thirdparty-deps-osx.sh. 2019-05-25 20:10:14 +02:00
reaperrr
3735c60533 Simplify CreateEffectWarhead 2019-05-24 20:08:33 +01:00
Paul Chote
78a70be0d4 Fix and enable SA1133, SA1134 style rules. 2019-05-24 10:47:57 +02:00
Evgeniy S
fbf9461890 Make StoresResources trait public 2019-05-23 14:20:38 +02:00
teinarss
9fc8b829e4 Updated the observer ui 2019-05-22 22:37:50 +01:00
teinarss
b90b3095a6 Updated ColorBlockWidget to handle setting the Color in yaml 2019-05-22 22:37:50 +01:00
teinarss
dad29cd3b3 Added GradientColorBlockWidget 2019-05-22 22:37:50 +01:00
teinarss
b25d0694b8 Updated ScrollPanelWidget to handle Scrollbar alignment 2019-05-22 22:37:50 +01:00
Paul Chote
c480b2b599 Prefer own service depots over allies. 2019-05-22 20:41:51 +02:00
Paul Chote
217221d174 Fix multiple clients being assigned as admin. 2019-05-22 20:30:54 +02:00
teinarss
881cacbef8 Replaces RunConfiguration and Configuration with launchSettings.json 2019-05-22 19:58:56 +02:00
teinarss
a495c0c475 Remove check to see if DeveloperMode is enabled 2019-05-22 19:46:30 +02:00
Mustafa Alperen Seki
3709380733 Implement ResourcePurifier 2019-05-22 19:41:21 +02:00
Mustafa Alperen Seki
feeae74455 Add INotifyResourceDumped Interface 2019-05-22 19:41:21 +02:00
Zimmermann Gyula
1e99075c70 Implement RefineryResourceMultiplier. 2019-05-22 19:41:21 +02:00
Zimmermann Gyula
71acfaf014 Implement HarvesterResourceMultiplier. 2019-05-22 19:41:21 +02:00
teinarss
ef47a3394f Added cell pos and world pos to debug 2019-05-21 22:28:44 +01:00
Paul Chote
3ca9d4b773 Drop targets when switching to a more restrictive stance. 2019-05-21 15:52:55 +02:00
Paul Chote
62b5d22e53 Add INotify(Activity)StanceChanged interfaces. 2019-05-21 15:52:55 +02:00
Paul Chote
07dc2a1132 Fix "Max Speed" option when viewing replays. 2019-05-19 18:09:45 +02:00
Paul Chote
327fdaea2d Defer NSIS installation to the pre-packaging step. 2019-05-19 16:59:54 +01:00
Paul Chote
15e88d9e58 Bump travis and the macOS/Linux packaging to use mono 5.20.1. 2019-05-19 16:59:54 +01:00
reaperrr
a2775a5c0f Fix DivideByZero crashes in Railgun projectile 2019-05-19 16:56:49 +02:00
reaperrr
90325305d6 Minor projectile clean-ups and perf optimizations 2019-05-19 16:56:49 +02:00
airetaM
6897ebe2a8 Makes Dogs buildable at the Barracks/Tent 2019-05-19 13:44:44 +02:00
Paul Chote
fbce22784b Fix ICaptureProgressWatchers continuing after captor disposal. 2019-05-19 13:37:42 +02:00
Paul Chote
44c5d38a0e Disable AutoTarget if targeting a persistent fallback. 2019-05-19 13:23:01 +02:00
Paul Chote
55f6744cf3 Replace IPreventsAutoTarget with IDisable(Enemy)AutoTarget.
This allows traits on the attacking unit to suppress auto targeting
and makes the distinction between the two interfaces clear.
2019-05-19 13:23:01 +02:00
Paul Chote
f9fe7486b3 Fix TD observer production icon hover crash. 2019-05-19 13:14:00 +02:00
Punsho
336cfedf84 Mines will no longer damage each other 2019-05-18 20:08:42 +02:00
Ivaylo Draganov
0bb832917a Fix TD chrome.yaml definitions for panel-allblack 2019-05-17 21:01:54 +02:00
Paul Chote
4756558f8a Merge man-page target into install-man-page 2019-05-17 19:02:46 +01:00
Paul Chote
c47c9d7ed6 Fix Makefile targets 2019-05-17 19:02:46 +01:00
reaperrr
7becbe6b14 Allow non-VTOL to LandOnCondition
Note: This might still break in unexpected ways,
since non-VTOLs implicitly rely on ReturnToBase
to calculate the approach vector for them.
2019-05-17 18:51:21 +01:00
reaperrr
0c2666b97e Streamline Land activity
Removed some redundant parameters, some redundant overloads
and made Land always consider LandAltitude relative to target.
2019-05-17 18:51:21 +01:00
reaperrr
14bd5ada1a Merge HeliLand into Land activity 2019-05-17 18:51:21 +01:00
abcdefg30
bc3cabdea0 Display an error when TrailSequences is empty and TrailImage is not 2019-05-17 18:53:52 +02:00
abcdefg30
b8fbc63542 Empty the default of TrailSequences in NukePower 2019-05-17 18:53:52 +02:00
teinarss
79f0bdc65c Added configurations for starting the mods in VS 2019-05-16 19:34:21 +01:00
teinarss
70f0075415 Use Write-Host instead of echo 2019-05-16 20:05:55 +02:00
abcdefg30
e888a235c0 Fix powershell if statements not checking the return value of calls 2019-05-16 19:41:29 +02:00
Paul Chote
242ebc5da9 Fix FrozenUnderFog visibility calculation when fog is disabled. 2019-05-16 18:23:47 +02:00
abcdefg30
215af20e62 Give a lint error when TimeLimitDefault is not in TimeLimitOptions 2019-05-16 14:56:56 +02:00
abcdefg30
09d6387e64 Prevent negative times in GameTimerLogic 2019-05-16 14:56:56 +02:00
Oliver Brakmann
28016a3a33 Disable TimeLimit dropdown on MP missions and Fort Lonestar 2019-05-16 14:56:56 +02:00
Oliver Brakmann
f617da08f6 Convert "Top o' the World" mission to use TimeLimit API 2019-05-16 14:56:56 +02:00
Oliver Brakmann
f11b7393ef Convert Allies-02 to make use of TimeLimit API 2019-05-16 14:56:56 +02:00
Oliver Brakmann
26d712728a Add scripting support for TimeLimitManager 2019-05-16 14:56:56 +02:00
Oliver Brakmann
47d88983fb Let sidebar timer count backwards if a time limit is set 2019-05-16 14:56:56 +02:00
abcdefg30
4a35d85884 Add a DropdownVisible property to TimeLimitManager 2019-05-16 14:56:56 +02:00
Oliver Brakmann
a63cc2d317 Add a time limit lobby option 2019-05-16 14:56:56 +02:00
abcdefg30
1364581696 Fix Sarin Gas Crackdown not ending after losing all units 2019-05-16 14:22:03 +02:00
evgeniysergeev
3bc5b07277 Fix for System.IO.InvalidDataException in VocLoader
Fix for VOC version check

use cached value from MoveNext instead of try/catch section
2019-05-15 21:20:24 +02:00
Paul Chote
72dbb871ac Add faction specific tooltip backgrounds. 2019-05-15 21:05:49 +02:00
Ivaylo Draganov
a5bd08bd02 Revamp Tiberian Dawn ingame UI 2019-05-15 21:05:49 +02:00
Ivaylo Draganov
4931fc2ca6 Enable AddFactionSuffixLogic for ProductionTabsWidget and BackgroundWidget 2019-05-15 21:05:49 +02:00
Paul Chote
6f1aaab3e3 Remove CallFunc. 2019-05-12 19:06:52 +02:00
Paul Chote
e57e881662 Use Target in DeliverUnit 2019-05-12 19:06:52 +02:00
tovl
0b747ba927 Rework Carryall drop-off queueing and ordering. 2019-05-12 19:06:52 +02:00
reaperrr
a403d9937d Fix palette effects on desert buildings/rocks 2019-05-12 17:46:25 +02:00
Paul Chote
6248326b29 Rename AttackMove *ScanConditions. 2019-05-12 10:59:36 +02:00
tovl
0e1374f0eb Replace pseudo-childactivities in AttackMoveActivity. 2019-05-12 10:59:36 +02:00
abcdefg30
1c13520ffd Update the forum link in the readme 2019-05-10 00:35:44 +01:00
reaperrr
17a40099df Fix launch delay and offset of TS ClusterMissile 2019-05-09 22:28:46 +01:00
reaperrr
6eb31401f1 Implement D2k DeathHand cluster logic 2019-05-09 22:28:46 +01:00
reaperrr
cf091e0548 Implement TS cluster missile warhead 2019-05-09 22:28:46 +01:00
reaperrr
9e91232ca7 Add DetonationAltitude to NukePower
And RemoveMissileOnDetonation boolean.

Allows airburst, and optionally missile continuing
until it hits the ground (without a second explosion).
2019-05-09 22:28:46 +01:00
Zimmermann Gyula
2648764ee3 Add FireClusterWarhead 2019-05-09 22:28:46 +01:00
teinarss
0e3d343f15 VAlign correctly in LabelWidget 2019-05-09 22:17:24 +02:00
teinarss
2d1c110857 Calculate font size correctly 2019-05-09 22:17:24 +02:00
Paul Chote
7c71e55b01 Restore no-arg ExponentialSliderWidget ctor.
This is required for dynamic widget creation.
2019-05-09 21:38:40 +02:00
Paul Chote
ba282865f1 Replace legacy StyleCop(Plus) with StyleCopAnalyzers
Analyzers are enabled in the Debug configuration
only to avoid unnecessary overheads when compiling
normally.
2019-05-09 20:40:08 +02:00
Paul Chote
353db73381 Fix a collection of minor style violations.
This enables several new StyleCopAnalyzer rules to
be enabled immediately during migration.
2019-05-09 20:40:08 +02:00
Paul Chote
76a8ae9f98 Set default values for BitSet<TargetableType>. 2019-05-09 20:40:08 +02:00
reaperrr
c24398e32c Repulsion performance optimizations
`cruising` is updated  on every position change,
so we can safely re-use it instead of
performing another DAT check.
Additionally, if repulsion force is
horizontally zero, it's guaranteed to be WVec.Zero,
so we can save that conversion too.
2019-05-09 19:00:07 +02:00
reaperrr
83b4e448c8 Fix Jumpjet default HeightOffset
Jumpjet CruiseHeight in TS was 500, roughly equivalent to
3.9 cells in OpenRA.
2019-05-05 23:41:55 +02:00
reaperrr
2953cbd9f1 Improve TS Harpy rotor offset 2019-05-05 23:41:55 +02:00
reaperrr
64d891cc6c Improve TS aircraft altitude values
The CruiseAltitude values and AltitudeVelocity
default were far too low compared to the original.
2019-05-05 23:41:55 +02:00
Paul Chote
f0d59391b5 Remove Start-Process from make.ps1.
This also removes the hardcoded path
requirement for dotnet.exe, and simplifies
the utility and dotnet detection.

The nr flag is no longer needed for dotnet,
and nologo is added to reduce unnecessary output.

The Release configuration is set for consistency
with the real Makefile.
2019-05-05 23:19:04 +02:00
Paul Chote
ac8252531b Fix solution listings in the Rider IDE. 2019-05-05 23:19:04 +02:00
Paul Chote
b93490efd0 Remove legacy cruft from .gitignore. 2019-05-05 23:19:04 +02:00
Paul Chote
1955cac84e Unify Windows and mono build systems.
The Makefile behaviour is recreated using the new and significantly
cleaner .NET Core csproj format.

fixheader.exe is promoted to OpenRA.PostProcess.exe and now runs
on all platforms.
2019-05-05 23:19:04 +02:00
Paul Chote
6e364cdbee Switch AppVeyor to use Visual Studio 2017. 2019-05-05 23:19:04 +02:00
Paul Chote
761b5e094d Reduce minimum .NET requirement to 4.6.1.
4.7.2 causes compatibility issues with Mono 5.4
in the interim period before we migrate to netstandard2.
2019-05-05 23:19:04 +02:00
Mustafa Alperen Seki
a4bac42c7f Add /playerxp command. 2019-05-05 21:52:28 +02:00
Paul Chote
5e38cfda81 Enable skirmish saves. 2019-05-05 09:30:58 +02:00
Paul Chote
c8f2ee5270 Save and load skirmish spectator viewport. 2019-05-05 09:30:58 +02:00
Paul Chote
410d0796c3 Disable bot logic while reloading game saves. 2019-05-05 09:30:58 +02:00
Paul Chote
100ec17ef0 Implement IGameSaveTraitData on BotModules. 2019-05-05 09:30:58 +02:00
Paul Chote
5f8a0f3372 Add IBotEnabled interface. 2019-05-05 09:30:58 +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
reaperrr
da6bf1a57d Make ActorTags display ChildActivities 2019-05-04 21:33:10 +02:00
jrb0001
b774556a5f Reduce overhead of every single order/sync frame by 162/222 bytes 2019-05-04 09:48:36 +02:00
LipkeGu
7f7809fe70 Use TryGet instead of Get and assign a default Fallback Color
This Fixes a crash in Situations when custom mods are used and reset OpenRA to its initial state.
2019-05-04 09:39:56 +02:00
matjaeck
c7b8f9f09f Add references to the Code of Conduct. 2019-05-04 09:27:34 +02:00
Paul Chote
e3f868f0a8 Update TS map previews and formatting. 2019-05-02 13:40:22 +02:00
Paul Chote
143cee2a80 Update D2k map previews and formatting. 2019-05-02 13:40:22 +02:00
Paul Chote
67683aacdb Update TD map previews and formatting. 2019-05-02 13:40:22 +02:00
Paul Chote
fe68780d1c Remove space from "Snow Town" map path. 2019-05-02 13:40:22 +02:00
Paul Chote
e431954107 Update RA map previews and formatting. 2019-05-02 13:40:22 +02:00
Paul Chote
f301cb891f Add missing LockPreview to mission maps. 2019-05-02 13:40:22 +02:00
Paul Chote
5f157c572f Restore newlines between top-level map.yaml blocks. 2019-05-02 13:40:22 +02:00
Paul Chote
d9c30c9659 Fix missing EOF yaml newlines and other style issues. 2019-05-02 13:40:22 +02:00
Paul Chote
2a085945df Add terminating newline to yaml strings. 2019-05-02 13:40:22 +02:00
Paul Chote
753a0b1e3e Add --refresh-map utility command. 2019-05-02 13:40:22 +02:00
reaperrr
ad4c0e6dee Remove HeliFlyCircle activity
FlyCircle actually works fine for D2k Carryalls,
and no other place used this.
2019-05-01 20:50:10 +01:00
Unknown
77d890848b Fix givecashall debug command
Issuing an order to another client causes a validation error in
ValidateOrder.OrderValidation(...). To fix this /givecashall will now
be issued as an order to the client that introduced the command. This
client will then resolve the command and give the cash to all playable
parties.
2019-05-01 18:30:44 +02:00
reaperrr
543d46f47c Make ground actors leave resupplier if resupply is aborted 2019-04-29 01:40:52 +01:00
reaperrr
bc0d8ca015 Remove ResupplyAircraft and AllowYieldingReservation
The few extra things those two activities did can be done
in Resupply, making them redundant.
2019-04-29 01:40:52 +01:00
reaperrr
4a06c66dbd Fix resupply anim not always finishing properly 2019-04-29 01:40:52 +01:00
reaperrr
83934074a4 Merge INotifyRearm/Repair into INotifyResupply
And streamline its notify methods.
Also cache INotifyResupply traits at beginning
of Resupply activity.
2019-04-29 01:40:52 +01:00
reaperrr
ba4b5738d7 Merge Rearm and Repair into Resupply activity
Allows parallel rearming and repairing.
2019-04-29 01:40:52 +01:00
Smittytron
123b3f054f Remove cash steal objectives from Allies 06a and 06b 2019-04-28 10:19:37 +02:00
Paul Chote
f26992443d Remove periods from lobby option tooltips. 2019-04-28 00:24:28 +02:00
teinarss
d9d2202599 System messages should be yellow to distinguish them from normal 2019-04-27 14:51:59 +02:00
jrb0001
db487e1264 Give every immediate order its own framing 2019-04-23 01:00:52 +02:00
jrb0001
f3133617dd Prevent immediate orders from being sent as regular orders 2019-04-23 01:00:52 +02:00
BGluth
55aa346ad7 Aircraft can now scatter 2019-04-22 22:04:51 +02:00
teinarss
e801537d96 Hide cursor and render the placeholder directly 2019-04-22 21:51:49 +02:00
teinarss
09f4b69aef Fixed the problem with clicking the Support Power button 2019-04-22 21:51:49 +02:00
teinarss
5e58364fad Made SelectDirectionalTarget a opted in feature and added fields for palettes 2019-04-22 21:51:49 +02:00
abcdefg30
b2278e85f0 Add support for arbitrary objective type names 2019-04-22 21:04:42 +02:00
abcdefg30
38b3a4a668 Split INotifyWinStateChanged from INotifyObjectivesUpdated 2019-04-22 21:04:42 +02:00
abcdefg30
6163523334 Enable spectator team chat in the lobby 2019-04-22 19:55:04 +01:00
abcdefg30
e6feba8884 Remove the TeamChat order type 2019-04-22 19:55:04 +01:00
abcdefg30
83b92ebacb Disable team chat when only one team member is alive 2019-04-22 19:55:04 +01:00
abcdefg30
9a84ccdd1d Send the designated team number as extra data in the order 2019-04-22 19:55:04 +01:00
abcdefg30
991093df81 Let immediate orders send a bitfield for extra order data 2019-04-22 19:55:04 +01:00
abcdefg30
5e363f18c9 Disable the team chat button after the game ended 2019-04-22 19:55:04 +01:00
abcdefg30
7b8df0ed54 Disable spectator chat when there is only one spectator
and re-enable it when players die
2019-04-22 19:55:04 +01:00
abcdefg30
767de564fc Use Team numbers instead of stances 2019-04-22 19:55:04 +01:00
abcdefg30
43f22f908d Don't make team messages of dead players public 2019-04-22 19:55:04 +01:00
abcdefg30
9bd0a71ca8 Return early instead of nesting 2019-04-22 19:55:04 +01:00
abcdefg30
e7f60a1e25 Don't ignore the message limit in team chat 2019-04-22 19:55:04 +01:00
abcdefg30
4a9a5ba757 Remove and restyle comments in UnitOrders 2019-04-22 19:55:04 +01:00
Mustafa Alperen Seki
2bb2d6e9c5 Add ability to grant condition multipile times to GrantExternalConditionCrateAction 2019-04-22 20:51:23 +02:00
Mustafa Alperen Seki
de7706c98f Add ProductionCost/TimeMultiplier 2019-04-22 20:44:50 +02:00
Mustafa Alperen Seki
1f730fbfb9 Make EngineerRepairable Conditional. 2019-04-22 20:25:52 +02:00
Mustafa Alperen Seki
c89d90e4b0 Add Types to EngineerRepair(able). 2019-04-22 20:25:52 +02:00
Mustafa Alperen Seki
e63f52c43f Add RepairSound to EngineerRepair. 2019-04-22 20:25:52 +02:00
Mustafa Alperen Seki
0f9a157943 Add support for Custom Cursors in EngineerRepairable. 2019-04-22 20:25:52 +02:00
Mustafa Alperen Seki
2194584b25 Fix EngineerRepairable stance checks. 2019-04-22 20:25:52 +02:00
Mustafa Alperen Seki
8752e76d1e Split EngineerRepairable to its own file. 2019-04-22 20:25:52 +02:00
Mustafa Alperen Seki
2463b2ed43 Remove Exit: from D2k ConYard. 2019-04-22 20:20:47 +02:00
Mustafa Alperen Seki
7a9d04395a Check for producee's IOccupySpaceInfo for production completation. 2019-04-22 20:20:47 +02:00
Mustafa Alperen Seki
f9ef41f165 Properly check for exitinfo != null in DoProduction() 2019-04-22 20:20:47 +02:00
Mustafa Alperen Seki
1573da03bb Fix production of dummy actors from producers without Exit trait. 2019-04-22 20:20:47 +02:00
tovl
ffbee7e45b Temp fix for harvester getting stuck around resource spawn 2019-04-22 16:39:47 +02:00
tovl
2eaeb2097c Refactor resource harvesting logic. 2019-04-22 16:39:47 +02:00
Mustafa Alperen Seki
77b313611e Make Queue Groups work with ClassicProductionQueue. 2019-04-22 16:16:35 +02:00
tovl
8e91a1ba89 Add order voice to GrantConditionOnDeploy. 2019-04-22 15:34:07 +02:00
tovl
9419d1b924 Fix TS artillery barrel disapearing during deploy animation. 2019-04-22 15:34:07 +02:00
tovl
351df4769b Let TS deployable units honor emp-disabled. 2019-04-22 15:34:07 +02:00
reaperrr
36783efbfb Give TS ClusterMissile a smoke trail
And increase visual FlightVelocity.

We don't know when this will be replaced with
TS-style voxel projectile, so a bit of visual polish can't hurt.
2019-04-22 15:13:11 +02:00
reaperrr
cee56a00af Give some translucency to TS missile trails 2019-04-22 15:13:11 +02:00
reaperrr
ba04965a63 Fix missile offsets & implement trail on DeathHand 2019-04-22 15:13:11 +02:00
reaperrr
78f538f103 Add sprite trail support to NukeLaunch/NukePower 2019-04-22 15:13:11 +02:00
reaperrr
4a71a6746f Group all Bullet Trail* properties together
Just a small code readability improvement.
2019-04-22 15:13:11 +02:00
tovl
560f8c26bc Add crushing logic to aircraft. 2019-04-22 02:56:57 +02:00
tovl
c633e07410 Make aircraft occupy cells when landed. 2019-04-22 02:56:57 +02:00
reaperrr
04a71a6c6a Exclude OpenRA.Platforms.Default.dll.config from clean
OpenRA.Platforms.Default.dll.config is part of the repo.
Linux makefile already excludes the file from removal.
2019-04-21 20:31:35 +02:00
tovl
6aea91bd46 Replace pseudo-childactivities in WaitForTransport. 2019-04-20 16:14:59 +01:00
tovl
a000b173d8 Replace pseudo-childactivities in Enter and related. 2019-04-20 16:14:59 +01:00
Paul Chote
d5588c51ed Implement "Game Saved" / "Game Loaded" notifications in RA and D2k. 2019-04-20 14:54:48 +02:00
Paul Chote
492b5aec82 Save and restore viewport position / selection / control groups. 2019-04-20 14:54:48 +02:00
Paul Chote
de9649df27 Add save/load browser and buttons to the UI. 2019-04-20 14:54:48 +02:00
Paul Chote
3a693d8def Implement loading screens. 2019-04-20 14:54:48 +02:00
Paul Chote
1f3b30c2d2 Implement game save/load backend. 2019-04-20 14:54:48 +02:00
Paul Chote
877215c86a Dynamically populate the ingame menu. 2019-04-20 14:54:48 +02:00
Paul Chote
1cfb110d03 Allow the cursor to be force disabled. 2019-04-20 14:54:48 +02:00
Paul Chote
f731c09086 Fix TD input prompt button height. 2019-04-20 14:54:48 +02:00
Paul Chote
bb324fb2d4 Add Sound.DisableAllSounds property. 2019-04-20 14:54:48 +02:00
Paul Chote
5d43417a5f Add player trait support for IWorldLoaded. 2019-04-20 14:54:48 +02:00
Lars Beckers
e6750bf19c Fix attack behaviour of disabled units. 2019-04-20 02:28:27 +02:00
abcdefg30
1bb319425b Add Sound.Play overloads that play a random sound from a list 2019-04-20 01:22:30 +02:00
reaperrr
5f6c8ba5d3 Fix Mobile.CurrentMovementType vertical handling
On bleed, the Horizontal flag is always returned on any position change,
even if that change is vertical-only.
2019-04-20 00:48:12 +02:00
abcdefg30
981fe6fae1 Remove the Lua return type of Beacon.New 2019-04-19 16:31:03 +02:00
abcdefg30
c93dc1424c Throw a LuaException when placing a beacon without the player trait 2019-04-19 16:31:03 +02:00
reaperrr
db68c6e264 Fix Mobile actors turning even if Mobile is paused 2019-04-14 21:58:28 +02:00
tovl
cc7e758b27 Replace pseudo-childactivities in carryall logic. 2019-04-14 19:05:06 +01:00
reaperrr
0eb0a5a2bd Add WithHarvesterSpriteBody
And move PrefixByFullness there.
Also put it into Mods.Cnc, as RA is the only shipping mod
using this.
2019-04-14 19:09:28 +02:00
reaperrr
840eb7006d Make actors ignore ReturnToBase order if already on resupplier 2019-04-13 18:47:08 +02:00
reaperrr
717b8a24f1 Fix ReturnToBase restarting on each hotkey press
Now that the RTB process is a single activity with childs,
it's relatively easy to prevent the activity from restarting
every time the deploy/RTB hotkey is pressed.
2019-04-13 18:47:08 +02:00
reaperrr
b24e4510c8 Make aircraft without TakeOffOnResupply always land
on resupplier, even if ammo is full, when given a
"ReturnToBase" order via deploy key.
In other words, in that case treat the RTB order like an
explicit "Repair" or "Enter" order.
2019-04-13 18:47:08 +02:00
reaperrr
c7eee6ae5d Improve ReturnToBase Activity.cs adherance
And make it use child activities for queueability.
2019-04-13 18:47:08 +02:00
reaperrr
8edf5b56ea Exclude dead actors from ChooseResupplier 2019-04-13 18:47:08 +02:00
reaperrr
2cdae0b380 Merge HeliReturnToBase into ReturnToBase 2019-04-13 18:47:08 +02:00
tovl
2a942bd04a Fix crash in FindAndDeliverResources.GetSearchFromLocation. 2019-04-13 16:04:54 +02:00
abcdefg30
14a4c47758 Increase the ZOffset of ore and gem mines in RA 2019-04-12 00:11:47 +02:00
teinarss
71596ae959 Added drag direction mouse interaction for set the approach direction for airstrike and parabombs 2019-04-04 20:10:34 +02:00
teinarss
1dd90a1d7b Pushed down the MouseInput handling to the OrderGenerators and made a base class for handling the basic logic 2019-04-04 20:10:34 +02:00
Mustafa Alperen Seki
9ec8d25dff Add AppearsOnMapPreview to default mods.
To Walls, (Tib)Trees, Ore/Gem Mines and Tech Structures.
2019-04-04 19:37:19 +02:00
Mustafa Alperen Seki
9fef2c01ec Add AppearsOnMapPreview
Allows preplaced actors to be rendered on map preview when saving the
map.

Also removes requirements for ResourceLayer in OpenRA.Game and moves it
to OpenRA.Mods.Common.
2019-04-04 19:37:19 +02:00
tovl
ea4f24d0b7 Rework harvester automation. 2019-04-04 19:22:25 +02:00
tovl
1d590ac207 Sanitize harvester search behavior. 2019-04-04 19:22:25 +02:00
tovl
8d8cade266 Remove no-op on harvester creation. 2019-04-04 19:22:25 +02:00
tovl
bc7516989e Rework harvester unblock and idle behavior. 2019-04-04 19:22:25 +02:00
tovl
3bfa32ca33 harvester Harvest order works with queues
fix for autocarryable harvesters

Make use of QueueActivity's own handling of order.Queued
2019-04-04 19:22:25 +02:00
tovl
307a87cd9e harvester Deliver order works with queues 2019-04-04 19:22:25 +02:00
Anson Wayman
f64c8f1ee8 Fix pluggable regression
Modified gapowr and gatower upgrade requirements to prevent multiple
stacking plug bug.
2019-04-04 19:11:04 +02:00
Mustafa Alperen Seki
e7b8a56511 Add ValidStances to AutoTargetPriority. 2019-04-04 19:08:10 +02:00
tovl
25bc3ae2d2 Fix chinook being unable to land. 2019-03-31 18:25:14 +02:00
teinarss
a467e2c92e Added the setting insert_final_newline to editorconfig 2019-03-31 18:02:17 +02:00
Daniel Llewellyn
6289816a69 Update thirdparty/configure-native-deps.sh
Add aarch64 and ppc64le architecture library to search paths.
2019-03-31 15:47:05 +02:00
Oliver Brakmann
320717003f Fix crash due to conflicting access to collection in killed Cargo 2019-03-31 08:41:06 +02:00
Mustafa Alperen Seki
1373a4e16e Seperate TS shellmap rules to Rules yaml.
And make all buildings and walls indestructible.
2019-03-30 23:08:46 +01:00
Paul Chote
f69c6ab3fb Update SharpZipLib to 1.1.0.
The default code page has been changed to UTF8
so our workarounds are no longer needed.
2019-03-30 20:47:22 +01:00
Paul Chote
9cbf08201f Disable debug and enable optimizations by default.
This does not affect stacktraces produced during
a crash when run using `mono --debug`.
2019-03-30 20:17:17 +01:00
Paul Chote
93193d4e63 Document dependency changes in INSTALL.md. 2019-03-30 20:17:17 +01:00
Paul Chote
2c0711d5fb Enable HiDPI rendering in Windows installer. 2019-03-30 20:17:17 +01:00
Paul Chote
d53338ca5e Switch to the newer Roslyn compiler on Linux/macOS. 2019-03-30 20:17:17 +01:00
Paul Chote
5b00586de2 Update Travis to Ubuntu 16.04, Mono 5.10, NSIS 3.03. 2019-03-30 20:17:17 +01:00
tovl
8ee11028d7 Replace SequenceActivities with ChildActivity in several air activities. 2019-03-30 18:54:30 +00:00
Mustafa Alperen Seki
7fe2d1223b Disable veterancy on TS Shellmap 2019-03-30 17:26:43 +01:00
Mustafa Alperen Seki
18be10b537 Make walls on shellmap indestructible. 2019-03-30 17:26:43 +01:00
Mustafa Alperen Seki
dc2fe5b682 Fix Veterancy removal on shellmap rules. 2019-03-30 17:26:43 +01:00
reaperrr
c82888204b MovementTypes refactor update rule 2019-03-30 16:24:47 +00:00
reaperrr
404eee23f9 Adapt WithMoveAnimation to INotifyMoving
And add ValidMovementTypes for configurability.
2019-03-30 16:24:47 +00:00
reaperrr
4c53599736 Adapt GrantConditionOnMovement to INotifyMoving 2019-03-30 16:24:47 +00:00
reaperrr
a10af382b4 Add plumbing for notifying traits of movement
More precisely, about start and stop of movement.
2019-03-30 16:24:47 +00:00
reaperrr
32ab822786 Fix ResupplyAircraft being cancelable by Stop command
It is now immediately queued again, as long as the actor
has not finished rearming/repairing yet.
2019-03-30 16:44:04 +01:00
reaperrr
b92aef5754 Make Aircraft.GetActorBelow() LandAltitude-aware 2019-03-30 16:44:04 +01:00
reaperrr
3211119027 Simplify ResupplyAircraft
By moving part of the take-off prevention (when TakeOffOnResupply
is set to false) to Aircraft.

Main reason & advantage is that dropping the 'WaitFor' child
makes this activity always end when resupplies are done,
which makes it more compatible with being queued as ChildActivity
itself (for example by ReturnToBase).
2019-03-30 16:44:04 +01:00
Oliver Brakmann
b4fd7331b2 Simplify Activity class
After the removal of the CompositeActivity class, all the supporting
code that made it work can be removed as well.
2019-03-30 14:38:23 +00:00
AngryBirdz
19977bb7da Counterstrike Soviet mission Top o' The World ported
I've just finished porting this mission. Tell me if you spot something wrong ;)

Update: Fixed a few things in the lua and rules.
2019-03-28 15:21:21 +01:00
Ivaylo Draganov
7695714f66 Add hotkey for removing actors from control groups
* Add `RemoveFromControlGroup` hotkey
* Add `RemoveFromControlGroup` method to `OpenRA.Game.Selection`
2019-03-28 13:20:47 +01:00
Smittytron
99987db5d9 Add Counterstrike mission Sarin Gas 2: Down Under 2019-03-28 13:14:35 +01:00
Clément Bœsch
3b926d71b5 Honor modifiers in multitap detection
Fixes Issue #15577.
2019-03-26 22:29:04 +01:00
Paul Chote
54d5afed57 Package mono inside the macOS app bundles.
This also removes the explicit dependency on mono's
packaged FreeType, which should allow development
builds to be used with homebrew-packaged mono.
2019-03-26 22:11:58 +01:00
tovl
872bf737e0 Fix transport being blocked by its own passengers. 2019-03-26 21:55:43 +01:00
Voidwalker
a46ec5d930 Cargo improvements 2019-03-26 21:34:09 +01:00
tovl
30de4df749 Replace SequenceActivities with ChildActivity in several activities. 2019-03-25 20:22:35 +00:00
Paul Chote
90ddf24cf3 Display the correct version on generated wiki pages. 2019-03-24 23:24:04 +01:00
Paul Chote
d7ff894346 Actually push the generated weapon docs to the wiki. 2019-03-24 23:24:04 +01:00
Vasya N
63817ae807 TS: fix disruptor healing 2019-03-24 17:23:49 +00:00
Oliver Brakmann
44ca01d36c Remove pretick argument from Activity.Queue()
Pre-ticking a next activity would break the assumption that activities
in a queue would be processed in sequence.
2019-03-24 15:53:13 +00:00
reaperrr
9a15df9dde Update bleed update rule folder and update path
The release is out now, so it's time for updating this.
2019-03-23 21:34:22 +01:00
tovl
5782dde1c7 Remove ISync from AttackMove. 2019-03-23 21:02:04 +01:00
reaperrr
151fea9c00 Remove duplicate Aircraft from TS jumpjet husk 2019-03-23 12:35:12 +01:00
Paul Chote
817db8dbe0 Fix build artifacts leaking between platforms.
This moves the `dependencies` target from `core`
to `default`, so that we aren't forced to run
`linux-dependencies` for non-linux platforms.
2019-03-22 21:36:20 +01:00
Paul Chote
2afd8a3a74 Package mono 5.10 in the AppImages. 2019-03-22 21:36:20 +01:00
Paul Chote
2ba2510018 Check for unpackaged dependencies in make check. 2019-03-22 21:36:20 +01:00
Mustafa Alperen Seki
6c9d961bb5 Polishing Hovers 2019-03-22 21:12:36 +01:00
tovl
16f1750252 Remove ResupplyAircraft hack 2019-03-22 19:02:05 +01:00
tovl
e2e4caf0ba Make Aircraft.OnBecomingIdle accesible. 2019-03-22 19:02:05 +01:00
tovl
64cec4a0ad Revise AttackMoveActivity. 2019-03-22 19:02:05 +01:00
Paul Chote
01f6f98097 Require .NET Framework >= 4.7.2 on Windows. 2019-03-21 20:04:14 +01:00
Mustafa Alperen Seki
ac7d2e00e3 Use .Trait<ConditionManager>(); on GrantConditionOnDamageState 2019-03-21 14:36:33 +01:00
Mustafa Alperen Seki
d54e4395e5 Add GrantConditionOnHealth 2019-03-21 14:36:33 +01:00
Maarten
040f071833 Also trigger mission fail when subpen is sold 2019-03-21 14:25:48 +01:00
abcdefg30
a3325277d9 Prevent support powers from creating two camera actors 2019-03-14 19:29:39 +00:00
Paul Chote
aa9724cc40 Remove SharpFont dependency. 2019-03-14 16:39:26 +01:00
Paul Chote
ebeaf95e4c Reimplement FreeTypeFont against FreeType directly. 2019-03-14 16:39:26 +01:00
Paul Chote
1d4576229a Move FreeType handling into the Platform dll. 2019-03-14 16:39:26 +01:00
abcdefg30
e2a51676f7 Add an update rule for the PlaceSimpleBeacon removal 2019-03-14 01:55:34 +01:00
abcdefg30
2ab127537c Remove PlaceSimpleBeacon and AnimatedBeacon 2019-03-14 01:55:34 +01:00
abcdefg30
8578ce1346 Merge PlaceSimpleBeacon and AnimatedBeacon into PlaceBeacon and Beacon 2019-03-14 01:55:34 +01:00
Mustafa Alperen Seki
8edbf665c5 Make D2k AI don't update ConYard for 2,5 Minutes. 2019-03-14 01:36:44 +01:00
Mustafa Alperen Seki
2aebb05cd0 Implement Building/UnitDelays 2019-03-14 01:36:44 +01:00
Paul Chote
2a9721a9f8 Remove System.Drawing dependency. 2019-03-14 01:01:49 +01:00
Paul Chote
5cc81f7bf7 Implement a simple managed png writer. 2019-03-14 01:01:49 +01:00
tovl
9f419fca34 make cargo unload deploy action queueable
fix line spacing

remove unnecessary null check
2019-03-14 00:54:54 +01:00
tovl
da2e56e478 Make deploying mines queueable. 2019-03-14 00:23:47 +01:00
Mustafa Alperen Seki
556774804f Make Capture related traits conditional. 2019-03-13 23:43:16 +01:00
Mustafa Alperen Seki
35ad33e8be Fix filenames of capture related traits. 2019-03-13 23:43:16 +01:00
abcdefg30
00b8576edf Remove the unused INotifySold.Selling implementation 2019-03-13 23:14:35 +01:00
abcdefg30
f021439dee Use explicit implementation in ScriptTriggers.cs 2019-03-13 23:14:35 +01:00
abcdefg30
59a438b80e Add the ScriptTriggers trait to the world actors 2019-03-13 23:14:35 +01:00
abcdefg30
2db2148310 Add OnAnyProduction and OnSold lua triggers 2019-03-13 23:14:35 +01:00
tovl
c096fbde96 make portable chrono queueable
give PortableChrono fallback movement

style fix

add chrono target line

require and cache IMove
2019-03-12 13:38:48 +01:00
Paul Chote
71b61ad8ee Remove bogus and unnecessary Color[] FieldLoader override. 2019-03-12 12:44:29 +01:00
Paul Chote
d70055c38d Add int channel version of Color.FromAhsl. 2019-03-12 12:41:06 +01:00
Paul Chote
6927767013 Add authentication fingerprint to replay metadata. 2019-03-12 12:37:51 +01:00
abcdefg30
ed255fa919 Move update rules into the correct subfolder 2019-03-11 21:56:13 +00:00
Curtis Shmyr
c1506416c9 Change MECH repair voice from Move to Action 2019-03-11 22:38:47 +01:00
abcdefg30
0ab7e0a855 Add support for multiple (un)deploy sounds on GrantConditionOnDeploy 2019-03-11 21:31:39 +00:00
Paul Chote
ab6ae7bc8d Support 24 bit png loading. 2019-03-11 20:14:09 +01:00
reaperrr
ea2e452075 Add SpawnActorEffect
And use it to drop DelayedAction from ReinforcementsGlobal.
2019-03-11 12:54:58 +01:00
reaperrr
ab4268025a Fix TS Stealth Generator ignoring EMP
On bleed it continues to stealth the surrounding actors when EMP'd.
2019-03-10 23:16:25 +00:00
tovl
6f213dddec Make Attack use ChildActivities 2019-03-10 20:51:47 +01:00
reaperrr
5ec47b47af Rename fields on Repairable traits
To bring them in line with RearmActors,
Repairable.RepairBuildings and
RepairableNear.Buildings have been renamed
to RepairActors.
Additionally, their RA-specific internal
defaults were removed and the FieldLoader
now requires them to be set explicitly.
2019-03-10 19:19:49 +01:00
Mazar Farran
6dd84b2882 Add mazarf to AUTHORS 2019-03-10 18:20:01 +01:00
Oliver Brakmann
0bd00d3b7c Add a ReturnToGroundLayerOnIdle flag to CustomMovementLayers
Co-authored-by: Mazar Farran <farranmazar@gmail.com>
Co-authored-by: Paul Chote <paul@chote.net>
2019-03-10 18:20:01 +01:00
Paul Chote
8fc483b30b Work around a crash for invalid FrozenActor targets. 2019-03-10 17:29:17 +01:00
Paul Chote
6472840690 Notify players when a vehicle have been lost to a Thief. 2019-03-10 17:11:38 +01:00
Paul Chote
71dd84b9d5 Fix invalid target crash in SupportPowerManager.Activate. 2019-03-10 13:26:49 +01:00
Mustafa Alperen Seki
1a728ee153 Add ExperienceTrickler trait. 2019-03-10 13:13:16 +01:00
Mustafa Alperen Seki
b8a85091d4 Make WithRangeCircle conditional 2019-03-10 02:39:27 +01:00
Paul Chote
2ee6243e67 Remove shadow remapping from RA cursors. 2019-03-09 21:57:37 +00:00
Paul Chote
06e63e7dbc Remove bogus green-shadow remap from TD cursors. 2019-03-09 21:57:37 +00:00
tovl
705795abde Activity.Cancel returns void instead of bool. 2019-03-09 21:47:43 +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
tovl
69004f2b94 Prevent premature nulling of childactivities. 2019-03-09 21:47:43 +00:00
tovl
35dba74ded remove unused CompositeActivity 2019-03-09 21:47:43 +00:00
tovl
6d51d3988c fix aircraft ResupplyActivity 2019-03-09 21:47:43 +00:00
Mustafa Alperen Seki
0b0b82bd43 Implement Harvester>BaleUnloadAmount 2019-03-09 12:19:02 +00:00
reaperrr
a7702a8ecd Make HeliReturnToBase use RTB.ChooseResupplier
Small consistency fix and prep for merging HRTB into RTB.
2019-03-09 12:12:51 +00:00
reaperrr
2ac9d92ce7 Remove some legacy activity cruft from Aircraft
You only need to look at the RTB activities to tell that
Aircraft doing its own stuff here was somewhat redundant
and just made things worse regarding debugging and
code consistency.
2019-03-09 12:12:51 +00:00
reaperrr
d7f8f2ba7b Fix D2k Death Hand launch transition
Missile would otherwise visually disappear for a tick.
2019-03-09 12:02:44 +00:00
reaperrr
fa3bf5cefe Add delay support to NukeLaunch
And use that to remove the remaining DelayedAction from NukePower.
2019-03-09 12:02:44 +00:00
abcdefg30
d0c2dbcbb0 Let civilians use the normal stand animation when panicking 2019-03-09 11:57:45 +01:00
abcdefg30
0524a59b6b Fix map preview generation for isometric terrain 2019-03-08 21:21:10 +01:00
abcdefg30
19b2cb0afb Log the stack trace when map saving fails 2019-03-08 21:21:10 +01:00
Pavel Penev
ffac21c3d3 Explicitly specified NuGet package source in the Windows dependencies script
Otherwise NuGet breaks there are alternative (private) NuGet feeds set up on the local machine and one of them isn't responding currently.
2019-03-07 23:58:23 +01:00
Pavel Penev
6d63c99104 Changed NuGet download link for the Windows dependencies script
The previous link downloaded a very old version of nuget.exe for some reason.
2019-03-07 23:58:23 +01:00
reaperrr
2c311a84c9 Add OpenRA.StyleCheck.exe.config 2019-03-07 19:39:57 +01:00
reaperrr
33060a661f Revert #16196 2019-03-07 19:39:57 +01:00
tovl
2e5e7c22f4 Make Mobile a PausableConditionalTrait 2019-03-07 02:50:43 +01:00
Paul Chote
f63d0272a7 Fix map title not updating after remote query completes. 2019-03-06 18:23:33 +01:00
Paul Chote
fc9169a633 Reset spawn previews for empty servers. 2019-03-06 18:23:33 +01:00
Paul Chote
dad21fe879 Remove unused references to System.Data and System.XML. 2019-03-04 18:26:42 +00:00
Paul Chote
4886cca5d3 Remove System.Drawing references from mod code. 2019-03-04 18:26:42 +00:00
Paul Chote
3e404f6ac2 Remove HSLColor. 2019-03-04 18:26:42 +00:00
Paul Chote
ab4a7e3558 Replace System.Drawing primitives with our own. 2019-03-04 18:26:42 +00:00
Paul Chote
ef9f74411b Remove unused variable in ButtonTooltipWithDescHighlightLogic. 2019-03-04 18:26:42 +00:00
Paul Chote
094c8b6432 Use Color.ToString() in perf logs. 2019-03-04 18:26:42 +00:00
Paul Chote
015316e909 Remove uses of state-mutating Rectangle.Offset and Intersect. 2019-03-04 18:26:42 +00:00
Paul Chote
0b641c20df Remove unnecessary uses of System.Drawing primitives. 2019-03-04 18:26:42 +00:00
Paul Chote
00496e2ec2 Remove Order.TargetLocation. 2019-03-04 18:08:42 +00:00
Paul Chote
c7dc237143 Remove Order.TargetLocation from Mobile. 2019-03-04 18:08:42 +00:00
Paul Chote
4c6f4f97d5 Remove Order.TargetLocation from Carryall. 2019-03-04 18:08:42 +00:00
Paul Chote
a5c89c2edc Remove Order.TargetLocation from AttackMove. 2019-03-04 18:08:42 +00:00
Paul Chote
c7d9d9613e Remove Order.TargetLocation from Harvester. 2019-03-04 18:08:42 +00:00
Paul Chote
cd92e94d74 Remove Order.TargetLocation from Aircraft. 2019-03-04 18:08:42 +00:00
Paul Chote
f70a452c56 Remove Order.TargetLocation from Minelayer. 2019-03-04 18:08:42 +00:00
Paul Chote
9c4231165b Remove Order.TargetLocation from beacons. 2019-03-04 18:08:42 +00:00
Paul Chote
d91d96a2e3 Remove Order.TargetLocation from building code. 2019-03-04 18:08:42 +00:00
Paul Chote
6dcd23e874 Remove Order.TargetLocation from support powers. 2019-03-04 18:08:42 +00:00
Unrud
7d72aae5ba Add /app/lib to Lua search locations (for Flatpak) 2019-03-02 20:11:06 +00:00
Paul Chote
666d2e7bac Work around harvester unloading activity queue issues. 2019-03-02 18:22:44 +01:00
Paul Chote
8b618ef7bc Fix maximum range estimation for stationary turrets. 2019-03-02 18:16:12 +01:00
Orb
cbbafd096d MGG Speed Reduction 2019-03-02 17:50:41 +01:00
Orb
e7134282c2 Balance Changes for Next Release by Orb 2019-03-02 17:50:41 +01:00
abcdefg30
7f3c527f4e Fix a crash in soviet05 2019-03-01 22:26:54 +00:00
reaperrr
cae6da77d4 Increase dog attack damage
To make sure it kills veteran Tanya as well as Drop Zone shok troopers.
2019-03-01 14:52:31 +01:00
reaperrr
638c727f5b Fix Drop Zone maps
Fixes Lint errors, Bomb truck gfx & lobby options.
2019-03-01 14:52:31 +01:00
TheChosenEvilOne
30103da2db Conditional TakeCover 2019-02-24 14:43:47 +01:00
Paul Chote
94f7f6fd2e Remove obsolete code. 2019-02-24 14:02:19 +01:00
Paul Chote
5a1124426d Rewrite screenshot saving. 2019-02-24 14:02:19 +01:00
Paul Chote
5f212a99fe Convert Map.SavePreview to new Png code. 2019-02-24 14:02:19 +01:00
Paul Chote
368b0314d5 Convert ConvertSpriteToPngCommand to new Png code. 2019-02-24 14:02:19 +01:00
Paul Chote
82fade25a6 Replace Sheet.AsBitmap with Sheet.AsPng. 2019-02-24 14:02:19 +01:00
Paul Chote
2c96eb9d24 Simplify PngSheetImportMetadataCommand. 2019-02-24 14:02:19 +01:00
Paul Chote
b41d4f5cee Allow Pngs to be created from pixel data. 2019-02-24 14:02:19 +01:00
Paul Chote
4f73b51240 Add Png.Save method. 2019-02-24 14:02:19 +01:00
netnazgul
88d16904ff Fix Pitfight: split stacked ore mine actors to different cells 2019-02-24 13:11:20 +01:00
Paul Chote
ea05e8aae5 Remove flawed RateLimit implementation. 2019-02-23 18:05:57 +00:00
tovl
dc9c758f12 unreserve when not queued 2019-02-22 21:48:34 +00:00
tovl
2975738477 make ReturnToBase order queueable 2019-02-22 21:48:34 +00:00
Punsho
621a42b7d7 Update fakes.yaml 2019-02-22 21:30:48 +00:00
SoScared
b480fecdbd Alter default bot and faction dropdownhights for the RA mod. 2019-02-22 21:26:37 +00:00
Andre Mohren
42446ac9ba Implemented trait defined Rollovers. 2019-02-22 21:15:33 +00:00
Mustafa Alperen Seki
7049f68fbd Add a boolean to show or not Refund X$ on the tooltip while selling. 2019-02-22 21:07:29 +00:00
Mustafa Alperen Seki
bc0296ad13 Add descriptions to the fields in Sellable, which lack them. 2019-02-22 21:07:29 +00:00
Mustafa Alperen Seki
3672a281d2 Make JamsMissiles conditional 2019-02-22 21:01:51 +00:00
portablestew
d592f37617 App config for StyleCheck 2019-02-22 20:15:20 +00:00
reaperrr
117dde32ba Removed unused sanity checks from pathfinding
These haven't been active and used in years.
2019-02-22 19:59:41 +00:00
reaperrr
5166b8cd5d Add missing closing bracket in Move comment 2019-02-22 19:59:41 +00:00
Paul Chote
f6ac32412d Avoid resetting FrozenActor.Hidden when refreshing GPS. 2019-02-22 20:53:39 +01:00
Paul Chote
bf9d06cb12 Reuse GPSDotEffect for the lifetime of the actor. 2019-02-22 20:40:23 +01:00
Ivaylo Draganov
3b6249323d Reorder stance hotkeys in settings to match command bar 2019-02-22 14:45:13 +01:00
abcdefg30
7c2f8ef918 Update the description of EnemyWatcher and AnnounceOnSeen 2019-02-22 14:32:16 +01:00
abcdefg30
db7414e822 Include a note about the necessity of AnnounceOnSeen for OnDiscovered 2019-02-22 14:32:16 +01:00
abcdefg30
599d174f33 Fix a typo in the Lua API description of OnDiscovered 2019-02-22 14:32:16 +01:00
Paul Chote
72c90d84a8 Fix editor crash when modifying newly placed actor ID. 2019-02-21 16:22:32 +01:00
Oliver Brakmann
6841da286c Fix pre-placed frozen actors not being targetable 2019-02-20 16:31:13 +00:00
teinarss
be741cea5e Prevent multiple enumeration of validCells in SpawnMPUnits 2019-02-18 19:35:33 +01:00
Maarten
f91d3f2603 Clarify mission objectives #16169 2019-02-15 15:30:43 +01:00
portablestew
a49287cc97 Possible fix for #14102: Consider airfield available if already reserved for the same actor 2019-02-15 13:59:53 +01:00
Paul Chote
f9cf45e634 Cache passenger bounty traits.
This avoids querying from potentially dead actors.
2019-02-09 19:46:46 +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
portablestew
2d4bad66ae Fix for #7083: Fly stops turning when target is inside the turn radius 2019-02-08 19:38:01 +01:00
Paul Chote
95dc9cb1d2 Defer UpdateFrozenActor until the end of the tick.
Updating the frozen actor calls Actor.GetTargetablePositions,
and so we must guarantee that Created has been called for
the ITargetablePositions traits first.
2019-02-07 19:50:50 +00:00
Oliver Brakmann
0ee9219df3 Fix unresponsive aircraft when executing orders queued during resupply 2019-02-06 18:01:51 +00:00
reaperrr
297be6d6cc Normalize RA tracks 2019-02-03 20:46:39 +01:00
reaperrr
6ff41fe894 Normalize TD track volumes and fix order
Some tracks from the original were falsely listed under CovOps.
2019-02-03 20:46:39 +01:00
abcdefg30
25a4d156ce Let the extraction helicopter of Monster Tank Madness leave 2019-02-03 19:32:51 +00:00
Paul Chote
2b6ebcd09c Fix inconsistent FrozenActor state on capture/destruction. 2019-02-03 20:21:51 +01:00
Paul Chote
08e3e429db Remove obsolete LegacyEnter and ResolveFrozenActorOrder. 2019-02-03 20:21:51 +01:00
Paul Chote
42068f380e Remove ResolveFrozenActorOrder from MadTank. 2019-02-03 20:21:51 +01:00
Paul Chote
6ed2654038 Remove ResolveFrozenActorOrder from EntersTunnels. 2019-02-03 20:21:51 +01:00
Paul Chote
240c2243f2 Remove ResolveFrozenActorOrder from Carryall. 2019-02-03 20:21:51 +01:00
Paul Chote
71dd3202c3 Port EnterTransport to the new Enter activity.
This dramatically simplifies the reservation logic,
which seemed to be needlessly complicated. This may
regress unexpected edge-cases.
2019-02-03 20:21:51 +01:00
Paul Chote
d6b7d5c4c7 Port DonateExperience to the new Enter activity. 2019-02-03 20:21:51 +01:00
Paul Chote
cc288f5afc Port DonateCash to the new Enter activity. 2019-02-03 20:21:51 +01:00
Paul Chote
4551625bb4 Port RepairBridge to the new Enter activity. 2019-02-03 20:21:51 +01:00
Paul Chote
49e3c46d00 Port RepairBuilding to the new Enter activity. 2019-02-03 20:21:51 +01:00
Paul Chote
167371d540 Port Demolish to the new Enter activity. 2019-02-03 20:21:51 +01:00
Paul Chote
a17608a24e Port Infiltrate to the new Enter activity. 2019-02-03 20:21:51 +01:00
Paul Chote
e9c3216048 Port CaptureActor to the new Enter activity. 2019-02-03 20:21:51 +01:00
Paul Chote
c1e8bbfc58 Rewrite Enter activity, accounting for frozen and hidden actors. 2019-02-03 20:21:51 +01:00
Paul Chote
d2274f4285 Rewrite Mobile.MoveIntoTarget to support moving targets. 2019-02-03 20:21:51 +01:00
Paul Chote
1f7b558b29 Rename Enter to LegacyEnter. 2019-02-03 20:21:51 +01:00
Paul Chote
83212b100e Pause actor movement between cells when Mobile is disabled. 2019-02-03 20:21:51 +01:00
Paul Chote
c8f05e90dc Fix turn disabling mobile.IsMoving when setIsMoving is false. 2019-02-03 20:21:51 +01:00
Paul Chote
5995915281 Fix Positions returned by FrozenActor targets.
Also removes redundant Targetables check from actors.
2019-02-03 20:21:51 +01:00
reaperrr
31f4b0a5c4 Fix D2k bots wasting cash on building repairs
D2k bots not repairing buildings when damaged due to placement
without concrete was intentional, and this was bleed's default behavior
before BuildingRepairBotModule got introduced, too.
2019-02-03 18:24:15 +01:00
Paul Chote
f8991470da Disable OpportunityFire on Disruptors.
The original game defined NoMovingFire=true.
2019-02-03 18:07:02 +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
Smittytron
1830b3ee80 Add e6 and thf to Monster Tank Madness 2019-02-03 17:05:54 +01:00
Paul Chote
2194f17dc2 Fix double-revoke crash in Demolishable. 2019-02-03 16:38:04 +01:00
Paul Chote
0a57fbda3c Prefer target to lastVisible target if it is visible. 2019-02-03 16:32:25 +01:00
matjaeck
b466b5d660 Reset unit stance on owner change. 2019-02-03 16:20:24 +01:00
Paul Chote
fd013ad9d0 Remove unnecessary trait queries from HarvesterBotModule 2019-02-03 15:54:07 +01:00
reaperrr
4da2d32bc5 Fix that bots don't re-use capturers
They were never removed from activeCapturers when their target becomes invalid,
preventing the bot from reusing them.
2019-02-03 12:12:34 +00:00
reaperrr
32a3caf423 Fix CaptureManagerBotModule crashing on multiple Capturable
By removing the now-redundant CaptureTarget class.
2019-02-03 12:12:34 +00:00
Oliver Brakmann
3093f67427 Consider dead aircraft to no longer be in range 2019-02-03 11:31:44 +00:00
tovl
ee19cb61b4 add check for NextActivity to FlyCircle
prevent infinite loop

fix for ReturnToBase

cleanup
2019-02-03 11:24:19 +00:00
Paul Chote
b71c080285 Add VolumeModifier support to music. 2019-02-02 22:32:29 +01:00
Paul Chote
810aa744bf Remove AttackSuicides trait. 2019-02-01 23:18:18 +00:00
Paul Chote
24a491a7d7 Implement Hunter-Seeker kill behaviour. 2019-02-01 23:18:18 +00:00
Paul Chote
d750db26b7 Replace AttackSuicides with AttackFrontal and conditions in RA. 2019-02-01 23:18:18 +00:00
Paul Chote
0464a0db58 Remove unused negativeDamage variable from AttackBase. 2019-02-01 23:18:18 +00:00
Smittytron
f1f040a361 Reduce thief speed and engineer CaptureDelay 2019-02-01 22:42:36 +01:00
Paul Chote
cbb9b75144 Enable "campaign" bot for all scripted players in D2k missions. 2019-02-01 20:59:19 +01:00
Paul Chote
61acb905cd Enable "campaign" bot for all scripted players in TD missions. 2019-02-01 20:59:19 +01:00
Paul Chote
73b42e452d Enable "campaign" bot for all scripted players in RA missions. 2019-02-01 20:59:19 +01:00
Paul Chote
9c9cad1a15 Amend Force Attack command bar tooltip. 2019-01-28 00:14:27 +01:00
Paul Chote
2d9822638f Enable ForceFireIgnoresActors on artillery-style units. 2019-01-28 00:14:27 +01:00
Paul Chote
ab6dd3dcf2 Add ForceFireIgnoresActors to AttackBase. 2019-01-28 00:14:27 +01:00
Paul Chote
a2e35144a7 Fix gate animations. 2019-01-27 21:37:55 +01:00
Paul Chote
d6d1f3a06d Fix FrozenUnderFog / FrozenActor visibility consistency.
This fixes cases where both objects return visible / not
when queried at the wrong time during a tick.
2019-01-27 15:21:13 +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
518a54a494 Reduce cash tick volume in the default mods. 2019-01-27 15:05:27 +01:00
Paul Chote
cbe3733deb Add VolumeModifier support to sound definitions. 2019-01-27 15:05:27 +01:00
Paul Chote
70f4c51a17 Add AttackMove workaround for Aircraft. 2019-01-27 00:19:50 +00:00
Paul Chote
60fcf5951c Fix target invalidation and reacquisition in fly activities. 2019-01-26 22:53:46 +00:00
Paul Chote
8efa0da54d Fix target invalidation and reacquisition in (Fly|Heli)Attack. 2019-01-26 22:53:46 +00:00
Paul Chote
0bfc487999 Fix target invalidation and reacquisition in AttackFollow. 2019-01-26 22:53:46 +00:00
Paul Chote
5ef7809002 Fix target invalidation and reacquisition in LeapAttack. 2019-01-26 22:53:46 +00:00
Paul Chote
7c52a6f498 Fix target invalidation and reacquisition in Attack. 2019-01-26 22:53:46 +00:00
Paul Chote
616b6c8499 Fix target invalidation and reacquisition in Follow. 2019-01-26 22:53:46 +00:00
Paul Chote
975821023d Fix target invalidation and reacquisition in MoveAdjacentTo. 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
2080c72ab9 Define plumbing to pass initial target positions to inner move activities. 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
Paul Chote
62102b9f77 Add support for Terrain targets with multiple positions. 2019-01-26 22:53:46 +00:00
Paul Chote
fbb1947624 Make Target fields readonly. 2019-01-26 22:53:46 +00:00
Paul Chote
c627a59b54 Fix self parameter name in DrawLineToTarget. 2019-01-26 22:53:46 +00:00
Paul Chote
7d85c1e81f Remove FrameEndTask from DrawLineToTarget.
This is no longer needed and causes ordering
issues when the unit becomes idle in the same
tick that SetTargetLine is called.
2019-01-26 22:53:46 +00:00
abcdefg30
2c6c2c00b4 Change the year number in README.md from 2018 to 2019 2019-01-26 23:15:21 +01:00
abcdefg30
4a9b00d3e7 Update the year numbers in the packaging section to 2019 2019-01-26 23:15:21 +01:00
abcdefg30
6151443618 Update CreateManPage.cs to print the new header 2019-01-26 23:15:21 +01:00
abcdefg30
12f278cdac Remove trailing white spaces from ant-attack.lua 2019-01-26 23:15:21 +01:00
abcdefg30
03e0fb6986 Add a header to ant-attack.lua 2019-01-26 23:15:21 +01:00
abcdefg30
8b9603168a Change the year number in all lua headers from 2018 to 2019 2019-01-26 23:15:21 +01:00
abcdefg30
cadbd0d9ab Change the year number in all cs headers from 2018 to 2019 2019-01-26 23:15:21 +01:00
Paul Chote
628547a8e5 Fix source package creation. 2019-01-26 23:07:20 +01:00
Paul Chote
9025d11c54 Map Ctrl to Cmd for editor copy hotkey. 2019-01-26 21:46:46 +00:00
rob-v
de851fba2c Add shortcut for Copy in Map editor 2019-01-26 21:46:46 +00:00
Paul Chote
a545b2e5fa Deselect actors when their owner changes. 2019-01-26 21:40:31 +00:00
Paul Chote
0df159e73b Cache world INotifySelection traits in Selection. 2019-01-26 21:40:31 +00:00
Paul Chote
64c853a4e0 Only play queued notification if queue is empty.
This matches the behaviour of the RA2 sidebar.
2019-01-26 21:36:45 +00:00
Paul Chote
8d276ff9de Replace broken (Disabled)TabClick and with (Disabled)ClickSound. 2019-01-26 21:36:45 +00:00
Paul Chote
635038aa0b Disable bot logic during replays. 2019-01-26 21:33:47 +00:00
abcdefg30
531560c41e Allies03b: Fix the insertion helicopter revealing shroud 2019-01-26 21:29:04 +00:00
abcdefg30
e637b45cab Allies03: Remove hacke6 2019-01-26 21:29:04 +00:00
abcdefg30
c9c4d15b1e Allies03b: Fix heavy tank reinforcements triggering twice 2019-01-26 21:29:04 +00:00
abcdefg30
ff0521e5c8 Allies01: Remove redundance (caused by inheritance) 2019-01-26 21:29:04 +00:00
abcdefg30
c0b1225edc Allies01: Add a new line at the end of the briefing 2019-01-26 21:29:04 +00:00
abcdefg30
41dc9c7ca3 Allies01: Fix civilian infantry being visible below fog 2019-01-26 21:29:04 +00:00
abcdefg30
43a6558ac6 Allies01: Fix the extraction helicopter revealing shroud 2019-01-26 21:29:04 +00:00
abcdefg30
76b05c0c0d Allies01: Fix the extraction helicopter landing before being removed 2019-01-26 21:29:04 +00:00
abcdefg30
3e93242929 Fix OnAllRemovedFromWorld only triggering once 2019-01-22 23:09:21 +00:00
Paul Chote
d379555784 Remove Game.Debug messages from ValidateOrder. 2019-01-22 22:59:37 +00:00
rob-v
a2c6b19205 No player name in replay for chat commands 2019-01-22 22:57:11 +00:00
abcdefg30
428155c093 Fix LeapAttack setting attack.IsAiming too early 2019-01-22 22:52:43 +00:00
abcdefg30
3039b1d710 Reset the client state when being moved to spectator 2019-01-22 22:47:39 +00:00
abcdefg30
e08b75c2ad Only consider system maps in the mission browser 2019-01-19 18:47:29 +00:00
abcdefg30
717b483ce7 Use map folder names instead of paths in the mission browser 2019-01-19 18:47:29 +00:00
rob-v
9ed2ffea91 Fix Warhead.IsValidAgainst (FrozenActor.Owner null) 2019-01-19 12:03:15 +00:00
abcdefg30
7eff82c99b Move Actor103 in Allies02 one cell to the right
He was standing on impassable terrain and therefore couldn't move.
2019-01-19 11:56:22 +00:00
abcdefg30
30e3b45637 Let the remaing enemy troops in Allies02 attack the player
once the base is destroyed.
Does not include unit guarding the convoy path.
2019-01-19 11:56:22 +00:00
Smittytron
da40f45ece Add IsDead check to fix crash in Sarin Gas 1 2019-01-19 11:45:31 +00:00
abcdefg30
9c7ba51e29 Fix a crash in Infiltration 2019-01-19 11:27:15 +00:00
Smittytron
98e54edf04 Change tree husks from FrozenUnderFog to HiddenUnderShroud 2019-01-19 11:16:12 +00:00
Paul Chote
b1e87e4f60 Remove System.Bitmap from ITexture. 2019-01-08 21:20:06 +00:00
Paul Chote
84e965835b Remove System.Bitmap from badge and mod icons. 2019-01-08 21:20:06 +00:00
Paul Chote
f65a777366 Remove System.Bitmap from map preview loading. 2019-01-08 21:20:06 +00:00
Paul Chote
4f10d4a302 Remove System.Bitmap from UI artwork loading. 2019-01-08 21:20:06 +00:00
Paul Chote
52be0192f6 Add RGBA support to png parser. 2019-01-08 21:20:06 +00:00
Paul Chote
49b04221b2 Add palette checks for png sprites. 2019-01-08 21:20:06 +00:00
Paul Chote
d2ee9bcad9 Move Png loader back to OpenRA.Game. 2019-01-08 21:20:06 +00:00
Smittytron
05b866a87a Change LST turn speed to default max 2019-01-07 12:37:00 +01:00
Oliver Brakmann
c2cf8ba599 Add an interface to prevent actors from being spawned by SpawnMapActors 2019-01-07 10:13:50 +00:00
Mustafa Alperen Seki
df1d928242 Hide husks under fog regardless of their owner. 2019-01-06 22:12:04 +01:00
Paul Chote
6de92de8d9 Revert macOS dark mode (again).
The updated GL surface appears to have regressed vsync behaviour.
2019-01-06 08:33:11 +00:00
reaperrr
b05d246c48 Add BotDebug message for external unit build requests
For easier bot debugging of things like MCV- and harvester replacement.
2019-01-06 08:39:45 +01:00
reaperrr
3a1656c3dd Remove unused BuildUnit overload from UnitBuilderBotModule
Unused and didn't check things like Buildable, so better just remove it.
2019-01-06 08:39:45 +01:00
reaperrr
b2649749d9 Enable harvester replacement in official mods 2019-01-06 08:39:45 +01:00
reaperrr
137d3be346 Add plumbing for bots auto-replacing harvesters
If their number drops below refinery count.
2019-01-06 08:39:45 +01:00
reaperrr
e36ef57e35 Increase default scan interval for idle bot harvesters
Every 2 seconds (at default speed) should be enough.
2019-01-06 08:39:45 +01:00
reaperrr
481e5e03d8 Make bots deploy MCV on first tick
And use a boolean instead of counting ticks.
2019-01-06 08:39:45 +01:00
Paul Chote
4d3db0d454 Fix invalid target crash if Leap target dies. 2019-01-05 23:59:25 +01:00
Paul Chote
01f5c67036 Fix spectator crash if replay does not define FinalGameTick. 2019-01-05 23:56:21 +01:00
Paul Chote
f929087d15 Fix artwork when leaping. 2019-01-05 19:54:38 +01:00
Paul Chote
ae38133c9f Use the CenterPosition as the starting position. 2019-01-05 19:54:38 +01:00
Paul Chote
0c7158efcd Calculate Leap state on first run instead of construct. 2019-01-05 19:54:38 +01:00
abcdefg30
6b9a2a3c29 Reduce the range of DogJaw from 3c0 to 2c0 2019-01-05 18:28:57 +00:00
Paul Chote
f5d788f4fc Prevent unit requests from stacking during production. 2019-01-04 21:14:20 +00:00
Ivaylo Draganov
caead311cb Add hotkey for Army value statistics panel 2019-01-04 21:12:06 +00:00
Ivaylo Draganov
f26905f5d0 Rearrange default observer hotkeys
* Move replay speed hotkeys to `F9 - F12`
* Set `F5` as default for `StatisticsGraph`
2019-01-04 21:12:06 +00:00
rob-v
a77d2f15b1 Map Editor - Copy filter 2019-01-03 20:32:10 +01:00
Paul Chote
5a8f7f1a5f Increase squad calculation intervals.
These were unnecessarily short, increasing the
AI performance overhead, and making it difficult
for units to escape concave terrain features.
2019-01-03 02:04:08 +01:00
Paul Chote
3d9e877eb2 Disable rush attacks against enemy aircraft. 2019-01-03 02:04:08 +01:00
Paul Chote
8a6a68feef Unify Squad enemy unit filtering. 2019-01-03 02:04:08 +01:00
Paul Chote
6fc291a634 Disable target recalculation for bots.
This fixes bot-controlled units freezing when they
lock on to units that aren't visible.
2019-01-03 02:04:08 +01:00
Mustafa Alperen Seki
4578ea09ba Add DamageTypes to Capture Sabotage 2019-01-02 20:04:06 +01:00
Mustafa Alperen Seki
baac3f3ee9 Remove C17 from map editor. 2019-01-02 19:57:24 +01:00
Mustafa Alperen Seki
816cb2cdc2 Remove duplicate D2k starport actors from map editor. 2019-01-02 19:57:24 +01:00
Mustafa Alperen Seki
0c540cd41e Remove actors with AttackBomber trait from map editor. 2019-01-02 19:57:24 +01:00
Mustafa Alperen Seki
6b4ba96e34 Remove aircraft husks from map editor actor list. 2019-01-02 19:57:24 +01:00
Mustafa Alperen Seki
b0188cc476 Remove Buildable traits from A10 and C17.
Leftover from upgrade rule that move description from Tooltip to
Buildable.
2019-01-02 19:57:24 +01:00
Mustafa Alperen Seki
eaa9b49793 Add Stance Support to GrantExternalConditionPower. 2019-01-01 23:05:56 +01:00
Paul Chote
d7c54d74ad Evaluate smooth scrolling per-frame instead of per-tick. 2019-01-01 21:52:13 +01:00
Clément Bœsch
bb5e0eafba Observer: display army value in a new dedicated graph tab 2019-01-01 18:25:44 +00:00
Clément Bœsch
11b064a333 Observer: display army value in stats widget 2019-01-01 18:25:44 +00:00
Clément Bœsch
501c029579 TS: set UpdatesPlayerStatistics.AddToArmyValue where appropriate 2019-01-01 18:25:44 +00:00
Clément Bœsch
7cde528969 D2K: set UpdatesPlayerStatistics.AddToArmyValue where appropriate 2019-01-01 18:25:44 +00:00
Clément Bœsch
a162cdda41 CNC: set UpdatesPlayerStatistics.AddToArmyValue where appropriate 2019-01-01 18:25:44 +00:00
Clément Bœsch
3aedeefced RA: set UpdatesPlayerStatistics.AddToArmyValue where appropriate 2019-01-01 18:25:44 +00:00
Clément Bœsch
3ec2f23109 Add Army value to player statistics
To be accounted as army, the unit needs to have
UpdatesPlayerStatistics.AddToArmyValue to true (false by default)
2019-01-01 18:25:44 +00:00
Paul Chote
4d56ecb3a8 Remove unused MaximumDefenseRadius parameter. 2019-01-01 12:43:10 +01:00
Paul Chote
e23b6f8a9d Fix screenshot pixel opacity. 2019-01-01 11:28:05 +00:00
rob-v
8c94f262b6 Map Editor - Tiles' filters multiple selection 2019-01-01 11:25:31 +00:00
rob-v
f18d874524 CommonSelectorLogic for ActorSelectorLogic and TileSelectionLogic 2019-01-01 11:25:31 +00:00
reaperrr
63f76fc277 Exclude dogs from bot squads in RA
This prevents bots from using their up-to-4 dogs in attacks.
Bots aren't good at using them effectively, so they're better as passive defense
against infantry attacks or spies/engineers sent by human players (and maybe later bots, too).
2018-12-31 16:15:03 +00:00
reaperrr
7ccfe0d2e7 Move up GrantConditionOnBotOwner in AI yamls
Right below the bot traits is better for readability than between modules.
2018-12-31 16:15:03 +00:00
Paul Chote
59f2f5669f Change UpdateRules to account for 20181215 hotfix 2018-12-31 14:22:49 +01:00
reaperrr
d179f6eaae HackyAI dissolve update rule and yaml updates 2018-12-31 10:56:01 +00:00
reaperrr
54c2894b4e Split off last bot modules
And dissolve AI namespace.
There would have been so little left in Common.AI,
that keeping it made no sense anymore.
2018-12-31 10:56:01 +00:00
Paul Chote
b74ff33039 Revert "Fix QuantizeFacing returning values >= numFacings."
This reverts commit f35ee8c303.
2018-12-31 00:01:03 +00:00
Paul Chote
cc004b3546 Fix compatibility with macOS's dark mode. 2018-12-30 23:57:06 +00:00
Smittytron
1facff6ab1 Override Bio Lab construction options in campain-rules.yaml 2018-12-30 21:54:27 +01:00
Smittytron
d751c055b5 Add Counterstrike mission Sarin Gas 1: Crackdown 2018-12-30 21:54:27 +01:00
Dylan Manitta
f5d12bfde1 Add ant mission 1 2018-12-30 21:20:56 +01:00
abcdefg30
0ff4e466ee Refactor Leap attack logic 2018-12-29 19:21:54 +01:00
abcdefg30
9c4cb9091e Change the setter of AttackBase.IsAiming to be public 2018-12-29 19:21:54 +01:00
abcdefg30
8689030f79 Add GrantConditionWhileAiming 2018-12-29 19:21:54 +01:00
dtluna
7608922ff0 Add Nod 10a mission 2018-12-27 21:09:14 +01:00
dtluna
809f57e48d Add Nod 10b mission 2018-12-27 19:22:37 +01:00
Smittytron
a0089d97e6 Fix typo in CrateSpawner 2018-12-27 04:11:54 +01:00
Mustafa Alperen Seki
00faccdecc Fix LandOnCondition causing stopping after changing altitude. 2018-12-26 17:44:45 +01:00
Paul Chote
2a2ad71db9 Add GUI checkbox for Debug.StrictActivityChecking. 2018-12-26 17:33:55 +01:00
Paul Chote
4dea39fffe Reorder and document advanced settings. 2018-12-26 17:33:55 +01:00
Paul Chote
69105180eb Hide developer-only settings behind a hidden setting. 2018-12-26 17:33:55 +01:00
Paul Chote
601990aa27 Add setting to check BotModule sync. 2018-12-26 17:33:55 +01:00
Paul Chote
83e44bee66 Rework and rename Sync.CheckSyncUnchanged 2018-12-26 17:33:55 +01:00
Paul Chote
b41c178cb9 Revert "Units that have turrets while deployed now move their turrets back to their initial positions before undeploying"
This reverts commit d34bea2935.
2018-12-26 16:35:26 +01:00
Unknown
7184f5f97e Fix QueryRemoteMapDetails multi-map status updates 2018-12-25 11:14:48 +13:00
Mustafa Alperen Seki
a2ac95d140 Add facing support to Gravity Bomb. 2018-12-24 20:58:55 +01:00
Jeremy
85a97998aa Added final game tick to replay meta data for completion percentage on replay. 2018-12-24 20:51:03 +01:00
Mustafa Alperen Seki
863091d5cc Make Concrete under buildings indestructible. 2018-12-24 13:48:19 +01:00
reaperrr
be310ab6a6 Streamline resource anim traits
- Replaces WithSiloAnimation with
  WithResourceLevelSpriteBody.

PlayFetchIndex on a With*Animation trait conflicts
with the animation concept, as it's bound to conflict
with pretty much all 'normal' animation traits and
blocks progress on the animation priority system.

We also already have multiple similar SpriteBody traits,
like WithGateSpriteBody and WithWallSpriteBody.

- Rename WithResources to WithResourceLevelOverlay

Make name more accurate and consistent with sprite body
equivalent.
Also fix TS silo yaml setup (bleed setup stems from times
before WithResources was introduced).
2018-12-24 21:29:42 +13:00
reaperrr
305d82f887 Replace WithChargeAnimation with -SpriteBody
PlayFetchIndex on a With*Animation trait conflicts with the animation
concept, as it's bound to conflict with pretty much all 'normal'
animation traits and blocks progress on the animation priority system.

We also already have multiple precedent SpriteBody traits of similar kind,
like WithGateSpriteBody and WithWallSpriteBody.
2018-12-24 21:29:42 +13:00
Chris Forbes
e292e88bff Improve RenderShroudCircle configuration. 2018-12-24 01:57:11 +01:00
Oliver Brakmann
680ffffff2 Cache some more strings in GameInfoStatsLogic 2018-12-24 00:55:09 +01:00
Oliver Brakmann
3507167e79 Fix player score not updating while game info screen is visible 2018-12-24 00:55:09 +01:00
David Wilson
bbc83c1799 Rate limits for notification sounds 2018-12-24 12:18:52 +13:00
Paul Chote
9b3ddee517 Fix QuantizeFacing returning values >= numFacings. 2018-12-24 00:00:06 +01:00
Oliver Brakmann
e5f34a99ac Fix Lint test failures in Allies08b 2018-12-24 11:06:17 +13:00
Paul Chote
3817c7b96f Change existing husks to neutral when owner loses. 2018-12-23 22:14:56 +01:00
Smittytron
65269f7950 Add Allies08b 2018-12-23 21:59:14 +01:00
reaperrr
7ed67338f3 Allow forcing sprite body Z position to ground 2018-12-23 17:16:06 +13:00
Paul Chote
5efbcf19f2 Fix cell-out-of-bounds crashes in BuildableTerrainLayer. 2018-12-22 21:15:09 +01:00
reaperrr
6db27b1839 Split off CaptureManagerBotModule
from HackyAI.

Note: This isn't used in any official mod right know,
and known to be bugged on bleed already.
2018-12-22 17:42:53 +01:00
Paul Chote
d823d38e8c Fix "game is full" error when the game is not full.
Client.IsObserver is not valid to check until the
slot has been assigned.
2018-12-22 04:55:57 +01:00
Oliver Brakmann
e71a31925f Require explicit implementation of INotifyObjectivesUpdated 2018-12-22 16:39:06 +13:00
Smittytron
d10d48c25f RA balance changes for December 2018 2018-12-22 11:07:27 +13:00
reaperrr
9914848356 BaseBuilder- and BuildingRepairBotModule update rule 2018-12-19 21:50:54 +13:00
reaperrr
d46710d6ce Fix bot module update rule setting wrong RequiresCondition
Yaml nodes are reference types, so caching this meant changes would be applied on all of them.
Additionally, only add HarvesterBotModule if at least one AI is actually using it.
2018-12-19 21:50:54 +13:00
reaperrr
04c34741c8 Extract BaseBuilderBotModule from HackyAI 2018-12-19 21:50:54 +13:00
Paul Chote
9f30e2ecb0 Add a --utility argument to the AppImages. 2018-12-17 22:34:37 +01:00
Paul Chote
224377f078 Track visibility modifiers on FrozenActors. 2018-12-17 22:19:26 +01:00
Paul Chote
5f79c31a57 Add AutoTarget support for FrozenActors. 2018-12-17 22:19:26 +01:00
Paul Chote
c34dd4b824 Allow Attack activities to target FrozenActors directly.
Removing the legacy FrozenActor to Actor workaround
fixes a number of long-standing bugs.

This also prevents units from losing their target when
it transforms into a different actor type.
2018-12-17 22:19:26 +01:00
Paul Chote
0406b89a96 Add Actor.ReplacedByActor to track transformations.
This isn't great conceptually, but has precedent
in the Generation number.
2018-12-17 22:19:26 +01:00
Paul Chote
2ac7e451b4 Remove AttackBase.IgnoresVisibility.
This was a workaround for D2K sandworms, which is
now implemented using a custom attack activity.
2018-12-17 22:19:26 +01:00
Paul Chote
8eeb6d68e7 Tweak FrozenActorLayer queries:
- FrozenActorsInRegion now filters for valid and (optionally) visible FAs
- Add new FrozenActorsInCircle to mirror World.FindActorsInCircle.

The first change means that SupportPowerDecision now correctly ignores
FrozenActors that the AI has not discovered.
2018-12-17 22:19:26 +01:00
Paul Chote
3e490e5843 Cache FrozenActorLayer on the Player object.
This avoids unnecessary trait queries.
2018-12-17 22:19:26 +01:00
Andre Mohren
f238e2c5cc Fixed filename 2018-12-17 10:28:54 +13:00
reaperrr
b048e9c77b Fix two typos in TD music.yaml
One major (filename, track wouldn't show up) and one minor (titles should be all uppercase).
2018-12-16 18:19:40 +01:00
Paul Chote
98b80d44eb Remove legacy workaround that crashes modern Mono. 2018-12-15 23:35:29 +01:00
Paul Chote
04359206ff Remove long-broken setting to ignore version mismatches. 2018-12-15 23:30:36 +01:00
Paul Chote
b7317f2202 Add auth and sync report settings to dedicated server scripts. 2018-12-15 23:30:36 +01:00
Paul Chote
cc707f0037 Disable MP sync report generation by default.
A new Server.EnableSyncReports option is provided
so that server operators can restore them remotely
in the event of a future desync bug.
2018-12-15 23:30:36 +01:00
Paul Chote
081182b60f Profile sync report generation separately. 2018-12-15 23:30:36 +01:00
Paul Chote
9cee77ed8c Add hardcoded fallback mountpoints for asset detection on Linux. 2018-12-15 22:22:54 +01:00
abcdefg30
ee221f3e0d Revert balance changes to civilian buildings for the campaign missions 2018-12-10 10:01:31 +13:00
abcdefg30
48360bad8b Use the tooltips from the original game for MISS and FCOM 2018-12-10 10:01:31 +13:00
abcdefg30
fe05dad670 Disable inaccurate tooltip descriptions in the campaign missions 2018-12-10 10:01:31 +13:00
Paul Chote
ea9f12ffbc Simplify and fix panel positioning at different zooms. 2018-12-08 22:53:13 +01:00
Paul Chote
4723e5ddb9 Expose common actor Inits in the map editor. 2018-12-08 22:53:13 +01:00
Paul Chote
f6768fe624 Remove legacy editor actor properties plumbing. 2018-12-08 22:53:13 +01:00
Paul Chote
1d98b8b8f0 Fix damagestates in the map editor. 2018-12-08 22:53:13 +01:00
Paul Chote
07fc67f58d Remove obsolete and unused PreventsTeleport method. 2018-12-08 22:34:44 +01:00
Paul Chote
38f341ac1d Allow MadTank Detonate order to be queued. 2018-12-08 22:34:44 +01:00
Ivaylo Draganov
9be7298311 Remove airstrike/paradrop beacon when the whole squad is shot down 2018-12-08 22:30:17 +01:00
Paul Chote
13f5ef50b9 Fix production tooltip padding. 2018-12-08 15:32:58 +01:00
Paul Chote
3e7caa2faa Fix Commando/Tanya build announcements. 2018-12-08 15:27:06 +01:00
Paul Chote
d9f8afdbe5 Add GrantExternalConditionToProduced trait. 2018-12-08 15:27:06 +01:00
Paul Chote
73198dc45a Fix queued EnterTransport unload glitch. 2018-12-08 11:41:20 +01:00
Paul Chote
4b6853b433 Prevent multiple Transforms from triggering in the same tick.
This leads to actor duplication.
2018-12-08 11:34:49 +01:00
Smittytron
72923b9572 Merge Hijacker into Thief 2018-12-07 17:38:24 +03:00
Inq8
e6668bbb59 Improve Hind visibility
Recoloured the hind to a lighter shade to alleviate #15401
2018-12-06 18:09:23 +13:00
reaperrr
bdbc19376a Fix bot module update rule NRE on overrides
We cannot reliably update overrides of base HackyAI definitions,
unless they (re-)define Type.
If they don't, we now instead just list their locations.
2018-12-05 09:29:13 +13:00
reaperrr
20ba45d467 Remove queueing HeliFlyCircle from AutoCarryall 2018-12-05 09:20:58 +13:00
reaperrr
ac3e601edf Use INotifyIdle on Aircraft
For now only to trigger landing or circling.
2018-12-05 09:20:58 +13:00
reaperrr
d8220b390a Add IdleTurnSpeed to Aircraft
Instead of hardcoding 1/3 of normal TurnSpeed on HeliFlyCircle.
2018-12-05 09:20:58 +13:00
reaperrr
1553a8a5cb Fix empty activity tick when becoming idle
Activities usually don't do much more than cleanup on their last, 'null' tick.
That, combined with queued activities normally only starting to tick on the next tick,
would lead to visible 1-tick 'gaps' between movement activities.
Non-movement activities would suffer from the same problem,
only with different (presumably less noticable) symptoms.

Now we start ticking any activity that was queued from OnBecomingIdle
immediately, to avoid that issue.
2018-12-05 09:20:58 +13:00
reaperrr
87fa8a77c2 Make various D2k map deco require Neutral owner
And make worm require Creeps.
2018-12-05 09:07:30 +13:00
reaperrr
eaca8b6287 Make various RA map deco require Neutral owner 2018-12-05 09:07:30 +13:00
reaperrr
7c9856ded7 Make various TD map deco require Neutral owner 2018-12-05 09:07:30 +13:00
reaperrr
7503919659 Enforce Neutral owner for TS decorations
Fortunately, all official maps already adhered to that.
2018-12-05 09:07:30 +13:00
reaperrr
eb86160021 Remove CrateEffect in favor of using updated SpriteEffect 2018-12-05 09:04:29 +13:00
reaperrr
4de0d0fcb9 Replace LaunchEffect with updated SpriteEffect 2018-12-05 09:04:29 +13:00
reaperrr
c2d6b78b18 Add dynamic position support to SpriteEffect
This was the last missing 'puzzle piece' to replace some remaining spcial-case effects.
2018-12-05 09:04:29 +13:00
Paul Chote
6ac7f887c0 Fix a VS code style suggestion. 2018-11-26 19:46:05 +01:00
Paul Chote
9e85aefca8 Make the lobby teamchat selector match the in-game selector. 2018-11-26 19:46:05 +01:00
Oliver Brakmann
7454427b13 Fix FindResources aborting to early 2018-11-25 22:41:46 +00:00
Paul Chote
8a95241fd5 Change mechanics to repair ally-owned husks.
Now uses the goldwrench cursor and keeps the
original owner.
2018-11-25 19:20:28 +01:00
Paul Chote
89161b61ec Remove neutral-owner workaround from RA husks. 2018-11-25 19:20:28 +01:00
Paul Chote
fac271245b Add InfiltrateForTransform trait. 2018-11-25 19:20:28 +01:00
Paul Chote
66464a6164 Add cursor support to Infiltrates.
Also fixes targeting vs ally-owned actors.
2018-11-25 19:20:28 +01:00
Paul Chote
26363e5811 Remove references to buildings from infiltration Descs. 2018-11-25 19:20:28 +01:00
Paul Chote
7ddcc2e958 Remove the default notification from Infiltrates. 2018-11-25 19:20:28 +01:00
reaperrr
451a38338b Convert AISupportPowerManager to module 2018-11-25 19:00:44 +01:00
netnazgul
c195699476 Implement a slider widget for volume control that returns an exponentially scaled value 2018-11-25 16:54:30 +01:00
Smittytron
9c08e430e2 Add myself to AUTHORS 2018-11-24 23:21:01 +01:00
Smittytron
32968e4f4b Add Soviet08a 2018-11-24 23:21:01 +01:00
reaperrr
67cba65800 Fix bot module plumbing
Fixes the issues pointed out after the original harvester module was merged.
Also merges the update rules as discussed on IRC.
2018-11-24 11:05:37 +00:00
David Wilson
22bece2dc9 Add a basic actor properties panel to the editor. 2018-11-24 10:14:17 +00:00
abcdefg30
9b4db3468b Fix CombatProperties not accounting for multiple AttackBase traits 2018-11-22 23:16:30 +00:00
Brenton Horne
2d4d6cdc1b Fixing several ShellCheck warnings 2018-11-22 21:30:59 +00:00
Paul Chote
807a40c209 Remove IExplodeModifier interface. 2018-11-22 22:16:56 +01:00
Paul Chote
80842fd4b8 Add GrantConditionOnPlayerResources trait. 2018-11-22 22:16:56 +01:00
Paul Chote
3be008f592 Add EmptyCondition to Harvester. 2018-11-22 22:16:56 +01:00
Paul Chote
5f2cc5981d Remove unused IExplodeModifier from Refinery. 2018-11-22 22:16:56 +01:00
reaperrr
10e51db236 Remove hardcoded mpspawn owner lint check
Use RequiresSpecificOwner to enforce the owner
that owns the world instead.

Require 'Neutral' in the official mods accordingly.
2018-11-21 22:29:55 +00:00
reaperrr
1eb573bcbc Enforce required owner in map editor
It can easily happen that mappers forget to set the
current player to Neutral before placing more trees,
for example, so we force the editor to set a valid owner.
2018-11-21 22:29:55 +00:00
reaperrr
fcb09d069b Add RequiresSpecificOwners trait
To enforce specific owners via Lint rules,
and possibly other means later.
This is for cases where accidentally setting an
unfitting owner via editor could cause issues.

Example: AI might try to attack Creeps-owned trees
and get stuck.
2018-11-21 22:29:55 +00:00
Oliver Brakmann
310b63150f Check for player trait prereqs in ProximityCapturable 2018-11-21 22:12:07 +00:00
Andre Mohren
c3f4bc484d Correctly handle Production traits disabled by condition. 2018-11-21 22:13:20 +01:00
Mustafa Alperen Seki
53032576e2 Update default mods for Heal WH full health check removal 2018-11-21 19:25:45 +01:00
Mustafa Alperen Seki
6a599e57f6 Remove check for full health for negative damage warheads 2018-11-21 19:25:45 +01:00
Andre Mohren
99de33bbe3 Added smudge chance. 2018-11-21 18:00:11 +01:00
TheChosenEvilOne
e01953afa3 Made Turreted PausableConditional 2018-11-21 17:32:53 +01:00
Paul Chote
1af9efe246 Avoid a crash if subjects is empty.
This can happen in the rare instance that the last
actor in the selection is killed in the same tick
that the OG is activated, and GetCursor is called
before the next tick cancels the OG.
2018-11-20 21:55:55 +01:00
teinarss
3b6024c086 Defer setting slot on client to completeConnection 2018-11-19 22:05:32 +00:00
reaperrr
b8d3c9f73a Fix aircraft being repaired mid-air
Repairable was originally written for ground actors,
so it's both safer and much easier to just handle this in Aircraft directly.
2018-11-19 21:40:10 +00:00
reaperrr
560d7b4ee8 Fix Repairable crash
MoveAdjacentTo is a Mobile-only activity.
2018-11-19 21:40:10 +00:00
reaperrr
7d695f0c8f Fix actors in ReturnFire stance following targets
On bleed, if AllowMovement is true actors with ReturnFire will actually follow the acquired target, unlike in Defend stance.
This is at least unintuitive, since ReturnFire is expected to be more passive than Defend.
2018-11-18 16:19:50 +01:00
teinarss
bc009634e5 Show team/spawn widget after admin transfer. 2018-11-18 14:47:10 +01:00
Paul Chote
ad4b4dc7f8 Remove unused tileset update/save code. 2018-11-18 14:11:11 +01:00
Andre Mohren
0fca984463 Implemented InfiniteBuildAfter. 2018-11-17 17:39:18 +00:00
Andre Mohren
89051d40e8 Remove utf8 BOM. 2018-11-17 17:23:22 +00:00
Andre Mohren
7323db1492 Unified copyright regions. 2018-11-17 17:23:22 +00:00
Andre Mohren
b1a44086a0 Removed unused using directives. 2018-11-17 17:23:22 +00:00
Ivaylo Draganov
db64dc82c3 Fix damaged-idle sequence of RA refinery 2018-11-16 21:33:23 +01:00
reaperrr
cd82382f68 Change CreateEffectWarhead to use World.LocalRandom 2018-11-11 19:50:16 +01:00
reaperrr
16e78b8ca8 Add LocalRandom to World
To - in the long term - reduce or remove Game.CosmeticRandom.
2018-11-11 19:50:16 +01:00
Mustafa Alperen Seki
becfc154c5 Add Creates/RevealsShroudMultiplier. 2018-11-10 12:14:14 +01:00
Mustafa Alperen Seki
4987d45f23 Fix a crash when protected properties are [Sync]ed. 2018-11-10 12:14:14 +01:00
Mustafa Alperen Seki
3224843d70 Add Demolition>(Force)TargetStances 2018-11-10 11:48:28 +01:00
TheChosenEvilOne
51ec97fb2c Check for null in Turreted.StopAiming 2018-11-09 23:58:16 +01:00
reaperrr
74fa8752c9 Revert granting condition from HackyAI
In favor of using GrantConditionOnBotOwner.
Updated update rule and shipping mods accordingly.
2018-11-09 23:45:24 +01:00
reaperrr
4c9c8bf7fc Remove unused HarvesterEnemyAvoidanceRadius
...from HackyAI. This removal either got lost during rebase,
or was simply forgotten to apply when partially rewriting HarvesterBotModule.
2018-11-07 11:01:21 +01:00
Paul Chote
2064dc7c30 Support non-int Enum types in the Lua API. 2018-11-04 18:32:33 +01:00
Chris Forbes
d653614e75 Replicate palette high bits into the low bits
Previously we didn't quite get the full range -- the most intense value we
could produce was 0xfc.
2018-11-04 15:06:50 +01:00
abcdefg30
ae0a0163cc Fix DamagesConcreteWarhead crashing when a target becomes invalid 2018-11-04 10:49:29 +00:00
Ivaylo Draganov
31f2441709 Draw target lines for allied players and observers 2018-11-04 06:34:43 +01:00
reaperrr
927b6cd561 Convert AIHarvesterManager into *Module 2018-11-04 01:11:00 +01:00
reaperrr
04c69efc30 Prepare HackyAI for module support
- Split order handling to BotOrderManager
- Make HackyAI provide a condition
- Move BotDebug to AIUtils
2018-11-04 01:11:00 +01:00
reaperrr
71fb670def Move InitialFacing to ^Helicopter default
In RA and TD mods.
2018-11-04 00:25:55 +01:00
reaperrr
92912c6c94 Add TurnToDock to Aircraft
Instead of hard-coding a turn before VTOLs
land/dock on resupplier.
2018-11-04 00:25:55 +01:00
reaperrr
e2227b9450 Make HeliReturnToBase use a landingProcedures list
Like ReturnToBase already does. Makes them easier to compare and later merge.
2018-11-04 00:25:55 +01:00
reaperrr
577fc1c409 Remove separate AircraftInfo caching from ReturnToBase
This extra info caching was overkill and most likely had zero effect on performance.
2018-11-04 00:25:55 +01:00
reaperrr
54d3656205 Move CalculateTurnRadius up in ReturnToBase
Just a slight readability improvement.
2018-11-04 00:25:55 +01:00
Mustafa Alperen Seki
a3d9822bb3 Update TD mod for Cloak>RequiresCondition to PauseOnCondition 2018-11-03 22:40:28 +00:00
Mustafa Alperen Seki
b1db79cce2 Update D2k mod for Cloak>RequiresCondition to PauseOnCondition 2018-11-03 22:40:28 +00:00
Mustafa Alperen Seki
faad2b8653 Update TS mod for Cloak>RequiresCondition to PauseOnCondition 2018-11-03 22:40:28 +00:00
Mustafa Alperen Seki
d9ecbb0351 Update RA mod for Cloak>RequiresCondition to PauseOnCondition 2018-11-03 22:40:28 +00:00
Mustafa Alperen Seki
dd39ab5b12 Add Update Rule to change Cloak>RequiresCondition to PauseOnCondition 2018-11-03 22:40:28 +00:00
Mustafa Alperen Seki
dd92ec4d02 Make Cloak PausableConditional
If disabled now it CloakDelay resets to InitialCloakDelay when
reenabled, if paused it continues with CloakDelay when resumed.
2018-11-03 22:40:28 +00:00
Ivaylo Draganov
a7279415dc Allow player to add a "priority unit" to production queue
* If production is ordered by `Ctrl + Left Click` the item is added to the top of the stack after the currently produced item
* Works with `Shift` for priority queueing of 5 items
* This modifier is not taken into account for `ParallelProductionQueue` as it doesn't make sense in that context
2018-11-03 17:54:50 +01:00
Paul Chote
81d53a4f1a Improve error message for children of removals. 2018-11-03 17:36:40 +01:00
Paul Chote
f05e3e871f Fix crash when Inherits has child nodes. 2018-11-03 17:36:40 +01:00
abcdefg30
f968b169ad Fix PrimaryBuilding changing the status of and from disabled queues 2018-11-03 17:30:05 +01:00
abcdefg30
272d9b99fd Fix ProductionFromMapEdge blocking the base Created call. 2018-11-03 17:30:05 +01:00
abcdefg30
cde18221e6 Add Lua API support for actors with multiple Production traits. 2018-11-03 17:30:05 +01:00
abcdefg30
c0ee199ad1 Support multiple Production traits in WithProductionOverlay. 2018-11-03 17:30:05 +01:00
abcdefg30
a03abe78af Ignore disabled production traits. 2018-11-03 17:30:05 +01:00
Paul Chote
4a4415c74b Remove unnecessary caching of ProductionAirdropInfo. 2018-11-03 17:30:05 +01:00
abcdefg30
394e33dcc2 Improve ClonesProducedUnits logic:
- Supports multiple Production trait instances
- Clones the correct faction variant, if defined
2018-11-03 17:30:05 +01:00
Paul Chote
ea3731a7cc Pass the original init dict to UnitProducedByOther. 2018-11-03 17:30:05 +01:00
abcdefg30
5e5183549c Overhaul ProductionBar:
- Is now a conditional trait
- Now respects multiple Production trait instances
- ProductionType is now required
2018-11-03 17:30:05 +01:00
abcdefg30
7f255a17da Revert "Add conyard.corrino"
This reverts commit a0d4a03530.
2018-11-03 17:30:05 +01:00
Smittytron
557c87eecb Remove unused waypoints from Soviet02a 2018-11-03 15:34:00 +01:00
Paul Chote
fc6ada38f4 Revoke WithMakeAnimation condition at the end of the tick.
This fixes traits becoming enabled for a tick
between the animation completing and the actor
being removed from the world.
2018-11-03 15:28:05 +01:00
Paul Chote
47a470e945 Remove legacy Building plumbing. 2018-11-03 15:09:14 +01:00
Paul Chote
e77aaa1a47 Remove (INotify)BuildComplete from Attack* 2018-11-03 15:09:14 +01:00
Paul Chote
e57087cb5b Remove building lock from Production. 2018-11-03 15:09:14 +01:00
Paul Chote
7bc53dd266 Remove building lock from ToggleConditionOnOrder. 2018-11-03 15:09:14 +01:00
Paul Chote
94088d37a6 Remove building lock from Sellable. 2018-11-03 15:09:14 +01:00
Paul Chote
492bcdd9a7 Remove building lock from Transforms. 2018-11-03 15:09:14 +01:00
Paul Chote
18b84750aa Reimplement demolition lock using conditions. 2018-11-03 15:09:14 +01:00
Paul Chote
0901a7d9de Simplify FlashTarget.
Now defined in terms of a flash count, interval, and delay.
Broken FlashDuration parameter removed from Demolition.
2018-11-03 15:09:14 +01:00
Paul Chote
1b9f23eca0 Replace AnnounceOnBuild with VoiceAnnouncement. 2018-11-03 15:09:14 +01:00
Paul Chote
78a2d9aa23 Remove INotifyBuildComplete from ConyardChronoReturn. 2018-11-03 15:09:14 +01:00
Paul Chote
ae3bfb73a1 Fix LastChildMatching ignoring the includeRemovals argument. 2018-11-03 15:09:14 +01:00
Paul Chote
3d6b170ec3 Support multiple capture traits in order targeter and script plumbing. 2018-11-03 14:47:22 +01:00
Paul Chote
346e670563 Simplify type filtering in GivesCashOnCapture/TransformOnCapture. 2018-11-03 14:47:22 +01:00
Paul Chote
7e67ce0139 Pass CaptureTypes through the INotifyCapture interface.
Also make it require explicit implementation.
2018-11-03 14:47:22 +01:00
Paul Chote
4ea3e8382d Work around a race condition between server join and auth validation. 2018-11-03 14:25:05 +01:00
reaperrr
e42094625d Merge AttackPlane and AttackHeli into AttackAircraft 2018-11-03 11:37:23 +00:00
Taryn Hill
5899636e10 Fix SubCell indexing in Map.CenterOfSubCell and MapGrid.OffsetOfSubCell 2018-11-02 22:42:51 +00:00
reaperrr
8f1d8a67cc Remove RearmBuildings from Aircraft and Minelayer
In favor of using Rearmable trait.
2018-11-02 22:28:08 +00:00
reaperrr
2485029452 Add Rearmable trait 2018-11-02 22:28:08 +00:00
reaperrr
139d5efba8 Remove RepairBuildings from Aircraft
Require them to use Repairable trait instead.
2018-11-02 22:28:08 +00:00
abcdefg30
ed7d12506d Add an update rule for CarryableHarvester 2018-11-02 22:24:56 +00:00
abcdefg30
db58b35856 Further untangle (and - hopefully - fix) the afterLandActivity mess 2018-11-02 22:24:56 +00:00
abcdefg30
7e20bdd7ea Introduce a new CarryableHarvester trait 2018-11-02 22:24:56 +00:00
Andre Mohren
89e3b62f61 Allow different color picker preview actors per faction. 2018-11-02 21:17:50 +00:00
Smittytron
8e00ddedc7 Move Moneycrate to campaign-rules.yaml 2018-11-01 19:06:51 +01:00
Paul Chote
95c5c683e3 Limit samplers to 8 in combined.frag.
The additional palette sampler wasn't accounted
for in the original PR.
2018-11-01 14:38:57 +01:00
reaperrr
a12bb54ded Add overlooked entries to bleed update path
Those were forgotten to be added in their respective PR.
Not adding them at the bottom because
  a) RenameCrateActionNotification was merged later than them
  b) this might allow some open PRs to rebase without merge conflicts
2018-11-01 09:33:09 +00:00
Paul Chote
c05527c561 Add ARM architecture support to dependency configuration. 2018-11-01 04:21:20 +01:00
Mustafa Alperen Seki
5a0c1459b2 Add MPSpawnUnits>BaseActorOffset 2018-11-01 02:16:59 +01:00
abcdefg30
d46e47d16d Fix target lines still being visible after an owner change 2018-11-01 02:09:36 +01:00
Andre Mohren
8b8a14e0b8 Proper usage of IHealthInfo. 2018-10-30 20:59:04 +00:00
Paul Chote
2ad8179672 Add PngSheetMetadata sprite metadata. 2018-10-28 20:55:40 +00:00
Paul Chote
6b7f1c6458 Use EmbeddedSpritePalette in D2k. 2018-10-28 20:55:40 +00:00
Paul Chote
eb61c45e14 Add EmbeddedSpritePalette sprite metadata. 2018-10-28 20:55:40 +00:00
Paul Chote
dee6d03626 Allow sprites to store custom metadata. 2018-10-28 20:55:40 +00:00
abcdefg30
0b89883012 Prevent ReturnToBase from causing a divide by zero crash 2018-10-28 18:54:32 +01:00
reaperrr
e05baf6ec7 Reduce RA helipad reload animation speed
Matching TD helipad.
2018-10-28 17:22:41 +00:00
Mustafa Alperen Seki
1a16ef3537 Add RenameCrateActionNotification to bleed update path 2018-10-28 11:21:49 +00:00
abcdefg30
9cbe7bc62d Fix infantry getting stuck in the last attack frame 2018-10-28 02:13:18 +01:00
Andre Mohren
cc036cfd62 Implement AnnounceOnBuildInfo.OnlyToOwner 2018-10-27 15:21:33 +02:00
Mustafa Alperen Seki
98006d3870 Make CrateAction>Sound to play for everyone 2018-10-26 22:37:00 +01:00
Mustafa Alperen Seki
2dcd377aaf Update main mods for CrateAction>Notification rename 2018-10-26 22:37:00 +01:00
Mustafa Alperen Seki
5f17f0b5b0 Add actual notification support for *CrateAction traits 2018-10-26 22:37:00 +01:00
Mustafa Alperen Seki
f066655bb7 Rename CrateAction>Notification to Sound 2018-10-26 22:37:00 +01:00
reaperrr
f18ce8cfda Make HitShape mandatory for damaging actors and refactor warheads.
* Adds support for linking Armor traits to HitShapes.
* Adds spread support to TargetDamageWarhead
* Removes ring-damage support from HealthPercentageDamage
* Removes IsValidAgainst check from DoImpact(Actor victim...) overload
  and instead lets warheads perform the check beforehand
  (to avoid HitShape look-ups on invalid targets).
* Reduces duplication and improves readability of Warhead implementations
2018-10-26 22:03:34 +02:00
reaperrr
e2050dfdc9 Fix FindActorsOnCircle summary
The summary was not entirely correct:
Since FAOC simply adds the largest existing OuterRadius to the specified circle range, it's still possible (very likely, in fact) for this helper to return actors whose HitShape is entirely outside the specified range (*without* the added largest OuterRadius).
2018-10-26 22:03:34 +02:00
Smittytron
b815e80e99 Reorganize RA missions list 2018-10-24 15:32:50 +01:00
Mustafa Alperen Seki
f3cbc5f72b Make CrateAction conditional. 2018-10-24 15:13:04 +01:00
Ectras
93977782a7 Updated Description for TerrainSpeeds
Added check for speed > 0
2018-10-18 18:45:51 +02:00
reaperrr
3e73357619 Remove IsIdle check from DrawLineToTarget.OnBecomingIdle
OnBecomingIdle is triggered when IsIdle becomes true, so this check is bogus.
2018-10-15 22:53:57 +02:00
reaperrr
422ba16ed9 Run TickIdle from inside Actor.Tick instead of World.Tick
Avoids calling ActorsWithTrait<INotifyIdle> every tick and allows caching all INotifyIdle traits at creation.
2018-10-15 22:53:57 +02:00
abcdefg30
cf4dc42c8f Fix lint warnings in RA missions 2018-10-15 19:16:27 +02:00
abcdefg30
a6716e2c2d Fix TS units not using the being-captured condition 2018-10-15 19:16:27 +02:00
abcdefg30
ed5bb1b1a1 Fix RA vehicles not using the being-captured condition 2018-10-15 19:16:27 +02:00
Paul Chote
a06cfb4004 Move TerrainRenderer to a mod-defined trait. 2018-10-13 18:16:56 +02:00
Inq8
fec9fe1ad4 Aircraft Takeoff & Landing Sounds (Fixed-Wing)
Added Takeoff & Landing sounds to planes.

Changed Aircraft Trait, TakeoffSounds & LandingSounds are now arrays & accept a list of sound files & it will randomly select one to play.

Changed/fixed take off & landing sounds to originate from the aircraft location, rather than play a global sound.
2018-10-12 14:29:53 +02:00
Smittytron
9cf8cba750 Touchup Allies08a errors 2018-10-10 01:01:06 +02:00
Mustafa Alperen Seki
9972d69c5d Change capture Production lock back to exit lock 2018-10-08 22:00:39 +01:00
Mustafa Alperen Seki
faa35946b8 Make Exit Conditional 2018-10-08 22:00:39 +01:00
Mustafa Alperen Seki
47c4be9191 Update mods for LowPowerSlowdown to LowPowerModifier 2018-10-08 21:38:30 +01:00
Mustafa Alperen Seki
9bcb222a2d Add Update rule for LPSlowdown to LPModifier 2018-10-08 21:38:30 +01:00
Mustafa Alperen Seki
5b00c12ca3 Change default value of LowPowerModifier to 100 2018-10-08 21:38:30 +01:00
Mustafa Alperen Seki
53304a0353 Change LowPowerSlowdown to LowPowerModifier 2018-10-08 21:38:30 +01:00
Smittytron
831ec0aeda Add Allies08a 2018-10-07 20:02:46 +02:00
Paul Chote
e038b86742 Hook up make animation conditions for the default mods. 2018-10-07 19:29:34 +02:00
Paul Chote
14607f55c5 Replace INotifyBuildComplete in render traits with conditions. 2018-10-07 19:29:34 +02:00
abcdefg30
26b0a06a17 Remove a wrong empty line from ra/rules/player.yaml 2018-10-07 18:28:37 +01:00
Andre Mohren
450dc70375 Refactored cursors.yaml to use palettes from rules. 2018-10-07 19:28:11 +02:00
Noam
c71f97e2c6 Update editor sidebar when a player is removed. 2018-10-07 19:01:55 +02:00
abcdefg30
52900f8112 Correct the amount of money found in crates in allies03 2018-10-07 17:59:34 +01:00
Paul Chote
1abfaa94af Remove unwanted overrides from allies-03*. 2018-10-07 18:46:21 +02:00
Paul Chote
769f9429f9 Stop vehicle movement when a hijacker is entering. 2018-10-07 18:46:21 +02:00
Paul Chote
de8fa56461 Remove obsolete building lock check from BaseProvider. 2018-10-07 18:46:21 +02:00
Paul Chote
22bd7fd90b Remove obsolete code. 2018-10-07 18:46:21 +02:00
Paul Chote
b1b35c1e1b Rework RA Engineer behaviour.
Capturing now behaves as in C&C3:KW - wait for 8 seconds
outside the structure before running inside and being disposed.

A "Reusable Engineer" lobby option is provided to restore
the previous non-disposing behaviour.
2018-10-07 18:46:21 +02:00
Paul Chote
ccad3bd185 Add MergeCaptureTraits update rule. 2018-10-07 18:46:21 +02:00
Paul Chote
a4405009c8 Add PreventsAutoTarget. 2018-10-07 18:46:21 +02:00
Paul Chote
132268bc49 Remove default building capture type. 2018-10-07 18:46:21 +02:00
Paul Chote
e50b0b193d Disable sabotaging by default. 2018-10-07 18:46:21 +02:00
Paul Chote
db1f794beb Fix captor being disposed if the capture fails. 2018-10-07 18:46:21 +02:00
Paul Chote
d97a2a5fa0 Remove legacy building lock calls.
This has been superseded by conditions.
2018-10-07 18:46:21 +02:00
Paul Chote
50423b13fb Add ConsumedByCapture flag to emulate legacy external behaviour. 2018-10-07 18:46:21 +02:00
Paul Chote
4d2f1f8942 Add capture progress bars and blinking. 2018-10-07 18:46:21 +02:00
Paul Chote
bab34252dd Add support for capture delays and conditions.
CaptureDelay is defined per-trait, and the shortest
delay will be used if multiple traits are enabled.

CapturingCondition and BeingCapturedCondition are
global, and are granted when any capture is in progress.

The capture period is defined from when the unit reaches
the cell next to the target, and either starts to wait
or enter the target through to when the capture succeeds
or fails.
2018-10-07 18:46:21 +02:00
Paul Chote
a53ef6e503 Add CaptureManager trait to fix multiple-trait interactions.
This fixes the various edge cases that occur when multiple
Captures or Capturable traits are defined on an actor and
are toggled using conditions.

The Sabotage threshold field moves from Capturable to
Captures in order to simplify the plumbing. The previous
behaviour ingame can be restored by creating a new
capturable type for each threshold level, each with their
own Captures trait.
2018-10-07 18:46:21 +02:00
Paul Chote
588a5d784f Add IMove.EstimatedMoveDuration. 2018-10-07 18:46:21 +02:00
Paul Chote
3b16938ae5 Remove legacy building.Locked and building.BuildComplete from Gate. 2018-10-07 18:23:03 +02:00
BGluth
b88b84c05a Units that have turrets while deployed now move their turrets back to their initial positions before undeploying
- Tested in TS with all deployable units and did a quick check for obvious issues in TD and RA.
2018-10-07 12:19:09 +01:00
abcdefg30
00dc161628 Add a proper exception when creating an actor with an invalid owner in Lua 2018-10-07 11:09:06 +00:00
Brenton Horne
38e8bed9c9 [INSTALL.md] Pkg lists->command; add extra distros 2018-10-06 23:48:36 +01:00
Paul Chote
eb0e2eeb9d Fix misc indentation errors. 2018-10-06 23:32:38 +02:00
Mustafa Alperen Seki
416f529cb0 Make GPS dots use a bit darker remap colors. 2018-10-06 17:25:43 +01:00
SoScared
143951a409 polish sniper shp 2018-10-06 17:20:22 +01:00
Paul Chote
cc9da63323 Fix sampler index check
The index values are round numbers. Checking agaist
the half-values improves robustness against small
floating point delta errors that occur on some GPUs.
2018-10-06 15:10:43 +01:00
abcdefg30
01d340db09 Properly end capturing during an owner change 2018-10-06 14:59:33 +01:00
Mustafa Alperen Seki
f60b2275fc Make WithBuildingPlacedAnimation not play during vortex 2018-10-06 13:31:47 +01:00
Mustafa Alperen Seki
536f5f05a8 Make WithBuildingPlacedAnimation conditional 2018-10-06 13:31:47 +01:00
reaperrr
dd3c600258 Fix WithLandingCraftAnimation compatibility with elevated terrain 2018-10-06 13:11:10 +01:00
Smittytron
a7de079a53 Remove redundant demolishable overrides from evacuation 2018-10-02 10:44:06 +02:00
teinarss
cfaf5a6467 Updated CPos struct to use a bit field for all properties. 2018-10-02 00:54:45 +01:00
abcdefg30
9f82ef999f Set AutoGenerateBindingRedirects to true in OpenRA.Game.csproj 2018-10-01 17:52:52 +01:00
teinarss
e353c8c176 Changed SubCell to byte 2018-09-30 19:48:27 +01:00
Andre Mohren
52a7d39e51 Implemented Parallel ProductionQueue style. 2018-09-30 16:58:49 +02:00
Andre Mohren
3bfcecd539 Refactored ProductionQueue to support different production styles. 2018-09-30 16:58:49 +02:00
Andre Mohren
6cd1919cca Calling PreparingAttack before calculating Muzzle. 2018-09-30 15:34:08 +02:00
Mustafa Alperen Seki
abdb1f7547 Add TargetTypes to AttackSuicides 2018-09-30 14:34:14 +02:00
reaperrr
adc03c41b1 Cache DomainIndex in PathFinder
Should save a trait look-up for each path search. Also ditch bogus null checks (this trait is a must-have anyway, so we *want* to crash if it's missing).
2018-09-30 14:34:05 +02:00
SoScared
893e20ee76 Fix yaml error with notifications.yaml 2018-09-30 06:52:41 +00:00
Andre Mohren
693b5a54af PNG spritesheet support, along with PaletteFromPng.
Cursor palette loader can now be specified via yaml.
2018-09-29 21:12:40 +02:00
Andre Mohren
48248266a8 ClickSound and ClickDisabledSound and ChatLine are optional ui sounds. 2018-09-29 20:05:53 +02:00
Andre Mohren
28623ce54c Allow usage of different palette for WithSpriteTurret 2018-09-29 19:47:47 +02:00
Andre Mohren
640078a2b1 Refactored Health usage to IHealth. 2018-09-29 18:12:40 +02:00
reaperrr
83cd7cf485 Merge two ifs in RevealOnDeath 2018-09-29 12:54:34 +01:00
reaperrr
ade85f8977 Skip DamageWarhead armor lookups if no Versus defined
- directly return 100 when no Versus values are defined (meaning the warhead would have 100% efficiency vs. all armor types anyway)
2018-09-29 12:54:34 +01:00
reaperrr
1f7edf9f0b Cache *Notify traits in Health where applicable
During heated battles, those TraitsImplementing look-ups in Health might cause bursty CPU load on warhead impacts. Caching the notify traits of the actor + owner can reduce the trait look-ups per impact by more than half.
2018-09-29 12:54:34 +01:00
reaperrr
13769d48a1 Minor Health readability style fix 2018-09-29 12:54:34 +01:00
reaperrr
43693d84d1 Migrate DamageState thresholds to integer
While avoiding divisions.

While there haven't been any desyncs to speak of recently (not in this part of the code, in any case), this still looks like an oversight from when we migrated away from using floats.
This also makes it easier to expose the thresholds to modders later.
2018-09-29 12:54:34 +01:00
reaperrr
0b0c3b7170 Changed an 'if' to 'else' in Health.Tick
Since the two 'if's were mutually exclusive, the 2nd 'if' was turned into an 'else' to potentially skip that check if the 1st succeeds.
2018-09-29 12:54:34 +01:00
Mustafa Alperen Seki
b53c13dca4 Add GrantConditionOnProduction 2018-09-29 12:10:11 +01:00
Smittytron
2bb2cd51cc Change menu cancel buttons to back 2018-09-28 23:33:17 +01:00
abcdefg30
4298584af2 Prevent units from gaining more experience than MaxLevel requires 2018-09-28 22:48:50 +01:00
Andre Mohren
a86f41cd5c Made Valued optional for traits who do not require it. 2018-09-28 22:06:56 +01:00
reaperrr
ec15acbc80 Enable LaserZap launch-effect syncing with current source barrel/muzzle facing 2018-09-28 21:32:34 +02:00
reaperrr
28c89920ac Add dynamic muzzle LaunchEffect facing plumbing 2018-09-28 21:32:34 +02:00
Mike
619457828f Soviet Soldier Volkov & Chitzkoi fully ported
Crash fixed.
2018-09-28 21:12:15 +02:00
reaperrr
8144fca5be Merge repair and rearm anim traits into WithResupplyAnimation
This is the safest approach to avoid conflicts/visual glitches when the host is responsible for both resupply types.
The new trait will simply play a looping animation as long as the actor is resupplying in any form.
2018-09-27 16:38:08 +02:00
Smittytron
9fb8f6c6f8 Add Allies07 2018-09-27 16:04:17 +02:00
reaperrr
288dfdbf03 Update UpdatePaths and move bleed rules to subfolder 2018-09-26 23:43:30 +01:00
Paul Chote
09d8aafddf Add a lint test for audio notifications.
Only traits are linted - the UI still hardcodes
too many audio references for this to be worthwhile.
2018-09-26 13:57:05 +02:00
Smittytron
096de8f5aa Remove out of bound actors from RA missions 2018-09-25 18:38:08 +02:00
Smittytron
f668e18f37 Remove out of bounds actors from TD missions 2018-09-25 18:38:08 +02:00
Andre Mohren
f342ecf18a Added UpdateRule. 2018-09-24 22:43:14 +02:00
Andre Mohren
a68ea0fe2d RepairsUnits notification now optional. 2018-09-24 22:43:14 +02:00
Andre Mohren
091f660dc7 Extracted Repairing notification to RepairableBuilding. 2018-09-24 22:43:14 +02:00
Andre Mohren
a0ad79e555 Extracted RadarUp and RadarDown notifications to RadarWidget. 2018-09-24 22:43:14 +02:00
Andre Mohren
d7f81d4a20 Extracted Win and Lose and Leave notifications MissionObjectives. 2018-09-24 22:43:14 +02:00
Andre Mohren
fac758f38e ProductionQueue notifications now optional. 2018-09-24 22:43:14 +02:00
Andre Mohren
c2b1a5f4e0 Extracted BuildingCannotPlaceAudio to PlaceBuilding. 2018-09-24 22:43:14 +02:00
Andre Mohren
8834cee13c PlaceBuilding notification now optional. 2018-09-24 22:43:14 +02:00
Andre Mohren
7057e32902 PowerManager notification now optional. 2018-09-24 22:43:14 +02:00
Andre Mohren
90c2249317 PrimaryBuilding notification now optional. 2018-09-24 22:43:14 +02:00
Andre Mohren
cf84e6f8d5 GainsExperience notification now optional. 2018-09-24 22:43:14 +02:00
Andre Mohren
e353ff326e Extracted CashTickUp and CashTickDown to PlayerResources. 2018-09-24 22:43:14 +02:00
reaperrr
bb7c19ad02 Fix spawning 1 crate too much if maximum == minimum
If Maximum == Minimum but 'crates' < Maximum, the formula would simply return min + 1 regardless of max being identical to min.
Only adding 1 more crate if Maximum is higher than Minimum fixes that.
2018-09-24 22:06:21 +02:00
reaperrr
1098804f9b Make WithSpriteBody always use Animation.PlayRepeating
... for looped sequences.

PlayCustomAnimationRepeating looping back into itself via Action instead of simply using Animation.PlayRepeating is weird, and in fact causes a slight 'desync' in animation speed with Animation.PlayRepeating in at least one downstream mod.
2018-09-24 22:06:10 +02:00
reaperrr
9bcb754836 Add OnActorDispose plumbing to Activity
This allows activities to perform necessary cleanups on actor
death/disposal, for example by running OnLastRun directly,
which would otherwise be skipped when the actor dies or is disposed
through other means.
2018-09-24 22:01:22 +02:00
Andre Mohren
e8eb4d9563 Credit removal due to request. 2018-09-24 13:11:15 +02:00
Paul Chote
7d59602c0b Revert "Update macOS launcher template to osx-launcher-20180723."
This reverts commit 904c3afc4d.
2018-09-22 18:57:21 +02:00
abcdefg30
978d447d42 Disable the restart button on dedicated servers 2018-09-22 15:44:56 +01:00
abcdefg30
92e8fbf4d0 Make the menu widget readonly 2018-09-22 15:44:56 +01:00
Ectras
d9946f63e4 Renamed EditorTilesetFilter to MapEditorData and added an update rule 2018-09-22 15:12:15 +02:00
Glen
2e3f2e079a Github Username Change 2018-09-20 11:23:06 +02:00
Matthias Mailänder
cb05d8a98d Fix CustomTerrainDebugOverlay not rendered in isometric mods 2018-09-19 20:04:41 +02:00
Noam
4e7a35b50f add NoAvailableMaps exception.
modify ChooseInitialMap to throw NoAvailalbeMaps exception if no maps were loaded.
implement Utilities.TryWithPrompt - safe execution of a provided action with ability to prompt user on error.
2018-09-19 12:52:51 +02:00
Matthias Mailänder
399e451ada Add a DamagesConcreteWarhead to remove buildable concrete. 2018-09-15 15:36:12 +02:00
Paul Chote
7438af8266 Improve status line display for unknown-size downloads. 2018-09-14 18:55:58 +02:00
Emmalyn Renato
3f4d5fa68c Fix display of progress text in Advanced Install when total file size is unknown. 2018-09-14 17:30:53 +01:00
Paul Chote
91adc61abd Revert RA Grenadier explosion DamageSource. 2018-09-13 17:11:15 +02:00
SoScared
c242333922 Fix d2k bots not excluding harvesters from squads 2018-09-13 17:01:23 +02:00
SoScared
953d76a20a Enable nuke for d2k omnius ai 2018-09-13 17:01:23 +02:00
SoScared
3f9fde8855 Tweak AI excess power and unit production 2018-09-13 17:01:23 +02:00
Dennis Snell
95558a36ab Fix: Display progress message properly when download size missing (#1)
When I downloaded the assets for Red Alert through the Quick Install I noticed the progress bar proceed and display a recognizable message: `Downloading from … 1.47/12 MB (12%)`. This was fine.

When I downloaded the assets for one of the other games, maybe Dune 2000, there was obviously no total download size available. I was an unexpected message: `Downloading from … 1.47/NaN (NaN%)`

The code handling network progress events seems to be aware of the possibility that no full download size exists but it doesn't update the message. In this path I'm proposing that we display a separate messaging indicating that we don't know how much more we have to download for these cases.

Of the alternative ways to implement this I chose to move the reassignment of `getStatusText` into the conditional structures to preserve the existing choice. The message was qualitatively different and so I felt it worthwhile to create entirely different closures vs. doing something like this…

```cs
getStatusText = () => ( Double.isNaN( dataTotal ) ? "Downloading {1} of unknown amount" : "Downloading {1}/{2}" ).F( … );
```
2018-09-13 16:55:51 +02:00
Andre Mohren
ef7c49c116 Allow mods to determine associated SuperPower from SelectGenericPowerTarget 2018-09-12 15:11:18 +02:00
Paul Chote
16ff9fbc8e Fix menu/exit fade effect for paused replays. 2018-09-11 23:29:23 +02:00
reaperrr
bbf6e38faa Always leave trails when no TerrainTypes are defined
Requiring terrain types is bogus, as it unnecessarily complicates using this trait for airborne units.
2018-09-10 19:45:02 +02:00
Paul Chote
8533aa8d26 Disable sync reports when we know we won't need them.
Generating the sync report takes ~twice as long as
a normal tick, and occurs once every 3 ticks.

These reports record of all of the synced state
(separate to the sync hash, which is still calculated)
in order to generate the syncreport.log of the game
desyncs. This perf overhead is completely unnecessary
when we know that we won't have other syncreports to
compare against (singleplayer, replays).

Disabling report generation in these cases gives
us an easy 40% average tick-time win.
2018-09-10 19:44:06 +02:00
Paul Chote
0a507f3d33 Allow deploy orders to be queued from the command bar. 2018-09-10 19:42:24 +02:00
Paul Chote
3abc85b588 Add a Desc for Buildable.BuildPaletteOrder.
Also removes the long-outdated UI-fluff comment.
2018-09-10 11:27:50 +02:00
SoScared
024722a96c Enable airfield for AI as Ukraine 2018-09-10 03:45:59 +01:00
abcdefg30
5d1c37a4c5 Remove the CodeAnalysisRuleSet property from all csproj files 2018-08-25 22:02:59 +02:00
Paul Chote
48f2519811 Make SetupLatencyWidget consistent with SetupProfileWidget. 2018-08-25 21:56:10 +02:00
Paul Chote
0c098e74f1 Don't crash when mousing over a bot as a non-admin. 2018-08-25 21:56:10 +02:00
Paul Chote
8475bd6294 Ignore malformed orders instead of crashing. 2018-08-25 18:23:35 +02:00
rtri
cdfa52d918 fix threadedRenderer context creation logic 2018-08-23 01:50:18 +02:00
Chris Forbes
67d9ad6a93 Convert cloak types to use BitSet
Fixes #15412
2018-08-20 01:11:43 +02:00
Chris Forbes
1f71377d82 Convert cloneabletypes to bitsets
Fixes #15411
2018-08-20 01:11:43 +02:00
Paul Chote
8634c001f9 Add requires-auth indicator to the server lists. 2018-08-18 16:57:28 +02:00
Paul Chote
e374c8e6c3 Sync auth information with the master server. 2018-08-18 16:57:28 +02:00
Paul Chote
77bb39304b Give server operators more control over client validation. 2018-08-18 16:57:28 +02:00
Paul Chote
9ec22e48a6 Revert "Re-active Edge-Scrolling for inverted Mouse-Scrolling"
This reverts commit c4867d4030.
2018-08-18 16:51:51 +02:00
Paul Chote
03adceb656 Rework master server ping rate-limit logic.
Pings are now delayed instead of dropped to avoid data loss.
2018-08-18 09:31:11 +01:00
Paul Chote
efccd610d3 Simplify server tick timeout handling. 2018-08-18 09:31:11 +01:00
Paul Chote
d37119655b Add Engine.SupportDir argument. 2018-08-17 21:02:36 +02:00
Andre Mohren
8c5caaf154 Fixed unnecessary crash if RallyPoint palette is not used. 2018-08-16 22:24:58 +02:00
Paul Chote
4a5525d1af Ensure that TLS 1.2 is enabled for web downloads. 2018-08-16 19:56:18 +02:00
Mustafa Alperen Seki
6df243f79b Fix GivesExperienceModifier not working 2018-08-16 19:44:08 +02:00
Paul Chote
e56cb9901b Add a hard requirement on the cert-sync utility.
This tool is required to sync the certificates
used for https queries. This also has a side-effect
of prompting the mono-complete package on Mint,
which pulls in other required but missing packages.
2018-08-15 21:21:56 +01:00
Paul Chote
20dbf76e81 Fix the Chronoshift-return cancellation bug. 2018-08-15 21:17:27 +01:00
Paul Chote
4375dc2fc1 Kill chronoshifted actors if the return-to-origin fails. 2018-08-15 21:17:27 +01:00
Paul Chote
6f864b055d Remove IPreventsTeleport interface.
MadTank is changed to use conditions instead.
This has a side-benefit of disabling the move
cursor while deployed.
2018-08-15 21:17:27 +01:00
Paul Chote
e6d552eee7 Make Chronoshiftable conditional. 2018-08-15 21:17:27 +01:00
Paul Chote
828106cf82 Fix a typo in ChronosphereProperties class name. 2018-08-15 21:17:27 +01:00
Mustafa Alperen Seki
1977e64e07 Fix Cargo>EjectOnDeath crash with multipile INotifyBlockingMove 2018-08-14 23:00:08 +02:00
reaperrr
c983dda077 Fix husks not updating targetable positions on teleport
This should have checked for IPositionableInfo to begin with.

Husk already implements IPositionable, so implementing *Info as well
makes sense, even if it only serves to exclude it from
ITargetablePositions caching for now.
2018-08-14 17:26:36 +01:00
BGluth
09b9ed3506 Rearming aircraft now reapplies rearming order if canceled on landing structure
- Implemented by making the ResupplyAircraft activity recreate a new resupply activity if cancelled and also having no other queued activities.
- Tested in TD, RA, TS.
2018-08-12 21:16:23 +02:00
Paul Chote
1bfe70e923 Revert "Add "Restart" button for multiplayer replays"
This reverts commit 3a377a572c.
2018-08-12 18:57:12 +02:00
reaperrr
ba231636f5 Minor RepairsUnits style fix 2018-08-12 14:36:59 +01:00
reaperrr
46cee82027 Move RepairsUnits out of Building folder 2018-08-12 14:36:59 +01:00
reaperrr
77d03ce1e1 Replace Airfield/Helipad references with generic Resupplier in RTB activities
More generalization to prepare for possible future activity merger.
2018-08-12 14:24:21 +02:00
reaperrr
fc79e04c49 Generalize Land activities Aircraft caching naming
To make a possible future merger (or inheritance or other code-sharing) of these activities easier.
2018-08-12 14:24:21 +02:00
reaperrr
3f9aab7e86 Generalize Fly* plane activities Aircraft caching naming
To make a possible future merger (or inheritance or other code-sharing) with other activities easier.
2018-08-12 14:24:21 +02:00
reaperrr
6810ac92ba Generalize HeliAttack activity Aircraft caching naming
To make a possible future merger (or inheritance or other code-sharing) with FlyAttack easier.
2018-08-12 14:24:21 +02:00
reaperrr
c3a0d129a3 Generalize FlyCircle activity Aircraft caching naming
To make a possible future merger (or inheritance or other code-sharing) of these activities easier.
2018-08-12 14:24:21 +02:00
reaperrr
ae92255ded Generalize Fly activity Aircraft caching naming
To make a possible future merger (or inheritance or other code-sharing) of these activities easier.
2018-08-12 14:24:21 +02:00
reaperrr
96032d1953 Generalize *ReturnToBase trait caching naming
Makes both copying changes as well as a potential future activity merger a little easier.
2018-08-12 14:24:21 +02:00
Smittytron
bd569c9ae2 Revert ranger change and dial back missile sub damage 2018-08-11 23:04:41 +02:00
Paul Chote
3711a695c5 Fix badge label padding. 2018-08-11 23:02:41 +02:00
abcdefg30
94c47fdac0 Remove TSLauncher.exe from the IDFiles of the origin ts install 2018-08-11 22:58:28 +02:00
abcdefg30
60a492803d Remove RA95Launcher.exe from the IDFiles of the origin ra install 2018-08-11 22:58:28 +02:00
abcdefg30
4473059c60 Remove CNC95Launcher.exe from the IDFiles of the origin cnc and ra installs 2018-08-11 22:58:28 +02:00
Paul Chote
1b1521812c Add EnabledByDefault check to WithInfantryBody. 2018-08-11 14:30:01 +02:00
Paul Chote
d110a21bfe Add missing EnabledByDefault checks to WithSpriteBodyInfo subclasses. 2018-08-11 14:30:01 +02:00
abcdefg30
0b53c1f139 Resolve conflicts between actor and API names (Radar) 2018-08-10 20:49:06 +02:00
Oliver Brakmann
1927b88a18 Fix issueing superfluous difficulty lobby command from mission browser 2018-08-09 20:07:06 +01:00
Smittytron
e57f1dcd8c Fix death sequences of Chan, Einstein, and Delphi 2018-08-05 12:57:11 +02:00
reaperrr
6c401f0f9a Fix AI idle harvester management
This was broken because our default mods now list `harv` under `ExcludeFromSquads`, which prevents them from being added to `activeUnits`.
2018-08-04 22:30:07 +02:00
reaperrr
35600d9291 Some HackyAI cleanups
- harvManager.Tick should run after FindNewUnits() in case new harvesters have appeared
- moved the FindNewUnits Mcv and ExcludeFromSquads checks to the foreach loop, for better readability and preparation of the idle harvester fix
2018-08-04 22:30:07 +02:00
Paul Chote
a51b916eaa Hide the Ready checkbox when a spectator transfers away Admin. 2018-08-04 22:12:43 +02:00
BGluth
5c42f55b3a Fixed aircraft in TS landing instantly to reload their ammo
- Updated calculating the landing altitude for the Land activity not taking into account the terrain height.
- Fixes 14312.
2018-08-04 21:09:59 +02:00
Andre Mohren
3f81df9c52 Fixed backwards animation playback. 2018-08-04 20:58:02 +02:00
Paul Chote
a0dcd9e106 Clear selection when a text field's contents is changed programatically. 2018-08-04 20:29:19 +02:00
Paul Chote
d6737ccfab Fix missing profile indicator for spectators. 2018-08-04 20:22:35 +02:00
Paul Chote
3661dbdfd0 Disable the threaded renderer on Windows.
A DisableWindowsRenderThread graphics setting is
added to allow players to optionally reenable it.
2018-08-04 20:10:52 +02:00
reaperrr
599e87c4aa Fix tree owners in TD (for real this time) 2018-08-04 19:06:32 +01:00
Paul Chote
567ab47765 Revert ShpTD empty space trimming.
This reverts the following commits:
 * 1faae73c08
 * a7d39fc76d
2018-08-04 19:56:24 +02:00
Unknown
c97f36793c Implemented horizontal allign support for SupportPowersWidget 2018-08-04 17:39:18 +02:00
reaperrr
e179a9529e Fix tree owner on TD maps
Needs to be Neutral instead of Creeps, to avoid confusing the AI.
2018-08-04 14:03:02 +01:00
reaperrr
606bf6d9bb Fix tree owner on several RA maps
Owner: Creeps can lead to AI trying to attack trees, so all trees must have Neutral as owner.
2018-08-04 14:03:02 +01:00
abcdefg30
e8068cf329 Remove all uses of Server.ExternalPort 2018-08-04 12:32:01 +02:00
Andre Mohren
8f15535da0 Allow to use non tileset specific build-valid. 2018-08-04 12:28:41 +02:00
Mustafa Alperen Seki
d062523700 Add GetActorsByTypes. 2018-08-04 12:20:16 +02:00
Smittytron
6e18caa096 Remove duplicate line from V19.Husk 2018-08-04 12:18:01 +02:00
Zimmermann Gyula
6027a123d4 Split off the upgrade rules of the previous release cycle. 2018-08-02 17:00:02 +02:00
abcdefg30
f9bc1113b5 Fix the die1 sequence of fremen 2018-07-31 21:00:59 +02:00
Smittytron
df76834a5f Correct typo in DefineGroundCorpseDefault update rule 2018-07-31 20:42:03 +02:00
Curtis Shmyr
de8c5e40c4 Remove creation of irc.log 2018-07-31 20:39:08 +02:00
Smittytron
055041c142 Fix several map tiling errors 2018-07-29 09:23:45 -07:00
Zimmermann Gyula
813e53f823 Fix deathsounds regression. 2018-07-29 09:13:53 -07:00
Smittytron
a44e36cb04 Add hijacker idle sequence 2018-07-29 01:39:18 +02:00
Paul Chote
6ec93bd8cf Add player badges. 2018-07-29 00:30:17 +02:00
Paul Chote
7ec19b82e3 Add in-game tooltips for registered / anonymous players. 2018-07-29 00:30:17 +02:00
Paul Chote
70706ca531 Add lobby tooltips for registered / anonymous players. 2018-07-29 00:30:17 +02:00
Paul Chote
b5a5eecc25 Add login/profile display to the main menu. 2018-07-29 00:30:17 +02:00
Paul Chote
c74159e549 Add player authentication backend. 2018-07-29 00:30:17 +02:00
Paul Chote
0965464148 Add crypto helpers for working with RSA keys. 2018-07-29 00:30:17 +02:00
Paul Chote
630936a211 Adjust lobby tooltip plumbing:
- Pass Client instead of Client ID
- Pass WorldRenderer and OrderManager to util helpers.
2018-07-29 00:30:17 +02:00
Paul Chote
97c03b00f2 Strip the client block down to latency only. 2018-07-29 00:30:17 +02:00
Paul Chote
f08bfae9a0 Count direct children of text fields and buttons for mouseover.
This improves polish when mousing over prefix glyphs.
2018-07-29 00:30:17 +02:00
Paul Chote
df20ae1aec Fix TextFieldWidget margin properties not being cloned. 2018-07-29 00:30:17 +02:00
Paul Chote
9a6fdfa180 Expose setting clipboard text to mod code. 2018-07-29 00:30:17 +02:00
Paul Chote
8347d0afd0 Move TD main menu perf text to the bottom-right corner. 2018-07-29 00:30:17 +02:00
Chris Forbes
51e000599a Convert crushclasses to bitset 2018-07-28 21:28:46 +01:00
Mustafa Alperen Seki
82f6c2b862 Make SpawnActorsOnSell conditional 2018-07-28 21:20:28 +01:00
Mustafa Alperen Seki
ea2794b417 Make EjectOnDeath conditional 2018-07-28 21:20:28 +01:00
reaperrr
0bff9e9119 Make some Attack* methods/classes public
Instead of protected, because some 3rd-party mods rely on these being
public.
2018-07-28 21:35:42 +02:00
reaperrr
b2a069f8ab Add FillTriangle support 2018-07-28 21:35:42 +02:00
Chris Forbes
d4ef841678 Convert masses of HashSet<string> to BitSet<DamageType> 2018-07-28 20:12:42 +01:00
abcdefg30
6d12e84bd9 Add a player action dropdown to d2k 2018-07-28 19:43:19 +01:00
Zimmermann Gyula
51a99cb43c Special-case the player actor on GCOnBotOwner. 2018-07-28 17:59:34 +02:00
abcdefg30
1513068114 Remove wrong idle sequences from medic and mechanic 2018-07-28 16:58:29 +01:00
matjaeck
d33ac0c838 Fix tooltip descriptions for spectators. 2018-07-28 17:49:42 +02:00
Andre Mohren
be2c41d51c Added PlaceBuildingInit. 2018-07-28 17:38:46 +02:00
Mustafa Alperen Seki
34d887ecc3 Update D2k mod for CanUndeploy removal 2018-07-28 16:32:37 +01:00
Mustafa Alperen Seki
5a780577b9 Add Desc() field to GrantConditionOnDeployInfo. 2018-07-28 16:32:37 +01:00
Zimmermann Gyula
a456c234ca Provide appropriate upgrade rule. 2018-07-28 16:32:37 +01:00
Zimmermann Gyula
f07460edd2 Convert GrantConditionOnDeploy to a pausableconditional trait.
Also remove CanUndeploy as pausing achieves the same effect.
2018-07-28 16:32:37 +01:00
Mustafa Alperen Seki
c01bcc61b8 Make D2k Factories don't play ProductionOverlay for Upgrades 2018-07-28 16:17:47 +01:00
Mustafa Alperen Seki
f05fc0cae8 Add WithProductionOverlay>Queues 2018-07-28 16:17:47 +01:00
Paul Chote
e64a966b4f Group update rule display by update path. 2018-07-28 15:12:55 +01:00
Paul Chote
f9230a72f2 Fix NRE in mods that don't immediately show the main menu. 2018-07-27 18:38:30 +02:00
Matthias Mailänder
65776bdeb5 Set Offset for train tracks. 2018-07-26 15:08:32 +01:00
Andre Mohren
a57cfc7d40 Fixed ProductionItem costs calculation. 2018-07-26 14:01:37 +00:00
fusion809
e1b1070bcf Adding wget support to fetch scripts 2018-07-26 14:19:31 +01:00
Andre Mohren
81e1b39bb9 Made PowerManager optional for traits who do not require it. 2018-07-26 14:02:42 +01:00
Chris Forbes
dcf93203ea Get rid of unit pathing delay completely 2018-07-26 13:19:31 +01:00
Zimmermann Gyula
e9c3927b0c Filter Explodes->DeathTypes when Threshold is above 0. 2018-07-26 13:10:50 +01:00
Mustafa Alperen Seki
6073de52ca Add DamageSource to Explodes 2018-07-26 13:04:59 +01:00
reaperrr
d07bd029db Change Parachutable.GroundCorpseSequence default to null
Missions and 3rd-party mods may paradrop vehicles which normally don't need a corpse sequence (because they already have Explodes), so the old infantry-centric internal default can cause more harm than good.
2018-07-26 13:01:09 +01:00
reaperrr
42d5799f4e Parachutable.cs readability improvements 2018-07-26 13:01:09 +01:00
reaperrr
a30727b155 Make disabling parachute corpse sequences easier 2018-07-26 13:01:09 +01:00
Mustafa Alperen Seki
6b1451f7ca Remove GivesBounty>LevelMod 2018-07-26 12:53:33 +01:00
Mustafa Alperen Seki
81deb2b00c Make Multipile GivesBounty traits to work properly 2018-07-26 12:53:33 +01:00
Smittytron
1ffe87b005 Use correct effects for TD anti-air explosions 2018-07-26 12:43:52 +01:00
Mustafa Alperen Seki
c14c7653bc Make Prerequisite Lint Check use ITechTreePrerequisiteInfo 2018-07-26 12:34:26 +01:00
Alfredo Brandau
e33f729682 Fix expectator kick dropdown crash. 2018-07-26 10:52:09 +01:00
Mustafa Alperen Seki
9c61217bc6 Add ability to send a radar ping with lua. 2018-07-26 00:03:45 +01:00
Andre Mohren
b86355cda6 Made MapBuildRadius optional for traits who do not require it. 2018-07-25 22:35:46 +01:00
Paul Chote
2270460c9a Update macOS launcher template to osx-launcher-20180723.
This adds support for the dark appearance on macOS 10.14.
2018-07-23 23:29:43 +02:00
Paul Chote
e8584033f8 Update AppImage dependencies to 20180723 tag.
This switches the build system from CentOS 6 to
Debian 7 to fix issues with the ingame cursors.
2018-07-23 17:23:58 +01:00
BGluth
e5bbe70186 Add myself to AUTHORS 2018-07-23 17:20:26 +01:00
BGluth
a43bdff603 Implemented #15325
- Leaving a game now returns you to the respective menu.
- I think that I covered all of the possibilities (mission, skirmish, multiplayer, map editor, replay).
2018-07-23 17:20:26 +01:00
Paul Chote
d6682faeee Keep a 1px border around trimmed ShpTD data. 2018-07-23 17:02:50 +01:00
Smittytron
b091be6304 Assign grey passenger pips to TD civilians 2018-07-22 15:24:40 +02:00
Smittytron
fe455f17e1 Utilize grey and blue passenger pip colors in RA 2018-07-22 15:24:40 +02:00
reaperrr
c434a38b1f Move 20171014-20180218 update rules to subfolder
Also synced order of appearance with order they're applied in when running the full update path.
2018-07-22 13:54:21 +01:00
reaperrr
4c55e820d6 Add beta warning to legacy update path 2018-07-22 13:54:21 +01:00
abcdefg30
27765f6448 Add all remaining update rules 2018-07-22 13:54:21 +01:00
abcdefg30
24f9ff0ac2 Add a 'ReplaceRequiresPower' update rule 2018-07-22 13:54:21 +01:00
abcdefg30
6c8a943dc9 Add four more update rules 2018-07-22 13:54:21 +01:00
reaperrr
94ad93a301 Add ScaleSupportPowerSecondsToTicks 2018-07-22 13:54:21 +01:00
abcdefg30
ab2fe92dfb Add ScaleDefaultHealth and subclass update rules 2018-07-22 13:54:21 +01:00
abcdefg30
af1a2429b1 Add five more update rules 2018-07-22 13:54:21 +01:00
Paul Chote
01684bc329 Add two more update rules 2018-07-22 13:54:21 +01:00
Paul Chote
fd49e487ec Fix MCV deploy erasing Iron Curtain history. 2018-07-22 13:45:37 +01:00
Paul Chote
d5399aaf6b Fix MCV deploy erasing Chronoshift history.
If the MCV is deployed as a Construction Yard when
the timer expires the structure will take a 50%
damage hit from a chrono-vortex.

If the MCV is in the process of (un)deploying it
will be returned in MCV form.
2018-07-22 13:45:37 +01:00
Paul Chote
8f215a0219 Persist Chronoshift properties across transform. 2018-07-22 13:45:37 +01:00
Paul Chote
b93d782688 Add ChronoshiftDurationInit.
Fixes time remaining bar not displaying if selection
bars are enabled on killed actors.
2018-07-22 13:45:37 +01:00
Paul Chote
01c3c14a4c Add ITransformActorInitModifier.
Remove hardcoded Cargo reference from Transform.
2018-07-22 13:45:37 +01:00
reaperrr
496155ff0e Remove facing check from WithVoxelWalkerBody
`Mobile` now supports considering turning as `IsMoving`, so this check is no longer needed.
2018-07-19 22:09:43 +02:00
reaperrr
2d47f61409 Make TS mechs display walk anim while turning
This matches the original, and turning without moving their legs looked silly either way.
2018-07-19 22:09:43 +02:00
reaperrr
6984c0ec10 Add AlwaysConsiderTurnAsMove plumbing to Mobile
Can be used to make walker units like the TS mechs display move animations while turning on the spot.
2018-07-19 22:09:43 +02:00
Smittytron
755cc40459 Fix TD crop fields 2018-07-19 19:10:57 +00:00
Mustafa Alperen Seki
a65a5d17e4 Add CashTricklerMultiplier 2018-07-19 18:49:35 +00:00
Smittytron
530b7af9c5 Use correct CustomSellValue for RA Ore Refinery 2018-07-19 18:41:26 +00:00
Paul Chote
128c65ff71 Tidy font definitions
Order by size/weight and fix key-value spacing.
2018-07-12 09:28:38 +00:00
teinarss
25a8de8a47 Fixing pathfinding calc when the distance was to small for the bidirectional logic to work. 2018-07-12 10:06:55 +02:00
teinarss
1c0aa24640 Added a player action dropdown.
Adds options for:
 - handling kick
 - transferring admin
 - move to spectator
2018-07-05 23:22:09 +01:00
teinarss
0c1b11ed4f Added Dedicated to GlobalSettings 2018-07-05 23:22:09 +01:00
teinarss
a156a31cf5 Added text aligment to button
Cloning LeftMargin and RightMargin

Refactored the calculations for Text position in ButtonWidget
2018-07-05 23:22:09 +01:00
teinarss
23155c039d Extract LobbyCommand command logic to their own methods. 2018-07-05 23:22:09 +01:00
abcdefg30
2471b07e55 Fix the mode documentation in gtk-dialog.py 2018-07-05 22:28:10 +01:00
Oliver Brakmann
3e29ef0bd6 Avoid sending HTTP requests to the FetchNews URL when FetchNews is disabled
Also disables the 'Send SysInfo' settings checkbox when 'Fetch News' is disabled as well.
2018-07-05 11:22:44 +02:00
Smittytron
d21b959bf0 Fix TD RippedApartDeath 2018-07-04 23:01:47 +02:00
Smittytron
01d10f392d Fix RA death animations 2018-07-04 23:01:47 +02:00
Mustafa Alperen Seki
052bfcd023 Update some D2K reveal ranges to match original. 2018-07-04 20:11:55 +02:00
Paul Chote
01a613a057 Show a python GTK3 dialog if zenity is missing. 2018-07-04 18:58:24 +01:00
Paul Chote
29442cec13 Fix an error flagged by shellcheck. 2018-07-04 18:46:09 +01:00
Paul Chote
6adff732eb Include a wiki link in the error dialog. 2018-07-04 18:46:09 +01:00
Paul Chote
fbc5fde646 Prompt mono installation on compatible systems. 2018-07-04 18:46:09 +01:00
Mustafa Alperen Seki
51c207dd28 Add ability to use IonCannonPower via lua. 2018-07-04 16:41:27 +02:00
Mustafa Alperen Seki
2387e49ee7 Add ability to use NukePower via lua. 2018-07-04 16:41:27 +02:00
reaperrr
f31e5d17b3 Fix RA refinery selection bounds offset
Selection bounds were too low on the vertical axis.
2018-07-01 19:57:37 +01:00
reaperrr
d85f96bc98 Give all RA structures fixed select/deco bounds 2018-07-01 19:57:37 +01:00
reaperrr
f0166207a7 Fix fake RA service depot bounds and footprint 2018-07-01 19:57:37 +01:00
reaperrr
be6ca960c8 Tweak TD refinery selection bounds
The old vertical offset made the bounds include the entire concrete 'bib', but not the processor tower in the back.
2018-07-01 19:57:37 +01:00
reaperrr
291af67b8c Ensure select/deco bounds of TD buildings are consistent
Regardless of current frame's bounds.
2018-07-01 19:57:37 +01:00
reaperrr
1ae5a989bf Ensure selectable bounds of TD landing craft are consistent
Regardless of current frame's bounds.
2018-07-01 19:57:37 +01:00
reaperrr
9b41416020 Ensure interactable/deco bounds of TD walls are consistent
Regardless of current frame's bounds.
2018-07-01 19:57:37 +01:00
reaperrr
4c239d4ebc Set Mobile.IsMoving to "true" if queueing a turn that takes only a single tick
At the end of L-turns, actors often end up with an internal facing not 100% matching the direction of the next cell on their path.
As a result, if they haven't reached their destination yet, Move queues a quick Turn as ChildActivity, which previously was not considered as IsMoving.
However, we don't want those mini-turns to interrupt move animations, so we now consider them a move as well. Additionally, to avoid any issues, we make these mini-turns non-interruptible, just like the MovePart activities already are.
2018-07-01 15:33:30 +01:00
reaperrr
e167d1f848 Add plumbing to make Turn uninterruptible 2018-07-01 15:33:30 +01:00
reaperrr
c93333a816 Cache IFacing in Turn activity
Instead of looking it up every tick.
2018-07-01 15:33:30 +01:00
reaperrr
96377a99c4 Fix losing a tick when next Move.ChildActivity is Turn
While the first tick of the MoveFirstHalf child would run at the parent Move tick (see 2nd-to-last line in Move.Tick), this was not the case for Turn.
As a result, this Move tick would get wasted if a Turn was necessary, which at least contibuted to that visible jerk at the end of each L-turn (actors usually don't have the exact facing needed for the next move at the end of an L-turn).
2018-07-01 15:33:30 +01:00
reaperrr
1c78073808 Lint check for distinct sprite body names 2018-07-01 13:16:07 +02:00
reaperrr
d060f885e8 Fix various Mods.Cnc animation traits not supporting actors having multiple sprite bodies 2018-07-01 13:16:07 +02:00
reaperrr
9d24c40f92 Fix various Mods.Common animation traits not supporting actors having multiple sprite bodies 2018-07-01 13:16:07 +02:00
reaperrr
0d0d2e0ae3 Play WithAcceptDeliveredCashAnimation only on the assigned WithSpriteBody 2018-07-01 13:16:07 +02:00
reaperrr
f85f2cd104 Add LaunchEffect support to LaserZap
Can act as replacement for WithMuzzleOverlay.
2018-07-01 12:19:32 +02:00
reaperrr
384aaf14b5 Added LaunchEffect effect 2018-07-01 12:19:32 +02:00
reaperrr
145b8c87c5 Make LaserZap source point follow source actor muzzle
For moving actors, it looks better when the source point of the beam follows the source actor.
2018-07-01 12:19:32 +02:00
reaperrr
0fafaf1b09 Add DamageDuration and DamageInterval to LaserZap 2018-07-01 12:19:32 +02:00
Paul Chote
f4d3ccc301 Fix newlines in misc other files. 2018-07-01 11:08:32 +02:00
Paul Chote
670e153372 Remove byte order marks from csproj files. 2018-07-01 11:08:32 +02:00
Paul Chote
1ac13de4b2 Remove byte order marks from C# files. 2018-07-01 11:08:32 +02:00
Paul Chote
8c0f4fde81 Fix newlines in C# files. 2018-07-01 11:08:32 +02:00
Paul Chote
6b6167d37c Use the default sprite sequence for automatic mouse bounds. 2018-07-01 01:20:55 +02:00
Paul Chote
707514572b Fix crlfs in CheckUnknown*Fields lint tests. 2018-07-01 00:25:56 +02:00
Paul Chote
ca5af0755d Fix line endings in project files. 2018-06-30 23:17:20 +01:00
Smittytron
8fa3ab74c7 Remove redundant overrides from RA 2018-06-30 23:48:31 +02:00
Smittytron
6c6ed1cfbf Remove redundant TD overrides 2018-06-30 23:48:31 +02:00
Paul Chote
39a3bc4b78 Squash warnings in Allies 03a and b. 2018-06-30 17:12:19 +01:00
Paul Chote
51a2ca8253 Add CheckUnknownWeaponFields lint check. 2018-06-30 17:12:19 +01:00
Paul Chote
0a5016c803 Add CheckUnknownTraitFields lint check. 2018-06-30 17:12:19 +01:00
Paul Chote
d46278ab0e Add ModData parameter to ILintMapPass. 2018-06-30 17:12:19 +01:00
Zimmermann Gyula
f50a891d18 Explicitly specify line-endings of source files in gitattributes. 2018-06-30 16:54:25 +01:00
Paul Chote
8ec3df7550 Fix recently introduced bad line endings. 2018-06-30 16:54:25 +01:00
Zimmermann Gyula
b892336285 Update default mods. 2018-06-30 16:31:39 +01:00
Zimmermann Gyula
86bfd4700f Implement DeathTypes support to OwnerLostAction. 2018-06-30 16:31:39 +01:00
SoScared
fa29a4b991 simplify ra buildtime yaml and game rules for t3 units 2018-06-28 08:22:39 +02:00
Paul Chote
1b63d65ad2 Add an AppImage workaround to import SSL certs. 2018-06-26 15:59:14 +02:00
Paul Chote
0875766bcc Use MoveAndRenameNode in MoveHackyAISupportPowerDecisions. 2018-06-26 15:47:39 +02:00
RoosterDragon
bb536ee4fc Run graphics rendering on a dedicated thread.
The main game thread can offload some of the CPU cost to the rendering thread, freeing up its time to run more logic and render ticks.
2018-06-22 18:40:16 +01:00
Paul Chote
ea068a36f7 Allow window size/scale properties to be accessed from other threads. 2018-06-22 18:40:16 +01:00
Zimmermann Gyula
72eb5543c2 Rename a server-affecting artifact within SeparateTeamSpawns. 2018-06-22 17:28:20 +01:00
Zimmermann Gyula
9e3d210ee0 Change CRLF line-endings to LF in Harvester.cs. 2018-06-20 12:34:52 +02:00
reaperrr
29d71c9a00 Fix TS component tower power-down-ability 2018-06-18 15:24:29 +02:00
Smittytron
3af6a5d4ed Fix Shellmap Chinook wobble 2018-06-17 16:27:16 +02:00
Zimmermann Gyula
d9786dcf72 Normalize the line-endings on RepairableBuilding. 2018-06-17 16:13:16 +02:00
Ivaylo Draganov
3a377a572c Add "Restart" button for multiplayer replays 2018-06-16 15:53:43 +02:00
Andre Mohren
fc82c24e1f FreeActor now supports to be triggered by condition. 2018-06-16 14:47:45 +02:00
reaperrr
3a60dcd4a1 Use new update util extensions to simplify some update rules 2018-06-16 00:00:13 +02:00
reaperrr
f6278a1f41 Add some more useful extensions to UpdateUtils
In many situations, these will save up to 3-4 lines, because quite often this will be enough to avoid curly brackets, "if"s or one-by-on renamings.
2018-06-16 00:00:13 +02:00
reaperrr
3c9891e729 Refactor some update util extensions
Using arguments instead of separate overloads, plus better support for
automatically handling trait/property removals ('-' prefix).
2018-06-16 00:00:13 +02:00
reaperrr
4a081e2111 Replace spaces with tabs in RenameEmitInfantryOnSell 2018-06-16 00:00:13 +02:00
Paul Chote
4d664d4f74 Report custom map rule errors in the lint output. 2018-06-15 23:39:48 +02:00
reaperrr
15e78332a3 Fix Ant sharing cell 2018-06-15 23:37:13 +02:00
Paul Chote
cce9b06a40 Move SupportPowerDecisions to a single parent node.
This is required before we can force all trait
properties to match a TraitInfo-defined field.
2018-06-15 17:24:00 +02:00
Jason Zmuda
f82674cfef Removed 'Crush' per issue #15246 2018-06-14 15:41:31 +02:00
Paul Chote
75f78f8d27 Remove bogus undefined/unused trait property definitions.
None of these exist in current bleed, so this
won't change any in-game behaviour.
2018-06-14 13:40:18 +02:00
Paul Chote
6435869846 Fix RocketLauncher projectile inheritance.
This projectile inherits the Missile template,
but then overrides it with ballistic behaviour.
This prevents all of the Missile properties that
aren't used by Bullet from being inherited.
2018-06-14 13:40:18 +02:00
Paul Chote
6e45f7633a Run SplitAimAnimations update rule on TS. 2018-06-14 13:40:18 +02:00
Paul Chote
ddc47da11c Restore the missing "full" harvester husk. 2018-06-14 13:40:18 +02:00
Paul Chote
9c978ddc32 Fix DamageTypes definitions for forest fires.
In practice this doesn't actually change anything
because TargetType restrictions already guarantee
that only Incideniary weapons can damage them.
2018-06-14 13:40:18 +02:00
Paul Chote
e1717487f6 Fix editor category for RA boxes01. 2018-06-14 13:40:18 +02:00
Paul Chote
7461657394 Fix Death Hand missile launch audio notification. 2018-06-14 13:40:18 +02:00
Paul Chote
0e34e4f310 Fix HQ tooltip in nod03b. 2018-06-14 13:40:18 +02:00
Vasya N
afcb5148bc fix capturable buildings (TSun) 2018-06-14 12:54:19 +02:00
Paul Chote
9ff177359b Split IGraphicsContext from IPlatformWindow. 2018-06-13 18:45:21 +01:00
Paul Chote
ab14a86d39 Rename Renderer.Device to Renderer.Window. 2018-06-13 18:45:21 +01:00
Paul Chote
28c8089bc7 Rename IGraphicsDevice to IPlatformWindow. 2018-06-13 18:45:21 +01:00
Paul Chote
72c0e344ad Extract SDL2HardwareCursor to its own file. 2018-06-13 18:45:21 +01:00
Vasya N
0fc466daee fix hijacker build limit 2018-06-12 14:00:12 +02:00
Paul Chote
e4dd78c5cd Add a tab to the credits panel for mod-specific text.
Enabled by adding a ModCredits block to mod.yaml.
2018-06-11 22:07:20 +02:00
Lars Beckers
314169f2b0 Fix production queue numbers increasing needlessly. 2018-06-11 08:56:08 +01:00
Paul Chote
f7166c3800 Add a FPS counter to the perf debug text. 2018-06-09 21:58:26 +02:00
Paul Chote
8461a82577 Remove requirement for depth sprites to share color sheet. 2018-06-04 23:33:57 +02:00
Paul Chote
2f2a7724d5 Rename shp.(frag|vert) to combined.(frag|vert). 2018-06-04 23:33:57 +02:00
Paul Chote
bfcbe8c004 Improve batching by binding up to 8 simultaneous textures. 2018-06-04 23:33:57 +02:00
Paul Chote
131496ebf8 Merge RGBA sprite rendering into SpriteRenderer.
Renderer.RgbaSpriteRenderer is kept as a thin
wrapper to maintain compatibility with consumer
code.
2018-06-04 23:33:57 +02:00
Paul Chote
ba38878933 Add TextureChannel.RGBA for RBGA sprites. 2018-06-04 23:33:57 +02:00
Paul Chote
c307b3e291 Encode channel attributes in a more sensible way. 2018-06-04 23:33:57 +02:00
Paul Chote
382f4c3af5 Remove the AddEditorPlayer update rule. 2018-06-04 23:15:56 +02:00
Paul Chote
df95b90de2 Remove CheckDeathTypes lint test.
This causes false positive errors when mods use
SpawnActorOnDeath to implement special-case death
effects.
2018-06-04 23:12:07 +02:00
Paul Chote
6c338eb06c Revert "Run graphics rendering on a dedicated thread."
This reverts commit b9be52c542.
2018-06-04 23:04:35 +02:00
Paul Chote
afc5a54ab5 Remove unused gate sequences.
The artwork no longer exists, so these cause
errors to be written to debug.log.
2018-06-03 18:21:23 +02:00
Paul Chote
d4592c13d8 Remove Training Camp minigame map. 2018-06-03 17:16:53 +01:00
Paul Chote
5b47aa4a9e Remove unused map options from minigame maps. 2018-06-03 12:27:20 +01:00
Voidwalker
398ae75525 Added fully random spawn position option. 2018-06-03 12:27:20 +01:00
reaperrr
1408fb74b2 Use Armament.ReloadingCondition on RA V2
The new property makes the AmmoPool work-around obsolete.
2018-06-03 12:23:54 +01:00
reaperrr
e4738ce722 Update rule for AimAnimation splits and ReloadPrefix removal 2018-06-03 12:23:54 +01:00
reaperrr
2136d6dc4a Split and refactor aim animation from WithAttackAnimation
Splitting it from the attack animation, triggering start and end of the aiming animation via interface, as well as removing ReloadPrefix (in favor of switching sprite bodies via condition when reloading) allows us to drop updating via ITick, which in turn will make it much easier to ultimately make this trait compatible with other animation traits, once the priority system lands.
2018-06-03 12:23:54 +01:00
reaperrr
7d4956e309 Refactor WithTurretAimAnimation using INotifyAiming
Triggering start and end of the aiming animation via interface, as well as removing ReloadPrefix (in favor of switching sprite bodies via condition when reloading), allows us to drop updating via ITick, which in turn will make it much easier to ultimately make this trait compatible with other animation traits, once the priority system lands.
2018-06-03 12:23:54 +01:00
reaperrr
a784081973 Add ReloadingCondition to Armament
Allows to grant condition while reloading.
2018-06-03 12:23:54 +01:00
reaperrr
bd38fe4926 Add INotifyAiming interface
And trigger notifications from Attack* traits.
2018-06-03 12:23:54 +01:00
reaperrr
4898873617 Locomotor update rule typo fix 2018-06-03 12:15:11 +01:00
Paul Chote
a61454f409 Fix experience/hospital indicator overlap in TS. 2018-06-02 18:12:08 +02:00
Paul Chote
74971cfbb1 Add hospital heal indicators to RA. 2018-06-02 18:12:08 +02:00
Paul Chote
6359d32946 Fix overlapping veterancy/hospital/hazmat indicators in TD.
This also changes the hazmat indicator to only be visible when on
tiberium, and the hospital indicator to blink while active and only
be visible when the infantry is damaged.
2018-06-02 18:12:08 +02:00
Paul Chote
eccfac7840 Add blink parameters to WithDecoration. 2018-06-02 18:12:08 +02:00
Paul Chote
82d3829c87 Fix overlapping repair / powerdown indicators. 2018-06-02 18:12:08 +02:00
Paul Chote
bb34d4de49 Add conditional offset support to WithDecoration. 2018-06-02 18:12:08 +02:00
Paul Chote
2ef6f7c0cc Replace repair indicator effect with a Decoration subclass. 2018-06-02 18:12:08 +02:00
Paul Chote
218914458f Document RepairableBuilding fields. 2018-06-02 18:12:08 +02:00
lawando
7dd64445fc Rename EmitInfantryOnSell and remove default actor type. 2018-06-02 15:37:35 +02:00
Paul Chote
3d79541148 Remove unused usings and add end of file newline. 2018-06-02 15:30:59 +02:00
Paul Chote
55d3040a0e Blink the color picker palette tab when the Store button is pressed.
This provides some visual feedback that something
has happened on the hidden tab.
2018-06-02 15:30:59 +02:00
Jason Zmuda
2cf3c4873d Update EmitInfantryOnSell.cs 2018-05-31 20:48:40 +02:00
Paul Chote
ebf3ec0e90 Add some basic safeguards around RenderPlayer.set. 2018-05-31 18:54:07 +02:00
Paul Chote
3a1857886a Add support for displaying master server warnings. 2018-05-31 17:45:58 +02:00
Paul Chote
de4199048f Add additional metadata to the default mods. 2018-05-31 17:45:58 +02:00
Paul Chote
c425650b7d Truncate mod-version labels to the correct width. 2018-05-31 17:45:58 +02:00
Paul Chote
6ef802b929 Send mod title, website, and an icon URL to the master server.
Prefer the title returned by the master server in the games list.
2018-05-31 17:45:58 +02:00
Paul Chote
10aaa8eea8 Cancel Rearm activity when the host goes away.
This also ensures that the first reload tick always
takes the correct amount of time.
2018-05-30 18:17:37 +02:00
Paul Chote
ba8eac0e38 Remove deprecated Order.TargetActor and Target.FromOrder. 2018-05-30 18:06:59 +02:00
Paul Chote
768265bbd2 Unify TargetFlash handling around Targets. 2018-05-30 18:06:59 +02:00
Paul Chote
d0be594609 Remove order.TargetActor from RepairsBridges. 2018-05-30 18:06:59 +02:00
Paul Chote
eb01fe6b26 Fix missing voice response when ordering a minelayer to reload. 2018-05-30 18:06:59 +02:00
Paul Chote
6528edecb1 Fix order queuing on Repairable. 2018-05-30 18:06:59 +02:00
Paul Chote
e5701ecb20 Remove order.TargetActor from Repairable. 2018-05-30 18:06:59 +02:00
Paul Chote
2e2f982e41 Fix order queuing on Passenger. 2018-05-30 18:06:59 +02:00
Paul Chote
c78ee66d92 Remove order.TargetActor from Passenger. 2018-05-30 18:06:59 +02:00
Paul Chote
fde531b808 Fix order queuing on RepairableNear. 2018-05-30 18:06:59 +02:00
Paul Chote
148b5cad2c Remove order.TargetActor from RepairableNear. 2018-05-30 18:06:59 +02:00
Paul Chote
ae056e969f Remove order.TargetActor from Harvester. 2018-05-30 18:06:59 +02:00
Paul Chote
883834f1c3 Remove order.TargetActor from Aircraft. 2018-05-30 18:06:59 +02:00
Paul Chote
4a7bb39fbe Remove order.TargetActor from Infiltrates, EngineerRepair, ExternalCaptures.
These cases already checked order.Target.Type so these are simple swaps.
2018-05-30 18:06:59 +02:00
Paul Chote
6e400c5d60 Don't trigger LobbyInfoSynced on ping update.
This interface is only used for updating the master
server advertisement, which doesn't use the player
pings at all.  Removing this should reduce the
master server traffic by a factor of several tens.
2018-05-30 18:05:32 +02:00
RoosterDragon
b96e062a0d Run graphics rendering on a dedicated thread.
The main game thread can offload some of the CPU cost to the rendering thread, freeing up its time to run more logic and render ticks.
2018-05-29 23:05:39 +01:00
RoosterDragon
8ec90525e3 Change Shader.Render to Shader.PrepareRender.
Instead of running the shader operation as an action, just run it after the shader is prepared.
2018-05-29 23:05:39 +01:00
RoosterDragon
95ac1aa5b2 Avoid redundant property sets in WorldRenderer.Draw. 2018-05-29 23:05:39 +01:00
RoosterDragon
296c732525 Avoid redundant implicit float3 conversions. 2018-05-29 23:05:39 +01:00
RoosterDragon
90981e5bda Avoid redundant property reads in Renderer.SetViewportParams 2018-05-29 23:05:39 +01:00
Paul Chote
3082df7dfd Disable kill bounties by default in campaigns, skirmish, and MP. 2018-05-28 19:05:34 +02:00
AoAGeneral
31dcb825b7 Update TD balancing:
Apache damage vs infantry at prone increased from 50 percent to 80 percent.

  Apache damage was cut in half making them less effective versus infantry. Giving them an extra boost damage wise versus prone is enough then going with a universal damage boost.

MCV Price from 4000 to 3500.

  Some say they want 3000 but im still paranoid of the epidemics that have happened in the past with 1v1 and team games. Needs more team game tests if they want 3000.

Repair Pad decrease power from -30 to -20.

 Power consumption is a little high. Specifically if they want to build extras.

APC Price from 550 to 600.

APC HP from 21500 to 19000.

APC turn speed from 8 to 5.

APC build duration from 900 to 938.

APC AA range from 7 to 6.

APC reduce vision range from 7c0 to 6c0.

APC projectile speed reduced from 2c0 to 900.

  See notes below.

Power Plant buff HP from 50,000 to 55,000

  Makes power plant sniping a little tougher. But still effective to take out.

Change power structures (Airstrip/Factory and Refinery to 40 power)

  Important change. This allows more diverse builds to happen such as now able to build refinery > barracks > factory. This combo helps easy defends with quick vehicle herasses.

MRLS Price reduction from 1000 to 900.

  Allows an easier method to build on the field. A unit that is often times killed by airstrikes allows more forgiveness when on the field.

Light vehicle husks HP reduce to 2000. (reduce timer on field wreckage.)

  Prevents early on refinery blocks and other pathing unit issues.

Oil Derrick reduce HP from 100,000 to 80,000

  Oil Derricks were a little to strong. Easily can be killed now.

Change power plant build duration from 12 seconds to 8 seconds. (Low power build duration from 24 seconds to 16 seconds.) Note: Does not include Adv. Power plant

  Due to the struggle of low power this enables players to build regular power plants to help get back up quickly. This however, does not apply to Adv. power plants. The outcome is then scattered extra power plants rather then Adv. power due to the player being on low power.

Change engineer capture threshold from 50 to 55 and added a lower selection priority.

  Fixes the structures from being fixed and preventing the second engineer from getting canceled out or being wasted on damaging the structure again.

NOTES:

I have mentioned that I disagree on the above APC changes. The reasons I conclude may happen is buffing the bikes with a lack of counter. This may result in games where infantry are now used to help counter against buggy/bike play rather then an APC/infantry play or APC/hummer play. If and when players speak about bikes being OP please look back at the changes that happened in the past.
2018-05-28 11:13:09 +01:00
Mustafa Alperen Seki
4bf606b3ca Leave walls as neutral owned after their owner defeated 2018-05-28 10:42:45 +01:00
Mustafa Alperen Seki
497211c328 Make tech buildings turn to neutral when owner is defeated. 2018-05-28 10:42:45 +01:00
Mustafa Alperen Seki
1b451a34ca Spawn Aircraft Husks owned by owner of the aircraft
Rather than neutral with EffectiveOwner of aircraft's owner
2018-05-28 10:42:45 +01:00
Mustafa Alperen Seki
cdbc2d2613 Update default mods for OwnerLostAction 2018-05-28 10:42:45 +01:00
Mustafa Alperen Seki
367a7f617c Added OwnerLostAction
Allows customisation of what will happen to an actor when its owner
loses.
2018-05-28 10:42:45 +01:00
teinarss
0d23070c8e Updated HpPerStep for vehicles in TD 2018-05-24 09:13:56 +02:00
abcdefg30
58dac1ba3f Fix ProductionQueue audio notifications in TS
Overwrote "BlockedAudio" with "" as the default "NoBuild" notification was removed.
2018-05-24 08:51:55 +02:00
Paul Chote
a329711011 Render lines using SpriteRenderer without breaking the batch. 2018-05-23 23:28:22 +02:00
reaperrr
9e95cd5331 Considerably raise Locomotor WaitAverage and WaitSpread
This considerably reduces frequency of repathing attempts without too much of an impact of in-game repathing speed, since most of the time the blocking actor doesn't move out of the way that fast anyway.
2018-05-22 13:10:43 +02:00
reaperrr
e2979658a2 Extract AI support power handling to AISupportPowerManager 2018-05-21 16:41:53 +02:00
Paul Chote
3c1b129158 Tweak the project README.
- Remove BountySource references (deprecated for a long time).
- Add a comment about the Hacking page being very outdated.
- Add a link to the Mod SDK.
2018-05-21 02:57:03 +02:00
abcdefg30
3a74e880c5 Add 'update.log' to .gitignore 2018-05-20 23:08:08 +02:00
Paul Chote
be6fd1c7c7 Copy updater messages to an update.log file in the working directory. 2018-05-20 23:08:08 +02:00
abcdefg30
e83f5a9d59 Replace "\r\n" by "\n" in unit tests 2018-05-20 22:44:34 +02:00
Paul Chote
ba9d1c3182 Improve MiniYaml nunit tests:
- Fixes incorrectly used variable.
- Adds additional tests for node positions.
2018-05-20 22:44:34 +02:00
reaperrr
8e11f0cf4e Add Oasis Trouble to TS 2018-05-20 21:02:30 +01:00
reaperrr
295d665db1 Add The Pit to TS 2018-05-20 21:02:30 +01:00
reaperrr
fa9dd45e30 Add Tournament Rift to TS 2018-05-20 21:02:30 +01:00
reaperrr
92f720d121 Add Way to Uganda to TS 2018-05-20 21:02:30 +01:00
lawando
32c7869718 Add stance filter to TooltipDescription; Add YAML descriptions. 2018-05-20 20:04:59 +02:00
Zimmermann Gyula
c4b5ec5241 Shift temporary owner-change logic from D2k to Common. 2018-05-20 19:44:35 +02:00
Smittytron
38f415255b Make shellmap bridges unkillable 2018-05-20 19:35:39 +02:00
Smittytron
847d2fd106 Add destructable desert bridges 2018-05-20 19:35:39 +02:00
Paul Chote
a9fa9ee741 Fix NRE when updating actors with inline comments. 2018-05-20 19:16:47 +02:00
Paul Chote
dbf6937062 Trim empty space around edges of Shp(TD) frames.
This significantly cuts down the amount of texture
space allocated in VRAM.
2018-05-20 14:12:11 +02:00
Paul Chote
178b6b658d Remove broken DEV_VERSION warning.
This (before it was broken) was hardcoding upstream policy-specific
conventions into the core engine.
2018-05-20 13:55:10 +02:00
Paul Chote
9073249fe4 Fix player connection notifications.
New player notifications are now never reported to the joining player,
and always reported in the dedicated server output.
2018-05-20 13:55:10 +02:00
Paul Chote
c77051790a Fix spurious "This isn't a server order" logging on player disconnect. 2018-05-20 12:35:58 +02:00
teinarss
dcc11c7a41 Added HpPerStep to Repairable for enable repair speed to be changed per unit. 2018-05-14 19:56:35 +02:00
Smittytron
c5e36636ae Fix Nod Laser Turret disabled on lowpower 2018-05-12 17:47:13 +02:00
Smittytron
d154349a29 Fix power down speech notification 2018-05-12 17:47:13 +02:00
Paul Chote
6fdb25b48f Fix yaml formatting. 2018-05-12 16:42:54 +02:00
Paul Chote
82e2595beb Enable comment and whitespace parsing where it is useful. 2018-05-12 16:42:54 +02:00
Paul Chote
df31690332 Extend MiniYaml parser with new features:
- Add support for escaping '#' inside values
- Add support for escaping leading and trailing whitespace

And when discardCommentsAndWhitespace is set to false:
- Add proper support for comments
- Persist empty lines

Whitespace and comment support requires an explicit opt-in because
they produce MiniYamlNodes with null keys.  Supporting these through
the entire game engine would require changing all yaml enumerations
to explicitly check and account for these keys with no benefit.

Comments and whitespace are now treated as real nodes during parsing,
which means that the yaml parser will throw errors if they have
incorrect indentation, even if these nodes will be discarded.
2018-05-12 16:42:54 +02:00
Paul Chote
7a41b3aa89 Fix incorrect yaml indents in the default mods. 2018-05-12 16:42:54 +02:00
reaperrr
c30970975a Fix TS GDI APC leaving water trails while on high bridges 2018-05-10 20:57:01 +02:00
Michael Silber
b199f45f04 Account for custom terrain layers in GrantConditionOnTerrain. 2018-05-10 20:57:01 +02:00
Paul Chote
579cc090a7 Suppress 0-cash ticks on CashTricker and GivesCashOnCapture. 2018-05-07 19:47:41 +02:00
Paul Chote
0eeb38a310 Show negative bounty cash ticks. 2018-05-07 19:47:41 +02:00
Paul Chote
c65d6d1484 Suppress negative cash crate action if the collector has no cash. 2018-05-07 19:47:41 +02:00
GSonderling
bf4dbd9b80 Added checks to make sure cash can't be < 0. 2018-05-07 19:47:41 +02:00
Paul Chote
b8fd4abc4a Fix NRE in Guard when the target actor is dead. 2018-05-07 19:41:13 +02:00
reaperrr
ff8f147955 Some Mobile and Harvester clean-ups
Made Harvester interface implementations explicit.
Made Mobile internal VisualMove activity private.
2018-05-07 19:40:07 +02:00
reaperrr
545ca5da61 Made some interface implementations in Mobile explicit 2018-05-07 19:40:07 +02:00
reaperrr
98289d8573 Reorganized Mobile.cs to be more readable and structured
Implicit interface members, explicit interface members, local method etc. were happily scattered all over the place.
We can't explicitly implement most IMove/IPositionable interface members without some large rewrite,
so we should at least organize the file in a way that makes it less of a pain to tell which parts belong to which interface.
2018-05-07 19:40:07 +02:00
reaperrr
45ee4ad4cf Move IOccupySpace interface right above IPositionable in TraitsInterfaces 2018-05-07 19:40:07 +02:00
reaperrr
030902f691 Style fixes to some code comments in Mobile 2018-05-07 19:40:07 +02:00
Mustafa Alperen Seki
6c5c4a129f Add CargoCondition(s) to Passenger 2018-05-06 20:09:39 +01:00
Paul Chote
3febae1644 Fix exception in DefaultSpriteSequence.GetSprite. 2018-05-06 17:32:17 +02:00
abcdefg30
7ae6326f2a Fix Repairable not accounting for multiple ICallForTransport traits 2018-05-06 16:31:21 +01:00
abcdefg30
c6fee041b1 Add an update rule adding ShakeOnDeath to bridges 2018-05-06 04:51:03 +02:00
abcdefg30
917fd2103f Use ShakeOnDeath instead of the hardcoded shaking for bridges 2018-05-06 04:51:03 +02:00
abcdefg30
b89e6211b2 Add an update rules for the ShakeOnDeath fix 2018-05-06 04:51:03 +02:00
abcdefg30
e7b060c1be Fix ShakeOnDeath using intensity as duration 2018-05-06 04:51:03 +02:00
Paul Chote
91f22c40bd Add kdialog support for KDE. 2018-05-05 22:34:27 +02:00
Paul Chote
b78e9ee89a Extract error messages to a variable to reduce duplication. 2018-05-05 22:34:27 +02:00
Paul Chote
562cf2ad44 Suppress GTK transient parent warning. 2018-05-05 22:34:27 +02:00
Paul Chote
c1a4e66b29 Adjust zenity crash dialog.
This removes the "View FAQ" button, which does not work in the AppImage
enivronment.  It also replaces the inconsistent question mark icon with
a more appropriate stop symbol, and makes the wording consistent across
the zenity, terminal, and native macOS dialogs.
2018-05-05 22:34:27 +02:00
Paul Chote
6397e1443f Add AppImage packaging for Linux. 2018-05-05 22:34:27 +02:00
Paul Chote
c6c431cd95 Rework icon installation. 2018-05-05 22:34:27 +02:00
Paul Chote
6e2abdb687 Fix appdata uninstallation. 2018-05-05 22:34:27 +02:00
Paul Chote
f65188af1c Polish crash dialog code and UI. 2018-05-05 22:34:27 +02:00
Paul Chote
3ce00065a7 Standardize on {MODID} in template files. 2018-05-05 22:34:27 +02:00
Paul Chote
a8fb90d97c Simplify mime type handling. 2018-05-05 22:34:27 +02:00
Paul Chote
0586dabd7e Remove .deb package generation. 2018-05-05 22:34:27 +02:00
Smittytron
b585f46f91 RA Balance changes April 2018 2018-05-05 21:24:45 +01:00
KOYK
36981e90c4 Adds parachute animation to E1,E2,E3,E4,E6,SHOK
Uses conditions without changing the art file.
2018-05-05 01:12:58 +02:00
abcdefg30
6b10895c50 Use the new functions in already existing rules 2018-05-05 00:25:29 +02:00
abcdefg30
9a8e50e82f Add a RemoveNode(MiniYamlNode) method to UpdateUtils 2018-05-05 00:25:29 +02:00
abcdefg30
ae9371f627 Add a ReplaceValue method to UpdateUtils 2018-05-05 00:25:29 +02:00
abcdefg30
399692341d Add a new AddNode(MiniYamlNode) overload to UpdateUtils 2018-05-05 00:25:29 +02:00
Paul Chote
4750188e7b Enable type filtering where appropriate. 2018-05-05 00:15:06 +02:00
Paul Chote
59c2a9e4da Add a Type (= General, Filename, Integer) to TextFieldWidget. 2018-05-05 00:15:06 +02:00
abcdefg30
df8e2f4be4 Fix the ts map importer saving default values for Health and Facing 2018-05-04 23:54:04 +02:00
reaperrr
3c34330925 Skip check for ITemporaryBlocker entirely if rules don't contain any temporary blockers
This benefits all mods without temporary blockers like gates or energy walls.
2018-05-04 19:40:18 +02:00
reaperrr
2a4299906d Add missing update rules to bleed update path
I forgot to add these in their respective PR.
2018-05-04 19:20:39 +02:00
reaperrr
d6e0598bd0 Fix Locomotor lint check
It was missing from the project file (oops...) and missing a check for duplicate Locomotor names.
2018-05-04 19:20:39 +02:00
reaperrr
43478e9e72 Group lint rules together in Mods.Common csproj
Makes it easier to manually add/remov/disable individual lint rules.
2018-05-04 19:20:39 +02:00
reaperrr
079570190c Make TS use Locomotor 2018-05-03 10:49:21 +02:00
reaperrr
1ee815fe3f Make D2k use Locomotor 2018-05-03 10:49:21 +02:00
reaperrr
7441badc96 Make TD use Locomotor 2018-05-03 10:49:21 +02:00
reaperrr
0501ced440 Make RA use Locomotor 2018-05-03 10:49:21 +02:00
reaperrr
5aefff421c Locomotor update rule 2018-05-03 10:49:21 +02:00
reaperrr
e7fb32b09c Replace DomainIndex passability hack with Locomotor boolean 2018-05-03 10:49:21 +02:00
reaperrr
5364515004 Don't pass movement class via IsPassable directly
Let IsPassable get that info from the locomotor instead.
2018-05-03 10:49:21 +02:00
reaperrr
a52e83ca49 Add Locomotor lint check 2018-05-03 10:49:21 +02:00
reaperrr
81343926b6 Split Locomotor trait from Mobile
Add GrantConditionOn*Layer traits

This allows to
- drop some booleans from Locomotor
- drop a good part of the subterranean- and jumpjet-specific code/hacks from Mobile
- grant more than 1 condition per layer type (via multiple traits)
- easily add more traits of this kind for other layers
2018-05-03 10:49:21 +02:00
quinno
f453d9c148 Fix args in linux server scripts
Looks like a typo.
Any args passed to the openra-{MOD}-server scripts were not correctly passed to OpenRA.Server.exe.
The client/game ones are fine.
(I guess "$$@" resolves to a PID with an '@' hanging off it)
2018-05-02 13:20:15 +02:00
Paul Chote
bf4b91741a Ignore unused frames when loading Sequences into Sheets. 2018-05-02 09:59:03 +02:00
Paul Chote
d9fd0f272c Add support on-demand sprite frame loading.
Passing the getUsedFrames argument will cause frames to be buffered
locally (and not added to the SheetBuilder) until they are explicitly
requested. This allows unused frames in sprite files to be skipped
instead of wasting space in GPU memory.
2018-05-02 09:59:03 +02:00
Paul Chote
94dd83bc13 Fix the frame mapping used to select sprites for the SpriteBounds. 2018-05-02 09:59:03 +02:00
Paul Chote
efc744dec3 Improve consistency between the update rule code and descriptions. 2018-05-02 09:25:39 +02:00
Paul Chote
8c2f25e249 Remove explicit line numbers from update rule reports.
Additions/removals by other rules in the set will almost certainly
invalidate these.  Reporting the block and file is the best we can
reasonably do.
2018-05-02 09:25:39 +02:00
Paul Chote
677d004cfa List ignored map includes only once. 2018-05-01 00:46:57 +02:00
Paul Chote
691c432b72 Ignore yaml files imported from other mods. 2018-05-01 00:46:57 +02:00
Paul Chote
91295f9c68 Add IReadOnlyFileSystem.IsExternalModFile. 2018-05-01 00:46:57 +02:00
Voidwalker
0c30a1d670 Fix projectiles to use IRulesetLoaded properly 2018-05-01 00:16:58 +02:00
Paul Chote
f0e190825a Fix map updater breaking unicode characters. 2018-04-30 02:37:53 +02:00
Paul Chote
952f41b4e4 Add --dump-sequence-sheets Utility command.
This can be used to debug and optimize the texture
data that is uploaded to VRAM.
2018-04-30 02:05:43 +02:00
RoosterDragon
7bc5bd5791 Force buffered sheets to commit data to a texture on buffer release.
Previously ReleaseBuffer did not immediately null out the buffer, instead the releaseBufferOnCommit flag allows it to be nulled when the texture is next access and the pending changes from the buffer are committed to it. Now the texture is committed immediately, thus the buffer is null once ReleaseBuffer returns.

Once loaded, we force a GC to reclaim temporary memory used during loading. Previously the buffer would not be null as it was pending commit to the texture and thus could not be reclaimed. As soon as we rendered the first frame, the buffer is nulled but we are now in a low GC state - and the buffer will not be reclaimed until the next gen 2 GC which may be dozens of minutes away.

This change ensures the buffer is null in time for the post-load GC, and thus can be reclaimed before we start rendering.
2018-04-29 18:11:48 +02:00
reaperrr
83f100618b Make INotifyAppliedDamage require explicit implementation 2018-04-29 11:59:49 +01:00
reaperrr
3a82b13093 Make INotifyKilled require explicit implementation 2018-04-29 11:59:49 +01:00
reaperrr
7ca9aa5e0b Make INotifyDamage require explicit implementation 2018-04-29 11:59:49 +01:00
reaperrr
ccd070afd6 Make IRenderModifier require explicit implementation 2018-04-29 11:59:49 +01:00
reaperrr
06dbf71461 Make IStoreResources require explicit implementation 2018-04-29 11:59:49 +01:00
reaperrr
cc4c5a5492 Make IVoiced require explicit implementation 2018-04-29 11:59:49 +01:00
Paul Chote
da29250711 Move PlayerResources to Mods.Common. 2018-04-28 20:42:10 +02:00
Paul Chote
d186ca38f7 Explicitly require PowerShell 3 or higher. 2018-04-28 20:29:31 +02:00
Mustafa Alperen Seki
ec61527ebc Don't show negative prerequisites on tooltip 2018-04-26 17:10:26 +02:00
Paul Chote
160ade1060 Add CaptureTypes to GiveCashOnCapture. 2018-04-26 08:27:35 +02:00
abcdefg30
c3bfd32192 Fix PlayMovieInRadar crashing for spectators 2018-04-23 21:52:49 +02:00
Paul Chote
7508a13f92 Enable "Unable to comply, building in progress" notification. 2018-04-22 18:01:57 +02:00
Paul Chote
0654f18f22 Break out of cancellation loop when there is nothing left to cancel. 2018-04-22 18:01:57 +02:00
Paul Chote
f2cf51d1a4 Play appropriate audio notifications when build/production limit is reached. 2018-04-22 18:01:57 +02:00
Paul Chote
da10e94b41 Add per-item and total queue length limits to ProductionQueue.
Implement 999 per-actor limit.
2018-04-22 18:01:57 +02:00
reaperrr
ffeea72130 Remove RA gates
They aren't used on any shipping map, and removing them significantly
reduces the overscan radius of blockable projectiles in the mod.
2018-04-22 10:55:23 +02:00
reaperrr
18ed04eab5 Only use largest blocker instead of largest actor for projectile blocker overscan
Before this, we unconditionally used the largest OuterRadius of all actors inside a mod for overscanning of blockable projectiles.
However, in many mods the only blockable actors are 1-cell walls, and even if there are gates like in TS, they usually aren't the largest actors in terms of hit-shape.

So this measure should save a bit of performance by reducing the overscan radius of blockable projectiles, especially in mods where walls are the only blocking actors.
2018-04-22 10:55:23 +02:00
FrameLimiter
39aa1a9f9c Adds ships to the MECH's autotarget priority list
The mechanic was not automatically targeting & repairing damaged ships.
2018-04-12 17:08:57 +02:00
abcdefg30
dd080eb882 Fix bridges not being targetable by enter activities 2018-04-12 17:04:57 +02:00
abcdefg30
b8077f1d5d Fix the campaign AI defending captured buildings 2018-04-12 17:01:59 +02:00
abcdefg30
2e7b8bc30a Add a missing word in the description of atreides05 2018-04-12 17:01:59 +02:00
abcdefg30
dfd60655af Fix a crash in atreides05
We removed ExternalCondition from starport
2018-04-12 17:01:59 +02:00
Mustafa Alperen Seki
dc71a71a09 Change the way NukePower>SkipAscent works 2018-04-12 08:19:18 +02:00
Andre Mohren
5b7d43f1e0 Virtual ProductionQueue.AllQueued 2018-04-12 08:08:45 +02:00
David Wilson
1b685955cd Fixes for WavReader to explictly handle "LIST" and "cue " chunks (RA2), and skip to EOF on unknown chunk 2018-04-11 19:22:47 +01:00
abcdefg30
42954aa18e Remove BagFile 2018-04-11 17:18:03 +02:00
RoosterDragon
4da9b6f00a Ensure BagFile.GetStream returns unique streams.
GetStream must return a unique stream on each call to ensure multiple callers can read their streams without affecting each other. As bag file returned multiple references to the same underlying stream, it was possible for multiple callers to disturb reads of each other, and thus read bad audio from each file.
2018-04-10 22:09:39 +02:00
Smittytron
68ad4b6092 Remove leftover sniper disabled from missions 2018-04-10 13:08:22 +02:00
JordanBergin
0226c06b93 No longer check Carryable IsInWorld when Carryall is killed. Also the Carryable's position is updated to Carryall's position when the Carryall is killed. 2018-04-10 12:52:42 +02:00
Smittytron
348932692a Change TD water crossings to Rough terrain 2018-04-10 01:13:29 +02:00
Chris Forbes
770f14fa2a Use IPositionable.CanExistInCell in Bridge/GroundLevelBridge
We don't care whether there's empty space for the actor now -- we care whether
the terrain the actor is ALREADY standing on remains suitable after the
bridge state change.
2018-04-10 01:01:53 +02:00
Chris Forbes
dddd057e3d Add IPositionable.CanExistInCell
This is like CanEnterCell, but doesn't take into account conflicting
actors, etc.
2018-04-10 01:01:53 +02:00
reaperrr
fba08cd066 Don't create empty MissionGroups
Only create MissionGroups if there's at least one visible mission.
2018-04-09 12:19:28 +02:00
Paul Chote
4f0aa89c01 Remove TileSet.Palette and PaletteFromCurrentTileset. 2018-04-08 21:14:29 +02:00
Joe Alam
7221c29d9b Added text selection and copy support to TextFieldWidget.
Use Shift and navigation key (cursor, home, end) to select a portion of
text, and replace/delete/cut as appropriate.
Also provides support for selection with mouse (click and drag)
2018-04-08 19:24:22 +02:00
Zimmermann Gyula
b5893d4c6d Implement GrantExternalConditionToCrusher. 2018-04-08 19:04:05 +02:00
Paul Chote
cc04ec607c Allow d2k turrets to replace walls. 2018-04-07 23:32:24 +02:00
Michael Silber
29dd497c19 Allows GDI-Turrets, GDI- and Nod-Gates to replace walls. 2018-04-07 23:32:24 +02:00
Michael Silber
1b110b7833 Add Replaceable and Replacement traits to support wall overrides. 2018-04-07 23:32:24 +02:00
reaperrr
0c52ff3ae5 Cache TargetablePositions in Actor
To speed up Target.Positions.
2018-04-07 17:24:13 +01:00
reaperrr
4c16e51f92 Add EditorPlayer to all mods
To prevent the editor from loading unnecessary or even incompatible
player traits.
2018-04-06 20:46:47 +02:00
reaperrr
563c8ad302 HarvManager update rule 2018-04-06 20:16:36 +02:00
reaperrr
4f651c2f88 Remove HarvesterInfo look-up from HackyAI 2018-04-06 20:16:36 +02:00
reaperrr
5276636598 Extract a HarvesterManager from HackyAI
This takes action when AI harvesters don't find ore near the base or became idle for some other reason.
2018-04-06 20:16:36 +02:00
reaperrr
82867b6c3a Move some stuff from HackyAI to new AIUtils 2018-04-06 20:16:36 +02:00
abcdefg30
63093eb986 Fix color picker actors being abstract 2018-04-04 18:33:53 +02:00
RoosterDragon
c9b19ffe52 Prevent attack move crashing if selected actors die.
- Cancel attack move if all actors die.
- Command bar no longer shows available actions from any dead units.
2018-04-04 18:30:47 +02:00
Paul Chote
7be71eb381 Remove broken Server.ExternalPort setting. 2018-03-31 18:09:07 +02:00
IceReaper
12407ae995 Fix asset browser displaying wrong file
If multiple files with same filename are present.
2018-03-31 16:08:35 +02:00
Kanar
dc46dd1f26 Re-active Edge-Scrolling for inverted Mouse-Scrolling 2018-03-30 23:47:32 +01:00
Paul Chote
2400b152ea Process shared map includes as part of the mod rules.
This ensures that they are only updated once instead
of repeating the updates for every map that includes them.
2018-03-30 21:31:15 +02:00
Paul Chote
02f769964e Fix a crash in UpdateMapCommand. 2018-03-30 21:31:15 +02:00
Paul Chote
aa5b9401c3 Add Chrome update plumbing. 2018-03-30 17:35:30 +02:00
abcdefg30
910064dfe5 Fix FormatMessageList appending a new line at the end of the list 2018-03-30 12:57:18 +01:00
abcdefg30
207a355909 Fix map files being labeled as "<no filename available>" 2018-03-30 12:57:18 +01:00
abcdefg30
13b89b1c50 Add IgnoreAbstractActors.cs 2018-03-30 12:57:18 +01:00
abcdefg30
972255c6a6 Fix line endings in upgrade rules files
- Use unix line endings
- No "\n" at the end of a message
2018-03-30 12:57:18 +01:00
CH4Code
5b24649c44 Add vision and VTOL husk to the carryall while in process of lifting harvesters. 2018-03-25 13:16:20 +02:00
abcdefg30
d15b462350 Remove the deprecated Difficulty member from MapGlobal (lua) 2018-03-23 20:23:09 +01:00
Paul Chote
ea68f1abb9 Implement new mod/map updater framework. 2018-03-23 20:04:52 +01:00
Thomas Ze
7552afeb16 Fix ActorMap.RemoveInfluenceInner see #14939 (RemoveInfluenceInner(influenceNode.Next.Next) call on influenceNode.Actor == toRemove) 2018-03-23 04:43:03 -03:00
RoosterDragon
f6471d411e Reuse set when rendering actors in the world to avoid allocations. 2018-03-22 23:32:03 -03:00
reaperrr
3069bbfa7d Fix infinite loop in HeliReturnToBase
This can happen if HeliAttack tells the heli to return to base when the player doesn't have any of the RearmBuildings available, because the activity queues itself after the HRTB, and the latter will, after a forced land, then queue back HeliAttack, which then immediately queues back HRTB and so on.

Instead, we now assume that if there is no base to return to, going to NextActivity is pointless and don't queue NextActivity.
RTB was likely ordered by HeliAttack due to lack of ammo, so resuming the attack would be pointless.
2018-03-22 22:50:50 +01:00
Paul Chote
d79d4479c7 Work around AI orders to invalid cells. 2018-03-22 13:52:41 +01:00
Paul Chote
7e94fa8c8a Fix multi-turreted actors not appearing in the map editor. 2018-03-22 12:21:34 +01:00
Michael Silber
6b24271a17 Pass ActorInfo through building-placement-validation code. 2018-03-21 12:53:50 +01:00
Paul Chote
8ea1da1046 Apply map upgrade rules without instantiating the Map object.
This avoids a crash that stops the maps from being updated
when the base mod ruleset is not valid (e.g. a trait is missing a
FieldLoader.Required property).  This also significantly improves the
upgrade performance.
2018-03-21 12:15:23 +01:00
Peter Antal
d2ff5b49fd Allow each caller on MergeOrDefault to discard nodes.
Use filtering ActorInfo's to drop template actors.
2018-03-21 12:10:31 +01:00
reaperrr
40d7b41e84 Tweak Cruiser and Destroyer turret offsets
Moved back turret of cruiser a bit more backwards and destroyer turret a bit forward.
2018-03-21 12:09:18 +01:00
RoosterDragon
d0f7511a62 Add TrimExcess to TypeDictionary.
After adding is finished, this can be used to reduce the memory footprint of the dictionary.
2018-03-21 12:08:23 +01:00
RoosterDragon
e17ede34ef Add Int32Matrix4x4 struct.
This allows matrices to be represented as a value type, and additionally allows avoiding array allocations when calculating rotations.
2018-03-21 12:07:53 +01:00
RoosterDragon
5bd5a384b7 Use a BitSet for representing target types.
- Rename Bits<T> to BitSet<T>.
- Implement set based helpers for BitSet<T>.
- When representing TargetTypes of ITargetable in various traits, use a BitSet<TargetableType> instead of HashSet<string> for better performance & reduced memory usage.
- Fix FieldLoader to trim input values when generating a BitSet<T>.
- Require T in BitSet<T> and BitSetAllocator<T> to be a class since it's just a marker value. This allows the JIT to instantiate generic code for these classes once, as they don't benefit from specialized code for T. (Typically JITs will generate shared code for all reference types, and unique code for every value type encountered).
2018-03-21 12:07:44 +01:00
Peter Antal
8fa94c5301 -Perform null check and add exception logging in RuleSet.
-Explicitly recognize connection termination on ServerOrder.Deserialize()
-Use explicit exception type for SDL2HardwareCursor failures.
2018-03-21 01:55:42 -03:00
reaperrr
f351f0346f Cache map option ShortGame at game load
To reduce MapOptions calls.
2018-03-21 01:49:52 -03:00
RoosterDragon
0555ce9321 Reduce allocations in AutoTarget.ChooseTarget.
- Cache active target query.
- Prefer .Count == 0 over Any when working with Lists.
- Use helper for GetEnabledTargetTypes.
- Don't declare target variable until actually needed.
2018-03-21 01:08:59 -03:00
RoosterDragon
986025ca76 Reuse HashSets for actors entered/exited in CellTrigger & ProximityTrigger.
Actors involved in the trigger are determined as actors move around near the trigger - and can be expensive in some maps. This allows us to avoid allocating new sets and the CPU hit required to set it up each time.
2018-03-21 01:01:48 -03:00
abcdefg30
11b44963da Remove duplicated rules from nod02a
They are already inherited from 'campaign-maprules.yaml'
and 'campaign-palettes.yaml'.
2018-03-21 00:52:18 -03:00
abcdefg30
7f55e85530 Rename DefaultCashLocked to DefaultCashDropdownLocked in yaml 2018-03-21 00:52:18 -03:00
Mustafa Alperen Seki
9122aac555 Fix rendering of IProductionIconOverlay on Spec UI 2018-03-19 23:11:48 +01:00
Paul Chote
e0bcfa918d Fix half-pixel offset in ColorBlock rendering. 2018-03-19 17:31:44 +01:00
Paul Chote
27d9a9e6ff Remove pre-20171014 upgrade rules. 2018-03-19 15:00:41 +01:00
David Wilson
9bc9ce4577 Color picker update with team color presets. Bots added will use available team color presets by default 2018-03-18 23:29:47 -03:00
netnazgul
b383b9abc9 Fix actors with PauseOnCondition ammo not scanning for targets when reloading 2018-03-18 22:57:18 +01:00
C. Helmig
aa829427f0 Fix silo preventing player elimination. 2018-03-18 22:11:36 +01:00
RoosterDragon
d2f2029caf Add FirstNonEmptyBounds method for IDecorationBounds interface.
This provides a more efficient way of determining the bounds by avoiding LINQ. A helper that works directly on arrays prevents allocation of an enumerator when the collection is know to be an array.
2018-03-18 22:06:12 +01:00
RoosterDragon
3b642b1a79 Reuse TargetTypes collection in FrozenActor.RefreshState. 2018-03-18 16:50:20 +01:00
RoosterDragon
b4609337f8 Reuse a HashSet for deduplicating footprints in AffectsShroud.
Shroud footprints are recalculated as actors move around the map, and thus this gets called quite often. This allows us to avoid allocating a new set and the CPU hit required to set it up each time.
2018-03-18 16:46:07 +01:00
RoosterDragon
63810220e4 Improve some usages of Aggregate. 2018-03-18 16:44:17 +01:00
RoosterDragon
adc4538c44 Prevent crash when invalid or not yet created LAN games are discovered. 2018-03-18 16:23:06 +01:00
RoosterDragon
f47595b780 Hide map preview when no replay is selected.
This prevents interaction with the widget than can cause crashes as no replay is selected yet.
2018-03-18 16:06:27 +01:00
Mustafa Alperen Seki
356f24b78c Add logic to disallowing On Hold on a queue. 2018-03-18 15:58:57 +01:00
RoosterDragon
f2e270ce06 Return IRenderable[] rather than IEnumerable<IRenderable> for animations.
Since some callers now know they have an array, then can enumerate it more efficiently and without allocating an enumerator.
2018-03-17 17:51:16 +01:00
fruehstueck
65c42a68ce Add shortcuts for make.ps1 commands 2018-03-15 17:46:39 +00:00
Paul Chote
be96bafc69 Match missions using the unresolved path. 2018-03-11 16:32:10 +01:00
Paul Chote
ac7b6e42f0 Improve behaviour of Platform.UnresolvePath on Windows. 2018-03-11 16:32:10 +01:00
DESKTOP-7PLKRFC\jur_1
311cd521e3 Refinery spawned harvesters should prioritize lower ore #14827 2018-03-11 00:50:55 +01:00
xecollons
227cf35d5f Added TooltipDescription 2018-03-10 17:55:05 +01:00
Peter Antal
3ce2417a06 Create SupportDirPrefix and IsPathRelativeToSupportDirectory() as members on Platform class. 2018-03-10 12:54:01 +00:00
reaperrr
1f4573886b Improve TD service depot hitshape and target offsets 2018-03-10 04:44:46 +01:00
reaperrr
ce396e840d Improve RA service depot hitshape + target offsets 2018-03-10 04:44:46 +01:00
reaperrr
fd83cbf60f Fix WithTurretAimAnimation disabled handling
The old sequence was not recovering when this trait lost its required
condition while the aim anim was running.

Now it doesn't unconditionally return, but instead checks what the
current sequence is and resets to base turret sequence if AimAnim is
disabled.
2018-03-10 00:13:42 +01:00
Mustafa Alperen Seki
1d8b1906ef Add IsPlayerPalette support to WithDecoration 2018-03-10 00:12:56 +01:00
abcdefg30
b012fa62fe Replace 'target point' by 'center' in all descriptions 2018-03-09 23:32:07 +01:00
abcdefg30
ed6a6b61de Throw a proper error when parsing an invalid int2 2018-03-09 23:32:07 +01:00
atlimit8
7283f9804e Added Polygon IHitShape 2018-03-09 23:32:07 +01:00
abcdefg30
56e7b1edc2 Fix int2 arrays not being parsed 2018-03-09 23:32:07 +01:00
reaperrr
5a889c0efd De-duplicate some WithTurretAttackAnimation code 2018-03-09 21:30:30 +01:00
reaperrr
769a49ef0b Make WithTurretAimAnimation conditional 2018-03-09 21:30:30 +01:00
reaperrr
76da40bbda Make WithTurretAttackAnimation conditional 2018-03-09 21:30:30 +01:00
reaperrr
02b1530300 Fix upgrade rule dates 2018-03-09 19:28:29 +01:00
reaperrr
79c78090d1 Remove WithSpriteTurret.AimSequence
We can now use WithTurretAimAnimation instead.
2018-03-09 19:28:29 +01:00
reaperrr
a1ad76ba74 Split *AimAnimation from WithTurretAttackAnimation
These two didn't interact and actually even conflicted when used at the same time, so splitting them is the sensible thing to do.
2018-03-09 19:28:29 +01:00
reaperrr
bd097730cf Adapt TS 2018-03-09 18:58:49 +01:00
reaperrr
e17e8c8cbd Adapt TD 2018-03-09 18:58:49 +01:00
reaperrr
b40970ca5d Adapt RA rules 2018-03-09 18:58:49 +01:00
reaperrr
d643d2ebda Remove legacy .aud sound defaults from Common traits
While C&C-specific sound defaults might be acceptable for C&C-specific traits like MadTank and Chronoshiftable, for common, generic traits like Building they no longer are.
2018-03-09 18:58:49 +01:00
netnazgul
58b5e7b243 Fix Pitfight and Ascent maps in RA mod map pool 2018-03-09 15:57:07 +01:00
Mustafa Alperen Seki
5e7e3bb011 Add DamageTypes to Kill() and make some traits use it. 2018-03-09 00:25:29 +01:00
Pavel Penev
b620e8107f Added GrantRandomCondition trait. 2018-03-08 18:15:54 +01:00
Mustafa Alperen Seki
c976bb1d7b Make BaseProvider PausableConditional 2018-03-08 17:19:23 +01:00
Matthias Mailänder
12054506e1 Add support for JASC and GIMP color palettes 2018-03-08 16:54:13 +01:00
reaperrr
92584c3c85 Fix upgrade rule dates to be after release-20180307 2018-03-08 16:03:14 +01:00
reaperrr
d90ff99e74 Replace WithReloadingSpriteTurret with conditions
WithReloadingSpriteTurret was bound to run into conflicts with any WithTurret*Animation traits due to overriding the turret sequence constantly via ITick.
Using (stacked) conditions instead avoids that.
2018-03-08 16:03:14 +01:00
reaperrr
55b11d1745 Don't cache ActorSpawners at creation
Re-evaluate before every spawn attempt instead.
Also accounts for ActorSpawner being conditional now.

While a bit more costly in terms of performance, this allows to create spawns mid-game.
2018-03-08 15:39:44 +01:00
Voidwalker
711bad91a3 Generalize WormManager into ActorSpawnManager.
Added support of multiple actors, conditions and types.
2018-03-08 15:39:44 +01:00
Paul Chote
e69cf4fd5c Rename another Stream.Write(byte[]) extension method. 2018-03-07 22:29:35 +01:00
Paul Chote
fadcfa0828 Bump mono requirement to 4.2 in the deb package. 2018-03-05 23:16:34 +01:00
Smittytron
1d9ed31f7d Add secondary objective and difficulty levels to nod06b 2018-03-04 21:31:27 +01:00
Smittytron
f9a45130fa Add Bridge to TerrainType 2018-03-04 21:29:11 +01:00
Paul Chote
42f1db0d4b Rename Stream.Write(byte[]) extension method to fix compatibility with newer mono. 2018-03-03 18:40:01 +01:00
Peter Antal
9ce0bcb0b7 Mop up active Stylecop nits.
Style consistency cleanup.
2018-03-03 11:45:35 +00:00
Peter Antal
701675fd4c Add "Slowest" gamespeed with Timestep of 80.
Drop "Slowest" latency to 2 frames, to balance out with the particularly long timestep.
2018-02-28 13:06:24 +01:00
reaperrr
700c46d6af Prevent TS AI from building too many (advanced) power plants
While scaling minimum excess power with base size to make sure they don't build too few, either.
2018-02-27 19:47:00 +01:00
reaperrr
342114878c Prevent D2k AIs from building too many wind traps
While scaling minimum excess power with base size to make sure they don't build too few, either.
2018-02-27 19:47:00 +01:00
reaperrr
7c79d20083 Prevent TD AIs from building too many (advanced) power plants
While scaling minimum excess power with base size to make sure they don't build too few, either.
2018-02-27 19:47:00 +01:00
reaperrr
de47d570d5 Prevent RA AIs from building too many (advanced) power plants
While scaling minimum excess power with base size to make sure they don't build too few, either.
2018-02-27 19:47:00 +01:00
reaperrr
c5f9d6ff2d Add more configurability to AI MinimumExcessPower logic
Allows to scale the targeted minimum excess with building count as well as define a maximum cap to avoid overproducing powerplants.
2018-02-27 19:47:00 +01:00
abcdefg30
851c38012e Set 'SecurityProtocol' to 'Tls12' for download dependencies on windows
But only for dependencies downloaded from github.
2018-02-26 01:42:00 +01:00
ltem
4376dd8c52 Add Github issue template 2018-02-25 15:16:29 +01:00
Smittytron
9de1fe40a5 Add difficulty levels to nod06a 2018-02-25 11:13:52 +01:00
Matthias Mailänder
cf944ae9f1 Require IntoActor everywhere. 2018-02-23 20:02:47 +01:00
Matthias Mailänder
e3e710bb27 Add Visceroid fusing 2018-02-23 20:02:47 +01:00
Matthias Mailänder
6bd1e90671 Add TransformCrusherOnCrush 2018-02-23 20:02:47 +01:00
reaperrr
025f664820 Fix Tiberian Fiend editor category 2018-02-23 19:59:33 +01:00
Matthias Mailänder
f189b85caa Render Tiberian Fiend spikes in Tiberium green. 2018-02-23 19:59:33 +01:00
Matthias Mailänder
8cfb406e29 Don't hide while attacking. 2018-02-23 19:59:33 +01:00
Matthias Mailänder
e5810d19d9 Add Tiberium Fiend hiding mechanic. 2018-02-23 19:59:33 +01:00
abcdefg30
93513db09e Fix launch-game.cmd accepting wrong mod IDs 2018-02-23 14:41:51 +01:00
Mustafa Alperen Seki
763da40092 Fix palette of Oil Pump, Ice, Boxes, Hedgehogs and Utility Poles on Desert Tileset 2018-02-23 02:23:10 +01:00
reaperrr
9107ca3bc1 Remove unused legacy IsWater flag
This was planned anyway, we had just forgotten about it when the last blocker was removed.
2018-02-22 11:51:10 +01:00
Alexis Hunt
08ad7d7f4e Refactor handling of hit radii in projectiles.
penev discovered that the RulesetLoaded functions of projectiles were
never being called, meaning that their blocking calculations were not
properly accounting for actors with large hitboxes.

The best fix for this is to change FindActorsOnLine to always account
for the largest actor's hit radius, rather than forcing callers to pass
the largest radius. Per the comment in Util.cs, as a result, move this
computation to ActorMap. I decided to simplify by not making a separate
calculation for actors that block projectiles only; this may cause a
small performance degradation as the search space is a bit larger.

Similarly to this, I've removed the ability to specify a search radius
manually. Because this is only a search radius, setting a value smaller
than the largest eligible actor makes no sense; that would lead to
completely inconsistent blocking. Setting a larger value, on the other
hand, would make no difference.

CreateEffectWarhead was the only place in core code any of these search
radii were set, and that's because 0 was a mysterious magic value that
made the warhead incapable of hitting actors. I replaced it with a
boolean flag that more clearly indicates the actual behaviour.

Fixes #14151.
2018-02-21 23:26:41 +01:00
Mustafa Alperen Seki
c4b0ad45e3 Add lua functions for DeliverCash and DeliverExperience 2018-02-21 21:38:43 +01:00
Guido L
21472f2cc6 HackyAI: Refactor and remove duplicated logic. 2018-02-21 21:34:00 +01:00
reaperrr
c46a050da3 D2k yaml style fixes 2018-02-21 22:04:33 +03:00
reaperrr
b2885c7563 C&C yaml style fixes 2018-02-21 22:04:33 +03:00
reaperrr
0d5bfff88f RA mod yaml style fixes 2018-02-21 22:04:33 +03:00
reaperrr
e6e860ee36 Common UI yaml style fixes
As suggested by upgrade rules.
2018-02-21 22:04:33 +03:00
reaperrr
5ae1d1c4bf Fix bracket style issue in ProductionQueue
While it's really minor and insignificant, our style convention is to put opening { brackets on a newline (unless everything fits into a single line).
2018-02-21 22:04:33 +03:00
Mustafa Alperen Seki
8979730c32 Add "FactionSuffix-x: allies" for unused Allied countries 2018-02-19 15:05:07 +01:00
Mustafa Alperen Seki
913e7fc995 Unhardcode GrantExternalConditionPower cursors 2018-02-18 23:02:31 +01:00
Mustafa Alperen Seki
f136c200bc Check if AI Production is no longer on hold more often 2018-02-18 22:53:11 +01:00
Mustafa Alperen Seki
94ed985739 Remove NoAutoTarget from Atr5 starport.
Buildings are no longer auto targeted by default.
2018-02-18 22:53:11 +01:00
Mustafa Alperen Seki
384b78aae4 Fix Harkonnen Base definitions on Ord4 2018-02-18 22:53:11 +01:00
Mustafa Alperen Seki
bf2600c2fb Add Ordos 5 2018-02-18 22:53:11 +01:00
abcdefg30
0f1cd07dee Don't render empty background images 2018-02-18 20:18:30 +01:00
Mustafa Alperen Seki
0e0ab318e6 Make ThrowsShrapnel conditional 2018-02-18 18:41:29 +01:00
Mustafa Alperen Seki
733055007a Add Player Palette support for Bullet, Missile and GravityBomb. 2018-02-18 18:23:24 +01:00
AoAGeneral
a06b21f636 TD APC Change. 20180217
Changed the build timer for APCs from 14 seconds to 15 seconds.

An oddity here is that it wasn't exactly on 14 seconds. It was closer to 13.6 seconds.
Changing this to be about 14.8 seconds will help a little from the mass production problem
rather then changing damages or HP further.
2018-02-18 15:41:58 +01:00
abcdefg30
0da8efd9b4 Make Aircraft spawn husks with a neutral owner 2018-02-17 12:21:55 +01:00
abcdefg30
bed6b26428 Fix FallsToEarth not accounting for effective ownership 2018-02-17 12:21:55 +01:00
Arular101
5afa260d4e Don't show new build walls in fow 2018-02-11 23:39:39 +01:00
abcdefg30
bb801e5948 Fix a "granted condition is never consumed" warning in D2k 2018-02-07 21:22:59 +01:00
Mustafa Alperen Seki
a45e0d9d0a Seperate Imperial and Harkonnen Sardaukars 2018-02-06 21:20:00 +01:00
Mustafa Alperen Seki
a0d4a03530 Add conyard.corrino 2018-02-06 21:09:38 +01:00
Mustafa Alperen Seki
3ed8e4b4e8 Make SPM not fire from an actor with disabled instance of a SW. 2018-02-06 21:09:38 +01:00
Mustafa Alperen Seki
7474c38943 Limit D2K Palace SWs to their Faction's Palaces' 2018-02-06 21:09:38 +01:00
Mustafa Alperen Seki
99eedfd0e7 Make SupportPowerChargeBar conditional 2018-02-06 21:09:38 +01:00
Mustafa Alperen Seki
ce63dd33db Make PrimaryBuilding conditional. 2018-02-06 21:09:38 +01:00
Mustafa Alperen Seki
491f808b75 Add GrantConditionOnFaction. 2018-02-06 21:09:38 +01:00
Mustafa Alperen Seki
065eb78afc Make AttackSuicides coditional 2018-02-06 03:10:15 +01:00
Muh-Muh
9fa37bbb02 Add myself to authors 2018-02-06 03:08:40 +01:00
Muh-Muh
f34911eeb6 Make only the right warfactory infiltratable. don't break the game if a player manages without infiltration. 2018-02-06 03:08:40 +01:00
Muh-Muh
0a092237d3 Add Capture as a possibility for completing the objectives on Soviet06 2018-02-06 03:07:08 +01:00
netnazgul
a6a7f641ac Revise the map pool of RA mod 2018-02-04 16:28:16 +01:00
Paul Chote
5737f4f771 Preserve arguments passed into the windows launcher. 2018-02-04 16:14:04 +01:00
Paul Chote
222d1af706 Don't create invalid targets (dead actors) in UOG. 2018-02-04 15:46:36 +01:00
Paul Chote
234e6cc566 Prevent injected unpause orders from restarting a finished game. 2018-02-04 15:30:53 +01:00
Paul Chote
258df13451 Fix missing PauseStateLocked check on "/pause" chat command. 2018-02-04 15:30:53 +01:00
Paul Chote
237d9b3a29 Fix missing click sounds on observer stat hotkeys. 2018-02-03 19:16:18 +01:00
Paul Chote
8174d0e69a Use EffectiveOwner for actor tooltips. 2018-02-03 18:35:50 +01:00
Paul Chote
2fccfdf1ee Add support for disabling IIssueDeployOrders. 2018-01-28 18:06:30 +01:00
RoosterDragon
a726b57367 Fix order serialization issues. 2018-01-28 15:41:28 +01:00
Paul Chote
3af6ffc017 Revert "Remove CreateGroup order as the ActorGroupProxy is gone." 2018-01-28 14:58:44 +01:00
Paul Chote
fc31fac1f0 Work around duplicated notification sound when the ingame menu is open. 2018-01-28 14:51:41 +01:00
Paul Chote
73f5f1fa75 Remove AddChatLine registration on IngameChatLogic dispose. 2018-01-28 14:51:41 +01:00
Smittytron
5f54e46eae Dial back Atry V2 min range change 2018-01-21 10:49:59 +01:00
Mustafa Alperen Seki
aac45915cb Fix Flamers sometimes explode with UnitExplode 2018-01-20 23:51:37 +01:00
Arular101
21504a774d Add missing copyright notice 2018-01-17 23:07:01 +01:00
Arular101
8a60918841 Update copyright notice year to 2018 2018-01-17 00:47:34 +01:00
AoAGeneral
52494e2c91 Changes in TD:
APC vs none decreased from 35 to 30

APC vs wood decreased from 35 to 25

APC vs heavy decreased from 35 to 25

Obelisk HP Increased from 600 (60000) to 750 (75000)

APCs are doing to much damage vs structures and heavy armor. They are managing to kill Guard Towers, light tanks, and power plants to effectively in numbers between 5 and 10. This will help to prevent this from happening. A small decrease vs infantry allows rocket infantry to last just a little bit longer as well.

Obelisk is getting a HP increase. Going from the old notes and responses happening now leaves me to believe its HP is to small. In one testing example an obelisk getting airstriked leaves it with no HP left. 4 minigunner shots and then it dies. Increasing the HP allows an expensive structure to stand longer.
2018-01-16 23:40:29 +01:00
Paul Chote
ea57ed575b Remove helicopter RTB from TD command bar deploy description. 2018-01-14 23:25:47 +01:00
Paul Chote
7dea5e28af Remove ReturnToBase order feedback if no RearmBuildings are defined.
ReturnToBase requires RearmBuildings to function.
2018-01-14 23:25:47 +01:00
Mustafa Alperen Seki
283af60b7c Add PrimaryBuilding: to D2K Palaces 2018-01-13 17:55:57 +01:00
Mustafa Alperen Seki
c87aa62647 Make ProduceActorPower care for PrimaryBuilding 2018-01-13 17:55:57 +01:00
Arular101
24b7f7a23f Cast to long to avoid overflow when multiplying by the health (part 2) 2018-01-13 17:32:34 +01:00
Arular101
30acee38c9 Cast to long to avoid overflow when multiplying by the health 2018-01-13 17:32:34 +01:00
Oliver Brakmann
32b0170785 Fix primary building flag not working properly in D2k 2018-01-13 17:19:38 +01:00
Alexis Hunt
157a783df5 Correct UI for unslowed queues in low power.
Because of the way the tick logic works, 0 (or any negative number) for
LowPowerSlowdown is functionally equivalent to 1. But LowPowerSlowdown
is multipled by a time in several cases, so while 1 will produce the
correct result (no slowdown), 0 will say that the time remaining is
00:00. Forbid nonpositive values, and correct the d2k mod which was
using 0.

Additionally, in the production tooltip, the colour should display as
white even in low power if there is no slowdown.
2018-01-13 16:13:59 +01:00
Mustafa Alperen Seki
ff39802090 Make /kill and /dispose use orders. 2018-01-13 15:50:54 +01:00
Mustafa Alperen Seki
23a2e8fdce Fix building armors in D2k 2018-01-11 17:50:37 +01:00
C. Helmig
75b7e0a58c Fix d2k walls being always visible through f.o.w. 2018-01-11 17:22:49 +01:00
Alexis Hunt
f0267ccb51 Do not speed D2K upgrades up based on buildings. 2018-01-11 11:59:09 +01:00
C. Helmig
14d91452e0 Added primary building and "PRIMARY" text to high tech factory. 2018-01-09 22:39:54 +01:00
C. Helmig
8dd5ba3ac7 Add production bar to high tech factory. 2018-01-09 22:39:54 +01:00
Paul Chote
9a7c6ba34e Refresh lobby server list when switching to the Servers tab. 2018-01-09 21:55:23 +01:00
Paul Chote
3f37f02e84 Use https for web services. 2018-01-09 20:52:25 +01:00
Mustafa Alperen Seki
4d55fa9ca9 Make 1st missions use same way as 2nd to disable upgrades 2018-01-08 20:51:12 +01:00
Mustafa Alperen Seki
f89953113c Disable upgrades in 2nd missions 2018-01-08 20:51:12 +01:00
Mustafa Alperen Seki
d4f7d669f7 Fix the crash on Har5 2018-01-07 23:13:52 +01:00
Paul Chote
c77e328614 Remove "Mission Aborted" notification.
This has been causing confusion for players who have already completed a mission.
2018-01-06 22:35:10 +03:00
RoosterDragon
b1e2ee9b79 ScreenMap should TickRender, rather than just Tick.
This is as FrozenUnderFog.TickRender queues an update to the screen map. If this is not processed in the same tick, this results in screen bounds for the frozen actor being 1 tick behind. By making ScreenMap TickRender, it ensures changes from both Tick and TickRender traits are processed, rather than just Tick traits.
2018-01-06 15:16:59 +01:00
RoosterDragon
c60ca83751 Revert "Fix actors disappearing for a tick when swapping to the frozen actor."
This reverts commit 2eb090f153.

This fixes flicker for the actor->frozen transition, but then introduces the same flicker for the frozen->actor transition instead.
2018-01-06 15:16:59 +01:00
Paul Chote
f6fcf4ca6f Fix crash when the mouse-overed support power loses all instances. 2018-01-06 14:32:00 +01:00
Mustafa Alperen Seki
a021bd4584 Remove ^Tank default from RA mod 2018-01-06 12:08:25 +01:00
GSonderling
69e6e033a6 AI will now defend MCV as if it was a harvester or a building.
Adjusted comments.
2018-01-04 22:11:43 +01:00
FrameLimiter
9f8ebdce42 Fixes STEK TargetTypes in mission allies-06a
The Soviet Tech Centers were automatically being targeted by units.
2018-01-04 08:05:55 +01:00
FrameLimiter
89b95a5408 Fixes STEK TargetTypes in mission allies-06b
The Soviet Tech Center was automatically being targeted by units.
2018-01-04 08:05:55 +01:00
Smittytron
77ac0e5407 Reduce value of TD Civilian to 10 2018-01-03 11:00:53 +01:00
Mustafa Alperen Seki
2e3f302088 Fix the misplaced BridgePlaceholder on Tread Lightly 2018-01-01 21:44:07 +01:00
Paul Chote
36c3e07535 Remove CRLF from GameServer.cs. 2018-01-01 21:12:58 +01:00
Paul Chote
58547fda89 Guess mod titles based on other versions, if they exist. 2018-01-01 21:12:58 +01:00
Paul Chote
73da5e7a20 Fix d2k ingame-client tooltip background. 2018-01-01 22:12:09 +02:00
Paul Chote
7f20d1474d Fix RA aircraft prerequisites. 2018-01-01 19:40:38 +01:00
Paul Chote
ee728be537 Fix WithCargo crash. 2018-01-01 19:25:50 +01:00
Paul Chote
7b056509ec Don't try to remove tooltips that haven't been added. 2018-01-01 18:23:16 +02:00
Paul Chote
2eb090f153 Fix actors disappearing for a tick when swapping to the frozen actor. 2018-01-01 16:01:44 +01:00
Paul Chote
f8abd5d319 Serialize the correct player in FrozenActor-targeting orders. 2018-01-01 16:01:44 +01:00
Paul Chote
b3cde077fc Don't break the order stream if a frozen actor refers to a bogus player. 2018-01-01 16:01:44 +01:00
Paul Chote
47fa9e496d Fix tooltips not showing for frozen actors with dead backing actors.
This also documents some old bugs.
2018-01-01 16:01:44 +01:00
abcdefg30
19a9c70d5c Fix the communications center being on low power 2018-01-01 15:49:56 +01:00
abcdefg30
94a062b3e7 Properly unload passengers in nod05
Also lets the transport fly out of the map
2018-01-01 15:49:56 +01:00
Andrii Yukhymchak
11db40a2b3 Fixed issue with unit ready when capturing 2018-01-01 12:52:47 +00:00
Paul Chote
dec11f4fa0 Force spectator color to white to avoid spoofing by the server. 2018-01-01 11:25:08 +01:00
Paul Chote
ae394f937b Fix the color validator overriding spectator colors. 2018-01-01 11:25:08 +01:00
Paul Chote
3353215b66 Add a total player count to the MP browser. 2018-01-01 11:12:27 +01:00
Paul Chote
cd6dfd2185 Work around the "BUG: in order targeter" game chat warning. 2018-01-01 10:48:03 +01:00
Paul Chote
e70b61c4b0 Fix Chrono Tanks telesporting towards (0,0) when force-moving to an actor. 2018-01-01 10:48:03 +01:00
Mustafa Alperen Seki
2f6bbd906b Ignore Silos for SW Targeting on Harkonnen Missions
Also Defences for Saboteur
2017-12-31 12:02:13 +01:00
reaperrr
8fe45cb894 Fix surface ships except transport being unable to exit ship yard 2017-12-31 08:36:37 +02:00
FrameLimiter
61df53ea82 Fixes civilian panic from civ building explosion
The Civilian building explosions were not making the civilians panic.
2017-12-31 03:26:17 +01:00
abc013
38c4c10c73 Added Allies-06b to the Red Alert mod 2017-12-31 02:51:03 +01:00
Mustafa Alperen Seki
1aa57cd5b1 Fix an owner change for Smugglers on Har6s. 2017-12-30 21:30:10 +01:00
Mustafa Alperen Seki
b7830d97f2 Add Harkonnen9b 2017-12-30 21:30:10 +01:00
Mustafa Alperen Seki
a80924ebb3 Add Harkonnen 8 2017-12-30 20:18:37 +01:00
Mustafa Alperen Seki
69e9b94c5d Add Campaign Tooltip to D2K 2017-12-30 17:40:09 +01:00
Paul Chote
45f346c004 Fix label offsets. 2017-12-30 17:03:58 +01:00
Paul Chote
7fba6a2155 Add a view-only server list tab to the multiplayer lobby. 2017-12-30 17:03:58 +01:00
Paul Chote
235b16d4b3 Split server list logic into its own LogicObject. 2017-12-30 17:03:58 +01:00
reaperrr
4ef11f2763 Fix TD Orca missiles alternating between offsets
This is now properly fixed by using Burst: 1.
2017-12-29 15:28:34 +00:00
reaperrr
b3c3c7b414 Make RA heli weapons alternate between offsets
Instead of using one for AG-only and one for AA-only.
2017-12-29 15:28:34 +00:00
reaperrr
9b629a8f39 Remove dysfunctional TS yaml hacks
In addition to now being redundant due to Armament-side cycling through LocalOffsets, these didn't work because Burst is reset once ReloadDelay is reached, so that equal BurstDelay never really had the intended effect.
2017-12-29 15:28:34 +00:00
reaperrr
cefe3d2c8f When Armament has multiple LocalOffsets but weapon has Burst: 1, cycle through offsets 2017-12-29 15:28:34 +00:00
Mustafa Alperen Seki
9871abe562 Make crushable conditional 2017-12-29 15:25:38 +00:00
Paul Chote
14f6601f2b Tweak wording of playtest notice. 2017-12-29 02:56:50 +01:00
Paul Chote
1d8b2a9a08 Replace contrast with shadow on main menu version label. 2017-12-29 02:56:50 +01:00
Paul Chote
5c53172ab0 Add an update warning to the main menu. 2017-12-29 02:56:50 +01:00
Paul Chote
3effa5cec4 Add a setting to disable version checks. 2017-12-29 02:56:50 +01:00
Paul Chote
0208d0cc10 Move the version check code to WebServices and run only on first launch. 2017-12-29 02:56:50 +01:00
FrameLimiter
759bd044ed Moved Chinook entry/exit points to edge 2017-12-29 01:29:32 +01:00
FrameLimiter
4cdab30c48 Added an entry delay to insertion transport 2017-12-29 01:29:32 +01:00
FrameLimiter
98ec28e850 Fixes the chinooks not being removed in Nod04b
∙The entry/exit points for the Chinooks were out bounds.
∙The rally/unload points for the Chinooks were very close together and causing unloaded cargo to overlap.
2017-12-29 01:29:32 +01:00
Paul Chote
ef680dbbfe Add tooltips to the password icon and player count. 2017-12-28 22:42:50 +01:00
Paul Chote
0eaec5d861 Add an animated reload glyph to the MP server refresh. 2017-12-28 22:42:50 +01:00
Mustafa Alperen Seki
7014393211 Move Generic Prefixes to yaml and add prefix for Neutral 2017-12-28 12:00:53 +00:00
Mustafa Alperen Seki
841c873276 Fix Crash when Mcv: UnitsCommonName is empty. 2017-12-28 11:36:44 +00:00
TheChosenEvilOne
15354f52c1 Added FACT unpack checkbox to ra/cnc/ts. 2017-12-28 11:22:29 +00:00
TheChosenEvilOne
1a947907d3 Make Transforms a PausableConditionalTrait. 2017-12-28 11:22:29 +00:00
reaperrr
3d4095cffd Make sure AttackOrFlee returns Attack when it makes sense
Not listing enemy "NearDead" and own relative atk power "Strong" here looked wrong, and might've resulted in no decision being made.
2017-12-28 11:00:18 +00:00
reaperrr
104148378f Remove some redundancy in AttackOrFleeFuzzy 2017-12-28 11:00:18 +00:00
reaperrr
6b567722b8 Factor number of bursts plus ReloadDelay into AttackOrFleeFuzzy.RelativePower 2017-12-28 11:00:18 +00:00
reaperrr
a4595af1e3 Make AttackOrFleeFuzzy consider all DamageWarheads instead of only the first 2017-12-28 11:00:18 +00:00
reaperrr
382c0b5f1d Make AI StateBase.CanAttackTarget only return true on valid armaments that are also enabled 2017-12-28 10:40:31 +00:00
reaperrr
e6835cef6e Replace some .Any checks with explicit .Count checks in AI 2017-12-28 10:40:31 +00:00
reaperrr
3fe808e0fb Make Ground and Navy AI squads look for enabled (instead of any) targetables 2017-12-28 10:40:31 +00:00
reaperrr
6de90b02d0 Unhardcode various AI squad radii 2017-12-28 10:40:31 +00:00
Arular101
eefaf23885 Fix global-bounty warnings 2017-12-28 10:23:23 +00:00
reaperrr
1bac76fdd1 Remove redundant custom Duration from Bomber John Chronoshift power
The MNLYR has ReturnToOrigin: false anyway, so this was redundant and made no difference whatsoever.
2017-12-28 10:04:43 +00:00
reaperrr
f0ee87f078 Upgrade TS rules to SupportPower seconds -> ticks 2017-12-28 10:04:43 +00:00
reaperrr
7fb595a437 Upgrade D2k rules to SupportPower seconds -> ticks 2017-12-28 10:04:43 +00:00
reaperrr
88704ebac6 Upgrade TD rules to SupportPower seconds -> ticks 2017-12-28 10:04:43 +00:00
reaperrr
aa6ddc6a6e Upgrade RA rules to SupportPower seconds -> ticks 2017-12-28 10:04:43 +00:00
reaperrr
b70e4de5ee Refactor support powers to use ticks instead of seconds for all delays - code changes
Also renamed ChargeTime to ChargeInterval.
2017-12-28 10:04:43 +00:00
Arular101
3d62b1f9b3 Adjusted Minigun damage vs wood to match current damage after multiplying by 100. From 8 * 0.6 = 4.8 (actual value is 4) to 800 * 0.5 = 400 2017-12-28 10:12:52 +01:00
Arular101
4ea6a3c18c Small adjustments 2017-12-28 10:12:52 +01:00
Arular101
e734668f56 Upgrade rules for increasing HP and damage by 100x for the TS mod 2017-12-28 10:12:52 +01:00
Arular101
be89ce9efd Add myself to authors 2017-12-28 10:12:52 +01:00
Arular101
ede72410ff Increase damage and HP by 100x 2017-12-28 10:12:52 +01:00
C. Helmig
3a9ee8d51a Fixes mines not being auto-targeted even if revealed. 2017-12-28 08:06:14 +01:00
Paul Chote
27beed402f Display information banners in the MP server browser.
Notices are provided for outdated / unknown mod versions
and latest but playtest available.
2017-12-28 03:40:41 +01:00
Paul Chote
e7ce9aa263 Unhardcode server ping/query URLs. 2017-12-28 03:40:41 +01:00
Michael Silber
86a17e9260 Added TS map They All Float (Westwood). Part of Issue #12518
Added me (frühstück) to AUTHORS
2017-12-27 22:09:09 +01:00
Paul Chote
c6ad768a76 Remove redundant powerdown conditions. 2017-12-27 20:18:27 +01:00
Paul Chote
5425a5a28e Replace CanPowerDown with ToggleConditionOnOrder. 2017-12-27 20:18:27 +01:00
Michael Silber
b8ec20a010 Carryall pickup indicator set to top, left corner 2017-12-27 19:07:44 +00:00
Michael Silber
c445a20acf D2K carryall pickup indicator offset fix 2017-12-27 19:07:44 +00:00
Mustafa Alperen Seki
7f77e4cf40 Remove ProductionDoorOverlay while transforming 2017-12-27 13:50:58 +00:00
Mustafa Alperen Seki
acf25354b0 Consider BuildAtProductionType for exit types too for normal ProductionQueue 2017-12-27 13:46:20 +00:00
Mustafa Alperen Seki
5ac0625f97 Add /kill and /dispose chat commands 2017-12-27 13:26:38 +00:00
Mustafa Alperen Seki
fc07391c8c Add Type Support for InfiltrateFor* traits 2017-12-27 11:13:09 +00:00
Mustafa Alperen Seki
f7de5d46be Allow GrantConditionOnPrerequisite to work on Player: 2017-12-27 02:31:07 +01:00
Matthias
7b6b79493c Replace @ with new lines in legacy map briefing sections 2017-12-27 02:12:58 +01:00
Michael Silber
a3b186ccbc Burnt Trees using RadarColor from trees; issue #14582 2017-12-26 23:45:37 +01:00
Paul Chote
c73ce50a09 Include bots in the player count for consistency with the sidebar. 2017-12-26 20:05:38 +01:00
Paul Chote
8fc2caa01a Change the "Empty" filter to not discard servers that have only spectators. 2017-12-26 20:05:38 +01:00
Paul Chote
bccc0f8f17 Add a player list to the MP server browser. 2017-12-26 20:05:38 +01:00
Paul Chote
3ba610b535 Implement new master server ping protocol. 2017-12-26 20:05:38 +01:00
Paul Chote
a3882501b1 Ignore malformed LAN advertisements instead of crashing.
This matches the behaviour for online game handling.
2017-12-26 20:05:38 +01:00
Paul Chote
ec97214c16 Fix ProductionOverlay crash. 2017-12-25 21:34:31 +01:00
Unknown
4be593123d add me (jongleur1983) to AUTHORS
#14558: MovingToRefinery takes actor instead of CPos

DeliveryOffset (previously added by the harvester) is now taken into account by the AutoCarryable
fix whitespaces
2017-12-25 03:52:44 +01:00
Peter Amrehn
73bd80ebc5 #14542: order CarrryAll to the target's location, not to 0,0
(which is in order.TargetLocation
#14542: don't use deprecated TargetActor property, replace by

Target.Actor.Location
2017-12-25 03:52:44 +01:00
Matthias
ebd8a2b193 Adhere to the ZeroBranePackage conventions. 2017-12-24 10:35:13 +00:00
Paul Chote
0b446167b6 Unify and tweak layout of MP browser window. 2017-12-24 01:47:44 +01:00
Paul Chote
959804b167 Restore separated server creation dialog.
This also adds details about advertising and configuration.
2017-12-24 01:47:44 +01:00
Paul Chote
5256fb7bbd Restore separated direct connect dialog. 2017-12-24 01:47:44 +01:00
Paul Chote
205c45198c Remove secondary AllowPortForward setting.
The global setting is fine, and this simplifies
both the code and the UI.
2017-12-24 01:47:44 +01:00
abcdefg30
38cb3dea05 Make vehicles spawn husks with a neutral owner 2017-12-24 00:41:15 +01:00
abcdefg30
a6258485c9 Add a "EffectiveOwnerFromOwner" property to change the effective owner of a spawned actor 2017-12-24 00:41:15 +01:00
abcdefg30
b99d21b818 Add support for carrying effective owners over to husk actors 2017-12-24 00:41:15 +01:00
abcdefg30
b9987dcbda Add a fallback to InternalOwner if the victim was defeated 2017-12-24 00:41:15 +01:00
abcdefg30
d4d9959159 Let Husk implement IEffectiveOwner 2017-12-24 00:41:15 +01:00
abcdefg30
eab93ccf97 Add an EffectiveOwnerInit 2017-12-24 00:41:15 +01:00
abcdefg30
503b91d391 Remove an unused using 2017-12-24 00:41:15 +01:00
abcdefg30
bd52e56aaf Add the possibility to deny spawning actors for dead players 2017-12-24 00:41:15 +01:00
RoosterDragon
e42e766bb6 Prevent incorrect usage of ModelRenderer.
Force BeginFrame/EndFrame to be called correctly, and prevent calls to RenderAsync when outside of a frame.
2017-12-23 22:58:17 +01:00
Paul Chote
4c64a37e1d Reject invalid orders from unvalidated clients. 2017-12-23 21:48:59 +01:00
Mustafa Alperen Seki
e2f3989f46 Fix that conditions for InitialUnits are not given 2017-12-23 21:22:31 +01:00
Mustafa Alperen Seki
65e4019424 Update some prerequisites to include subfactions too 2017-12-23 18:35:01 +00:00
Mustafa Alperen Seki
4490eb3a2a Change Smuggler Starport and Merc HFac Cameo to use Ordos ones 2017-12-23 18:28:00 +00:00
Mustafa Alperen Seki
d762411b95 Update D2K voice and notifications to include subfactions 2017-12-23 18:28:00 +00:00
Mustafa Alperen Seki
395eb36cd1 Update D2K FactionImages
Default is now Ordos, as there are 3 ordos subfactions and 2 for others.
Fremen now uses Atreides Structures as in original, rather than
Harkonnen
2017-12-23 18:28:00 +00:00
reaperrr
fbc18dfb18 Use HashSet instead of IEnumerable to pass actors to renderable lists 2017-12-23 17:56:11 +00:00
reaperrr
04fb0f209d Spatially partition some actor overlays 2017-12-23 17:56:11 +00:00
reaperrr
6ef95405bf Split overlay renderable generation to separate list
To make the code a bit more readable and consistent with normal renderables.
2017-12-23 17:56:11 +00:00
Paul Chote
4993e74748 Fix SelectionBox line depths. 2017-12-23 17:32:07 +00:00
Paul Chote
2794b14f52 Calculate actor preview bounds directly. 2017-12-23 17:16:13 +00:00
Mustafa Alperen Seki
7bf3d5d7f6 Fix Cruiser's Turret 2017-12-23 13:16:41 +01:00
Mustafa Alperen Seki
27cc487575 Add Harkonnen 9a 2017-12-22 12:22:08 +01:00
abcdefg30
3af3299921 Fix a crash in PlaceBuilding.cs 2017-12-22 09:06:27 +00:00
reaperrr
41dd7ca428 Fix NukeLaunch being displayed too early
Adding it to ScreenMap from the ctor unconditionally didn't mesh well with potentially being added to world with a delay.
2017-12-22 04:17:18 +02:00
Paul Chote
028f7c6546 Adjust TD airstrike targeting to account for limited visibility. 2017-12-22 02:33:25 +01:00
Paul Chote
2ad42b6a7e Account for visibility when selecting AI superweapon targets. 2017-12-22 02:33:25 +01:00
Paul Chote
9dc330b300 Update FrozenActor TargetTypes alongside other variable state. 2017-12-22 02:33:25 +01:00
Paul Chote
b9e03ac009 Add FrozenActorLayer.FrozenActorsInRegion. 2017-12-22 02:33:25 +01:00
Paul Chote
b221787350 Allow CellRegions to be created with MPos. 2017-12-22 02:33:25 +01:00
Paul Chote
d24d80f483 Update minigames for bounty checkbox. 2017-12-21 23:52:04 +01:00
Paul Chote
cd4f54ade3 Add Kill Bounties checkbox to RA. 2017-12-21 23:52:04 +01:00
Paul Chote
1a73a2578b Make GivesBounty conditional. 2017-12-21 23:52:04 +01:00
Paul Chote
e79680e22c Add LobbyPrerequisiteCheckbox trait. 2017-12-21 23:52:04 +01:00
Pavel Penev
f8b75bbed4 Fixed HarvesterInsurance assuming all refineries get free harvesters via FreeActorWithDelivery 2017-12-21 21:55:55 +00:00
Mustafa Alperen Seki
956dbb762c Add Harkonnen 7 2017-12-21 22:54:57 +01:00
reaperrr
14c608786d Fix ReloadAmmoPool upgrade rule 2017-12-21 21:29:51 +02:00
Paul Chote
cfb293a53a Add a pull request template with important contributor information. 2017-12-21 21:04:37 +02:00
Paul Chote
ec4cf0646f Rewrite Serialize to improve clarity. 2017-12-21 20:01:14 +01:00
Paul Chote
5b51261dd3 Serialize the correct target type. 2017-12-21 20:01:14 +01:00
Paul Chote
9c88fc154f Remove redundant switch from order serialization. 2017-12-21 20:01:14 +01:00
RoosterDragon
987d0b77ac When dumping syncable traits, use a struct for the synced values.
Since most traits have few syncable members, this allows us to avoid allocating an array whose lifetime is only a few ticks long. For traits with more members, we fall back to allocating the array.
2017-12-19 22:01:08 +02:00
RoosterDragon
ca01a1f186 Presize MemoryStream when possible.
Also use GetBuffer when we know we have presized the stream to the exact required size to prevent a needless copy.
2017-12-19 00:59:11 +01:00
RoosterDragon
5d8c9a560a Release audio resource for video when StopVideo is called. 2017-12-19 00:57:58 +01:00
RoosterDragon
3f8c1ad5df Don't allocate a full-sized array when creating a VertexBuffer.
We can allocate a much smaller zeroed buffer and copy that multiple times in order to zero the memory. When creating large VertexBuffers, this caps our temporary allocation size significantly.
2017-12-19 00:57:02 +01:00
Paul Chote
c269525397 Fix support power tooltip time coloring. 2017-12-19 00:55:09 +01:00
Mustafa Alperen Seki
77ef13816f Add 4PLAY10 2017-12-18 23:19:44 +00:00
Mustafa Alperen Seki
09f4c6339e Add 4PLAY8 2017-12-18 23:15:45 +00:00
Mustafa Alperen Seki
2251078dde Add 4PLAY5 2017-12-18 23:11:04 +00:00
Mustafa Alperen Seki
365251f845 Add 4PLAY1 2017-12-18 23:09:15 +00:00
Mustafa Alperen Seki
c6f0b3e1a0 Add 2PLAY14 2017-12-18 23:07:28 +00:00
Mustafa Alperen Seki
31206de855 Add 2PLAY11 2017-12-18 23:04:43 +00:00
Mustafa Alperen Seki
fe3534ebcd Add 2PLAY9 2017-12-18 23:02:29 +00:00
Mustafa Alperen Seki
0dd52acd98 Add 2PLAY4 2017-12-18 23:00:04 +00:00
Mustafa Alperen Seki
a36242d524 Add 2PLAY3 2017-12-18 22:57:32 +00:00
Mustafa Alperen Seki
ecc09256d8 Add 2PLAY5 2017-12-18 22:54:38 +00:00
Mustafa Alperen Seki
fe01afe794 Move Update Queue to bottom on Player.yaml and ingame-player.yaml 2017-12-18 19:22:07 +00:00
Mustafa Alperen Seki
6f41be209c Allow all upgradable structures to build upgrades. 2017-12-18 19:22:07 +00:00
Paul Chote
e35e93557c Remove obsolete NearestCellTo helper. 2017-12-18 07:47:15 +00:00
Paul Chote
30cafcbc25 Use Util.AdjacentCells to determine ExternalCapture validity.
This matches the set of cells targeted by MoveAdjacentTo.
2017-12-18 07:47:15 +00:00
reaperrr
85c54e04d9 Replace LINQ in AirStates.CountAntiAirUnits 2017-12-17 21:18:44 +00:00
reaperrr
01a88862b3 Remove IDisable for good 2017-12-17 21:18:44 +00:00
reaperrr
c1cba4ecc1 Make Gate more independent from Building and pausable-conditional
Replace Gate IsDisabled checks with IsTraitDisabled/Paused checks
2017-12-17 21:18:44 +00:00
reaperrr
383840135f Replace IsDisabled checks in production with IsTraitPaused/Disabled checks
Note: We might want to separate IsTraitDisabled checks later (possibly make the latter cancel the currently produced item), but that can be done in a follow-up.
2017-12-17 21:18:44 +00:00
reaperrr
3aa8b3ae29 Remove unit.IsDisabled check from AirStates 2017-12-17 21:18:44 +00:00
RoosterDragon
be761de768 Compute map UIDs without copying all data to a MemoryStream.
We can use MergedStream to create a single combined stream with all the input and pass this to the hash function. This saves copying all the data into a MemoryStream to achieve the same goal, which requires more memory and allocations.
2017-12-17 19:20:12 +01:00
Paul Chote
49f0e4ebcf Fix incorrectly named lobby option properties. 2017-12-17 14:51:10 +02:00
Paul Chote
1a405b17ba Register the current mod even if LaunchPath is bogus. 2017-12-17 04:21:17 +01:00
RoosterDragon
a9d1d374b8 Remove draw line 2D helper method.
Callers can provide 3D points easily, and this avoids the need to allocate and slow down enumeration via the points.Select(p => new float3(p, 0)) wrapper.
2017-12-17 01:51:51 +01:00
RoosterDragon
de38313579 Cache VariableExpressions on load.
Compiling these expressions is sadly expensive, and we needed new ones for every trait on every actor each time one was generated. The expressions thankfully can be shared as they are pure functions, which removes this overhead.
2017-12-17 01:42:21 +01:00
RoosterDragon
bf21fc5213 Use StringComparison.Ordinal for StartsWith checks in TechTree.cs. 2017-12-17 01:28:25 +01:00
RoosterDragon
13edaefcac Avoid LINQ when building map domains. 2017-12-17 01:28:25 +01:00
RoosterDragon
dd2ae9fe5e Avoid LINQ in some Tick methods.
As Tick is called often, avoiding allocation overhead in these methods is useful.
2017-12-17 01:28:25 +01:00
Kevin Hinton
86f9b8807e Add EffectiveOwner to Lua Scripting API. 2017-12-16 18:00:41 +00:00
FrameLimiter
72a11ec2a5 Removed duplicate values in defaults.yaml 2017-12-16 17:45:33 +00:00
FrameLimiter
60633dfdf2 Removed duplicate values in civilian.yaml 2017-12-16 17:45:33 +00:00
FrameLimiter
a6dc9c3b21 Removed duplicate value in allies-01 rules.yaml 2017-12-16 17:45:33 +00:00
RoosterDragon
5b51f2a0fa Avoid format strings in some places.
Where it is possible to directly concat strings, prefer this in some often-called methods.
2017-12-16 17:26:29 +01:00
RoosterDragon
f78c3bef33 Allow VS 2017 to format solution file. 2017-12-16 17:25:55 +01:00
RoosterDragon
c8c7629bce Convert some stray spaces to tabs. 2017-12-16 15:53:03 +00:00
Paul Chote
502c3e2bf5 Remove global chat integration. 2017-12-13 21:04:16 +01:00
GSonderling
488cec64b8 Added support for filtering exits by production type. 2017-12-13 04:08:52 +01:00
Arular101
1bf59e885d Upgrade rules for increasing HP and damage by 10x for the D2K mod 2017-12-12 23:56:25 +01:00
Arular101
50185d3ccd Small adjustments 2017-12-12 23:56:25 +01:00
Arular101
64a3187fd1 Increase damage and HP by 10x 2017-12-12 23:56:25 +01:00
Arular101
a1b3fe2bda Parabombs tooltip for airfield
with selection grouping
2017-12-12 23:14:30 +01:00
Arular101
56634564f2 Parabomb tooltip fixes 2017-12-12 23:14:30 +01:00
Mustafa Alperen Seki
fd1aa07f83 Adjust D2K Building Selection Boxes 2017-12-12 23:02:55 +01:00
Paul Chote
3ad6a87920 Center the vertical alignment of lobby options if less than the panel height.
This also enables an extra row to be shown before triggering the scroll bar.
2017-12-12 22:43:11 +01:00
Paul Chote
3f67feab0e Rename boolean LobbyOption fields. 2017-12-12 22:43:11 +01:00
Paul Chote
36fccbc453 Add Checkbox/Dropdown to lobby options yaml fields. 2017-12-12 22:43:11 +01:00
Paul Chote
ea32c758eb Expose default UI labels and tooltips to yaml. 2017-12-12 22:43:11 +01:00
Paul Chote
99908c4d80 Move hardcoded list of lobby options into yaml. 2017-12-12 22:43:11 +01:00
Paul Chote
2e24c14503 Make SpawnMPUnitsInfo fields readonly. 2017-12-12 22:43:11 +01:00
Paul Chote
2c17780b94 Make ShroudInfo fields readonly. 2017-12-12 22:43:11 +01:00
Paul Chote
763630f547 Make DeveloperInfo fields readonly. 2017-12-12 22:43:11 +01:00
Paul Chote
97cdce7448 Add additional metadata to lobby options. 2017-12-12 22:43:11 +01:00
Arular101
b71b2ad523 Upgrade rules for increasing HP and damage by 100x for the TD mod 2017-12-12 22:18:41 +01:00
Arular101
7ad989fc43 Adjust values in custom maps and missions 2017-12-12 22:18:41 +01:00
Arular101
4e62531b11 Adjust values to match current damage 2017-12-12 22:18:41 +01:00
Arular101
2e681ba674 Increase damage and HP by 100x 2017-12-12 22:18:41 +01:00
Arular101
917d6b7627 Upgrade rules for increasing HP and damage by 100x for the RA mod 2017-12-12 20:50:27 +01:00
Arular101
261126194c Balance changes from #14471 2017-12-12 20:50:27 +01:00
Arular101
8069247726 Adjust values in custom maps and missions 2017-12-12 20:50:27 +01:00
Arular101
a429a62bf9 Adjust values to match current damage 2017-12-12 20:50:27 +01:00
Arular101
e049452f22 Increase damage and HP by 100x 2017-12-12 20:50:27 +01:00
RoosterDragon
7760c41bd9 Avoid array resizing in OpenAlAsyncLoadSound.
- Where it is accessible, use the length of the stream to presize the MemoryStream to the correct size.
- Instead of copying out the result via ToArray, grab the underlying buffer via GetBuffer and use that to create the sound source.

This avoids extraneous copying of the array containing the audio.
2017-12-12 00:01:04 +01:00
RoosterDragon
0899d02377 Avoid allocations when generating RadarSignatureCells.
The RadarWidget can supply a reusable buffer to each trait to avoid individual traits having to return new enumerables. Additionally, this allows the two traits to avoid LINQ and further allocations as they can manually enumerate and populate the buffer themselves.
2017-12-12 00:00:51 +01:00
Mustafa Alperen Seki
c69df4eedf Make subfactions use UI for their main faction
So it won't crash if a human player uses them.
2017-12-11 23:43:10 +01:00
Paul Chote
6633483d12 Increase infantry mouse bounds to improve usability. 2017-12-11 19:45:07 +01:00
Paul Chote
55b6084b60 Add a lint test for conflicting Interactable and Selectable. 2017-12-11 19:45:07 +01:00
Paul Chote
c87409ed1a Remove legacy bounds code. 2017-12-11 19:45:07 +01:00
Paul Chote
bf57eceeec Select highest priority actor when not drag selecting. 2017-12-11 19:45:07 +01:00
Paul Chote
ff5b4b15b3 Introduce IDecorationBounds to replace Actor.SelectionOverlayBounds. 2017-12-11 19:45:07 +01:00
Paul Chote
6f5d035e79 Introduce IMouseBounds and split/rework mouse rectangles.
The render bounds for an actor now include the area covered
by bibs, shadows, and any other widgets. In many cases this
area is much larger than we really want to consider for
tooltips and mouse selection.

An optional Margin is added to Selectable to support cases
like infantry, where we want the mouse area of the actor
to be larger than the drawn selection box.
2017-12-11 19:45:07 +01:00
Paul Chote
8fcc80b05a Use IRender.ScreenBounds in ScreenMap.
Traits are now required to trigger a ScreenMap update whenever they
believe that their ScreenBounds have changed.
2017-12-11 19:45:07 +01:00
Paul Chote
fa65fef4d1 Add IRenderModifier.ModifyScreenBounds to support WithShadow. 2017-12-11 19:45:07 +01:00
Paul Chote
86bfe28ade Add ScreenBounds method to IRender interface.
This method is expected to return Rectangles that cover
the region where Renderables returned by Render may exist.
2017-12-11 19:45:07 +01:00
Paul Chote
46f6263061 Update ScreenMap state in a single pass at the end of the tick. 2017-12-11 19:45:07 +01:00
Paul Chote
373aaee004 Use World.(AddTo|RemoveFrom)Maps in Immobile/Building. 2017-12-11 19:45:07 +01:00
Paul Chote
9e18ec7314 Simplify ScreenMap bounds checking. 2017-12-11 19:45:07 +01:00
Paul Chote
cdc426d162 Add IActorPreview.ScreenBounds. 2017-12-11 19:45:07 +01:00
Paul Chote
29255c8e01 Add IModel.AggregateBounds and ModelAnimation.ScreenBounds.
The bounds define the smallest Rectangle that covers all
rotations of all frames within a model sequence.
2017-12-11 19:45:07 +01:00
Paul Chote
506b677527 Add ModelAnimation.IsVisible property. 2017-12-11 19:45:07 +01:00
Paul Chote
041431d966 Add ISpriteSequence.Bounds and Animation(WithOffset).ScreenBounds.
The bounds define the smallest Rectangle that covers all frames within a sequence.
2017-12-11 19:45:07 +01:00
reaperrr
85c5259361 Fix AI crashing when trying to make parachuted harvester search map for resources while mid-air 2017-12-11 01:55:18 +01:00
reaperrr
b5ffe17d60 Make AI skip harvester orders if map has no resources 2017-12-11 01:55:18 +01:00
reaperrr
9ad0d78cdd Make the AI only consider harvesters 'idle' if last resource search failed
Otherwise the AI would consider the harvester 'idle' in too many situations.
This way, the AI now only uses its own resource search algorithm if the next resource patch is too far away for the FindResources activity to find it.
2017-12-11 01:55:18 +01:00
reaperrr
4d553900cf Move up harv.IsEmpty check in HackyAI
This is a fairly cheap check, so we should perform it before the activity checks
2017-12-11 01:55:18 +01:00
RoosterDragon
70ffa99203 Fix some uses of Exts.IsTraitEnabled. 2017-12-11 01:46:41 +01:00
RoosterDragon
9241c0f8b7 Provide only one overload of IsTraitEnabled. 2017-12-11 01:46:41 +01:00
RoosterDragon
c75a866f0d Lazily allocate sheet builder in ModelRenderer.
Avoid allocating the sheet builder each frame until it is needed. For mods that do not need to render models, this avoids allocating a large buffer and backing sheet as it will never render to the sheet. For mods that do render models, but don't need any this frame, this avoids allocating a new SheetBuilder that will not be used.
2017-12-11 01:44:21 +01:00
RoosterDragon
ec84b61316 Reduce memory required in MovementClassDomainIndex
The number of distinct domains on a map is often dozens, or at most hundreds. We can use a ushort to represent this easily, and reduce the size of the backing storage required to track domain indicies over the whole map.
2017-12-11 01:41:07 +01:00
RoosterDragon
2dd1bd2d39 Initialize map inverse cell projections with capacity 1.
This prevents the capacity being set to 4 when the first item is added. For flat maps, the inverse projection will only ever be of size 1, thus this is sufficient capacity. For isometric maps, 1 is often sufficient, we only need more near height changes where the discontinuity means multiple cells may project back. We can pay for some reallocations to expand the size in these cases.

On flat maps, this reduces the memory required by the backing array 4x.
2017-12-11 01:38:17 +01:00
RoosterDragon
8ef8c60a1a Remove allocations when enumerating sync hashes on an actor.
Exposing Actor.SyncHashes as an array allows allocation free enumeration, we just need to adjust the SyncHash type to run the hash function.
2017-12-10 13:49:52 +00:00
RoosterDragon
5338784e45 Fix bad uses of FirstEnabledTraitOrDefault on TraitInfos.
These are not traits so this method does not work. We can use EnabledByDefault on the ConditionalTraitInfo instead.
2017-12-10 13:39:24 +00:00
RoosterDragon
7a7eed4fb7 Add FirstEnabledTraitOrDefault helper method.
This avoids the allocations caused by LINQ when using traits.FirstOrDefault(Exts.IsTraitEnabled). This is important in FrozenActorLayer.RefreshState which is called very often. We apply the new helper method to all areas using the old pattern. An overload that takes an array allows arrays to be enumerated without causing allocations.
2017-12-10 13:39:24 +00:00
Paul Chote
cb670d83b3 Set PredictedStance when changing stance from Lua. 2017-12-08 01:54:55 +01:00
reaperrr
1a20dd15cb Fix D2k hightech factory sprite offsets
To match original.
2017-12-08 02:41:11 +02:00
reaperrr
2218b1a078 Fix terrain type of d2k tile #401 2017-12-08 02:41:11 +02:00
reaperrr
ce88d50d9c Fix offset and animation speed of D2k refinery smoke overlay 2017-12-08 02:41:11 +02:00
Paul Chote
7ebea32be9 Remove hardcoded settings backend. 2017-12-08 01:29:15 +01:00
Paul Chote
eb3ab682e8 Remove unused hotkeys from each mod. 2017-12-08 01:29:15 +01:00
Paul Chote
b4c5346346 Migrate hotkey linter to HotkeyManager. 2017-12-08 01:29:15 +01:00
Paul Chote
74c390d1d0 Migrate input settings to HotkeyManager. 2017-12-08 01:29:15 +01:00
Paul Chote
2f79173044 Migrate hotkey consumers to HotkeyManager. 2017-12-08 01:29:15 +01:00
Paul Chote
35a3df3736 Duplicate default hotkeys in yaml. 2017-12-08 01:29:15 +01:00
Paul Chote
f98907f42e Add HotkeyManager class. 2017-12-08 01:29:15 +01:00
Paul Chote
811427adc4 Add HotkeyReference.IsActivatedBy method. 2017-12-08 01:29:15 +01:00
Paul Chote
c4237d6a1a Rename NamedHotkey to HotkeyReference. 2017-12-08 01:29:15 +01:00
abcdefg30
6dd42f7ab1 Replace bogus ROF values in missions 2017-12-07 20:44:41 +02:00
RoosterDragon
62ab6ae6f1 OccupiedCells and TargetableCells must return arrays, not just enumerables.
This allows callers to efficiently enumerate these returned collections without the allocation and overhead imposed by the IEnumerable interface. All implementations were already returning arrays, so this only required a signature change.
2017-12-07 20:39:30 +02:00
FrameLimiter
da036c5728 Fixes EditorTilesetFilter for T04 cactus 2017-12-05 21:32:28 +01:00
Smittytron
3d8ab75faf RA Balance changes (December 2017) 2017-12-05 12:38:13 +01:00
Paul Chote
9d2935935c Add a debug visualization for screen map rectangles. 2017-12-04 23:10:23 +01:00
Paul Chote
0f512088d2 Unify ingame-debug.yaml. 2017-12-04 23:10:23 +01:00
Paul Chote
1a1c6368fc Fix ScreenMap handling of flipped sprites. 2017-12-04 03:54:23 +02:00
Arular101
1b94378f71 Disable the new build radius lobby option for minigames 2017-12-02 20:26:23 +01:00
Mustafa Alperen Seki
f4086e4fe0 Update one of the dead worm tiles 2017-12-02 05:18:19 +01:00
Pavel Penev
77ae802b9c Added D2k asset installer d2k-e 2017-12-02 00:08:50 +01:00
Pavel Penev
8f5787a57f Added D2k asset installer d2k-d 2017-12-02 00:08:50 +01:00
Pavel Penev
45a2f5e6c1 Added D2k asset installer d2k-c 2017-12-02 00:08:50 +01:00
Pavel Penev
649971d517 Renamed D2k asset installers to systematize namings 2017-12-02 00:08:50 +01:00
Pavel Penev
450cbeea96 Added an extra bit of installer data to Install.log 2017-12-02 00:08:50 +01:00
Pavel Penev
e09d502ce1 Make mod launchers run the game inside a child launcher instead of via OpenRA.Game.exe
This also removes the need to manually set application icons on Windows.
2017-12-02 00:05:57 +01:00
Pavel Penev
bd67bd24c0 Pull out game loop initialization from OpenRA.Program into OpenRA.Game and exception handling into its own class under OpenRA.Game/Support 2017-12-02 00:05:57 +01:00
abcdefg30
f249554b4f Fix swapped waypoint naming in Survival 01 2017-11-30 02:00:43 +01:00
abcdefg30
53dabfeb49 Move all waypoints of Survival 01 inside the map bounds 2017-11-30 02:00:43 +01:00
abcdefg30
3a94312fcd Move all waypoints of Evacuation inside the map bounds 2017-11-30 02:00:43 +01:00
abcdefg30
616ee6cce4 Remove a misplaced camera actor 2017-11-30 02:00:43 +01:00
RoosterDragon
6a97502e09 Reuse buffers when loading Xcc databases.
We can reuse the list as a buffer when reading strings to avoid throwaway allocations, which will reduce GC pressure during loading.
2017-11-30 02:16:51 +02:00
reaperrr
c48ddbdfa5 Fix Mammoth Mk2 render bounds
And polish trait internals a little.
2017-11-29 11:39:24 +02:00
reaperrr
d21992130a Fix TS harvester render bounds 2017-11-29 11:39:24 +02:00
Paul Chote
4994716cf7 Ignore empty children when aggregating EventBounds. 2017-11-27 16:09:34 +02:00
dsimmons87
65a2410738 Fixed bug in map Retry Install
If the download failed, the map status would be MapStatus.DownloadError,
which would cause the Install method to return immediately. I've updated
the Install method now to account for MapStatus.DownloadError.
2017-11-27 15:18:33 +02:00
Paul Chote
8fea476a0d Fix NRE when ProvidesPrerequisite is defined on the player actor. 2017-11-26 19:51:46 +01:00
abcdefg30
ed67cea852 Fix a crash in Disguise.cs when order.TargetActor is null 2017-11-26 18:41:53 +01:00
abcdefg30
c83dda4ce7 Initialize AsActor as self.Info 2017-11-26 18:41:53 +01:00
abcdefg30
4c707ad6a6 Fix WithDisguisingInfantryBody crashing when losing the disguise 2017-11-26 18:41:53 +01:00
Arular101
02d57c5fee Soviet05 Radar Reveal
Added beacon and message
2017-11-26 17:26:57 +01:00
Mustafa Alperen Seki
2043576857 Add Modified Outpost tooltip to Ordos4. 2017-11-26 16:53:17 +01:00
Mustafa Alperen Seki
15b77f8d91 Add Harkonnen 5 2017-11-26 16:53:17 +01:00
Paul Chote
b898b5001a Rename AttackBase.IsAttacking to IsAiming to make its uses and assumptions clear. 2017-11-26 15:58:00 +01:00
Paul Chote
ea05221180 Count AttackStatus.NeedsToTurn as valid for AttackBase.IsAttacking. 2017-11-26 15:58:00 +01:00
Marwan
8a38c6ef23 WithTextDecoration Fix 2017-11-26 15:35:50 +01:00
Mustafa Alperen Seki
43d100246f Remove ^TowerHusk: 2017-11-26 15:26:44 +01:00
Mustafa Alperen Seki
73134b0417 Rename D2K vehicle husks 2017-11-26 15:26:44 +01:00
Smittytron
d5622ae1ca Fix TD cliff tiles 29-31 2017-11-26 15:17:38 +01:00
Arular101
3ed18f51e3 Fix V2 Rocket Launcher facings
Now with AmmoPool

V2 changes for Fort Lonestar
2017-11-26 15:01:43 +01:00
Paul Chote
855042894c Fix bogus cached PowerState for map placed actors. 2017-11-26 03:37:33 +01:00
reaperrr
5ec3ad0957 Fix turrets following target even if AttackTurreted is disabled or paused 2017-11-25 03:55:56 +02:00
reaperrr
e215c5019e Fix regressions introduced by #13998 2017-11-25 03:55:56 +02:00
reaperrr
6e59fe3bc2 Adapt TS to removal of IsDisabled checks from Attack* traits 2017-11-25 03:55:56 +02:00
reaperrr
456d32f3eb Make Attack* traits PausableConditional and replace IsDisabled with IsTraitDisabled checks 2017-11-25 03:55:56 +02:00
reaperrr
68487d1197 Replace turret IsDisabled check with AT.IsTraitDisabled check 2017-11-25 03:55:56 +02:00
reaperrr
cea2658f31 Remove IsDisabled from AffectsShroud traits
Makes them only disableable via conditions.
2017-11-25 03:55:56 +02:00
reaperrr
00cd7a8da5 Adapt TS to removal of actor IsDisabled check in Cloak 2017-11-25 03:55:56 +02:00
reaperrr
ede6d5a57d Remove Actor.IsDisabled check from Cloak
Makes cloaking only disableable via conditions.
2017-11-25 03:55:56 +02:00
Smittytron
9c729c77bc Add Real tough guy difficulty to Allies04 2017-11-24 00:35:39 +01:00
Paul Chote
7c901c27f1 Generate a versioned tarball during package creation. 2017-11-22 22:39:08 +01:00
Mustafa Alperen Seki
8ce460ad8c Fix badgers showing owner row on RA mod. 2017-11-22 18:24:50 +01:00
reaperrr
56b6aabbb8 Use new IAutoRenderSize for determining actor render bounds 2017-11-21 01:00:09 +02:00
reaperrr
2501a93b87 Remove superflous AutoSelectionSize from TS high bridge placeholder
It defines CustomSelectionSize, so AutoSelectionSize is redundant/wrong here.
2017-11-21 01:00:09 +02:00
reaperrr
5a596d27c9 Switch RenderNameTag to use SelectionOverlayBounds 2017-11-21 01:00:09 +02:00
reaperrr
6711af63eb Move SelectionBarsRenderable to Mods.Common 2017-11-21 01:00:09 +02:00
reaperrr
be290cfabd Split Actor.Bounds into RenderBounds and SelectableBounds
Additionally, internally renamed VisualBounds to SelectionOverlayBounds to avoid confusion with RenderBounds.

This step was necessary to prevent actors with selectable area smaller than their graphics to be removed too early from ScreenMap even though part of the graphics should still be visible.
RA cruisers were a prime example, but to a lesser extent several other actors were affected as well.

This separation also serves as preparation to determine the final RenderBounds from multiple source bounds later, to fix the remaining ScreenMap issues (building 'bibs', aircraft shadows).
2017-11-21 01:00:09 +02:00
Mustafa Alperen Seki
ca1448c7ba Add Support of Types for GivesBuildableArea 2017-11-20 16:17:13 +02:00
Paul Chote
4cbc2ee6f3 Add support for custom sell cursors. 2017-11-19 23:40:33 +01:00
Paul Chote
5030a2257e Delegate cursor selection to GlobalButtonOrderGenerator subclasses. 2017-11-19 23:40:33 +01:00
Arular101
586dd6541b More Changes 2017-11-19 23:23:24 +01:00
Arular101
9c61f524f0 Tooltip fixes 2017-11-19 23:23:24 +01:00
Paul Chote
10fb487abf Update macOS launcher/dependencies to latest tag.
This supports/forces the 64 bit mono runtime, and
is the first version that compiles all native code
using travis-ci.
2017-11-19 16:55:44 +00:00
Andre Mohren
25968ee66f Allow WithIdleOverlayInfo to render while the actor is being build. 2017-11-19 16:52:59 +00:00
Mustafa Alperen Seki
7b12cf887d Add Harkonnen 6b 2017-11-19 16:21:42 +01:00
Mustafa Alperen Seki
01c1e08bd8 Add Original Remap Palette for RA Mod Campaign
and Shellmap
2017-11-19 15:08:42 +01:00
Arular101
3e5829355d Small override fix mission Intervention 2017-11-19 13:48:42 +00:00
abcdefg30
48df21c4a5 Fix the insertion transport not being removed in allies03b
The exit was outside of the map's border
2017-11-19 14:42:37 +01:00
abcdefg30
8654bcc244 Fix the FreePrisoners objective being completed without freeing prisoners 2017-11-19 14:42:37 +01:00
abcdefg30
dddc5dc80f Capturing also fires OnRemovedFromWorld 2017-11-19 14:42:37 +01:00
abcdefg30
3e3d98c735 Resolve a TODO in allies03a.lua 2017-11-19 14:42:37 +01:00
Arular101
f16f9b8ae3 Allies06a Radar Reveal
Added beacon and message
2017-11-19 14:32:33 +01:00
Mustafa Alperen Seki
29ec16f15d Some changes to crate unit bonuses 2017-11-19 12:58:34 +00:00
FrameLimiter
1e94ded9dd Changed Warhead to Warhead@1Dam 2017-11-19 12:55:28 +00:00
FrameLimiter
edd9e39dcd Removed redundent LaunchAngle override on 8Inch 2017-11-19 12:55:28 +00:00
FrameLimiter
cfe1a8cd02 Removed the redundant overrides 2017-11-19 12:55:28 +00:00
FrameLimiter
e6f73dc68f Updated weapon trait names for drop-zone-w mission 2017-11-19 12:55:28 +00:00
FrameLimiter
c70efd4a14 Fixes PortaTesla Warhead override for drop-zone-tikiaki 2017-11-19 12:49:43 +00:00
FrameLimiter
b7c3bc4e25 Fixes PortaTesla Warhead override for drop-zone 2017-11-19 12:49:43 +00:00
RoosterDragon
471d7ae40d Run GC more during loading.
This helps reduce the peak GC size by trimming temporary loading garbage a bit more often, rather than just doing it at the end of loading.
2017-11-19 12:42:25 +00:00
RoosterDragon
a71a5cc71d Reduce the size of the sheets created for fonts.
- A 512x512 sheet is about half full after precaching and some usage, but uses 16x less memory than the default 2048x2048 sheet. This saving occurs twice as we maintain a managed buffer for this sheet.
- Only precache smaller fonts, as the larger fonts are less used and take up more space than is worthwhile.
- Only precache in white, as red is largely unused.
2017-11-19 12:40:04 +00:00
RoosterDragon
713cdaef5d Reduce allocations needed by ReplayConnection.
Packets from each chunk are now saved directly in an array, removing the overhead of a list. Additionally, a list is reused as a buffer for decoding packets into, preventing a new buffer from needing to be allocated for each chunk.
2017-11-19 12:11:38 +00:00
FrameLimiter
f4502e9aa7 Map editor fix for misplaced T09.Husk 2017-11-19 01:32:52 +01:00
FrameLimiter
a5d7218dee Removed TilesetOverride for desert tree husk t08 2017-11-19 01:29:30 +01:00
FrameLimiter
773a619d2d Palette fix for desert tree husks 2017-11-19 01:26:13 +01:00
Smittytron
20a25c2f5e TD disable DetectCloaked on low power 2017-11-18 16:06:25 +01:00
Smittytron
070c54d069 Disable DetectCloaked on low power Tesla Coil 2017-11-17 13:42:51 +01:00
abcdefg30
2836cec0a3 Fix reinforcements in Nod06a not playing a notification 2017-11-17 13:28:10 +01:00
Mustafa Alperen Seki
f35f6c0813 Move Sprite handling from Disguise to WithDisguisingInfantryBody 2017-11-15 15:48:24 +00:00
Mustafa Alperen Seki
ecdfcda43e Add DisguisedAsCondition 2017-11-15 15:48:24 +00:00
Arular101
3efce265a8 Reduce barrel explosion damage vs wood armor 2017-11-15 15:17:08 +00:00
Smittytron
9d45528496 Remove Airstrike from nod06a Normal Difficulty 2017-11-15 14:47:55 +00:00
Arular101
8bec765925 Campaign file changes and cleanup
Remove NoAutoTarget
2017-11-15 15:43:44 +01:00
Arular101
fd9cd78810 Fix spy voices 2017-11-15 15:20:34 +01:00
Mustafa Alperen Seki
bb600620a9 Add ShowTicks to InfiltrateForCash 2017-11-15 15:16:39 +01:00
Forcecore
c762453607 (External)Capturable are now conditional 2017-11-15 13:54:15 +02:00
reaperrr
a7620c97f0 Some internal renamings in power-related traits 2017-11-13 03:09:05 +02:00
reaperrr
7f5f2eac6f Don't scale RepairIndicator with zoom 2017-11-13 03:09:05 +02:00
reaperrr
d328b9b7d8 Adapt RA to low power/power-down refactor 2017-11-13 03:09:05 +02:00
reaperrr
bb790b83e6 Adapt TD to low power/power-down refactor
Removed CanPowerDown from TD buildings.

Manual power-down is intentionally not supported by the in-game UI, the remaining CanPowerDown entries were effectively bit-rot.
2017-11-13 03:09:05 +02:00
reaperrr
e0e1f56af5 Adapt D2k to low power/power down refactor 2017-11-13 03:09:05 +02:00
reaperrr
7537daf74e Adapt TS to power-related trait refactorings 2017-11-13 03:09:05 +02:00
reaperrr
99edc71c54 PowerDown/low power refactor upgrade rule 2017-11-13 03:09:05 +02:00
reaperrr
917c6884ed Make WithSpriteBody a pausable trait
Allowing to drop the PauseAnimationWhenDisabled property (in favor of using PausOnCondition).
2017-11-13 03:09:05 +02:00
reaperrr
786a0eb07f Refactor PowerManager and RequiresPower to use conditions
Instead of Actor.IsDisabled.
Added INotifyPowerLevelChanged interface to do so as efficiently as possible.
2017-11-13 03:09:05 +02:00
reaperrr
6c02e3f2b7 Refactor CanPowerDown to provide a condition instead of triggering IsDisabled 2017-11-13 03:09:05 +02:00
Pavel Penev
8d7eb0bc47 Fix order deserialization when there is no indended order subject 2017-11-13 00:37:44 +01:00
reaperrr
d602ec6485 Rename SelfReloads to AutoReloads 2017-11-12 19:48:06 +00:00
reaperrr
18c371d702 Changed AmmoCondition to support condition stacking 2017-11-12 19:48:06 +00:00
reaperrr
9dabc9d672 Upgrade rule for adapting to removal of Armament.OutOfAmmo 2017-11-12 19:48:06 +00:00
reaperrr
8b7a71685c Remove AmmoPool-awareness from Armament 2017-11-12 19:48:06 +00:00
reaperrr
ded92f394c Upgrade rule for AmmoPool.SelfReloads removal 2017-11-12 19:48:06 +00:00
reaperrr
6f95080aa4 Add ReloadAmmoPool and adapt AmmoPool
Refactored and simplified Rearm activity.
Uses local Reload now.

Removed AmmoPool.SelfReloads.
2017-11-12 19:48:06 +00:00
reaperrr
a017018bee Fix official mods Aircraft.RearmBuildings setups
Only aircraft that a) have an AmmoPool and b) don't auto-reload should define RearmBuildings.
2017-11-12 19:48:06 +00:00
Forcecore
d49c98ce18 Move activity implementation now uses ChildActivity 2017-11-12 19:46:05 +01:00
abc013
3092927a7f Added a visual explosion to e4 2017-11-12 18:34:03 +00:00
Smittytron
3ce6cac9f3 Clarify gdi07 Secondary Objective 2017-11-12 18:29:54 +00:00
Arular101
fdac023a8d Rename V2 Rocket to V2 Rocket Launcher 2017-11-12 18:26:46 +00:00
Andrii Yukhymchak
f4dbf55510 Chrono into map edge fix 2017-11-12 18:23:17 +00:00
Smittytron
e65ffc8be2 Change remaining Vulcan vs Light values to 50 2017-11-12 18:18:11 +00:00
Forcecore
ef878c6aeb Introduced CaptureTypes for TransformOnCapture 2017-11-12 18:14:30 +00:00
Mustafa Alperen Seki
3aa91a08cc Fix Fake Naval Yard's Name 2017-11-12 12:30:28 +00:00
Arular101
a8d27257eb Remove custom aud for cruiser in shellmap 2017-11-11 11:21:27 +01:00
Mustafa Alperen Seki
dadfc0b09c Fix AutoTargetPriority traits of ra infantry 2017-11-09 22:38:52 +02:00
abcdefg30
0377c8ae20 Replace bogus values in the Fort Lonestar rules 2017-11-09 22:24:14 +02:00
abcdefg30
eac9286b78 Fix tiling errors on some RA maps 2017-11-09 09:54:59 +01:00
Mustafa Alperen Seki
ba50fbba18 Dont show refund text if Sellable: trait is disabled. 2017-11-05 16:22:42 +02:00
Forcecore
4c78a05081 ADD GrantConditionOnAttack Trait
Useful for making Gattling weapons (Yuri's Revenge and C&C Generals) or
Boris (RA2) / Natasha (RA3) call for airstrike.
2017-11-04 17:18:24 +01:00
Mustafa Alperen Seki
8914227811 Add ShowTicks to sellable 2017-11-04 17:16:26 +01:00
Paul Chote
a3636c69d9 Update macOS launcher with space-in-filename metadata registration fix. 2017-11-04 16:23:41 +01:00
Paul Chote
faf2634e3d Upgrade mod rules. 2017-11-04 16:08:58 +01:00
Paul Chote
d2f0e5ac2d Replace Allow(Allies|Neutral|Enemies) with ValidStances enum. 2017-11-04 16:08:58 +01:00
Paul Chote
1caf982c1f Support multiple capture types on Capturable. 2017-11-04 16:08:58 +01:00
Mustafa Alperen Seki
77feb3f76d Add GPS Dots for Comm Center and Forward Command 2017-11-03 13:36:40 +01:00
Paul Chote
4fe7ffed85 Simplify and fix code quality in GpsDot. 2017-11-03 09:56:00 +01:00
Paul Chote
1376ad674e Remove Player.CanViewActor and .CanTargetActor. 2017-11-03 09:56:00 +01:00
Paul Chote
47634b25f9 Remove IFogVisibilityModifier. 2017-11-03 09:56:00 +01:00
Paul Chote
4dba9f5b88 Add RevealDisguiseType.Move. 2017-11-03 09:30:50 +01:00
Paul Chote
7afd219742 Expose Disguise ValidStances and TargetTypes to yaml. 2017-11-03 09:30:50 +01:00
Paul Chote
c9c7c5744c Explicitly implement interfaces in Disguise trait. 2017-11-03 09:30:50 +01:00
Mustafa Alperen Seki
bfe540cd8b Add Harkonnen 6a 2017-11-03 08:32:04 +01:00
abcdefg30
025d5c8d05 Fix the "Secure the convoy's path" objective being completed without securing a path 2017-11-03 07:54:48 +01:00
Mustafa Alperen Seki
817449c018 Fix Inconsistency with AcceptsDeliveredCash on RA mod 2017-11-01 20:41:00 +01:00
Andrii Yukhymchak
636a9a74a1 Font Crash gracious fallback 2017-11-01 18:50:15 +01:00
kosti1
6a750d7a65 Added buildradius checkbox to lobby options 2017-11-01 18:18:41 +01:00
Paul Chote
b8326bfead Fix crash with AllyRepair on dead structures. 2017-10-26 18:48:41 +03:00
Paul Chote
5f9a67ed87 Migrate frozen actors from ExtraData to Target. 2017-10-26 18:48:41 +03:00
Paul Chote
29c423772f Serialize order Target directly instead of TargetActor/TargetCell. 2017-10-26 18:48:41 +03:00
Andrii Yukhymchak
6e1c1eaa94 Submarine fix 2017-10-26 01:48:36 +02:00
Paul Chote
77a7453347 Improve WidgetUtils.WrapText performance on long lines. 2017-10-26 01:42:16 +02:00
Andre Mohren
88c94ee841 Allow remaining time to be hidden in ProductionPaletteWidget. 2017-10-26 01:31:32 +02:00
Andre Mohren
aadfcdac66 Allow RallyPoint cursor to be defined via Yaml 2017-10-26 01:28:42 +02:00
Andre Mohren
cfeeb6563e RallyPointIndicator now optional 2017-10-26 01:21:29 +02:00
abcdefg30
cba7c60f6f Fix the "Unit Ready" notification playing erroneously 2017-10-25 22:43:35 +01:00
Paul Chote
cfac996438 Generalize factionVariant to a TypeDictionary of Inits. 2017-10-22 03:32:21 +03:00
rob-v
315cc966f4 Clear team in lobby for spectators 2017-10-21 14:12:11 +01:00
Paul Chote
5540eb1f2f Specify C# 5 as the language version in the Makefile too. 2017-10-19 14:18:03 +02:00
RoosterDragon
3a9abda441 Specify C# 5 as the language version used in all projects.
Attempts to use features from a new version will generate compile errors (on Roslyn and possibly other compilers), preventing accidental adoption of new language features.
2017-10-19 14:18:03 +02:00
Pi Delport
7da7764a65 (Update my name) 2017-10-18 08:03:57 -05:00
Paul Chote
9bdedda43a Make float2 immutable. 2017-10-17 15:46:07 +02:00
Paul Chote
69b4b541d2 Fix mutable use of float2 in SpriteFont. 2017-10-17 15:46:07 +02:00
Paul Chote
bee3f33f5f Remove long dead ResourceBarStyle.Bevelled code. 2017-10-17 15:46:07 +02:00
Matthias
cdedd1c7ac Some packages have been renamed in openSUSE
tested with openSUSE Leap 42.3
2017-10-16 15:35:06 +02:00
Matthias
7675c87593 Nuget dependency was dropped in #13912 2017-10-16 15:35:06 +02:00
Sam Gleske
80ce6d9988 Update package-all.sh
- Remove subshells and instead use bash parameter expansion.
- Utilize a function with a subshell to make adding additional packages easy.
2017-10-16 15:12:42 +02:00
Matthias Mailänder
ebb982789e Display a blocked cursor when not allowed to MoveIntoShroud. 2017-10-16 14:38:26 +02:00
Matthias Mailänder
b27289106d Don't give an okay voice when not allowed to move into shroud. 2017-10-16 14:38:26 +02:00
Matthias Mailänder
d4340fa799 Add a MoveIntoShroud switch to AttackMove as well. 2017-10-16 14:38:26 +02:00
reaperrr
db2d432c39 Fix Helis facing target center instead of attacked position 2017-10-16 14:25:03 +02:00
reaperrr
95dbcc1273 Update upgrade rule dates
These were merged after the release preparation branch for release 20171014 was created.
2017-10-16 14:22:11 +02:00
Smittytron
5471a3e729 Assign Gunboat and Sub to Techlevel Low 2017-10-15 23:15:43 +02:00
Paul Chote
d967c564a2 Remove TargetActor and TargetLocation from order issuing. 2017-10-15 19:07:46 +02:00
Paul Chote
4896a90b8d Add plumbing to issue orders against a generic Target. 2017-10-15 19:07:46 +02:00
Paul Chote
19b2c33514 Remove unused code from AttackOrderPower. 2017-10-15 19:07:46 +02:00
Andre Mohren
10740de6e9 DefaultSpriteSequence now allows derived classes to enhance sprites. 2017-10-14 19:50:05 +02:00
Raffael Zica
f2b5040d30 YamlException is now thrown if WeaponInfo can not be found in Ruleset.Weapons
Removed invalid spacing at the end of the line 36 in ThrowsShrapnel

Prevented NullReferenceException in cases where weapons aren't optional
2017-10-14 14:12:08 +02:00
abc013
c8b2a7dc04 Changed Aircraft explosion 2017-10-14 13:59:59 +02:00
abcdefg30
7ccf41be77 Catch invalid default game speeds while loading the ruleset 2017-10-14 13:54:26 +02:00
gkaretka
97e0f17e15 Add notification sound when paratroopers land 2017-10-14 13:40:53 +02:00
abcdefg30
a8c6d12c43 Fix the map editor crashing on invisible actors 2017-10-14 13:35:33 +02:00
Paul Chote
0e3de71036 Add line limit to global chat. 2017-10-14 13:10:27 +02:00
Paul Chote
ef43d8a86f Add missing StringComparison to IngameChatLogic. 2017-10-14 13:10:27 +02:00
Paul Chote
75d4062698 Limit chat messages to 2500 characters. 2017-10-14 13:10:27 +02:00
Paul Chote
249e813444 Fix submarine autotarget behaviour. 2017-10-08 20:11:30 +02:00
Paul Chote
e3e5dc1b49 Fix Defend stance auto-targeting naval structures. 2017-10-08 20:11:30 +02:00
Paul Chote
f425cbe0a4 Fix double-chronoshift return location exploit. 2017-10-08 20:04:36 +02:00
Paul Chote
f96c2710cd Remove directory creation side effect from Platform.SupportDir. 2017-10-08 19:53:10 +02:00
abcdefg30
4bca0c4c24 Fix devastators being carryable while overloading 2017-10-08 18:48:28 +01:00
abcdefg30
49e1af7f3f Fix the devastator lint warnings 2017-10-08 18:48:28 +01:00
abcdefg30
0727f7e9ff Only lint system maps 2017-10-08 18:23:25 +01:00
abcdefg30
5fdb828b60 Log which maps are processed by UpgradeModCommand
Upgrading the maps can take quite some time,
and at the moment you are left without information if something is happening.
2017-10-08 18:23:25 +01:00
abcdefg30
98170b0452 Use MapCache.LoadMapsWithoutCaching in UpgradeModCommand 2017-10-08 18:23:25 +01:00
abcdefg30
27345c1f6a Fix map linting crashing for not existing directories 2017-10-08 18:23:25 +01:00
abcdefg30
24c293e821 Fix Cargo force-requiring ConditionManager 2017-10-08 13:32:22 +01:00
abcdefg30
2366490fa0 Add an domain index check 2017-10-08 13:08:51 +02:00
abcdefg30
f48ba0ff86 Find alternative landing spots for blocked reinforcements 2017-10-08 13:08:51 +02:00
DeadlySurprise
80bf36e1a8 Deprecate Actor.IsDisabled 2017-10-08 00:12:15 +02:00
abc013
fb74c8351f Change Road -> Bridge on bridge tiles 2017-10-07 10:27:18 +02:00
reaperrr
8533debc44 Require explicit INotifyAddedToWorld and INotifyRemovedFromWorld 2017-10-07 10:17:11 +02:00
reaperrr
8ec3d5ddb8 Require explicit ITickRender 2017-10-07 10:17:11 +02:00
reaperrr
0ce3c113e1 Require explicit ITargetableCells 2017-10-07 10:17:11 +02:00
reaperrr
7ca9679b34 Require explicit ITargetablePositions 2017-10-07 10:17:11 +02:00
Andre Mohren
edeb980f5b Implemented a percentual chance to play the ImpactSound to CreateEffectWarhead 2017-10-07 10:15:22 +02:00
Matthias Mailänder
5b16bb952f Count all zero images as valid. 2017-10-07 10:09:35 +02:00
Matthias Mailänder
a8288a38f8 Allow sprites with empty frames to pass the ShpTS checks. 2017-10-07 10:09:35 +02:00
Matthias Mailänder
d7323e07cc Avoid modData.MapCache during lint checks 2017-10-07 10:08:53 +02:00
Mustafa Alperen Seki
2102fad2b5 Add CashTricklerBar 2017-10-06 23:02:02 +02:00
Mustafa Alperen Seki
a4b0bf5c52 Make CashTrickler PausableConditional 2017-10-06 23:02:02 +02:00
Mustafa Alperen Seki
049096efd7 Add InitialDelay to CashTrickler 2017-10-06 23:02:02 +02:00
abc013
dfe2076826 Fix passive vehicles can become ranks 2017-10-06 22:24:24 +02:00
abc013
f84699454f Fix some tiling errors in the map Haos Ridges [RA] 2017-10-06 22:04:32 +02:00
abc013
8c387c3bcf Fix a tile error in map Asymetric Battle [RA] 2017-10-06 22:02:39 +02:00
Andre Mohren
4e45747b41 Game no longer crashes if no ResourceLayer is used. 2017-10-06 21:57:57 +02:00
Matthias Mailänder
d64a9e6afc Add Devastator reactor overload upon deployment 2017-10-06 18:14:17 +02:00
Matthias Mailänder
370ee0841f Add GrantsCondition to KillsSelf 2017-10-06 18:14:17 +02:00
Forcecore
18c6fe09db Sound and Animation support for DonateCash 2017-10-06 18:07:18 +02:00
Paul Chote
d170262e09 Fix yaml merging of nodes that define their own overrides. 2017-10-06 17:54:11 +02:00
Paul Chote
18f6317560 Add a unit test for merging duplicated yaml nodes. 2017-10-06 17:54:11 +02:00
abcdefg30
178e7afd30 Remove a tiny bit of duplication on the TS walls 2017-10-06 15:38:53 +02:00
Paul Chote
4aee91cd47 Remove unnecessary trait lookups when cloaking/decloaking. 2017-10-06 10:09:12 +02:00
gkaretka
cf4c16b6bb Add .idea to .gitignore 2017-10-04 11:20:19 +02:00
abc013
b55ae1dcf0 Fixed TS Hand of Nod lights 2017-10-03 13:52:06 +02:00
Paul Chote
a1347a7f32 Populate MapLocations from LoadMaps.
This ensures that the map locations won't be created by the utility
but means that LoadMaps must be called before attempting to use MapLocations.
2017-09-30 17:37:52 +02:00
Paul Chote
64afe4cfde Display (attack|assault)move-blocked cursor outside map bounds.
This makes them consistent with the regular move order.
2017-09-30 14:33:40 +02:00
Paul Chote
e93183f0eb Clamp out of bounds attack-move orders to the edge of the map. 2017-09-30 14:33:40 +02:00
Paul Chote
36af2107d6 Fix the attack move order generator activating with an empty selection. 2017-09-30 14:33:40 +02:00
Paul Chote
d8f53a9ccd Fix crash when selection contains destroyed actors. 2017-09-30 14:33:40 +02:00
Paul Chote
fa8ab19dfd Fix global chat history buffer timestamps. 2017-09-28 15:09:12 +02:00
reaperrr
9aaf800bca Require explicit INotifyActorDisposing 2017-09-28 13:14:08 +02:00
reaperrr
5026dfe5d3 Require explicit INotifyCreated 2017-09-28 13:14:08 +02:00
reaperrr
6f790938d0 Require explicit IGameOver 2017-09-28 13:14:08 +02:00
reaperrr
2b391d5724 Require explicit ICreatePlayers 2017-09-28 13:14:08 +02:00
reaperrr
d7c2c6afc4 Require explicit INotifySelected and INotifySelection 2017-09-28 13:14:08 +02:00
reaperrr
a8e6cd2604 Require explicit IRenderOverlay 2017-09-28 13:14:08 +02:00
Paul Chote
69daa7e7cc Don't draw mine overlay for single-cell fields. 2017-09-27 21:00:56 +02:00
Paul Chote
a0e028ee0e Fix mine field overlay extending to map corner for the first tick. 2017-09-27 21:00:56 +02:00
Paul Chote
cc17b7419a Add voice feedback when issuing a mine deploy order. 2017-09-27 21:00:56 +02:00
Paul Chote
1d6cd81690 Add mine deployment to the command bar. 2017-09-27 21:00:56 +02:00
Jean-Rémy Buchs
2b96c2ed78 Add RequiresCondition to ProvidesPrerequisite 2017-09-24 14:56:47 +01:00
rob-v
c9b4568117 Add Statistics options hotkeys 2017-09-24 15:32:02 +02:00
Forcecore
b86d632c8c Land activity now lets the actor to land midair
Midair, at the altitude of the target actor.
2017-09-24 15:03:20 +02:00
Matthias Mailänder
205c947670 Settings documentation is no longer aimed at server admins. 2017-09-24 14:18:20 +02:00
Matthias Mailänder
030c942f73 Describe SendSystemInformation so people know how to opt-out. 2017-09-24 14:18:20 +02:00
Matthias Mailänder
da02620c4e Add field description from current Settings wiki entry. 2017-09-24 14:18:20 +02:00
Matthias Mailänder
2cf102d81a Remove trailing spaces. 2017-09-24 14:18:20 +02:00
Matthias Mailänder
95278b1f07 Don't add the launch arguments to the settings documentation. 2017-09-24 14:18:20 +02:00
Matthias Mailänder
faad941714 git ignore the auto-generated settings documentation 2017-09-24 14:18:20 +02:00
Matthias Mailänder
7549abc516 Wiki publish the auto-generated settings documentation. 2017-09-24 14:18:20 +02:00
Matthias Mailänder
1d8a50cdab Add build script support for the settings documentation. 2017-09-24 14:18:20 +02:00
Matthias Mailänder
0018bf3063 Add start and stop repair overlay animation support. 2017-09-24 11:43:49 +01:00
RoosterDragon
7160c8a1a9 Allow multiple VocFormat streams.
VocFormat.GetPCMInputStream now returns independent streams, allowing multiple instances of the same source to be streamed.
2017-09-24 11:23:39 +01:00
RoosterDragon
7ed769421e Providing streaming WavFormat data.
WavFormat.GetPCMInputStream now returns data that is streamed, rather than a MemoryStream.
2017-09-24 11:23:39 +01:00
reaperrr
4ae92a5c22 Only add partitioned effects to ScreenMap if (current) bounds are valid
This serves to avoid adding effect where either width or height is 0.
2017-09-24 10:54:58 +01:00
reaperrr
593e86325b Fix SpriteEffect not updating ScreenMap 2017-09-24 10:54:58 +01:00
reaperrr
eea14ec922 Fix DepthCharge dealing no damage to surfaced subs 2017-09-23 20:06:23 +01:00
reaperrr
eb3b68e24a Fix DepthCharge not showing an explosion when hitting emerged subs 2017-09-23 20:06:23 +01:00
reaperrr
1d402d4f8b Fix submerged sub vulnerability to most weapons 2017-09-23 20:06:23 +01:00
Andre Mohren
800f6adc21 Made WithSpriteTurret.TurretOffset protected virtual to be overridden by mod traits. 2017-09-22 13:29:15 +02:00
Matthias Mailänder
d17e414648 Fix the overlay to actor rule for crates 2017-09-22 13:04:29 +02:00
Matthias Mailänder
44cfa793df Don't import veinholedummy and correct it's index
as it is a Westwood hack we don't need to immitate.
There are already better ways to limit vein growth.
2017-09-22 13:04:29 +02:00
Paul Chote
48a018d994 Fix cheats reenabling OneShot support powers. 2017-09-19 17:53:53 +02:00
Matthias Mailänder
3af0b1a7a0 Remove PlayerPaletteFromCurrentTileset. 2017-09-17 16:20:38 +02:00
RoosterDragon
3b4904775a Remove OpenAlStreamingSound.
Whilst the implementation appears to work most of the time, it sometimes stops playing audio mid-track. This could be an implementation issue, or bugs in the underlying streaming APIs of the OpenAL library. Either way, it is not currently reliable enough to be used.
2017-09-17 15:50:49 +02:00
RoosterDragon
94942cb140 Create OpenAlAsyncLoadSound.
This loads the sound inside a task, then begins playing it, avoiding blocking the UI thread. Unlike OpenAlStreamingSound it does not stream the sound from disk, rather, it loads the entire sound into memory and plays it in one go.
2017-09-17 15:50:49 +02:00
Paul Chote
f4c2b36778 Fix height calculations in custom terrain layers. 2017-09-17 15:35:40 +02:00
reaperrr
c3ece99796 Spatially partition SatelliteLaunch and GpsSatellite effects 2017-09-17 12:52:04 +01:00
reaperrr
be370cb855 Spatially partition NukeLaunch effect 2017-09-17 12:52:04 +01:00
reaperrr
9aa861eca9 Spatially partition CrateEffect 2017-09-17 12:52:04 +01:00
reaperrr
46132ed5c6 Spatially partition SpriteEffect 2017-09-17 12:52:04 +01:00
Matthias Mailänder
1aebf9857c Add support for only rendering effects inside screen bounds 2017-09-17 12:52:04 +01:00
Matthias Mailänder
8ca43e3d6b Import map Hidden Valley 2017-09-17 11:45:45 +01:00
abcdefg30
1f6b9a7638 Add missing wall tiles to the interior tileset 2017-09-16 17:31:15 +02:00
reaperrr
32df83d3c4 A few more misc explicit interface changes
By-products of making ITick require explicit implementation.
2017-09-16 15:51:37 +02:00
reaperrr
28e1f391e0 Make ITick require explicit implementation 2017-09-16 15:51:37 +02:00
reaperrr
85e60ef77f More misc explicit interface implementations
By-product from making ITick explicit in various places.
2017-09-16 15:51:37 +02:00
reaperrr
03c3a5f310 Make ITick implementations explicit in OpenRA.Game 2017-09-16 15:51:37 +02:00
reaperrr
ec354f89cd Make ITick implementations explicit in Mods.Cnc and Mods.D2k 2017-09-16 15:51:37 +02:00
reaperrr
83afcc3448 Some misc explicit interfaces
Just a by-product from a previous commit, not meant to do anything specific other than bringing us a tiny step closer to requiring explicit implementations for these interfaces too, at some point.
2017-09-16 15:51:37 +02:00
reaperrr
761a4f29ab Make INotifyIdle and INotifyBecomingIdle require explicit implementation 2017-09-16 15:51:37 +02:00
reaperrr
ddfed13db4 Make Tick and TickIdle explicit in WithInfantryBody 2017-09-16 15:51:37 +02:00
Smittytron
a1ef581749 Remove EjectOnDeath from Vehicles 2017-09-16 14:10:54 +01:00
reaperrr
0c73baab3e Add large blue tib crystals to Hot Springs
Matching original positions.
2017-09-16 13:50:17 +02:00
reaperrr
89c143ae85 Fix remapable TS big blue tib crystal sequence offset 2017-09-16 13:50:17 +02:00
abcdefg30
d99a472456 Fix HackyAI trying to deploy undeployable actors 2017-09-16 11:01:53 +01:00
Paul Chote
42c4c7b7eb Fix compile error in CommandBarLogic. 2017-09-15 22:49:56 +01:00
Paul Chote
e04ae9aa2c Move remaining hardcoded selection power keys into yaml. 2017-09-15 23:06:38 +02:00
Paul Chote
83d522d945 Split unrelated hotkeys from WorldInteractionController. 2017-09-15 23:06:38 +02:00
Paul Chote
0e3bfcfb35 Replace WorldCommandWidget with individual logic classes. 2017-09-15 23:06:38 +02:00
Paul Chote
983f9c4cde Remove hardcoded DevReloadChrome and HideUserInterface hotkeys. 2017-09-15 23:06:38 +02:00
Paul Chote
25e88008ef Make the mute hotkey global. 2017-09-15 23:06:38 +02:00
Paul Chote
c759a68492 Move hardcoded screenshot hotkey into yaml. 2017-09-15 23:06:38 +02:00
Paul Chote
8c4afa414a Add a base single-hotkey logic class to avoid future duplication. 2017-09-15 23:06:38 +02:00
Paul Chote
c6fe1639db Support multiple key handlers. 2017-09-15 23:06:38 +02:00
Paul Chote
7459050af9 Rework global music hotkey bindings. 2017-09-15 23:06:38 +02:00
reaperrr
08aaa998aa Fix AI BuildingLimits
The AI BaseBuilder would allow building a structure not only when the current number was lower, but also of it was equal to the limit, which allowed the AI to build one too much of every building.
2017-09-15 19:31:57 +01:00
reaperrr
dbcfb0c92e Rename and move WithTurretedSpriteBody
The name wasn't in line with our implicit naming convention and ambigous on top of that.
Also, only used by RA and TD so moved to Mods.Cnc.
2017-09-15 18:10:13 +01:00
reaperrr
c611b5aeeb Remove 'ed' from WithTurretedAttackAnimation
Too confusing, as people might think it requires 'WithTurretedSpriteBody', also not entirely in line with our (admittedly implicit) render trait naming convention.
2017-09-15 18:10:13 +01:00
Mustafa Alperen Seki
c0b8bb3fcf Add Generals Pilot Logic 2017-09-14 23:26:10 +02:00
gwenzek
11a990e352 check if target is alive 2017-09-14 23:19:28 +02:00
gwenzek
7721d0b328 add a "capturing" condition for ExternalCapture 2017-09-14 23:19:28 +02:00
Forcecore
8027bed6b2 Separated ship squad from ground unit squad
Just like aircrafts are independent from ground squads.
2017-09-13 23:31:26 +02:00
abcdefg30
5ddf28fa81 Bomber John rules cleanup
Removed hacks, default values and duplicates
2017-09-13 22:13:49 +02:00
abcdefg30
0f95febefa Bomber John sequence cleanup
Most of those sequences were unused or default values
Tick count fixed as well
2017-09-13 22:13:49 +02:00
abcdefg30
ed598d2ab4 Make it possible to disable adjacency 2017-09-13 22:13:49 +02:00
abcdefg30
17f7aac35c Add more RevealDisguiseOn types 2017-09-13 21:18:21 +02:00
abcdefg30
71f2026b32 Remove the hardcoded cloak reference from activities 2017-09-13 21:18:21 +02:00
Paul Chote
049ed086f9 Add assault move to TS. 2017-09-11 19:08:33 +02:00
Paul Chote
646a6aa1e8 Fix TS target types. 2017-09-11 19:08:33 +02:00
Paul Chote
3575e82078 Add assault move to D2K. 2017-09-11 19:08:33 +02:00
Paul Chote
d588854cc5 Add assault move to TD. 2017-09-11 19:08:33 +02:00
Paul Chote
c46d1944d9 Add assault move to RA. 2017-09-11 19:08:33 +02:00
Paul Chote
a81749e102 Add frontend code for issuing assault move orders. 2017-09-11 19:08:33 +02:00
Paul Chote
ffee45cd76 Add AttackMove support for AssaultMove orders and condition granting. 2017-09-11 19:08:33 +02:00
Paul Chote
1e4640dc0b Clean up SupportPowerTooltipLogic:
- Avoid creating unnecessary bindings
- Avoid duplicated text size calculations
- Relayout panel when (and only when) needed
- Color timer red when paused
2017-09-10 21:30:55 +02:00
Paul Chote
458c913264 Clean up ProductionTooltipLogic:
- Avoid creating unnecessary bindings
- Fix time display not updating on low power
- Fix power usage color not updating on power changes
- Avoid duplicated text size calculations
2017-09-10 21:30:55 +02:00
Paul Chote
b3b2efa781 Move hardcoded viewport keys into yaml. 2017-09-10 21:30:55 +02:00
Paul Chote
2a6bb0678e Move hardcoded support power keys into yaml. 2017-09-10 21:30:55 +02:00
Paul Chote
4f00d62237 Move hardcoded production keys into yaml. 2017-09-10 21:30:55 +02:00
Paul Chote
19000219af Allow widgets to expose custom hotkey names to the linter. 2017-09-10 21:30:55 +02:00
Paul Chote
1180c5ddaa Move hardcoded production tab keys into yaml. 2017-09-10 21:30:55 +02:00
Paul Chote
f5e38a4e2c Move ISeedableResource interface to Mods.Common. 2017-09-10 18:36:39 +02:00
Paul Chote
1de767d9bf Move objectives interfaces to Mods.Common. 2017-09-10 18:36:39 +02:00
Paul Chote
3f72076e1a Move radar signature interfaces to Mods.Common. 2017-09-10 18:36:39 +02:00
Paul Chote
e54cf9acc3 Move linter interfaces to Mods.Common. 2017-09-10 18:36:39 +02:00
Paul Chote
0648fc9f31 Move damage notification interfaces to Mods.Common. 2017-09-10 18:36:39 +02:00
Paul Chote
e3212d1e64 Move the IMove interface to Mods.Common. 2017-09-10 18:36:39 +02:00
Paul Chote
0f6dda3f5f Calculate building placement offsets in screen space. 2017-09-10 18:26:54 +02:00
reaperrr
0161d68237 Fix RA TorpTube bridge explosions
There were two issues at work here:
1) The combination of default MaximumLaunchAngle and default CruiseAltitude made torpedoes fly a ballistic curve, which combined with BoundToTerrain type made them explode 'in the air' when hitting non-water tiles. This would result in AIr returned as target type, which is invalid for torpedoes.
2) The explosion warheads were missing the Ground target type, which is actually the (only) target type that the bridge tiles you hit with torpedoes have.
2017-09-10 18:10:24 +02:00
reaperrr
b68c935807 Fix water splash on bridge in RA
On bleed, both the explosion as well as the water splash warhead of weapons triggered on bridges, since they have both the Ground and Water target types.

Ground cannot be made invalid for water splashes without causing regressions elsewhere, so a new Bridge target type is introduced to explicitly make bridges invalid targets for water splash effect warheads.
2017-09-10 18:10:24 +02:00
Paul Chote
23382dc508 Remove dummy d2k support bin overlay. 2017-09-10 15:25:43 +02:00
SoScared
b78736acb7 Replace all Creep with Neutral actors on map Agenda 2017-09-10 15:06:41 +02:00
Taryn Hill
48a071c756 Always use noget in fetch-thirdparty-deps-windows.sh 2017-09-10 14:52:13 +02:00
Forcecore
1dfba51665 Removed dead WSB from Refinery trait 2017-09-09 11:15:31 +01:00
reaperrr
43664a12b5 Tweaked TS tiberium colors
- excluded tiberium palettes from global lighting, just like in the original
- tweaked colors to match original more closely
2017-09-07 21:40:29 +01:00
Ishan Bhargava
9cd81a6310 Add myself to AUTHORS
Pull request #5666
2017-09-07 18:33:34 +02:00
reaperrr
024887b268 Move Contrail to Traits
And make interface implementations explicit while we're at it.
2017-09-06 22:07:02 +01:00
Paul Chote
898ef8fe50 Add support for queuing Guard orders. 2017-09-03 12:54:09 +02:00
Paul Chote
f4f27f8980 Add support for queuing AttackMove orders. 2017-09-03 12:54:09 +02:00
SoScared
2bfc7cdd46 RevealOnDeath with Aircraft 2017-09-02 20:17:05 +02:00
abcdefg30
1649f3aa60 Don't spawn aircraft husks when not airborne 2017-09-02 16:26:12 +02:00
Matthias Mailänder
3ce8026337 Tweak the atomic missile SpawnOffsets. 2017-09-02 15:10:35 +02:00
Matthias Mailänder
6774c9ce01 Setup the Temple of Nod smoke in Tiberian Dawn. 2017-09-02 15:10:35 +02:00
Matthias Mailänder
fd0c34bf61 Fix death hand missile offsets. 2017-09-02 15:10:35 +02:00
Matthias Mailänder
2980decc93 Fix the Dune 2000 missile overlay offset. 2017-09-02 15:10:35 +02:00
Matthias Mailänder
855f1816f4 Tweak the time until hatch opening and rocket away. 2017-09-02 15:10:35 +02:00
Matthias Mailänder
4526344eed Add WithNukeLaunchAnimation and -Overlay traits. 2017-09-02 15:10:35 +02:00
Matthias Mailänder
c63620e979 Remove trailing spaces. 2017-09-02 15:10:35 +02:00
SoScared
df9c07da41 change damage vs None with ^Cannon 2017-09-02 14:58:19 +02:00
reaperrr
96e98a24ae Polish RA Jeep and APC muzzle offsets
And Jeep turret offset.
2017-09-02 14:29:34 +02:00
Matthias Mailänder
e9e3e9c22e Bring back the MiGs to the desert shellmap. 2017-09-02 14:14:50 +02:00
rob-v
6eb7a98cd2 Change default Observer shroud option for Explored map 2017-09-02 14:02:24 +02:00
Matthias Mailänder
49919e3d73 Add missing AutoTarget to DOGGIE. 2017-09-02 13:33:35 +02:00
Paul Chote
3c1e7896a5 Clear editor search fields and yield focus on escape. 2017-09-02 12:48:42 +02:00
Matthias Mailänder
0ce4d91dd6 Add map No where to run 2017-09-02 12:14:39 +02:00
Matthias Mailänder
b3dbeb13ca Add map Tiers of Sorrow. 2017-09-02 12:14:13 +02:00
reaperrr
15c636525d Fixed no explosions showing on some RA civ structures
The combination of HitShape, but not Targetable makes the actors be considered invalid for effect warheads.
Lack of Targetable makes them invulnerable anyway, so removing HitShape and Health (and Explodes) is the most logical fix.
2017-09-02 09:27:30 +01:00
Matthias Mailänder
918690f9b2 Remove a bogus ore map in a water segment. 2017-09-02 09:13:14 +01:00
Matthias Mailänder
3c0b95cf6e Fix indentions of weapon documentation table of contents. 2017-09-02 08:56:31 +01:00
Paul Chote
3cf9d47b39 Fix TD stance bar naming. 2017-09-01 11:56:37 +02:00
Paul Chote
4a2988e676 Remove UnitCommandWidget. 2017-09-01 11:56:37 +02:00
Paul Chote
2a3a27aa65 Add CommandBarBlacklist to TS. 2017-09-01 11:56:37 +02:00
Paul Chote
9607c09516 Add command bar to TS. 2017-09-01 11:56:37 +02:00
Paul Chote
7997a24559 Adjust chrome.png and yaml layout.
Also cleans up stray whitespace.
2017-09-01 11:56:37 +02:00
reaperrr
2f66f83051 Remove IsPlane hack
The new VTOL boolean together with CanHover is enough to replace this.
2017-08-31 18:03:59 +02:00
reaperrr
28ffcfea3c Upgrade rule for setting VTOL to true for CanHover actors 2017-08-31 18:03:59 +02:00
reaperrr
3b01da737c Introduce Aircraft VTOL boolean
Rather than hard-linking vertical take-off/land to the CanHover = Helicopter assumption.
2017-08-31 18:03:59 +02:00
reaperrr
5d58374962 Remove FlyCircleTimed activity
A FlyCircle overload is sufficient.
2017-08-31 18:03:59 +02:00
reaperrr
df94765eac Upgrade rule for TakeOffOnResupply 2017-08-31 18:03:59 +02:00
reaperrr
c9ff362ea2 Add TakeOffOnCreation and TakeOffOnResupply to Aircraft
Before this, it was impossible to replicate the behavior of the original games (staying on pad/airfield after reload) without hacking around in Mods.Common.
This allows modders to disable these without meddling with code.
2017-08-31 18:03:59 +02:00
abcdefg30
5cfb5aaf2d Rework the addition and removal of building influence 2017-08-31 17:36:22 +02:00
reaperrr
93f385e9fc Give TS JumpJet shadow when airborne 2017-08-31 16:54:03 +02:00
reaperrr
d1a4133752 Fix WithShadow
It *modifies* the actor rendering, so returning an empty renderable was bogus, as were the IsInWorld/IsDead checks.
2017-08-31 16:54:03 +02:00
Paul Chote
69251d508b Suppress scroll events from the DropDownWidget fullscreen mask. 2017-08-31 12:43:17 +02:00
Paul Chote
1bd1a185f5 Unhardcode spectator combined/world view hotkeys. 2017-08-31 12:33:34 +02:00
Paul Chote
0525408664 Unhardcode map editor zooming hotkey. 2017-08-31 12:33:34 +02:00
Paul Chote
9a5b5d9b6f Unhardcode music control hotkeys. 2017-08-31 12:33:34 +02:00
Paul Chote
8d4ffee32a Add hotkey linting support for logic args. 2017-08-31 12:33:34 +02:00
SoScared
1a95aeda19 patch tent cost increase 2017-08-28 20:41:22 +02:00
atlimit8
fd6b2c0107 Move timers from ConditionManager to ExternalCondition 2017-08-27 12:43:27 +01:00
atlimit8
c61cd37bec ExternalCondition: List<struct TimedToken> timedTokens 2017-08-27 12:43:27 +01:00
atlimit8
62c76b8ae9 ExternalCondition: remove timedTokensBySource 2017-08-27 12:43:27 +01:00
atlimit8
f51323daa3 ExternalCondition: remove unneeded source references 2017-08-27 12:43:27 +01:00
atlimit8
c7d3c3ec73 Changes to ExternalCondition.TryRevokeCondition 2017-08-27 12:43:27 +01:00
Forcecore
72236b66f6 D2K Thumper deploy animation fix 2017-08-27 13:22:00 +02:00
abcdefg30
d6d8cf05b0 Adjust IsAtGroundLevel fixing EjectOnDeath 2017-08-26 15:54:02 -07:00
Taryn Hill
eed9af88f5 Always use noget in fetch-thirdparty-deps.sh 2017-08-26 15:50:47 -07:00
reaperrr
b1c63a4752 Fix FindActorsOnLine overscan 2017-08-26 15:43:44 -07:00
Paul Chote
a7c2f3e7e3 Add mod-specific appdata metadata. 2017-08-26 15:43:26 -07:00
Matthias Mailänder
8ae2a65d9d Shroud is actually a player trait. 2017-08-26 22:47:48 +01:00
Matthias Mailänder
a445049e3d Fix the indentions. 2017-08-26 18:35:41 +01:00
Paul Chote
49d5283ce1 Use curl instead of wget in fetch-thirdparty-deps. 2017-08-26 13:49:56 +02:00
Forcecore
739d0c0bb2 Disabled Ground squads finding targets individually
* Now they will tend to focus fire.
* Provides performance when when the AI designer implements better
  (and complex) target selection code
2017-08-25 23:13:26 +02:00
Zimmermann Gyula
cb36dfa532 Implement instant refineries.
AKA RA2 refinery logic.
2017-08-25 22:19:03 +02:00
Paul Chote
a29360f313 Add a lint test for hotkeys. 2017-08-25 21:56:52 +02:00
Paul Chote
1e0148e092 Migrate ButtonWidget to NamedHotkey. 2017-08-25 21:56:52 +02:00
Paul Chote
42bf232b37 Introduce NamedHotkey type. 2017-08-25 21:56:52 +02:00
Paul Chote
13a06c6e8d Move hardcoded static asset browser hotkeys to yaml. 2017-08-25 21:56:52 +02:00
Matthias Mailänder
988353e431 Remove cloak sounds not featured in the original.
closes #9519
2017-08-25 19:42:38 +02:00
SoScared
1e1109034f Additional tweak of the Artillery weapon 2017-08-25 15:29:18 +02:00
atlimit8
43880ea7b8 Make AppearsOnRadar trait conditional 2017-08-25 15:10:28 +02:00
atlimit8
8a825f2999 Add VariableExpression.NoVariables 2017-08-25 15:10:28 +02:00
Matthias Mailänder
2ccba3768b Add overlay animations to CAARAY. 2017-08-25 10:48:35 +01:00
Matthias Mailänder
dc72b8080c Fix Dune 2000 harvester husk offset.
Closes #10087.
2017-08-24 11:28:06 +02:00
C. Helmig
80b69af30c d2k: sonic weapon fix.
Works around buggy friend-foe discrimination (/Falloff) for sonic weapon. Damage values closer to original game. (Fixes #13850)
2017-08-23 13:02:54 +02:00
reaperrr
120d7f9976 WithHarvestAnimation style fixes
Make interface implementations explicit.
2017-08-23 12:34:00 +02:00
reaperrr
0103b7ca87 Make WithSpriteBody.PlayCustomAnimation resume loop of Sequence
...after it finished playing.
2017-08-23 12:34:00 +02:00
reaperrr
90a4fe7ca1 Resume looping default WithSpriteTurret.Sequence after custom anim
It doesn't really make sense not to, and the only trait using PlayCustomAnimation previously did this manually anyway.
2017-08-23 12:34:00 +02:00
reaperrr
c75e64a952 Properly account for disabled Armaments in various places
These places didn't care if an Armament was disabled, which could lead to unexpected behavior.
2017-08-22 20:55:46 +01:00
reaperrr
951ee2210c Consider disabled armaments invalid 2017-08-22 20:55:46 +01:00
SoScared
28e28bf34c fix ore spots on Dual Cold Front 2017-08-22 19:28:06 +02:00
Matthias Mailänder
cba0fc3475 Remove CreateGroup order as the ActorGroupProxy is gone. 2017-08-22 18:44:35 +02:00
rob-v
01d631b228 Load replays also in sub directories 2017-08-21 14:54:46 +02:00
Mustafa Alperen Seki
f7983692ae Make Captures Upgradeable 2017-08-21 13:06:00 +02:00
Matthias Mailänder
287290bbdf Fix indentions of trait documentation table of contents. 2017-08-20 23:06:59 +02:00
reaperrr
a4ef199b75 Tweak TS Juggernaut BurstDelays and Report
Since the original sound contains 3 shots, it could happen that the sound played even though only 1 shot had been fired.
Additionally, it could happen that no sound was played when shooting because the first burst had already been fired.
Finally, in the original the 3rd shot was delayed a little compared to the first two.

This adresses all these issues.
2017-08-20 20:48:25 +02:00
reaperrr
c4bfb052d9 Apply BurstDelays rename to TS 2017-08-20 20:48:25 +02:00
reaperrr
98357cf2a9 Apply BurstDelays rename to RA 2017-08-20 20:48:25 +02:00
reaperrr
5581688781 Apply BurstDelays rename to TD 2017-08-20 20:48:25 +02:00
reaperrr
7704ae655e Apply BurstDelays rename to D2k 2017-08-20 20:48:25 +02:00
reaperrr
834a40b18d Refactor BurstDelay to BurstDelays
Allowing to set custom per-burst delays.
2017-08-20 20:48:25 +02:00
abcdefg30
4ce2e82ff0 AI States style fixes and minor polish 2017-08-17 23:25:51 +01:00
reaperrr
98b1468801 Clean up Harvester TickIdle a bit
Triggering UnblockRefinery each idle tick is bogus.
2017-08-17 22:58:37 +01:00
reaperrr
406f482a19 Cache INotifyHarvesterAction trait look-ups 2017-08-17 22:58:37 +01:00
reaperrr
bac8d3233a Streamline Harvester.SetProcLines return check 2017-08-17 22:58:37 +01:00
reaperrr
e9a420a9e5 Remove redundant TakeOff from Aircraft
ResupplyAircraft queues a TakeOff anyway, if the aircraft is a helicopter.
2017-08-17 22:19:05 +01:00
reaperrr
95d3d61ffa Make some Aircraft interface implementations explicit with subclassing 2017-08-17 22:19:05 +01:00
reaperrr
6c3ff0dc02 Make AircraftInfo more readable
Added some descriptions where I considered it necessary, added newlines between entries, reordered entries where it made sense.
2017-08-17 22:19:05 +01:00
reaperrr
cab6a96b16 Allow skipping make anim for actors with WithMakeAnimation and GrantConditionOnDeploy 2017-08-17 22:03:42 +01:00
reaperrr
f3f2621eeb Allow skipping 'sell'/reversed make anim on Sell 2017-08-17 22:03:42 +01:00
reaperrr
eb5fb5abba Allow skipping 'sell'/undeploy anim for actors that TransformOnCapture 2017-08-17 22:03:42 +01:00
rob-v
c848b30e9e Add chat tab to multiplayer/replays ingame menu 2017-08-17 21:54:19 +01:00
Paul Chote
daee217431 Add x64process stat. 2017-08-17 19:45:11 +02:00
Paul Chote
9fc0970cfc Force '.' decimal point for windowscale stat. 2017-08-17 19:45:11 +02:00
abcdefg30
7156c2c09d Add the missing base implementation to AttackFrontal's RulesetLoaded 2017-08-17 19:28:51 +02:00
rob-v
dd9d5450bc Add EnableDebugCommandsInReplays option 2017-08-17 19:23:22 +02:00
abcdefg30
6840177776 Fix actors being able to walk on cliffs after the sietch was destroyed 2017-08-17 19:05:38 +02:00
abcdefg30
d78b29b545 Fix sietches being repairable and remove the Power trait (unused) 2017-08-17 19:05:38 +02:00
abcdefg30
b66605033a Let the fremen fallback in atreides04 instead of attacking the base 2017-08-17 19:05:38 +02:00
abcdefg30
b329bf2642 Add more fail conditions to the spice harvesting missions 2017-08-17 19:05:38 +02:00
abcdefg30
02c371f68a Fix a bogus condition 2017-08-17 19:05:38 +02:00
abcdefg30
6907929cb4 Fix the harvest protection logic 2017-08-17 19:05:38 +02:00
abcdefg30
e07779942e Add a warning when attacking the Outpost to ordos04 2017-08-17 19:05:38 +02:00
abcdefg30
a942ca8f57 Add a global script for campaign missions in d2k 2017-08-17 19:05:38 +02:00
Mustafa Alperen Seki
7f0c7cee0d Make D2K Missions use Vanilla Remap Colors 2017-08-17 18:46:06 +02:00
Mustafa Alperen Seki
3bf217aaf7 Rename Emparor to Corrino on Shellmap 2017-08-17 18:46:06 +02:00
SoScared
6d1ca72a80 probe new civilian structures 2017-08-17 15:24:39 +02:00
abc013
944dfeb476 Corrected gnrl sequences & added TakeCover: to him 2017-08-13 21:06:14 +02:00
AoAGeneral
ab5d2766f6 TD Bridges.
Currently in both playtest and release the bridges for TD used to be 500hp with no armor. Meaning that minigunners and other unit types were able to kill them off fairly quickly. Giving them extra HP and an armor type means units such as minigunners, humvees, flamethrowers, and APCs can't kill bridges off quickly.
2017-08-13 20:17:15 +02:00
rob-v
eb21c4bddd Keep Attack M./Guard action while holding hotkey (revert Playtest change) 2017-08-13 17:44:26 +01:00
Allan Greis Eriksen
5435e34b9a Audio device names is now shown correcly in the Audio Device combolist. 2017-08-13 18:38:18 +02:00
Oliver Brakmann
8f26b4e92b Fix Mobile not sanitizing target location of Move orders 2017-08-13 17:23:37 +01:00
Paul Chote
62a006ed3e Change beaconlib reference to match other deps. 2017-08-13 18:15:55 +02:00
Paul Chote
cf386c6149 Update BeaconLib to 1.0.1. 2017-08-13 18:15:55 +02:00
abcdefg30
84d6fa1540 Fix monster tanks not attacking radar domes 2017-08-13 18:01:02 +02:00
abcdefg30
2dad2de0ff Add the win and loss videos to Monster Tank Madness 2017-08-13 18:01:02 +02:00
Paul Chote
34a44acf85 Update macOS launcher to 20170812 tag. 2017-08-13 17:53:23 +02:00
Paul Chote
b937bf43f7 Switch to .NET 4.5 compatible Marshal.SizeOf overload. 2017-08-13 17:39:00 +02:00
Paul Chote
f4d4a7eed4 Fix d2k commandbar artwork glitch. 2017-08-13 14:07:47 +02:00
Paul Chote
4e493f265f Revert TicksBeforePathing move from Mobile to Move.
This partially reverts commit 11c8cda0c3.
2017-08-13 13:31:58 +02:00
abc013
6e8dd5058e Changed SAM launch offset 2017-08-13 12:49:04 +02:00
Paul Chote
ad2c46ea73 Add a community code of conduct.
This adopts the standard 1.4 version of the Contributor Covenant.
http://contributor-covenant.org/
2017-08-13 12:32:01 +02:00
Jean-Rémy Buchs
49f42401e6 Improve the description of LandOnCondition of Aircraft 2017-08-11 10:56:27 -05:00
abcdefg30
de7a0c9861 Remove TargetWhenIdle and TargetWhenDamaged from AutoTarget 2017-08-10 19:11:47 +02:00
abcdefg30
0209c1c848 Add TRUCK.Husk to Tiberian Dawn 2017-08-10 18:24:19 +02:00
SoScared
64dfc38c2e final RA balance patch for the next playtest/release 2017-08-10 18:16:58 +02:00
abcdefg30
d1ab421240 Don't spawn new actors before all RemovedFromWorld callbacks have run 2017-08-10 17:57:11 +02:00
Paul Chote
22d7031819 Focus the ViewportController on Standard/Inverted scroll modes. 2017-08-10 12:50:00 +02:00
Paul Chote
d0d8062dbf Extract ViewportEdgeScrollMargin settings entry. 2017-08-10 12:44:44 +02:00
Paul Chote
dd709a2679 Revert "Have some activities count as idle activities"
This reverts commit ae111248f3.
2017-08-10 12:22:28 +02:00
rob-v
86cff9a774 Disable click sound on command bar buttons 2017-08-09 21:50:34 +01:00
rob-v
0c67ca3321 Add ButtonWidget.DisableKeySound property 2017-08-09 21:50:34 +01:00
reaperrr
f744a429a4 Fix SpawnActorPower not playing launch sounds 2017-08-09 21:27:42 +01:00
reaperrr
11d6dc2d3a Add TS base-building hit-shapes 2017-08-09 21:25:05 +01:00
reaperrr
6e2418d940 Add TS civilian hit-shapes 2017-08-09 21:25:05 +01:00
reaperrr
1b28cb9f60 Add TS default hit-shapes 2017-08-09 21:25:05 +01:00
reaperrr
ab6d18eab6 Center two-legged billboard sprites
They are supposed to be positioned in the middle of the two cells they occupy.
2017-08-09 21:25:05 +01:00
reaperrr
c40ec62511 Tweak sprite offsets of some TS aban civ buildings
In cases where the sprite has enough margin to the footprint cell edges, moving down the sprite a bit is much easier than manually setting up custom targetable offsets.
2017-08-09 21:25:05 +01:00
abcdefg30
94a386eda8 Move the interior tile 384 from the Floor to the Wall category 2017-08-09 20:52:00 +02:00
rob-v
88a3656f0a Fix Client tooltip crash in Lobby 2017-08-09 19:17:00 +01:00
SoScared
3c4a75e4b6 Add Gap effect values to new vision range changes and ironing out misc. values 2017-08-09 20:13:58 +02:00
Jean-Rémy Buchs
1d1802a163 Add LandOnCondition to the trait Aircraft which triggers a landing and prevents takeoffs while the condition is met 2017-08-08 15:13:50 -05:00
abc013
c4d2fdbd83 Fix ground units can stay on water (tile 409) 2017-08-08 12:32:43 +02:00
AoAGeneral
baa4b61d3f TD Prerequisite changes.
Adds prerequisite labels to E1, E3, E6, and TDTRUCK.

Closes #13780
2017-08-08 12:21:37 +02:00
reaperrr
b388c6186a Shrink shape of TD SAM 2017-08-07 14:49:24 +02:00
reaperrr
97bbfd34fd Shrink shape of RA SAM
To adress balancing concerns.
Also tweaked sprite offsets to make it more centered.
2017-08-07 14:49:24 +02:00
reaperrr
6945ae1747 Rename tdtruk to truck 2017-08-07 11:01:21 +02:00
reaperrr
f4499c1e84 Rename TD TowerMissle to TowerMissile 2017-08-07 11:01:21 +02:00
reaperrr
20efd1fc29 Fix RA effect waheads
- take Trees into consideration (they don't have Ground TargetType)
- fixed the delayed effect warheads on Vulcan
2017-08-07 11:01:21 +02:00
Oliver Brakmann
d61939f59f Fix harv docking activities getting lost under certain circumstances 2017-08-07 10:45:45 +02:00
forcecore
d1328212c6 AttackFrontal's FacingTolerance is now in effect 2017-08-07 10:26:26 +02:00
reaperrr
d949e17b88 Perform FogObscures as late as possible
FogObscures is more expensive than simpler boolean, player or HasTraitInfo checks, so in these places it makes sense to perform the other checks first.
2017-08-07 09:42:12 +02:00
AoAGeneral
99dac05fd7 TD Balance Changes. (20170802)
Engineer movement speed reduced to 48 from 56.

Helicopter crash damage increased to 100 from 40.

Rocket infantry spread damage reduced to 32 from 128.

------

Engineer movement was the same speed as minigunners and at times would enable them to escape the minigunners. This slight speed reduction helps for this.

Helicopter crash damage was lacking and a slight increase in this enables them to do some damage. With the cost of the helicopter it is still not a good idea to sacrifice aircraft just for exta damage.

Rocket infantry spread is reduced because of the damage done to infantry packs. Games turned into tanks mixed with rocket infantry. Reducing this spread enables them to single target units more closely then in larger armies.
2017-08-07 09:35:20 +02:00
Matthias Mailänder
fdad5e2c48 Add weapon rules documentation. 2017-08-05 21:00:06 +02:00
Matthias Mailänder
1a54b36e2b Cache shouldn't be exposed at all so drop it. 2017-08-05 21:00:06 +02:00
Matthias Mailänder
55ea54ff2d Explain the color notation. 2017-08-05 21:00:06 +02:00
Matthias Mailänder
59d88199cf Give Dictionaries a friendlier notation. 2017-08-05 21:00:06 +02:00
Matthias Mailänder
0a150bcc75 Move friendly type names into shared helper class. 2017-08-05 21:00:06 +02:00
reaperrr
879ab2ac1f Remove redundant Disposed checks
IsDead returns true if Disposed is true.
2017-08-05 18:31:15 +02:00
Lars Beckers
68607872bd Fix RA Aftermath installer metadata on Linux 2017-08-02 20:09:28 +02:00
FrameLimiter
9fdb7dc51b Fix duplicate Targetable value on ^Ammobox 2017-08-02 19:40:08 +02:00
Taryn Hill
57fb551545 Improve the exception message when a Bridge's DemolishWeapon cannot be found 2017-07-29 22:26:30 +02:00
reaperrr
8ee742d66a Split MuzzleOffset and MuzzleOrientation calcs to protected methods
To make overriding easier for downstream traits inheriting Armament.
2017-07-29 22:14:58 +02:00
reaperrr
26be2a3e99 Split Burst updating to separate method 2017-07-29 22:14:58 +02:00
reaperrr
e847f49256 Split barrel firing to separate method 2017-07-29 22:14:58 +02:00
reaperrr
514bd12885 Merge some Armament CanFire checks 2017-07-29 22:14:58 +02:00
reaperrr
bdfa8a361b Split Barrel can-fire checks to separate CanFire method 2017-07-29 22:14:58 +02:00
AoAGeneral
dc61c98098 TD Engineer Description.
Closes #13720
2017-07-25 18:59:47 -05:00
Paul Chote
4c222e5f2b Add Demo Truck and MAD Tank to Deploy description. 2017-07-23 20:10:08 +02:00
Paul Chote
cd9fc96c37 Implement IIssueDeployOrder on MADTank. 2017-07-23 20:10:08 +02:00
GSonderling
ef0b0847bc Removed references to make docs 2017-07-23 15:33:39 +02:00
rob-v
97306f2bcd Move DeveloperMode trait to Mods.Common 2017-07-23 15:08:24 +02:00
rob-v
d4e9e0e069 Add Visualization chat commands 2017-07-23 15:08:24 +02:00
reaperrr
8403adba37 Implement damage-based slowdown on TD Gunboats
In line with original.
2017-07-23 15:06:03 +02:00
reaperrr
9a25b33beb Adapt TD missions to TDGunboat refactor 2017-07-23 15:06:03 +02:00
reaperrr
94fa24088b Add dedicated TDGunboat traits
And get rid of Mobile.OnRails hack.
2017-07-23 15:06:03 +02:00
reaperrr
3bdd35fd2d Move AttackPopupTurreted to Attack subfolder 2017-07-23 15:06:03 +02:00
SoScared
4903912e3c Revert 4 cell adjacency of Kennel/Silo back to 2. 2017-07-22 22:48:33 +01:00
abcdefg30
aaaf66a6a3 Disable bots on Poland Raid (again) 2017-07-22 22:33:44 +01:00
Forcecore
0573f52a37 Add Railgun projectile 2017-07-21 23:18:38 +01:00
Paul Chote
9d84f4a845 Fix the automated installer generation. 2017-07-21 18:49:59 +01:00
reaperrr
5b24fddd5a Fix TD airfield targetable positions 2017-07-21 17:42:18 +01:00
Paul Chote
0f54d6f709 Allow mod to be launched after installing required content. 2017-07-21 00:15:38 +02:00
Paul Chote
d1ed0e09d0 Create user map directory if it doesn't exist. 2017-07-21 00:10:48 +02:00
abcdefg30
d8bc4905cb Add a selection priority of 6 to supply trucks 2017-07-20 15:13:41 +01:00
abcdefg30
4204ba1c1f Fix funpark01 failing at mission start 2017-07-18 22:49:12 +01:00
reaperrr
17f469f1a5 Revert Yak gun strafing 2017-07-18 14:25:00 +02:00
SoScared
0e64ac4709 Reduce vision range of MSILO, IC and Chronoshpere to 6c0 2017-07-18 01:13:15 +02:00
Paul Chote
afd8b9ab86 Rework harvester resource claiming:
* Maintains lists of claims, and only restricts
   reservations for friendly units.
 * Removes OnNotifyResourceClaimLost; it's not
   clear whether that is still useful, and it
   prevents future necessary cleanups.
 * Moves other code without changing behaviour.

This fixed stale claims from dead units and enemy
claims from preventing otherwise valid harvest
activities.
2017-07-18 01:09:19 +02:00
SoScared
9097837e6d Adjust AoE damage vs Wood in relation to HitShapes 2017-07-18 00:59:25 +02:00
Paul Chote
93fcfbb131 Fix ReadWriteZipFile crashing on update. 2017-07-18 00:10:07 +02:00
GSonderling
7a2d2cfd5f Reorganised desert beach templates.
Deleted spurious tabs and spaces

As requested by @reaperrr

Removed more spaces.

One last space deleted.
2017-07-18 00:02:24 +02:00
SoScared
bfca4897ea Visual, Polish/Performance and Balance Tweak 2017-07-17 23:37:04 +02:00
Jean-Rémy Buchs
488440197e Add new trait ReloadArmamentsBar which renders a bar to show the current reload status 2017-07-16 14:58:00 +01:00
Paul Chote
4ffcd9b4a5 Add template type to editor coordinate label. 2017-07-16 13:12:13 +02:00
Paul Chote
72cf5d29e7 Add search bar to editor Template list. 2017-07-16 13:12:13 +02:00
Paul Chote
f1b54ece8a Add search bar to editor Actors list. 2017-07-16 13:12:13 +02:00
andrew
ce671a2737 TD Supply Truck 2017-07-16 11:07:35 +01:00
Jean-Rémy Buchs
224ca78257 Fix crash in DistanceFromEdge if vector is too long 2017-07-15 17:49:29 +02:00
reaperrr
ace353cb84 Upgrade rule for Missile.TerrainHeightAware 2017-07-15 17:36:20 +02:00
reaperrr
7e8f920bc1 Allow disabling terrain height checks in Missile
This saves a good deal of performance for mods with no real height levels, including RA, TD and D2k.
2017-07-15 17:36:20 +02:00
reaperrr
86ab6e7ed3 Fix MoveWithinRange subcell consideration 2017-07-15 17:31:25 +02:00
reaperrr
b859b9ee43 Fix RotationPaletteEffect not working with player palettes 2017-07-15 11:19:09 +01:00
abcdefg30
0b6b997e81 Add a CommandBarBlacklist trait to blacklist Stop and Waypoint Mode 2017-07-14 23:18:28 +01:00
AoAGeneral
f921a45747 TD Airstrike Balance.
This has been a tough decision. I have nerfed the napalm damage from 65 to 35 commited by reaperrr since at 65 they were still one shotting weapon factories and airstrips. The problem however was that it still did way to much damage. Bringing the Vulcan down from 25 to 15 wood damage helps to keep it alive a majority of the time. (Still brings it to red at times.) Problem now is the airstrike is now a unit killing role rather then killing power plants and various other structures. (Doesn't exactly kill barracks/helipads everytime anymore.)
2017-07-15 00:16:19 +02:00
Paul Chote
3bea08f020 Fix Windows desktop icons being installed for all users. 2017-07-15 00:12:45 +02:00
RoosterDragon
9413d9595c Providing streaming AudFormat data.
AudFormat.GetPCMInputStream now returns data that is streamed, rather than a MemoryStream.
2017-07-14 23:02:49 +01:00
RoosterDragon
85c948fd8d Add a streaming audio playback interface.
This allows audio to be streamed, rather than needed to be fully loaded into memory.
2017-07-14 23:02:49 +01:00
reaperrr
45606c9528 Editor actor categories style fixes 2017-07-14 10:28:29 +02:00
reaperrr
1b0ae1e512 Mention hard-coded 'Air' TargetType in CEWH.AirThreshod desc 2017-07-13 20:58:47 +02:00
reaperrr
70b43222fe Adapt D2k AA missiles to CEWH refactor 2017-07-13 20:58:47 +02:00
reaperrr
bc54789641 Adapt TD anti-air weapons to CEWH refactor 2017-07-13 20:58:47 +02:00
reaperrr
65920a883f Upgrade rule for CreateEffectWarhead ImpactTypes -> Targets 2017-07-13 20:58:47 +02:00
reaperrr
5cd8acada4 Adapt TS effect warheads to CEWH refactor 2017-07-13 20:58:47 +02:00
reaperrr
ce8f3ed168 RA mission weapon warhead fixes 2017-07-13 20:58:47 +02:00
reaperrr
a7334d5583 Adapt RA missiles to CEWH refactor 2017-07-13 20:58:47 +02:00
reaperrr
db16165261 Adapt RA explosions, supers and other weapons to CEWH refactor 2017-07-13 20:58:47 +02:00
reaperrr
34dc52451a Adapt RA smallarms to CEWH refactor 2017-07-13 20:58:47 +02:00
reaperrr
346b6af30d Adapt RA ballistic weapons to CEWH refactor 2017-07-13 20:58:47 +02:00
reaperrr
13983765d6 Tweak RA naval vessel target types
The extremely coarse, shared with terrain Ground and Water types make it hard to distinguish between different actor categories, so we add Ship to all non-submerged vessels.
Additionally, we add 'Water' to submerged subs to prevent players from finding them by moving the cursor of a ship with DepthCharge over the suspected sub position.
The latter also allows force-firing DepthCharge at empty water cells.
2017-07-13 20:58:47 +02:00
reaperrr
cf5abc68ad Refactor CreateEffectWarhead ImpactTypes
Use target validity to simplify ImpactTypes.
2017-07-13 20:58:47 +02:00
reaperrr
efd8a9c1cb Rebalanced Yak
- increased ammo per gun from 9 to 10, for two full double-5-burst salvoes, adjusted ReloadDelay to keep total reload time about the same
- increased Spread by 33% to make up for lower effective pin-point accuracy
- increased damage vs. infantry by 25%, vs. light armor by 16.67%, vs. heavy armor by ~10%
2017-07-13 19:12:16 +02:00
reaperrr
fa02c97111 RA Parabombs balance fix
They're too over-powered on bleed due to the hitshap changes.
2017-07-13 19:12:16 +02:00
reaperrr
4afe9dd248 Enable RA ParaBomb shadow 2017-07-13 19:12:16 +02:00
reaperrr
abb8e27747 TD airstrike balance tweak
The increased building hitshape sizes allowed TD airstrikes to kill even Cyards and temples on bleed, which is overpowered compared to before the hitshapes were merged.
Cutting bomb damage vs. Wood to 65% lets Cyards, temples and adv. comm. centres survive airstrikes with yellow health.
2017-07-13 19:12:16 +02:00
reaperrr
afa9b9760e Unhardcode AttackBomber bomb and gun logic 2017-07-13 19:12:16 +02:00
reaperrr
a1cb0cf002 AttackBomber style fixes 2017-07-13 19:12:16 +02:00
reaperrr
07edf2f7c6 Reset burst counter if ReloadDelay has passed since last shot
This fixes the following issues:
- units like mammoth tanks sometimes at first only fired 1 shot on new encounter because they only depleted 1 burst before previous target was killed
- weapons that use strafing logic would not reset the offset multiplier after passing the target once, leading to wrong offsets on following attacks
2017-07-13 19:12:16 +02:00
reaperrr
6212b82f6d Use strafing for RA Yak
This is done by modifying the target offset by a value matching the Yak's
speed * BurstDelay, to sync the offsets with the actor speed.
2017-07-13 19:12:16 +02:00
reaperrr
afa8d3522c Add strafing support to weapons 2017-07-13 19:12:16 +02:00
reaperrr
92c9988eea Fix D2k Palace footprint 2017-07-13 17:43:41 +02:00
reaperrr
d95d7e0b0f Rename UseOccupiedCellsOffsets to UseTargetableCellsOffsets
With the introduction of the new 'u' BlockingUntargetable cell type, the old property name became inaccurate.
2017-07-13 17:43:41 +02:00
reaperrr
77ef3a0ed2 Simplify RA base building hitshape rules 2017-07-13 17:43:41 +02:00
reaperrr
70c251d5d5 Simplify TD base building hitshape rules 2017-07-13 17:43:41 +02:00
reaperrr
03c7c8f79c Simplify D2k TargetableOffsets rules
By using the new 'u' Footprint letter.
2017-07-13 17:43:41 +02:00
reaperrr
5bdb7bd689 Add OccupiedUntargetable FootprintCellType
For cells that are occupied & unpassable, but should be ignored by HitShape.UseOccupiedCellsOffsets.
2017-07-13 17:43:41 +02:00
reaperrr
fdb3866238 Remove FootprintUtils 2017-07-13 17:43:41 +02:00
reaperrr
46dc827d46 Refactor footprint cell lookups and move them to Building
Removing FootprintUtils happens in the next commit for better
reviewability.
2017-07-13 17:43:41 +02:00
Forcecore
801796b184 FIX game hanging when units with 0 min-range attack units at 0 range.
Fixes #13307
2017-07-12 20:51:35 +02:00
Paul Chote
59dae0ebf6 Split install-core into finer grained targets for the mod template. 2017-07-12 16:22:36 +02:00
Paul Chote
1c2db8806b Update to latest osx launcher tag. 2017-07-12 16:22:36 +02:00
reaperrr
9a7778e55d Fix black tile on template 438 of RA desert tileset 2017-07-12 15:57:19 +02:00
Jean-Rémy Buchs
6749060e57 Add RangeCircleMode to trait RenderRangeCircle 2017-07-12 00:10:52 +02:00
AoAGeneral
4a39bc8286 TD Balance Changes. 20172606
The list of changes do not affect the new hitboxes of the structures.

+ Orca damage increased from 25 to 28.
Damage is increased because of their lack of damage vs armored units and structures.

+ Apache ammo reload reduced from 200 to 40.
Apaches gaining a full clip of ammo is a bit to strong. Firing the first shot starts the timer tick and will reload even if the clip is not fully reloaded. This also fixes so they don't sit on top of infantry and blow them all away to quickly.

+ Apache ammo reload amount reduced from 10 to 1.
Fixed in unison with ammo reload timer.

+ Sam now fires two missiles. (CNC95)
Does extra damage.

+ Sam range increase from 8c0 to 10c0.
Compensate for the aircraft changes. Also had a problem of MSAMs were always the better choice rather then the structure SAMs itself. This change will make them more viable.

+ Sam range limit from 9c614 to 12c0.
Makes it so aircraft can still escape while the missile won't detonate at the edge of the circle range.

+ Humvee damag vs light increased from 50 to 55.
Compensates for the price of the hummer. Having just the HP wasn't enough to counter certian builds of Nod. Enabling them a slightly higher damage allows them to kill buggies and bikes a bit more effectively. Makes them also decent arty and MRLS killers.

+ Crates got some love.

+ Viceroids now spawn.

+ An atomic bomb can now detonate. (CNC95)

+ Veterancy level is now to rank 4.
This makes grabbing crates all the more rewarding and riskier. Such as willing to bring a mammoth tank or commando to the crate rather then a minigunner.
2017-07-11 16:25:49 +02:00
Paul Chote
e38db04ab7 Move Stylecop checks to their own helper executable. 2017-07-09 21:58:21 +02:00
Paul Chote
1fa1677204 Register default mods during installation on Windows. 2017-07-09 20:54:02 +02:00
Paul Chote
2685dbea3b Register default mods during installation on Debian/Ubuntu. 2017-07-09 20:54:02 +02:00
Paul Chote
2c522e0371 Add mod registration utility commands. 2017-07-09 20:54:02 +02:00
Paul Chote
bc4a5193e9 Add ExternalMods.Unregister method. 2017-07-09 20:54:02 +02:00
Paul Chote
739f357090 Read mod registrations from system support dir. 2017-07-09 20:54:02 +02:00
Paul Chote
e69f129fed Add Platform.SystemSupportDir for shared user data. 2017-07-09 20:54:02 +02:00
Paul Chote
372d940936 Rework stale ExternalMod metadata clearing. 2017-07-09 20:54:02 +02:00
Paul Chote
b30cfe4ada Move launchPath argument from ExternalMods ctor to .Register. 2017-07-09 20:54:02 +02:00
Paul Chote
daf8f8d956 Throw a FileNotFoundException if source zip file isn't found. 2017-07-08 23:22:44 +02:00
Paul Chote
6e145f902b Fix empty lobby faction tooltips. 2017-07-08 22:45:51 +02:00
Paul Chote
cd9ef47f94 Suppress unrelated mouse events while scrolling. 2017-07-08 22:21:04 +02:00
rob-v
f341330d5e Fix Joystick scrolling stuck 2017-07-08 22:21:04 +02:00
Paul Chote
4f16b0d464 Revert "Replace legacy Evaluator with IntegerExpressions."
This reverts commit cd0898236d.
2017-07-08 22:11:36 +02:00
Paul Chote
f7c57cfc6f Fix crash when loading read-only ReadWriteZipFiles. 2017-07-08 16:45:44 +01:00
Paul Chote
ab1a798d04 Add GrantConditionOnBotOwner trait. 2017-07-07 21:31:45 +01:00
Paul Chote
96a1c8d54b Update internal ra/cnc/d2k/ts bot types. 2017-07-07 21:31:45 +01:00
Paul Chote
b0906e1836 Add a bot type identifier. 2017-07-07 21:31:45 +01:00
Paul Chote
e88754cd4a Expose Player.BotType and make fields readonly. 2017-07-07 21:31:45 +01:00
Markus Hartung
3a6796ac9d Fix for some AppDomains that doesn't add trailing DirectorySeparatorChar. 2017-07-06 18:29:24 +01:00
Markus Hartung
c2e36b8eeb Ignore Visual Studio 2017 generated files 2017-07-06 18:29:24 +01:00
rob-v
1a546d9baf Polish Actor Categories 2017-07-06 01:50:43 +02:00
rob-v
aab9dfcaa0 Add TS Actor Categories 2017-07-06 01:50:43 +02:00
rob-v
8da112dc92 Add D2K Actor Categories 2017-07-06 01:50:43 +02:00
rob-v
6c962b6675 Add TD Actor Categories 2017-07-06 01:50:43 +02:00
rob-v
6005b59064 Add RA Actor Categories 2017-07-06 01:50:43 +02:00
rob-v
686686417f Add Actor Categories and Category dropdown filter in Map editor 2017-07-06 01:50:43 +02:00
reaperrr
8f4a92af99 Upgrade rules and yaml updates for Bib refactor 2017-07-06 01:42:55 +02:00
reaperrr
3200f4fb0f Remove bib-related hacks from Building and FootprintUtils 2017-07-06 01:42:55 +02:00
reaperrr
9b137afa6d Add ITargetableCells interface 2017-07-06 01:42:55 +02:00
reaperrr
69aa4f5962 Building style fixes for better readability 2017-07-06 01:42:55 +02:00
RoosterDragon
297f4ad9ed Ensure we set ZipConstants.DefaultCodePage by using a helper method.
We were currently dealing with this terrible global variable in FileSystem/ZipFile.cs previously, but other parts of the code such as DownloadPackageLogic were creating these files too, and may not have executed the static ctors that fixed the encoding yet.
2017-07-05 22:45:15 +01:00
rob-v
1f436ad0cb TS - Rename Template.Category to Template.Categories 2017-07-05 22:46:59 +02:00
rob-v
c3ccd1906d D2K - Rename Template.Category to Template.Categories 2017-07-05 22:46:59 +02:00
rob-v
5cee040fc0 TD - Rename Template.Category to Template.Categories 2017-07-05 22:46:59 +02:00
rob-v
03cfd5b880 RA - Rename Template.Category to Template.Categories 2017-07-05 22:46:59 +02:00
rob-v
4b9c6c4746 Allow multiple terrain (tile) categories 2017-07-05 22:46:59 +02:00
reaperrr
3abd65052c Fix TS Titan barrel, armament offsets and disable projectile image 2017-07-03 18:52:54 +02:00
reaperrr
b491ec871c Tweak TS sprite walker animations
- replace WithInfantryBody with WithFacingSpriteBody + WithMoveAnimation on Titan
- rename all mech 'run' anims to 'walk'
- tweak walk anim rates to better match movement speed/original
- tweak Wolverine attack anim to play a little faster
2017-07-03 18:52:54 +02:00
reaperrr
9a25dd6a60 Add elite explosion to TS Sonic & Stealth Tanks
Matching original TS.
2017-07-02 16:03:40 -05:00
reaperrr
faf9f7cede Change Explodes.Weapon default to null
FieldLoader.Require makes the default pointless, so it makes more sense to change it to null.
2017-07-02 16:03:40 -05:00
reaperrr
a6b9bab033 Make Explodes conditional 2017-07-02 16:03:40 -05:00
Mustafa Alperen Seki
6dca6b3740 Reimport 8PLAY3 and 5 2017-07-02 21:04:16 +02:00
Jean-Rémy Buchs
2e4cd8d820 Make SpawnActorOnDeath conditional 2017-07-02 10:00:08 -05:00
reaperrr
9e138178ad WithAttackAnimation style fix
Looks better this way.
2017-07-01 12:33:51 +01:00
reaperrr
9c2e3aaa05 Make WithMoveAnimation conditional and modify only a single assigned sprite body
The latter to match what we do on WithAttackAnimation already.
2017-07-01 12:33:51 +01:00
reaperrr
8a5a8a1646 RA yaml style fix 2017-07-01 11:11:51 +01:00
reaperrr
ff268eee44 Remove comments on explosion sequences in TD
We don't ship comments for explosions in the other mods, and every modder will either already know or can look them up in the asset browser.
2017-07-01 11:11:51 +01:00
reaperrr
ec5c218ac4 TD yaml style fixes 2017-07-01 11:11:51 +01:00
Paul Chote
fdafbd9f15 Remove hardcoded references to FacingInit and TurretFacingInit. 2017-07-01 10:35:22 +01:00
Paul Chote
2a2bd676a3 Remove hardcoded references to HideBibPreviewInit. 2017-07-01 10:35:22 +01:00
Paul Chote
b2c3a55c12 Add IActorPreviewInitInfo interface. 2017-07-01 10:35:22 +01:00
Paul Chote
e10b64d62c Add command bar to D2K. 2017-07-01 00:35:47 +02:00
Paul Chote
f801fc502f Adjust UI spritesheet to make more usable space. 2017-07-01 00:35:47 +02:00
reaperrr
3f8efb1163 Remove ApplyToAllTargetablePositions hack from RectangleShape
In its current form it is bad for performance due to the ITargetablePositions look-up, and fixing that only to remove the hack entirely a few weeks later would be kind of pointless, so let's get this over with.
2017-06-29 22:01:19 +02:00
rob-v
f75115a645 Remove unnecessary loading mod exceptions, log missing icon.png 2017-06-29 19:43:44 +02:00
abcdefg30
04033e5c79 Don't iterate over an array with only one element 2017-06-29 16:56:21 +02:00
abcdefg30
841798a0a8 Don't use a broken version string when git is not found 2017-06-29 16:56:21 +02:00
abcdefg30
057c201e85 Don't echo "Invalid command" when using the version command with a parameter 2017-06-29 16:56:21 +02:00
abcdefg30
83be37acaf Try to bypass the security warning 2017-06-29 16:56:21 +02:00
abcdefg30
57af145c12 Don't let the launcher scripts close the console window 2017-06-29 16:56:21 +02:00
Markus Hartung
27ce2fcda9 Add some resharper rules 2017-06-27 22:47:50 +01:00
rob-v
78bedb0513 Fix IsSinglePlayer 2017-06-27 22:43:15 +01:00
C. Helmig
8a508ecafa Change concrete radar color to match rock.
This is/was problematic, because right now players can spot expansions through the fog-of-war instantly.
This replicates original game behavior, too. Concrete in original dune2k doesn't show up on the radar.
2017-06-27 23:31:09 +02:00
Paul Chote
dbe16bfdb5 Add faction tooltips to TS. 2017-06-27 23:27:53 +02:00
Paul Chote
88ab77ce0f Polish Random faction tooltips. 2017-06-27 23:27:53 +02:00
Paul Chote
714b24329c Use standard button tooltip for faction descriptions. 2017-06-27 23:27:53 +02:00
Paul Chote
3996aadcb6 Add description yaml to D2K button tooltip. 2017-06-27 23:27:53 +02:00
reaperrr
2650973d51 Add ForceDisplayAtGroundLevel to CreateEffectWarhead
Allows to force the effect to always play at ground level, regardless of explosion altitude.
2017-06-27 23:19:32 +02:00
reaperrr
d283231d94 Fix TS Cyborg explosion and Tiberium explosion palette
Otherwise these would appear darker than the other explosions on maps with darker ambient color and have now translucency.
2017-06-27 23:19:32 +02:00
reaperrr
f7aac24c43 Fix TS Grenade explosion size
Now matches original.
2017-06-27 23:19:32 +02:00
rob-v
3e7bf1880f Fix Map editor total ore money 2017-06-27 22:05:40 +01:00
reaperrr
266b5d194f Fix TS visceroid and tib floater weapons
They'll need to target closest targetable position to be able to attack larger buildings, which conflicts with the TargetDamage warhead.
2017-06-27 21:07:39 +01:00
ltem
115c72aa4b Fixed the positioning of the performance graph. 2017-06-26 23:11:32 +01:00
Paul Chote
d81a07931f Fix D2K units not auto-targeting defenses in Defend stance. 2017-06-25 22:49:37 +02:00
reaperrr
ba1279aa93 Disable some effect warhead victim scans in TS 2017-06-25 22:40:12 +02:00
reaperrr
32e7ab7a30 Disable effect warhead victim scans in TD
They are meant to play regardless of whether an actor was hit anyway.
2017-06-25 22:40:12 +02:00
reaperrr
4823d5454d Disable effect warhead victim scans in D2k
They are always displayed unconditionally anyway.
2017-06-25 22:40:12 +02:00
reaperrr
e0abf8ed27 Disable effect WH victim scans in RA where sensible
AA missiles, flame weapons and nukes, pretty much, because they always
display the effect regardless of what they hit.
2017-06-25 22:40:12 +02:00
reaperrr
1d2361cdd3 Change default and auto-calc of victim scans to -1
For all projectiles and warheads.

Not really a must for everything else, but for CreateEffectWarhead, the
ImpactTypes refactor (separate PR) makes it a bit harder to make the
warhead valid in every situation, so setting the victim scan to zero is the easiest way to disable scanning for actors completely.
2017-06-25 22:40:12 +02:00
reaperrr
ca475fe133 Projectile style fixes 2017-06-25 22:40:12 +02:00
reaperrr
dc5818d035 Warhead style fixes
Implement interfaces explicitly
2017-06-25 22:40:12 +02:00
Paul Chote
a755070d76 Fix VisualHeight of RA commandbar buttons. 2017-06-25 22:37:36 +02:00
rob-v
f29d2028fe Fix missing-failing logging of Ruleset (Yaml)Exceptions 2017-06-25 18:45:12 +02:00
rob-v
6e1b2333f3 Fix ClientTooltip disables tooltip delay 2017-06-24 11:52:27 +01:00
rob-v
1b3422db2d Fix flickering tooltip 2017-06-24 11:52:27 +01:00
rob-v
7772ebedf4 Check for Carryall, RevealOnFire FrozenActor.Actor is null 2017-06-24 11:42:50 +01:00
rob-v
78bf530a4e Check for EnterTunnel FrozenActor.Actor is null 2017-06-24 11:42:50 +01:00
rob-v
6df7f18a3b Fix Initialize sounds (dispose of null SoundSource) 2017-06-24 11:29:55 +01:00
reaperrr
0a1083e554 Merge the Valid(...)Weapons methods 2017-06-24 11:24:17 +01:00
reaperrr
33e8bf9928 Adapt Attack logic to Weapon.TargetActorCenter 2017-06-24 11:24:17 +01:00
reaperrr
edffaa4987 Introduce Weapon.TargetActorCenter and adapt projectiles
This also fixes issues with attackers that don't have their own Attack
trait.
2017-06-24 11:24:17 +01:00
reaperrr
6b3c04a584 Fix old shape scaling 2017-06-24 11:15:12 +01:00
reaperrr
7d3cf7894b Fix upgrade rule dates
These were merged into bleed after prep was branched off, so they need a date newer than last release.
2017-06-24 11:15:12 +01:00
reaperrr
522a29f1e4 Reduce Ornithopter damage vs buildings
Especially larger ones.
2017-06-24 11:11:56 +01:00
abcdefg30
c58db84d35 Fix the harvesting sequence being invisible in TS 2017-06-23 12:45:16 +02:00
abcdefg30
1760a12428 Replace the wrong CURRENTENGINE description by OLDENGINE 2017-06-23 11:42:44 +02:00
abcdefg30
118039ded3 Add a missing i 2017-06-22 14:35:26 +02:00
abcdefg30
839945cf57 Fix a crash in CheckSequences when the sprite image is null 2017-06-22 14:35:26 +02:00
rob-v
da5c70184e Refactor RefreshServerListInner's games+lanGames argument 2017-06-22 11:59:04 +02:00
rob-v
3c323a8672 Extract loading of game rows into LoadGameRows method. 2017-06-22 11:59:04 +02:00
rob-v
53c7954f84 MP Browser - display current mod+version first 2017-06-22 11:59:04 +02:00
rob-v
7237fd83c6 Fix error handling of failed MP server refresh 2017-06-22 11:59:04 +02:00
reaperrr
8e9f20cf4b Cache traits implementing INotifyAttack 2017-06-22 04:13:47 -05:00
reaperrr
779218f381 Cache traits implementing modifiers 2017-06-22 04:13:47 -05:00
reaperrr
243ed3d76a Cache traits implementing INotifyBurstComplete 2017-06-22 04:13:47 -05:00
Forcecore
100abe3246 Requested changes applied
* private this.info --> public Info for GCOnDeploy
* Parameter change for (un)deploy activities
2017-06-20 23:42:14 -05:00
Forcecore
a7cedc54ff Deploy activities for mods and future AI scripting 2017-06-20 23:42:14 -05:00
Paul Chote
300a7222f3 Don't autotarget structures in Defend stance. 2017-06-18 21:07:21 +02:00
Paul Chote
2e2e1cae7f Fix MSAM/MLRS autotargeting. 2017-06-18 21:07:21 +02:00
Paul Chote
57df34dcbf Fix auto-targeting vs TD/TS/D2K creeps. 2017-06-18 21:07:21 +02:00
Paul Chote
0a1f2b7275 Fix auto-targeting vs submerged but detected RA submarines. 2017-06-18 21:07:21 +02:00
Paul Chote
0aa84aa5ed Fix auto-targeting vs RA tanks. 2017-06-18 21:07:21 +02:00
Paul Chote
4040863707 Fix queued move activities. 2017-06-18 20:55:50 +02:00
Oliver Brakmann
f6e87f63e7 Fix GetSupportDir not returning an absolute path 2017-06-18 20:46:22 +02:00
Mustafa Alperen Seki
c4e8af08ec Implement EliteAbility=VEIN_PROOF and SENSORS on units that need 2017-06-18 16:23:34 +02:00
Forcecore
a3c9d72cfd Unbreak queued order 2017-06-18 12:03:29 +01:00
Forcecore
07a2ee5eab Engineer repair activity can be queued 2017-06-18 12:03:29 +01:00
Forcecore
568d7efdb1 ExternalCaptures Type filter fix up 2017-06-18 12:37:59 +02:00
Paul Chote
4b4172f757 Make the Enter activity use the closest target position. 2017-06-17 21:18:28 +02:00
Paul Chote
995a3da43a Rename Enter.targetCenter to repathWhileMoving. 2017-06-17 21:18:28 +02:00
rob-v
b0f1059df2 Remove unnecessary PostBuildEvent from D2k project 2017-06-17 20:17:31 +02:00
Paul Chote
f0ffb4e8d9 Remove leftover target references.
Fixes a warning generated by `xbuild`.
2017-06-17 20:17:31 +02:00
Paul Chote
3db15beeb9 Fix compatibility with msbuild/csc on non-windows. 2017-06-17 20:17:31 +02:00
Forcecore
728162e688 GCOnDeploy's ValidTerrain() takes location parameter
Fixes ##13394.

Possible use: AI's future deploy planning when the actor isn't actually
there yet. Also used in my mod for Slave Miner's deploy planning
2017-06-17 19:00:07 +02:00
reaperrr
f98e7656da Make TS GDI Juggernaut attack the target center
Instead of closest targetable position/offset.
2017-06-15 01:32:37 +02:00
reaperrr
c20d02fd2e Make TD artillery actors attack the target center
Instead of closest targetable position/offset.
Applies to:
-Artillery
-Rocket Launcher (MLRS)
2017-06-15 01:32:37 +02:00
reaperrr
26e6d86821 Make RA artillery actors attack the target center
Instead of closest targetable position/offset.
Applies to:
-Artillery
-Cruiser
-Missile Sub
2017-06-15 01:32:37 +02:00
reaperrr
7eab278711 Adapt tracking projectiles to support targeting CenterPosition
Instead of closest targetable position.
2017-06-15 01:32:37 +02:00
reaperrr
da7433a95f Add plumbing for targeting of target center instead of closest targetable position
Note: Projectiles that can track their target need minor additional changes, but for InstantHit (which already implemented support for this) and unguided projectiles (Bullet, GravityBomb) this commit is already sufficient.
2017-06-15 01:32:37 +02:00
Paul Chote
9c9a23be86 Make Frames and Limbs private. 2017-06-14 18:56:06 +02:00
Paul Chote
2683b2507e Fix remaining voxel references in Game. 2017-06-14 18:56:06 +02:00
Paul Chote
6ca0208694 Rename VoxelPreview to ModelPreview. 2017-06-14 18:56:06 +02:00
Paul Chote
736e70df78 Rename VoxelRenderable to ModelRenderable. 2017-06-14 18:56:06 +02:00
Paul Chote
17089f2aee Rename VoxelSequences to ModelSequences. 2017-06-14 18:56:06 +02:00
Paul Chote
34810756c2 Move Voxel code to Mods.Cnc. 2017-06-14 18:56:06 +02:00
Paul Chote
dc4c3fd546 Rename VoxelRenderer to ModelRenderer. 2017-06-14 18:56:06 +02:00
Paul Chote
4f42778d26 Rename VoxelAnimation to ModelAnimation. 2017-06-14 18:56:06 +02:00
Paul Chote
e1cd00c1dd Add backend plumbing for model loaders. 2017-06-14 18:56:06 +02:00
reaperrr
086fc88e3e Increased ZOffset of TD explosions
To make sure they always play on top of actors.
2017-06-14 18:28:20 +02:00
reaperrr
35e131bac7 Give TD base buildings custom hit shapes 2017-06-14 18:28:20 +02:00
reaperrr
b219214426 Give TD civilian and tech buildings custom shapes 2017-06-14 18:28:20 +02:00
reaperrr
d1790229a9 Add hit-shape defaults to TD
Plus some resulting cleanup of defaults.yaml.
2017-06-14 18:28:20 +02:00
reaperrr
600478603c Fix TD civ field husk footprint
Players should not be able to build on it.
2017-06-14 18:28:20 +02:00
Mustafa Alperen Seki
4187a69904 Remove afld and hpad from Rush AI's Production: list 2017-06-14 18:26:18 +02:00
Paul Chote
90778bc8a8 Fix queued move orders on Chrono Tank. 2017-06-12 19:38:18 -05:00
Paul Chote
242f33c2ba Implement RA command bar. 2017-06-12 19:38:18 -05:00
Paul Chote
2923c9907f Fix minor issues with TD command bar. 2017-06-12 19:38:18 -05:00
reaperrr
d52313ab18 Rename WithAttackAnimation.BodyName to just .Body
Shorter and more consistent with Armament.Turret, WithTurretedAttackAnimation.Turret, WithSpriteBarrel.Armament etc.
2017-06-12 19:01:10 -05:00
reaperrr
fef388834e Throw yaml exception if WithAttackAnimation has no assigned sprite body
...or too many assigned bodies.

Also, further simplify WithAttackAnimation code.
2017-06-12 19:01:10 -05:00
reaperrr
5fb468922e Make WithAttackAnimation conditional 2017-06-12 19:01:10 -05:00
reaperrr
2e70b6931b Refactor WithAttackAnimation
- made trait compatible with actors that have more than one sprite body or enable/disable sprite bodies via conditions
- added check for running attack anim and prevent aim/reload sequences from overriding it
- added caching of whether trait has either aim or reload sequence, to avoid some string.IsNullOrEmpty look-ups every tick
2017-06-12 19:01:10 -05:00
rob-v
8276b17570 Fix Sound memory leak (OutOfMemoryException), remove Music caching to free memory 2017-06-12 18:33:53 -05:00
RoosterDragon
2def72a078 Clear previous effects data when generating a new sync report. 2017-06-12 18:25:35 -05:00
Paul Chote
2e801a55ce Update ts AutoTarget definitions. 2017-06-11 17:14:21 -05:00
Paul Chote
52b08a769d Update d2k AutoTarget definitions. 2017-06-11 17:14:21 -05:00
Paul Chote
d7f9c2f852 Update cnc AutoTarget definitions. 2017-06-11 17:14:21 -05:00
Paul Chote
b613b1b2e0 Update RA AutoTarget definitions. 2017-06-11 17:14:21 -05:00
Paul Chote
716343732f Add AutoTargetPriority trait for smarter AutoTarget logic. 2017-06-11 17:14:21 -05:00
reaperrr
ab8bc53ed8 Replace doneDamage bool in TeslaZap with DamageDuration
Allows it to deal continous damage via a single projectile.
2017-06-11 23:28:17 +02:00
reaperrr
6ff31786cb Refactor TeslaZap targeting
- made it target closest targetable position, instead of CenterPosition
- made target tracking optional (enabled by default)
- made tracking independent from whether damage has already been dealt
- cache target position and update it in Tick only if tracking
2017-06-11 23:28:17 +02:00
reaperrr
c474b77d79 Remove unused 'initialized' bool from TeslaZap
It was never set to 'true', and doing so would break Duration > 1, so it's better to just remove it.
2017-06-11 23:28:17 +02:00
reaperrr
2704f3bcd5 Minor TeslaZap cleanup
Renaming timeUntilRemove to ticksUntilRemove makes it more clear and allows to drop the comment.
2017-06-11 23:28:17 +02:00
reaperrr
16e260e69f Increase ZOffset of RA explosions
To make sure they play on top of actors.
2017-06-10 11:38:04 +01:00
reaperrr
7cadbcb8f6 Set custom hit shapes for civilian buildings 2017-06-10 11:38:04 +01:00
reaperrr
07e6708b88 Align RA base building hitshapes with their sprites 2017-06-10 11:38:04 +01:00
reaperrr
7ba276c0c1 Add building hitshape defaults to RA
And do some cleanup.
Intentionally omitted uncommon shapes that only appear once or twice.
2017-06-10 11:38:04 +01:00
C. Helmig
3b626e5ff7 Fixes tile error in #13047. See comment Item in #12868. 2017-06-07 18:54:39 +02:00
C. Helmig
452aed0a97 Multiple passability changes to replicate original game behavior. (= Items comments on #12868 )
Fix the passability of some bridge tiles
2017-06-07 18:54:39 +02:00
abcdefg30
5d40ed3e32 Move tiles into correct category. 2017-06-07 18:54:39 +02:00
abcdefg30
8494200321 Renamed and reordered Categories - uniform naming, similar categories adjacent to one another, most used to top. 2017-06-07 18:54:39 +02:00
Paul Chote
83c4c842ee Update to latest osx launcher package. 2017-06-06 22:08:08 +02:00
reaperrr
423ea555b3 Fix RA bridge crash 2017-06-06 22:04:00 +02:00
reaperrr
4af31be6bd Fix TD bridge crash 2017-06-06 22:04:00 +02:00
Paul Chote
ff9bddbf21 Add unit command bar to TD. 2017-06-06 08:53:54 -06:00
Paul Chote
52f1ab0969 Add backend code for unit command bar. 2017-06-06 08:53:54 -06:00
Paul Chote
f1eb96b273 Add DisableKeyRepeat flag to ButtonWidget. 2017-06-06 08:53:54 -06:00
Paul Chote
854dd75282 Add ButtonTooltipWithDescHighlightLogic.
Highlights TooltipDesc characters inside {}.
2017-06-06 08:53:54 -06:00
Paul Chote
8f2a933ba8 Add support for button tooltip descriptions. 2017-06-06 08:53:54 -06:00
Paul Chote
ce233a6cca Reduce edge scrolling threshold and polish cursor hotspots. 2017-06-06 08:53:54 -06:00
Paul Chote
94fba3521a Add ForceModifiersOrderGenerator for force move/attack and queueing. 2017-06-06 08:53:54 -06:00
Paul Chote
8dfb7d8bbc Add Selection.Hash for tracking selection changes. 2017-06-06 08:53:54 -06:00
Paul Chote
e8d6d63707 Add IIssueDeployOrder. 2017-06-06 08:53:54 -06:00
Paul Chote
533b2f9ad7 Flip tooltips above the cursor at the bottom of the screen. 2017-06-06 08:53:54 -06:00
Mustafa Alperen Seki
46d0157c2e Add Harkonnen 4 2017-06-05 22:32:49 +02:00
reaperrr
3507ad2f87 Give D2k structures footprint hit-shapes 2017-06-05 14:22:47 +02:00
reaperrr
e2647e8a60 Move down D2k High-tech factory sprite
This better aligns its visuals with the footprint, hit-shape and targetable positions.
2017-06-05 14:22:47 +02:00
reaperrr
6a212eea53 Make attacking actors/turrets face the targeted position 2017-06-05 14:22:47 +02:00
reaperrr
7acc6dacbc Fix armaments/projectiles to aim at closest Target.Positions
Instead of CenterPosition.
TargetablePositions were already used for targeting/attack decisions, but not armaments/projectiles.
2017-06-05 14:22:47 +02:00
Markus Hartung
73577e3a7e Add myself to authors 2017-06-04 17:11:44 +02:00
Markus Hartung
2a0b3b39ea INotifyCreated.Created now calls base properly 2017-06-04 17:11:44 +02:00
Markus Hartung
f7ddb969c6 Change so Attack* calls Created on base class 2017-06-04 17:11:44 +02:00
abcdefg30
40e8c5136d Fix the close enough check in Repair.cs 2017-06-04 15:35:40 +02:00
Paul Chote
abdcf90c30 Ship VERSION with binary releases. 2017-06-04 13:21:27 +02:00
Paul Chote
36d7b5131e Use ContentInstallerMod in MainMenuLogic. 2017-06-04 13:21:27 +02:00
Paul Chote
f79a3a8d03 Use engine version in crash logs. 2017-06-04 13:21:27 +02:00
Paul Chote
f7db7e3308 Use engine version for master server queries. 2017-06-04 13:21:27 +02:00
Paul Chote
49f0e35bd7 Add engine VERSION file. 2017-06-04 13:21:27 +02:00
reaperrr
82758a8bef Add TargetableOffsets to HitShape
And remove ITargetablePositions from Building.
Also, added UseFootprintOffsets to replicate the old Building behavior for easier setup of TargetablePositions for buildings.
2017-06-04 00:07:08 +02:00
reaperrr
7fd0a3aa58 Lint check and yaml enforcement for HitShape
Now that Health no longer provides a HitShape, actors with Health need at
least one HitShape trait.
2017-06-04 00:07:08 +02:00
reaperrr
7f81de2f8a Upgrade rule for Health.Shape to HitShape.Type 2017-06-04 00:07:08 +02:00
reaperrr
43b55ae333 Move Shape from Health to new HitShape trait
Renamed Shape to Type
2017-06-04 00:07:08 +02:00
reaperrr
c7c6cf864c Fix inconsistent rules in preparation of HitShape refactor
- TD C17 and A10 are not targetable and therefore technically invulnerable, so we should remove Health and Armor
- D2k ^carryall.colorpicker and TS ^mmch.colorpicker shouldn't have Health
- TS crash sites are supposed to be indestructible map deco as per original (they had "Immune=yes")
2017-06-04 00:07:08 +02:00
Mustafa Alperen Seki
61afa096e3 Add 8PLAY6 2017-06-03 16:17:34 +02:00
Mustafa Alperen Seki
aa9c00367b Add 8PLAY2 2017-06-03 16:14:52 +02:00
Oliver Brakmann
677904c682 Hide tooltips for unoccupied spawnpoints in the replay browser 2017-06-03 15:56:27 +02:00
rob-v
fc0495ac27 Fix keys scrolling stuck (+ some function double calls) 2017-06-01 23:07:25 +02:00
Mustafa Alperen Seki
f4988356a0 Add 8PLAY4 2017-06-01 20:28:48 +02:00
Mustafa Alperen Seki
8bcc2b30d9 Add 8PLAY1 2017-06-01 20:14:59 +02:00
Andre Mohren
96ca3baff8 Fixed PNGLoader crash with palette containing less than 256 colors. 2017-05-31 20:34:09 +02:00
Oliver Brakmann
a869dacdc4 Remove tooltips from map preview in MP server browser 2017-05-30 22:30:31 +01:00
rob-v
ada5b6d0e5 Add Unit stance hotkeys, remove Cycle Stance hotkey 2017-05-30 21:16:31 +02:00
Andre Mohren
d080a47cbf Allow load screens to override StartGame. 2017-05-30 18:15:28 +02:00
atlimit8
afa5a7772d Split ConditionByStance in AutoTarget 2017-05-29 20:41:10 +01:00
atlimit8
cadfbe8a29 Grant condition by unit stance 2017-05-29 20:41:10 +01:00
reaperrr
5834d7615b Fix Rectangle OuterRadius
Rectangle shapes always assumed that either top-left or bottom-right would have the largest distance from actor center, which is wrong, because depending on the position of the shape, top-right or bottom-left can be the furthest away corner as well, potentially resulting in a too small OuterRadius.
2017-05-29 07:41:20 -05:00
reaperrr
bc5eb66088 Add OuterRadius debug overlay to Rectangle and Capsule
Circle obviously doesn't need it now (might change with the introduction of offsets, but we can still add it when that happens).
2017-05-29 07:41:20 -05:00
reaperrr
8d69d26542 Add debug overlay for custom TargetPositions 2017-05-29 07:41:20 -05:00
reaperrr
479795f494 Fix D2k repair pad footprint
To match the original.
2017-05-29 07:41:20 -05:00
rob-v
45041bde14 Dispose-stop Beacon on closing server browser 2017-05-29 13:28:39 +01:00
rob-v
9a9920e4af Catch and ignore BeaconLib errors 2017-05-29 13:28:39 +01:00
abcdefg30
e1b7fc2617 Replace the removed SupplyTruck trait in disable-player-experience.yaml 2017-05-29 07:15:57 -05:00
Paul Chote
45b13dabfb Explicitly implement interfaces in AttackBase. 2017-05-29 06:27:19 -05:00
Paul Chote
34844e87a3 Replace Lazy trait lookups with INotifyCreated. 2017-05-29 06:27:19 -05:00
Paul Chote
69587a2128 Move InstallShieldPackage to Mods.Common. 2017-05-29 12:41:28 +02:00
Paul Chote
e5222f95f6 Remove ambiguity from FileSystem references. 2017-05-29 12:41:28 +02:00
Paul Chote
ba7290cc2c Move classic-mod package loaders and support files to Mods.Cnc. 2017-05-29 12:41:28 +02:00
Paul Chote
28fdb71163 Remove mod chooser reference from music installation prompt. 2017-05-29 12:33:20 +02:00
Paul Chote
8321d1f3e3 Remove legacy FileSystem.OpenPackage(string, IReadOnlyPackage). 2017-05-29 12:27:24 +02:00
Paul Chote
df40d38b91 Rework read/write zip file loading/saving. 2017-05-29 12:20:32 +02:00
evgeniysergeev
c06df1ed21 make IsCloseEnoughToBase function virtual 2017-05-29 11:50:56 +02:00
abcdefg30
aecfff905d Throw a more detailed error message when creating invalid frozen actors 2017-05-28 14:02:18 +02:00
abcdefg30
2a3139dc39 Add a IAutoSelctionSizeInfo trait interface 2017-05-28 14:02:18 +02:00
Mustafa Alperen Seki
767fd5438e Add Ordos 3b 2017-05-28 13:49:08 +02:00
Paul Chote
a43ec158fa Update error messages. 2017-05-27 13:03:47 +02:00
Paul Chote
7f3f36885a Fix bogus variable names in widget widths. 2017-05-27 13:00:00 +02:00
Paul Chote
29d827079e Fix "game" chat tab mouseover not working from globalchat login tab. 2017-05-27 13:00:00 +02:00
Paul Chote
b104f8baa2 Improve handling of unknown error codes. 2017-05-27 12:43:25 +02:00
Glenn Martin Jensen
e8b2a12714 Add support for blacklist response
Adds support for the new blacklist response in servernames
2017-05-27 12:43:25 +02:00
Paul Chote
0ddc4360fe Remove unused MiniYaml DictFromFile. 2017-05-26 23:02:25 -05:00
Paul Chote
c6816cd33f Persist unknown settings.yaml entries across load/save. 2017-05-26 23:02:25 -05:00
Paul Chote
b1ac1d06e3 Catch and ignore exceptions while loading map previews. 2017-05-26 23:41:30 +02:00
abcdefg30
1f93029e51 Always make sure to be on the host actor when repairing 2017-05-26 22:53:03 +02:00
Jean-Rémy Buchs
2e0d7d0e79 Add KillCargo and FlashScreen to PortableChrono 2017-05-26 10:31:59 +02:00
Paul Chote
2e7de2874d Fix cloak sounds playing on build for initially cloaked actors. 2017-05-24 16:30:04 +02:00
Mustafa Alperen Seki
5dd6aa7a3a Add Ordos 3a 2017-05-20 13:30:41 +02:00
abcdefg30
5e40a5b683 Remove the effect from MissionColt 2017-05-20 11:28:14 +02:00
abcdefg30
ddba9b2efd Remove outdated values and replace Bullet by InstantHit in allies05a 2017-05-20 11:28:14 +02:00
abcdefg30
7ea40482e2 Fix the Colt sometimes shooting even after Tanya was released 2017-05-20 11:28:14 +02:00
abcdefg30
cc6191554a Remove the hacky MissionColt actor from allies05a 2017-05-20 11:28:14 +02:00
abcdefg30
550256373a Replace Camera.Truk by using ValidStances on RevealsShroud 2017-05-20 11:28:14 +02:00
abcdefg30
434ea9ca88 Throw a lint error or an exception when no player owns the world 2017-05-20 11:02:00 +02:00
abcdefg30
ac4fef6630 Don't close the console window when OpenRA closes 2017-05-20 10:55:09 +02:00
abcdefg30
61659d0d32 Add support for using launch-game.cmd with parameters 2017-05-20 10:55:09 +02:00
Paul Chote
b74141666b Implement a workaround for the mono 5.0 cursor enumerator bug. 2017-05-19 14:31:00 +02:00
rob-v
3258d89651 Fix map parameter warning as error from PR 13233 2017-05-17 22:58:56 +02:00
rob-v
127ef8bb27 LobbyLogic, ReplayBrowserLogic Map property changed to map field 2017-05-14 21:06:16 +01:00
rob-v
a26210f914 Replays with MapPreview (like in Lobby) 2017-05-14 21:06:16 +01:00
rob-v
0e3cc1ad28 (Lobby)MapPreviewLogic refactoring 2017-05-14 21:06:16 +01:00
rob-v
ffc3f6e0d0 LAN games discovery 2017-05-14 22:01:25 +02:00
rob-v
b2e6a0484b Fix Selecting a map resets player color 2017-05-14 14:00:45 +01:00
reaperrr
d95bb4152a Add Firestorm Juggernaut to TS 2017-05-14 14:41:20 +02:00
rob-v
224bda6de5 Fix Player slot when changing map 2017-05-14 13:19:18 +02:00
reaperrr
d8edcb1bad Fix TS Nod artillery turret / barrel / weapon offsets 2017-05-14 11:52:42 +01:00
Paul Chote
d45870ca23 Allow fixed barrel pitches to be defined in yaml. 2017-05-14 11:52:42 +01:00
Paul Chote
430429f337 Fix WRot FieldLoader parsing. 2017-05-14 11:52:42 +01:00
reaperrr
b8c251cf41 Add StartBurstReport to WeaponInfo
The FS Juggernaut firing sound already contains 3 shots, so without this, players would hear a total of 9(!) shots per salvo.
2017-05-14 11:49:38 +01:00
reaperrr
d502b296bb Upgrade rule for DeployAnimation removal 2017-05-14 00:22:26 -05:00
reaperrr
aa8d9f5dda Fix GrantConditionOnDeploy to support multiple sprite bodies 2017-05-14 00:22:26 -05:00
reaperrr
6f19379a2b Make WithMoveAnimation multi-WithSpriteBody-compatible 2017-05-14 00:22:26 -05:00
reaperrr
3b798897be Add Name ID field to WithSpriteBody 2017-05-14 00:22:26 -05:00
rob-v
48abb7372b Remove ChatSettings.NickName, use PlayerName always as default 2017-05-13 11:40:47 -07:00
reaperrr
5b8c313d55 Remove lint rule for victim scan radii
They're now calculated automatically to use the most sensible value by default. Only people who know what they're doing or fool around will use custom values, and in that case a lint rule might actually just annoy people.
2017-05-13 11:15:38 -07:00
reaperrr
96d629cefd Upgrade rule for victim scan radii changes
The game/engine now calculates the best values automatically and the field names have changed, so instead of renaming, we can just remove them under the assumption that only modders who really know what they're doing will ever use the override.
2017-05-13 11:15:38 -07:00
reaperrr
d04c6275da Make warheads use the the most sensible victim scan radius
By default, but allow custom overrides.
2017-05-13 11:15:38 -07:00
reaperrr
033268a7ba Make projectiles use most sensible blocker scan radius
By default, but allow custom overrides.
2017-05-13 11:15:38 -07:00
reaperrr
9f9d1f9e5f Added helper utility for finding best hit-shape scan radius 2017-05-13 11:15:38 -07:00
reaperrr
d92d9f86fc Add IBlocksProjectilesInfo interface 2017-05-13 11:15:38 -07:00
Zimmermann Gyula
0d2d17d2fb Fix the AI acting the same at game restart. 2017-05-13 19:08:20 +01:00
reaperrr
db85fff7c0 Remove TS infantry hit-shape height
We should either implement this for all non-blocker actors at once, or not at all. By now we have walls/gates as examples for vertical shape height, so for now there's no reason to leave this on infantry.
2017-05-13 10:51:41 -07:00
reaperrr
91c65f1e9c Adapt blocking height of TS walls etc.
to WDist rescaling.

Also, make wall hit-shape height match blocking height and tweak it to
approximate original TS behaviour as much as possible (Tick Tanks could
shoot over them, but only from certain angles/distances).
2017-05-13 10:51:41 -07:00
reaperrr
ccda89f268 Refactor Shape.Rectangle.RotateToIsometry
And fixes TS wall and gate shapes.
2017-05-13 10:51:41 -07:00
C. Helmig
b11af3bcb5 D2k editor: Moved all appropriate tiles into Cliff-Type-Changer and replaced Sand-Smooth with Cliff-Ends category. 2017-05-13 10:48:37 -07:00
reaperrr
97ec200dcf Merge pull request #13282 from pchote/osx-fullscreen
Work around resolution issues in (legacy) Fullscreen on OSX.
2017-05-13 15:51:10 +02:00
Paul Chote
42232f4a55 Work around resolution issues in (legacy) Fullscreen on OSX. 2017-05-13 00:02:29 +01:00
reaperrr
cf65bb6e41 Merge pull request #13203 from reaperrr/ts-balance-fixes
Fix some wrong TS unit stats
2017-05-12 15:30:39 +02:00
reaperrr
5e736527b7 Merge pull request #13223 from pchote/mod-package-loaders
Unhardcode mod package loaders
2017-05-12 14:04:58 +02:00
reaperrr
2a0cfa5c43 Merge pull request #13278 from reaperrr/disable-win-dpi
Disable DPI scaling on Windows by default
2017-05-12 01:11:15 +02:00
reaperrr
f0c6e5e855 Disable DPI scaling on WIndows by default 2017-05-11 20:09:13 +02:00
abcdefg30
618ac5838a Merge pull request #13215 from pchote/packaging-simplification
Overhaul packaging scripts
2017-05-10 16:34:01 +02:00
atlimit8
55de4a59d0 Merge pull request #13247 from pchote/widget-evaluator-expressions
Replaced legacy Evaluator with IntegerExpressions.
2017-05-08 21:19:52 -05:00
atlimit8
4a80c37507 Merge pull request #13253 from pchote/rescale-isometric-world-coords
Rescaled isometric world coordinates to measure 1024 along the cell axes.
2017-05-08 20:59:51 -05:00
reaperrr
e94ef1658f Merge pull request #13156 from MustaphaTR/d2k-harkonnen-3b
D2K - Add Harkonnen Mission 3b
2017-05-07 16:53:26 +02:00
Paul Chote
552cf83951 Fix missile characteristics. 2017-05-07 13:49:50 +01:00
Paul Chote
fc29438748 Fix grenade speed. 2017-05-07 13:49:44 +01:00
Paul Chote
d2973801e4 Update TS LocalOffsets for new coordinate system. 2017-05-07 13:47:12 +01:00
Paul Chote
cf09b99ed8 Adjust TS subcell positions for new coordinate system. 2017-05-07 13:45:30 +01:00
Paul Chote
cdf2df58a0 Define RectangularIsometric world coordinate scale along the cell axis. 2017-05-07 13:45:30 +01:00
Paul Chote
5dcb840f9f Fix WithHarvesterOffset.LocalOffset name. 2017-05-07 13:44:47 +01:00
Paul Chote
a3f7641b68 Move D2kSoundResources to Mods.D2k dll. 2017-05-07 13:25:43 +01:00
Paul Chote
0222ea675c Implement mod-defined package loaders. 2017-05-07 13:25:38 +01:00
Paul Chote
9b4f602cca Remove unused leftover oramod loading code. 2017-05-07 13:25:04 +01:00
Paul Chote
248c12827e Resolve assembly paths before loading the FileSystem. 2017-05-07 13:25:03 +01:00
Paul Chote
f0d7a6caca Move GetLoaders to ObjectCreator. 2017-05-07 13:25:03 +01:00
reaperrr
74437ed56c Merge pull request #13178 from rob-v/ReturnHeliToNearestBase
Helis return to nearest base like Planes
2017-05-07 13:16:40 +02:00
reaperrr
1194f14cfe Merge pull request #13232 from rob-v/NumberAIPlayers
Number AI players
2017-05-07 13:09:20 +02:00
reaperrr
e9926fdc28 Merge pull request #13248 from pchote/detect-key-repeat
Prevent repeated keys from toggling observer shroud selector.
2017-05-07 13:03:34 +02:00
Paul Chote
e6ec071ceb Merge pull request #13093 from rob-v/ServicePadMoveToRallyPoint
Fix Service Depot Rally point path finding
2017-05-07 08:48:47 +01:00
Paul Chote
d787429a2e Merge pull request #12996 from atlimit8/RemoveIDisable-part2
Remove IDisable - part 2
2017-05-07 08:38:09 +01:00
atlimit8
e01c79be06 Added rule upgrade notice for support powers' PauseOnCondition. 2017-05-06 17:19:43 -05:00
atlimit8
431f06cd49 Convert support powers from actor disabled to pausable-conditional. 2017-05-06 17:19:43 -05:00
atlimit8
9a1ba31753 Added upgrade rule for PauseOnLowPower removal & AffectedByPowerOutage condition granting. 2017-05-06 17:19:43 -05:00
atlimit8
700b117122 Convert WithRepairAnimation from disable to conditional. 2017-05-06 17:19:43 -05:00
atlimit8
5fd4b3a1bd Convert WithRearmAnimation from disable to conditional. 2017-05-06 17:19:42 -05:00
atlimit8
b0706e7cd0 Removes actor disabled support from WithIdleAnimation. 2017-05-06 17:19:42 -05:00
atlimit8
0dfdea1826 Convert AffectedByPowerOutage from disabler to conditional condition granter. 2017-05-06 17:19:42 -05:00
atlimit8
61b84e0c5a Added ts power outage WithIdleOverlay polish. 2017-05-06 17:19:42 -05:00
atlimit8
64a2b9de55 WithRepairOverlay into pausable-conditional trait EMP disabled polish. 2017-05-06 17:19:42 -05:00
atlimit8
1c5427c86f Convert WithIdleOverlay from actor disabled to pausable-conditional. 2017-05-06 17:19:42 -05:00
atlimit8
11933c7e2c Added /poweroutage dev command. 2017-05-06 17:19:39 -05:00
rob-v
fb1d8d780f Fix Service Depot Rally point path finding (+rename ignoredActor) 2017-05-06 19:49:40 +02:00
Paul Chote
c867687d9a Prevent repeated keys from toggling observer shroud selector. 2017-05-06 14:13:12 +01:00
Paul Chote
fff2f097d0 Add KeyInput.IsRepeat. 2017-05-06 14:10:24 +01:00
Paul Chote
cd0898236d Replace legacy Evaluator with IntegerExpressions. 2017-05-06 13:50:30 +01:00
reaperrr
669cf01d80 Merge pull request #13224 from daVoodooShuffle/fix-13153
Cleaned Up Chrome Expression Whitespacing
2017-05-06 14:44:40 +02:00
Paul Chote
9be5ef2bd5 Merge pull request #13214 from GraionDilach/expand-disguise
Expose the drop-disguise-when-attacking aspect to yaml.
2017-05-06 12:00:02 +01:00
daVoodooShuffle
53bf52149c Closes #13153
Modified all expressions to contain a space on either side

Only effects the YAML files that contain config variables:

X:
Y:
Width:
Height:
2017-05-06 15:26:41 +10:00
reaperrr
22d8167d49 Merge pull request #13162 from pchote/tunnel-enter-cursor
Implement "Enter Tunnel" cursor
2017-05-05 23:47:57 +02:00
reaperrr
f5ddea305a Merge pull request #13217 from pchote/jumpjet-death
Fix jumpjet flying death animations
2017-05-05 13:11:17 +02:00
Zimmermann Gyula
81b79a1b29 Expose the drop-disguise-when-attacking aspect to yaml.
Also adds Damaged for more usecases.
2017-05-05 07:58:14 +02:00
atlimit8
4ec0089250 Merge pull request #13219 from GraionDilach/fix-rangemodifier-regression
Fix RangeMultiplier regression.
2017-05-04 20:10:13 -05:00
reaperrr
ea29cce3cf Merge pull request #13002 from rob-v/LobbyOptionsEditableByHost
Host can change Team and Spawn of any player. #12936
2017-05-04 19:15:01 +02:00
reaperrr
c4e79a11a8 Merge pull request #12919 from obrakmann/transform-refactor
Refactor Transform to make use of child activities
2017-05-04 18:55:41 +02:00
rob-v
1ff11d4115 Number AI players 2017-05-03 19:33:04 +02:00
Zimmermann Gyula
c48cf51190 Fix RangeMultiplier regression. 2017-05-01 14:47:17 +02:00
Paul Chote
21a10f84a5 Fix jumpjet flying death animations. 2017-05-01 11:43:18 +01:00
Paul Chote
7a7b668f2b Merge pull request #12999 from reaperrr/RevealOnDeath
Add RevealOnDeath trait
2017-05-01 11:17:18 +01:00
reaperrr
dcf31f356d Merge pull request #13211 from pchote/d2k-hires-logo
Add new d2k mod logo
2017-05-01 12:02:07 +02:00
reaperrr
dbe4b670d0 Make D2k structures reveal shroud on death 2017-05-01 11:57:12 +02:00
Paul Chote
5a273700bf Merge pull request #13204 from IceReaper/reloading-sound
Added ReloadSound and ReloadSoundDelay to weapon declarations.
2017-05-01 00:05:19 +01:00
Andre Mohren
d68bc48ba5 Added ReloadSound and ReloadSoundDelay to weapon declarations. 2017-04-30 22:43:32 +02:00
reaperrr
437f9a7930 Merge pull request #12955 from atlimit8/RemoveIDisable-part1
Remove IDisable - part 1
2017-04-30 21:21:12 +02:00
Oliver Brakmann
f9913db5e8 Make Transform use child activities 2017-04-30 19:40:14 +01:00
Oliver Brakmann
f9951f76ca Allow cancelling an activity without aborting the entire queue 2017-04-30 19:07:50 +01:00
atlimit8
166063337e Make Repair activity halt if RepairsUnit is paused or abort if disabled. 2017-04-30 09:59:03 -05:00
atlimit8
6075569659 Make RepairsUnits pausable-conditional 2017-04-30 09:48:02 -05:00
atlimit8
748afad45e Added PausableConditionalTrait abstract trait 2017-04-30 09:47:28 -05:00
atlimit8
18eddf4a70 Convert ProximityExternalCondition from disable-able to conditional. 2017-04-30 09:46:56 -05:00
atlimit8
770efd710b Remove DisabledOverlay using WithColoredOverlay & remove IDisable from Husk 2017-04-30 09:46:21 -05:00
Paul Chote
705d77501b Add new high resolution D2K mod logo. 2017-04-30 13:38:12 +01:00
Paul Chote
696b48b7bf Overhaul the packaging scripts:
- Ingame mod versions now always match the package version
- Adds macOS compatibility
- Removes trait and lua api docs pending future overhaul
- Individual platform packages can be compiled directly
- Improved error checking
- Removes unnecessary redundancy and indirection
2017-04-30 13:26:36 +01:00
Paul Chote
3111b2cf9b Merge pull request #13129 from pchote/osx-packaging
Update OSX packaging for per-mod launchers.
2017-04-30 13:23:42 +01:00
Paul Chote
e0adbe652e Merge pull request #13138 from pchote/deb-packaging
Update Linux packaging for per-mod launchers.
2017-04-30 13:21:39 +01:00
reaperrr
1349dfb670 Merge pull request #13210 from pchote/polish-deployers
Polish TS deployer animations
2017-04-30 12:14:40 +02:00
reaperrr
d5740efda8 Merge pull request #13186 from rob-v/TakeScreenshotInDialogs
Take screenshot in dialogs #13184
2017-04-30 11:53:13 +02:00
rob-v
382fefebfe Take screenshot in dialogs #13184 2017-04-30 10:17:55 +02:00
Paul Chote
1871715699 Implement "Enter Tunnel" cursor. 2017-04-29 15:58:42 +01:00
Paul Chote
10734f2877 Reenable and polish broken bridge in Sunstroke. 2017-04-29 15:50:16 +01:00
Paul Chote
43ff56eea9 Fix tunnel top definitions. 2017-04-29 15:50:16 +01:00
Taryn Hill
12f2fc3410 Merge pull request #13175 from rob-v/GlobalChat
Enhance - unify global chat (with lobby chat)
2017-04-29 09:28:34 -05:00
atlimit8
cb6e4b9926 Merge pull request #13202 from reaperrr/UpgradeRejectsOrders
Add Reject field to RejectsOrders for blacklisting orders.
2017-04-29 08:51:34 -05:00
Paul Chote
69ca9ffaba Set the default voxel Scale to match the original game. 2017-04-29 13:21:13 +01:00
Paul Chote
4e6af29bb8 Match LPST pre/post deploy sizes and offsets. 2017-04-29 12:21:30 +01:00
Paul Chote
993f4ee6da Match TTNK pre/post deploy sizes and offsets. 2017-04-29 12:21:10 +01:00
reaperrr
53aaa28a71 Remove bogus Turreted from TS amphib APC 2017-04-29 13:13:53 +02:00
reaperrr
0c6911bd2f Fix Mobile Sensor Array sight ranges to match original 2017-04-29 13:13:23 +02:00
reaperrr
398956b690 Add support for multiple RejectsOrders traits per actor 2017-04-29 12:56:30 +02:00
atlimit8
4917c6e453 Merge pull request #12924 from reaperrr/fix-tunnel-atk
Prevent units in tunnels/underground from attacking
2017-04-29 00:25:23 -05:00
reaperrr
9759fce9d7 Fix TS MCV stats to match original 2017-04-27 21:33:37 +02:00
reaperrr
2d2d869b5a Fix TS engineer health to match original 2017-04-27 21:18:48 +02:00
reaperrr
965a73fc53 Fix TS infantry sight range
In original TS, E1 had 5, E2 and E3 had 7.
2017-04-27 21:18:23 +02:00
reaperrr
0a484b424e Fix TS infantry move speed
E3 speed in original was 4.
JumpJet ground speed in original was 5.
2017-04-27 21:17:06 +02:00
reaperrr
1fae993593 Prevent attacking while in tunnel/underground 2017-04-27 17:50:02 +02:00
Paul Chote
bc38cb3cc2 Package OSX launchers in a disk image. 2017-04-26 22:17:27 +01:00
Paul Chote
74bbde751f Create separate OSX launchers for each mod. 2017-04-26 22:17:26 +01:00
Paul Chote
60bc114e39 Merge pull request #13133 from pchote/windows-packaging
Update Windows packaging for per-mod launchers.
2017-04-26 22:12:05 +01:00
Paul Chote
c8af9168c9 Improve general installer quality:
- Remove uninstaller and readme start menu links
  (they are explicitly discouraged by best practices)
- Explicitly declare installer execution level
- Define additional control panel metadata
2017-04-26 22:00:42 +01:00
Paul Chote
2c1b8da7fd Merge pull request #13191 from Enverex/patch-1
Correct make install command for Linux
2017-04-26 21:58:17 +01:00
reaperrr
539ed67527 Merge pull request #13190 from pchote/object-weirdness
Fix ObjectCreator assembly resolving on Windows.
2017-04-26 21:29:33 +02:00
atlimit8
2ae40e7eb4 Merge pull request #13181 from pchote/repair-cursor-flash
Fix repair cursor visual feedback target.
2017-04-25 16:52:10 -05:00
reaperrr
61a1cc18e1 Merge pull request #13195 from atlimit8/ActorExts-AppearsFriendlyTo-simplification
ActorExts.AppearsFriendlyTo Simplification
2017-04-25 23:29:37 +02:00
atlimit8
6aaa7fa042 ActorExts.AppearsFriendlyTo simplification 2017-04-25 15:53:50 -05:00
Paul Chote
a01b3f88fc Remove unused ObjectCreator constructor. 2017-04-25 21:49:37 +01:00
Paul Chote
8dd50c0421 Keep ObjectCreator ResolveAssembly override bound until disposal. 2017-04-25 21:49:37 +01:00
Benjamin Hodgetts
8abf5ce372 Correct make install command
No-longer "install-all".
2017-04-25 12:08:13 +01:00
reaperrr
a9676235db Add custom DeathTypes/DamageTypes support to RevealOnDeath 2017-04-24 19:12:31 +02:00
reaperrr
7dddc7fc44 Make FallToEarth kill the actor instead of disposing it 2017-04-24 19:12:31 +02:00
reaperrr
6045ad2ecf Make D2k units reveal shroud on destruction
For 4 seconds.
2017-04-24 19:12:31 +02:00
reaperrr
4bfd306cc2 Add RevealOnDeath trait
Allows revealing shroud on actor death.
2017-04-24 19:12:31 +02:00
Paul Chote
d9800d4e2b Fix repair cursor visual feedback target. 2017-04-24 08:52:48 +01:00
atlimit8
99f3f37afe Merge pull request #13104 from rob-v/RepairNavalUnitsWithRepairCursor
Naval units (RepairableNear) units repairable using Repair cursor
2017-04-23 22:05:46 -05:00
atlimit8
fe03929e6b Merge pull request #13174 from reaperrr/ts-floater
Add Tiberium Floater to TS
2017-04-23 21:38:27 -05:00
reaperrr
e8f16b1b75 Merge pull request #13150 from rob-v/SaveMapError
Show 'Failed to save map' error message in dialog box
2017-04-23 15:29:10 +02:00
reaperrr
9ce110f6d9 Merge pull request #12971 from rob-v/LobbyResetingPlayerName
Global chat name is reset when connecting
2017-04-23 15:11:24 +02:00
reaperrr
2dc528899e Add Tib Floaters to Sunstroke 2017-04-23 15:00:33 +02:00
reaperrr
f3f443d904 Add FS Tiberium Floater to TS
For better compatibility with FS maps, and more variety for mappers.
2017-04-23 15:00:31 +02:00
rob-v
bd025873cf Host can change Team and Spawn of any player. #12936 2017-04-23 12:06:44 +02:00
atlimit8
172161b9fe Merge pull request #13180 from GraionDilach/make-ps1-gamemonitor
Remove the bitrot GameMonitor StyleCop check.
2017-04-22 22:46:01 -05:00
atlimit8
7a7197216c Merge pull request #13025 from pchote/laser-fence
Implement TS Laser Fences
2017-04-22 19:41:36 -05:00
Paul Chote
fcbdb147ed Update build icon order. 2017-04-23 00:44:11 +01:00
Paul Chote
0ddb631117 Add TS Laser Fences. 2017-04-23 00:44:11 +01:00
Paul Chote
64896eb73d Add EnergyWall trait. 2017-04-23 00:44:11 +01:00
Paul Chote
a83c0f96dd Add GrantConditionOnLineBuildDirection trait. 2017-04-23 00:44:10 +01:00
Paul Chote
f8af51643d Add LineBuildSegmentExternalCondition. 2017-04-23 00:44:10 +01:00
Paul Chote
a8bb03aa34 Draw TS line-build cell previews with increased translucency. 2017-04-23 00:44:10 +01:00
Paul Chote
227b80d6c2 Add support for removing segments when parent nodes are removed. 2017-04-23 00:44:10 +01:00
Paul Chote
304e3ef9f9 Distinguish between line build nodes and segments. 2017-04-23 00:44:09 +01:00
Paul Chote
62603b324d Add support for granting a condition while the make animation plays. 2017-04-23 00:44:09 +01:00
Paul Chote
2b9b9bb984 Fix powerdown indicator position. 2017-04-23 00:44:09 +01:00
Paul Chote
227655f9aa Fix wall artwork interaction with conditions. 2017-04-23 00:44:09 +01:00
Paul Chote
ac53bc502e Remove bogus Requires<HealthInfo> from GrantConditionOnDisabled. 2017-04-23 00:44:08 +01:00
Zimmermann Gyula
2ca6721027 Remove the bitrot GameMonitor StyleCop check. 2017-04-22 23:17:39 +02:00
atlimit8
6744cec239 Merge pull request #13172 from pchote/mod-metadata-cleanup
Remove metadata that was only used by the mod chooser.
2017-04-22 15:57:53 -05:00
rob-v
1206205d17 Enhance - unify global chat (with lobby chat) 2017-04-22 20:25:20 +02:00
reaperrr
ac1d45211d Merge pull request #13134 from atlimit8/NegMinusExpressionParsing
VariableExpression: whitespace/hyphen/binop parsing fix
2017-04-22 19:33:47 +02:00
reaperrr
e29c234ce9 Merge pull request #13164 from reaperrr/ts-arty-deploy
Migrate TS artillery deployment to condition system
2017-04-22 16:44:00 +02:00
reaperrr
863d477928 Merge pull request #13157 from atlimit8/RemoveDictionaryLoadUsings
Remove LoadUsing where FieldLoader.GetValue works for the dictionaries
2017-04-22 16:27:13 +02:00
reaperrr
9ca75d6c8d Merge pull request #13176 from pchote/fix-td-dialog-spam
Remove invalid Background widgets from TD map editor.
2017-04-22 16:15:35 +02:00
rob-v
df07d89f9e Helis return to nearest base like Planes 2017-04-22 15:53:05 +02:00
reaperrr
b53ac5df36 Merge pull request #13074 from atlimit8/IConditionConsumerProvider
Better Support for Multiple Condition Expressions in a Trait
2017-04-22 15:48:37 +02:00
atlimit8
d433473249 Replace IConditionConsumer w/ variable observers for multiple variable expressions for traits. 2017-04-22 08:36:18 -05:00
reaperrr
9f8e9426af Merge pull request #13005 from rob-v/LobbyMapTooltips
Added tooltip to Lobby Map title #12930 #12595
2017-04-22 15:31:34 +02:00
Paul Chote
2e751e937f Remove invalid Background widgets from TD map editor. 2017-04-22 14:17:33 +01:00
atlimit8
8a04156280 VariableExpression: require whitespace around bool/arithmetic binary operators. 2017-04-22 08:14:52 -05:00
rob-v
63de0bb910 Fix ignored 'Failed to save map' #13036 2017-04-22 14:44:06 +02:00
reaperrr
1e63013eb1 Add support for random sounds to AmbientSound 2017-04-22 14:36:55 +02:00
Paul Chote
9b93771dbc Remove metadata that was only used by the mod chooser. 2017-04-22 11:31:43 +01:00
Paul Chote
b24e681531 Create separate Linux launchers for each mod. 2017-04-21 20:18:05 +01:00
Paul Chote
62b0be9db8 Allow non-openra:// Launch.URI prefixes. 2017-04-21 20:18:05 +01:00
Paul Chote
07dc79ab19 Separate release/playtest/git installs. 2017-04-21 20:16:58 +01:00
Paul Chote
3e0f055a3c Create separate Windows launchers for each mod. 2017-04-21 20:16:58 +01:00
Paul Chote
b5523d6b3f Allow non-openra:// Launch.URI prefixes. 2017-04-21 20:16:58 +01:00
Paul Chote
4c990e48d7 Merge pull request #13166 from gdavegdave/bleed
Tweaked map Deterring Democracy to fix harvester stall
2017-04-21 18:52:16 +01:00
GDave
8dbeada0f7 Tweaked map Deterring Democracy to prevent harvester stalling to the immediate right of the lower-right green tree. 2017-04-21 18:40:40 +01:00
Oliver Brakmann
7f204b2dec Merge pull request #13049 from pchote/mod-content
Remove ingame mod chooser.
2017-04-21 19:16:49 +02:00
Paul Chote
9d248433c9 Fix linux packaging. 2017-04-21 18:02:20 +01:00
Paul Chote
84db123b93 Rename modchooser to modcontent. 2017-04-21 18:02:20 +01:00
Paul Chote
ff088323b5 Update --man-page utility command. 2017-04-21 18:02:20 +01:00
Paul Chote
ec42aed6bc Redirect mod chooser to content manager. 2017-04-21 18:02:20 +01:00
Paul Chote
688feea33b Require Game.Mod to be give an a launch arg to OpenRA.Game.exe. 2017-04-21 18:02:14 +01:00
Paul Chote
215aa6fa60 Remove support for loading mods from the support dir. 2017-04-21 17:55:15 +01:00
Paul Chote
e984c98565 Remove oramod package support. 2017-04-21 17:55:15 +01:00
Paul Chote
5d5fd7a0e8 Remove RequiredMods logic. 2017-04-21 17:55:15 +01:00
reaperrr
d9eb224c77 Move Tib Fiend and visc rules to critters.yaml 2017-04-21 17:39:25 +02:00
reaperrr
ec704b7e34 Move Tiberian Fiend and visceroid sequences to critters.yaml 2017-04-21 16:53:10 +02:00
Oliver Brakmann
43b9aa00d8 Merge pull request #13161 from reaperrr/mods-cnc-tweak
Unhardcode LightPaletteRotator properties
2017-04-21 15:26:04 +02:00
reaperrr
5e1cd5dff9 Disable automatic turret realign for deployed Tick Tank and Artillery 2017-04-21 12:41:18 +02:00
reaperrr
5789b73091 Convert TS Nod Artillery to condition system
Getting rid of legacy Transforms approach.
2017-04-21 12:41:18 +02:00
atlimit8
c23f248840 Merge pull request #13159 from pchote/return-to-ground
Force Mobile units to return to the ground layer when becoming idle.
2017-04-20 23:55:58 -05:00
reaperrr
4a8571161a Unhardcode LightPaletteRotator properties 2017-04-21 00:24:23 +02:00
atlimit8
3fbdde5317 Merge pull request #13160 from pchote/fix-tunnel-harvesting
Fix harvesters harvesting resources from underground.
2017-04-20 16:21:48 -05:00
reaperrr
04f8a85cc6 Make LightPaletteRotator interfaces explicit and add desc 2017-04-20 21:12:07 +02:00
Paul Chote
c5547ec20b Fix harvesters harvesting resources from underground. 2017-04-20 19:57:26 +01:00
reaperrr
bb9790c754 Move legacy map import commands into matching subfolder 2017-04-20 20:50:04 +02:00
Paul Chote
b373714da7 Force Mobile units to return to the ground layer when becoming idle. 2017-04-20 19:48:21 +01:00
reaperrr
60fccc1bc4 Merge pull request #12980 from abcdefg30/laysTerrain
Update the documentation of LaysTerrain
2017-04-20 20:10:14 +02:00
reaperrr
ebb6505190 Merge pull request #13106 from abcdefg30/spawnOffset
Add an Offset property to SpawnActorOnDeath
2017-04-20 17:53:33 +02:00
abcdefg30
57bdb1cff3 Update the documentation of LaysTerrain 2017-04-20 15:41:35 +02:00
atlimit8
b97162d9f1 Merge pull request #13110 from MartinCurwen/bleed
Multiple armament check fix in AttackGarrisoned
2017-04-19 12:05:35 -05:00
MartinCurwen
ea6e1fdd64 Multiple armament check fix in AttackGarrisoned 2017-04-19 17:40:14 +01:00
atlimit8
4767b91037 Remove LoadUsing where FieldLoader.GetValue works for the dictionaries 2017-04-19 09:51:06 -05:00
Mustafa Alperen Seki
c94eb2582b Add Harkonnen 3b 2017-04-19 16:46:42 +02:00
Oliver Brakmann
843ac85c92 Merge pull request #13000 from reaperrr/supply-to-cnc
Refactor SupplyTruck/AcceptsSupplies to *Cash traits
2017-04-18 23:38:29 +02:00
Oliver Brakmann
89c19e717f Merge pull request #13118 from MustaphaTR/d2k-harkonnen-3a
D2K - Add Harkonnen Mission 3a
2017-04-18 22:55:31 +02:00
atlimit8
2053aec5f9 Rename VariableExpression.OperandSides => VariableExpression.Sides 2017-04-18 15:22:04 -05:00
atlimit8
c34b947e43 VariableExpression: Restrict CharClass.Mixed to middle of identifiers 2017-04-18 15:15:21 -05:00
atlimit8
f9974624c8 VariableExpression: hyphen after digit lexing fix 2017-04-18 15:14:55 -05:00
reaperrr
225d26bfdb Add explicit Reject field to RejectsOrders 2017-04-18 20:23:00 +02:00
reaperrr
afc1f22c63 Merge pull request #13149 from pchote/defer-tunnel-orders
Require cancelled move orders to exit tunnels before completion.
2017-04-18 19:42:49 +02:00
reaperrr
9814083ac3 Rename DonateSupplies activity to DonateCash 2017-04-18 19:27:46 +02:00
reaperrr
80ec530e4c Refactor supply traits to *Cash traits
Adding 'Type' and 'Stances' support as well.
2017-04-18 19:27:46 +02:00
abcdefg30
361cbc34cc Merge pull request #13139 from AoAGeneral/AoATD
TD Flame infantry spread.
2017-04-18 17:10:27 +02:00
abcdefg30
7416cd0ac1 Add an Offset property to SpawnActorOnDeath 2017-04-18 17:09:25 +02:00
abcdefg30
23ba3cfcb6 Merge pull request #13050 from rob-v/DefeatedPlayersCanNotPauseGame
Lost players except Host can not pause game #12227
2017-04-18 17:00:04 +02:00
abcdefg30
8e6f6a3a52 Merge pull request #13007 from rob-v/ProductionStatisticsTooltip
Add tooltips to production statistics #12820
2017-04-18 16:55:05 +02:00
Oliver Brakmann
e164a6119d Merge pull request #13123 from SoScared/fix3maps
[RA] [Map Pool] Fix tiles on Countercross, Siberian Pass & Six Below Zero.
2017-04-18 16:29:26 +02:00
Paul Chote
0b0f8bc51e Require cancelled move orders to exit tunnels before completion. 2017-04-17 22:34:21 +01:00
Paul Chote
c6d8957307 Merge pull request #13080 from reaperrr/fix-ts-effectlighting
Make TS explosions + muzzle flashes unaffected by global lighting
2017-04-17 21:14:44 +01:00
rob-v
199e9847d1 Add tooltips to production statistics #12820 2017-04-17 21:51:23 +02:00
reaperrr
2548e62e31 Merge pull request #13148 from obrakmann/fix13147_fix-rtb-dead-dest-race
Check for dead destination airfield in ReturnToBase
2017-04-17 20:41:39 +02:00
Oliver Brakmann
b50f15c645 Check for dead destination helipad in HeliReturnToBase 2017-04-17 19:31:53 +02:00
Oliver Brakmann
ff8f204cac Check for dead destination airfield in ReturnToBase 2017-04-17 19:23:11 +02:00
Paul Chote
6df453f806 Merge pull request #13127 from obrakmann/fix13099_disableDpiScalingSetting
Add a setting to disable DPI scaling on Windows systems
2017-04-17 17:46:46 +01:00
Oliver Brakmann
3ec6754289 Merge pull request #13141 from pchote/mod-urls
Move web urls from user config to mod config.
2017-04-17 17:13:52 +02:00
Paul Chote
462ee48c60 Merge pull request #13119 from rob-v/DownloadPackageErrorLog
Add exception message to Download (Invalid archive) error #12985
2017-04-17 15:14:36 +01:00
Matthias Mailänder
37219ad67b Make Tiberian Sun railways passable by trains. 2017-04-17 15:11:33 +01:00
Matthias Mailänder
4480f49e0f Add ChangesTerrain. 2017-04-17 15:11:33 +01:00
reaperrr
1860b448b7 Merge pull request #13143 from reaperrr/icereap-bleed
Added WithTurretedAttackAnimation
2017-04-17 16:10:42 +02:00
Paul Chote
774a717c19 Merge pull request #13117 from abcdefg30/veteranOverlay
Fixed VeteranProductionIcons not being disabled when Prerequisites are removed
2017-04-17 14:47:32 +01:00
Andre Mohren
9b22f0e11a Support attack animation for turrets via new WithTurretedAttackAnimation trait. 2017-04-17 15:34:45 +02:00
reaperrr
1d3daa5e4d Merge pull request #13108 from atlimit8/ConditionsToVariables
ConditionExpression to (Boolean|Integer)Expression refactor
2017-04-17 14:52:21 +02:00
reaperrr
4c63c7bdd8 Merge pull request #13096 from rob-v/DisableEdgeScrollWhileStandardScroll
Fix/Disable Edge scroll while standard (middle mouse) scroll
2017-04-17 14:36:21 +02:00
Paul Chote
1722f42f83 Move web urls from user config to mod config. 2017-04-17 12:00:41 +01:00
AoAGeneral
ddc31825ec TD Flame infantry spread.
Increases the flame infantry attack spread from 341 to 468.

This allows the flame infantry to have a wider cone attack as the previous 10 damage increase helped. They still however lacked the wide attack spread needed on massive infantry assaults. Their attack spread matches that of grenadiers and a lot of armaments (Artillery) and being a frontal unit can use a slight increase to help with this.
Units going prone still takes three hits to kill infantry (two for e3 and anyone standing).
2017-04-16 14:13:12 -07:00
SoScared
7168912273 Fix tiles on Countercross, Siberian Pass, Sudden Death & Six Below Zero. 2017-04-15 19:50:12 +02:00
reaperrr
04f5937476 Merge pull request #13086 from kyrylo/winter-storm-update
mods/ra/maps: update Winter Storm
2017-04-15 13:45:24 +02:00
reaperrr
8c1ed0d39f Merge pull request #13102 from abcdefg30/06yak
Fix allies06a freezing when yaks try to attack camo pillboxes
2017-04-15 12:36:18 +02:00
Oliver Brakmann
0635f3636d Add a setting to disable DPI scaling on Windows systems 2017-04-14 23:23:14 +02:00
Oliver Brakmann
3cd7493664 Merge pull request #13095 from jrb0001/licenseheaders-lua
add GPLv3+ header to all lua scripts
2017-04-14 22:25:46 +02:00
Oliver Brakmann
63e4fbc5ad Merge pull request #12828 from Phrohdoh/util-engine-mod-search-paths
Utility and server: Get mod search paths from env MOD_SEARCH_PATHS
2017-04-14 21:59:09 +02:00
Paul Chote
9637e1b2c7 Merge pull request #13120 from MustaphaTR/update-openra-sln-for-lua-again
Add new lua files added with new D2K missions to OpenRA.sln (Again)
2017-04-14 14:54:56 +01:00
rob-v
ee91396984 Add exception to Archive extraction failed (Invalid archive) error ##12985 2017-04-13 20:44:03 +02:00
Mustafa Alperen Seki
cdf01cc25b Update OpenRA.sln for lua files again 2017-04-13 18:51:16 +02:00
abcdefg30
87a44023b2 Fixed VeteranProductionIcons not being disabled when Prerequisites are removed 2017-04-13 17:54:17 +02:00
Mustafa Alperen Seki
c170f658ff Add Harkonnen 3a 2017-04-13 17:53:01 +02:00
abcdefg30
81fe19ca4a Merge pull request #12966 from pchote/windows-launcher
Reorganize Windows game launcher to support per-mod launchers.
2017-04-13 15:34:10 +02:00
reaperrr
e043539805 Merge pull request #13056 from AoAGeneral/AoATD
TD Commando ScanRadius.
2017-04-12 20:39:36 +02:00
reaperrr
b0caa104f6 Merge pull request #13053 from MustaphaTR/ts-build-palette-orders
TS - Reorder the Cameos
2017-04-12 20:38:29 +02:00
reaperrr
e058eae706 Merge pull request #13063 from MustaphaTR/d2k-ordos-4
D2K - Add Ordos Mission 4
2017-04-12 20:30:25 +02:00
reaperrr
8e5fbfe227 Merge pull request #12785 from abcdefg30/atreides05
Add atreides05
2017-04-12 19:26:02 +02:00
reaperrr
fb4cb04934 Merge pull request #13066 from rob-v/MouseWheelZoomWithoutModifier
Mouse wheel zoom without modifier option
2017-04-12 19:20:28 +02:00
reaperrr
f33bf002ea Merge pull request #13109 from abcdefg30/clean
Fix the make.ps1 clean command not removing all files
2017-04-12 19:13:47 +02:00
reaperrr
882b5da20d Make TS explosions and muzzle flashes 'glow' on darker maps
The new effectglow palette is not affected by global lighting, making effects 'glow' at full light on darker maps.
Exception: pistol/rifle/machine gun piffs.
2017-04-12 19:11:24 +02:00
abcdefg30
39cdf65764 Fix the make.ps1 clean command not removing all files 2017-04-12 01:14:07 +02:00
atlimit8
6b18eb1993 Merge pull request #12977 from rob-v/RallyPointPrimaryBuilding
When changing rally point with ctrl also make primary
2017-04-11 18:05:16 -05:00
abcdefg30
035c4adeb0 Merge pull request #12909 from pchote/file-handlers
Remove oramod and orarep file type handlers from Windows and Linux.
2017-04-12 01:01:34 +02:00
rob-v
a11ff104a2 Lost players except Host can not pause game #12227 2017-04-11 21:40:59 +02:00
rob-v
9216427c2b RepairableNearUnitsWithRepairCursor #12361 2017-04-11 19:03:41 +02:00
abcdefg30
739653ce37 Merge pull request #13089 from rob-v/FixPreDamagedTilesHealth
Fix Pre-damaged bridge tiles visually transform to new #13076
2017-04-11 18:22:01 +02:00
Paul Chote
bbbf3b086b Add multi-resolution RA logo icon. 2017-04-11 17:17:47 +01:00
Paul Chote
2997f31bc3 Set OpenRA.Game.exe icon to match the mod. 2017-04-11 17:17:47 +01:00
Paul Chote
8e96d85d24 Allow runtime mod to be customized. 2017-04-11 17:15:22 +01:00
Paul Chote
31a91a0269 Allow FAQ URL to be customized. 2017-04-11 17:15:21 +01:00
Paul Chote
044a5e18ee Allow mod display name to be customized. 2017-04-11 17:15:21 +01:00
Paul Chote
005b4166cc Move Windows launcher compilation to packaging scripts. 2017-04-11 17:15:21 +01:00
Paul Chote
35249c1faf Remove windows icon from OpenRA.Game.exe. 2017-04-11 17:15:20 +01:00
Paul Chote
a853d431fc Remove long unneeded tools target. 2017-04-11 17:15:20 +01:00
abcdefg30
3808a1885e Merge pull request #12976 from rob-v/ConnectionFailedCustomMap
Connection Failed when trying to join custom map #12881
2017-04-11 13:15:23 +02:00
abcdefg30
e37667efb6 Merge pull request #12606 from reaperrr/forward-bombs2
Add forward movement support to GravityBomb
2017-04-11 13:07:15 +02:00
abcdefg30
60531c6eef Merge pull request #13088 from pchote/muzzle-fix
Fix duplicate muzzle rendering.
2017-04-11 12:58:47 +02:00
atlimit8
b0187dd646 Added (Boolean|Integer)Expression subclasses of VariableExpression 2017-04-11 02:52:54 -05:00
atlimit8
e73d3922dd Rename ConditionExpression => VariableExpression 2017-04-11 01:26:38 -05:00
Jean-Rémy Buchs
fc725c6c0c add GPLv3+ header to all lua scripts 2017-04-10 21:13:51 +02:00
rob-v
e87a96f2b8 Fix/Disable Edge scroll while standard (middle mouse) scroll 2017-04-10 19:56:53 +02:00
Kyrylo Silin
09c610e2cc mods/ra/maps: update Winter Storm
Map link: http://resource.openra.net/maps/20503/

Changes:

* Renamed from `Winter Storm 2` to `Winter Storm`
* Decorated the chain links near middle oil derricks
* Resized the map from 89x82 to 89x86 to add more sea tiles to the top
  and to the bottom
* Fixed broken tile near the ridge to the middle right
2017-04-10 10:32:21 +03:00
reaperrr
1fa8286f1e Merge pull request #13085 from kyrylo/tandem-update
mods/ra/maps: update Tandem
2017-04-10 00:31:28 +02:00
reaperrr
563d9abce9 Merge pull request #13083 from kyrylo/behind-the-veil-update
mods/ra/maps: update Behind the Veil
2017-04-10 00:22:28 +02:00
abcdefg30
14ece703ef Fix allies06a freezing when yaks try to attack camo pillboxes 2017-04-09 15:50:27 +02:00
Mustafa Alperen Seki
2ca3a1d120 Reorder the TS Cameos 2017-04-09 15:24:49 +02:00
rob-v
4b652aa894 Fix Pre-damaged bridge tiles visually transform to new when attacked #13076 2017-04-09 14:50:36 +02:00
atlimit8
c69a85a328 Merge pull request #12992 from pchote/launch-game-dot-sh
Overhaul launch-game.sh for OS X/Linux/POSIX
2017-04-09 07:13:14 -05:00
Paul Chote
b5068facdc Fix duplicate muzzle rendering. 2017-04-09 12:41:53 +01:00
Paul Chote
5c0674d695 Merge pull request #13048 from reaperrr/fix-ts-lights
Fix some TS building overlays
2017-04-09 11:45:04 +01:00
Paul Chote
77af9ca01d Overhaul launch-game.sh
- Adds macOS support
- Adds mod chooser dialog if zenity available
- Improved text-mode output when zenity not available.
2017-04-09 11:33:27 +01:00
Paul Chote
d7c710e5fc Remove oramod and orarep file type handlers. 2017-04-09 11:09:14 +01:00
Kyrylo Silin
2c678a240c mods/ra/maps: update Tandem
Map link: http://resource.openra.net/maps/20495/

Changes:

* Fixed some bad tiles (thanks to Frame Limiter)

  > Bad tile: 75,45
  > Road tiles: 98,59 , 50,12

* Changed author name from `Kyrylo` to `Kyrylo Silin`
2017-04-09 12:02:36 +03:00
Kyrylo Silin
6d84079a94 mods/ra/maps: update Behind The Veil
Map link: http://resource.openra.net/maps/20494/

Changes:

* Renamed from `Behind The Veil` to `Behind the Veil`
* Replaced chain link with walls in the middle to protect oil derricks
  from direct attacks
* Added barrels to the middle area. A middle oil derrick can be
  captured only from 2 spots (if barrels are not destroyed)
* Added barrels between side ridges
* Fixed some bad road tiles (thanks to Frame Limiter)
* Widen side passages to corner expansions by 1 cell
2017-04-09 11:36:22 +03:00
Oliver Brakmann
3f4f56d728 Merge pull request #13073 from atlimit8/fix-ConditionManager.GrantCondition-doc
Fix ConditionManager.GrantCondition doc
2017-04-08 23:38:17 +02:00
Oliver Brakmann
92bf1f43af Merge pull request #13079 from pchote/fix-carryall-crash
Fix crash when carryall cargo is killed on same tick as pickup.
2017-04-08 22:49:14 +02:00
Oliver Brakmann
59d6b14e06 Merge pull request #13069 from abcdefg30/mtmTran
Fix the extraction helicopter not showing up in Monster Tank Madness
2017-04-08 22:43:27 +02:00
Paul Chote
a82e835f87 Set sensible initial turret facings. 2017-04-08 21:30:38 +01:00
Oliver Brakmann
b9f0504380 Fix friendly monster tanks not revealing shroud in Monster Tank Madness 2017-04-08 20:55:40 +02:00
Paul Chote
043d7587a6 Fix crash when carryall cargo is killed on same tick as pickup. 2017-04-08 12:58:18 +01:00
atlimit8
8f2f54f92f Fix ConditionManager.GrantCondition doc 2017-04-06 22:05:16 -05:00
abcdefg30
8f50052a1c Remove a misplaced barrel 2017-04-05 22:27:39 +02:00
abcdefg30
009cbb74f5 Fix Oil Pumps spawning infantry on death 2017-04-05 22:19:55 +02:00
abcdefg30
d6cf3b35b6 Fix the explosions of the civilian buildings
- it looked weird when they spawned civilians
- other buildings on the map exploded with the wrong explosion
2017-04-05 22:16:37 +02:00
abcdefg30
e4d3712205 Set the initial cash to 0 2017-04-05 21:53:31 +02:00
abcdefg30
49c3dfe2fc Fix the extraction helicopter not showing up in Monster Tank Madness 2017-04-05 21:52:19 +02:00
Oliver Brakmann
737764a47a Merge pull request #13019 from gdavegdave/bleed
Update the official cnc/TD map pool
2017-04-05 21:25:25 +02:00
GDave
d6b9304fd8 Update the official cnc/TD map pool 2017-04-05 11:32:42 +01:00
rob-v
6217cfbcd2 Mouse wheel zoom without modifier option 2017-04-05 10:57:40 +02:00
Mustafa Alperen Seki
1c3276c935 Add Ordos 4 2017-04-05 09:19:17 +02:00
abcdefg30
96e2b4fe70 Add atreides-05 2017-04-04 23:23:44 +02:00
Taryn Hill
4d5f9e0de7 Server: Get mod search paths from env MOD_SEARCH_PATHS 2017-04-03 17:58:44 -05:00
abcdefg30
62a3099215 Merge pull request #13047 from MustaphaTR/d2k-ordos-2b
D2K - Add Ordos Mission 2b
2017-04-03 22:07:53 +02:00
Mustafa Alperen Seki
2c8b2c5c7d Add Ordos 2b 2017-04-03 19:57:24 +02:00
rob-v
ffb639bd7c Added tooltip to Lobby Map title #12930 #12595 2017-04-03 10:11:29 +02:00
atlimit8
1afdcfb749 Merge pull request #12906 from pchote/project-args
Allow specific mods to be launched from MD/XS >= 6.1 GUI.
2017-04-02 21:53:52 -05:00
atlimit8
ee260af064 Merge pull request #13021 from abcdefg30/idleActivity
FlyCircle and HeliFlyCircle count as idle activities.
2017-04-02 21:11:37 -05:00
Taryn Hill
d095ccf668 Utility: Get mod search paths from env MOD_SEARCH_PATHS 2017-04-02 18:49:03 -05:00
AoAGeneral
af85ca8f18 TD Commando ScanRadius. 2017-04-02 14:01:31 -07:00
abcdefg30
6b4700b24f Merge pull request #13045 from reaperrr/fix-ts-grenpal
Fix palette and disable false Report of TS Grenade
2017-04-02 22:32:31 +02:00
Oliver Brakmann
d33a0105a2 Merge pull request #13042 from AoAGeneral/AoATD
TD Artillery/MRLS Vision.
2017-04-02 22:00:59 +02:00
Oliver Brakmann
11f85a1a36 Merge pull request #13020 from abcdefg30/airHunt
Fixed aircraft not being able to hunt
2017-04-02 21:40:34 +02:00
rob-v
c3255e275c Connection Failed when trying to join custom map #12881 2017-04-02 16:26:13 +02:00
Paul Chote
8b9c363222 Merge pull request #12888 from jrb0001/bleed
Load debug symbols for mods if they are loaded from the filesystem
2017-04-02 14:56:17 +01:00
Oliver Brakmann
832ae3149d Merge pull request #13033 from pchote/launch-game-dot-cmd
Add a windows version of the launch-game script.
2017-04-01 19:36:02 +02:00
Oliver Brakmann
b492e1e891 Merge pull request #12973 from rob-v/SortPlayingGamesInLobby
Sort 'Playing' games in the lobby by play time. #12959
2017-04-01 19:20:01 +02:00
reaperrr
d9b3d0fd84 Fix TS helipad anim speed
Too slow on bleed compared to original, especially the GDI one.
2017-04-01 16:39:11 +02:00
reaperrr
8ee67a4438 Fix TS ConYard top lights anim speed
Way too slow on bleed compared to original
2017-04-01 16:35:04 +02:00
reaperrr
fd717041ae Fix TS factory/barracks lights
In TS,
-GDI Factory lights were all idle and didn't have a damaged state
-GDI Barracks lights were all idle, and flag anim played more slowly
-Hand of Nod lights were all idle
-Nod Factory lights were idle
2017-04-01 16:30:20 +02:00
reaperrr
7ba8a19862 Fix palette and disable false Report of TS Grenade 2017-04-01 15:06:09 +02:00
reaperrr
783eb1e9ea Merge pull request #13031 from FrameLimiter/patch-3
Fixed vision for aircraft husks under Gap
2017-04-01 14:22:08 +02:00
abcdefg30
0fa6c7ed3c Merge pull request #12993 from reaperrr/fix-ts-obsicon
Fix TS observer flag alignment
2017-04-01 13:28:36 +02:00
AoAGeneral
537184b65c TD Artillery/MRLS Vision.
This is changing the vision of Artillery and MRLS from 8c0 to 5c0.

The reason behind this is because we have scouting artillery and MRLS units that have a much larger vision range then infantry and the same vision as hummers and buggies. This turns into games where people build infantry and artillery/MRLS armies and march of death to the enemy. Its more counterable in 1v1 and 2v2 but team games of 3v3+ it becomes incredibly spammy of these units and hard to stop.
2017-03-31 15:04:32 -07:00
reaperrr
4f07a00994 Merge pull request #13038 from reaperrr/misc-cleanups-0317
Misc yaml style fixes (all mods)
2017-03-31 12:27:56 +02:00
reaperrr
df85ea222a TS yaml style fixes
To reduce upgrade rule 'noise' a little.
2017-03-31 11:23:44 +02:00
reaperrr
cf8db74d85 RA yaml style fixes
To reduce upgrade rule noise a little.
2017-03-31 11:23:42 +02:00
reaperrr
2172d91efb Add newline to TD shellmap's map.yaml
To avoid upgrade rule 'noise'.
2017-03-31 11:00:04 +02:00
reaperrr
4fdda9efd2 Remove wrong space and 2nd free line from d2k yamls 2017-03-31 10:55:01 +02:00
Paul Chote
ae7a7418eb Add a windows version of the launch-game script. 2017-03-29 21:09:13 +01:00
reaperrr
edc1753e22 Update GravityBomb velocity after position
Otherwise launch velocity would already be Velocity + Acceleration.
2017-03-29 19:30:55 +02:00
reaperrr
7fdbe10319 Upgrade rule for GravityBomb velocity/accel changes 2017-03-29 19:30:54 +02:00
reaperrr
e1e47e7e0d Tweak TS Orca bomb fall behavior 2017-03-29 19:30:52 +02:00
reaperrr
5b617cf6e5 Refactor GravityBomb velocity/acceleration 2017-03-29 19:30:51 +02:00
FrameLimiter
b59f1f39fe Fixed vision for aircraft husks under Gap. 2017-03-29 11:42:32 -04:00
reaperrr
aa3f21632c Merge pull request #12880 from MustaphaTR/d2k-ordos-2a
D2K - Add Ordos Mission 2a
2017-03-29 16:52:19 +02:00
atlimit8
4c32e23f89 Merge pull request #12634 from GraionDilach/bullet-airburst
Implement airburst support to Bullet.
2017-03-28 17:53:24 -05:00
reaperrr
bfc0f7f9e6 Merge pull request #12997 from SoScared/mapEnsioFix
[RA] [Map pool] Fix tile errors on various maps.
2017-03-28 22:39:29 +02:00
Mustafa Alperen Seki
7f68c38e72 Add Ordos 2a 2017-03-27 17:19:54 +02:00
abcdefg30
dac8a8e4f6 Merge pull request #13024 from MustaphaTR/d2k-remove-sonic-tank-immunity
D2K - Remove Sonic Tanks' immunity to other friendly Sonic Tanks.
2017-03-26 19:26:23 +02:00
Mustafa Alperen Seki
5ccfcb1cb9 Remove Sonic Tanks' immunity to other friendly sonic tanks. 2017-03-26 10:15:19 +02:00
SoScared
d2a0535442 fix tile errors on various maps 2017-03-25 15:36:03 +01:00
abcdefg30
ae111248f3 Have some activities count as idle activities 2017-03-24 18:06:10 +01:00
abcdefg30
4d335af9fc Fixed aircraft not being able to hunt 2017-03-24 17:40:11 +01:00
rob-v
bfcb37e1b7 When changing rally point also make primary building #12855 2017-03-22 16:41:30 +01:00
atlimit8
b6810f3dd3 Merge pull request #12986 from abcdefg30/withDesc
Expand the documentation of Reinforce(WithTransport)
2017-03-22 10:23:36 -05:00
abcdefg30
cc67f9328c Merge pull request #12974 from rob-v/IngameMessagePrefixes
Unify ingame message prefixes. #12923
2017-03-19 23:13:59 +01:00
atlimit8
ff998fd552 Merge pull request #12981 from abcdefg30/grantOwner
Fix GrantConditionOnPrerequisite not refreshing when the actor's owner changes.
2017-03-19 17:09:08 -05:00
abcdefg30
d819f3206e Merge pull request #12882 from abc013/ContrailFix
Fix contrail gets rendered between loading in and loading out position
2017-03-19 23:03:33 +01:00
atlimit8
a49227c494 Merge pull request #12862 from abcdefg30/captureCursor
Minor revision to CaptureOrderTargeter.
2017-03-19 10:54:22 -05:00
abc013
b7ca740155 Fix contrail gets rendered between loading in and loading out position 2017-03-19 09:25:39 +01:00
abcdefg30
aa99c3cd40 Merge pull request #12729 from Mailaender/sunstroke
Added Firestorm map Sunstroke
2017-03-19 03:01:05 +01:00
reaperrr
294259c726 Set up custom creeps on Sunstroke 2017-03-19 02:51:33 +01:00
reaperrr
44254472d5 Disable fixed palette for TS old base buildings 2017-03-19 02:51:33 +01:00
reaperrr
ee63835778 Fix allowed terrain types of veins 2017-03-19 02:51:33 +01:00
Matthias Mailänder
1291d1a53d Add the custom rules
sunrise effect and TW1 units.
2017-03-19 02:51:25 +01:00
Matthias Mailänder
49d26fd238 Outcomment high bridge huts and low bridge segments. 2017-03-19 02:34:29 +01:00
Matthias Mailänder
37101bf4f0 Import the Sunstroke map
http://www.ppmforums.com/viewtopic.php?t=15379
2017-03-19 02:34:28 +01:00
abcdefg30
e1dda2bf54 Fix GrantConditionOnPrerequisite not refreshing when the actor's owner changes 2017-03-19 02:30:45 +01:00
abcdefg30
b2b3390bc0 Move GrantConditionOnPrerequisite into the Conditions folder 2017-03-19 02:29:26 +01:00
abcdefg30
ceab7a222e Merge pull request #12902 from MustaphaTR/d2k-add-6PLAY3
D2K - Add Mauddib's Cave to map pool.
2017-03-19 02:18:49 +01:00
reaperrr
7a3bae33ea Fix TS observer flag position 2017-03-19 00:20:02 +01:00
abcdefg30
00d854f31b Merge pull request #12984 from MustaphaTR/ts-add-tech-levels
TS - Add Tech Levels
2017-03-18 22:49:01 +01:00
rob-v
bad2c1c2bf Unify ingame message prefixes. #12923
Unify ingame message prefixes. #12923
2017-03-18 21:46:30 +01:00
Mustafa Alperen Seki
66d50ba0b5 Add Tech Levels to Tiberian Sun 2017-03-18 20:08:44 +02:00
reaperrr
245ca7d996 Merge pull request #12989 from abcdefg30/onDoc
Add a note about EnemyWatcher being required for On(Player)Discovered
2017-03-18 18:25:11 +01:00
Mustafa Alperen Seki
0e345b465c Add 6PLAY3 2017-03-18 19:21:40 +02:00
abcdefg30
b295f36fa7 Merge pull request #12987 from reaperrr/fast-gamespeed
Add "Fast" game speed to all mods
2017-03-18 18:12:45 +01:00
abcdefg30
a36a77d637 Add a note about EnemyWatcher being required for On(Player)Discovered 2017-03-18 18:09:20 +01:00
abcdefg30
7bb8cbf867 Merge pull request #12901 from MustaphaTR/d2k-add-6PLAY2
D2K - Add Carthag to map pool.
2017-03-18 18:00:46 +01:00
abcdefg30
c19463f5b4 Merge pull request #12903 from MustaphaTR/d2k-add-6PLAY4
D2K - Add Thufir's Point to map pool.
2017-03-18 17:58:48 +01:00
abcdefg30
7491ede65a Merge pull request #12904 from MustaphaTR/d2k-add-6PLAY5
D2K - Add Leto's Erg to map pool.
2017-03-18 17:55:34 +01:00
abcdefg30
1abe93f25a Merge pull request #12900 from MustaphaTR/d2k-add-6PLAY1
D2K - Add Arakeen to map pool.
2017-03-18 17:51:22 +01:00
reaperrr
785e20e0f3 Add "Fast" game speed to all mods
Sitting smack in the middle between Default and "Faster", except for order delay (which is same as Faster to avoid rejected/dropped orders).
2017-03-18 17:45:02 +01:00
abcdefg30
6069a12973 Expand the documentation of Reinforce(WithTransport) 2017-03-18 16:40:35 +01:00
Zimmermann Gyula
902d2a0016 Implement airburst support to Bullet. 2017-03-18 15:05:06 +01:00
Mustafa Alperen Seki
31d5d048fe Add 6PLAY1 2017-03-18 15:23:46 +02:00
reaperrr
28e204a8ae Merge pull request #12982 from rob-v/MissionsDifficultyTough
Real tough guy difficulty doesn't fit the UI #12844
2017-03-18 14:23:43 +01:00
Mustafa Alperen Seki
8fd9f98180 Add 6PLAY2 2017-03-18 15:22:24 +02:00
Mustafa Alperen Seki
dd12d70ded Add 6PLAY4 2017-03-18 15:19:33 +02:00
Mustafa Alperen Seki
06f6a8646f Add 6PLAY5 2017-03-18 15:18:14 +02:00
reaperrr
02b82ae344 Merge pull request #12860 from abcdefg30/removeGroupProxy
Remove the dead ActorGroupProxy trait
2017-03-18 14:04:28 +01:00
reaperrr
d0e859cbeb Merge pull request #12784 from abcdefg30/d2kTiles
Add missing tiles to arrakis.yaml and fixed the map import
2017-03-18 13:58:12 +01:00
reaperrr
620ae45cb3 Merge pull request #12747 from atlimit8/Pluggable-Requirements
Prevent duplicate upgrades (plugs) to GDI Upgrade Center (Pluggable Requirements)
2017-03-18 13:55:30 +01:00
abcdefg30
880f90345e Add an upgrade rule 2017-03-18 13:42:49 +01:00
abcdefg30
5e923ff091 Remove the dead ActorGroupProxy trait 2017-03-18 13:40:05 +01:00
rob-v
d7684ee680 Real tough guy difficulty doesn't fit the UI #12844 2017-03-17 22:31:02 +01:00
abcdefg30
fbd62c242f Merge pull request #12969 from atlimit8/UncloakOnDamageSign
UncloakOn: Damage, Heal, SelfHeal split
2017-03-17 21:12:10 +01:00
C. Helmig
b331065b87 Add the missing d2k tiles for the MP maps 2017-03-17 20:00:25 +01:00
abcdefg30
80f4feeab3 Let the map importer account for duplicate tiles 2017-03-17 20:00:18 +01:00
abcdefg30
a6078b6e46 Add missing templates to arrakis.yaml 2017-03-17 19:58:32 +01:00
Jean-Rémy Buchs
fbd3a2efea Load debug symbols (.mdb on mono only; .pdb on .NET only) for mods if they are present 2017-03-16 17:22:59 +01:00
rob-v
f38c5f3380 Sort 'Playing' games in the lobby by play time. #12959 2017-03-16 17:17:35 +01:00
atlimit8
abad50d2b9 MiniYaml upgrade rule for UncloakOn: Damage => Damage, Heal, SelfHeal 2017-03-15 20:26:08 -05:00
atlimit8
cca7eda530 Restore CloakOn: Heal behavior in mods via MiniYaml changes. 2017-03-15 20:26:08 -05:00
atlimit8
d3e4720507 Added UncloakOn: SelfHeal (not overlapping with Heal). 2017-03-15 20:26:05 -05:00
atlimit8
aa8c434668 Make Repair activity host actor the attacker for repairs. 2017-03-15 20:25:12 -05:00
atlimit8
8e7de1a4fa Make UncloakOn Damage check sign with added Heal value for UncloakOn. 2017-03-15 20:25:08 -05:00
rob-v
e766c6f342 Global chat name is reset when connecting #12325
removed TrySetNickname(Game.Settings.Player.Name) in GlobalChat ctor overwriting Chat.Nickname. instead of removing, it could be replaced by TrySetNickname(Game.Settings.Chat.Nickname)
2017-03-15 23:53:43 +01:00
Paul Chote
34a37421f6 Allow specific mods to be launched from VS/MD gui. 2017-03-15 22:01:01 +00:00
abcdefg30
eb77c57ac3 Merge pull request #12968 from SoScared/DualColdFrontReverse
[RA] Map Pool - Reverse alteration of Dual Cold Front
2017-03-15 22:16:08 +01:00
abcdefg30
bbc08627ac Merge pull request #12970 from SoScared/WallTweak
[RA] [Balance] Tweak price/production of S.Bags/Fence/Walls
2017-03-15 22:00:48 +01:00
Paul Chote
67144fe66b Merge pull request #12842 from abc013/Allies06SubFix
Allies 06a: Make the AI only build submarines if the player has a shipyard
2017-03-15 20:12:18 +00:00
Paul Chote
395d31b249 Merge pull request #12967 from SoScared/ReverseFriendlyMines
Reverse making friendly units aware of friendly mines.
2017-03-15 19:58:57 +00:00
SoScared
e0985162a0 Double price/production of S.Bags/Fence/Walls 2017-03-15 16:55:29 +01:00
SoScared
681dcc81a1 Reverse alteration of Dual Cold Front 2017-03-15 00:26:16 +01:00
SoScared
33bcdb10ba Reverse making friendly units aware of friendly mines. 2017-03-14 20:46:19 +01:00
abc013
046427beea Polished the mission objectives in allies06a 2017-03-14 19:29:40 +01:00
abc013
db4554acec Make the AI only build submarines if the player has a shipyard 2017-03-14 17:31:03 +01:00
abcdefg30
3aeddbf9bd Merge pull request #12953 from MustaphaTR/d2k-add-stealth-detection-to-turrets
D2K - Make defences detect Cloak
2017-03-14 15:48:56 +01:00
reaperrr
4c32803c16 Merge pull request #12945 from MustaphaTR/add-noozes-1-tile-cliffs
RA/TD - Add 1 Tile Cliffs by Nooze
2017-03-13 19:59:51 +01:00
Mustafa Alperen Seki
4f0e317371 Add Nooze's 1 Tile Cliffs to TD 2017-03-13 17:20:05 +02:00
Mustafa Alperen Seki
ab6b7c8551 Add Nooze's 1 Tile Cliffs to RA 2017-03-13 17:19:46 +02:00
reaperrr
d138a05baf Merge pull request #12946 from pchote/fix-serverquery-crash
Fix crash when master server query returns unexpected data.
2017-03-12 18:44:06 +01:00
Mustafa Alperen Seki
dcf1cfe118 Make defences detect cloak. 2017-03-12 16:04:51 +02:00
atlimit8
fbc850a73f Prevent duplicate upgrades (plugs) to GDI Upgrade Center 2017-03-12 03:43:42 -05:00
atlimit8
08a71795d1 PluggableInfo.Requirements entry overrides in-use check now to allow swapping. 2017-03-12 03:43:42 -05:00
atlimit8
daf4eb812c Added ConditionExpression Requirements for plugs to Pluggable 2017-03-12 03:43:35 -05:00
Oliver Brakmann
63ee126898 Merge pull request #12947 from pchote/fix-obelisk-targeting
Fix obelisk targeting.
2017-03-11 22:28:42 +01:00
reaperrr
0847cb9d31 Merge pull request #12951 from SoScared/fixGapEffect_vs_Airplanes
Fix RevealsShroud@GAPGEN vs MiG/YAK
2017-03-11 17:58:20 +01:00
SoScared
daeba01bc1 fixed RevealsShroud@GAPGEN vs MiG/YAK 2017-03-11 13:44:44 +01:00
Paul Chote
c45634ed8d Merge pull request #12941 from forcecore/ai_ref_placement
HackyAI now builds refinery near ore.
2017-03-11 12:40:48 +00:00
Paul Chote
f3cfe24e11 Merge pull request #12942 from SoScared/mapswap5
[RA] Add/remove official maps 5.
2017-03-11 11:56:47 +00:00
Paul Chote
a3030aa074 Merge pull request #12933 from SoScared/mapswap4
[RA] Add/remove official maps 4.
2017-03-11 11:41:48 +00:00
reaperrr
d86ff6696a Merge pull request #12887 from MustaphaTR/ra-make-turkish-flag-outline-blue
Change Turkish Flag outline to Blue
2017-03-10 22:19:43 +01:00
reaperrr
da2330a116 Merge pull request #12935 from pchote/td-map-tweaks
Update TD playtest maps
2017-03-10 21:22:57 +01:00
Paul Chote
4d2563cc11 Remove unnecessary AttackTesla : AttackOmni subclass. 2017-03-10 19:42:18 +00:00
Paul Chote
a9cfbd9ad7 Fix Obelisk not dropping targets when they move out of range. 2017-03-10 19:42:15 +00:00
Paul Chote
00b1bc7cd2 Fix crash when master server query returns unexpected data. 2017-03-10 18:38:35 +00:00
SoScared
2f48e67e6d final 6p plus map pool alteration 2017-03-09 18:24:31 +01:00
Forcecore
7588d6708b HackyAI now builds refinery near ore. 2017-03-09 09:42:56 -06:00
abcdefg30
5e737980fe Merge pull request #12910 from pchote/fix-bogus-enumeration-issue
Fix spurious warnings when the support mods dir doesn't exist.
2017-03-09 09:19:55 +01:00
SoScared
73698c2ecb final 2-4 player map alteration 2017-03-08 23:51:03 +01:00
Paul Chote
f6b11bb662 Remove TD map Vectors of Battle (10p). 2017-03-08 22:06:16 +00:00
Paul Chote
e055db94ab Update TD map Order of Battle. 2017-03-08 22:05:50 +00:00
Paul Chote
82d5979eb1 Update TD map Axis of Advance. 2017-03-08 22:05:39 +00:00
Oliver Brakmann
3499325f23 Merge pull request #12921 from reaperrr/ts-economy
Fix TS economy to match original
2017-03-08 22:19:30 +01:00
Oliver Brakmann
439a4a70d4 Merge pull request #12908 from reaperrr/polish-poseidon
Polish Morbid Aimless Poseidon
2017-03-08 22:03:44 +01:00
Jean-Rémy Buchs
28cd480225 Load debug symbols (.mdb on mono only; .pdb) for mods if they are present 2017-03-08 20:11:41 +01:00
Jean-Rémy Buchs
f999001caf Load debug symbols (.mdb on mono only; .pdb) for mods if they are present 2017-03-07 18:30:08 +01:00
abcdefg30
c87e1c789a Merge pull request #12920 from reaperrr/fix-spy-atk
Fix RA Spy attack sequence
2017-03-06 22:40:35 +01:00
reaperrr
386e5b3772 Limit TS AI silos to 2
The up to 4 refineries already provide a total of 8000 credits storage, 2 silos for additional 3000 should be more than the AI will likely ever need.
2017-03-06 04:00:38 +01:00
reaperrr
1d636082a3 Fix TS harvester load, unload and movement speed
Matching original.
2017-03-06 03:55:22 +01:00
reaperrr
a40639c559 Fix TS tiberium values
25 for green, 40 for blue (Vinifera). Alternate blue tib (Aboreus) with value 30 might be added later.
2017-03-06 03:54:25 +01:00
reaperrr
062eef37f4 Fix TS silo storage pip color 2017-03-06 03:52:59 +01:00
reaperrr
d7a49daae8 Fix TS refinery storage capacity to match original 2017-03-06 03:52:37 +01:00
reaperrr
e57fd37697 Fix RA Spy attack sequence 2017-03-06 02:30:48 +01:00
Paul Chote
407ecbc397 Fix spurious warnings when the support mods dir doesn't exist. 2017-03-05 19:13:07 +00:00
reaperrr
e25cb2914f Polish Morbid Aimless Poseidon
A lot of the cliffs, in particular "north-facing" ones, only reptitively used a single variant, and in some cases the one that should only be used for the "left ending" of a cliff. I fixed the latter and added variation to the former cases.
2017-03-05 17:07:11 +01:00
reaperrr
120efcedaa Merge pull request #12859 from abcdefg30/supportPrereqs
Fix support powers not being enabled by cheats
2017-03-05 16:27:43 +01:00
reaperrr
efcaa86db6 Merge pull request #12889 from Mailaender/bye
Removed myself from the active developer list
2017-03-05 15:32:14 +01:00
abcdefg30
5d220e3e6b Merge pull request #12891 from pchote/register-mods-first-time
Add the current mod to the external mods database on launch.
2017-03-04 18:51:43 +01:00
Paul Chote
1dddb43bd6 Add the current mod to the external mods database on launch. 2017-03-04 17:43:48 +00:00
abcdefg30
72ad76d807 Merge pull request #12892 from pchote/fix-makefile
Fix makefile install rule.
2017-03-04 18:40:11 +01:00
Jean-Rémy Buchs
a0598d2b9c Load debug symbols (.mdb .pdb) for mods if they are present 2017-03-04 17:37:40 +01:00
Paul Chote
f6c607c461 Fix makefile install rule. 2017-03-04 16:10:03 +00:00
Oliver Brakmann
8d2531f4d5 Merge pull request #12885 from pchote/fix-nsfremen-warning
Fix lint warnings on nsfremen.
2017-03-04 15:59:06 +01:00
abcdefg30
c765915c57 Merge pull request #12886 from pchote/fix-transform-exploit
Fix invalid Transform location exploit.
2017-03-04 15:54:46 +01:00
Jean-Rémy Buchs
19616c059c Load debug symbols for mods if they are present 2017-03-04 14:20:16 +01:00
Matthias Mailänder
06c7dad50e Move myself to previous developers. 2017-03-04 12:56:34 +01:00
Jean-Rémy Buchs
d3491c2979 Load debug symbols for mods if they are loaded from the filesystem 2017-03-04 12:38:07 +01:00
Mustafa Alperen Seki
7ad63bd3c7 Change Turkish Flag outline to Blue. 2017-03-04 08:54:18 +02:00
Paul Chote
e98c2eef68 Fix invalid Transform location exploit. 2017-03-04 00:17:38 +00:00
Paul Chote
f3f3e361d3 Fix lint warnings on nsfremen. 2017-03-03 22:55:56 +00:00
Paul Chote
6fbd6bcb4c Merge pull request #12681 from MustaphaTR/ra-make-infiltrates-upgradeable
Make Infiltrates Upgradeable
2017-03-03 22:52:21 +00:00
Mustafa Alperen Seki
fd595660ec Add condition support to Infiltrates. 2017-03-03 22:40:20 +00:00
Paul Chote
2e605bb6cb Merge pull request #12759 from forcecore/cloak_unhardcoding
Unhardcode disableCloak on critical HP (#12741)
2017-03-03 22:31:37 +00:00
Paul Chote
6aa2f962b1 Merge pull request #12769 from abcdefg30/luaTile
Add a lua function to query the terrain type of a cell
2017-03-03 22:19:58 +00:00
Paul Chote
1811e17a5f Merge pull request #12841 from ltem/d2k-fix-lights
Fix welding lights of Dune 2000 structures
2017-03-03 22:17:28 +00:00
Paul Chote
e7382760ef Merge pull request #12875 from abc013/DisguiseTooltipFix
Rename DisguiseToolTip to DisguiseTooltip
2017-03-03 22:00:29 +00:00
Paul Chote
b31451483a Merge pull request #12867 from SoScared/mapswap3
[RA] Add/remove official maps 3.
2017-03-03 21:55:36 +00:00
Paul Chote
c08efb9831 Merge pull request #12818 from reaperrr/fix-td-mission-prereqs
Fix that some buildings are incorrectly available in TD missions
2017-03-03 21:51:11 +00:00
Paul Chote
365df03c40 Merge pull request #12869 from MustaphaTR/new-lua-files-on-openra-sln
Add new lua files added with new D2K missions to OpenRA.sln
2017-03-03 21:37:41 +00:00
Paul Chote
77534c2d10 Merge pull request #12863 from abcdefg30/ignoreTargetUpgrades
Make AutoTargetIgnore upgradeable
2017-03-03 21:27:38 +00:00
reaperrr
5e4fa5b311 Merge pull request #12798 from dtluna/bleed
Official Map Pool Overhaul for TD
2017-03-03 19:45:33 +01:00
dtluna
d00f3af90c Official map pool overhaul for TD 2017-03-03 18:23:33 +03:00
reaperrr
808b457086 Merge pull request #12832 from MustaphaTR/d2k-harkonnen2b
D2K - Add Harkonnen Mission 2b
2017-03-03 15:42:16 +01:00
abc013
423744451b Rename DisguiseToolTip to DisguiseTooltip 2017-03-03 15:21:33 +01:00
reaperrr
ef6e038d1b Fix prerequisites of GDI 3 and GDI 5
Guard Tower and walls should not yet be buildable at this point
2017-03-03 14:43:27 +01:00
reaperrr
132872488f Fix prerequisites in both Nod 3 missions
Disables chainlink fences and sandbags.
2017-03-03 14:42:26 +01:00
reaperrr
43731526fb Fix prerequisites in GDI 1 and GDI 2
Makes sandbags and chainlink fence unbuildable.
2017-03-03 14:40:18 +01:00
Mustafa Alperen Seki
ed5e624527 Add Harkonnen2b 2017-03-01 20:52:09 +02:00
Mustafa Alperen Seki
59c71ebea5 Add new lua files to OpenRA.sln. 2017-03-01 19:45:41 +02:00
SoScared
0a17a8671f add new revision for behind the veil and northwest passage 2017-02-28 21:58:36 +01:00
reaperrr
cc3b46b580 Merge pull request #12808 from reaperrr/d2k-revealonfire
Enable enemy reveal when attacking friendly units in D2k
2017-02-27 21:29:52 +01:00
reaperrr
e06e19e39f Merge pull request #12826 from MustaphaTR/d2k-fix-carryall-owner-change
Fix that Carryalls still pick units changed their owner
2017-02-27 21:14:46 +01:00
reaperrr
cbd693c89f Merge pull request #12693 from abcdefg30/invalidContains
Give a proper error when a file is not found
2017-02-27 19:55:57 +01:00
abcdefg30
586dd98eb4 Merge pull request #12838 from pchote/revert-td-ref-sell-refund
Restore sell value of TD refinery.
2017-02-27 11:05:32 +01:00
abcdefg30
c833f3857f Remove DOME.IGNORE from soviet-05 2017-02-27 00:36:00 +01:00
abcdefg30
700d141c24 Make AutoTargetIgnore upgradeable 2017-02-27 00:36:00 +01:00
abcdefg30
8b7797326a Revise CaptureOrderTargeter a tiny bit 2017-02-27 00:28:18 +01:00
reaperrr
870c82e727 Merge pull request #12816 from abc013/d2kAdjustAirStrike
Adjust the drop-position of the air strike in D2k
2017-02-26 15:34:51 +01:00
Matthias Mailänder
e897d1e8fa Merge pull request #12848 from pchote/starport-anim-polish
Hide the starport animation from highlights and when not playing.
2017-02-26 11:37:00 +01:00
reaperrr
4c02112cc6 Tweak Ornithopter bombs
In the original,
- they were slower
- didn't accelerate
- had a shadow
- were dropped at lower rate
- played EXPLSML4.WAV

compared to bleed.
2017-02-25 21:14:43 +01:00
reaperrr
447269c020 Tweak D2k aircraft altitudes
The Frigate and Ornithopter were flying too low compared to the original.
2017-02-25 21:03:53 +01:00
abc013
a73e7e6103 Adjust the drop-position of the air strike in D2k 2017-02-25 21:03:53 +01:00
abcdefg30
e318c028ba Fix support powers not being enabled by cheats 2017-02-25 16:57:30 +01:00
ltem
46165f8d00 Added a condition so that the dish animation of the outpost won't be active if the structure is server damaged 2017-02-25 15:28:57 +01:00
ltem
35494b2abd Fix welding lights of Dune 2000 structures
- Fixed starport lights
- Fixed offsets and welding lights of light factory
- Fixed welding lights of high tech factory
- Fixed offsets and welding lights of heavy factory
2017-02-25 13:37:12 +01:00
reaperrr
d2ad2a1b15 Merge pull request #12837 from pchote/negative-int-negation
Make ConditionExpression ! return false for negative numbers.
2017-02-25 12:21:34 +01:00
Paul Chote
f221dd721a Hide the starport animation from highlights and when not playing. 2017-02-25 10:43:00 +00:00
forcecore
0483708487 Rename uncloaking conditions from uncloak to cloak-force-disabled
Descriptive condition name is better.
2017-02-24 20:56:52 -06:00
forcecore
53e7cf0ef1 Rules updated to unhardcode cloak diable on criticalHP
Rules updated for CNC mod (uncloak on critical HP)

STNK, stealth crate are affected

Rules updated for D2K mod (uncloak on critical HP)

Saboteur, fremen, stealth raider affected

Rules updated for RA mod (uncloak on critical HP)

Affects
Hijacker, sniper, sub, msub, hbox, stnk.
Mines are not affected, they are not exactly "stealth".
Hijackers and snipers aren't machines and should be able to hide
themselves even when they are wounded but for least surprise to
players, uncloaking stays as well.

Rules updated for TS mod (uncloak on critical HP)

Only affects STNK.
Things that are cloak generators will stay cloaked even when critical
HP! The cloak generation mechanism is by the cloak generator!
2017-02-24 20:55:06 -06:00
forcecore
28ce32d8fa damageDisabled removed from Cloak.cs (#12741)
To unhard code uncloak behavior getting disabled by the unit's critical HP.
2017-02-24 20:53:42 -06:00
Paul Chote
d6d166ee36 Restore sell value of TD refinery. 2017-02-23 22:24:27 +00:00
Paul Chote
e0ca38b878 Merge pull request #12694 from RoosterDragon/fixup-network
Fix thread-safety and dispose issues in NetworkConnection.
2017-02-23 21:04:56 +00:00
Paul Chote
1c97effbc9 Make ConditionExpression ! return false for negative numbers.
This brings it in line with C/C++ behaviour.
2017-02-23 20:23:40 +00:00
Paul Chote
22e2deee21 Merge pull request #12719 from atlimit8/ConditionExpression_with_counting
BooleanExpression => ConditionExpression with integer values for token count comparisons
2017-02-23 19:16:19 +00:00
abcdefg30
5636326dc6 Merge pull request #12811 from MustaphaTR/d2k-harkonnen2a
D2K - Add Harkonnen Mission 2a
2017-02-22 21:22:42 +01:00
Mustafa Alperen Seki
3e0b138a7e Add Harkonnen2a 2017-02-22 20:25:46 +02:00
atlimit8
47804e5fab Improve Upgrader for Upgrades => Condition expressions 2017-02-22 08:54:52 -06:00
atlimit8
67dcbd1b2c ConditionExpression: added bool constants 2017-02-22 08:54:52 -06:00
atlimit8
f605756351 ConditionExpression: Add arithmetic operations 2017-02-22 08:54:52 -06:00
atlimit8
725cc7c084 Removed StackedCondition trait 2017-02-22 08:54:52 -06:00
atlimit8
ac4f73b178 ConditionExpression: Add relation operators 2017-02-22 08:54:52 -06:00
atlimit8
bbea7642fc ConditionExpression: setup operator precedences 2017-02-22 08:54:51 -06:00
atlimit8
0fc2008f10 Added delegate creation & evaluation to ConditionExpression 2017-02-22 08:54:51 -06:00
atlimit8
d752e10799 ConditionExpression: Run syntax checks while lexing 2017-02-22 08:54:51 -06:00
atlimit8
8e6436d71c ConditionExpression: move lexing to Token class. 2017-02-22 08:54:51 -06:00
atlimit8
4537c3c7d0 ConditionExpression: reorganize tokenizer 2017-02-22 08:54:51 -06:00
atlimit8
6e393f99cb ConditionExpression: Replaced Token sub-classing with TokenTypeInfo data. 2017-02-22 08:54:51 -06:00
atlimit8
828b13a11e ConditionExpress: added TokenTypeInfo table 2017-02-22 08:54:51 -06:00
atlimit8
f9e47cd0ca ConditionExpression: Added CharClass enum for tokenizing 2017-02-22 08:54:51 -06:00
atlimit8
c70442b15e Use switch statement for operator tokenization. 2017-02-22 08:54:51 -06:00
atlimit8
73895d07e2 Numeric constants for ConditionExpression 2017-02-22 08:54:50 -06:00
atlimit8
65725efd04 Make ConditionExpression use counts. 2017-02-22 08:54:50 -06:00
atlimit8
d83dae5587 Rename BooleanExpression => ConditionExpression 2017-02-22 08:54:50 -06:00
Mustafa Alperen Seki
bf0c4f7e1a Fix that Carryalls still pick owner changed units 2017-02-21 18:04:53 +02:00
RoosterDragon
aa3024f1f8 Fix thread-safety and dispose issues in NetworkConnection.
- Calling Close() on a TcpClient is documented to also close the underlying sockets and streams for us. This means we can avoid also calling socket.Client.Close() and generating exceptions on mono.
- TcpClient is not thread-safe. However the NetworkStream returned by GetStream() is thread-safe for a single reader/single writer scenario. If we create and dispose the client on the calling thread, and pass the NetworkStream into the thread we spawn for reading, then we can avoid thread-safety issues incurred by trying to Close() the connection from another thread.
- The clean shutdown means we don't need to make the dodgy Thread.Abort() call as it will end normally, and that means we don't need a finalizer to ensure the thread is killed off.
- Refactor how receivedPackets work in EchoConnection to avoid lock(this).
- Mark connectionState and clientId as volatile since they are set from another thread.
2017-02-21 14:10:06 +00:00
reaperrr
3e2431971c Make worms reveal shroud when swallowing friendly units 2017-02-20 20:13:17 +01:00
reaperrr
6ebdac1d30 Remove bogus Buildable trait from D2k sandworm 2017-02-20 20:13:13 +01:00
reaperrr
492efcc9cd Enable RevealOnFire in D2k 2017-02-20 20:13:11 +01:00
reaperrr
79c95364fb Merge pull request #12801 from reaperrr/td-shadows
Add shadows to TD projectiles and fix Napalm bombs
2017-02-20 19:58:22 +01:00
reaperrr
0f3250f9b0 Merge pull request #12782 from abcdefg30/paraCrash
Fix airstrikes and paratroopers crashing missions
2017-02-19 19:32:06 +01:00
abcdefg30
4a14b13002 Fix missing sequences on the airstrike.proxy in cnc 2017-02-19 17:52:40 +01:00
abcdefg30
b6bc08ac25 Move airstrike.proxy to the shared campaign maprules 2017-02-19 17:50:48 +01:00
abcdefg30
4d0ac8bd14 Fix the powerproxy actors of ra missing sequences 2017-02-19 17:47:07 +01:00
abcdefg30
aa73b19ee2 Give an proper error when a file is not found 2017-02-19 17:35:22 +01:00
abcdefg30
ad5a9a85f9 Merge pull request #12804 from pchote/remove-deprecated-apis
Remove deprecated Lua APIs / upgrade rules
2017-02-19 17:25:59 +01:00
reaperrr
1dc42cf5be Merge pull request #12743 from abcdefg30/atreides04
Add Atreides04
2017-02-19 16:42:57 +01:00
abcdefg30
6b99469113 Add atreides-04 2017-02-19 16:31:26 +01:00
reaperrr
3b92c21844 Merge pull request #12796 from pchote/external-conditions-rework
Add support for per-source and total external condition caps.
2017-02-19 15:44:53 +01:00
Paul Chote
1eb5be4d4c Add StringComparison.Ordinal to StartsWith. 2017-02-19 14:19:04 +00:00
Paul Chote
c47c13a14b Remove legacy upgrade rules. 2017-02-19 14:19:04 +00:00
Paul Chote
78a3dcae85 Remove deprecated Lua APIs. 2017-02-19 14:10:39 +00:00
reaperrr
2a65251324 Use MISSILE image for Mobile SAM projectile
Fixes #12803.
2017-02-19 14:22:28 +01:00
reaperrr
2f74c766fc Fix TD Napalm bombs hitting ground instantly 2017-02-19 14:22:26 +01:00
reaperrr
5be90ab368 Enable shadows on visible TD projectiles 2017-02-19 14:22:24 +01:00
reaperrr
8d870ab585 Remove redundancy from some TD missiles
These values are inherited from ^MissileWeapon.
2017-02-19 14:22:20 +01:00
reaperrr
45076eaaa4 Merge pull request #12795 from pchote/settings-restart
Use external mod switching plumbing to restart after settings changes.
2017-02-19 13:57:05 +01:00
reaperrr
ce76b28cbf Merge pull request #12745 from SoScared/mapswap1
[RA] Add/remove official maps.
2017-02-19 12:45:33 +01:00
reaperrr
f184be945b Merge pull request #12779 from MustaphaTR/d2k-harkonnen-1b
D2K - Add Harkonnen Mission 1b
2017-02-19 12:32:33 +01:00
Paul Chote
e229ca1812 Merge pull request #12790 from Phrohdoh/fix-12789
Throw an InvalidOperationException when a mod manifest references a bogus package
2017-02-18 23:12:59 +00:00
Taryn Hill
38304bc57b Throw an InvalidOperationException when a mod manifest references a bogus package
Bogus packages are packages that:
  * Cannot be located on disk
  * Are of an unsupported format
2017-02-18 16:55:26 -06:00
Paul Chote
11df0216e5 Remove legacy restart behaviour. 2017-02-18 22:37:47 +00:00
Paul Chote
073a00a2f4 Use mod switching for settings menu restart. 2017-02-18 22:37:47 +00:00
Paul Chote
500da07565 Fix mod switching failing when launchArgs is null. 2017-02-18 22:37:47 +00:00
SoScared
dcbeb08cf5 mapswap1 2017-02-18 21:24:52 +01:00
abcdefg30
b0cf90e95b Merge pull request #12767 from SoScared/mapswap2
[RA] Add/remove official maps 2.
2017-02-18 21:09:02 +01:00
abcdefg30
1c4b5cf0c8 Merge pull request #12786 from Phrohdoh/nuget-quiet
Cut down on the amount of output generated by dependency fetching scripts
2017-02-18 21:01:21 +01:00
Paul Chote
da5a725458 Add support for per-source and total external condition caps. 2017-02-18 19:10:22 +00:00
abcdefg30
fe632c5ba4 Merge pull request #12793 from pchote/fix-utility-modlist
Fix utility mod listing.
2017-02-18 20:08:24 +01:00
Paul Chote
f19df7b509 Merge pull request #12770 from reaperrr/polish-d2k-weapons
Polish D2k weapons and add wall explosion
2017-02-17 22:04:16 +00:00
Paul Chote
ba8d17e670 Merge pull request #12783 from MustaphaTR/d2k-fix-tile-99-100
D2K - Fix tiles 99 and 100
2017-02-17 21:56:17 +00:00
Paul Chote
bc158e3240 Merge pull request #12778 from FrameLimiter/patch-2
GAP & SAM power up/down sounds.
2017-02-17 21:43:27 +00:00
Paul Chote
00b7b14f2e Fix utility mod listing. 2017-02-17 20:53:17 +00:00
Taryn Hill
eaf55a864c Merge pull request #12638 from pchote/engineargs
Add engine plumbing to support externally developed mods.
2017-02-16 20:58:41 -06:00
abcdefg30
34736717ad Merge pull request #12765 from pchote/mod-cleanup
Clean up stale metadata registrations.
2017-02-16 22:48:00 +01:00
Taryn Hill
9329ee4780 Cut down on the amount of output generated by dependency fetching scripts 2017-02-15 21:14:09 -06:00
abcdefg30
54b0cdac38 Add the Fremen as faction to d2k 2017-02-15 21:47:04 +01:00
SoScared
c8a8e29d28 Add/Alter/Remove some maps 2017-02-15 21:04:20 +01:00
Mustafa Alperen Seki
05cf09f9ac Fix tiles 99 and 100 2017-02-15 18:57:20 +02:00
reaperrr
ab161c0a24 Merge pull request #12781 from MustaphaTR/d2k-fix-195
D2K - Fix tile 195
2017-02-15 17:53:25 +01:00
Mustafa Alperen Seki
3eb03e0743 Fix tile 195 2017-02-15 16:48:49 +02:00
Mustafa Alperen Seki
a3a5ba03b0 Add Harkonnen1b 2017-02-14 17:55:20 +02:00
FrameLimiter
1a5fee9048 GAP & SAM power up/down sounds.
The Gap Generator & SAM Site are both missing the power on/off sound effects.
2017-02-14 10:27:27 -05:00
reaperrr
2dcd920af5 Fix D2k wall armor type
TibEd said 'none', but that can't be true, as in the original anti-tank weapons are far more effective versus walls than machine guns, so I decided to just use the wall armor type.
2017-02-14 01:56:26 +01:00
reaperrr
8dd66b41c2 Fix D2k Wall debris count and types
Two debris, of which one is large, matches the original.
Also made max range match weapon range.
2017-02-14 01:56:24 +01:00
reaperrr
6cd6cedd2c Tweak D2k debris
- Enabled shadow
- reduced maximum speed
- considerably increased 'launch angle'
- increased bounce count to 3 and toned down BounceRangeModifier
- reduced TrailInterval to 1 for Debris2
- removed explosion sounds to a) match original and b) make them less annoying
- fixed debris explosion animations to match original
- used different trail anim for Debris2 and Debris3
2017-02-14 01:56:22 +01:00
reaperrr
de6d45f9e5 Fix BlendMode of previously unused D2k trails 2017-02-14 01:56:21 +01:00
reaperrr
9b34aa4d6b Set up D2k wall explosion 2017-02-14 01:56:19 +01:00
reaperrr
eef4c9b627 Merge pull request #12755 from MustaphaTR/d2k-harkonnen-1a
D2K - Add Harkonnen Mission 1a
2017-02-13 23:49:35 +01:00
abcdefg30
b23df65adb Merge pull request #12750 from MustaphaTR/d2k-atreides2-AI+tile-fixes
D2K - Fix Tiles errors in Atreides Mission 2s and add production/repair for their AIs.
2017-02-13 21:02:31 +01:00
Mustafa Alperen Seki
000ae29cb6 Fix Tiles errors in Atr2s and add AI production/repair for them. 2017-02-13 20:27:29 +01:00
reaperrr
74fa80491d Merge pull request #12751 from abcdefg30/d2kSequences
Fix missing sequences in all mods
2017-02-13 19:58:41 +01:00
abcdefg30
eeebcd6468 Merge pull request #12669 from Phrohdoh/make-core-builds-deps
Don't require a manual 'make dependencies' by default
2017-02-13 19:47:15 +01:00
reaperrr
6745cf402d Remove explosion sound from Fremen weapon 2017-02-12 22:50:29 +01:00
reaperrr
03a5e7ff4e Make Quad Rocket speed a multiple of 32 2017-02-12 22:28:55 +01:00
reaperrr
c4fc8f55bc Make D2k large missile speeds consistent 2017-02-12 22:27:52 +01:00
reaperrr
84dedd4237 Only play explosion sound for Missile Tank and Tower in D2k
But not on Bazooka and Quad's Rocket.
2017-02-12 22:27:09 +01:00
reaperrr
87d5a17a18 Fix explosion sound, speed and angle of D2k grenade 2017-02-12 22:13:09 +01:00
abcdefg30
603e7ca408 Add a lua function to query the terrain type of a cell 2017-02-12 21:05:48 +01:00
abcdefg30
4c9bae798a Add an upgrade rule 2017-02-12 21:01:47 +01:00
abcdefg30
5999a028ad Merge pull request #12739 from SoScared/balance_patch_core
[RA] Balance changes for next playtest/release.
2017-02-12 20:49:40 +01:00
reaperrr
f95ec2b11f Merge pull request #12684 from abcdefg30/proneOffset
Fix the ProneOffsets of TakeCover
2017-02-12 20:31:08 +01:00
Paul Chote
d6a793fa7d Merge pull request #12758 from reaperrr/fix-d2k-weapons
Fix D2k weapons
2017-02-12 19:02:27 +00:00
Paul Chote
9516a6af69 Fix game server compatibility check. 2017-02-12 18:48:03 +00:00
Paul Chote
54f4e996fb Clean up stale metadata registrations. 2017-02-12 18:40:19 +00:00
Paul Chote
4a1bf43a74 Merge pull request #12763 from reaperrr/cncdll-to-common
Change target location for Mods.Cnc to mods/common
2017-02-12 18:25:59 +00:00
abcdefg30
3650072eca Visceroids aren't buildable 2017-02-12 18:34:34 +01:00
abcdefg30
d3000c7570 Fix missing sequences in TS 2017-02-12 18:34:34 +01:00
abcdefg30
c65f310d2b Fix missing sequences in d2k 2017-02-12 18:34:33 +01:00
abcdefg30
a4a9e46e2d Change the default value for the sequence definitions on SupportPower.cs 2017-02-12 18:34:33 +01:00
reaperrr
686b21c044 Change target location for Mods.Cnc to mods/common 2017-02-12 18:02:15 +01:00
abcdefg30
a3aab6f051 Merge pull request #12757 from reaperrr/merge-ra-into-cnc
Merge Mods.RA into Mods.Cnc
2017-02-12 17:47:41 +01:00
abcdefg30
c09fa25257 Merge pull request #12762 from reaperrr/common-ui
Move RA chrome yamls to common
2017-02-12 17:37:47 +01:00
reaperrr
996f7ba5cf Merge pull request #12730 from abcdefg30/aircraftCrate
Fix GiveUnitCrateAction and SpawnMPUnits being limited to MobileInfo
2017-02-12 17:27:24 +01:00
Paul Chote
b2ed96f887 Merge pull request #12748 from reaperrr/fix-ra-sounds
Fix RA 25mm and DepthCharge playing sounds
2017-02-12 15:47:35 +00:00
reaperrr
66f1cc69d8 Move D2k/TS ingame-observer.yaml to common 2017-02-12 16:45:19 +01:00
reaperrr
5e465ff965 Remove RA reference from d2k 2017-02-12 16:45:17 +01:00
reaperrr
6f9f630fdc Move RA chrome yamls to common 2017-02-12 16:45:15 +01:00
reaperrr
b7125852b5 Remove d2k dependency from TS UI 2017-02-12 15:17:36 +01:00
Paul Chote
2af03da825 Add Engine.ModSearchPaths argument. 2017-02-12 13:21:11 +00:00
Paul Chote
7d758202c5 Rework mod searching/enumeration. 2017-02-12 13:21:11 +00:00
Paul Chote
9b6afd3c37 Unhardcode modchooser mod for content installation. 2017-02-12 13:21:11 +00:00
Paul Chote
657ba90ae3 Add Engine.DefaultMod argument to override modchooser fallback. 2017-02-12 13:21:10 +00:00
reaperrr
0c44a49722 Merge pull request #12600 from pchote/externalmods
Add support for switching to mods from other engine installations.
2017-02-12 13:18:53 +01:00
reaperrr
cdf2a1e87d Merge pull request #12649 from obrakmann/more-sysinfo-stuff
More sysinfo stuff
2017-02-12 12:48:37 +01:00
reaperrr
a5f4d6031c Merge pull request #12749 from MustaphaTR/d2k-add-new-tiles
Add new tiles that will be in Harkonnen Missions 1 and 2
2017-02-12 12:35:12 +01:00
reaperrr
0f7c53dac0 Fix DepthCharge hit explosion
The splash anim + h2obomb2.aud should always play, regardless of whether a submarine was hit.
2017-02-12 01:59:45 +01:00
reaperrr
3ff045f711 Merge pull request #12731 from abcdefg30/oldBase
Minor removal of rules duplication in ts yaml
2017-02-12 01:49:47 +01:00
reaperrr
0c3a786d10 Merge Mods.RA into Mods.Cnc 2017-02-12 01:33:22 +01:00
reaperrr
194a386a66 Remove unused Heal weapon from D2k 2017-02-12 01:25:47 +01:00
reaperrr
be6aaa0da5 Use InstantHit projectile for d2k BloomExplosion 2017-02-12 01:24:16 +01:00
reaperrr
0176fa5ff3 Remove redundant Blockable from DevBullet 2017-02-12 01:23:42 +01:00
reaperrr
69eaa16726 Make D2k machine guns unblockable and instant hits
To match original.
2017-02-12 01:20:03 +01:00
Paul Chote
51973cd798 Tweak 64 bit wording to match the two entries above it. 2017-02-11 19:36:14 +00:00
Paul Chote
3f9062692b Add window scale to sysinfo. 2017-02-11 19:36:14 +00:00
Oliver Brakmann
a0b911d498 Add sysinfo version to sysinfo query 2017-02-11 19:36:14 +00:00
Oliver Brakmann
54278ae8f3 Add window size to sysinfo query 2017-02-11 19:36:14 +00:00
SoScared
e26b0495ad balance batch 1 2017-02-11 19:20:18 +01:00
reaperrr
cdfa3fddf8 Move ParatroopersPower and para scripting to Mods.Common 2017-02-11 19:02:06 +01:00
abcdefg30
6df7038454 Merge pull request #12746 from ltem/d2k-trike-offset
Quickfix for Trike armament offset
2017-02-11 18:29:16 +01:00
Mustafa Alperen Seki
ad96fbb382 Add Harkonnen1a 2017-02-11 19:24:38 +02:00
ltem
677df8d4da Quickfix for Trike offset + Adding Height parameter to wall's
BlockProjectiles
2017-02-11 18:17:33 +01:00
abcdefg30
5fee23019f Merge pull request #12732 from MustaphaTR/d2k-ordos-1b
D2K - Add Ordos Mission 1b
2017-02-11 18:06:20 +01:00
abcdefg30
6e419d8ee0 Merge pull request #12737 from SoScared/le_shadows
[RA] Add shadow to projectiles, alter armament offsets of Chrono Tank, Phase Transport
2017-02-11 18:03:05 +01:00
abcdefg30
b26b7b9f46 Merge pull request #12702 from Mailaender/maxmind.db-2.1.2
Drop dependency on Maxmind.GeoIP and Newtonsoft.Json
2017-02-11 17:50:35 +01:00
Paul Chote
f2e6601e07 Remove legacy MP lobby mod and replay switching logic. 2017-02-11 16:45:18 +00:00
Paul Chote
69a869fe43 Pass Engine.LaunchPath from OSX launcher. 2017-02-11 16:45:18 +00:00
abcdefg30
584d76c771 Merge pull request #12675 from FrameLimiter/bleed
Restores tank traps to the map editor.
2017-02-11 17:39:22 +01:00
abcdefg30
c93585e3f2 Merge pull request #12697 from pchote/attack-charge
Implement new charge attack logic for TD/TS obelisks.
2017-02-11 17:35:08 +01:00
FrameLimiter
615c76402f Restores tank traps to the map editor.
Tank Traps are missing from the editor because they inherit "^Rock:" from the default.yaml which requires the tileset DESERT.
Tank Traps are a TEMPERAT tileset item.
2017-02-11 17:30:52 +01:00
Paul Chote
8385207fba Pass Engine.LaunchPath from linux launchers. 2017-02-11 16:21:35 +00:00
Paul Chote
2f7446e9fc Pass Engine.LaunchPath from windows launcher. 2017-02-11 16:21:35 +00:00
Paul Chote
2da4e87b94 Implement new server-connection mod switching logic. 2017-02-11 16:21:34 +00:00
Paul Chote
4d982f00e4 Add 32px icons for default mods. 2017-02-11 16:21:34 +00:00
Paul Chote
25a0d5be5b Load icons for installed mods. 2017-02-11 16:21:34 +00:00
Paul Chote
328bae550c Implement external mod registration and launching. 2017-02-11 16:21:34 +00:00
Paul Chote
a52ea71c62 Add AttackCharges trait for TD and TS obelisks. 2017-02-11 16:19:58 +00:00
Paul Chote
f219d40aa1 Improve support for overlapping sounds. 2017-02-11 16:19:58 +00:00
Paul Chote
53d7988ad1 Fix WithColoredOverlay upgrade rule. 2017-02-11 16:19:58 +00:00
Paul Chote
a8d46adb2d Rename tesla attack logic and move to Mods.Cnc. 2017-02-11 16:19:58 +00:00
abcdefg30
8ad37e6e0d Remove Buildable from unbuildable civilian structures 2017-02-11 15:28:52 +01:00
abcdefg30
7247350780 Remove cloak from ^OldBase 2017-02-11 15:21:01 +01:00
abcdefg30
1b4b146308 Reduce duplication by introducing ^OldBase 2017-02-11 15:21:00 +01:00
abcdefg30
6376e1fd22 Remove unnecessary Tooltip and Buildable definitions from ^CivBuilding 2017-02-11 15:21:00 +01:00
Mustafa Alperen Seki
db08535231 Add new tiles that will be in Harkonnen Missions 2017-02-11 16:11:47 +02:00
reaperrr
8fd3a68c42 Fix RA 25mm and DepthCharge playing sounds
25mm explosions and DepthCharge Report should be silent.
2017-02-11 14:06:57 +01:00
SoScared
99603eb607 ballistic shadows attempt 1 2017-02-11 12:09:48 +01:00
abcdefg30
ba69bfe494 Merge pull request #12705 from pchote/tweak-killself
Fix KillsSelf trait.
2017-02-10 19:06:20 +01:00
abcdefg30
307f722ef0 Merge pull request #12696 from pchote/fix-preview-rendering
Fix BGRA channel count.
2017-02-10 12:13:15 +01:00
abcdefg30
ce97b3a3a2 Fix IPositionableInfo not inheriting IOccupySpaceInfo 2017-02-09 22:04:33 +01:00
abcdefg30
e53724b1de Fix SpawnMPUnits being limited to MobileInfo 2017-02-09 22:04:33 +01:00
abcdefg30
a385835939 Fix GiveUnitCrateAction being limited to MobileInfo 2017-02-09 22:04:32 +01:00
abcdefg30
ac9c8b93a2 Merge pull request #12633 from reaperrr/slim-ra-weapons
Slim down RA weapon yamls via inheritance
2017-02-09 21:57:39 +01:00
Mustafa Alperen Seki
66ddae1818 Add Ordos 1b 2017-02-09 18:03:49 +02:00
Matthias Mailänder
01357c4f59 Merge pull request #12664 from MustaphaTR/d2k-ordos-1a
D2K - Add Ordos Mission 1a
2017-02-09 09:42:48 +01:00
reaperrr
c1e4a162fe Merge pull request #12710 from pchote/spectator-sort
Sort servers with spectators above empty servers.
2017-02-08 23:16:39 +01:00
reaperrr
fce404f6d9 Rename RA largecaliber.yaml to ballistics.yaml 2017-02-08 23:06:01 +01:00
reaperrr
36d725130a Streamlined RA missiles.yaml 2017-02-08 23:05:59 +01:00
reaperrr
7251572eb6 Streamlined RA explosions.yaml 2017-02-08 23:05:55 +01:00
reaperrr
b645780ba3 Streamlined RA other.yaml 2017-02-08 23:05:52 +01:00
reaperrr
d8a26838c2 Streamlined RA largecaliber.yaml 2017-02-08 23:05:48 +01:00
reaperrr
4c5be8d1d6 Streamlined RA smallcaliber.yaml 2017-02-08 23:05:44 +01:00
abcdefg30
dd15bbeb6d Fix the prone sequences of weedguy 2017-02-08 20:14:17 +01:00
abcdefg30
55dd61ebe5 Fix the ProneOffsets of TakeCover 2017-02-08 20:14:02 +01:00
reaperrr
c61a7b4131 Merge pull request #12709 from pchote/spicebloom-spurt
Play spicebloom spurt animation on each growth step.
2017-02-08 15:37:16 +01:00
Matthias Mailänder
5372d87521 Merge pull request #12677 from pchote/fix-player-drop
Fix player drop handling.
2017-02-08 09:01:58 +01:00
Matthias Mailänder
bad3a645a3 Merge pull request #12713 from pchote/fix-paused-weather-scroll
Fix weather particle positions when scrolling while paused.
2017-02-08 08:39:36 +01:00
Paul Chote
f6b65c98e4 Fix PBOG voxel rendering. 2017-02-07 10:05:06 +00:00
reaperrr
c3eab17112 Merge pull request #12712 from pchote/fix-nudge-moveflash
Don't show a move flash effect when PBOG nudges a unit.
2017-02-06 20:13:28 +01:00
reaperrr
263a13b34c Merge pull request #12690 from SoScared/gapvalues
[RA] GAP effect entry values.
2017-02-06 19:58:00 +01:00
reaperrr
01d869b467 Merge pull request #12711 from pchote/unload-cloak
Fix crash when unloading cargo from units with multiple cloaks.
2017-02-06 19:51:38 +01:00
reaperrr
5458f459b1 Merge pull request #12688 from MustaphaTR/d2k-fix-some-more-tiles
D2K - Fix tiles 58, 365, 366 and 368
2017-02-06 19:45:00 +01:00
reaperrr
f12fba141c Merge pull request #12708 from pchote/spicebloom-spawn
Remove SpawnActor from SpiceBloom.
2017-02-06 19:41:15 +01:00
abcdefg30
b751afbf78 Merge pull request #12692 from reaperrr/ts-debris
Refactor TS debris to work more like in the original
2017-02-05 22:59:19 +01:00
Paul Chote
609e0d0f3e Fix weather particle positions when scrolling while paused. 2017-02-05 18:50:31 +00:00
Paul Chote
9ab59ff614 Don't show a move flash effect when PBOG nudges a unit. 2017-02-05 18:40:22 +00:00
Paul Chote
7a22de268d Fix crash when unloading cargo from units with multiple cloaks. 2017-02-05 17:52:19 +00:00
Paul Chote
0c334c8ba0 Sort servers with spectators above empty servers. 2017-02-05 14:55:22 +00:00
Paul Chote
cc3c618d60 Play spurt animation on each growth step. 2017-02-05 13:28:00 +00:00
Paul Chote
847a00e938 Remove SpawnActor from SpiceBloom. 2017-02-05 12:32:42 +00:00
reaperrr
e1c1379622 Merge pull request #12691 from abcdefg30/tanyaCrush
Make Tanya uncrushable in missions
2017-02-05 13:14:07 +01:00
Paul Chote
2496ce3527 Set default delay to 0. 2017-02-05 11:37:01 +00:00
Paul Chote
1518da1062 Fix KillSelf behaviour for out-of-world actors. 2017-02-05 11:37:01 +00:00
Matthias Mailänder
13263f7bb2 Drop Maxmind.GeoIP and Newtonsoft.Json dependencies 2017-02-05 11:54:22 +01:00
reaperrr
3e1d0074b8 Tweak TS building debris spawns 2017-02-05 02:15:10 +01:00
reaperrr
e25f7948a8 Fix TS debris to behave more like in the original 2017-02-05 02:15:09 +01:00
Paul Chote
956ea5197b Fix BGRA channel count. 2017-02-04 17:05:00 +00:00
Paul Chote
b71d4ba7a3 Remove lag-drop frame workaround. 2017-02-04 16:35:55 +00:00
Paul Chote
07c9c9ee8c Only update MostRecentFrame if the frame is the most recent.
This fixes it being reset to 0 after an immediate order
and not being set before dispatching (which may use it).
2017-02-04 16:35:51 +00:00
Paul Chote
b018c3d837 Merge pull request #12350 from reaperrr/rem-spicebloom-DelAct
Merge SpiceBloom RespawnDelay & GrowthDelay into Lifetime
2017-02-04 16:22:39 +00:00
abcdefg30
6e3a7ba5ec Make Tanya uncrushable in missions 2017-02-04 15:27:37 +01:00
reaperrr
261e0cd7aa Move debris to otherweapons.yaml 2017-02-04 14:48:34 +01:00
reaperrr
226e2f7fa4 Merge pull request #12640 from reaperrr/ts-weapon-inherit2
Slim & tweak TS weapons - part 2
2017-02-04 14:40:27 +01:00
SoScared
ce7c1679d9 GAP effect entry values 2017-02-04 13:26:59 +01:00
reaperrr
484dd20f28 Merge pull request #12683 from abcdefg30/AAOffset
Fix the LocalOffset of the AA Gun
2017-02-04 12:48:01 +01:00
reaperrr
cfbc465040 Make spicebloom.spawnpoint more visible in editor 2017-02-04 12:31:22 +01:00
reaperrr
8fd83e5134 Fix spice bloom and spice bloom spawner health radii 2017-02-04 12:31:20 +01:00
reaperrr
76f8fe02e2 Refactor SpiceBloom
- Remove SpiceBloom.RespawnDelay

It is basically redundant (giving the spice bloom spawner a longer
self-kill delay at yaml level has the same effect) and uses the savegame-blocking DelayedAction, so just removing it is the cleanest solution.

- Rename SpiceBloom GrowthDelay to Lifetime

- Refactor spicebloom.spawnpoint to not use SpiceBloom trait and make it visible in editor with corresponding tooltip.
2017-02-04 12:31:19 +01:00
reaperrr
0a53a2022e Make SpiceBloom interfaces explicit 2017-02-04 12:31:17 +01:00
reaperrr
977cc0e367 Add Delay field to KillsSelf 2017-02-04 12:31:15 +01:00
reaperrr
e23a866979 Move RandomDelay from AmbientSound to Util 2017-02-04 12:31:11 +01:00
Mustafa Alperen Seki
fcba36cd31 Fix Tiles 58, 365, 366 and 368 2017-02-04 10:12:55 +02:00
abcdefg30
a413cc81ea Merge pull request #12605 from reaperrr/ts-weapon-inheritance
Introduce TargetDamageWarhead + some TS weapon fixes
2017-02-04 00:59:14 +01:00
abcdefg30
e1121e6cbe Fix the muzzle sequence offset of the AA Gun (set it to 0,0) 2017-02-04 00:26:16 +01:00
abcdefg30
d31227793e Fix the LocalOffset of the AA Gun 2017-02-03 23:51:19 +01:00
Paul Chote
958d1cd365 Merge pull request #12671 from abc013/renameUpgradeOverlay
Changed 'UpgradeOverlay' to 'WithColoredOverlay'
2017-02-03 22:14:58 +00:00
abcdefg30
3cffbe7d1e Merge pull request #12672 from pchote/fix-ambient-sound
Fix and improve AmbientSound trait
2017-02-03 23:10:28 +01:00
Paul Chote
647ee841b4 Overhaul AmbientSound trait. 2017-02-03 22:01:12 +00:00
Paul Chote
a880562b4b Add support for moving ISounds after creation. 2017-02-03 21:59:32 +00:00
Paul Chote
61050e77f6 Fix PlayLooped ignoring world position. 2017-02-03 21:59:32 +00:00
abcdefg30
0074eb5202 Merge pull request #12678 from reaperrr/merge-ts-into-cnc
Merge Mods.TS into Mods.Cnc
2017-02-03 22:55:52 +01:00
abc013
851c8e6075 Changed 'UpgradeOverlay' to 'WithColoredOverlay' 2017-02-03 18:09:56 +01:00
reaperrr
dfe14b0994 Merge pull request #12666 from Phrohdoh/damagedbyterrain-respect-tunnels
TS DamagedByTerrain and ^DamagedByVeins: Don't damage actors in tunnels
2017-02-03 09:53:11 +01:00
reaperrr
a006b02240 Merge pull request #12657 from pchote/skip-stacked-levels
Support skipping stacked condition levels.
2017-02-03 09:47:21 +01:00
reaperrr
709e2a26e1 Merge Mods.TS into Mods.Cnc 2017-02-02 21:20:31 +01:00
reaperrr
940cf67da4 Merge pull request #12653 from MustaphaTR/d2k-fix-618
D2K - Fix tiles 251, 306, 435 and 618
2017-02-02 20:52:25 +01:00
reaperrr
db04234062 Remove dead code from AnimatedBeacon
This was simply forgotten to be removed by https://github.com/OpenRA/OpenRA/pull/12309
2017-02-02 19:44:30 +01:00
reaperrr
2ee47ff5cf Fix Falloff and Spread of TS missiles 2017-02-02 19:32:16 +01:00
reaperrr
2ff745672c Use inheritance in TS smallguns.yaml
- using InstantHit projectile with default Blockable: false is intentional (matches original)
- default Spread and Falloff changes are intentional
- removing AA-capability from HarpyClaw is intentional
- adding 'piff' to Sniper is intentional
- Spread change to Sniper is intentional
2017-02-02 19:32:15 +01:00
reaperrr
715d88f86b Fix RPGTower prone damage 2017-02-02 19:32:11 +01:00
reaperrr
c90f573b77 Move up RPGTower weapon for more consistent order 2017-02-02 19:32:09 +01:00
reaperrr
797465e613 Use inheritance in TS ballisticweapons.yaml
Notes:
- adding alpha transparency to explosions is intentional
- making 120mm not blockable is intentional
- implicitly changing LaunchAngle of RPGTower to 75 is intentional
- Spread changes to 155mm and Grenade are intentional
- Falloff changes are intentional
- Prone70Percent on Grenade is intentional
2017-02-02 19:32:07 +01:00
reaperrr
30690fbb68 Use Inheritance in TS energyweapons.yaml
Notes:
- changing Proton smudge from MediumScorch to SmallScorch is intentional
- InfDeath on LtRail was bit-rot
- RangeLimit on Proton was bit-rot
- Gave CyCannon a higher RangeLimit for easier hits on moving targets
2017-02-02 19:32:06 +01:00
Mustafa Alperen Seki
d85526d5d2 Fix tiles 251, 306, 435 and 618. 2017-02-02 08:26:59 +02:00
Matthias Mailänder
cb1f42db83 Merge pull request #12670 from reaperrr/prodTabs-to-common
Move ProductionTabsLogic to Mods.Common
2017-02-01 21:58:44 +01:00
RoosterDragon
87040a3cf5 Merge pull request #12643 from pchote/battlefield-control
Replace "Debug" prefix with "Battlefield Control" for gameplay notifications.
2017-02-01 19:18:47 +00:00
reaperrr
76f961e39e Move ProductionTabsLogic to Mods.Common 2017-02-01 19:58:21 +01:00
RoosterDragon
cf2336793a Merge pull request #12318 from cjshmyr/fix-12271
ScrollPanelWidget - Fix frame end task race condition
2017-02-01 18:56:42 +00:00
Taryn Hill
be8c7827a7 Don't require a manual 'make dependencies' by default 2017-02-01 11:14:01 -06:00
Taryn Hill
77a709a325 Merge pull request #12667 from glenlife/patch-1
Update AUTHORS
2017-02-01 09:23:28 -06:00
Glen
16a9db905b Update AUTHORS
(changed username)
2017-01-31 21:10:32 -06:00
reaperrr
77c96db768 Merge pull request #12647 from abcdefg30/mercFlag
Fix the mercenary faction having no valid flag
2017-01-31 20:01:03 +01:00
Taryn Hill
225619efe8 TS: Don't harm flying jumpjets via DamagedByTerrain 2017-01-31 10:35:50 -06:00
Taryn Hill
82f44b00d2 Add TunnelCondition to ^Visceroid's Mobile trait 2017-01-31 10:31:12 -06:00
Taryn Hill
5a13ea3366 TS' ^DamagedByVeins: Disable LeavesTrails if inside of a tunnel 2017-01-31 09:36:18 -06:00
Taryn Hill
4bd6bb0b21 TS: Don't heal actors on tiberium if they are in a tunnel 2017-01-31 09:36:01 -06:00
Taryn Hill
7eab7dfad9 TS: Do not do terrain/vein damage to actors inside of tunnels 2017-01-31 08:46:09 -06:00
Taryn Hill
1fe317dd57 Fix a typo in MobileInfo 2017-01-31 08:46:08 -06:00
abcdefg30
ed39e512dd Merge pull request #12655 from MustaphaTR/d2k-thumper-voice
D2K - Change Thumper's Voice to normal Inf. Voice
2017-01-31 15:12:37 +01:00
abcdefg30
1567ff2ab7 Merge pull request #12660 from ltem/fix-identation
Fixes an error of pr 12658
2017-01-31 15:03:23 +01:00
Mustafa Alperen Seki
c1817005ab Change Thumper's Voice to normal Inf. Voice 2017-01-31 09:31:27 +02:00
Mustafa Alperen Seki
f585b94b4c Add Ordos 1a 2017-01-31 08:58:14 +02:00
RoosterDragon
aca9d60128 Merge pull request #12577 from pchote/movement-layers
Implement tunnels, elevated bridges, jumpjet and subterranean units.
2017-01-30 21:38:09 +00:00
ltem
b8ec633514 Fixes an error of pr 12658 2017-01-30 22:26:00 +01:00
reaperrr
e2b0c5bce4 Return empty Enumerable immediately in InstantHit
...rather than allocating a compiler generated enumerable via 'yield'.
2017-01-30 21:22:12 +01:00
reaperrr
c057acba7a Use TargetDamage for D2k WormJaw 2017-01-30 21:22:11 +01:00
reaperrr
416857c6ea Various misc TS weapon fixes
- Falloff of FireballLauncher and Bomb now more like in TS
- Spread of FireballLauncher now matches TS
- Spread of Bomb is now closer to TS (behaviour not entirely identical, because Spread was cell-based and had a ceiling at ~1.5 cells away from impact cell).
- Bomb now destroys Tiberium like in TS
- Visceroid now uses TargetDamage warhead to damage target directly
- Veins now use TargetDamage warhead to damage target directly
2017-01-30 21:22:09 +01:00
reaperrr
ce5c11d4f0 Use inheritance and TargetDamageWH for TS heal weapons 2017-01-30 21:22:07 +01:00
reaperrr
a8f7b0e2de Add TargetDamageWarhead
Only deals damage to the actor that was targeted by the carrying
projectile.

Currently only supported by InstantHit projectile.
2017-01-30 21:22:06 +01:00
reaperrr
090c015b27 Pass InstantHit target directly if inaccuracy is zero
This is required to make the TargetDamage warhead deal damage only to a specific target.
2017-01-30 21:22:04 +01:00
reaperrr
e2419f4faa Merge pull request #12654 from MustaphaTR/d2k-engineer-passenger-color
D2K - Remove PipType from Engineer and Thumper
2017-01-30 20:31:37 +01:00
reaperrr
ee33fb3254 Merge pull request #12658 from ltem/d2k-additional-faction-description
D2K faction specific information
2017-01-30 20:29:32 +01:00
ltem
ea9141270f Added additional faction specific information 2017-01-30 20:18:54 +01:00
abcdefg30
f5a8afa506 Merge pull request #12644 from MustaphaTR/d2k-fremen-desc
D2K - Some description work
2017-01-30 20:04:48 +01:00
Paul Chote
47a013e6c2 Support empty strings to skip condition levels. 2017-01-30 18:22:44 +00:00
Paul Chote
27cd31879f Add FieldLoader.AllowEmptyEntries attribute. 2017-01-30 18:22:44 +00:00
Mustafa Alperen Seki
ed2d98b275 Edit some D2K descriptions 2017-01-30 17:18:10 +02:00
Mustafa Alperen Seki
bc96efa3fa Remove PipType from Engineer and Thumper 2017-01-30 15:26:11 +02:00
abcdefg30
8b9f6f8e4e Update the chrome definitions of the smuggler, fremen and worm flags 2017-01-29 22:10:27 +01:00
abcdefg30
8afec71032 Add a definition for the mercenary flag to chrome.yaml 2017-01-29 22:09:30 +01:00
MustaphaTR
4c86475581 Add a new flag for the mercenary faction 2017-01-29 22:05:15 +01:00
Paul Chote
e1f7e5dac9 Replace "Debug" prefix with "Battlefield Control" for mute messages. 2017-01-29 18:59:57 +00:00
Paul Chote
f09b41b8b8 Replace "Debug" prefix with "Battlefield Control" for selection messages. 2017-01-29 18:59:57 +00:00
Paul Chote
7f694d2740 Replace "Debug" prefix with "Battlefield Control" for stance messages. 2017-01-29 18:59:57 +00:00
Paul Chote
aa0e65d425 Add SuppressNotifications flag for scripted maps. 2017-01-29 18:59:57 +00:00
Paul Chote
7a1d1092bd Replace "Debug" prefix with "Battlefield Control" for win/loss messages. 2017-01-29 18:59:56 +00:00
Paul Chote
22fad046a0 Fix units warping to 0,0 when doing a 180 degree turn. 2017-01-29 18:58:35 +00:00
Paul Chote
85630501e1 Work around lint test limitations. 2017-01-29 18:58:35 +00:00
Paul Chote
38bd88e874 Hook up elevated bridges in Drawbridges. 2017-01-29 18:58:35 +00:00
Paul Chote
c00af2a85b Hook up tunnels and elevated bridges in "A River Runs Near It". 2017-01-29 18:58:35 +00:00
Paul Chote
6f9a32ec3f Hook up bridges on Tread Lightly. 2017-01-29 18:58:34 +00:00
Paul Chote
d79b2c0869 Hook up tunnels on Hot Springs. 2017-01-29 18:58:34 +00:00
Paul Chote
4f41b6e9ce Implement elevated bridge placeholders. 2017-01-29 18:58:34 +00:00
Paul Chote
5c77c0dc28 Implement jumpjets. 2017-01-29 18:58:34 +00:00
Paul Chote
572c1cb89f Implement subterranean units. 2017-01-29 18:58:33 +00:00
Paul Chote
bb5f25e0dc Disable actor sight while inside tunnels. 2017-01-29 18:58:33 +00:00
Paul Chote
41213ad2d1 Implement tunnels. 2017-01-29 18:58:33 +00:00
Paul Chote
38ea7dbc5a Fix units climbing tunnel faces. 2017-01-29 18:58:33 +00:00
Paul Chote
2bd5a392d1 Add plumbing for custom movement layers. 2017-01-29 18:58:33 +00:00
Paul Chote
695a572dc3 Move ActorMap to mod code. 2017-01-29 18:57:36 +00:00
Paul Chote
a518f07e25 Remove CPos.Max/Min. 2017-01-29 18:57:36 +00:00
Paul Chote
171e558c0a Remove damaged bridge artwork from random tile selection. 2017-01-29 18:57:36 +00:00
Paul Chote
ba9927d34e Add Condition support to WithDeathAnimation / DeathSounds. 2017-01-29 18:57:36 +00:00
Paul Chote
7249ca7f88 Add cell height display to map editor. 2017-01-29 18:57:35 +00:00
Paul Chote
544e40ecab Fix CliffBackImpassibilityLayer trait name. 2017-01-29 18:57:35 +00:00
Oliver Brakmann
fe7736cee8 Merge pull request #12646 from pchote/asset-error
Simplify asset browser error message display.
2017-01-29 19:47:07 +01:00
Oliver Brakmann
3011cea11d Merge pull request #12641 from MustaphaTR/d2k-fix-mercenary-hfac-offset
D2K - Fix Mercenary Heavy Factory offset
2017-01-29 19:40:33 +01:00
Curtis Shmyr
33e1a6b2dd Fix frame end task race condition in ScrollPanelWidget 2017-01-29 17:49:40 +00:00
Matthias Mailänder
ab771f3171 Merge pull request #12645 from pchote/harvester-cost
Unhardcode harvester queue behaviour parameters.
2017-01-29 18:46:27 +01:00
Paul Chote
9a1efbc08b Simplify asset browser error message display. 2017-01-29 17:34:36 +00:00
Paul Chote
875d215662 Unhardcode harvester queue behaviour parameters. 2017-01-29 17:20:28 +00:00
Paul Chote
213b3dad2c Merge pull request #12293 from abcdefg30/swallowNull
Fix null being passed through the INotifyAttack interface
2017-01-29 16:32:35 +00:00
Mustafa Alperen Seki
81b1373db0 Fix Mercenary Heavy Factory offset 2017-01-29 18:28:49 +02:00
reaperrr
9d7413ab3d Merge pull request #12461 from obrakmann/activities-pt2
Activities re-write, part 2 - Child and composite activities
2017-01-29 16:02:21 +01:00
reaperrr
3e0db5cd2a Merge pull request #12623 from MustaphaTR/d2k-reorder-yaml
D2K - Reorder rule files on mod.yaml
2017-01-29 15:26:11 +01:00
reaperrr
86771c1ff2 Use Inheritance in TS explosions.yaml
Notes:
- reduced explosion Spread is intentional (in TS, HE had a Spread step of 6 pixels)
- Falloff changes are intentional (in original TS, damage was halved every Spread step)
- effective damage reduction of UnitExplode is intentional (only grenadiers dealt heavy area damage, which isn't implemented yet)
2017-01-29 14:53:28 +01:00
abcdefg30
48cee8c426 Disable the SpreadDamageWarhead of WormJaw 2017-01-29 11:08:31 +01:00
abcdefg30
19549a9068 Fix null being passed through the INotifyAttack interface 2017-01-29 11:07:20 +01:00
reaperrr
892825aeb9 Merge pull request #12599 from RoosterDragon/allocs
Reduce ongoing allocations
2017-01-27 17:52:30 +01:00
abcdefg30
0f11926305 Merge pull request #12625 from pchote/fix-timed-conditions
Fix timed external conditions being rejected instead of reset.
2017-01-27 13:53:00 +01:00
abcdefg30
9240d53228 Merge pull request #12615 from pchote/fix-yaml-merging-again
Fix yaml merging (again).
2017-01-27 13:39:49 +01:00
Paul Chote
255214e77c Fix timed external conditions being rejected instead of reset. 2017-01-26 22:52:26 +00:00
Paul Chote
33210ad818 Merge pull request #12631 from drscream/fix/liblua-lookup-smartos
Lookup for liblua in /opt/local/lib
2017-01-26 22:47:46 +00:00
abcdefg30
77663ba2d6 Merge pull request #12624 from pchote/fix-ref-sell
Only remove resources when a silo/refinery is killed.
2017-01-26 18:16:50 +01:00
abcdefg30
5496c9be00 Merge pull request #12627 from GraionDilach/veins-fix
Fix vein attack animation moving along with target.
2017-01-26 18:15:55 +01:00
Paul Chote
5377d70f92 Style fixes. 2017-01-26 17:27:13 +01:00
abcdefg30
5ff47162ec Merge pull request #12513 from reaperrr/cnc-warhead-saving
Some minor TD weapon yamls restructuring
2017-01-26 17:22:00 +01:00
Thomas Merkel
b4cdf18367 Lookup for liblua in /opt/local/lib which is required to work on SmartOS with pkgsrc
We need to lookup also for liblua at /opt/local/lib which is used as PREFIX in pkgsrc on SmartOS.
2017-01-26 13:17:06 +01:00
Zimmermann Gyula
cc71582419 Fix vein attack animation moving along with target. 2017-01-26 11:01:36 +01:00
Zimmermann Gyula
8e9370054d Add a disable option to LeavesTrails->StartDelay via negative values. 2017-01-26 11:01:35 +01:00
Paul Chote
3b4f515e2a Only remove resources when a silo/refinery is killed. 2017-01-25 20:07:15 +00:00
RoosterDragon
6a0b993fa2 Remove attackBases member from AutoTarget.
We can use the activeAttackBases member everywhere.
2017-01-25 18:29:33 +00:00
reaperrr
2760829353 Rename TD largecaliber.yaml to ballistics.yaml
Mostly because Grenade was added to it.
2017-01-25 18:57:58 +01:00
reaperrr
5f6a350d41 Make TD Chemspray inherit ^FlameWeapon
Results in a small reduction of yaml lines and makes it easier to make
across-the-board changes in the future.
2017-01-25 18:50:43 +01:00
reaperrr
7496bfff7c Move TD TiberiumExplosion to explosions.yaml 2017-01-25 18:50:42 +01:00
abcdefg30
248d9df3ab Merge pull request #12622 from MustaphaTR/d2k-ai-building
D2K - Some AI Fixes
2017-01-25 15:50:18 +01:00
abcdefg30
2eb8718938 Merge pull request #12618 from MustaphaTR/d2k-ai-fremen
D2K - Make AI able to use Fremen SW.
2017-01-25 15:45:26 +01:00
Mustafa Alperen Seki
ec4f79f372 Reorder D2K rule files on mod.yaml
This effects the order on map editor.
2017-01-25 11:33:18 +02:00
Mustafa Alperen Seki
86180adc13 Some AI fixes and reorder Structures on AI.yaml 2017-01-25 11:20:56 +02:00
Paul Chote
b803034cef Resolve yaml removals in weapon definitions. 2017-01-24 22:19:17 +00:00
abcdefg30
f6c66c4f63 Merge pull request #12598 from MustaphaTR/d2k-str-repair-and-damage
D2K - Fix Low Repair and Terrain Damage.
2017-01-24 20:05:45 +01:00
abcdefg30
68dd2b57fc Merge pull request #12621 from MustaphaTR/d2k-debris-bounce
D2K - Add bouncing to Debris.
2017-01-24 20:03:28 +01:00
abcdefg30
f3e58056fa Merge pull request #12614 from reaperrr/prep-slim-ra-weapons4-other
Prepare RA weapons for inheritance part 4 - other weapons
2017-01-24 16:45:13 +01:00
abcdefg30
83d6100c18 Merge pull request #12619 from MustaphaTR/d2k-orni-target-types2
D2K - Remove the unused "TargetTypes: Air" from ornithopter
2017-01-24 15:49:01 +01:00
abcdefg30
b053da6e63 Merge pull request #12520 from reaperrr/prep-slim-ra-weapons
Prepare for slimming RA weapon yamls Part 1 - explosions
2017-01-24 15:47:17 +01:00
Mustafa Alperen Seki
4601331f7f Add bouncing to D2K Debris. 2017-01-24 15:04:29 +02:00
Mustafa Alperen Seki
5c24512735 Make D2K AI able to use Fremen SW. 2017-01-24 14:13:54 +02:00
Mustafa Alperen Seki
61b0d46155 Remove unused "TargetTypes: Air" from ornithopter 2017-01-24 12:33:20 +02:00
abcdefg30
274cf14c6f Merge pull request #12613 from reaperrr/prep-slim-ra-weapons3-misl
Prepare RA weapons for inheritance part 3 - Missiles
2017-01-23 23:01:17 +01:00
abcdefg30
8910a8aec5 Merge pull request #12612 from reaperrr/prep-slim-ra-weapons2-small
Prepare RA weapons for inheritance part 2 - small arms
2017-01-23 22:59:48 +01:00
Paul Chote
2be8cedddf Add StringComparison arguments to StartsWith. 2017-01-23 20:22:46 +00:00
reaperrr
9f9bda9634 Move FLAK weapons up in RA smallcaliber.yaml 2017-01-23 21:19:28 +01:00
reaperrr
decf2150a7 Move RA Colt45 down inside smallcaliber.yaml 2017-01-23 21:19:27 +01:00
reaperrr
58a79162f5 Remove watersplash from RA Napalm bombs
They are rarely used anyway, and this allows the weapon to make use of inheritance more easily later on.
2017-01-23 21:17:20 +01:00
reaperrr
b57411b0f6 Move RA Grenade and DepthCharge to largecaliber.yaml 2017-01-23 21:17:18 +01:00
reaperrr
ce41a037ee Move APTusk up in RA missiles.yaml 2017-01-23 21:14:53 +01:00
reaperrr
319d53990a Move SubMissiles down in RA missiles.yaml 2017-01-23 21:14:51 +01:00
reaperrr
3c2fe1e1a7 RA missile warhead naming fixes
To make inheritance easier later on.
2017-01-23 21:14:50 +01:00
reaperrr
6fe223ba0e Streamline cosmetic RA building explosions 2017-01-23 21:11:00 +01:00
reaperrr
12b9c97f0b Rename and in a few cases move around warheads in RA explosions.yaml
To make inheriting easier down the road.
2017-01-23 21:11:00 +01:00
reaperrr
e75e6ce614 Move nuke explosions to end of RA explosions.yaml 2017-01-23 21:11:00 +01:00
reaperrr
9d62c1a1d6 Merge pull request #12610 from obrakmann/sysinfo-64bit
Add OS bitness to sysinfo query
2017-01-23 20:49:50 +01:00
Paul Chote
f4bcf79e7c Merge pull request #12524 from paulvt/deb-packaging-lintian-clean
Debian packaging lintian clean
2017-01-23 18:20:10 +00:00
abcdefg30
d165523072 Merge pull request #12608 from MustaphaTR/d2k-crate-terrain-types
D2K - Add more tile types to possible places Crates can spawn
2017-01-23 13:49:31 +01:00
Mustafa Alperen Seki
695b6e5c9a Add Transition, Spice and Concrete to Crate's TerrainTypes 2017-01-23 07:53:08 +02:00
Oliver Brakmann
53c037aa53 Add OS bitness to sysinfo query 2017-01-22 21:36:32 +01:00
Oliver Brakmann
6177855e20 Merge pull request #12607 from MustaphaTR/d2k-fix-carryall-on-concrete
D2K - Fix Carryalls can't land on Concrete
2017-01-22 21:07:11 +01:00
Oliver Brakmann
9993a235a7 Convert ResupplyAircraft into a CompositeActivity 2017-01-22 20:42:19 +01:00
Oliver Brakmann
9b0780e87c Make FlyAttack use child activities 2017-01-22 20:41:41 +01:00
Oliver Brakmann
e49b3d6458 Adjust existing activities for changed NextActivity semantics
To make sure existing checks against NextActivity don't check the parent activity by mistake
2017-01-22 20:41:37 +01:00
Paul van Tilburg
17617334dd Nothing should have group writable permissions
These might occur due to difference in umask values.
2017-01-22 20:41:19 +01:00
Oliver Brakmann
4105f9ed22 Add a debugging helper to print the activity tree 2017-01-22 20:39:43 +01:00
Oliver Brakmann
581640c4d4 Add a 'Canceled' activity state 2017-01-22 20:39:40 +01:00
Oliver Brakmann
660124156f Add built-in support for child and composite activities 2017-01-22 20:39:17 +01:00
Mustafa Alperen Seki
bcee1fafd8 Add "Concrete" to Carryall's "LandableTerrainTypes:" 2017-01-22 20:31:59 +02:00
abcdefg30
e489211434 Merge pull request #12481 from reaperrr/rem-runafterdelay
Remove Game.RunAfterDelay from SwallowActor
2017-01-22 17:54:16 +01:00
reaperrr
d05d7a6944 Remove Game.RunAfterDelay from SwallowActor
RunAfterDelay might be potentially problematic for savegame support.
2017-01-22 17:41:55 +01:00
reaperrr
42df24a18a Introduce MapNotificationEffect 2017-01-22 17:41:55 +01:00
reaperrr
c470e04988 Merge pull request #12566 from reaperrr/ts-weapons-misc1
Various minor TS weapon cleanups
2017-01-22 16:40:41 +01:00
reaperrr
e4fd10e46b Merge pull request #12603 from reaperrr/fix-d2k-spicebloom-spawns
Fix spicebloom spawns on all older D2k maps
2017-01-22 16:38:23 +01:00
reaperrr
d435cbc0c2 Fix Ion Cannon targeting to allow shooting at water 2017-01-22 12:30:38 +01:00
reaperrr
489fb91f26 Remove TS bombsandgrenades.yaml and move its weapons elsewhere
Grenade and RPGTower weapon to ballisticweapons.yaml, Bomb to otherweapons.yaml
2017-01-22 12:30:38 +01:00
reaperrr
68e45f7c67 Rename TS largeguns.yaml to ballisticweapons.yaml 2017-01-22 12:27:48 +01:00
reaperrr
a41cfc50a8 Enable water splash for TS AA missile
On the unlikely off chance that the missile might fall into water.
2017-01-22 12:27:48 +01:00
reaperrr
bbff2b3fd4 Remove unnecessary smudge warhead removals
The smudge WH code now exits early when exploding above ground, so this is no longer necessary.
Also renamed the default smudge WH identifier since the number is (currently) no longer correct and not necessary, either.
2017-01-22 12:27:48 +01:00
reaperrr
2036ed55d7 Remove air-only explosions from TS missiles
The original didn't differentiate, and the audiovisual contrast is also a bit too strong (and the air explosion sound was a bit annoying).
2017-01-22 12:27:48 +01:00
reaperrr
a9d8cd58c5 Replace pre-placed spiceblooms with spawners on all D2k maps
Spice Blooms are not supposed to grow on cells occupied with spice, so it's better to use the spicebloom.spawnpoint actor instead as most of them are placed on cells initially covered by spice.
2017-01-22 12:10:38 +01:00
reaperrr
c80072e7f3 Minor d2k yaml style fixes 2017-01-22 12:10:36 +01:00
abcdefg30
b5944fe1a7 Merge pull request #12515 from reaperrr/slim-d2k-weapons
Slim down D2k weapon yamls
2017-01-22 00:06:43 +01:00
abcdefg30
d8c154a772 Merge pull request #12546 from Mailaender/sdl2-2.0.5
Updated Windows SDL2 to version 2.0.5
2017-01-21 23:46:47 +01:00
Oliver Brakmann
c5cf787b84 Merge pull request #12501 from pchote/osx-retina
Add HiDPI support for OSX/Windows/Linux
2017-01-21 22:54:15 +01:00
Oliver Brakmann
145fd2eed0 Merge pull request #12571 from reaperrr/bullet-bounce
Implement bullet bouncing logic
2017-01-21 22:06:23 +01:00
Oliver Brakmann
05475d752a Merge pull request #12503 from pchote/radarjammer
Migrate ProvidesRadar from IDisable to conditions.
2017-01-21 20:55:37 +01:00
Oliver Brakmann
e5dda218ea Merge pull request #12540 from reaperrr/takeovers/minelayer-merge
Merge RA minelayers
2017-01-21 19:51:29 +01:00
Oliver Brakmann
0dfbd46b1f Let activities know when they are being run for the first or last time 2017-01-21 18:37:00 +01:00
Paul Chote
85053d8d59 Merge pull request #12601 from obrakmann/activities-pt1.5
Rename existing activity states
2017-01-21 17:32:18 +00:00
Paul Chote
1f44e91746 Migrate ProvidesRadar to conditions and remove JamsRadar. 2017-01-21 17:24:54 +00:00
Paul Chote
18d2454306 Pixel double hardware cursors on non-OSX. 2017-01-21 11:00:00 +00:00
Paul Chote
fb451fb203 Add an OPENRA_DISPLAY_SCALE environment variable for linux. 2017-01-21 11:00:00 +00:00
Paul Chote
87b894ad8e Add support for the windows DPI scaling. 2017-01-21 11:00:00 +00:00
Paul Chote
5e7c816257 Add support for font scaling. 2017-01-21 10:59:59 +00:00
Paul Chote
6599aeb035 Add support for retina displays on OSX. 2017-01-21 10:59:59 +00:00
Paul Chote
951ce92fcc Update to new OSX launcher snapshot. 2017-01-21 10:59:59 +00:00
Paul Chote
75c2b117d0 Update to new SDL2-CS snapshot. 2017-01-21 10:59:59 +00:00
reaperrr
bb972fa46d Merge pull request #12591 from MustaphaTR/d2k-map-tsimpo
D2K - Add Tsimpo to map pool.
2017-01-21 11:05:55 +01:00
reaperrr
67e225f12d Merge pull request #12590 from MustaphaTR/d2k-map-sietch-tabr
D2K - Add Sietch Tabr to map pool.
2017-01-21 11:05:36 +01:00
reaperrr
71dcc11e57 Merge pull request #12589 from MustaphaTR/d2k-map-habbanya-erg
D2K - Add Habbanya Erg to map pool.
2017-01-21 11:05:20 +01:00
reaperrr
a19cecd34e Merge pull request #12588 from MustaphaTR/d2k-map-habbanya-ridge
D2K - Add Habbanya Ridge to map pool.
2017-01-21 11:05:01 +01:00
Oliver Brakmann
683d3e747b Rename existing activity states 2017-01-20 22:16:25 +01:00
Mustafa Alperen Seki
9ab2d2d763 Added D2K map Sietch Tabr 2017-01-20 13:42:28 +02:00
Mustafa Alperen Seki
39a9ff318f Add D2K map Habbanya Ridge 2017-01-20 12:18:28 +02:00
reaperrr
42a8c83aad Make disc Grenade work like in original TS 2017-01-20 00:55:02 +01:00
reaperrr
2f0b1a16d0 Upgrade Bullet bounce logic with target checking 2017-01-20 00:55:00 +01:00
reaperrr
bf47affd2e Add bounce logic to Bullet
Allows Bullet projectiles to bounce off ground.
2017-01-20 00:54:59 +01:00
reaperrr
9dab3d57f4 Remove explosion sound from D2k gun turret weapon
It was soundless in the original, and the sound is a bit annoying, too.
2017-01-19 22:48:14 +01:00
reaperrr
c67735626c Slim down D2k CrateNuke via inheritance 2017-01-19 22:43:30 +01:00
reaperrr
983047f78a Slim down D2k missile weapons via inheritance 2017-01-19 22:43:30 +01:00
reaperrr
dc4073009d Slim down D2k miniguns via inheritance 2017-01-19 22:43:30 +01:00
reaperrr
b1aa1bc2c1 Slim down D2k cannon weapons via inheritance 2017-01-19 22:43:30 +01:00
reaperrr
6d56d3485b Slim down D2k Debris weapons via inheritance 2017-01-19 22:43:30 +01:00
reaperrr
fe7d785216 Merge pull request #12581 from MustaphaTR/d2k-crate
D2K - Changed Give Unit Crate Powerups a bit
2017-01-19 21:45:28 +01:00
RoosterDragon
867ad0fb32 Merge pull request #12572 from GraionDilach/experience-modifiers
Implement experience multipliers.
2017-01-19 20:42:48 +00:00
RoosterDragon
2428b967bf Cache coloring delegate in AppearsOnRadar.RadarSignatureCells. 2017-01-19 20:23:53 +00:00
RoosterDragon
9c59d7e255 Avoid delegate allocation in AutoTarget.
Extract a common method for deciding if an attack should happen, and avoid LINQ inside this method.
2017-01-19 20:23:52 +00:00
RoosterDragon
d1cc546f8d Avoid delegate allocation in RotationPaletteEffect.
Use a loop to perform the same check instead.
2017-01-19 20:23:50 +00:00
RoosterDragon
2239d6c88e Cache activeAttackBases query in AutoTarget. 2017-01-19 20:23:49 +00:00
RoosterDragon
a6af65f380 Avoid allocations in SelectionDecorations when we have nothing to draw.
Return an empty enumerable immediately rather than allocating a compiler generated enumerable via 'yield'. We can defer allocating these until we actually need to draw them.

Also, cache the trait lookup.
2017-01-19 20:23:48 +00:00
RoosterDragon
fbf6f45b11 Avoid boxing Booleans when dumping sync traits.
We can return the resulting strings directly.
2017-01-19 20:23:47 +00:00
Mustafa Alperen Seki
22043f4d57 Set "DamagedByTerrain"'s "Damage:" and "RepairStep" to 50. 2017-01-19 20:49:34 +02:00
Pavel Penev
9816052262 Merge pull request #12597 from Micr0Bit/patch-2
Update AUTHORS
2017-01-19 20:14:17 +02:00
Paul Chote
5f582a71b1 Merge pull request #12567 from reaperrr/fix-ts-critters
Fix TS critters
2017-01-18 21:04:45 +00:00
reaperrr
eec7333f45 Remove veterancy from Tiberian Fiend
Matches original game as well.
2017-01-18 21:58:07 +01:00
reaperrr
36920f2279 Fix adult visceroid armor type
As per original rules.ini.
2017-01-18 21:58:07 +01:00
reaperrr
676bb41bef Give adult visceroid a larger target scan radius 2017-01-18 21:58:07 +01:00
reaperrr
13faf5c54c Fix TS Tib Fiend and adult visceroid sight range
Otherwise they won't attack with shroud enabled!
2017-01-18 21:58:07 +01:00
reaperrr
5d410ee72e Fix critter owner on shipping maps 2017-01-18 21:58:07 +01:00
reaperrr
2da1304522 Fix large TS visceroid attack and enable attack animation
Unfortunately the animation sprite starts at an unusual facing, so we have to work around that by manually fixing the order. Using Combine is easier than listing a whopping 40 frames in the correct order.
2017-01-18 21:58:07 +01:00
reaperrr
b19d4c0f80 Fix and tweak TS critter wander delays
The property name has bit-rotted, and the values of the Tiberian Fiend were too low/short, resulting in too much hectic activity.
2017-01-18 21:56:36 +01:00
reaperrr
4206bdf491 Slightly tweak default TS infantry selection box 2017-01-18 21:56:36 +01:00
reaperrr
cef80b6c17 Fix Tiberian Fiend selection box 2017-01-18 21:56:36 +01:00
Micr0Bit
06c9494e2c Update AUTHORS 2017-01-18 21:35:25 +01:00
reaperrr
ac18ab5f3a Merge pull request #12557 from GraionDilach/reveal-on-fire
Implement reveal-on-fire.
2017-01-18 21:32:44 +01:00
reaperrr
da30dfc93d Merge pull request #12583 from MustaphaTR/d2k-sardaukar-tech-level
D2K - Change tech level of Sardaukar to medium
2017-01-18 20:44:19 +01:00
reaperrr
68a72a61bc Merge pull request #12565 from FrameLimiter/patch-1
Fixes Spy detection for Spies.
2017-01-18 12:28:14 +01:00
reaperrr
a8ca251e25 Move TD Grenade to largecaliber.yaml
This is more about making maintenance a little easier than logic. The file might get renamed to 'ballistic.yaml' at some point, though.
2017-01-17 22:31:56 +01:00
reaperrr
a9f1f371d8 Move TD Vulcan up for more consistent order 2017-01-17 22:31:55 +01:00
reaperrr
59619a4e0d Merge pull request #12568 from elena-v2/d2k-no-starport-toggle
Remove CanPowerDown from starports
2017-01-17 22:07:07 +01:00
reaperrr
e2fcbb1ad4 Merge pull request #12593 from MustaphaTR/d2k-fix-tile-443
D2K - Fix tile 443
2017-01-17 22:02:34 +01:00
Zimmermann Gyula
4bce601db2 Implement reveal-on-fire. 2017-01-17 18:59:07 +01:00
Mustafa Alperen Seki
8304807c1b Fix tile 443. 2017-01-16 18:35:19 +02:00
Mustafa Alperen Seki
2ab1659422 Add D2K map Habbanya Erg 2017-01-16 16:08:03 +02:00
Mustafa Alperen Seki
9bd65908b4 Add D2K map Tsimpo 2017-01-16 16:00:57 +02:00
abcdefg30
9a202015b0 Merge pull request #12584 from MustaphaTR/d2k-importer-spacebloom
D2K - Make map importer use spicebloom.spawnpoint instead of spicebloom
2017-01-15 22:14:53 +01:00
Zimmermann Gyula
1544f24663 Implement experience multipliers. 2017-01-15 20:33:26 +01:00
Mustafa Alperen Seki
a1d349ee38 Make map importer use spicebloom.spawnpoint instead of spicebloom 2017-01-15 20:17:50 +02:00
Mustafa Alperen Seki
4cf9fad639 Change tech level of Sardaukar to medium. 2017-01-15 20:15:08 +02:00
reaperrr
5ceee1d6fb Merge pull request #12562 from AoAGeneral/AoATD
TD Aircraft Speeds.
2017-01-15 14:16:31 +01:00
Mustafa Alperen Seki
fceab8b248 Changed D2K Give Unit Crate Powerups a bit 2017-01-15 13:40:29 +02:00
elena-v2
003772a7bf Remove CanPowerDown/RequiresPower from starports
Starports are production facilities and the ability to toggle their power
status conflicts with the expected behaviour from other official OpenRA
mods.
2017-01-12 10:47:20 -08:00
FrameLimiter
ef917588e4 Fixes Spy detection for Spies. 2017-01-11 14:13:00 -05:00
reaperrr
f72614f14f Merge pull request #12563 from FrameLimiter/bleed
RedEye Minimum Range.
2017-01-11 19:26:06 +01:00
reaperrr
e50a95002f Merge pull request #12561 from MustaphaTR/d2k-turret-capture-fix
D2K - Fix that Turrets are capturable.
2017-01-11 19:18:12 +01:00
FrameLimiter
9e2a1c01cd RedEye Minimum Range.
Fixes #12123
2017-01-10 17:56:15 -05:00
AoAGeneral
67117b1481 TD Aircraft Speeds.
Balancing out some of the small things that makes a big difference with the aircraft. Listings below:

Chinook:

Mobile speed increased from 140 to 150.

This is increasing because a number of vehicles catch up to these. (Bikes, APCs, buggies, humvees.)

Increasing the movement of this unit will help to outrun the APCs and other projectiles a little quicker. It also helps to compensate for travel distances. These units are only used in early game because of the enemies lack of AA. Increasing the speed will help their longevity.


Apache mobile speed decreased from 186 to 180.

This is done to prevent these units from chase killing Orcas as their machinegun fire is on point hits with minimal damage. HP remains the same (Orca 90 Apache 125). Orca being lighter in HP allows it to move more quickly while the apache can soak more damage. In air vs air battles the apache tends to win due to their guns vs slow missile fire.


Both Orca and Apache turnspeed increased from 4 to 7.

This is increased on both units because they take a full second before they are able to aim at targets leaving them stationary and taking hits. Increasing this speeds allows them to be what they are ment to be as hit and strike crafts. The turning speed also allows them to hit targets more effectively on the move.
2017-01-10 14:23:30 -08:00
Mustafa Alperen Seki
aea195dade Fix D2K Turrets are capturable. 2017-01-10 10:31:54 +02:00
reaperrr
e4f6fad7d2 Merge pull request #12547 from ltem/d2k-extended-upgradetooltips
D2k extended upgradetooltips
2017-01-08 21:03:49 +01:00
ltem
b1a1464505 Added Tooltip to (Large) Concrete Slab; Renamed IX Lab -> IX Research Center 2017-01-08 16:05:14 +01:00
Oliver Brakmann
bd3639e81d Merge pull request #12358 from reaperrr/cashtrickler-upgrade
Add upgrade support to CashTrickler and split off GivesCashOnCapture
2017-01-08 14:12:01 +01:00
reaperrr
8699d0fca3 Safeguard CashTrickler negative values
By making sure to never remove more cash than the player has.
2017-01-08 13:53:19 +01:00
reaperrr
7dcda5db30 CashTrickler style fixes and Period -> Interval rename 2017-01-08 13:53:17 +01:00
Zimmermann Gyula
bc1e2a7058 Revamp CashTrickler.
Added upgrade support.
Decoupled the capture bonus to a separate trait.
2017-01-08 13:53:16 +01:00
reaperrr
c76cc984dc Merge pull request #12548 from reaperrr/fix-d2k-trike-muzzle
Add InstantHit projectile and fix Trike/Raider muzzle flashes
2017-01-08 12:24:49 +01:00
Oliver Brakmann
023087d7c4 Merge pull request #12552 from abc013/betterNaval
Changed the Naval AI to build Service Depots
2017-01-07 20:08:50 +01:00
Oliver Brakmann
439b4b18cf Merge pull request #12550 from reaperrr/fix-ur-dates
Fix upgrade rule dates
2017-01-07 20:08:02 +01:00
reaperrr
b77b67e560 Fix Trike/Raider muzzle flashes
Armament requires a projectile to fire.
2017-01-07 15:12:20 +01:00
reaperrr
adfe78fca5 Add simple, invisible instant-hit projectile
For melee attacks, machine guns and so on.
2017-01-07 15:12:16 +01:00
abc013
0f1146a067 Changed the Naval AI to build Service Depots 2017-01-07 14:07:08 +01:00
reaperrr
4a6e378390 Fix upgrade rule dates
They were merged after prep was split off.
2017-01-07 13:20:22 +01:00
ltem
10ed0cb62f Enhancements for the upgrade-tooltips 2017-01-06 20:59:54 +01:00
ltem
8a07910627 Small format fix for combat tank tooltip 2017-01-06 20:59:54 +01:00
ltem
8887de5b55 Renamend Thumper -> Thumper Infantry 2017-01-06 20:59:54 +01:00
reaperrr
2b92daa955 Merge pull request #12322 from abc013/allies-06a
Added allies-06a to the Red Alert mod
2017-01-06 12:54:17 +01:00
abc013
52b7fc0329 Added allies-06a to the Red Alert mod 2017-01-06 12:42:20 +01:00
reaperrr
8f685ee849 Use FactionImages to give RA mine faction-specific appearance 2017-01-06 12:35:49 +01:00
reaperrr
3afbf8384b Merge pull request #12536 from AoAGeneral/AoATDGDNiceMeme
TD Balance Changes. NME.
2017-01-06 11:50:33 +01:00
Matthias Mailänder
d4079d1bd1 Update Windows SDL2 to version 2.0.5 2017-01-05 21:26:45 +01:00
Paul van Tilburg
55a17f6153 Add comments to the overrides; drop the missing manpage override
The missing openra-server manpage warning should not be overriden,
as the manpage should be there. (See also: #12525).
2017-01-05 20:38:35 +01:00
AoAGeneral
8266c96a38 Add detection to temple of Nod.
(Nice to have detection then stealthers sneaking by it)

artillery minimum range increase from 2c896 to 3c0.

mammoth tank HP increase from 800 to 870.
(Dies by medium tank spams and e3 a little to easily from recent changes. With a longer build time they fall prey to mass numbers.)

ion time increase from 3:00 to 4:30.
(Ion strikes go off a little to fast. Mammoth armies take about 2:00 to build back up. By the time base attacks happen close to 3:00)

nuke timer from 5 to 6.
(Because the nuke damage has been buffed)

nuke damage spread from 2c512 to 5c512.
(Nuke damage spread was to weak. Barely killing a power plant where it lands just a few cells away from base hit)

nuke spread damage increased from 100 to 110. (First spread modifier)
(See line above)

a10 timer increased from 3:30 to 4:00.
(Timer increased because they were going off a little to fast still. These planes kill infantry builds as it is.)

MSAM HP from 120 to 180.
(To weak vs air. Missiles drain takes a few seconds to reload and then sniped within that time. Specially since dedicated AA)

Commando weapon range increased from 6c0 to 8c0.
(They had the same range as e3 and minigunners were able to close distances on them extremely fast. Take note they shoot farther then their vision range.)

Commando weapon projectile speed increased from 1c682 to 5c682.
(This was super annoying. You fire a shot and the infantry doesn't die because bullet travel to slow. Increased this fixed the problem.)

Commando price increase from 1000 to 2000.
(Extremely cheap when buffed. Increased price to match their power.)

Commando build time increased from 24 to 32. (2000 Build duration)
(Build time a little to fast. Compensates this with multiple barracks.)

Husks interval timer increased from 2 to 6.
(Husks blow up to fast to capture anything. Kept on low timer to prevent vehicle block. Only possible way is to have an engineer in an APC ready. Which Nod is unable to have APCs.)

Bike damage increase from 30 to 31.
(HP changes on harvs, structures, and mammoth. A very small change leading to a decent buff. Granting a 2 damage increase with constant hits)

Chem damage vs none reduced from 100 to 70.
(Chems performing a little to well by themselves. Having mixed units is a better solution. IE: My recent flame tank chem trooper mix)

Chem damage vs armor increased from 50 to 75.
(Chems performed a little to weak vs armor. Doing less damage then infantry and getting squashed by medium tanks and light tanks. This will make players think twice about squashing tactics. Also more damage vs armored defenses.)

Grenadier accuracy reduced from 213 to 813. (Makes them miss a lot more).
(Grenadiers were to accurate and unable to kill infantry packs. Looking at CNC95 and RA in ORA they miss their targets as well. Having them miss spreads their AoE damage and able to take out infantry packs. Players maye want to think of spreading infantry when fighting grenadiers)

Flamer damage vs armor reduced from 20 to 10. (Flame infantry)
(To much damage to APCs and light tanks)

Flamer damage vs none increased from 100 to 110. (Flame infantry.)
(Made them stronger vs infantry to balance out vs chems. Makes them a strong viable choice.)

Harv build timer increase from 24 to 27. (1680 build timer)
(Harv spamming is like a disease. Its gotten to strong to quickly. Increasing their timer slightly also increases other viable builds.)

Harvester HP increase from 600 to 625.
(Both medium tanks and bikes doing a little to much damage. Compensates slightly for build timer)

Refinery power reduced from 50 to 40.
(Offers more build choices. Opening barracks becomes stronger then going strip/factory all the time. Both openings strong strats just requires scouting.)

Refinery sell no longer refunds.
(Includes with the harv spamming. Gave 250 back which counted towards buggy/bike money. IE: PP > Ref > Strip (Strip makes 2-3 buggies 2 bikes then a harv) > Ref (Sell ref gain harv) > Strip (Because power only 30) > PP

Refinery tiberium hold reduced from 2000 to 700.
(This has had no impact to force people to build silos. But it opts people to protect refineries rather then "Lost a ref. Meh. Got 3 others.". Losing a ref now loses earned money. If it holds money. Also prevents sell trick to save power.)

Silo hold increase from 2000 to 3000.
(Compensate for Refinery. Also has extra HP now. See below.)

AGT HP from 600 to 550.
(Way to strong when it came to units coming to these in mass amounts. Also hard for artillery units to shell due to small box size and HP pool.)

Light Tank price reduced from 700 to 650.
(700 was a bit to high. 650 seems to hit the right spot but left build time as is. 0:17)

Visceroid spawn reduce from 10 to 5.
(This was a weird one. Infantry dieing in tiberium was at a good spot. But for some reason when chems kill infantry it would create 2-3 visceroids. Then those visceroids would create 2-3 at a time. RNG issue so was reduced.)

Increase all building HP by 100.
(Help balance vs medium tanks, bikes, light tanks, chems, grenadiers, air units, and stealth tanks.)

Gun turret HP increase from 400 to 410.
(This is taking baby steps. I want them a little tougher vs medium tanks but not at the point of RA style. Same logic as obrakmann taking baby steps with MCV.)

Starting units adjusted.
(This created a big problem in competitive scenes. Having early units is good to prevent infantry rushes. But starting with a bike/apc while your opponent starts with a hummer/buggy is to off balancing.)

MCV build time decreased from 1:36 to 1:00. (3750)
(Price unchanged. Takes a little to long in team games and some 1v1 scenarios to get one built. Also now drains money faster to compensate)

Engineer HP increase from 25 to 30.
(Dies a little to quick hummers/buggies. Same kill time as minigunner (If takes a hit while standing)

APC HP increase from 210 to 215.
(These are dieing a little to fast and weak vs certian units. IE: buggies/hummers and bikes. Tested vs light tanks and more optimal. Baby steps.)

APC Damage vs light decreased from 105 to 100.
(I don't want them killing bikes to fast now that they are cheaper.)

APC cost decreased from 600 to 550.
(APCs for infantry builds as GDI was waaaaay to expensive. Having a slightly faster build timer of 0:14 instead of 0:15 will help too. Helps to withstand early onslaught of Nod. Keep note bikes still 0:12 timer)

(Created new Sam weapon Dragon from RA e3 AA. Reason: Shared weapon with AGT.)

Samsite range increased from 8c0 to 12c0.
(Dedicated AA. Keep note: Longer range = longer time to kill a unit and able to escape. Closer it is the faster air units die.)

Samsite spread damage decreased from 682 to 128.
(To much AoE damage)

Samsite range limit increased from 9c614 to 15co.
(Missiles would die out within its own range circle.)

Samsite reveal shroud decreased from 8c0 to 6c0.
(Prevents the RA logic of build an AA in front of your base and all good. You need units/structures to make good use of its range.)

Samsite now fires two shots at a time.
(Increases damage and intuitive to home base of CNC95.)

Recon Bike HP decreased from 120 to 110.
(Takes to long to kill these units when vs minigunners and light vehicle types. APCs taking to long to kill these.)

Airstrip/Weapon Factory power increased from 30 to 50.
(Increased like a disease. Nod players going with an extremely fast 4 strip build without com center. GDI maxing at 3 factories with non stop vehicles. Infantry became to weak.)

Communication Center power increased from 40 to 50.
(See above.)

APC movement speed increased from 128 to 132.
(A little to slow vs light tanks and dealing with buggies. Buggies being faster still they are able to get a few extra shots off. Provides better base entry.)

MRLS range reduced from 12c0 to 11c0.
(Out ranging Nod artillery. Extremely accurate as is and to strong vs several units. Shorter range allows faster vehicles to reach them better.)

MRLS damage vs none reduced from 35 to 25.
(To much damage vs infantry. Specially to e3.)

Obelisk power reduced from 150 to 90.
(Having to build an adv power plant after each Obelisk is put up is insane. Two Obelisk = 180 now and adv power plant is 200.)
2017-01-04 10:57:29 -08:00
Oliver Brakmann
27d45f890e Merge pull request #12533 from reaperrr/fix-air-smudges
Fix air explosions leaving smudges
2017-01-03 21:56:17 +01:00
roundowl
508038e3f3 Merges minelayers into single unit placing AT mines
AP minelayer is removed, AT minelayer is made generic and available to both factions. BuildPaletteOrder is pushed up to remove gap.
I didn't remove AP mine from weapons and explosions, because graphics are still there and may be used in future.
2017-01-03 19:54:08 +01:00
reaperrr
5e8a7e8147 Merge pull request #12535 from reaperrr/takeovers/11505fix
Add Stance check for engineer repair
2017-01-03 18:37:32 +01:00
reaperrr
51b05f2d88 Merge pull request #12534 from reaperrr/takeovers/d2kMenu
Tidied up d2k building build menu icon order
2017-01-03 18:34:06 +01:00
entropai
57e5bbb448 Stance modification for engineer repair 2017-01-02 19:36:00 +01:00
C. Helmig
f79e9a23f9 Removed unnecessary conyard prerequisites 2017-01-02 19:18:31 +01:00
abcdefg30
4bf53541f4 Tiedied the d2k building build menu icon order up 2017-01-02 19:17:08 +01:00
reaperrr
7e3e950b5d Fix air explosions leaving smudges
LeaveSmudgeWarhead now only spawns smudges if the explosion happened at or below a certein altitude.
2017-01-01 17:14:31 +01:00
Oliver Brakmann
285e9a8030 Merge pull request #12531 from Phrohdoh/happy-new-year-2017
Happy New Year 2017, everyone!
2017-01-01 15:30:33 +01:00
Taryn Hill
43317e0f5d Update copyright notice year to 2017 2016-12-31 23:46:13 -06:00
reaperrr
ab914b610b Merge pull request #11686 from Mailaender/zbstudio-lua-api
Added API and auto-complete description generator for ZeroBrane Studio
2016-12-31 12:00:04 +01:00
Paul van Tilburg
2dd6376a39 Leave the openra-server man page out for now; add an lintian override
See also issue #12525.
2016-12-30 15:56:57 +01:00
Paul van Tilburg
84c5a72986 Fix the issues with filenames for the md5sums
Lintian reported missing md5sums for all files under usr/ and reported the
existence of md5sums for all files under /usr that we're not in the
package.
2016-12-30 14:40:36 +01:00
Paul van Tilburg
41dfaaf564 Add a lintian override for the font duplication
This will probably never be fixed and the override is there to document
that this is ignored explicitly.
2016-12-30 14:39:21 +01:00
Paul van Tilburg
2ae5dba961 Fix up the changelog
Just use a dummy changelog entry about the release and fix
a syntax error in the entry footer.

The changelog should not contain the contents of Changelog.md as this
results in an unparsable Debian changelog.  The game's changelog is already
available as CHANGELOG.html in /usr/share/doc/openra.
2016-12-30 14:37:03 +01:00
Paul van Tilburg
0210711fad Create a link for the OpenRA server manpage; compress the normal one
The command-line arguments of the openra-server executable are the
same as for openra.
2016-12-30 14:35:56 +01:00
Paul van Tilburg
53c67bc8c2 Fix permissions of the DLL files and game executables
The DLL files should not be exectable, nor should the game executables
be writeable by the group.
2016-12-30 14:34:34 +01:00
Paul van Tilburg
c614c7e730 Fix empty paragraph in description; remove article from short description 2016-12-30 14:32:25 +01:00
reaperrr
5d9ad47a67 Merge pull request #12511 from abcdefg30/onAllMTMsRemoved
Fix a potential crash in Monster Tank Madness
2016-12-28 22:36:15 +01:00
reaperrr
bdb4d642ab Merge pull request #12505 from obrakmann/fix-open.nat-nuget-borkage
Work around Open.Nat installation by nuget failing randomly
2016-12-28 21:01:30 +01:00
reaperrr
faa2862207 Merge pull request #12491 from pchote/force-dotnet
Abort installation if .NET 4.5 isn't installed.
2016-12-28 20:51:43 +01:00
Oliver Brakmann
137359a097 Merge pull request #12355 from reaperrr/rem-nuke-DelAct
Remove DelayedAction from NukePower
2016-12-28 18:56:33 +01:00
reaperrr
f6924d740e Add RevealGeneratedShroud toggle to NukePower
To give modders a choice.
2016-12-28 18:45:50 +01:00
reaperrr
e582ba759f NukePower CameraActor removal upgrade rule 2016-12-28 18:45:49 +01:00
reaperrr
ec5c3a710d NukePower description style fixes 2016-12-28 18:45:47 +01:00
reaperrr
079908d238 Make NukePower use RevealShroudEffect instead of camera actor
Additionally, remove the DelayedAction and let the beacon remove itself
instead.
2016-12-28 18:45:45 +01:00
reaperrr
79add6113c Add RevealShroudEffect
This allows support powers etc. to reveal shroud for customizable amount
of ticks and after customizable delay, instead of spawning camera actors.
2016-12-28 18:45:44 +01:00
reaperrr
1a0f72d2b0 Merge pull request #12484 from pchote/installer-fixes
Fix asset installation on 32 bit windows and with original RA CDs.
2016-12-28 16:53:15 +01:00
reaperrr
72ae03ff81 Merge pull request #12508 from Mailaender/ts-map-forest-fires
Added Tiberian Sun map Forest Fires
2016-12-28 15:31:51 +01:00
reaperrr
aa53553cdf Add BeaconDelay to SupportPower 2016-12-27 17:13:54 +01:00
reaperrr
871576b300 Add delay and full duration support to beacons
Previously, support power beacons were hardcoded to unlimited duration and
then cleaned up directly by the support power. This is problematic if we
want the beacon to remove itself after a certain delay, though.
2016-12-27 17:13:53 +01:00
abcdefg30
846731ef20 Fix a potential crash in Monster Tank Madness 2016-12-27 01:13:16 +01:00
Matthias Mailänder
538047c263 Add Tiberian Sun map Forest Fires. 2016-12-25 06:11:55 +01:00
Oliver Brakmann
86785d5aba Work around Open.Nat installation by nuget failing randomly 2016-12-24 18:42:20 +01:00
Oliver Brakmann
d21b805012 Merge pull request #12497 from pchote/condition-manager
Complete Upgrades -> Condition transition.
2016-12-24 13:43:15 +01:00
Oliver Brakmann
8977a5651f Merge pull request #12499 from RoosterDragon/sound-dispose
Dispose some sound streams
2016-12-24 13:26:51 +01:00
Paul Chote
2322d40395 Renamed Upgrades directory to Conditions. 2016-12-23 23:29:40 +00:00
Paul Chote
268ed016ab Rename UpgradableTrait to ConditionalTrait. 2016-12-23 23:28:34 +00:00
RoosterDragon
226c0a050a Dispose some sound streams. 2016-12-23 19:37:17 +00:00
Oliver Brakmann
53bd29351b Merge pull request #12470 from SoScared/AlliedDefenseNerf
[RA] [Balance] Allied Defensive Structures - Increase Cost & Production Time.
2016-12-23 17:32:17 +01:00
Paul Chote
d0270ab866 Rename comments and documentation. 2016-12-23 15:17:02 +00:00
Paul Chote
152ae13cea Rename SelectUpgradeTarget. 2016-12-23 15:14:36 +00:00
Paul Chote
c8afbb16ba Rename prerequisite watcher key prefix. 2016-12-23 15:13:20 +00:00
Paul Chote
9e70c3f497 Rename GrantUpgradeOnValidDamageState. 2016-12-23 15:11:07 +00:00
Paul Chote
0cf60456a5 Remove upgrade shim code. 2016-12-23 15:09:08 +00:00
Paul Chote
15b465c1e2 Change DeployToUpgrade order to GrantConditionOnDeploy. 2016-12-23 15:07:35 +00:00
Paul Chote
cb9178364f Change upgradeAvailable to instancesEnabled in SupportPowerManager. 2016-12-23 15:06:22 +00:00
Paul Chote
f360c10569 Rename ConditionManager variables. 2016-12-23 15:02:52 +00:00
Paul Chote
dcad5c3f7c Rename UpgradeManager to ConditionManager. 2016-12-23 14:57:56 +00:00
Oliver Brakmann
0e56185195 Merge pull request #12488 from draculus/installation
Fixed Open.Nat directory name case
2016-12-23 15:33:54 +01:00
Oliver Brakmann
189c25431b Merge pull request #12158 from reaperrr/areabeam-tracking
Add AreaBeam target tracking
2016-12-23 14:44:11 +01:00
Oliver Brakmann
f15a81282e Merge pull request #12477 from pchote/conditions-lint
Add a conditions lint rule + other rules fixes.
2016-12-23 14:27:22 +01:00
Oliver Brakmann
f35c83e977 Merge pull request #12465 from pchote/shellmap-overhaul
Rework shellmap UX.
2016-12-23 13:57:37 +01:00
Paul Chote
03236927e5 Replace TD shellmap with a fixed background. 2016-12-23 11:34:23 +00:00
Paul Chote
a16344d347 Remove "Show Shellmap" setting. 2016-12-23 11:34:23 +00:00
Paul Chote
55f76c02d6 Disable world sounds when the ingame menu is open. 2016-12-23 11:34:23 +00:00
Paul Chote
443c3ee72d Disable sound on the shell maps. 2016-12-23 11:34:23 +00:00
Paul Chote
9ddfdc45b3 Introduce SoundType enum. 2016-12-23 11:34:23 +00:00
Paul Chote
f787f275db Add actor conditions lint rule. 2016-12-23 11:31:06 +00:00
Paul Chote
2d8db8ddd2 Fix GALITE conditions. 2016-12-23 11:29:24 +00:00
Paul Chote
2e8479b9a2 Split out and reset crate stat modifier bonuses. 2016-12-23 11:29:24 +00:00
Paul Chote
72f61ed95c Start reorganising TS Inherits. 2016-12-23 11:29:24 +00:00
Paul Chote
72589ae967 Fix TS aircraft conditions. 2016-12-23 11:29:24 +00:00
Paul Chote
4a179e4824 Remove ^EmpDisableMobile inherit. 2016-12-23 11:29:24 +00:00
Paul Chote
a6f25438c3 Remove bogus ExternalConditions from fort-lonestar. 2016-12-23 11:29:24 +00:00
Paul Chote
5979819d9b Work around RA experience inherits. 2016-12-23 11:29:24 +00:00
Paul Chote
0145bfc0c0 Work around RA aircraft inherits. 2016-12-23 11:29:24 +00:00
Paul Chote
623842d699 Fix RA aircraft conditions. 2016-12-23 11:29:24 +00:00
Paul Chote
b5390cb23c Split out ^AcceptsCloakCrate template. 2016-12-23 11:29:24 +00:00
Paul Chote
a4227757b6 Move ^GainsExperience inherit to the actors. 2016-12-23 11:29:24 +00:00
Paul Chote
59013a581c Remove unused airborne condition from TD aircraft. 2016-12-23 11:29:24 +00:00
Paul Chote
024cc3db7e Prepare condition attributes for new lint rule. 2016-12-23 11:29:24 +00:00
Oliver Brakmann
28182ddc36 Merge pull request #12467 from SoScared/nukemoretrees
[RA] Increase Nuke Damage vs Trees
2016-12-21 21:57:10 +01:00
Oliver Brakmann
fd03031bd3 Merge pull request #12179 from abcdefg30/startCrash
Log an error when no cells are available to spawn starting units
2016-12-21 21:22:25 +01:00
Oliver Brakmann
67d10aa5bb Merge pull request #12485 from pchote/remove-ai-capturing
[bleed] Remove AI capturing from TD and RA, and AIs using mechanics and medics in RA
2016-12-21 21:17:23 +01:00
Oliver Brakmann
05c2081143 Merge pull request #12458 from pchote/map-top-targetability
Reduce aircraft not being targetable at the north edge of the map.
2016-12-21 21:14:19 +01:00
abcdefg30
deb082c91e Log an error when no cells are available to spawn starting units 2016-12-19 22:43:45 +01:00
Paul Chote
2ed7e1a0e3 Abort installation if .NET 4.5 isn't installed. 2016-12-19 18:35:23 +00:00
abcdefg30
7513707b8d Merge pull request #12457 from abc013/specchat
Added Replays are showing team chats
2016-12-19 00:07:21 +01:00
reaperrr
19dbcc9886 Merge pull request #12405 from reaperrr/slim-cnc-weapon-yamls
Shrink TD weapon yamls by using inheritance
2016-12-18 19:08:24 +01:00
reaperrr
74f7827187 Merge pull request #12486 from pchote/fix-minelayer-ordergenerator
Avoid querying traits from dead minelayers.
2016-12-18 18:25:32 +01:00
reaperrr
1f626e239b Improve TD largecaliber.yaml order 2016-12-18 18:21:34 +01:00
Paul Chote
d6a7a57ee3 Merge pull request #12429 from reaperrr/firestorm-installation
Add TS Firestorm installation
2016-12-18 15:07:10 +00:00
Paul Chote
5d5e559a8a Merge pull request #12305 from reaperrr/gps-remove-delayedaction
Replace DelayedAction in GpsWatcher with Tick-based solution
2016-12-18 14:13:48 +00:00
Pavel Kačer
0d9f95dc67 Additionally fixed the get() line for Open.Nat 2016-12-18 14:21:07 +01:00
Pavel Kačer
6d9d7cf341 Fixed Open.Nat directory name case 2016-12-18 13:50:32 +01:00
Paul Chote
1abd3a2d6e Add support for the original RA95 CDs. 2016-12-18 00:26:50 +00:00
Paul Chote
e30ca88797 Add support for hashing partial IDFiles. 2016-12-18 00:26:50 +00:00
Paul Chote
f8d0dcad4f Fix SourceType.Install on 32 bit windows. 2016-12-18 00:26:49 +00:00
Paul Chote
d3db66a8af Support multiple registry path prefixes. 2016-12-18 00:26:48 +00:00
Paul Chote
40419bc8ea Avoid querying traits from dead minelayers. 2016-12-17 21:10:11 +00:00
Oliver Brakmann
7e6488c522 Remove AI capturing from TD and RA 2016-12-17 20:53:31 +00:00
Oliver Brakmann
d340f864ec Remove medics and mechanics from RA AIs 2016-12-17 20:53:25 +00:00
reaperrr
4e891751e4 Add TS+FS quick install 2016-12-17 15:59:44 +01:00
reaperrr
993129d679 Add FS map and menu music to FS music package 2016-12-17 15:59:40 +01:00
Guido L
d7b8445d39 Add Map "Drawbridges" 2016-12-17 15:59:38 +01:00
Guido L
e10b1b1166 Add the Firestorm Tileset 2016-12-17 15:59:37 +01:00
Guido L
d70faefc98 Add the Firestorm Trees 2016-12-17 15:59:35 +01:00
Guido L
3dca7fcaa4 Add the Metadata for the Installer 2016-12-17 15:59:33 +01:00
reaperrr
9abfce97fa Rename LaserZap.TracksTarget to TrackTarget
And fix engineVersion of older Duration upgrade rule.
2016-12-17 15:28:28 +01:00
reaperrr
4d738d8fb9 Enable target tracking on TS SonicZap 2016-12-17 15:28:26 +01:00
reaperrr
046f857409 Add target tracking support to AreaBeam
Closes #10181.
2016-12-17 15:28:25 +01:00
Paul Chote
f46a3e2d16 Merge pull request #12377 from Phrohdoh/actor-sequences
Rework resolved MiniYaml outputting utility commands
2016-12-17 12:50:00 +00:00
Paul Chote
aeceb87b6f Merge pull request #12437 from GraionDilach/strapping-missiles
Allow the missile to snap at the target at reach.
2016-12-17 12:41:48 +00:00
Taryn Hill
213e5532f5 Completely rewrite miniyaml tree outputting utility commands
Rename --actor-yaml to --resolved-rules <actor name>
Implement --resolved-sequences <image name>
Implement --resolved-weapons <weapon name>
2016-12-17 06:33:49 -06:00
reaperrr
9acdff1c50 Slim down TD missiles.yaml via inheritance 2016-12-16 21:04:15 +01:00
reaperrr
f30f47de4f Slim down TD other.yaml via inheritance 2016-12-16 21:00:39 +01:00
reaperrr
189ade3001 Slim down TD explosions.yaml via inheritance 2016-12-16 21:00:37 +01:00
reaperrr
90b87bc32c Slim down TD smallcaliber.yaml via inheritance 2016-12-16 21:00:33 +01:00
reaperrr
6e83a3b550 Slim down TD largecaliber.yaml via inheritance 2016-12-16 20:30:36 +01:00
reaperrr
1ed21f3756 Remove unused 105mm and HonestJohn weapons 2016-12-16 20:27:23 +01:00
Paul Chote
83564ecc60 Nudge aircraft back inside the map. 2016-12-16 11:24:17 +00:00
reaperrr
ddb22ec2bd Merge pull request #12452 from GraionDilach/ai-vs-allowmultiple-sp
Fix AI superweapon usage.
2016-12-16 00:32:38 +01:00
reaperrr
f0dd19116f Merge pull request #12469 from SoScared/rename0
[RA] Rename Shipyard and Transport Helicopter
2016-12-14 14:10:38 +01:00
SoScared
69ad1c9e81 Allied defensive structures - increase cost & production time 2016-12-14 00:35:38 +01:00
abcdefg30
0929636b39 Merge pull request #12462 from pchote/condition-granters
Upgrades overhaul part 4d: Other condition granters
2016-12-13 22:28:44 +01:00
Paul Chote
39c2b76c51 Convert DisableOnUpgrade to conditions. 2016-12-13 19:30:42 +00:00
Paul Chote
736d66d2c2 Convert GainsExperience to conditions. 2016-12-13 19:30:42 +00:00
Paul Chote
f4e0b91e04 Convert DeployToUpgrade to conditions. 2016-12-13 19:30:41 +00:00
Paul Chote
1ef3e246d1 Convert GlobalUpgradable to conditions. 2016-12-13 19:30:41 +00:00
Paul Chote
b5ee30345b Convert Pluggable to conditions. 2016-12-13 19:30:40 +00:00
Paul Chote
5719e62c2c Convert AttackSwallow to conditions. 2016-12-13 19:30:40 +00:00
Paul Chote
29d7d42638 Convert UpgradeOnTerrain to conditions. 2016-12-13 19:30:40 +00:00
Paul Chote
f9791bbc1d Convert UpgradeOnMovement to conditions. 2016-12-13 19:30:39 +00:00
Paul Chote
b9bc6eba16 Convert UpgradeOnDamageState to conditions. 2016-12-13 19:30:39 +00:00
Paul Chote
e0583af663 Convert PrimaryBuilding to conditions. 2016-12-13 19:30:39 +00:00
Paul Chote
bcb3d52eb0 Convert Parachutable to conditions. 2016-12-13 19:30:38 +00:00
Paul Chote
a846e484c7 Convert Disguise to conditions. 2016-12-13 19:30:38 +00:00
Paul Chote
04637a305a Convert Cloak to conditions. 2016-12-13 19:30:37 +00:00
Paul Chote
60cd12874e Convert Aircraft to conditions. 2016-12-13 19:30:37 +00:00
abcdefg30
2fcb266e13 Merge pull request #12451 from pchote/cargo-conditions
Upgrades overhaul part 4c: Cargo and Passenger
2016-12-13 16:19:14 +01:00
Paul Chote
f14d770363 Add Cargo.LoadedCondition. 2016-12-12 19:43:58 +00:00
Paul Chote
45af024b15 Convert Cargo to conditions. 2016-12-12 19:43:57 +00:00
reaperrr
ea46199cab Merge pull request #12449 from pchote/uan-conditions
Upgrades overhaul part 4b: UpgradeActorsNear -> ProximityExternalCondition
2016-12-12 20:39:53 +01:00
Paul Chote
32f0d570bf Rework UpgradeActorsNear -> ProximityExternalCondition. 2016-12-12 14:28:54 +00:00
SoScared
e5a3da9df8 Rename to Chinook & Naval Yard. 2016-12-11 20:49:05 +01:00
Oliver Brakmann
5eaaff45ad Merge pull request #12448 from pchote/lua-conditions
Upgrades overhaul part 4a: Lua API
2016-12-11 20:23:59 +01:00
SoScared
d314b22203 nukemoretrees 2016-12-11 19:21:41 +01:00
Paul Chote
f4f2030b29 Port scripts to new api. 2016-12-11 00:40:17 +00:00
Paul Chote
ea7ad2e337 Migrate lua upgrades to conditions. 2016-12-11 00:40:14 +00:00
Oliver Brakmann
37394b6269 Merge pull request #12411 from pchote/fix-multiplesight-crash
Fix crash when actors with multiple RevealsShroud target a dead frozen actor.
2016-12-10 20:56:08 +01:00
Oliver Brakmann
ff65ec8a37 Merge pull request #12338 from reaperrr/explodes-footprint
Add footprint support to Explodes, remove WithBuildingExplosion
2016-12-10 20:17:15 +01:00
reaperrr
4e92311a59 Trigger RA GPS reveal from sat missile effect instead of DelayedAction 2016-12-10 15:41:14 +01:00
reaperrr
20439975d7 Disable Explodes trait on TS bridge huts
They would fail Lint otherwise, because they have no Health trait.
2016-12-10 14:20:11 +01:00
reaperrr
b7f746d711 Remove WithBuildingExplosion
Explodes can now do the same and then some, and WBE uses a DelayedAction
which blocks savegames.
2016-12-10 13:47:51 +01:00
reaperrr
4f2c360cb9 Use Explodes instead of WithBuildingExplosion in D2k 2016-12-10 13:45:12 +01:00
reaperrr
bccc127645 Use Explodes instead of WithBuildingExplosion in TD 2016-12-10 13:45:12 +01:00
reaperrr
eb34621ce8 Use Explodes instead of WithBuildingExplosion in RA 2016-12-10 13:45:12 +01:00
reaperrr
5046855a7d Use Explodes instead of WithBuildingExplosion in TS
Additionally, make Refinery and Tib Silo spawn tiberium on destruction unless empty.
2016-12-10 13:45:12 +01:00
reaperrr
a0934418cf Add support for footprint explosions to Explodes 2016-12-10 13:45:12 +01:00
reaperrr
2d194b077d Make some Explodes property descs a bit more precise 2016-12-10 13:45:12 +01:00
reaperrr
1b3884de23 Make Explodes implement interfaces explicitly 2016-12-10 13:45:12 +01:00
reaperrr
d9d1fe2e73 Move VisibilityType enum to TraitsInterfaces
VisibilityTypes are used by several other traits as well, so it makes more sense to move it to a common, shared location.
2016-12-10 13:45:12 +01:00
Paul Chote
1da4d97240 Merge pull request #12430 from pchote/ts-bridge-rendering
Implement TS ground-level bridges.
2016-12-10 12:01:44 +00:00
Paul Chote
73a0f470c8 Implement TS bridge rendering. 2016-12-10 11:52:05 +00:00
Paul Chote
842e004ec5 Add a RenderSprites.UnnormalizeSequence helper. 2016-12-10 11:52:05 +00:00
Paul Chote
0d769383e2 Add playable category back to A River Runs Near. 2016-12-10 11:52:04 +00:00
Paul Chote
69e3c538d9 Implement ground-level bridge destruction and repair. 2016-12-10 11:52:04 +00:00
Paul Chote
1101218962 Fix TS goldwrench cursor. 2016-12-10 11:36:41 +00:00
Paul Chote
f91307f4be Rename LowBridge to GroundLevelBridge. 2016-12-10 11:36:40 +00:00
Paul Chote
0bc087f7bd Rename BridgeLayer to LegacyBridgeLayer. 2016-12-10 11:36:39 +00:00
Paul Chote
a5549d3944 Rename BridgeHut to LegacyBridgeHut. 2016-12-10 11:35:29 +00:00
Paul Chote
e2322c9c53 Merge pull request #12406 from pchote/external-conditions
Upgrades overhaul part 3: Timed, external, and stacked conditions.
2016-12-09 23:45:14 +00:00
Oliver Brakmann
4b61a52b3a Merge pull request #12434 from reaperrr/mcv-spawn-facing
Make MP start units facings customizable
2016-12-09 21:43:52 +01:00
Oliver Brakmann
b4f6b25941 Merge pull request #12459 from pchote/fix-server-exploit
Reset server slots and reenable spectators when the last player quits.
2016-12-09 21:34:50 +01:00
Oliver Brakmann
8027503832 Merge pull request #12460 from pchote/remove-server-timeout
Remove broken and disabled by default Server.TimeOut setting.
2016-12-09 21:27:12 +01:00
Oliver Brakmann
8babf2b0ca Merge pull request #12290 from abc013/UnCloakOnDamage
[D2k] Added the 'Damage' UncloakType to several units
2016-12-09 19:35:45 +01:00
abc013
a403699367 Added Replays are showing team chats 2016-12-09 19:32:11 +01:00
Paul Chote
1153cd2f7c Reset slot configuration when all players leave a dedicated server. 2016-12-08 21:06:24 +00:00
Paul Chote
5188a08c81 Remove broken and disabled by default Server.TimeOut setting. 2016-12-08 20:49:28 +00:00
Paul Chote
7a9174e7fc Fix aircraft defaults. 2016-12-08 18:23:25 +00:00
Paul Chote
fd1d030cb0 Add GroundPosition support to HiddenUnder(Shroud|Fog). 2016-12-08 18:16:30 +00:00
Paul Chote
35780cadd0 Fix missing base method call in Carryable. 2016-12-06 17:21:15 +00:00
Paul Chote
da6fd74881 Add support for stacked condition bonuses. 2016-12-06 17:21:14 +00:00
Paul Chote
34a94e16f6 Update TD rules. 2016-12-06 17:21:14 +00:00
Paul Chote
149705942c Update RA rules. 2016-12-06 17:21:14 +00:00
Paul Chote
e166cd3222 Update TS rules. 2016-12-06 17:21:14 +00:00
Paul Chote
ac4f89ce51 Add upgrade rules. 2016-12-06 17:21:13 +00:00
Paul Chote
60e45b9eb7 Extract RenameNodeKey helper. 2016-12-06 17:21:13 +00:00
Paul Chote
6e29dfecfe Port GrantUpgradeCrateAction to GrantExternalConditionCrateAction. 2016-12-06 17:21:13 +00:00
Paul Chote
764401be10 Port GrantUpgradeWarhead to GrantExternalConditionWarhead. 2016-12-06 17:21:13 +00:00
Paul Chote
f274522083 Port GrantUpgradePower to GrantExternalConditionPower. 2016-12-06 17:21:12 +00:00
Paul Chote
6f5c4cf969 Rename TimedUpgradeBar to TimedConditionBar. 2016-12-06 17:21:12 +00:00
Paul Chote
a692c1e761 Rework timed conditions. 2016-12-06 17:21:12 +00:00
Paul Chote
f934a4e2b7 Add an external condition whitelist. 2016-12-06 17:21:12 +00:00
Paul Chote
983a24199a Remove notmobile condition from TS. 2016-12-06 17:21:12 +00:00
reaperrr
7827d50e99 Merge pull request #12441 from qwIvan/patch-1
mipsel architecture support
2016-12-05 21:17:33 +01:00
Zimmermann Gyula
35b1949a61 Use MPos during AI coarse support power targeting. 2016-12-05 15:08:00 +01:00
Zimmermann Gyula
f927d54db7 Fix AI unable to activate AllowMultiple support powers. 2016-12-05 15:08:00 +01:00
reaperrr
a8f3172c6b Merge pull request #12396 from pchote/conditions-fix-carryalls
Upgrades overhaul part2: GrantCondition and Carryall fixes.
2016-12-03 16:51:49 +01:00
Paul Chote
fe8f2acd62 Remove hardcoded default carryable conditions. 2016-12-01 20:48:24 +00:00
Paul Chote
02e7b1ebfb Fix Carryall interaction with sensor array and tick tanks. 2016-11-30 19:24:44 +00:00
Paul Chote
966fad7af3 Add upgrade rules and update d2k. 2016-11-30 19:24:44 +00:00
Paul Chote
81113e07a6 Remove WithDecorationCarryable. 2016-11-30 19:24:43 +00:00
Paul Chote
2dc70146c8 Replace Upgrades with Conditions in Carryable. 2016-11-30 19:24:43 +00:00
Paul Chote
dc7fa14992 Add GrantCondition trait. 2016-11-30 19:24:43 +00:00
reaperrr
848cf19ba8 Merge pull request #12381 from pchote/upgrade-conditions
Upgrades overhaul part 1: EnabledCondition
2016-11-30 19:42:34 +01:00
qwIvan
9397a1b599 mipsel support 2016-11-30 15:59:52 +08:00
Paul Chote
6150d25105 Merge pull request #12367 from Phrohdoh/makefile-mono-msg
Add message to fixheader.exe target if Mono isn't installed
2016-11-29 07:45:11 +00:00
Zimmermann Gyula
bf810cd934 Enable missile snapping in TS. 2016-11-28 17:14:43 +01:00
Zimmermann Gyula
51db12467d Allow the missile to snap at the target at reach. 2016-11-28 17:14:30 +01:00
reaperrr
5a8df27096 Make MP start units facing customizable
There might be modders or mappers who prefer different initial facing settings than the hardcoded ones.
2016-11-27 18:40:25 +01:00
reaperrr
c45c51f95d Merge pull request #12431 from pchote/heightmap-cliff-blocking
Add CliffBackImpassabilityLayer to TS.
2016-11-27 13:52:04 +01:00
reaperrr
d170841a93 Merge pull request #12432 from pchote/fix-classic-aircraft-reveal
Make RA and TD aircraft reveal shroud from the point on the ground below them.
2016-11-27 13:31:28 +01:00
Paul Chote
5d0ce81eb0 Make RA/TD aircraft sight relative to ground-based position. 2016-11-26 21:19:37 +00:00
Paul Chote
b1f99dd601 Add GroundPosition VisibilityType. 2016-11-26 21:10:44 +00:00
Paul Chote
ef8a7a535d Fix string comparison in CheckRevealFootprint. 2016-11-26 21:10:28 +00:00
Paul Chote
7e428d2c91 Add CliffBackImpassabilityLayer to TS. 2016-11-26 20:56:18 +00:00
reaperrr
68ee776b77 Merge pull request #12339 from abc013/medicmechfix
Fixed Mechanic and Medic can heal enemy units
2016-11-26 17:06:46 +01:00
Paul Chote
653f4cfdbd Merge pull request #12426 from reaperrr/bleed-style-hotfix
ReplayMetadata style fix
2016-11-25 12:08:19 +00:00
reaperrr
07312f8c62 ReplayMetadata style fix 2016-11-25 12:35:16 +01:00
reaperrr
2708117bfe Merge pull request #12357 from pchote/fix-invalid-replay-crash
Ignore invalid replay files instead of crashing.
2016-11-25 12:07:16 +01:00
reaperrr
807d0af851 Merge pull request #12425 from pchote/fix-shroud-crash
Fix missing array bounds check in Shroud.IsExplored.
2016-11-25 12:03:15 +01:00
abcdefg30
878ba2e817 Merge pull request #12398 from pchote/shroud-edge-fail
Fix shroud rendering outside the map cordon.
2016-11-24 22:34:58 +01:00
Paul Chote
ff94dd914a Fix missing array bounds check in Shroud.IsExplored. 2016-11-24 19:07:18 +00:00
RoosterDragon
c244fbb4d3 Merge pull request #12393 from Phrohdoh/sound-loaders
Fix enumeration in Sound::LoadSound to use the ISoundLoader[] param
2016-11-23 20:05:33 +00:00
abcdefg30
0fc45b8c70 Merge pull request #12348 from abc013/120mm
Fixed the 120mm bullet not harming infantry
2016-11-23 15:12:35 +01:00
Paul Chote
1506a3c26f Fix crash with multiple RevealsShrouds targeting dead frozen actor. 2016-11-21 22:33:35 +00:00
Paul Chote
0ba0470390 Remove upgrades lint check. 2016-11-20 13:55:47 +00:00
Paul Chote
3f0b33992c Rewrite UpgradeManager implementation to suit conditions. 2016-11-20 13:55:47 +00:00
Paul Chote
05187f5828 Remove legacy UpgradeTypes consumer code. 2016-11-20 13:38:41 +00:00
Matthias Mailänder
ef25d4cd56 API and auto-complete description generator for ZeroBrane Studio 2016-11-20 06:37:16 +01:00
Paul Chote
a266dc6639 Fix shroud rendering outside the map cordon. 2016-11-19 18:10:12 +00:00
Paul Chote
9ceb3813e6 Manually port TD veterancy to conditions. 2016-11-19 17:19:28 +00:00
Paul Chote
bee7f14ae5 Update TD rules. 2016-11-19 17:19:28 +00:00
Paul Chote
2fb1875fd7 Manually port D2k veterancy to conditions. 2016-11-19 17:19:28 +00:00
Paul Chote
56fa3db051 Update D2K rules and shellmap. 2016-11-19 17:19:27 +00:00
Paul Chote
4bd1921f88 Manually port RA veterancy and shellmap to conditions. 2016-11-19 17:19:27 +00:00
Paul Chote
4ed7725e20 Update RA rules. 2016-11-19 17:19:27 +00:00
Paul Chote
326cc0bf5b Add upgrade rule for migrating UpgradeTypes to RequiresCondition. 2016-11-19 17:19:27 +00:00
Paul Chote
12d31cd09e Replace UpgradeTypes -> RequiresCondition across TS. 2016-11-19 17:19:26 +00:00
Paul Chote
5fbdd78f41 Add an RequiresCondition field to UpgradeableMultiplierTrait. 2016-11-19 17:19:26 +00:00
Paul Chote
5192c27199 Add an RequiresCondition field to UpgradeableTrait. 2016-11-19 17:19:26 +00:00
Paul Chote
1cc7944437 Add FieldLoader and linter support for BooleanExpression. 2016-11-19 17:19:25 +00:00
Paul Chote
23f4ae5027 Replace UpgradeMinEnabledLevel checks with an EnabledByDefault shim. 2016-11-19 17:19:25 +00:00
Rob Wilkinson
e337048a97 Fixes issue with rocket soldiers wandering
Fixes #12368
2016-11-19 17:13:17 +00:00
Taryn Hill
51dd79261f Fix enumeration in Sound::LoadSound to use the ISoundLoader[] param 2016-11-18 20:23:15 -06:00
reaperrr
c4b5b745ef Merge pull request #12307 from pchote/passive-visibility
Add plumbing for improved RA gap generator behaviour.
2016-11-18 14:34:35 +01:00
reaperrr
56fdfb1ec8 Merge pull request #12370 from pchote/heightmap-shroud-reveal
Implement heightmap-visibility blocking
2016-11-18 14:23:53 +01:00
reaperrr
f550c3b762 Merge pull request #12315 from obrakmann/activities-pt1
Activities re-write, part 1 (aka the boring bits)
2016-11-18 13:52:06 +01:00
reaperrr
026ab9e2d7 Merge pull request #12302 from Jiyuu/modifyingpowershell
Restructuring make script
2016-11-18 13:33:28 +01:00
reaperrr
43b495b19f Merge pull request #12337 from roundowl/patch-2
Make friendly units aware of friendly mines
2016-11-18 13:02:30 +01:00
abcdefg30
c12cfbcc18 Merge pull request #12374 from reaperrr/fix-ts-depot
Fix TS service depot depth sorting
2016-11-17 21:53:08 +01:00
Taryn Hill
bf994b35b0 Add message to fixheader.exe target if Mono isn't installed 2016-11-17 12:49:01 -06:00
reaperrr
d8d7c0c0f7 Merge pull request #12352 from abc013/EmitCivs
Let civilian buildings spawn civilians on death
2016-11-16 19:08:00 +01:00
Taryn Hill
be0798999d Merge pull request #12378 from pchote/boolexpr
Add a boolean expression parser
2016-11-16 09:39:47 -06:00
Paul Chote
cc34f8e557 Add a boolean expression parser. 2016-11-15 21:45:00 +00:00
Oliver Brakmann
fd22b19183 Use consistent spelling of 'interrupt[a|i]ble' 2016-11-13 15:50:22 +01:00
Paul Chote
06b9741807 Reveal the top tiles of cliffs too. 2016-11-13 12:31:21 +00:00
reaperrr
0479b7ffb5 Merge pull request #12341 from reaperrr/no-overlay-delayedaction
Remove hardcoded buildComplete delay in some overlays
2016-11-13 13:24:42 +01:00
reaperrr
0c78527ae8 Merge pull request #12354 from pchote/fix-smudge-out-of-bounds
Add map bounds checks to TerrainSpriteLayer and SmudgeLayer.
2016-11-13 13:08:51 +01:00
Taryn Hill
40fcd21e5f Merge pull request #12369 from pchote/ts-development-prompt
Add an introduction dialog for non-{DEV_VERSION} TS builds.
2016-11-12 20:12:33 -06:00
abc013
e4354ce08c Added SpawnActorOnDeath: Civilians to ^CivBuilding 2016-11-12 14:45:49 +01:00
reaperrr
29355129d2 Fix TS service depot depth sorting 2016-11-12 12:56:37 +01:00
Paul Chote
d68c705512 Block actor sight above cliffs. 2016-11-11 17:46:53 +00:00
Paul Chote
988778fe1f Add an introduction dialog for non-{DEV_VERSION} TS builds. 2016-11-11 17:03:18 +00:00
Paul Chote
b6809c97f2 Add a CellLayer with the height of each projected cell. 2016-11-11 16:44:12 +00:00
abcdefg30
e7e17a0f5a Merge pull request #12323 from pchote/fix-dedicated-upnp-crash
Fix dedicated server crash with AllowPortForward.
2016-11-11 15:18:37 +01:00
Paul Chote
bbe4864921 Fix dedicated server crash with AllowPortForward. 2016-11-11 13:06:00 +00:00
Paul Chote
ab344b390d Ignore invalid replay files instead of crashing. 2016-11-11 13:00:58 +00:00
reaperrr
7ba0c22346 Merge pull request #12096 from pchote/game-timer-tooltip
Show replay percentage as a tooltip.
2016-11-06 16:59:07 +01:00
Paul Chote
983d8ac39e Add passive visibility type. 2016-11-06 15:40:22 +00:00
Paul Chote
fdac5a6d8a Rework internal shroud plumbing. 2016-11-06 15:40:22 +00:00
Paul Chote
7a4d7989fe Merge pull request #12347 from tohava/del_delayedaction_in_weaponinfo
Remove DelayedAction from WeaponInfo
2016-11-05 18:16:19 +00:00
Paul Chote
77e0c579ba Merge pull request #12287 from reaperrr/interface-cleanups03
Third round of interface moving, making explicit and cleanup
2016-11-05 18:02:39 +00:00
reaperrr
162fef3da1 Fix style nit 2016-11-05 18:54:41 +01:00
Paul Chote
e187b985fe Prevent smudges from spawning in bogus cells. 2016-11-05 17:45:27 +00:00
Paul Chote
4db93f70c7 Add a cell sanity check to TerrainSpriteLayer. 2016-11-05 17:44:02 +00:00
abc013
f9d4308161 Fixed the 120mm bullet not harming infantry 2016-11-04 09:09:25 +01:00
Ori Bar
fabe799907 Remove DelayedAction from WeaponInfo and replace it with the more serialization friendly DelayedImpact 2016-11-04 02:24:43 +02:00
Jiyuu
dbea8d9515 Restructuring the make script & making the "all" command fetch dependencies as well 2016-11-03 22:49:19 +02:00
roundowl
194caa0163 Makes friendly units aware of mines
Added BlockFriendly boolean into Mine trait parameters. If set to true, friendly units vulnerable to mines will route around tiles with friendly mines in them.
2016-11-03 23:07:57 +03:00
reaperrr
e8027a6fdf Remove hardcoded buildComplete delay in some overlays
There certainly was and possibly still is some issue this was trying to
work around, but unless it's a deal-breaker, we should rather try to fix that
issue directly instead of keeping some uncommented magical work-around.
2016-11-02 22:01:45 +01:00
reaperrr
8cda0dd360 Merge pull request #12332 from abc013/NineLivesAuthor
Changed the Author of 'Nine Lives' to PizzaAtomica
2016-11-02 20:56:40 +01:00
reaperrr
8c15aa2ce4 Merge pull request #12331 from abc013/BeThVeFix
Fixed tiling error on the map 'Behind the Veil'
2016-11-02 20:50:29 +01:00
abc013
d9ff07e835 Fixed Mechanic and Medic can heal enemy units 2016-11-01 21:38:53 +01:00
abc013
1d39ce8739 Change the Author of 'Nine Lives' to PizzaAtomica 2016-11-01 12:51:12 +01:00
abc013
c1eced55bf Fixed tiling error on the map 'Behind the Veil' 2016-11-01 12:41:56 +01:00
reaperrr
03fd591a00 Remove some unused usings 2016-10-31 21:12:41 +01:00
Oliver Brakmann
2c66ee8c13 Add native support for uninterruptible activities
This pattern occurs a few times throughout the code, so it makes sense to bake it into the Activity class itself.
2016-10-31 18:46:27 +01:00
Oliver Brakmann
3e9bf7aa4d Turn Actor.GetCurrentActivity into a property 2016-10-31 18:46:27 +01:00
reaperrr
ad6ea52bff Make IPowerModifier require explicit implementation
Plus some 'collateral' explicit implementations on the affected traits.
2016-10-30 20:22:16 +01:00
reaperrr
2d0560dcb7 Make RangeModifier interfaces require explicit implementation 2016-10-30 20:22:16 +01:00
reaperrr
02f14f0761 Make IInaccuracyModifier require explicit implementation 2016-10-30 20:22:16 +01:00
reaperrr
80d9241bbe Make IReloadModifier require explicit implementation 2016-10-30 20:22:16 +01:00
reaperrr
fc2f006ec1 Make IFirepowerModifier require explicit implementation 2016-10-30 20:22:16 +01:00
reaperrr
4af7134115 Require explicit ISpeedModifier implementation
Plus misc "collateral" explicit interfaces.
2016-10-30 20:22:16 +01:00
reaperrr
97c2c24e8d Require explicit implementation of IDamageModifier 2016-10-30 20:22:16 +01:00
reaperrr
f8077dc113 Move combat modifier interfaces (damage, speed etc.) to mod code 2016-10-30 20:22:16 +01:00
reaperrr
9dfddaf5d9 Move IRenderInfantrySequenceModifier to mod code and require explicit...
implementation.
2016-10-30 20:22:16 +01:00
Paul Chote
6b29d70520 Merge pull request #12284 from reaperrr/interface-cleanups02
More explicit interface cleanups
2016-10-30 18:40:43 +00:00
reaperrr
3fca63e9a2 Make Armament implement interfaces explicitly 2016-10-30 19:17:45 +01:00
reaperrr
ce52bc9d7b Some more misc explicit interface implementations
'Fallout' from working on other things.
2016-10-30 19:17:41 +01:00
reaperrr
61779bf02a Make WithSpriteTurret ITick implementation explicit 2016-10-30 19:17:39 +01:00
abcdefg30
89187d1557 Merge pull request #12309 from reaperrr/DelayedAction-riddance2
Get rid of DelayedAction in Beacons and PlaceBuilding
2016-10-30 18:05:46 +01:00
abcdefg30
2125799e3a Merge pull request #12308 from reaperrr/refactor-shroud-traits
Refactor Shroud and shroud-modifying traits
2016-10-30 17:55:59 +01:00
Paul Chote
1829011393 Merge pull request #12317 from cjshmyr/lua-wpos-subtract-error
Fix Lua error message for WPos subtraction
2016-10-30 14:51:38 +00:00
Curtis Shmyr
b1bea831de Fix Lua error message for WPos subtraction 2016-10-29 13:56:01 -06:00
Paul Chote
04dbda6dcd Merge pull request #12274 from abcdefg30/bodyPreview
Fully support unhardcoded sequences in the voxel render traits
2016-10-29 14:53:47 +01:00
Paul Chote
c62870cc30 Merge pull request #12004 from reaperrr/projectile-cleanup2
More projectile property streamlining and cleanups
2016-10-29 14:21:29 +01:00
reaperrr
2d69f1104f Replace DelayedAction with Tick-based solution in PlaceBuilding 2016-10-26 20:54:51 +02:00
Oliver Brakmann
443d35f240 Merge pull request #11984 from reaperrr/upgradable-tooltip
Make Tooltip upgradable
2016-10-26 20:48:19 +02:00
reaperrr
101cc65876 Replace DelayedAction in Beacon effects with Tick-based solution 2016-10-26 20:17:24 +02:00
Oliver Brakmann
a6cde32a00 Merge pull request #12285 from abcdefg30/bloodyBye
Remove Bloody Delta from the ra map pool
2016-10-26 20:16:24 +02:00
reaperrr
cafd50ef43 Make RevealsShroud and CreatesShroud use stances
Instead of hardcoded (!)IsAlliedWith checks.
2016-10-26 19:18:15 +02:00
reaperrr
6b5e7b8c12 Make AffectsShroud and derivatives upgradable 2016-10-25 16:09:55 +02:00
reaperrr
a7e64bd8d8 Make AffectsShroud use explicit interfaces 2016-10-25 16:09:53 +02:00
reaperrr
0aefd87485 Make Shroud object- instead of actor-based 2016-10-25 16:09:52 +02:00
Paul Chote
5635c61007 Merge pull request #12301 from RobotCaleb/patch-1
Update CONTRIBUTING.md
2016-10-24 21:03:41 +01:00
Caleb Anderson
64e6fb666b Update CONTRIBUTING.md
Fixed single-character typo. 'youself' -> 'yourself'
2016-10-24 13:49:51 -06:00
reaperrr
5da3716110 Merge pull request #12001 from MustaphaTR/d2k-new-shellmap
Add New Shellmap to D2K
2016-10-23 18:52:32 +02:00
abcdefg30
8bd265ac42 Merge pull request #12224 from reaperrr/ts-polish05
TS polishing pass: More depth sorting fixes
2016-10-23 18:49:07 +02:00
reaperrr
efa6ad64f7 Remove now-redundant TooltipInfo check 2016-10-23 18:42:36 +02:00
reaperrr
5e8849abd1 Fix TS crate effect depth sorting 2016-10-23 18:21:21 +02:00
reaperrr
a7e3bfb95c Fix Tiberium veins and vein attack depth sorting 2016-10-23 18:21:21 +02:00
reaperrr
35a84546fb Fix Titan muzzle depth sorting 2016-10-23 18:19:05 +02:00
reaperrr
3c698d3d68 Fix Tick Tank muzzle depth sorting and offset 2016-10-23 18:19:05 +02:00
reaperrr
829f612a04 Fix Nod Buggy muzzle depth sorting 2016-10-23 18:19:05 +02:00
reaperrr
11ba90c690 Fix Vulcan Tower muzzle depth sorting 2016-10-23 18:19:05 +02:00
reaperrr
f8a410204d Fix Harpy rotor depth sorting 2016-10-23 18:19:05 +02:00
Paul Chote
4777161417 Merge pull request #11886 from reaperrr/UpgradeOnMovement
Add UpgradeOnMovement trait
2016-10-23 17:12:23 +01:00
abcdefg30
f53dc80d70 Merge pull request #12292 from pchote/fix-cargo-capture
Prevent mod-code from manpulating actor owners directly.
2016-10-23 18:06:51 +02:00
Paul Chote
a3f1287acf Merge pull request #12135 from reaperrr/ts-misc04
TS polishing pass: More depth sorting and starting units
2016-10-23 17:06:28 +01:00
reaperrr
677fcefb34 Fix deployed sensor array depth sorting and snow sprite 2016-10-23 17:04:30 +02:00
reaperrr
11d2ee80dc Upgrade tooltip when Mobile Sensor Array is deployed 2016-10-23 16:16:26 +02:00
reaperrr
00c0161513 Show internal name instead of crashing when buildable actor has no tooltip
But throw a lint error instead.
2016-10-23 14:59:22 +02:00
reaperrr
4f1e7435c2 Update tooltip when Tick Tank is deployed 2016-10-23 14:59:20 +02:00
reaperrr
074bb78cbd Made Tooltip trait upgradable 2016-10-23 14:59:18 +02:00
Paul Chote
10b5d8a06b Show replay percentage as a tooltip. 2016-10-23 13:29:06 +01:00
Mustafa Alperen Seki
de74af93d0 Add new shellmap to D2K 2016-10-23 14:22:10 +02:00
abcdefg30
39f2949e09 Merge pull request #12291 from abc013/Winter-Storm-Fix
Fixed some tiling errors in the map 'Winter Storm'
2016-10-23 13:29:07 +02:00
reaperrr
0fcc07cb7b Add UpgradeOnMovement trait
This provides upgrades when an actor is moving. To avoid 'hiccups' for ground units, air units are considered moving as soon as they are airborne.
2016-10-23 13:23:04 +02:00
Paul Chote
635fc9e1e2 Prevent mod code from changing Actor.Owner directly. 2016-10-23 12:21:03 +01:00
Paul Chote
8d688ab5f3 Use ChangeOwner on captured cargo. 2016-10-23 12:20:25 +01:00
abc013
c87f3fab92 Added the 'Damage' UncloakType to several units 2016-10-23 12:43:31 +02:00
abc013
f9dbfc05ca Fixed some tiling errors in the map 'Winter Storm' 2016-10-23 11:33:18 +02:00
reaperrr
146c07ac5c Merge pull request #12112 from abcdefg30/luaFlash
Add support for applying a target flash to actors through lua
2016-10-22 22:53:38 +02:00
reaperrr
165c1295dd Merge pull request #12234 from abcdefg30/AISell
Let the Lonestar AI use the new Sell function instead of Destroy
2016-10-22 22:36:27 +02:00
abcdefg30
1a99e716de Merge pull request #12258 from reaperrr/move-icon
Move production icon sequence from Tooltip to Buildable
2016-10-22 21:10:32 +02:00
reaperrr
192f2358b9 Merge pull request #12156 from cjshmyr/lua-cpos-subtract
Support subtraction of two CPos in Lua
2016-10-22 20:57:07 +02:00
reaperrr
5ac6c51162 Remove Buildable from RA gates
The description is only visible on the production palette, and to be buildable gates would first need an icon, which they currently don't have.
2016-10-22 20:37:13 +02:00
reaperrr
0350b8c8f2 Remove Buildable from TD Bio Lab
It isn't supposed to be buildable so the description is never seen in-game anyway.
2016-10-22 20:37:11 +02:00
reaperrr
5b5b064981 Move production icon sequence from Tooltip to Buildable 2016-10-22 20:37:09 +02:00
Paul Chote
01d212e16d Merge pull request #12182 from Mailaender/mono-4.6.1
Updated to Mono version 4.6.1
2016-10-22 19:33:50 +01:00
abcdefg30
1592769419 Merge pull request #12155 from reaperrr/fix-spritebarrel-preview
Fixes sprite barrels ignoring turret/actor orientation in previews
2016-10-22 20:02:30 +02:00
abcdefg30
1b62aa5ccc Merge pull request #12148 from pchote/fix-wall-glitch
Prevent TickRender from running before the world's first Tick.
2016-10-22 19:55:11 +02:00
abcdefg30
d5ed7b5588 Merge pull request #12223 from reaperrr/ts-polish06
Add sprite placeholder for TS ClusterMissile
2016-10-22 19:47:54 +02:00
abcdefg30
86220bb9f9 Merge pull request #12134 from reaperrr/ts-missiles
TS polishing pass: Overhauled missiles.yaml
2016-10-22 19:42:48 +02:00
abcdefg30
42559f2358 Merge pull request #12133 from reaperrr/ts-misc02
TS polishing pass: Ion Cannon, z-sorting, offsets, explosions
2016-10-22 19:32:01 +02:00
abcdefg30
f1e63bbc08 Remove Bloody Delta from the ra map pool 2016-10-22 19:08:38 +02:00
reaperrr
77a134da91 Move INotifyDamageStateChanged to mod code and require explicit implementation 2016-10-22 18:21:52 +02:00
reaperrr
7955aeb1c3 Implement INotifyDamageStateChanged explicitly in WithSpriteBody 2016-10-22 18:21:52 +02:00
reaperrr
a6b09342bc Make INotifyBuildComplete require explicit implementation 2016-10-22 18:21:52 +02:00
reaperrr
d9ecba7b60 Make INotifyInfiltrated require explicit implementation 2016-10-22 18:21:52 +02:00
reaperrr
0f02a6ba7c Merge pull request #12268 from reaperrr/interface-cleanups01
Several internal interface cleanups
2016-10-22 18:14:55 +02:00
reaperrr
f6388c198d Sync less bullet aspects
`length` is calculated from `pos` and `target` which are both synced.
`SourceActor`, `ticks` and `smokeTicks` work no different from `Missile`, where they're not synced, either.
2016-10-22 18:00:38 +02:00
reaperrr
efd54f1c65 Add lint check for invalid projectile angles
Emits error if
- angle exceeds 255 or -255
- minimum launch angle exceeds maximum launch angle
2016-10-22 18:00:36 +02:00
reaperrr
20cd2aa4ab Rename Bullet Angle to LaunchAngle 2016-10-22 17:57:32 +02:00
reaperrr
8ba9afdb16 Cache Missile LaunchAngles in constructor
To have one central place for the info look-ups. Makes it a little easier to rename the properties or merge them into a single Angle[] property.
2016-10-22 17:57:32 +02:00
reaperrr
0b7fdc411b Cache Missile speed infos in constructor
The primary reason is to have one central location for the look-ups, so we'll only have to change up to 3 lines if we rename or merge the speed properties.
2016-10-22 17:57:32 +02:00
reaperrr
1ffb151a38 Merge pull request #12162 from abcdefg30/heliHost
Fix HeliReturnToBase not exposing an host actor parameter
2016-10-22 15:58:06 +02:00
reaperrr
271cdcf8a8 Resize TS starting forces
-changed light starting forces to be equally balanced
-slightly increased medium starting forces
-moderately increased heavy starting forces
2016-10-22 03:08:41 +02:00
reaperrr
67d5df9da5 Fix TS snow civ buildings depth sorting 2016-10-22 03:08:40 +02:00
reaperrr
41dc76ef06 Fix Kodiak, Montauk, hospital & deployed ICBM depth sorting 2016-10-22 03:08:38 +02:00
reaperrr
e5fcf1d5f6 Fine-tune depth-sorting and offsets of temperate 4x2 TS civ buildings 2016-10-22 03:02:47 +02:00
reaperrr
c3946d9371 Fix depth sorting and offset of several civilian structures 2016-10-22 01:05:37 +02:00
reaperrr
a04915403f Fix TS spawnpoint, waypoint and camera depth sorting
Makes them visible in editor.
2016-10-22 01:05:37 +02:00
reaperrr
ab2669c565 Merge pull request #12275 from abcdefg30/passengers
Fix the search for alternative transports not caring about passenger types
2016-10-22 00:24:48 +02:00
abcdefg30
cb49583d82 Fix the search for alternative transports not caring about passenger types 2016-10-21 13:25:12 +02:00
abcdefg30
618cd91cc7 Merge pull request #12174 from tysonliddell/techFix
Replaced civillians with Technicians when building sold
2016-10-21 09:14:00 +02:00
abcdefg30
d176e16dd6 Merge pull request #12218 from SoScared/dualcoldfront
[RA] Remove rogue ore spots on Dual Cold Front
2016-10-21 09:07:40 +02:00
abcdefg30
82f3599b73 Merge pull request #12191 from abc013/mapfix
Fixed tiling errors in the map "doubles"
2016-10-21 09:05:07 +02:00
abcdefg30
6364e542ed Merge pull request #12249 from SoScared/mappie
RA map Pie Of Animosity - Fix map author name + ore mine visibility tweak
2016-10-21 09:01:54 +02:00
abcdefg30
713b970f24 Fully support unhardcoded sequences in the voxel render traits 2016-10-21 08:59:15 +02:00
reaperrr
16cf96b982 Merge pull request #12136 from LipkeGu/fix-lint-weiredness
[Lint] Report when Maps contains invalid custom rules.
2016-10-21 01:23:14 +02:00
reaperrr
72374279f0 Move interfaces that have no ties to the engine to mod code 2016-10-20 20:31:40 +02:00
reaperrr
7235835280 Move ImpactType to Common.Warhead 2016-10-20 20:31:38 +02:00
reaperrr
0eb8def2b8 Move Cargo interfaces to TraitsInterfaces 2016-10-20 20:31:37 +02:00
reaperrr
437e142031 Reservable style fixes 2016-10-20 20:31:35 +02:00
reaperrr
61284d73dd Make interface implementations explicit where possible in traits that implement INotifySold 2016-10-20 19:02:30 +02:00
reaperrr
22dcb1c66f Move INotifySold to Common and require explicit implementation 2016-10-20 19:02:28 +02:00
reaperrr
b8c04a0887 Move INotifyBlockingMove to Common and require explicit implementation 2016-10-20 18:58:40 +02:00
reaperrr
df0021eeed Move check for explicit interface violations to the top
The interface violation check is fast, so it doesn't really delay the rest, while you don't have to wait for all other code checks to finish to check for violations.
2016-10-20 18:57:06 +02:00
Oliver Brakmann
6eade2dd3f Merge pull request #12261 from pchote/fix-server-gamespeed
Fix player joins resetting the server timestep.
2016-10-19 21:04:54 +02:00
reaperrr
d3a833a2e7 Merge pull request #12260 from pchote/fix-gps-desync
Fix a desync in GpsDot.IsTargetableBy.
2016-10-19 19:11:35 +02:00
Paul Chote
3d8cee3110 Fix player joins resetting the server timestep. 2016-10-18 23:50:46 +01:00
Paul Chote
83027c28d7 Fix a desync in GpsDot.IsTargetableBy.
World.ShroudExplores depends on RenderPlayer,
which makes it completely bogus for this purpose.
2016-10-18 22:12:13 +01:00
RoosterDragon
482285dde0 Merge pull request #12221 from entropai/bleed
Reverted build dirs in CSPROJ and removed the unneeded Afterbuild
2016-10-18 17:55:22 +01:00
SoScared
073cfeb200 fix map author name plus ore mine visibility tweak 2016-10-17 06:05:31 +02:00
Paul Chote
cba704dbcc Merge pull request #12171 from cjshmyr/minelayer-cloak-delay
Fix AP/AT mines being visible under fog
2016-10-16 05:25:12 +01:00
Tyson Liddell
5b620eeda5 Replaced civillians with technicians when ^ScienceBuilding sold 2016-10-16 14:46:03 +11:00
Tyson Liddell
f12a434a99 Added engineers to units produced when contruction yard sold 2016-10-16 14:46:03 +11:00
Tyson Liddell
8e0df586a2 Replaced civillians with Technicians when building sold and removed engineers from default sale of building 2016-10-16 14:46:02 +11:00
Paul Chote
dba5c2b432 Merge pull request #12141 from tysonliddell/bleed
Move production description from Tooltip to Buildable.
2016-10-16 04:39:45 +01:00
Tyson Liddell
90baf2871b Added Buildable Description to D2K construction yard 2016-10-16 12:10:22 +11:00
Tyson Liddell
8a760fedf2 Yaml files updated with Description moved from Tooltip to Buildable 2016-10-16 12:10:07 +11:00
Tyson Liddell
aeb1e07823 Moved production description from Tooltip to Buildable 2016-10-16 12:03:42 +11:00
abcdefg30
9bd23fa990 Let the Lonestar AI use the new Sell function instead of Destroy 2016-10-15 20:02:26 +02:00
Paul Chote
e9d2da948e Merge pull request #12189 from SoScared/MSubAATweak
Tweak SubMissileAA towards more traditional AA.
2016-10-15 15:56:41 +01:00
Paul Chote
eabd881ca3 Merge pull request #12129 from reaperrr/aircraft-ismoving
Change Aircraft.IsMoving to be true only when moving horizontally
2016-10-15 15:07:41 +01:00
reaperrr
7da3ecbb80 Merge pull request #12216 from MustaphaTR/ra-ai-changes2
RA - Some AI Improvements 2
2016-10-15 13:50:27 +02:00
abcdefg30
da591a9030 Merge pull request #11974 from abc013/SecondWeaponAnimation
Add support for multiple fire animations in WithInfantryBody
2016-10-15 12:49:41 +02:00
reaperrr
9b77732360 Merge pull request #12172 from abcdefg30/d2kLock
Fix the d2k protected lobby icon being off
2016-10-15 12:37:13 +02:00
abcdefg30
4199108910 Merge pull request #12220 from obrakmann/fix-yak-in-evacuation
Fix yak attack in Evacuation
2016-10-15 12:01:49 +02:00
Oliver Brakmann
0dc5090f0b Fix yak attacks in Evacuation 2016-10-14 19:21:31 +02:00
reaperrr
208a31470f Merge pull request #12160 from abcdefg30/hboxYak
Fix yaks trying to attack invalid targets
2016-10-14 18:55:37 +02:00
reaperrr
f9122c4a40 Merge pull request #12214 from RoosterDragon/mcv-build
Make sure AI can deploy an MCV when it lacks a base.
2016-10-14 18:23:27 +02:00
reaperrr
d1effe192d Merge pull request #12219 from pchote/fix-old-d2k-disc
Add support for an older/alternative d2k release.
2016-10-14 18:10:11 +02:00
reaperrr
302aaeaac9 Add sprite placeholder for TS ClusterMissile
Extracted from crate animation.
2016-10-14 17:05:30 +02:00
abc013
268dcd7d41 changed AttackSequence to DefaultAttackSequence 2016-10-14 14:53:02 +02:00
entropai
20c2b41f00 Reverted build dirs in CSPROJ and removed the unneeded Afterbuild section 2016-10-14 00:53:21 +03:00
Oliver Brakmann
ec939cbeda Merge pull request #12198 from abcdefg30/hijack
Fix soviet units not stopping to hunt after being captured in Exodus
2016-10-13 20:40:06 +02:00
Oliver Brakmann
09ba78a1c1 Merge pull request #12217 from abcdefg30/chinookHusk
Fix transport husks revealing more/less than the normal actor
2016-10-13 19:35:14 +02:00
Paul Chote
4f52d42380 Add support for an older/alternative d2k release. 2016-10-13 17:49:44 +01:00
SoScared
a17b1df3ba remove ore spots 2016-10-13 00:40:56 +02:00
abcdefg30
bf3441f5d6 Fix transport husks revealing more/less than the normal actor 2016-10-12 17:02:54 +02:00
Mustafa Alperen Seki
a2933808cc Make Rush AI don't build Helipad/Airfield 2016-10-12 14:43:36 +02:00
Mustafa Alperen Seki
c53a1cb0bc Limit Barracks counts for Naval AI. 2016-10-12 14:43:09 +02:00
Mustafa Alperen Seki
6bbca7ef0e Make AI Build Gap Generator 2016-10-12 14:42:24 +02:00
RoosterDragon
eb3f8c945c Make sure AI can deploy an MCV when it lacks a base. 2016-10-11 20:42:15 +01:00
abcdefg30
bfef8694a1 Add support for applying a target flash to actors through lua 2016-10-11 11:05:40 +02:00
Paul Chote
f66883c925 Merge pull request #11973 from Phrohdoh/csproj-afterbuild-targets
Fix AfterBuild tasks in csprojs
2016-10-11 02:51:47 +01:00
reaperrr
f82a40141e Merge pull request #12175 from abcdefg30/d2kChrome
Remove duplicated chrome yaml files from d2k
2016-10-09 22:32:02 +02:00
abcdefg30
d828e709d6 Fix soviet units not attack moving to their rally points
and remove unnecessary (duplicated) code from the tick function
(the call to IdleHunt inside SpawnSovietUnits is enough)
2016-10-09 22:05:41 +02:00
abcdefg30
97b8d68a12 Merge pull request #12193 from RoosterDragon/vs
Allow VS2015 to format solution file.
2016-10-09 19:32:15 +02:00
SoScared
d2147adb0d move AA towards traditional 2016-10-09 18:19:06 +02:00
RoosterDragon
0d2416b67a Allow VS2015 to format solution file. 2016-10-09 16:18:16 +01:00
reaperrr
22a90c546f Merge pull request #12161 from abcdefg30/uncloakDamage
Fix UncloakOn: Damage only working when the damage state changes
2016-10-09 16:21:21 +02:00
Oliver Brakmann
d0493bb10c Merge pull request #12068 from reaperrr/laser-features1
Add several features to LaserZap
2016-10-09 15:24:55 +02:00
reaperrr
64e1b1dbdb Sanitize TS Obelisk charge delay
This makes the Obelisk fire right at the end of the charge animation and sound.
2016-10-09 15:04:46 +02:00
reaperrr
e69ad1cb2d Add support for being blockable to LaserZap 2016-10-09 15:04:45 +02:00
reaperrr
2a00a606d2 Add support for inaccuracy to LaserZap 2016-10-09 15:04:43 +02:00
reaperrr
38b10511c3 Allow disabling target-tracking of lasers
This is necessary for features like inaccuracy.
2016-10-09 15:04:41 +02:00
reaperrr
76dc4eafd1 Enable secondary laser beam glow for Obelisks and Laser Turrets in TS 2016-10-09 15:04:40 +02:00
reaperrr
6b3c3cd127 Add SecondaryBeam to LaserZap for TS-like laser glow effect 2016-10-09 15:04:38 +02:00
reaperrr
a98818ef47 Rename LaserZap.BeamDuration to Duration 2016-10-09 15:04:36 +02:00
reaperrr
dba41a3ad1 Merge pull request #12168 from pchote/fix-range-circles
Work around an initialisation order conflict in RenderRangeCircle.
2016-10-09 14:13:03 +02:00
abc013
e0ea898845 Fixed tiling errors in the map "doubles" 2016-10-09 13:53:00 +02:00
Oliver Brakmann
ffe7c96a37 Merge pull request #12052 from clemty/minustwofix
TD: Minus Two: terrain fix, replace temperat trees with desert trees
2016-10-09 13:45:01 +02:00
Oliver Brakmann
e291334351 Merge pull request #12044 from Mailaender/oars
Added Open Age Ratings Service metadata
2016-10-09 13:25:41 +02:00
Oliver Brakmann
1eea3982a9 Merge pull request #12138 from LipkeGu/FixHeader-LAA
FixHeader: Add support for "/LargeAddressAware"
2016-10-09 13:06:17 +02:00
abcdefg30
648f06af0f Fix soviet units not stopping to hunt after being captured in Exodus 2016-10-08 21:11:24 +02:00
abcdefg30
a9ae36b691 Make HIJACKER unbuildable in the Evacuation mission
We don't allow building Mechanics as well
2016-10-08 21:07:26 +02:00
Oliver Brakmann
420bf21660 Merge pull request #12169 from pchote/fix-badr-healthbars
Fix non-selectable support actor health bars.
2016-10-08 15:31:37 +02:00
abcdefg30
7ca5f31b61 Merge pull request #12167 from RoosterDragon/devices-marshalling
Marshal results in QueryDevices correctly
2016-10-07 16:14:05 +02:00
Oliver Brakmann
11c30e7cb0 Merge pull request #12144 from abcdefg30/shroudText
Fix floating text showing up beneath shroud
2016-10-06 21:29:56 +02:00
Matthias Mailänder
9c34488cba Update to Mono version 4.6.1 2016-10-06 06:23:42 +02:00
abcdefg30
90e6a69152 Rename the airfield parameter to destination 2016-10-05 16:05:56 +02:00
abcdefg30
8282dc95b1 Remove duplicated chrome yaml files from d2k 2016-10-04 15:12:40 +02:00
abcdefg30
a37bba8dea Fix the d2k color and hue picker lobby icon being off 2016-10-04 14:59:27 +02:00
abcdefg30
ca413fa9fd Fix the d2k lobby spawn points being off 2016-10-04 14:44:32 +02:00
Guido Lipke
ab8c35123b [Lint] Report when Maps contains invalid custom rules.
Report when Maps contains invalid custom rules.
2016-10-04 14:39:21 +02:00
abcdefg30
028720df9f Fix the d2k protected lobby icon being off 2016-10-04 11:00:43 +02:00
abcdefg30
47968aabdc Fix yaks trying to attack invalid targets 2016-10-04 10:04:59 +02:00
abcdefg30
5d2a6ff2e7 Add a CanTarget method to lua 2016-10-04 10:02:18 +02:00
abcdefg30
3ac6739a8d Target.FromActor never returns a TargetType.FrozenActor 2016-10-04 10:00:01 +02:00
Curtis Shmyr
c7af6069b9 Gives ^Mine HiddenUnderFog and 0 initial cloak delay 2016-10-03 19:47:44 -06:00
Paul Chote
de856f8c1a Fix non-selectable support actor health bars. 2016-10-04 01:43:15 +01:00
Paul Chote
4ed78e1ff6 Work around an initialisation order conflict. 2016-10-04 01:13:32 +01:00
RoosterDragon
c79ccab1ba Marshal results in QueryDevices correctly. 2016-10-03 21:47:42 +01:00
Matthias Mailänder
098f2c63b8 Add Open Age Ratings Service metadata. 2016-10-03 18:14:35 +02:00
abcdefg30
c7feed2b19 Merge pull request #12151 from pchote/sha1
Extract a common SHA1 helper.
2016-10-03 16:22:14 +02:00
abcdefg30
55143ced87 Fix HeliReturnToBase not exposing an host actor parameter 2016-10-03 14:56:52 +02:00
abcdefg30
d57c476eaa Fix UncloakOn: Damage only working when the damage state changes 2016-10-03 14:35:38 +02:00
abcdefg30
5acbe91221 Merge pull request #12152 from pchote/fix-lineendings
Fix line endings in LobbyLogic.
2016-10-03 13:23:41 +02:00
Curtis Shmyr
f0697d6396 Support subtraction of two CPos in Lua 2016-10-02 16:22:50 -06:00
reaperrr
9458818073 Fix sprite barrels ignoring turret/actor orientation in previews
Affects color picker, map editor and transport via TS carryall or TD landing craft.
2016-10-02 21:19:18 +02:00
reaperrr
16d4ee0034 Move IsMovingVertically to IMove
- avoids an Aircraft trait look-up in #11886
- potentially useful for future additional locomotors (jumpjet), custom locomotors in external mods, possibly future updates to default ground locomotor (Mobile) with regard to behavior on slopes
2016-10-02 20:27:03 +02:00
reaperrr
8ecf158b62 Merge pull request #12153 from pchote/game-tidy
Minor Game style fixes.
2016-10-02 18:11:10 +02:00
Paul Chote
9e8b18e7be Extract a common SHA1 helper. 2016-10-02 12:53:41 +01:00
Paul Chote
1a83b5c0c0 Remove unnecessary using. 2016-10-02 12:48:26 +01:00
Paul Chote
45214b2c22 Remove unnecessary Game. references in Game. 2016-10-02 12:48:25 +01:00
Paul Chote
95c3276b06 Fix line endings in LobbyLogic. 2016-10-02 11:54:14 +01:00
Paul Chote
31bdb1495d Prevent TickRender from running before the world's first Tick. 2016-10-02 00:46:20 +01:00
abcdefg30
fbebb6d851 Fix floating text showing up beneath shroud 2016-10-01 22:36:25 +02:00
Oliver Brakmann
0d54f2994f Merge pull request #12086 from pchote/fake-spy-infiltration
Fix spy infiltration cursor giving away fake buildings.
2016-10-01 20:20:44 +02:00
Guido L
86ac94bf32 FixHeader: Add support for "/LargeAddressAware" 2016-10-01 01:25:23 +02:00
abc013
78305ca7d6 Fix the secondary weapon of e3 being named "primary" 2016-09-30 22:18:17 +02:00
abc013
ebb1c45786 Added an AttackSequences property to WithInfantryBody 2016-09-30 22:18:16 +02:00
Oliver Brakmann
45f779e9c0 Merge pull request #11991 from abcdefg30/ion
Fix the IonCannonPower not playing all launch sounds
2016-09-30 17:02:27 +02:00
Oliver Brakmann
df8175d9fb Merge pull request #12092 from LipkeGu/installer-fix-typo-ts
[Installer] TS: Fix EOF and Typo
2016-09-30 16:23:32 +02:00
abcdefg30
279be831ff Merge pull request #12116 from obrakmann/fix11925_log-unknown-orders
Log unknown orders instead of crashing with an NIE
2016-09-30 16:11:55 +02:00
Oliver Brakmann
65b919a7ae Merge pull request #12062 from abc013/VoxelShadows
Added a flag ShowShadow in WithVoxelBarrel, WithVoxelBody, …
2016-09-30 16:04:30 +02:00
Oliver Brakmann
8a86e046ca Merge pull request #12104 from reaperrr/fix-TS-stop
Add missing UnitCommand widget to TS
2016-09-30 15:53:36 +02:00
reaperrr
457dc647f6 Reduce TS missile.yaml footprint and tweak flight behavior to be much closer to original
- much lower launch speed and maximum speed
- much higher launch angle and cruise altitude, doubled vertical rate of turn to make up for it
- increased RangeLimit, especially for AA-only missiles
- fixed Bike warhead Spread to match other missiles
- fixed SAm site missile explosion to match original
- fixed damage warheads of AA-only missile to be valid against ground as well (to avoid not damaging aircraft that just landed after the missile was launched)
2016-09-30 05:53:11 +02:00
reaperrr
effeddda14 Fix TS Bazooka infantry and Bike firing offsets 2016-09-30 04:11:08 +02:00
reaperrr
40c2aaa1c6 Fix Z-sorting of several effects in TS 2016-09-30 03:11:29 +02:00
reaperrr
09baf2c119 Change large TS explosions to use alpha transparency 2016-09-30 03:10:51 +02:00
reaperrr
fc17297a39 Fix Cyborg Commando weapon explosion to match original 2016-09-30 03:10:14 +02:00
reaperrr
b9da5d5f81 Fix Tick Tank and Titan gun explosions to match original 2016-09-30 02:36:58 +02:00
reaperrr
345bc9e17e Fix palette, Z-sorting and sound of TS Ion Cannon 2016-09-30 02:15:12 +02:00
reaperrr
8c67a32dd9 Set Ion Cannon ChargeTime to its original value 2016-09-30 02:13:10 +02:00
reaperrr
805e78a672 Add static alpha effect palettes to TS for 25, 50 and 75% alpha 2016-09-30 02:12:25 +02:00
Paul Chote
c781061300 Allow spys to infiltrate fake structures in RA. 2016-09-29 23:17:11 +01:00
Paul Chote
abf837a934 Add InfiltrateForDecoration trait. 2016-09-29 22:58:00 +01:00
reaperrr
4b8700bb97 Remove work-around for aircraft from WithMoveAnimation 2016-09-29 22:55:52 +02:00
reaperrr
9cf916e8b6 Change Aircraft.IsMoving to only return true when moving horizontally
Additionally added IsMovingVertically for potential edge cases where vertical movement needs to be considered.
2016-09-29 22:16:24 +02:00
reaperrr
6571f926fb Aircraft.ReserveSpawnBuilding style fixes 2016-09-29 21:21:34 +02:00
reaperrr
888d7c638f Move Aircraft.firstTick above constructor 2016-09-29 21:16:30 +02:00
reaperrr
678f9563f6 Merge pull request #12103 from pchote/resource-tooltip
Add tooltips to map resources.
2016-09-29 18:36:00 +02:00
reaperrr
11728df14e Merge pull request #12106 from SoScared/MSubAA
[RA] AA Missile Sub + Tweak
2016-09-28 13:29:23 +02:00
Jonas A. Lind
83d4cc15f3 Changed MSUB Description
Simplified initial text and fixed strong/weak vs.
2016-09-28 04:26:30 +02:00
Oliver Brakmann
d1ef1ed1ba Log unknown orders instead of crashing with an NIE 2016-09-26 20:39:01 +02:00
Oliver Brakmann
bea2b5cc91 Merge pull request #12102 from pchote/more-resupply-tweaks
Tweak aircraft resupply behaviour.
2016-09-26 19:03:46 +02:00
Paul Chote
34b10dcb77 Hack around the Lua API. 2016-09-26 17:48:25 +01:00
Oliver Brakmann
ae6b82a677 Merge pull request #12107 from pchote/fix-atan-overflow
Fix integer overflows in Wangle.ArcTan.
2016-09-26 18:35:54 +02:00
reaperrr
98de6330e8 Merge pull request #11928 from abcdefg30/stand3
Rename stand3 to liedown
2016-09-26 16:32:07 +02:00
abcdefg30
26b5d28920 Drop the -0 suffix of all standup sequences 2016-09-26 15:36:18 +02:00
abcdefg30
27d5af5497 Rename stand3 to liedown 2016-09-26 15:32:18 +02:00
abcdefg30
0ea9170021 Merge pull request #12110 from reaperrr/fix-laserzap
Fix LaserZap not being removed if HitAnim is not defined
2016-09-26 14:50:43 +02:00
abcdefg30
5f9c2a17e9 Merge pull request #12098 from Phrohdoh/ab-err-label
Display error in Asset Browser instead of crashing
2016-09-26 13:15:26 +02:00
reaperrr
d080770828 Fix LaserZap not being removed if HitAnim is not defined
This avoids degrading performance over time as well as an (albeit unlikely) OutOfMemoryException.
2016-09-26 01:36:02 +02:00
Taryn Hill
b5a08fd123 Display an error label instead of crashing in the Asset Browser 2016-09-25 15:53:40 -05:00
Paul Chote
b680a97d2c Fix integer overflows in Wangle.ArcTan. 2016-09-25 21:24:34 +01:00
reaperrr
ba02bf43b2 Merge pull request #12040 from SoScared/solidchanges
Add RA balance changes to the next playtest/release.
2016-09-25 21:56:46 +02:00
SoScared
cba38816ee AA Missile Sub + Tweak 2016-09-25 21:48:01 +02:00
reaperrr
f93779977f Add UnitCommand widget to TS
Fixes units ignoring Stop command.
2016-09-25 20:30:56 +02:00
Paul Chote
365bd5b9bd Rename ResourceType trait fields for consistency. 2016-09-25 17:04:18 +01:00
Paul Chote
fdc6ea4564 Add trait descriptions to ResourceType. 2016-09-25 17:04:17 +01:00
Paul Chote
404d8235c8 Show a tooltip over map resources. 2016-09-25 17:04:17 +01:00
Paul Chote
74602474e3 Change shroud tooltip to match the original games. 2016-09-25 17:04:16 +01:00
Paul Chote
3487d6bad5 Change aircraft default to move to rally point after resupplying. 2016-09-25 15:57:18 +01:00
Paul Chote
ea65ac542e Add AbortOnResupply property to cancel aircraft activities on resupply. 2016-09-25 15:57:17 +01:00
Paul Chote
6eafaeecf6 Remove unnecessarily queued ResupplyAircraft activity. 2016-09-25 15:57:17 +01:00
Paul Chote
eeaa461311 Avoid landing-dances when issuing mixed full/empty aircraft RTB orders. 2016-09-25 15:57:16 +01:00
Paul Chote
2d00a24855 Merge pull request #12100 from Mailaender/mono-4.6
Updated Mono to version 4.6.0
2016-09-25 15:17:50 +01:00
Matthias Mailänder
87fd196cca Update Mono to version 4.6.0 2016-09-25 08:01:23 +02:00
SoScared
f73d8481a7 Camo Pillbox HP 450 2016-09-25 00:44:34 +02:00
SoScared
a5aecf1da4 Mammoth Tank speed 50 2016-09-25 00:43:18 +02:00
reaperrr
0ffde88aad Merge pull request #12094 from pchote/work-around-smudge-desync
Use CosmeticRandom for picking smudge type.
2016-09-24 20:47:55 +02:00
reaperrr
8f2657ec75 Merge pull request #11982 from obrakmann/fix11979-helicopter-reservations
Fix helicopter reservations
2016-09-24 20:24:35 +02:00
Paul Chote
cd99e78501 Use CosmeticRandom for picking smudge type. 2016-09-24 14:00:36 +01:00
Guido L
fbd362b1a4 Fix EOF and Typo 2016-09-24 13:37:13 +02:00
reaperrr
b7dd321550 Merge pull request #11993 from pchote/missiondata
Report mission briefings in the mp lobby.
2016-09-23 22:50:59 +02:00
reaperrr
d762e54e2a Merge pull request #12070 from abcdefg30/chevrons
Render WithDecoration above shroud
2016-09-23 21:32:50 +02:00
Paul Chote
923cde7d21 Report mission briefings in the mp lobby. 2016-09-23 19:51:07 +01:00
RoosterDragon
1dd7f3e890 Merge pull request #12084 from obrakmann/fix12078_ai-production-snafu
Fix AI still producing units with captured factories in Nod missions
2016-09-23 19:40:39 +01:00
RoosterDragon
1993ee25b8 Merge pull request #12085 from pchote/repair-range-check
Add a range check to Repair.
2016-09-23 18:56:24 +01:00
RoosterDragon
4d6f70f973 Merge pull request #12026 from obrakmann/fix11986-mp-mission-joining
Fix kicking players joining servers hosting a map with non-default rules
2016-09-23 18:45:28 +01:00
RoosterDragon
149a10c6b1 Merge pull request #12079 from pchote/fix-control-groups
Fix sprite control group decoration position.
2016-09-23 18:32:44 +01:00
Paul Chote
df98260e1a Merge pull request #12021 from abcdefg30/radarSpec
Fix spectators not being able to issue commands in TD
2016-09-22 17:51:15 +01:00
abcdefg30
b21cf1fdb2 Render WithDecoration above shroud 2016-09-22 14:33:35 +02:00
Paul Chote
323ed98a15 Add a range check to Repair. 2016-09-21 18:25:23 +01:00
Oliver Brakmann
fca4534525 Fix AI still producing units with captured factories in Nod missions 2016-09-21 18:58:19 +02:00
Oliver Brakmann
90e3912bcd Merge pull request #12076 from pchote/fix-orphaned-pings
Clean up ClientPings when a player drops from the server.
2016-09-21 18:17:26 +02:00
Oliver Brakmann
8e764441dc Merge pull request #12071 from abcdefg30/noBeacons
Fix beacons not being cancelable
2016-09-21 18:12:50 +02:00
Oliver Brakmann
e108305f4e Merge pull request #12074 from RoosterDragon/runtime-long
Change Game.RunTime to a long to prevent overflow
2016-09-21 18:07:52 +02:00
Oliver Brakmann
92ec538208 Merge pull request #12077 from pchote/crashlog-dates
Include dates in crash/sync log filenames.
2016-09-21 17:54:06 +02:00
Oliver Brakmann
b53874fc8e Merge pull request #12075 from pchote/fix-grey-ping-of-death
Read data from *all* connections to the server.
2016-09-21 17:45:59 +02:00
Oliver Brakmann
999ddab5a4 Merge pull request #12080 from pchote/fix-d2k-crown
Fix d2k lobby admin icon.
2016-09-21 17:11:33 +02:00
Paul Chote
94de961175 Converting dates to string using the InvariantCulture. 2016-09-21 14:52:05 +01:00
Paul Chote
fb876b8b83 Fix d2k lobby admin icon. 2016-09-21 14:41:48 +01:00
Paul Chote
5e974b4959 Fix control group decoration position. 2016-09-21 14:39:44 +01:00
Paul Chote
bfa0c008eb Restore missing GameUid. 2016-09-21 05:09:16 +01:00
Paul Chote
b44d1be554 Timestamp syncreport and exception log files. 2016-09-21 04:57:13 +01:00
Paul Chote
c1e1ee0938 Merge pull request #12066 from chrisforbes/preview-server-crash-fix-bleed
server: Fix server getting wedged after map query with bad minimap
2016-09-21 04:05:59 +01:00
Paul Chote
709bd5b441 Clean up ClientPings when a player drops from the server. 2016-09-20 21:13:07 +01:00
Paul Chote
093053fd93 Read data from *all* connections to the server. 2016-09-20 20:55:52 +01:00
RoosterDragon
2ffea5db54 Change Game.RunTime to a long to prevent overflow. 2016-09-20 19:06:10 +01:00
Oliver Brakmann
57ceda3025 Merge pull request #11926 from abc013/JamsRadarStances
Added diplomatic stances to JamsRadar
2016-09-20 19:24:57 +02:00
Oliver Brakmann
e6b0557420 Merge pull request #12067 from reaperrr/add-UP
Add UnknownProgrammer to AUTHORS
2016-09-20 19:24:03 +02:00
Oliver Brakmann
5e96be5743 Merge pull request #12007 from RoosterDragon/mix-file-all
Allow MixFile to support all stream types
2016-09-20 19:18:35 +02:00
abcdefg30
9142452922 Fix beacons not being cancelable 2016-09-20 18:11:25 +02:00
reaperrr
5463176fa3 Adapt LaserZap Color description and Args structure
To match AreaBeam.
2016-09-20 17:25:28 +02:00
reaperrr
7f5dadd420 Add UnknownProgrammer to AUTHORS 2016-09-20 15:24:40 +02:00
abc013
b9d1f373fe Added a flag ShowShadow in WithVoxelBarrel, WithVoxelBody, WithVoxelTurret, WithVoxelUnloadBody and WithVoxelWalkerBody 2016-09-20 13:34:05 +02:00
abc013
353e61378a Added diplomatic stances to JamsRadar 2016-09-20 13:08:42 +02:00
Paul Chote
095b093f39 Merge pull request #12046 from obrakmann/fix11996_spy-exodus-crash
Fix crashing when a spy's "real" owner gets changed
2016-09-20 09:15:20 +01:00
Chris Forbes
5b793e0455 server: Fix server getting wedged after map query with bad minimap
If the mapserver returned an unusable minimap blob, we'd end up dropping
the resulting exceptions on the floor, and committing a completely broken
MapPreview, which would then blow up the tail end of the map change
process, and all future ValidateClient calls after players join (which
itself was handled by kicking the player and logging some noise of dubious
value).

Adjusts exception handling in a number of places to log the exception
rather than dropping it on the floor, and makes the mapserver response
parsing tolerant of bogus minimap blobs -- in this case, we'd rather just
have no minimap.

Candidate for stable, as it fixes a bug present in the current release and
the current playtest series.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
2016-09-20 19:28:31 +12:00
RoosterDragon
e65c73785e Allow MixFile to support all stream types again, not just FileStream. 2016-09-20 07:41:31 +01:00
Oliver Brakmann
8fabd6cff1 Merge pull request #11932 from Mailaender/sharpfont-4.0.1
Updated SharpFont to version 4.0.1
2016-09-19 22:19:24 +02:00
Oliver Brakmann
4e76d9cc0b Merge pull request #11909 from pchote/colormap-depth
Use the MATLAB Jet colormap for displaying depth data.
2016-09-19 21:25:08 +02:00
Oliver Brakmann
55e35d7be9 Merge pull request #12056 from Mailaender/keep-syncreport.log-fix
Fixed a crash when no sync report is available
2016-09-19 20:01:52 +02:00
Matthias Mailänder
56fa1ab0e3 Fix a crash when no sync report is available. 2016-09-18 17:43:22 +02:00
reaperrr
af125d64df Merge pull request #12014 from RoosterDragon/better-oom-logs
Improve out-of-memory logging
2016-09-18 16:38:24 +02:00
reaperrr
b10cf35972 Merge pull request #12051 from obrakmann/fix12035-selling-airfield-during-rearm-lockage
Fix locking an airfield that is rearming aircraft while being sold
2016-09-18 16:15:46 +02:00
Oliver Brakmann
b1f36b0122 Merge pull request #12041 from abcdefg30/musicReset
Fix the music resetting from time to time
2016-09-18 15:57:17 +02:00
reaperrr
e53180fdbc Merge pull request #12036 from obrakmann/fix12031-close-chat-in-replays
Fix not being able to close the chat window in replays
2016-09-18 15:28:28 +02:00
reaperrr
32e54cd30c Merge pull request #12038 from pchote/fix-readfailure-crash
Don't crash if a replay can't be read.
2016-09-18 15:22:38 +02:00
clemty
6a3a195614 Replaces temperat trees with desert trees 2016-09-18 15:01:37 +02:00
abcdefg30
05899b5b0e Split a UnitCommandWidget from WorldCommandWidget 2016-09-18 14:55:59 +02:00
abcdefg30
e511faa2ea Fix spectators not being able to issue commands in TD 2016-09-18 14:55:58 +02:00
Oliver Brakmann
a4a726c19a Remove workarounds for ownership change breakage from 'Infiltration' 2016-09-18 14:27:18 +02:00
Oliver Brakmann
d099aa0d46 Fix crashing when a spy's "real" owner gets changed 2016-09-18 14:27:18 +02:00
Oliver Brakmann
88a4f73bdc Add advisory upgrade rule for WithRearmAnimation 2016-09-18 14:20:58 +02:00
reaperrr
1079adcf2b Merge pull request #12027 from pchote/fix-cwd-crash
Fix crash when launching from a different directory than the game binary.
2016-09-18 14:15:45 +02:00
reaperrr
d3de132dbb Merge pull request #11916 from pchote/fix-heightmap-aistrike
Account for terrain height in AttackBomber.
2016-09-18 13:52:40 +02:00
Oliver Brakmann
b598e31d4b Add WithRearmAnimation to buildings that need it 2016-09-18 13:48:17 +02:00
Oliver Brakmann
ab8c1403a8 Fix locking an airfield that is rearming aircraft while being sold 2016-09-18 13:48:17 +02:00
reaperrr
b820f421c0 Merge pull request #11821 from UnknownProgrammer/patch-1
Fix for System Overflow exception
2016-09-18 13:12:59 +02:00
Oliver Brakmann
f1bdcca91d Merge pull request #12050 from pchote/rename-pseudofullscreen
Give window modes human-friendly names.
2016-09-18 12:32:08 +02:00
reaperrr
2de7a4956d Merge pull request #11975 from alercah/metrics-fix
Move most UI metrics to common.
2016-09-18 12:30:26 +02:00
Paul Chote
9063e44f9b Improve error message. 2016-09-18 11:24:32 +01:00
reaperrr
ec7a236dbd Merge pull request #11950 from Mailaender/lowbridge-polish
Fixed building placement on Tiberian Sun low bridges
2016-09-18 12:19:15 +02:00
Paul Chote
4077446d27 Give window modes human-friendly names.
* Fullscreen -> Fullscreen (Legacy)
* Pseudo-fullscreen -> Fullscreen
2016-09-18 11:16:50 +01:00
Matthias Mailänder
72764c2473 Don't show broken bridges on the radar. 2016-09-18 10:07:56 +02:00
Matthias Mailänder
c7667f42b2 Disallow building placement on bridges and fix radar color. 2016-09-18 10:07:51 +02:00
Matthias Mailänder
fd068c3f9f Require the Terrain to be set for RadarColorFromTerrain. 2016-09-18 10:07:51 +02:00
abcdefg30
16776e8a97 Fix the music resetting from time to time 2016-09-17 19:43:09 +02:00
Oliver Brakmann
f5c015f51a Merge pull request #12030 from pchote/fix-tfd-detection
Work around incorrect mono drive detection under OSX.
2016-09-17 18:22:27 +02:00
Oliver Brakmann
aa68e9bfca Fix not being able to close the chat window in replays 2016-09-17 15:05:00 +02:00
reaperrr
6d3ae5fcfe Merge pull request #12029 from pchote/fix-check-yaml
Fix explicit oramap path lint checking.
2016-09-17 14:09:11 +02:00
Paul Chote
099492a52f Don't crash if a replay can't be read. 2016-09-16 18:30:19 +01:00
Paul Chote
7b4ddfcd63 Merge pull request #12037 from obrakmann/fix11971_rename-disable-experience-yaml
Remove 'campaign-' prefix from disable-experience.yaml files
2016-09-16 17:31:51 +01:00
Oliver Brakmann
47a24e7ad4 Remove 'campaign-' prefix from disable-experience.yaml files 2016-09-16 18:27:20 +02:00
RoosterDragon
696d783a67 Improve out-of-memory logging with more details.
Also ensure that when OpenGL gives an out-of-memory error, we throw an OutOfMemoryException so the improved logging is triggered here too.
2016-09-16 07:35:08 +01:00
Oliver Brakmann
852d947764 Fix setting MayYieldReservation when there is no reservation 2016-09-15 21:10:47 +02:00
Paul Chote
af0249f2ae Merge pull request #12015 from RoosterDragon/better-exceptions
Improve some exception types
2016-09-15 19:31:48 +01:00
Paul Chote
aab91cb37e Work around incorrect mono behaviour under OSX. 2016-09-14 21:48:40 +01:00
Paul Chote
8a1987eb5c Fix explicit oramap path lint checking. 2016-09-14 21:25:44 +01:00
Oliver Brakmann
082ccfe5d6 Fix kicking players joining servers hosting a map with non-default rules
Specifically, rules that remove traits which implement ILobbyOptions
2016-09-14 22:04:40 +02:00
Paul Chote
632b277a0e Other misc fixes in Platform. 2016-09-14 20:55:33 +01:00
Paul Chote
1eac43fa6d Fix string comparison cultures in Platform. 2016-09-14 20:54:48 +01:00
Paul Chote
6deb49e095 Resolve a bare "." to the game install path. 2016-09-14 19:44:57 +01:00
Oliver Brakmann
634faa31de Merge pull request #12023 from abcdefg30/disabledC17
Remove duplicated "Prerequisites: ~disabled" fields from the TD campaign
2016-09-13 19:25:17 +02:00
abcdefg30
961a6d2650 Remove duplicated "Prerequisites: ~disabled" fields from the TD campaign 2016-09-13 14:22:10 +02:00
abcdefg30
348249119a Play all IonCannonPower launch sounds using the new helper method 2016-09-12 23:33:47 +02:00
abcdefg30
41bc3b20ba Add a new OnFireSound property to IonCannonPower
This replaces the hacky use of LaunchSound
2016-09-12 23:33:37 +02:00
abcdefg30
b6dc30ca93 Add support for playing the weapon report of the ion cannon 2016-09-12 23:28:25 +02:00
Oliver Brakmann
9fbda6b598 Fix helicopters not taking off when their target got covered by shroud 2016-09-12 23:01:16 +02:00
Oliver Brakmann
bd3c6c1c6b Merge pull request #11989 from abcdefg30/launchDetection
Fix the support power SpeechNotifications not being played to the correct player
2016-09-12 19:12:28 +02:00
abcdefg30
e80e84aeba Merge pull request #12003 from MustaphaTR/d2k-fix-sardaukar-prerequisite
D2K - Fix Sardaukar's prerequisite
2016-09-12 15:33:46 +02:00
abcdefg30
620e005cfd Create a PlayLaunchSounds method in SupportPower.cs 2016-09-12 14:47:54 +02:00
abcdefg30
08d84c5b90 Fix the support power SpeechNotifications not being played to the correct player 2016-09-12 14:42:45 +02:00
reaperrr
ed8b62a7fc Merge pull request #11904 from pchote/depthbuffer-part-two
Enable per-pixel depth calculations in TS
2016-09-12 02:06:41 +02:00
RoosterDragon
9f1c872340 Improve some exception types. 2016-09-11 15:14:44 +01:00
Oliver Brakmann
adc968db76 Merge pull request #11992 from abcdefg30/LZRange
Remove bogus LZRange field and unnecessary ParaDrop definition
2016-09-09 21:35:19 +02:00
Oliver Brakmann
a10fd29253 Merge pull request #11985 from Mailaender/keep-syncreport.log
Fixed game restart deleting the syncreport.log
2016-09-09 21:31:22 +02:00
Oliver Brakmann
b6aac234d4 Merge pull request #11970 from pchote/fix-observer-stats-scroll
Fix bogus observer stats graph positioning.
2016-09-09 21:15:25 +02:00
Mustafa Alperen Seki
48090c7ab8 Fix Sardaukar's prerequisite 2016-09-09 16:48:46 +02:00
reaperrr
1988990c7a Merge pull request #11990 from abcdefg30/margins
Remove the TopBottomSpacing from the score screen player list
2016-09-09 12:11:38 +02:00
reaperrr
b7f35cb5e2 Merge pull request #11912 from Mailaender/laser-transparency
Fixed transparency for LaserZap
2016-09-08 19:14:37 +02:00
abcdefg30
db4869812b Merge pull request #11994 from clemty/gdi07fixes
gdi07 map yaml polish
2016-09-07 23:50:40 +02:00
abcdefg30
fe91629d25 Remove a bogus LZRange field together with an unnecessary ParaDrop definition 2016-09-07 23:38:00 +02:00
clemty
b2e319663e gdi07 map yaml polish 2016-09-07 00:33:06 +02:00
abcdefg30
d5e6c1f427 Remove the TopBottomSpacing from the score screen player list 2016-09-06 14:21:11 +02:00
Taryn Hill
a1216f8197 Remove pdb files in make.ps1's clean target 2016-09-05 16:37:44 -05:00
Taryn Hill
b3f8e8f87b Game csproj: Use MSBuild tasks instead of shelling out 2016-09-05 16:35:43 -05:00
Taryn Hill
7433ca5380 Change OpenRA.Game's output path to bin\$(Configuration) 2016-09-05 16:35:43 -05:00
Taryn Hill
cacb2a304a TS csproj: Use MSBuild tasks instead of shelling out 2016-09-05 16:35:43 -05:00
Taryn Hill
1cfe9ed512 Common csproj: Use MSBuild tasks instead of shelling out 2016-09-05 16:35:43 -05:00
Taryn Hill
5308a25ab9 D2k csproj: Use MSBuild tasks instead of shelling out 2016-09-05 16:35:42 -05:00
Taryn Hill
69c919943f CnC csproj: Use MSBuild tasks instead of shelling out 2016-09-05 16:35:42 -05:00
Taryn Hill
7049b89288 RA csproj: Use MSBuild tasks instead of shelling out 2016-09-05 16:35:42 -05:00
Taryn Hill
f054892c8a Add mods/*/*.pdb to gitignore 2016-09-05 16:35:42 -05:00
abcdefg30
3849b91e8f Merge pull request #11983 from abc013/JamsMissilesFix
Fixed enemy missiles not being deflected by Radar Jammers
2016-09-05 22:18:18 +02:00
Matthias Mailänder
66f4db93c1 Only save a syncreport.log when a desync occurs. 2016-09-05 21:59:50 +02:00
Oliver Brakmann
daa1f16e98 Prevent an infinite loop when planes go out of ammo and all airfields are gone 2016-09-05 19:59:01 +02:00
abc013
464eae8bc4 Fixed enemy missiles not being deflected by Radar Jammers 2016-09-05 19:52:13 +02:00
Alexis Hunt
ef8b672f51 Move most UI metrics to common.
This reduces the odds that a third-party mod will crash due to missing
one of them. Eliminates ra2#291.
2016-09-05 13:38:40 -04:00
Oliver Brakmann
351c231693 Use the yield reservation logic for helicopters as well. Oops. 2016-09-05 19:24:26 +02:00
Oliver Brakmann
fb1f8c4e01 Remove brain-dead logic from TakeOff
1. TakeOff's Tick() method never checks itself whether it is canceled
2. If NextActivity is null, TakeOff is the only activity on the queue
3. Takeoff canceling the queue then just cancels itself, with no effect at all

4. If Takeoff however is running as an inner activity, it will cancel the complete main queue, wrecking all sorts of havoc
2016-09-05 19:20:51 +02:00
Matthias Mailänder
c9474a857a Merge pull request #11956 from obrakmann/fix11953_fix-aircraft-reservation-madness
Fix aircraft reservation madness
2016-09-04 21:54:28 +02:00
Oliver Brakmann
7f64495d6f Make aircraft continue attack on same target after re-arming 2016-09-04 21:31:05 +02:00
Oliver Brakmann
e7d07e5a01 Fix FlyAttack not calling TakeOff for landed aircraft 2016-09-04 21:31:05 +02:00
Oliver Brakmann
6d15406ffe Fix aircraft reservation madness 2016-09-04 21:31:05 +02:00
reaperrr
6cc17b6af3 Merge pull request #11968 from pchote/gps-exploration
Explore shroud on first GPS launch, ignoring power/radar.
2016-09-04 21:27:53 +02:00
Paul Chote
3197345fc3 Fix bogus observer stats graph positioning. 2016-09-04 19:31:04 +01:00
Matthias Mailänder
3ed241c4d4 Merge pull request #11951 from pchote/hack-production-locking
Rework external capture -> production interaction
2016-09-04 20:18:59 +02:00
Oliver Brakmann
a32a95a27c Merge pull request #11702 from Mailaender/infiltration-mission
Added Scott's Allies04 co-op multiplayer mission as "Infiltration"
2016-09-04 18:41:09 +02:00
Matthias Mailänder
76294c8273 Port the Co-Op Allies04 map to Lua. 2016-09-04 18:14:25 +02:00
Paul Chote
142caa6691 Explore shroud on first GPS launch, ignoring power/radar. 2016-09-04 16:40:48 +01:00
Taryn Hill
1592f9dd63 Merge pull request #11933 from Mailaender/mono-4.4.2
Updated Mono to version 4.4.2
2016-09-04 10:15:35 -05:00
Taryn Hill
0e73e88229 Merge pull request #11965 from pchote/fix-grenadier-stand
Fix grenadier attack and stand animations
2016-09-04 10:13:40 -05:00
Paul Chote
53f47f8ee1 Use explicit interfaces in WithBuildingPlaced(Overlay|Animation). 2016-09-04 15:25:50 +01:00
Paul Chote
21f9a0ec6c Remove tech disabling when building is locked. 2016-09-04 15:25:50 +01:00
Paul Chote
013b717a84 Disable unit production when building is locked. 2016-09-04 15:25:50 +01:00
Paul Chote
2df5918315 Disable BaseProvider when building is locked. 2016-09-04 15:25:50 +01:00
Paul Chote
a09b32b4f3 Disable WithBuildingPlacedAnimation while selling. 2016-09-04 15:25:49 +01:00
Oliver Brakmann
5c01647b20 Merge pull request #11949 from Mailaender/jes-infantry-sequence-polish
Polished the Dune 2000 infantry sequences
2016-09-04 13:59:11 +02:00
Oliver Brakmann
c58ec4d14f Merge pull request #11636 from abcdefg30/noGuard
Don't allow tanya to automatically target, but allow her to move within a attack-moving/guarding group
2016-09-04 13:44:46 +02:00
Paul Chote
48c9e74bb4 Merge pull request #11637 from abcdefg30/noMove
Fix the attack-move cursor appearing for units which can't attack-move
2016-09-04 11:06:58 +01:00
Paul Chote
85ab797705 Merge pull request #11957 from abc013/DisableReplayChat
Disabled chat input in replays
2016-09-04 10:43:34 +01:00
Paul Chote
f334505395 Fix grenadier FireDelay and LocalOffset. 2016-09-04 10:38:17 +01:00
Paul Chote
a7bfdd5eb1 Fix grenadier stand and attack sequences. 2016-09-04 10:37:37 +01:00
abcdefg30
29b0863076 Merge pull request #11964 from clemty/nod07a-fixcrash
fix crash in missions because cameras need .destroy, not .kill to be removed
2016-09-03 23:49:26 +02:00
abcdefg30
1a3c3bd21b Merge pull request #11960 from pchote/fix-parachute-death
Remove invalid cell check from Parachutable.
2016-09-03 23:45:54 +02:00
Oliver Brakmann
361c541f13 Merge pull request #11961 from pchote/fix-requiresmod
Fix crash when popping up the mod requirements dialog.
2016-09-03 23:42:49 +02:00
Oliver Brakmann
6a33c605b9 Merge pull request #11868 from abcdefg30/gpsBounty
Fix the floating text for bounties of actors not being InWorld showing up
2016-09-03 23:00:12 +02:00
clemty
47080d5dc0 fix removal of cameras in nod07a and nod08a
fixes #11963
2016-09-03 22:54:41 +02:00
Paul Chote
617f106e48 Fix crash when popping up the mod requirements dialog. 2016-09-03 19:28:10 +01:00
abc013
c7def33588 disabled chat input in replays 2016-09-03 20:26:05 +02:00
Matthias Mailänder
0ec0db72e4 Merge pull request #11952 from pchote/spectator-player-list
Include spectators in the player list.
2016-09-03 20:19:42 +02:00
Paul Chote
7725f6b952 Remove unnecessary and incorrect cell check.
This caused all cells inside the map to be
treated as valid parachute targets, ignoring
all later checks.
2016-09-03 19:16:06 +01:00
abcdefg30
9f72772a37 Remove the percentage parameter from GetBountyValue 2016-09-03 15:30:26 +02:00
abcdefg30
a76672b029 Cache GainsExperience and Cargo in GivesBounty 2016-09-03 15:30:25 +02:00
abcdefg30
278a812eec Display the value of the destroyed cargo actors 2016-09-03 15:30:24 +02:00
abcdefg30
81bdea1107 Fix the floating text for bounties of actors not being InWorld showing up 2016-09-03 15:30:24 +02:00
UnknownProgrammer
65fe88daef used clamp instead of Math.Min/Math.Max construct
clarified naming
restored comments
removed blank line
2016-09-03 15:27:04 +02:00
Matthias Mailänder
256834f044 Improve the light infantry death animations. 2016-09-03 14:38:02 +02:00
Matthias Mailänder
1ce421910b Add missing idle sequences to d2k infantry. 2016-09-03 14:24:33 +02:00
Paul Chote
67cc12436f Merge pull request #11918 from abc013/CapturableHuskFaction
Fix mcv husks losing their faction after being captured
2016-09-03 11:54:56 +01:00
Paul Chote
4a90ff834e Merge pull request #11867 from abcdefg30/gpsDot
Fix GPSDots being visible when the unit is not InWorld or dead
2016-09-03 11:35:14 +01:00
Paul Chote
e1fcfa3073 Include spectators in the player list. 2016-09-03 10:46:08 +01:00
reaperrr
b8f89ac5fb Merge pull request #11945 from MustaphaTR/ant-dog-fix
RA - Fix Dogs can attack Giant Ants
2016-09-02 22:35:18 +02:00
reaperrr
7311c69e35 Merge pull request #11944 from MustaphaTR/ant-zombie-kennel-fix
RA - Fix ants and zombies can be trained from kennel
2016-09-02 22:31:00 +02:00
abcdefg30
15214c21bc Merge pull request #11948 from pchote/fix-facing-normalization
Fix an off-by-one error in NormalizeFacing.
2016-09-02 22:17:36 +02:00
Matthias Mailänder
abbcdbd5df Add OnSelling and OnSold to the Lua API. 2016-09-02 21:59:59 +02:00
Matthias Mailänder
e3df47d6d2 Add Sell to the Lua API. 2016-09-02 21:59:59 +02:00
Paul Chote
9e867e23a9 Merge pull request #11941 from obrakmann/fix11940-std-scrolling-deadzone
Fix mouse input breakage
2016-09-02 20:45:56 +01:00
Oliver Brakmann
f554531bd2 Fix not showing scroll cursor during standard-scrolling
... when edge scrolling was also disabled.
2016-09-02 21:34:47 +02:00
Oliver Brakmann
f5be504640 Add a deadzone for standard scrolling 2016-09-02 21:34:46 +02:00
Oliver Brakmann
a8dc8454cb Fix ignoring deadzone with joystick scrolling
This re-introduces a bug where releasing the RMB button causes an order to be generated for the selected units if the user didn't move their mouse just prior.
2016-09-02 21:34:46 +02:00
Paul Chote
501252af19 Merge pull request #11693 from obrakmann/player-color-contrast
Add contrast to text drawn in player colors
2016-09-02 20:24:22 +01:00
Oliver Brakmann
624e69e97b Replace use of Contrast with Shadow for ingame chat and support power timers 2016-09-02 20:58:46 +02:00
Oliver Brakmann
38c16e4f7a Add a shadow to text drawn in player colors 2016-09-02 20:58:46 +02:00
Oliver Brakmann
1059d5b88d Add a Shadow option to LabelWidget and ButtonWidget 2016-09-02 20:58:46 +02:00
Oliver Brakmann
8ad18ad161 Rewrite color inversal in a reusable way 2016-09-02 20:58:46 +02:00
Paul Chote
3b1e4d708d Fix an off-by-one error in NormalizeFacing. 2016-09-02 19:57:32 +01:00
Paul Chote
cb7f6947d1 Merge pull request #11946 from abcdefg30/exclamationMark
Fix an inverted check in SupportPowerChargeBar
2016-09-02 19:52:19 +01:00
Oliver Brakmann
d0109491a7 Split ChromeMetrics' ContrastColor options into two
One for dark backgrounds, one for light ones. The light one isn't currently being used, but will be by future commits
2016-09-02 20:39:27 +02:00
Paul Chote
7700250974 Merge pull request #11906 from abcdefg30/tdMute
Fix the positioning of the mute label in the TD music player
2016-09-02 19:39:24 +01:00
abcdefg30
8a8ab1563f Fix an inverted check in SupportPowerChargeBar 2016-09-02 19:41:22 +02:00
Mustafa Alperen Seki
09be3d2ab2 Fix dogs can attack ants 2016-09-02 09:13:41 +02:00
Mustafa Alperen Seki
ec82924b48 Fix ants and zombies can be trained from kennel 2016-09-02 08:54:41 +02:00
Oliver Brakmann
c562131ed4 Merge pull request #11930 from abcdefg30/medium
Rename all "medium" difficulties to "normal"
2016-09-01 18:10:35 +02:00
Matthias Mailänder
1c293a444f Merge pull request #11931 from SoScared/mapdesertrats
exposing map desert rats' custom rules
2016-09-01 07:40:40 +02:00
Matthias Mailänder
f8fb31a4cc Update Mono to version 4.4.2 2016-09-01 07:25:15 +02:00
Matthias Mailänder
d1ff40bcca Update SharpFont to version 4.0.1 2016-09-01 07:21:19 +02:00
SoScared
1854d327d0 exposing map desert rats' custom rules 2016-08-31 23:24:02 +02:00
abcdefg30
e2a2c6433f Rename all "medium" difficulties to "normal" 2016-08-31 23:05:34 +02:00
Matthias Mailänder
43b7c98c33 Merge pull request #11920 from abcdefg30/byeCamHealth
Remove the bogus Health property from CAMERA
2016-08-31 21:14:44 +02:00
abcdefg30
887cd61943 Merge pull request #11924 from obrakmann/fix11922_addsmudge-nre
Fix NRE in SmudgeLayer.AddSmudge
2016-08-31 14:32:58 +02:00
Matthias Mailänder
b38c1a8623 Merge pull request #11923 from abc013/ResourceSiloWarning
Doubled AdviceInterval of ResourceStorageWarning.
2016-08-30 23:08:27 +02:00
abc013
85feaf0091 Fix mcv husks losing their faction after being captured 2016-08-30 22:00:26 +02:00
Oliver Brakmann
93dba184a1 Add comments explaining the special meaning of a null Sprite in SmudgeLayer 2016-08-30 20:12:46 +02:00
Oliver Brakmann
0ebf2d00b0 Fix NRE in SmudgeLayer.AddSmudge 2016-08-30 19:17:49 +02:00
abc013
f70d6c55bd Doubled AdviceInterval of ResourceStorageWarning. 2016-08-30 17:19:31 +02:00
abcdefg30
8475ad40a7 Remove the bogus Health property from CAMERA 2016-08-30 11:31:47 +02:00
abcdefg30
b999d88905 Merge pull request #11679 from Mailaender/exodus-mission
Added Scott's Allies03 co-op multiplayer mission as "Exodus"
2016-08-30 10:47:38 +02:00
Matthias Mailänder
ad986b2fb4 Port the Co-Op Allies03 map to Lua. 2016-08-30 07:35:45 +02:00
Matthias Mailänder
9775352856 Add a PassengerCount property to the Lua API. 2016-08-30 07:16:56 +02:00
Matthias Mailänder
f44623ce4d Don't force disable the debug menu for co-op missions. 2016-08-30 07:16:56 +02:00
abcdefg30
25be7d1434 Fix the positioning of the mute label in all lobbies 2016-08-29 21:51:33 +02:00
abcdefg30
21f504fed9 Remove the setting of tanya's stance to "HoldFire" in all missions 2016-08-29 21:39:17 +02:00
abcdefg30
aec6bb295a Remove AutoTarget but keep AttackMove (and Guard) on E7.noautotarget 2016-08-29 21:39:16 +02:00
abcdefg30
ffcdcc2831 Add a warning about tanya not auto-targeting in allies01 2016-08-29 21:39:15 +02:00
abcdefg30
44a14a7e45 Merge pull request #11890 from pchote/movie-metadata
Unpack RA movies on install.
2016-08-29 21:36:10 +02:00
Matthias Mailänder
eb88e1d39a Merge pull request #11893 from SoScared/mapswap
Official Map Pool - Ins and Outs
2016-08-29 21:17:31 +02:00
abcdefg30
d204026c84 Merge pull request #11879 from obrakmann/fix11849_mousescrolling-order-trigger
Fix issuing orders when releasing RMB after joystick-scrolling
2016-08-29 21:07:18 +02:00
abcdefg30
b5652bec59 Merge pull request #11870 from pchote/mod-mime-type
Add oramod file association for Windows, Linux, and OSX.
2016-08-29 21:02:13 +02:00
abcdefg30
e156559ae1 Merge pull request #11441 from Mailaender/lowbridges
Added static Tiberian Sun low bridges
2016-08-29 20:53:04 +02:00
abcdefg30
9ddfe23e17 Merge pull request #11900 from abc013/DeflectionStances
Replaced the AlliedMissiles boolean on JamsMissiles by a Stances field
2016-08-29 15:03:08 +02:00
Paul Chote
f2b847607c Merge pull request #11899 from GraionDilach/gen2-crate-paradrop
Do not apply the cell's Z offset twice during crate positioning.
2016-08-29 13:47:41 +01:00
Matthias Mailänder
401d330d46 Add a destroyable low bridge to Tread Lightly. 2016-08-29 13:34:53 +01:00
Matthias Mailänder
638fa3a3e6 Reimport Tread Lightly 2016-08-29 13:29:02 +01:00
Matthias Mailänder
6524a10faa Reimport map "River Raid" 2016-08-29 13:29:02 +01:00
Matthias Mailänder
3759ab6fa6 Reimport map "A River Runs Near It" 2016-08-29 13:29:02 +01:00
Paul Chote
9d17038843 Add bridge depth metadata. 2016-08-29 13:29:02 +01:00
Matthias Mailänder
4717d3e190 Add static Tiberian Sun low bridges. 2016-08-29 13:29:01 +01:00
Paul Chote
5482fdb839 Fix duplicate import of multi-cell overlays. 2016-08-29 13:27:29 +01:00
Paul Chote
4a1f66569b Account for terrain height in AttackBomber. 2016-08-29 10:37:27 +01:00
Matthias Mailänder
02fecc4d87 Merge pull request #11781 from Turupawn/bleed
Same unit command sounds wont overlap anymore
2016-08-29 06:54:41 +02:00
Matthias Mailänder
b7d0947d7d Merge pull request #11915 from pchote/lightpost-alpha-mod
Disable modifiers on TS alpha palette.
2016-08-28 22:43:43 +02:00
Paul Chote
c558ea240c Disable modifiers on alpha palette. 2016-08-28 18:52:24 +01:00
Paul Chote
074edc9d50 Fix missing cabhut shadow. 2016-08-28 18:49:25 +01:00
Paul Chote
75c6cf7c75 Fix tree depth offsets. 2016-08-28 18:46:21 +01:00
Paul Chote
0727cd46b5 Fix crate depth offset. 2016-08-28 16:28:29 +01:00
Oliver Brakmann
c842209645 Merge pull request #11901 from abcdefg30/frozenCenter
Fix GpsDots being displayed when their CenterPosition is shrouded
2016-08-28 14:36:04 +02:00
Oliver Brakmann
d6095d9a6a Merge pull request #11535 from Mailaender/upnp-discoverability
Improved the UPnP settings discoverability
2016-08-28 14:23:27 +02:00
Oliver Brakmann
1c12ad5cee Merge pull request #11903 from abcdefg30/indexing
Fix a possible crash in the lua Player.Team property
2016-08-28 14:16:48 +02:00
Oliver Brakmann
c9c542cb37 Show advisory notice when UPNP isn't supported by the router 2016-08-28 14:05:03 +02:00
Matthias Mailänder
a79cc6a606 Add a notice why automatic port forwarding is disabled. 2016-08-28 14:05:03 +02:00
Matthias Mailänder
273dcce4d4 UPnP NAT discovery requires a restart as well. 2016-08-28 14:05:03 +02:00
Matthias Mailänder
5b2d6e9a47 Merge pull request #11905 from abcdefg30/timers
Fix timers in ObserverProductionIconsWidget being calculated wrongly in replays
2016-08-28 13:40:27 +02:00
Paul Chote
d1b7d0e0fb Use the MATLAB Jet colormap for displaying depth data. 2016-08-28 11:52:16 +01:00
Matthias Mailänder
e9eefcbc1b Add transparency to the Nod laser turret beam. 2016-08-28 12:41:02 +02:00
Matthias Mailänder
fc7e149401 The color definition changed to hex notation. 2016-08-28 12:23:40 +02:00
Matthias Mailänder
e4491a7957 Remove hard-coded LaserZap transparency. 2016-08-28 12:22:45 +02:00
abcdefg30
8bf6e15b9f Merge pull request #11908 from alercah/alercah-author
Add me to AUTHORS
2016-08-28 12:10:22 +02:00
abcdefg30
81acb8dd2f Merge pull request #11907 from alercah/resource-display-interface
Move resource tick logic into chrome classes.
2016-08-28 12:09:54 +02:00
abcdefg30
74ad33d14e Fix the positioning of the mute label in the TD music player 2016-08-28 11:54:03 +02:00
abcdefg30
11d49f3c1b Merge pull request #11910 from SoScared/balancewall
[RA] Tweak damage vs Concrete with flamers and E3.
2016-08-28 11:27:47 +02:00
Oliver Brakmann
d14ff2a54e Fix removing things in the editor when stopping standard-scrolling with RMB
The cause for this was that the `HandleMouseInput` method of the `EditorViewPortController` ran before the one from the regular `ViewPortController`, thus intercepting the button press.

Switching the order of the two around fixes that, but introduced another problem, namely that the tooltips stopped working. Switching the order meant that the `ViewPortController` laid "on top" of the `EditorViewPortController`, so the latter didn't receive the `MouseEntered` event anymore. Setting the `IgnoreMouseOver` flag in the `ViewPortController` fixes this.
2016-08-28 11:26:23 +02:00
SoScared
d2fb972c91 tweak some damage vs walls 2016-08-27 23:19:32 +02:00
Alexis Hunt
becbee8388 Move resource tick logic into chrome classes. 2016-08-27 17:17:24 -04:00
Alexis Hunt
61b3bd09b7 Add me to AUTHORS 2016-08-27 16:35:50 -04:00
abc013
ad108a0108 Added an ugrade rule and updated the ra mod 2016-08-27 22:10:35 +02:00
abc013
c2f21a21ef Replaced the AlliedMissiles boolean on JamsMissiles by a Stances field (DeflectionStances). 2016-08-27 22:09:12 +02:00
abcdefg30
cd1c520c5c Fix timers in ObserverProductionIconsWidget being calculated wrongly in replays 2016-08-27 20:35:44 +02:00
Matthias Mailänder
84d58f78d2 Merge pull request #11902 from pchote/score-line-margin
Increase the left margin of the ingame-menu team line.
2016-08-27 20:21:14 +02:00
Paul Chote
2c564d133e Enable depth buffer in TS. 2016-08-27 19:14:00 +01:00
Paul Chote
103e8075f2 Fix building EMP overlay depth offsets. 2016-08-27 19:14:00 +01:00
Paul Chote
66fbc0dfc4 Fix vehicle EMP overlay depth offset. 2016-08-27 19:13:59 +01:00
Paul Chote
8b6a355850 Fix tick tank depth offsets. 2016-08-27 19:13:59 +01:00
Paul Chote
a2239b5d46 Fix titan depth offsets. 2016-08-27 19:13:59 +01:00
Paul Chote
31351d825c Fix tunnel top depth metadata. 2016-08-27 19:13:59 +01:00
Paul Chote
f0adbac5a0 Fix infantry depth metadata. 2016-08-27 19:13:59 +01:00
Paul Chote
baf5a8ebe2 Fix explosion depth metadata. 2016-08-27 19:13:59 +01:00
Paul Chote
4e5c1deb5d Fix harvester harvest animation. 2016-08-27 19:13:58 +01:00
Paul Chote
1ff1435953 Set Offset on wake and resources. 2016-08-27 19:13:58 +01:00
Paul Chote
b52a81210e Set ZRamp on overlays. 2016-08-27 19:13:58 +01:00
Paul Chote
b066b88281 Set ZRamp on craters. 2016-08-27 19:13:58 +01:00
Matthias Mailänder
a7869fc010 Merge pull request #11866 from pchote/ts-civ-sequences
Remove duplication from TS civilian structure sequences.
2016-08-27 20:13:09 +02:00
abcdefg30
284d5e5af5 Fix a possible crash in the lua Player.Team property 2016-08-27 19:44:37 +02:00
Matthias Mailänder
020b0e628e Merge pull request #11871 from pchote/fix-production-circle
Remove hardcoded constants from Fly and ProductionAirdrop.
2016-08-27 19:43:15 +02:00
Paul Chote
82bee715df Add ^crate default for crates, drums, and palettes. 2016-08-27 18:31:04 +01:00
Paul Chote
4676e8b083 Overhaul civilian.yaml 2016-08-27 18:31:04 +01:00
Paul Chote
1b2e0ed55a Remove duplication from tree sequences. 2016-08-27 18:31:04 +01:00
Paul Chote
a6628efafb Remove duplication and set ZRamp on tracks and rocks. 2016-08-27 18:31:04 +01:00
abcdefg30
57d6f678e1 Remove an outdated TODO comment 2016-08-27 19:24:25 +02:00
Paul Chote
9e025e25ad Increase the left margin of the ingame-menu team line. 2016-08-27 18:03:16 +01:00
abcdefg30
cda23e808f Fix GpsDots being displayed when their CenterPosition is shrouded 2016-08-27 19:02:27 +02:00
reaperrr
7ac5a25ce6 Merge pull request #11882 from pchote/remove-astar-overlay
Remove legacy A* visualisation.
2016-08-27 18:37:23 +02:00
reaperrr
058bb49dff Merge pull request #11501 from pchote/tibsun-carryall
Add Carryall/Carryable traits, merging ts and d2k carryall behavior
2016-08-27 18:31:56 +02:00
Paul Chote
c3c6af018a Set carried turret facing on delivery. 2016-08-27 17:08:33 +01:00
Oliver Brakmann
7fbe282167 Merge pull request #11864 from pchote/line-depth
Fix line rendering with depth buffer enabled.
2016-08-27 17:57:30 +02:00
reaperrr
7739e7c0e0 Merge pull request #11887 from ABrandau/GDI-Medic-Sequence-Fix
TS medic crawl shadow frames correction.
2016-08-27 17:05:00 +02:00
Paul Chote
735a031d6e Fix selection rectangle with depth buffer enabled. 2016-08-27 15:43:20 +01:00
Paul Chote
3082c61e75 Add depth buffer support to tactical overlays. 2016-08-27 15:43:20 +01:00
Paul Chote
f3bac143e9 Add depth buffer support to beams and contrails. 2016-08-27 15:43:20 +01:00
Paul Chote
c092c93401 Add depth buffer support to debug overlays. 2016-08-27 15:43:20 +01:00
Paul Chote
50da18cd22 Add depth buffer support to RgbaColorRenderer. 2016-08-27 15:43:20 +01:00
Paul Chote
017020f2c3 Fix stack overflow in FindResources. 2016-08-27 15:42:18 +01:00
Paul Chote
ee77a4170b Hook up TS carryall logic. 2016-08-27 15:42:18 +01:00
Paul Chote
1ae86f34f8 Overhaul Carryall behaviour, adding support for manual control. 2016-08-27 15:42:18 +01:00
Zimmermann Gyula
ecc65e4fe4 Do not apply the cell's Z offset twice during crate positioning. 2016-08-27 16:41:52 +02:00
reaperrr
d08cc10abb Merge pull request #11889 from pchote/fix-turn-crash
Disable smooth turning for 180 degree turns.
2016-08-27 16:40:08 +02:00
Oliver Brakmann
dffb602ed4 Show scroll cursor when standard-scrolling using RMB 2016-08-27 13:56:09 +02:00
SoScared
eefc550ba7 Ins and outs for the map pool 2016-08-27 12:51:51 +02:00
Oliver Brakmann
0eb06c5abe Merge pull request #11888 from pchote/gpsdot
Draw GPS dots above the fog.
2016-08-27 11:51:31 +02:00
Paul Chote
ac94dcbd73 Unpack RA movies on install. 2016-08-26 23:44:28 +01:00
Paul Chote
7ffdd53abb Disable smooth turning for 180 degree turns. 2016-08-26 20:15:55 +01:00
Paul Chote
83137fc789 Draw GPS dots above the fog. 2016-08-26 19:27:54 +01:00
Oliver Brakmann
ff1203a892 Merge pull request #11883 from abc013/gpsHosp
Add GPS icons for oil derricks, hospitals and biolabs
2016-08-26 20:23:41 +02:00
ABrandau
272938e3d0 TS medic crawl shadow frames correction 2016-08-26 13:24:05 -04:00
Paul Chote
30c7c720ec Merge pull request #11880 from Mailaender/sequence-sprites-inheritance-check
Fixed false positive on sequence sprite checks
2016-08-26 18:09:53 +01:00
Paul Chote
d99bc78629 Merge pull request #11878 from RoosterDragon/fix-download-error-cancel
Allow download window to be closed on failed downloads.
2016-08-26 18:05:16 +01:00
Paul Chote
32eb98c17d Remove legacy A* visualisation. 2016-08-26 16:55:46 +01:00
abc013
ee033e031f Add gps icons for oil derricks, hospitals and biolabs 2016-08-26 17:08:54 +02:00
Oliver Brakmann
b3c4ecd7c5 Merge pull request #11881 from reaperrr/always-visible-bar
Allow keeping empty selection bars visible
2016-08-26 14:56:29 +02:00
Oliver Brakmann
1f2d046d34 Fix issuing orders when releasing RMB after standard-scrolling 2016-08-26 10:42:53 +02:00
reaperrr
e811612c06 Merge pull request #11862 from pchote/effects-above-shroud
Draw tactical overlays (beacons, rallypoints, text overlays, order generators) above the shroud.
2016-08-25 20:47:08 +02:00
reaperrr
39034b0de9 Allow keeping empty selection bars visible 2016-08-25 20:40:56 +02:00
Matthias Mailänder
4c672f73c0 Don't report false positives for sequence templates. 2016-08-25 19:55:59 +02:00
RoosterDragon
f1b0740e72 Allow download window to be closed on failed downloads. 2016-08-25 18:21:40 +01:00
reaperrr
af8bd461c7 Merge pull request #11872 from pchote/fix-d2k-grenadier-sequences
Fix d2k grenadier sequences.
2016-08-25 18:10:35 +02:00
Oliver Brakmann
479ee02431 Merge pull request #11876 from SoScared/map-pool-overhaul
Official Map Pool Overhaul
2016-08-25 14:05:57 +02:00
Oliver Brakmann
d6a6ed28c8 Fix issuing orders when releasing RMB after joystick-scrolling 2016-08-25 13:25:30 +02:00
abcdefg30
5d2a9d5f16 Fix GPSDots being visible when the unit is not InWorld or dead 2016-08-24 23:29:10 +02:00
abcdefg30
0d33376289 Merge pull request #11873 from reaperrr/revert-11460
Revert changes from #11460
2016-08-24 23:13:30 +02:00
SoScared
2bd6f5d4bf map preview/spawn fixups 2016-08-24 23:03:48 +02:00
abcdefg30
20624aa232 Merge pull request #11858 from reaperrr/fix-yaml-style
Yaml style clean-up
2016-08-24 22:53:01 +02:00
SoScared
fd5ee6079c map alterations 2016-08-24 22:46:58 +02:00
reaperrr
4574b18131 Revert changes from #11460 2016-08-24 18:45:43 +02:00
Paul Chote
7b43a5b49e Fix d2k grenadier sequences. 2016-08-24 17:34:08 +01:00
Paul Chote
06ca8b6cf2 Remove hardcoded constant from Fly. 2016-08-24 17:20:07 +01:00
Paul Chote
9572376de0 Remove hardcoded constants from ProductionAirdrop. 2016-08-24 17:19:06 +01:00
Paul Chote
4618ea0de3 Add oramod file association for OSX. 2016-08-24 13:39:08 +01:00
Paul Chote
4d75d7f4b6 Add oramod file association for Windows and Linux. 2016-08-24 11:36:13 +01:00
abcdefg30
fab807b86e Merge pull request #11830 from reaperrr/overridable-Armament
Make Armament as overridable as possible
2016-08-23 23:24:32 +02:00
abcdefg30
5360610491 Merge pull request #11863 from ABrandau/Ion-Cannon-Polish
Restore graphical look of the TS Ion Cannon.
2016-08-23 21:44:38 +02:00
Paul Chote
cd0ba2049f Draw repair and power down indicators above the shroud. 2016-08-23 16:34:24 +01:00
Paul Chote
f357163078 Draw floating text above the shroud. 2016-08-22 22:02:33 +01:00
ABrandau
a67867fe73 Restore graphical look of the TS Ion Cannon. 2016-08-22 16:07:32 -04:00
Oliver Brakmann
02a29ee52a Merge pull request #11658 from abcdefg30/allies04
Add allies04
2016-08-22 21:57:31 +02:00
Paul Chote
d2f5fe7380 Draw order generator renderables above the shroud. 2016-08-22 20:27:59 +01:00
Paul Chote
b016638ebe Allow beacons to be placed and drawn above the shroud. 2016-08-22 20:27:58 +01:00
Paul Chote
afdb0e0829 Draw rally points above the shroud. 2016-08-22 20:27:58 +01:00
Paul Chote
69b358ec7b Add IEffectAboveShroud for effects that draw above the shroud. 2016-08-22 20:27:58 +01:00
Paul Chote
ed349f9086 Remove health bar rendering duplication. 2016-08-22 20:27:58 +01:00
Paul Chote
6354686b58 Introduce IRenderAboveShroud interface. 2016-08-22 17:45:25 +01:00
Paul Chote
11805bb567 Rename and tweak post-render interfaces. 2016-08-22 17:40:05 +01:00
Oliver Brakmann
f1990853df Merge pull request #11854 from Mailaender/startmatch-typo
Fixed a typo in the message displayed when servers disabled single player matches
2016-08-22 11:12:36 +02:00
reaperrr
01282e7b3c TS yaml style fixes 2016-08-21 19:43:37 +02:00
reaperrr
5bf29713b1 D2k yaml style fixes 2016-08-21 19:39:50 +02:00
reaperrr
b5f36013c2 TD yaml style fixes 2016-08-21 19:36:48 +02:00
reaperrr
d5e0135de7 RA yaml style fixes 2016-08-21 19:30:54 +02:00
abcdefg30
698bf15a13 Merge pull request #11853 from pchote/ts-tib-slopes
Remove and document slope-specific tiberium artwork.
2016-08-21 18:59:04 +02:00
abcdefg30
a02910c852 Fix yaks in allies-05a 2016-08-21 18:34:37 +02:00
abcdefg30
e0cff5b0a5 Add allies04 2016-08-21 18:34:29 +02:00
Matthias Mailänder
880d848a66 Avoid duplication in server messages and fix a typo. 2016-08-21 18:27:23 +02:00
Paul Chote
0e2387b2a1 Remove and document slope-specific tib artwork. 2016-08-21 17:03:11 +01:00
reaperrr
e4d10a26f1 Merge pull request #11791 from pchote/voxel-depth
Fix voxel rendering with EnableDepthBuffer: True
2016-08-21 14:00:12 +02:00
Paul Chote
f0306e7cc2 Render voxels with an approximately-correct z-offset. 2016-08-21 12:43:16 +01:00
abcdefg30
c312cf9171 Merge pull request #11780 from daynemarais/desert-twister-cliff-fix
Fixed map tile error on "Desert Twister" map
2016-08-21 13:16:38 +02:00
Oliver Brakmann
e5d20d3cf0 Merge pull request #11311 from GraionDilach/expand-custombuildtime
Revamp custom build times.
2016-08-21 12:12:27 +02:00
Zimmermann Gyula
5648daeeed Manual cleanup. 2016-08-21 12:05:34 +02:00
Zimmermann Gyula
5eec9ef463 Automatically upgrade rules. 2016-08-21 12:05:34 +02:00
Zimmermann Gyula
d9f38d57a7 Cache the *Infos in ProductionItem. 2016-08-21 12:05:34 +02:00
Zimmermann Gyula
3309e8ac3d Look up the production queue multiplier in Lua. 2016-08-21 12:05:34 +02:00
Zimmermann Gyula
f80ac6e5c0 Rename ProductionQueue.BuildSpeed and change it's default value. 2016-08-21 12:05:34 +02:00
Zimmermann Gyula
de10cb22e8 Shift CustomBuildTimeValue to Buildable. 2016-08-21 12:05:32 +02:00
Oliver Brakmann
e93d7dd172 Merge pull request #11706 from abcdefg30/atreides03b
Add atreides03b
2016-08-21 10:23:55 +02:00
Dayne Marais
807129ac56 Fixed map tile error on "Desert Twister" map 2016-08-21 18:10:51 +10:00
reaperrr
0a4a08c29e Merge pull request #11177 from abcdefg30/powerBar
Make SupportPowerChargeBar and the SupportPowerTimer customizable with stances
2016-08-21 01:32:46 +02:00
abcdefg30
426a88e6fb Apply the upgrade rule to the ts mod 2016-08-21 01:19:56 +02:00
abcdefg30
3024d47f89 Apply the upgrade rule to the ra mod 2016-08-21 01:19:55 +02:00
abcdefg30
ddfd4c7873 Add an upgrade rule 2016-08-21 01:19:54 +02:00
abcdefg30
e8084daad7 Cache the SupportPowerManager in SupportPowerChargeBar 2016-08-21 01:19:53 +02:00
abcdefg30
e9e49a5d02 Add a new DisplayStances field to SupportPowerChargeBarInfo
other
2016-08-21 01:19:52 +02:00
abcdefg30
9848c98750 Replace the DisplayTimer field with a DisplayTimerStances field in SupportPowerInfo 2016-08-21 01:19:51 +02:00
abcdefg30
fa1f569d19 Add atreides03b 2016-08-20 22:55:59 +02:00
Paul Chote
1cdc169ad0 Merge pull request #11842 from obrakmann/fix11829_desert-shellmap-tiling-error
Fix desert tileset tiling issues in RA
2016-08-20 17:39:11 +01:00
Oliver Brakmann
b4c8ee485d Merge pull request #11816 from reaperrr/fix-UpgradeOnDamage
Fix UpgradeOnDamage to apply if initial DamageState is valid
2016-08-20 15:25:10 +02:00
reaperrr
19c3e7c9e3 Make Armament elements as overridable as possible
To allow downstream mods to ship customised Armament-derivatives.
2016-08-20 15:06:18 +02:00
Oliver Brakmann
7e8e0cd1fb Fix tiling error on RA's desert shellmap 2016-08-20 13:27:08 +02:00
Oliver Brakmann
085e599f5d Fix tile templates 79 and 80 being swapped in RA's desert tileset 2016-08-20 13:27:08 +02:00
Matthias Mailänder
02e7322b6b Merge pull request #11801 from WolfGaming/FixMinelayerGroup
Allow multiple minelayers in a single MinefieldOrderGenerator.
2016-08-20 08:25:49 +02:00
Matthias Mailänder
f5d57e361a Merge pull request #11788 from pchote/fix-smooth-moves
Make turning-while-moving actors follow curved paths.
2016-08-19 22:11:28 +02:00
Matthias Mailänder
bb444eb5f0 Merge pull request #11838 from obrakmann/yaml-cleanups
Mission-related yaml cleanups
2016-08-19 21:48:03 +02:00
Matthias Mailänder
0d49c50879 Merge pull request #11832 from obrakmann/fix-make-dep
Fix 'make dependencies' choking on Open.NAT directory name
2016-08-19 21:45:49 +02:00
Oliver Brakmann
e25eeaba17 Minor mission cleanups
* Remove exlamation mark from map title for Intervention
* Remove redundant yaml rule for Evacuation
2016-08-19 19:12:51 +02:00
Oliver Brakmann
88391391b2 Fix disabling the CrateSpawner the wrong way
In multiplayer maps, disabling the CrateSpawner by removing the trait leads to error messages in the lobby when you click on the "Crate" checkbox.
2016-08-19 19:11:22 +02:00
Oliver Brakmann
79ec85b0c7 Merge pull request #11837 from obrakmann/pr11750
Add OS X build instructions to INSTALL.md
2016-08-19 16:49:05 +02:00
masihaama
b241034c6d Add OS X build instructions to INSTALL.md
The following subset of Linux build directions work for OSX 10.11.3. Mono JIT compiler version 4.2.1
2016-08-19 16:39:08 +02:00
Oliver Brakmann
782b617852 Fix 'make dependencies' choking on Open.NAT directory name
The directory name appears to have changed in the package for 2.1.0.
2016-08-19 16:02:53 +02:00
reaperrr
cd03bc6883 Upgrade rule for UpgradeOnDamage to UpgradeOnDamageState 2016-08-18 23:31:27 +02:00
reaperrr
b174d00be9 Rename UpgradeOnDamage to UpgradeOnDamageState
The trait works for 'Undamaged' as well and no longer requires a damage state change to trigger either, so this trait name is more accurate.
2016-08-18 23:31:27 +02:00
reaperrr
7f8607e85b Fix granting upgrades on initial damage state
Previously the upgrade(s) would only be granted when the damage state changed, regardless of whether the initial DamageState was already valid.
This prevented the trait from working on Undamaged actors that had just been created, for example.
2016-08-18 23:31:27 +02:00
reaperrr
adeb2a19ca Remove bogus 'OrDefault' from UpgradeOnDamage
UpgradeManager is required anyway, so this was redundant.
2016-08-18 23:31:27 +02:00
reaperrr
0ec9725c2a Merge pull request #11621 from Mailaender/text-controlgroup
Added With*ControlGroup
2016-08-18 21:25:32 +02:00
Matthias Mailänder
7485404c87 Tweak the infantry control group positioning. 2016-08-18 21:10:57 +02:00
reaperrr
f12e0d498c Merge pull request #11771 from pchote/split-content-files
Rework mod enumeration and split content metadata into their own files.
2016-08-18 14:59:51 +02:00
reaperrr
1cec0a2497 Merge pull request #11789 from obrakmann/fix11692_save-map-visibility-flag
Allow saving maps with multiple visibility options
2016-08-18 13:03:20 +02:00
Oliver Brakmann
ad08c4318a Merge pull request #11807 from GraionDilach/ai-infonly-stuck
Clearup mod AIs.
2016-08-16 21:43:08 +02:00
UnknownProgrammer
333e8bae42 Fix for System Overflow exception
caused by casting a greater than int.MaxValue decimal to int. Fix limits offset to int.MaxValue respectively int.MinValue.
2016-08-15 22:52:12 +02:00
Oliver Brakmann
12af71e9d8 Merge pull request #11790 from GraionDilach/screenshot-ms
Include milliseconds in TakeScreenshot timestamp.
2016-08-15 14:22:20 +02:00
WolfGaming
f08853850d Merge pull request #11809 from obrakmann/fix11808_player-lua-api-breakage
Fix Lua API returning wrong player info
2016-08-15 11:57:00 +00:00
Oliver Brakmann
54b7fd7cf5 Merge pull request #11819 from Phrohdoh/actor-global-cost
Allow scripts to get the Valued.Cost value of an actor type
2016-08-14 22:28:04 +02:00
Taryn Hill
9089012a79 Allow scripts to get the Valued.Cost value of an actor type 2016-08-13 18:46:48 -05:00
Oliver Brakmann
6d742efbf4 Merge pull request #11812 from Phrohdoh/fix-ai-capturers
Fix CanBeViewedByPlayer query in HackyAI.GetVisibleActorsBelongingToPlayer
2016-08-13 20:14:37 +02:00
Taryn Hill
852f0f790f Fix CanBeViewedByPlayer query in
HackyAI.GetVisibleActorsBelongingToPlayer
2016-08-13 07:42:15 -05:00
Taryn Hill
1c5c9003f7 Merge pull request #11814 from RoosterDragon/fix-ai-timings
Ensure HackyAI tries to attack and capture as frequently as it should.
2016-08-13 07:36:58 -05:00
WolfGaming
0c79ef4f24 Allow multiple minelayers in a single MinefieldOrderGenerator. 2016-08-13 07:21:00 +00:00
Turupawn
bbac9ac61a Same unit command sounds wont overlap anymore
Responding to Travis inquiries

Changed Hashtable for Ditctionary + avoiding code duplication

More small code nits

another nit
2016-08-12 18:15:49 -06:00
reaperrr
398cb18043 Merge pull request #11772 from pchote/randomize-deathtypes
Support randomized death animations
2016-08-12 22:17:45 +02:00
reaperrr
75c5896cde Merge pull request #11773 from daynemarais/landing-aircraft-fix
Allowed aircraft to land on Tiberium and Veins
2016-08-12 22:05:30 +02:00
Paul Chote
a9bfa553fc Support multiple death animation variants. 2016-08-12 20:58:14 +01:00
Matthias Mailänder
fac58bd461 Replace pixel perfect offset with reference point definitions. 2016-08-12 21:54:51 +02:00
Matthias Mailänder
1a53bfd8a3 Keep sprite ctrl groups for Dune 2000, Red Alert, Tiberian Dawn. 2016-08-12 21:54:51 +02:00
Matthias Mailänder
8452792bb1 Render control groups using true type fonts in Tiberian Sun. 2016-08-12 21:54:51 +02:00
Matthias Mailänder
725a5d44eb Split SelectionDecorations control group rendering into
WithSpriteControlGroup and WithTextControlGroup
2016-08-12 21:53:16 +02:00
RoosterDragon
cc4ef736b0 Ensure HackyAI tries to attack and capture as frequently as it should.
Returning early in AssignRolesToIdleUnits would skip ticking down the counters that trigger new attack and capture attempts. This means they would be attempted far less often than intended.
2016-08-12 18:08:58 +01:00
Zimmermann Gyula
bea06ebb9a Update Tiberian Sun AI.
Increase infantry percentages.
Limit the AI repair units.
2016-08-12 16:07:56 +02:00
Zimmermann Gyula
099598e02c Update Dune 2000 AI.
Increase all AI combat infantry percentages.
Remove nonbuildable and deprecated infantry from AI UnitsToBuild list.
2016-08-12 14:39:06 +02:00
Zimmermann Gyula
33de63d7ee Update Tiberian Dawn AI.
Increase all AI infantry percentages.
Limit Engineers at Rush AI.
2016-08-12 14:38:55 +02:00
Zimmermann Gyula
028edc8051 Update Red Alert AI.
Increase land AI infantry percentages.
Add medic and mechanic to Normal and Turtle AI.
Limit Engineers at Rush AI.
2016-08-12 14:38:49 +02:00
Oliver Brakmann
da3333073f Merge pull request #11800 from WolfGaming/FixHuntable
RA: Delete the Huntable trait for walls and gates.
2016-08-12 14:14:07 +02:00
Oliver Brakmann
9604bf4cbd Merge pull request #11670 from evgeniysergeev/sandworm
Check that noiseDirection is not a zero
2016-08-12 13:45:14 +02:00
WolfGaming
299e925180 Only define Huntable for actors that need to be hunted. 2016-08-11 20:25:22 +00:00
Oliver Brakmann
068ffb169b Merge pull request #11417 from Phrohdoh/ai-capturers
Add naive capturing to HackyAI
2016-08-11 20:23:12 +02:00
Oliver Brakmann
f6f81e84df Fix Lua API returning wrong player info
The Lua API would return wrong information on player fields such as the team or faction when it was changed in the lobby. It referenced fields on the PlayerReference, which are pretty much read-only and don't get changed by the lobby.
2016-08-11 20:16:01 +02:00
Oliver Brakmann
92199d1dfd Merge pull request #11802 from reaperrr/fix-UpgradeOnDamage-desc
Fix UpgradeOnDamage trait description
2016-08-11 16:11:41 +02:00
reaperrr
bd4f7db711 Fix UpgradeOnDamage trait description
The old desc is bogus copy-pasta.
2016-08-11 11:31:18 +02:00
Taryn Hill
f3017d1bea CNC: Add capturing to Cabal AI 2016-08-10 19:06:25 -05:00
Taryn Hill
4e4676036f RA: Add capturing to Rush AI 2016-08-10 19:06:24 -05:00
Taryn Hill
c5e76a67dd HackyAI: Add basic capturing 2016-08-10 19:06:24 -05:00
Dayne Marais
0cfe553294 Allow aircraft to land on Tiberium and Veins 2016-08-10 22:09:56 +10:00
Zimmermann Gyula
558e266ae2 Include milliseconds in TakeScreenshot timestamp. 2016-08-09 10:44:08 +02:00
Paul Chote
88c43fa9b3 Extract content sources and downloads to external files. 2016-08-08 22:36:08 +01:00
Paul Chote
3261516b51 Support loading mods from arbitrary locations. 2016-08-08 22:36:08 +01:00
Paul Chote
cff8e949d8 Move ModContent out of the engine. 2016-08-08 22:36:07 +01:00
Paul Chote
bf4867909f Rename Manifest.Mod -> Metadata. 2016-08-08 22:36:07 +01:00
Paul Chote
3df9efb95d Rework mod enumeration / caching.
- Replaced ModMetadata.AllMods with Game.Mods.
- Store / reference mod Manifest instead of ModMetadata.
- Removes engine dependency on ModContent class.
2016-08-08 22:36:07 +01:00
Paul Chote
45a596953e Add a Utility class and update command interface. 2016-08-08 22:23:16 +01:00
Oliver Brakmann
207f0d2056 Allow saving maps with multiple visibility options 2016-08-08 23:14:06 +02:00
Oliver Brakmann
510555af5c Merge pull request #11776 from pchote/fix-bridge-freeze
Check terrain cost when testing pathable cells.
2016-08-08 18:41:24 +02:00
Oliver Brakmann
ab3da4f862 Merge pull request #11786 from Mailaender/dispose-renderer-sound
Fixed renderer not getting disposed.
2016-08-08 17:42:22 +02:00
Oliver Brakmann
ef3e2c1df2 Merge pull request #11783 from Mailaender/open.nat-2.1.0
Updated Open.NAT to version 2.1.0
2016-08-08 17:36:50 +02:00
Paul Chote
03e2fa5d55 Lerp turning-while-moving mobile actors along an arc. 2016-08-07 19:53:38 +01:00
Paul Chote
1f2824e614 Add WAngle.Lerp function. 2016-08-07 19:28:28 +01:00
Matthias Mailänder
a8118d9acd Dispose renderer and sound on exception. 2016-08-07 17:33:56 +02:00
Matthias Mailänder
0ec19365e3 We don't provide fallbacks anymore. 2016-08-07 17:33:56 +02:00
Matthias Mailänder
392fa3730e Update to Open.NAT 2.1.0 2016-08-07 10:14:43 +02:00
Matthias Mailänder
90ab5023a6 Merge pull request #11778 from pchote/detect-sequence-length-mismatch
Fix bogus D2K grenadier sequences.
2016-08-07 08:46:06 +02:00
Paul Chote
2b59cf08e8 Fix grenadier death sequences. 2016-08-06 21:19:41 +01:00
Paul Chote
b94b703157 Add a check for bogus Frames / Length combinations. 2016-08-06 21:19:32 +01:00
Oliver Brakmann
a461b6358a Merge pull request #11757 from pchote/platform-assembly
Remove the "Output Disabled" audio device and simplify platform initialization.
2016-08-06 21:01:48 +02:00
Paul Chote
860e92a2a6 Rename IGraphicsDevice.cs to PlatformInterfaces.cs. 2016-08-06 19:53:50 +01:00
Paul Chote
5a7a69a875 Tidy muting code. 2016-08-06 19:53:50 +01:00
Paul Chote
9437a86e7e Remove legacy sound code and simplify platform init. 2016-08-06 19:53:50 +01:00
Paul Chote
bb0fda41d2 Check terrain cost when testing pathable cells. 2016-08-06 19:01:04 +01:00
Paul Chote
de85a76c90 Merge pull request #11586 from GraionDilach/selfheal-revamp
Expand SelfHealing.
2016-08-06 17:31:46 +01:00
Matthias Mailänder
932b9f2bdf Remove 404 images from the readme. 2016-08-06 16:56:20 +02:00
Matthias Mailänder
6f75ddc823 Merge pull request #11758 from AoAGeneral/TDBalance
TD Balance Change 08012016
2016-08-03 07:13:52 +02:00
Matthias Mailänder
b08186f1cc Merge pull request #11666 from abcdefg30/survFix
Add an IsDead check to prevent crashes in survival01
2016-08-03 07:09:14 +02:00
Paul Chote
853ab798cb Merge pull request #11753 from RoosterDragon/vs
Allow VS2015 to format solution file
2016-08-01 21:57:12 +01:00
AoAGeneral
7025a230bf TD Balance Change 08012016 2016-08-01 12:08:26 -07:00
Paul Chote
86a0a0473b Merge pull request #11745 from RoosterDragon/download-cancel-fixes
Fix cancellation of downloads.
2016-07-31 19:39:17 +01:00
RoosterDragon
9ee6db9287 Allow VS2015 to format solution file. 2016-07-31 15:06:06 +01:00
Oliver Brakmann
75de73a17e Merge pull request #11744 from RoosterDragon/openal-cleanup
Close OpenAL sound device correctly
2016-07-31 15:32:04 +02:00
Matthias Mailänder
a73163c476 Merge pull request #11545 from pchote/aftermath-assets
Overhaul RA installed content.
2016-07-30 18:20:57 +02:00
RoosterDragon
3b5798b5e8 Fix cancellation of downloads.
The Download class cancels asynchronously, which means callers must handle cancellation inside the completion event, and not after requesting cancellation.
2016-07-30 16:27:45 +01:00
RoosterDragon
1c8f9d44df Clean up ALC sound device correctly.
ALC is thread-safe, therefore we can clean up from any thread and do not need to marshal to the main game thread. To clean up the device properly, we must first unset and destroy the context before attempting to close the device.
2016-07-30 14:53:33 +01:00
RoosterDragon
206088efb4 General code cleanup in OpenAlSoundEngine.cs. 2016-07-30 14:50:42 +01:00
Oliver Brakmann
77d0a8c54e Merge pull request #11638 from reaperrr/deprecate-IsWater-p1
Deprecate terrain IsWater check - Part 1
2016-07-30 14:25:17 +02:00
reaperrr
abaa0f4da5 Allow to customize which terrain types are considered water by HackyAI
For naval structure placement.
2016-07-30 13:19:32 +02:00
reaperrr
1e43554559 Allow to customize which terrain types are considered water by Parachutable 2016-07-30 13:19:32 +02:00
reaperrr
3e217c2192 Allow to customize which terrain types are considered water by WithCrateBody 2016-07-30 13:19:32 +02:00
Oliver Brakmann
6205eccff9 Merge pull request #11587 from pchote/d2k-106
Overhaul D2K installed content.
2016-07-30 12:29:04 +02:00
Paul Chote
492e308e2e Update asset downloads. 2016-07-30 09:59:24 +01:00
Paul Chote
3c0470cc93 Load beacon posters from lores.mix. 2016-07-30 09:59:24 +01:00
Paul Chote
9d8840a4da Extract only the redalert.mix contents that we need. 2016-07-30 09:59:24 +01:00
Paul Chote
68e176c531 Load C&C desert assets from content dir. 2016-07-30 09:49:28 +01:00
Paul Chote
5c496b8f2b Load aftermath assets from content dir. 2016-07-30 09:49:27 +01:00
Paul Chote
75b58e6839 Revert "Add Migrations GlobalModData."
This reverts commit c204c10f5e.
2016-07-30 09:49:27 +01:00
Paul Chote
841e8982dc Move RA assets to v2 dir for backwards compatibility. 2016-07-30 09:35:46 +01:00
Matthias Mailänder
93b5517445 Merge pull request #11734 from SoScared/balance2
Revert Nuke Truck Damage nerf vs Air
2016-07-30 10:31:13 +02:00
Paul Chote
e067618268 Add d2k download metadata. 2016-07-30 09:14:36 +01:00
Paul Chote
56fa7cee1b Fix install source tooltip width. 2016-07-30 09:14:36 +01:00
Paul Chote
0269805f2a Add GruntMods D2K installer metadata. 2016-07-30 09:14:36 +01:00
Paul Chote
3e1a2a89c0 Update content metadata for 1.06 and fonts. 2016-07-30 09:14:36 +01:00
Paul Chote
fdc74353fc Migrate to 1.06 patch content. 2016-07-30 09:14:35 +01:00
SoScared
b821ec6e72 Revert Nuke Truck Damage nerf vs Air 2016-07-29 14:40:44 +02:00
Matthias Mailänder
53f284c35a Merge pull request #11723 from GraionDilach/exp2score
Rename the Experience coloumn to Score in observer stats.
2016-07-28 08:38:26 +02:00
Oliver Brakmann
2eede9493e Merge pull request #11699 from Mailaender/unhardcode-capture-cursors
Unhardcoded the capture mouse cursor sequences
2016-07-27 21:36:33 +02:00
Matthias Mailänder
538137ce80 Merge pull request #11622 from Mailaender/dispose-p
Fixed parent package from ZipFile not getting disposed.
2016-07-27 14:41:17 +02:00
Matthias Mailänder
78848a67a0 Merge pull request #11721 from obrakmann/fix11660_smudge-removal-desync
Fix desync when removing smudges
2016-07-27 14:36:29 +02:00
Zimmermann Gyula
35cbb7adbb Change the Dune 2000 selfhealing from 2 HP to 4% per 125 frames. 2016-07-27 14:14:36 +02:00
Zimmermann Gyula
3ac5e0b455 Add a damagetype option to SelfHealing. 2016-07-27 14:14:35 +02:00
Zimmermann Gyula
4fa70cdfb9 Add a percentage option to SelfHealing. 2016-07-27 14:14:34 +02:00
Matthias Mailänder
fc8a2b2ebe Merge pull request #11634 from GraionDilach/fixup-damagedbyterrain
Fixup DamagedByTerrain.
2016-07-27 09:33:40 +02:00
Zimmermann Gyula
6b7ccd8aa5 Rename the Experience coloumn to Score in observer stats. 2016-07-27 02:46:10 +02:00
Zimmermann Gyula
f56602704e Rewrite TS vein YAML data. 2016-07-26 23:18:56 +02:00
Zimmermann Gyula
0f368bf6c3 Update the default mods excluding veins in TS. 2016-07-26 23:18:54 +02:00
Zimmermann Gyula
4812bc2997 Change DamagedByTerrain to apply the damage directly.
Instead of relying on a weapon.
2016-07-26 23:18:53 +02:00
Matthias Mailänder
2ab82664e3 Dispose the intermediate Stream after copying it to pkgStream. 2016-07-26 22:14:42 +02:00
Oliver Brakmann
30cf8c204b Fix desync when removing smudges
The cause of the crash was that the `RemoveSmudge` method only invokes `SharedRandom` in the else-branch of an if condition that is only taken when the `RenderPlayer` has fog visibility on the location (locations the `RenderPlayer` can see get removed from `dirty` in `TickRender`).

To add insult to injury, the `Type` field does not even need to get set since we are only using the `Sprite` field's `null` value as a marker to be picked up by the `TickRender` method. The `Type` field is only ever used twice in `AddSmudge`, in a branch of an if-condition that will not be taken when the `Sprite` field is null, which we set explicitly. The same holds true for the `Depth` field.
2016-07-26 21:46:18 +02:00
abcdefg30
e13fa2d474 Merge pull request #11571 from RockyTV/rockytv
Add command to generate settings docs
2016-07-26 17:38:38 +02:00
Alexandre Oliveira
66b74b0116 Add command to generate settings docs 2016-07-26 00:02:01 -03:00
Oliver Brakmann
d36be5b4ee Merge pull request #11704 from abcdefg30/byeCam
Remove CAMERA.Large from Evacuation and Survival01
2016-07-24 21:36:33 +02:00
Matthias Mailänder
cffeaa1774 Merge pull request #11705 from abcdefg30/descMO
Fix the Desc of MapOptionsInfo
2016-07-24 21:25:26 +02:00
abcdefg30
4ed2c53b1a Fix the Desc of MapOptionsInfo 2016-07-24 15:34:21 +02:00
abcdefg30
6f15b5a72d Remove CAMERA.Large from Survival01 2016-07-24 15:30:16 +02:00
abcdefg30
48d042ee05 Remove CAMERA.Large from Evacuation 2016-07-24 15:24:30 +02:00
Matthias Mailänder
5c230803fe Merge pull request #11696 from Mailaender/lonely-cactus
Removed a burnt cactus from TEMPERAT & SNOW terrain
2016-07-24 07:04:32 +02:00
Matthias Mailänder
da509d6394 Unhardcode the capture cursors. 2016-07-23 23:50:02 +02:00
Matthias Mailänder
37ff8420f2 Exclude burnt cactus from TEMPERAT & SNOW terrain. 2016-07-23 18:29:54 +02:00
Matthias Mailänder
40754e3ddb Merge pull request #11694 from obrakmann/fix-packaging-open.nat
Fix packaging script after move to Open.NAT
2016-07-23 18:02:10 +02:00
Oliver Brakmann
5b408855d1 Fix packaging script after move to Open.NAT 2016-07-23 17:09:38 +02:00
Matthias Mailänder
c0a440fb0a Merge pull request #11627 from obrakmann/player-experience2
Enable tracking of player experience in all mods
2016-07-23 15:53:22 +02:00
Oliver Brakmann
99d368905e Merge pull request #11680 from Mailaender/rm-jeep-unload
Removed the unused jeep unload sequence
2016-07-21 19:53:14 +02:00
Matthias Mailänder
4a09870df3 Remove the unused and redundant C&C hovercraft unload sequence. 2016-07-21 09:12:40 +02:00
Matthias Mailänder
31c4d339c4 Remove the unused and redundant Carryall unload sequence. 2016-07-21 09:12:10 +02:00
Matthias Mailänder
03e7b70029 Remove the unused jeep unload sequence (redundant to idle). 2016-07-21 09:07:20 +02:00
Oliver Brakmann
56ae4e846b Add GUI integration for PlayerExperience 2016-07-19 22:23:03 +02:00
Oliver Brakmann
3083c8a175 Add a yaml rules include file to disable player experience for scripted maps 2016-07-19 22:14:40 +02:00
evgeniysergeev
e824a4afbd Check that worm do not try to move at his current location
check latest value after while loop too
2016-07-19 22:55:43 +03:00
Oliver Brakmann
d292f15cc2 Enable player experience tracking in mod rules 2016-07-19 20:20:38 +02:00
Oliver Brakmann
dab7276601 Make repairing buildings and units grant experience
Using the repair button and repair pad, not using engineers and mechanics.
2016-07-19 20:20:38 +02:00
Oliver Brakmann
ac07c81e08 Make Infiltrates grant player experience 2016-07-19 20:20:38 +02:00
Oliver Brakmann
1e86326cbc Make capturing grant player experience 2016-07-19 20:20:38 +02:00
Oliver Brakmann
c1729a3b70 Make DonateSupplies grant player experience 2016-07-19 20:20:38 +02:00
Matthias Mailänder
25c640679c Merge pull request #11647 from abcdefg30/colorBorder
Add a dynamically generated bordercolor for supportpower timers
2016-07-19 10:27:11 +02:00
abcdefg30
76e57895b5 Merge pull request #11645 from RailTracker/bleed
Changed Basic and Combat observer stats to include Assets Destroyed/L…
2016-07-18 19:58:11 +02:00
abcdefg30
308a1a72b3 Add an IsDead check to prevent crashes in survival01 2016-07-18 18:55:21 +02:00
abcdefg30
00c6260ec2 Extract duplicated code to a SetupHuntTrigger function 2016-07-18 18:54:46 +02:00
Anthony Diep
b96de91480 Changed Basic and Combat observer stats to include Assets Destroyed/Lost instead of K/D ratio 2016-07-17 14:55:10 -07:00
abcdefg30
7769ef3c14 Add a dynamically generated bordercolor for supportpower timers 2016-07-17 16:07:53 +02:00
Oliver Brakmann
c2ec0d3cbc Merge pull request #11657 from Mailaender/fu-chocolatey
Replaced Chocolatey with more reliable alternatives
2016-07-16 16:50:15 +02:00
Matthias Mailänder
fb2fc7dae3 Replace the constantly breaking pandoc from Chocolatey
with a simple PowerShell script using the GitHub API.
2016-07-16 15:08:25 +02:00
Matthias Mailänder
5b61206ac6 Merge pull request #11513 from GraionDilach/idamage
Remove passing the warheads from DamageWarhead to AttackInfo.
2016-07-16 14:26:43 +02:00
Matthias Mailänder
0408a0345a Use the pre-installed NSIS. 2016-07-16 13:54:36 +02:00
abcdefg30
a7d82c6dba Merge pull request #11656 from Mailaender/appveyor-pandoc
Fixed AppVeyor failing at the MarkDown to HTML step
2016-07-16 12:44:53 +02:00
abcdefg30
549c00c6c1 Merge pull request #11653 from Mailaender/damagedbyterrain-div0
Fixed a division through zero in DamagedByTerrain.
2016-07-16 11:03:38 +02:00
Matthias Mailänder
8c6f501126 Fix pandoc v1.17.1 already installed. 2016-07-16 10:20:27 +02:00
Matthias Mailänder
fcd904a168 Avoid a division through zero. 2016-07-15 20:10:30 +02:00
abcdefg30
b1e8108a44 Merge pull request #11559 from MUzzell/feature-10416
Added ready checkbox for spectating admins
2016-07-15 15:47:05 +02:00
Oliver Brakmann
707a8e73da Merge pull request #11630 from Mailaender/fix-assetbrowser-palettes
Fixed palettes in the assets browser when the shellmap is disabled
2016-07-15 15:34:55 +02:00
abcdefg30
e8bcf0757f Merge pull request #11654 from Mailaender/dispose-installshieldcab
Fixed a resource leak on OpenRA.Utility.exe --list-installshield-cab
2016-07-15 15:28:59 +02:00
abcdefg30
d5bac4ebe4 Merge pull request #11651 from obrakmann/fix_HealthInit_breaking_Actor.Create
Allow HealthInit to be used with Actor.Create in Lua scripts
2016-07-15 14:10:47 +02:00
Oliver Brakmann
e6659f805b Merge pull request #11641 from abcdefg30/particleDensity
Convert ParticleDensityFactor from a float to an int
2016-07-15 10:30:57 +02:00
Matthias Mailänder
eb586fb37c Dispose the file open read stream. 2016-07-15 07:37:28 +02:00
Matthew Uzzell
6110357460 #10416 Added ready checkbox for spectating admins 2016-07-14 23:42:32 +01:00
Oliver Brakmann
d54de291b7 Merge pull request #11644 from Mailaender/appveyor-nsis-cache
Cached the NSIS installation on AppVeyor CI
2016-07-14 20:00:07 +02:00
Oliver Brakmann
417e9ca71f Add a single-argument constructor to HealthInit
...which is a requirement for an ActorInit to be usable with the Lua API's Actor.Create() method.
2016-07-14 19:45:03 +02:00
Oliver Brakmann
c4956120a7 Merge pull request #11572 from pchote/building-depth
Add building depth imposters for TS base structures.
2016-07-14 11:10:13 +02:00
Oliver Brakmann
f9255a33c4 Merge pull request #11536 from pchote/tfd
Add The First Decade metadata to the new content installer.
2016-07-14 11:08:03 +02:00
Paul Chote
216d82d4ef Set up TS base structure depth metadata. 2016-07-13 22:22:13 +01:00
Paul Chote
0371727596 Allow sequences to define depth offsets via sprites. 2016-07-13 22:22:13 +01:00
Paul Chote
5fbe747de2 Improve logging on sequence error. 2016-07-13 22:22:13 +01:00
Paul Chote
77e00e4587 Allow sequence blocks to remove inherited node Defaults. 2016-07-13 22:22:13 +01:00
Paul Chote
ac6b2a8f62 Support custom fully-open sequences for gates. 2016-07-13 22:22:07 +01:00
Paul Chote
983abee1ed Support tracking multiple sprites in SpriteCache. 2016-07-13 21:03:31 +01:00
Paul Chote
37c5e9e0b0 Fix incorrect secondary data channel in FastCreateQuad. 2016-07-13 21:03:30 +01:00
Paul Chote
f4c42581d5 Remove legacy CAB package support. 2016-07-13 21:01:56 +01:00
Paul Chote
204837d6c6 Add TFD metadata for TS. 2016-07-13 21:01:56 +01:00
Paul Chote
73ca64ee79 Add TFD metadata for TD. 2016-07-13 21:01:56 +01:00
Paul Chote
9ae444890b Add TFD metadata for RA. 2016-07-13 21:01:56 +01:00
Paul Chote
dbd21b9e46 Support extracting and deleting from content files. 2016-07-13 21:01:56 +01:00
Paul Chote
bddae7314a Reimplement InstallShieldCAB extraction. 2016-07-13 21:01:56 +01:00
Oliver Brakmann
8c8fa2d258 Merge pull request #11578 from abcdefg30/turretedDeath
Don't add duplicate facing entries when modifying the DeathActorInit in Turreted.cs
2016-07-13 19:09:08 +02:00
Oliver Brakmann
3539e3146e Merge pull request #11560 from abcdefg30/supportSpeech
Refine the support power speech notifications setup
2016-07-13 18:40:07 +02:00
Oliver Brakmann
43f406ad68 Merge pull request #11629 from abcdefg30/reqPlayer
Filter the lua PlayerProperties on Requires
2016-07-13 15:23:21 +02:00
Oliver Brakmann
8233857be1 Merge pull request #11393 from bateramos/upstream/#5966
Fixed air unit resupply
2016-07-13 14:27:04 +02:00
Matthias Mailänder
2236ee1f21 Cache the NSIS installation. 2016-07-13 07:43:24 +02:00
PedroFerreiraRamos
958e35d61f Fix air unit resupply #5966 2016-07-12 20:17:45 -03:00
abcdefg30
df5727ad38 Add an upgrade rule 2016-07-12 22:19:52 +02:00
abcdefg30
39d9832b03 Remove unnecessary ParticleDensityFactor yaml nodes
which only reflected the default value.
2016-07-12 22:19:51 +02:00
abcdefg30
3a8b2bda43 Convert ParticleDensityFactor from a float to an int 2016-07-12 22:19:50 +02:00
abcdefg30
60d7ef99d4 Merge pull request #11639 from Mailaender/check-cnc-sequences
Added sequence reference checks to OpenRA.Mods.Cnc.Traits.Render
2016-07-12 21:40:27 +02:00
Matthias Mailänder
3aea7bf955 Unhardcode, lint-test and self-document the ion cannon sequence. 2016-07-12 21:09:02 +02:00
abcdefg30
ba9fff3c6d Move the checks into the Any to prevent units in a group from doing nothing 2016-07-12 19:15:04 +02:00
abcdefg30
756dc7c127 Disable the attack-move and guard cursor for units which can't auto-target 2016-07-12 19:08:31 +02:00
abcdefg30
fb47c3ac9e Fix the attack-move cursor appearing for units which can't attack-move 2016-07-12 14:07:19 +02:00
abcdefg30
d2c5aec08d Filter the lua PlayerProperties on Requires 2016-07-12 14:03:44 +02:00
Zimmermann Gyula
cf8fff2b99 Remove passing the warheads from DamageWarhead to AttackInfo.
Added a Damage class to pass damage value and damage(types) instead.
This removes a great amount of overhead and longterm opens possibilities to have damagetypes without warheads.
2016-07-12 10:09:49 +02:00
Matthias Mailänder
67ba8c1bcc Add missing sequence references to TD render traits. 2016-07-12 07:34:02 +02:00
Matthias Mailänder
4703497656 Merge pull request #11635 from abcdefg30/training
Change the 'Training' sound to 'Building' for all queues except Infantry
2016-07-11 21:30:18 +02:00
abcdefg30
beb44c56fe Change the 'Training' sound to 'Building' for all queues except Infantry 2016-07-11 16:54:07 +02:00
Oliver Brakmann
6f57d1b561 Merge pull request #11631 from tmsbrg/install.md
Add curl as dependency for linux
2016-07-11 16:15:15 +02:00
abcdefg30
6342b40bfd Merge pull request #11499 from Mailaender/damaged-by-terrain
Merged PoisonedByTiberium and DamagedWithoutFoundations into DamagedByTerrain
2016-07-10 22:22:29 +02:00
Thomas van der Berg
f9f53a6925 Add curl package names to INSTALL.md 2016-07-10 21:13:59 +02:00
Matthias Mailänder
8ea30f9a09 TickRender regardless of the shellmap being enabled or not. 2016-07-10 20:47:08 +02:00
Matthias Mailänder
8df4e9e04c Merge PoisonedByTiberium and DamagedWithoutFoundations
into DamagedByTerrain.
2016-07-10 19:44:19 +02:00
Oliver Brakmann
203310ae4c Merge pull request #11623 from Mailaender/zip-entry-null
Fixed a potential NRE in DownloadPackageLogic.ShowDownloadDialog
2016-07-10 18:57:07 +02:00
Matthias Mailänder
57c22df114 Merge pull request #11487 from reaperrr/bldg-shape-prep
Improve Rectangle HitShape customizability
2016-07-10 17:09:31 +02:00
Matthias Mailänder
e8aa46e0d7 Merge pull request #11474 from obrakmann/player-experience
Add foundation for player experience tracking
2016-07-10 16:08:14 +02:00
Matthias Mailänder
90439ac64c Merge pull request #11574 from obrakmann/fix_non-combatant-unitcratepickup
Prevent non-combatant players from receiving units from crate pickups
2016-07-10 15:51:32 +02:00
Oliver Brakmann
20d55a1d93 Add Lua integration for PlayerExperience 2016-07-10 15:30:17 +02:00
Emiel Suilen
c3e862b2ca Add a PlayerExperience trait 2016-07-10 15:30:17 +02:00
Oliver Brakmann
5157ac917f Cache PlayerResources in PlayerStatistics
and remove a couple of redundant fields.
2016-07-10 15:30:17 +02:00
Matthias Mailänder
da3aaf4318 Merge pull request #11620 from pchote/fly-on-unreserve
Order landed aircraft to take off if their reservation is cancelled.
2016-07-10 09:28:16 +02:00
Matthias Mailänder
c3de3a0a90 Merge pull request #11619 from pchote/fix-depot-sell
Fix service depot selling.
2016-07-09 21:17:06 +02:00
Matthias Mailänder
2b8200fb0a Merge pull request #11550 from AoAGeneral/myfeature
TD Balance Changes 06302016
2016-07-09 21:02:46 +02:00
Matthias Mailänder
1fe66526cb Merge pull request #11577 from obrakmann/fix11454_EnterTransport_using_wrong_transport
Fix loading wrong transport when using alternate EnterTransport method
2016-07-09 20:59:42 +02:00
Matthias Mailänder
57acfe355b Merge pull request #11592 from reaperrr/fix-smudges
Fix smudges spawning/growing on cells occupied by structures or vehicles
2016-07-09 20:51:39 +02:00
Matthias Mailänder
6e0b058ec6 Merge pull request #11605 from pchote/renderscroll
Update keyboard scrolling at render rate.
2016-07-09 20:42:28 +02:00
Matthias Mailänder
d0bada1ae9 Don't crash when ZipFile.GetEntry returns null. 2016-07-09 20:10:53 +02:00
Oliver Brakmann
3afbc637f4 Merge pull request #11604 from pchote/fix-input-reset-crash
Fix input reset crash
2016-07-09 18:21:11 +02:00
Oliver Brakmann
66ebbab7c1 Merge pull request #11603 from pchote/fix-map-resize
Fix resizing of packaged maps.
2016-07-09 16:31:10 +02:00
Oliver Brakmann
c3633314f9 Merge pull request #11596 from GraionDilach/check-trail-delay
Fix a wrong check in LeavesTrails.
2016-07-09 16:21:48 +02:00
Oliver Brakmann
610c806ff3 Merge pull request #11519 from Mailaender/utility-same-spawn
Avoid importing spawn points with the same location
2016-07-09 15:08:33 +02:00
Oliver Brakmann
c000966590 Merge pull request #11361 from abcdefg30/newLua
Add new lua functions and fix the air attacks in allies05a
2016-07-09 14:59:47 +02:00
Paul Chote
4e32610056 Fix utility commands being unable to open oramaps. 2016-07-09 12:21:38 +01:00
Paul Chote
b87020f93f Order landed aircraft to take off if their reservation is cancelled. 2016-07-09 12:08:48 +01:00
Paul Chote
b0c9d49d14 Fix INotifyRepair argument order. 2016-07-09 11:12:56 +01:00
Paul Chote
7325f0e733 Fix service depot animation breaking sell. 2016-07-09 11:11:31 +01:00
Paul Chote
8ef38fc060 Update keyboard scrolling at render rate. 2016-07-09 01:29:17 +01:00
Paul Chote
780d6890d9 Expose viewport bookmark hotkeys to settings UI. 2016-07-09 01:11:44 +01:00
Paul Chote
2ed6706f59 Add hotkeys for viewport bookmarks. 2016-07-09 01:11:18 +01:00
Zimmermann Gyula
ad0c38d352 Fix a wrong check in LeavesTrails. 2016-07-09 02:08:33 +02:00
Matthias Mailänder
71d6471df7 Merge pull request #11602 from GraionDilach/authors-open.nat
Update AUTHORS with Open.Nat.
2016-07-08 22:17:19 +02:00
Zimmermann Gyula
91afb560a4 Update AUTHORS with Open.Nat. 2016-07-08 17:45:52 +02:00
Oliver Brakmann
b080417db3 Prevent non-combatant players from receiving units from crate pickups 2016-07-08 13:24:25 +02:00
Oliver Brakmann
196dd04b5d Merge pull request #11544 from Phrohdoh/debug-exits
Add ExitsDebugOverlay
2016-07-08 13:19:18 +02:00
Oliver Brakmann
f141798bcb Merge pull request #11580 from Mailaender/dedicated-nat-log
Fixed dedicated server crashing when writing UPnP Nat logs
2016-07-08 13:15:26 +02:00
Oliver Brakmann
6396f95ff5 Merge pull request #11594 from r34ch/lst-beach-landing
Allow RA LST to travel on beach tiles
2016-07-08 13:13:11 +02:00
D'Arcy Rush
3ae87c9db4 Allow RA LST to travel on beach tiles 2016-07-07 22:13:19 +01:00
reaperrr
e2cf6fdb9a Do not spawn smudges under buildings and vehicles in TS
Exceptions are intentional.
2016-07-07 20:51:21 +02:00
reaperrr
5df32e6d2a Fix smudges in D2k to not spawn or grow when hitting vehicle or structure 2016-07-07 20:51:21 +02:00
reaperrr
a212734c5c Fix smudges in TD to not spawn/grow under structures and vehicles
Also trees, husks and creeps (dinos and visceroids) in most cases.
Exceptions are intentional.
2016-07-07 20:51:21 +02:00
reaperrr
af1afca792 Fix TD artillery explosion sound not playing 2016-07-07 20:51:21 +02:00
reaperrr
1886bad107 Make smudges in RA not spawn/grow below vehicles and structures
Also walls, trees and husks in most cases.

Note: Differences between warheads are intentional.
Note2: Some smudge WHs were removed instead when the weapon was purely anti-air or anti-water.
2016-07-07 20:51:21 +02:00
reaperrr
4b1e243df3 Make smudges not spawn or grow when cell contains invalid target
This can be used to prevent smudges to spawn below buildings, vehicles etc.
2016-07-07 20:51:21 +02:00
Taryn Hill
4b7af5d780 TS: Make use of ExitsDebugOverlay(Manager) 2016-07-07 08:58:56 -05:00
Taryn Hill
7a0d12dd51 Implement ExitsDebugOverlay and ExitsDebugOverlayManager 2016-07-07 08:57:44 -05:00
Matthias Mailänder
93b7847ce2 Merge pull request #11583 from Phrohdoh/fix-withtextdeco
WithTextDecoration: Move exception to Info via IRulesetLoaded
2016-07-06 22:46:26 +02:00
Oliver Brakmann
eae3808515 Merge pull request #11589 from cjshmyr/crash-timestamp
Add timestamp to exception.log
2016-07-06 22:36:57 +02:00
Curtis Shmyr
2fc77a315e Add timestamp to exception.log 2016-07-06 13:49:08 -06:00
Taryn Hill
59d97b8447 WithTextDecoration: Move exception to Info via IRulesetLoaded 2016-07-05 14:09:27 -05:00
Oliver Brakmann
92e13616de Merge pull request #11207 from evgeniysergeev/removesmudge
add RemoveSmudge function
2016-07-05 12:33:56 +02:00
evgeniysergeev
e83ffbec1c add RemoveSmudge function and trait 2016-07-05 12:03:04 +03:00
Matthias Mailänder
d1f104a78f Add new log channel nat to the dedicated server as well. 2016-07-04 22:07:29 +02:00
reaperrr
31d822bcd2 Merge pull request #11565 from Mailaender/withtextdecoration
Added WithTextDecoration
2016-07-04 18:37:28 +02:00
abcdefg30
7593cf3b63 Don't add duplicate facing entries when modifying the DeathActorInit in Turreted.cs 2016-07-04 18:32:01 +02:00
Oliver Brakmann
2c42177ef8 Merge pull request #11549 from reaperrr/fix-ra-gren-dmg
Fix RA Grenadier damage versus Heavy armor
2016-07-04 17:53:35 +02:00
Oliver Brakmann
ffe36334a0 Fix loading wrong transport when using alternate EnterTransport method 2016-07-04 14:52:48 +02:00
Oliver Brakmann
9ab2ce2362 Merge pull request #11520 from reaperrr/IdleWander
Make civilians wander around when idle
2016-07-04 11:50:35 +02:00
Matthias Mailänder
6148e8d8a3 Rename Stances to ValidStances. 2016-07-04 00:34:28 +02:00
Matthias Mailänder
db146ae479 Remove Red Alert primary sprite font from Tiberian Sun. 2016-07-04 00:34:26 +02:00
Matthias Mailänder
2b67a53f7e Remove Red Alert primary sprite font from Dune 2000. 2016-07-03 21:32:02 +02:00
Matthias Mailänder
a6e42823e5 Add WithTextDecoration. 2016-07-03 21:31:58 +02:00
Matthias Mailänder
bd8c97e258 Merge pull request #11570 from abcdefg30/tsRules
Clean the ts yaml rules
2016-07-03 20:59:23 +02:00
Matthias Mailänder
9833a56e65 Merge pull request #11556 from pchote/gamespeeds
Port game speed selection to new lobby backend.
2016-07-03 20:55:09 +02:00
abcdefg30
430b654460 Merge pull request #11428 from reaperrr/attack-delay
Allow attack anims/overlays to start before weapons fire
2016-07-03 18:58:07 +02:00
reaperrr
81190be3b6 Merge pull request #11543 from Phrohdoh/chatcommands-no-dupes
Allow overriding previously registered chatcommands
2016-07-03 16:48:35 +02:00
Paul Chote
7caf636222 Port game speed selection to new lobby backend. 2016-07-03 15:46:08 +01:00
abcdefg30
d51960f621 Remove a bogus RevealsShroud definition from DPOD 2016-07-03 16:28:28 +02:00
abcdefg30
47f0b81448 Replace yes/no with true/false in all ts rule yamls 2016-07-03 16:28:27 +02:00
abcdefg30
0589a58ac3 Remove an empty "Building:" definition from NASAM 2016-07-03 16:28:25 +02:00
abcdefg30
0c43c43509 Remove unneeded "LandWhenIdle: no" definitions from ts defaults.yaml
Both ^Helicopter and ^Plane already inherit that from ^Aircraft
2016-07-03 16:28:25 +02:00
abcdefg30
e858e13da7 Merge pull request #11561 from Phrohdoh/gives-exp-stances
Replace GivesExperience.FriendlyFire and GivesBounty.Stances with ValidStances
2016-07-03 16:24:37 +02:00
abcdefg30
b9b9cf7f92 Make use of the new SpeechNotifications in ra and cnc 2016-07-03 16:21:08 +02:00
abcdefg30
6de12fb0e9 Add SpeechNotifications for InsufficientPower and Launch on support powers 2016-07-03 16:21:07 +02:00
abcdefg30
7fd7d44e7f Remove empty fields from support powers 2016-07-03 16:21:04 +02:00
abcdefg30
6d81de84a4 Replace direct references to filenames by ones to notifications where possible 2016-07-03 16:21:03 +02:00
abcdefg30
57d83e2813 Add more sound notifications to cnc 2016-07-03 16:21:02 +02:00
abcdefg30
96165293dc Add all missing speech notifications to cnc 2016-07-03 16:21:01 +02:00
abcdefg30
aa93983efd Sort the entries in mods/cnc/audio/notifications.yaml 2016-07-03 16:21:00 +02:00
abcdefg30
46a9750fcb Merge pull request #11555 from pchote/fix-editor-shellmap-ui
Use BeforeGameStart to remove shellmap UI on editor start.
2016-07-03 16:13:31 +02:00
Taryn Hill
f731dc8d68 Utility: Add upgrade rules for GivesExperience and GivesBounty changes 2016-07-03 08:50:55 -05:00
Taryn Hill
3f6f918b3d GivesBounty: Replace Stances with ValidStances 2016-07-03 08:50:55 -05:00
Taryn Hill
ec808ddc54 GivesExperience: Replace FriendlyFire with ValidStances 2016-07-03 08:50:54 -05:00
reaperrr
a0a6d0705e Merge pull request #11563 from Phrohdoh/fs-mount-tryget
FileSystem.Mount: Use TryGetValue instead of directly accessing a value
2016-07-03 15:37:01 +02:00
reaperrr
3ca3fc8d4b Merge pull request #11567 from Mailaender/lint-pips-groups
Documented and exposed the control group sprites to lint testing
2016-07-03 15:31:39 +02:00
Taryn Hill
6a228f0428 FileSystem: Use TryGetValue in Mount(string, string) 2016-07-03 08:25:14 -05:00
Matthias Mailänder
889bbcf428 Cache the palette lookup. 2016-07-03 14:41:15 +02:00
Matthias Mailänder
4325e1b400 Let pipImages tick using the appropriate interface. 2016-07-03 14:40:47 +02:00
Matthias Mailänder
3e5155fa7d Cache pipImages in the constructor. 2016-07-03 14:40:14 +02:00
abcdefg30
bc93e5f666 Merge pull request #11564 from Mailaender/coverity-zipfile
Fixed undisposed file and memory streams in ZipFile and surroundings
2016-07-03 14:22:36 +02:00
Matthias Mailänder
3a7558c273 Document and lint test pips and groups. 2016-07-03 12:26:29 +02:00
Matthias Mailänder
2de423ddb9 Dispose fileStream when problems occur. 2016-07-03 10:27:44 +02:00
Matthias Mailänder
96d9a01f76 Dispose pkgStream. 2016-07-03 10:26:56 +02:00
reaperrr
2a268f80b2 Give TS walls rectangular HitShapes 2016-07-02 17:39:16 +02:00
reaperrr
f25398c731 Add option to apply Rectangle HitShape to all TargetablePositions
This allows to simulate a footprint-shaped HitShape until we have a proper Polygon HitShape.
2016-07-02 17:39:15 +02:00
reaperrr
610f08f652 Add RotateToIsometry to Rectangle HitShape
This is a temporary measue until we have a more flexible Polygon HitShape.
2016-07-02 17:23:34 +02:00
reaperrr
9020d39fcc Introduce PositionClosestTo util 2016-07-02 17:23:34 +02:00
reaperrr
8590be5f74 Merge pull request #11482 from pchote/rework-zip-updating
Rework zip updating
2016-07-02 17:00:06 +02:00
reaperrr
c8012baffb Make all Attack* traits listen to Stop order 2016-07-02 16:02:00 +02:00
reaperrr
c153277e8b Add AttackSounds trait
This trait plays sounds when preparing to attack or attacking.
2016-07-02 16:02:00 +02:00
reaperrr
3b43544e2d Add start delay functionality to attack animation traits 2016-07-02 16:02:00 +02:00
reaperrr
75c49620d1 Introduce INotifyAttack.PreparingAttack
And use it to allow triggering attack animations/overlays at a different point
than the actual weapon firing.
2016-07-02 16:02:00 +02:00
reaperrr
87537d9669 Move WithAttackOverlay to Mods.Common 2016-07-02 16:02:00 +02:00
reaperrr
cf97e36815 Merge pull request #11558 from abcdefg30/portableUnhard
Unhardcode the target(blocked) cursor(s) in PortableChrono
2016-07-02 15:15:43 +02:00
reaperrr
2640b5df80 Merge pull request #11551 from abcdefg30/lowerLevel
Lower the case of the TechLevel in all rules.yaml files
2016-07-02 15:07:48 +02:00
reaperrr
fc50127390 Merge pull request #11557 from Mailaender/railway-rendering
Fixed Tiberian Sun railway rendering
2016-07-02 15:00:31 +02:00
abcdefg30
868d5c14e9 Unhardcode the target(blocked) cursor(s) in PortableChrono 2016-07-02 13:44:57 +02:00
Matthias Mailänder
7152cec589 Fix railway rendering outside the map editor. 2016-07-02 12:40:00 +02:00
Matthias Mailänder
2bccdde9d0 Move Inherits on top. 2016-07-02 12:39:43 +02:00
Paul Chote
89c4cf9658 Hack around map creation crash. 2016-07-01 21:58:27 +01:00
Paul Chote
21c150fae3 Throw a sensible exception when an invalid path is given. 2016-07-01 21:58:26 +01:00
Paul Chote
c706e68b73 Rework zip file updating. 2016-07-01 21:58:26 +01:00
Paul Chote
5d62881be6 Support upgrading explicitly referenced yaml paths. 2016-07-01 21:58:26 +01:00
Paul Chote
9baee57443 Use BeforeGameStart to remove shellmap UI on editor start. 2016-07-01 21:54:25 +01:00
abcdefg30
4732f3767f Merge pull request #11459 from reaperrr/fix-range-check
Fix weapon min/max range and validity checks
2016-07-01 14:24:41 +02:00
abcdefg30
f945837860 Lower the case of the TechLevel in all rules.yaml files 2016-07-01 00:00:42 +02:00
abcdefg30
1168d10519 Remove empty MapOptions: entries from rules.yaml files 2016-06-30 23:59:58 +02:00
AoAGeneral
df407c90e7 TD Balance Changes 06302016 2016-06-30 14:38:44 -07:00
Oliver Brakmann
b186084c79 Merge pull request #11547 from reaperrr/fix-td-p03
Fix debris P03 template in TD jungle and snow terrain
2016-06-30 21:32:45 +02:00
reaperrr
7a3888220f Make RA grenade versus Concrete explicit
To prevent people from assuming it's unintentional.
2016-06-30 19:31:03 +02:00
reaperrr
f9cf398949 Increase RA Grenadier damage vs. Heavy armor
5% versus Heavy armor is way too low. Increasing it to 25% results in an effective increase from 3 to 15 damage points for full hits, making grenadiers quite a bit more versatile, while still leaving a big enough gap to Rocket Soldiers in effectiveness versus tanks and defenses.
2016-06-30 19:28:19 +02:00
reaperrr
ea18a89e03 Fix debris P03 template in TD jungle and snow terrain 2016-06-30 19:08:13 +02:00
Taryn Hill
023b17a68e Allow overriding previously registered chatcommands 2016-06-30 09:28:27 -05:00
reaperrr
4d90361b8b Merge pull request #11514 from abcdefg30/64ops
Fix a crash with not space occupying actors granting support powers
2016-06-30 15:35:02 +02:00
reaperrr
8493b1deda Merge pull request #11512 from Nelax/ai-squadexclude
Added Squad Exclusion to HackyAI
2016-06-30 15:21:22 +02:00
reaperrr
f5c89ae56d Merge pull request #11497 from obrakmann/stuff-for-sp-1
Add functionality requested for Shattered Paradise
2016-06-30 15:13:49 +02:00
reaperrr
213c1bcb3e Merge pull request #11463 from reaperrr/fix-ai-mcv
Improve AI MCV deployment
2016-06-30 11:44:14 +02:00
Matthias Mailänder
641cb96dac Merge pull request #11542 from MustaphaTR/ant-crush-fix
RA - Some fixes about Giant Ants
2016-06-28 20:48:13 +02:00
Mustafa Alperen Seki
079d58dbef Some fixes about Giant Ants. 2016-06-28 16:42:58 +03:00
reaperrr
e647af3dd1 Allow modders to choose AI MCV deployment base restriction
For some mods, a random map location might be a better choice for the AI than deploying the MCV inside the base, so we allow modders to customize it.
2016-06-27 18:17:51 +02:00
reaperrr
28376782aa Make civilians in RA, TD and TS wander around
Except for some singleplayer actors where this could be problematic
(Einstein, Mobius, Agent Delphi, RA General).
2016-06-26 20:30:08 +02:00
reaperrr
09e365bc4a Fix Wanders to be usable on its own
Allows unarmed actors like civilians or harmless critters to wander around when idle.

Additionally made it upgradable.
2016-06-26 20:30:06 +02:00
Matthias Mailänder
921375973e Merge pull request #11522 from pchote/more-installers
Support content installation from "C&C The Ultimate Collection" (Origin versions).
Closes #9479
Closes #11524
2016-06-26 19:42:10 +02:00
Paul Chote
40089e7076 Fix logging on bogus extraction metadata. 2016-06-26 18:23:44 +01:00
Paul Chote
fe3231ec2c Add RA Aftermath disk metadata. 2016-06-26 18:23:42 +01:00
Paul Chote
e9e5e9da58 Add support for RA TUC music. 2016-06-26 18:23:18 +01:00
Paul Chote
1005e1146f Extract C&C videos to disk for perf and TUC compatibility. 2016-06-26 18:22:29 +01:00
Paul Chote
9c79e45356 Add TUC metadata for TS. 2016-06-26 18:22:29 +01:00
Paul Chote
147dccec0b Add TUC metadata for RA. 2016-06-26 18:22:26 +01:00
Paul Chote
974c0b6eed Add TUC metadata for C&C. 2016-06-26 18:18:40 +01:00
Paul Chote
d1a973458b Add support for installing content from disk. 2016-06-26 18:18:40 +01:00
Paul Chote
7ca7e695e1 Rename Disc -> Source in asset installer. 2016-06-26 18:18:40 +01:00
Oliver Brakmann
aad17148bc Merge pull request #11533 from HenrytheSlav/pword_UI
Password UI improvements
2016-06-26 17:47:35 +02:00
reaperrr
483452580f Merge pull request #11528 from pchote/migrations
Delete legacy downloaded scores.mix on first run
2016-06-26 16:54:02 +02:00
reaperrr
7ed792ba88 Merge pull request #11286 from Mailaender/open.nat-2.0.16
Dump Mono.NAT in favor of Open.Nat 2.0.16
2016-06-26 16:16:11 +02:00
HenrytheSlav
17d6afa071 Do not keep the wrong password in the textfield for next try. 2016-06-26 15:54:41 +02:00
HenrytheSlav
d19c9eadb0 Jump to textfield in password prompt. 2016-06-26 15:44:19 +02:00
Matthias Mailänder
3356e6a82d Merge pull request #11526 from pchote/cleanup-move
Remove legacy Move constructor.
2016-06-25 22:28:05 +02:00
Paul Chote
6aa0daa500 Remove legacy downloaded scores.mix. 2016-06-25 19:17:51 +01:00
Paul Chote
c204c10f5e Add Migrations GlobalModData. 2016-06-25 19:17:50 +01:00
Paul Chote
30dcbeb873 Remove legacy Move constructor. 2016-06-25 16:29:47 +01:00
reaperrr
c643a0abd6 Change AttackWander trait lookup
AttackMove is required and therefore can't be null, so the 'OrDefault' was redundant.
2016-06-25 12:42:42 +02:00
reaperrr
f5a0c7e425 Move AttackWander into root Traits folder
It's not really an Attack* trait, so it doesn't belong into that subfolder.
2016-06-25 12:36:35 +02:00
reaperrr
46ca650324 Fix initial Wanders delay
The previous 'fix' was apparently incomplete. This time it has been properly tested and works as intended.
2016-06-25 12:29:00 +02:00
Matthias Mailänder
a55b8659c7 Avoid importing spawn points with the same location. 2016-06-25 09:44:39 +02:00
Matthias Mailänder
a421a191b5 Merge pull request #11517 from abcdefg30/empLimit
Add a note in the tooltip of build-limited TS structures
2016-06-25 08:32:38 +02:00
abcdefg30
383b155c4e Add a note in the tooltip of build-limited TS structures 2016-06-25 00:33:12 +02:00
Oliver Brakmann
9eae2ca154 Merge pull request #11510 from reaperrr/move-loaders
Move audio loaders from engine to mod level
2016-06-24 23:59:08 +02:00
Oliver Brakmann
694fe2bdf1 Merge pull request #11515 from reaperrr/fix-wanders
Fix Wanders always triggering move at first game tick
2016-06-24 20:47:48 +02:00
abcdefg30
756f88c187 Merge pull request #11402 from Mailaender/sp-utility
Improved map import for singleplayer missions
2016-06-24 18:02:13 +02:00
reaperrr
38e1d409ff Make Wanders.TickIdle virtual
So inheriting traits can override it.
2016-06-24 16:43:54 +02:00
reaperrr
4eb17e1642 Fix all wandering actors wandering at first game tick
NotifyBecomingIdle is only notified at the first idle tick, so `countdown` is not set when TickIdle checks it at first game tick. Therefore, we let TickIdle return early at first game tick to avoid that.
2016-06-24 16:43:53 +02:00
Bynnar18
dace814829 Added ExcludeFromSquads to HackyAI 2016-06-24 09:18:43 -05:00
abcdefg30
dd5e229886 Fix a crash with not space occupying actors granting support powers 2016-06-24 15:30:57 +02:00
abcdefg30
eccdc47544 Remove trailing spaces and tabs from cnc64gdi01.lua 2016-06-24 15:29:57 +02:00
reaperrr
61acbe70d6 Extract WavReader to own file and move it to FileFormats 2016-06-23 23:47:57 +02:00
reaperrr
f1882e2dd6 Rename ImaAdpcmLoader to *Reader and move it to FileFormats 2016-06-23 23:47:55 +02:00
reaperrr
415e0bb54c Split AudReader from AudLoader and move it to FileFormats
We already separated loading from file format reading for sprites and videos.
2016-06-23 23:47:54 +02:00
reaperrr
ed210b380f Move audio loaders from engine to mod level 2016-06-23 23:47:52 +02:00
Oliver Brakmann
f0d6334697 Merge pull request #11511 from OmegaBolt/d2k-cliffmaze
D2k: Add Cliffmaze 1v1 map by S.D.
2016-06-23 21:14:11 +02:00
reaperrr
27993729be Make attack cursor smarter
Rather than simply taking the first valid armament, regardless of available ammo and regardless of which valid armament has the highest range, the attack cursor is now chosen a) by whether the armament has ammo and b) by which valid armament has the highest range.
2016-06-23 15:09:11 +02:00
reaperrr
40e5dfbedb Fix helicopters not returning when all valid weapons are out of ammo
They now return if all weapons are invalid (which includes those that are otherwise valid, but out of ammo) and at least one AmmoPool needs reloading at RearmBuilding.
2016-06-23 14:47:42 +02:00
reaperrr
4f55b088eb Check if weapon without self-reloading is out of ammo when deciding validity
This should prevent attacking helicopters (or other actors) staying at the range to target of a weapon that is out of ammo and needs manual reloading at a RearmBuilding or via upgrades.
2016-06-23 14:47:41 +02:00
OmegaBolt
d017d38363 D2k: Add Cliffmaze 1v1 map by SD 2016-06-23 10:35:26 +01:00
reaperrr
ad77dca12a Remove WavReader dependency from BagFile reader 2016-06-23 01:55:01 +02:00
Oliver Brakmann
c2d4a3a8e8 Merge pull request #11470 from pchote/fix-direction-check
Fix Mobile.IsMovingInMyDirection check.
2016-06-22 22:49:03 +02:00
abcdefg30
34c6edbbe7 Merge pull request #11456 from obrakmann/disable-singleplayer-by-default-for-dedicateds
Disable single-player games by default on dedicated servers
2016-06-22 22:28:37 +02:00
Oliver Brakmann
95dbaa5d1f Merge pull request #11373 from reaperrr/fix-footprints
Fixed footprints of several RA and TD base structures
2016-06-22 20:51:36 +02:00
Oliver Brakmann
8e2adc7627 Disable singleplayer games by default on dedicated servers 2016-06-22 20:37:31 +02:00
reaperrr
ff48ba8fba Merge pull request #11500 from Mailaender/ts-sprite-offsets
Fixed sprite offsets of several Tiberian Sun buildings
2016-06-22 15:01:15 +02:00
reaperrr
99836bd55b Fix RA selection box offsets
Gap Gen, Adv. Powerplant, fake APP, Tesla Coil.
2016-06-21 23:53:55 +02:00
reaperrr
4cc6dede5d Fix TD selection and section deco offsets
...of Temple of Nod, Weapons Factory and Hand of Nod, to better match the new footprints.
2016-06-21 23:53:53 +02:00
reaperrr
096d82a901 Map actor Location upgrade rules
To move all buildings with changed footprint down by 1 cell.
2016-06-21 23:53:52 +02:00
reaperrr
57ff4822fc Add support for custom locations to legacy map importer
For example, to place actors with changed footprint correctly.
Use it to ensure correct positioning of several RA and TD structures as well as TD tiberium trees.
2016-06-21 23:53:50 +02:00
Matthias Mailänder
703388f034 Fixed sprite offsets. 2016-06-21 23:28:48 +02:00
abcdefg30
229e22b1d8 Fix the air attacks in allies05a using the new functions 2016-06-21 23:20:05 +02:00
abcdefg30
61fd9d2959 Add AmmoPoolProperties to lua 2016-06-21 23:20:02 +02:00
Paul Chote
7fe71961a4 Merge pull request #10715 from Mailaender/import-sequences
Added a TS/RA2 sprite sequence importer for infantry and buildings
2016-06-21 21:57:34 +01:00
Oliver Brakmann
35bde84f97 Merge pull request #11498 from pchote/move-carryall
Move carryall code to Mods.Common.
2016-06-21 22:54:50 +02:00
abcdefg30
4461379963 Make the Attack lua method available for non-mobile actors 2016-06-21 22:49:29 +02:00
abcdefg30
19482863fd Expose Land and Resupply functions for aircraft to lua 2016-06-21 22:49:28 +02:00
Paul Chote
2355ad9dd1 Move carryall code to Mods.Common. 2016-06-21 21:38:19 +01:00
Oliver Brakmann
2e07459e98 Make RejectsOrders upgradable 2016-06-21 19:13:25 +02:00
Oliver Brakmann
41417c5ad2 Add a DeathTypes filter to GivesBounty
also:

* Updates the documentation
* Adds an option to disable the floating text
2016-06-21 19:13:25 +02:00
reaperrr
8ba833777c Make AI deploy MCVs in the vincinity of existing construction yards
While the general idea of AIs building distant secondary bases might be tempting, in reality the AI would way too often send the MCV close to some enemy base, wasting the cash and potentially increased build speed/additional build queue.

Deploying MCVs close to the existing base ensures that the AI will actually have some benefit from building an MCV.
2016-06-20 20:52:04 +02:00
reaperrr
5992530655 Fix AI giving orders to MCVs that already have orders
Checking for IsMoving is a flawed approach no matter how you look at it. The MCV might just have temporarily stopped due to an obstacle, or about to be deployed.

Checking for IsIdle instead ensures that the MCV really isn't already in the process of doing something.
2016-06-20 20:52:04 +02:00
Matthias Mailänder
a7fa5e9fe1 Guess the correct sprite offset from building foundations. 2016-06-20 20:47:30 +02:00
Matthias Mailänder
8de6f1a18b Add a sprite sequence importer for infantry and buildings. 2016-06-20 20:47:26 +02:00
reaperrr
b5a67444e7 Pass ModData to upgrade methods 2016-06-20 18:59:26 +02:00
reaperrr
3aa529b2ba Fix TD mission base rebuild locations
To adapt to changed footprint.
2016-06-20 18:55:54 +02:00
reaperrr
fedc0e7d28 Fixed map placement of TD buildings
...with changed footprint.
2016-06-20 18:55:54 +02:00
reaperrr
c114c8fe1e Fixed map placement of RA buildings
...with changed footprint.
2016-06-20 18:55:54 +02:00
reaperrr
9a8f0d9aba Removed empty top rows from TD base structure footprints
Removed top row of buildings where it only consisted of _ cells and adjusted the art offset instead. This fixes the issue that CenterPosition was located in the middle between the occupied and passable cell for defenses like Obelisks, makes their placement a bit more intuitive and makes setting up proper HitShapes easier.
2016-06-20 18:55:54 +02:00
reaperrr
a392780c93 Tweaked RA airfield + soviet barracks offsets
Barracks art is now more centered and aligned with allied tent. Airfield is now more centered, which also makes the custom spawn position obsolete and fixes the misalignment between spawn and landing position.

This is also done to reduce misalignment between art and footprint-sized hit shapes that will follow later.
2016-06-20 18:55:54 +02:00
reaperrr
ad44c51898 Removed empty top rows from RA base structure footprints
Removed top row of buildings where it only consisted of _ cells and adjusted the art offset instead. This fixes the issue that CenterPosition was located in the middle between the occupied and passable cell for defenses like tesla coils, makes their placement a bit more intuitive and makes setting up proper HitShapes easier.
2016-06-20 18:55:54 +02:00
reaperrr
526f851489 Merge pull request #11426 from pchote/actorpreview-dynamic-facing
Support dynamic ActorPreview facings and creating previews from live actors.
2016-06-20 14:38:11 +02:00
reaperrr
7467a0e1a9 Merge pull request #11451 from pchote/map-lua-options
Port map difficulties to new lobby options backend.
2016-06-20 13:03:47 +02:00
reaperrr
94bde04422 Merge pull request #11483 from Mailaender/supportpower-factionspeech
Added support power speech notifications
2016-06-20 12:21:48 +02:00
Paul Chote
b59b57f67e Hide checkboxes if no matching trait exists. 2016-06-19 22:15:27 +01:00
Paul Chote
6570e1b22e Avoid crash when parsing an order with duplicate IDs. 2016-06-19 22:15:27 +01:00
Paul Chote
7c2d938327 Remove bogus MapOptions trait from the player actor. 2016-06-19 22:15:27 +01:00
Paul Chote
d08a8eb1f6 Replace Map.Difficulty with Map.LobbyOption in scripts. 2016-06-19 22:15:27 +01:00
Paul Chote
8ce4ab0bd1 Port map difficulty to new options backend. 2016-06-19 22:15:26 +01:00
Paul Chote
1d1b97cb6a Add ScriptLobbyDropdown trait and lua API. 2016-06-19 22:15:26 +01:00
Oliver Brakmann
74f0eceb56 Merge pull request #11031 from Phrohdoh/orautil-miniyaml-tree-actor
Add a utility command to output an actor's MiniYaml tree
2016-06-19 23:07:19 +02:00
Taryn Hill
1359361832 Add a utility command to output an actor's MiniYaml tree
Possibly taking in a path (to a .zip/.oramap/directory).
2016-06-19 15:39:39 -05:00
abcdefg30
5daf43ab43 Merge pull request #11486 from abcdefg30/byeLobbyDefaults
Remove LobbyDefaults from reservedModuleNames in Manifest.cs
2016-06-19 22:30:27 +02:00
abcdefg30
a8fc18522e Merge pull request #11479 from reaperrr/improve-shadow
Improve WithShadow
2016-06-19 22:29:29 +02:00
abcdefg30
4e04f91992 Remove LobbyDefaults from reservedModuleNames in Manifest.cs 2016-06-19 22:14:36 +02:00
abcdefg30
2d21d6aad2 Merge pull request #11485 from obrakmann/fix11472_X.vqa
Fix blank video heuristic for legacy map import to include upper-case 'X'
2016-06-19 20:40:27 +02:00
Oliver Brakmann
e08ba5eaee Fix blank video heuristic for legacy map import to include upper-case 'X' 2016-06-19 20:11:05 +02:00
reaperrr
906bbc5439 Give TD/RA aircraft custom shadow offsets
To a) match 'light direction' of other actor art, and b) make the shadow still a little visible for landed aircraft.
2016-06-19 19:28:44 +02:00
reaperrr
cc9b24d932 Make WithShadow Offset and ZOffset customizable 2016-06-19 19:13:10 +02:00
Matthias Mailänder
aebd4a9fea Add faction specific select target speech notifications
to ion cannon and cluster missile.
2016-06-19 18:51:10 +02:00
Matthias Mailänder
ad216ce050 Consolidate EMP attack order with faction speech notifications. 2016-06-19 18:50:31 +02:00
Matthias Mailänder
730b5ae2eb Replace cluster missile sounds with faction speech. 2016-06-19 18:50:00 +02:00
Matthias Mailänder
4896f2deb7 Replace Ion Cannon sounds with faction speech. 2016-06-19 18:49:23 +02:00
Matthias Mailänder
5cffccb679 Add Death Hand missile launch detected. 2016-06-19 18:48:20 +02:00
Matthias Mailänder
55ed5247cc Replace Death Hand missile sounds with faction speech. 2016-06-19 18:48:07 +02:00
Matthias Mailänder
2f1169b548 Don't null unused fields as they default to null. 2016-06-19 18:47:29 +02:00
Matthias Mailänder
409fe9067a Add speech notification equivalents to support power sounds. 2016-06-19 18:46:05 +02:00
Matthias Mailänder
4c3ff461d4 Add a missing space. 2016-06-19 18:43:42 +02:00
Matthias Mailänder
c8bc819034 Disable the trait instead of nulling the fields. 2016-06-19 18:43:27 +02:00
reaperrr
723c107aa5 Merge pull request #11473 from pchote/shroud-map-crate
Disable hide map crate if explored map is enabled.
2016-06-19 18:32:11 +02:00
reaperrr
e5986788a2 Merge pull request #11396 from Mailaender/sync-projectiles
Speed up sync by only syncing projectiles
2016-06-19 18:22:41 +02:00
reaperrr
6b1adbacc4 Make WithShadow public and upgradable 2016-06-19 15:16:28 +02:00
Paul Chote
4c5d5be583 Merge pull request #11476 from Phrohdoh/ts-manifest-remove-space
Remove spurious space in TS' mod.yaml
2016-06-19 11:14:35 +01:00
Matthias Mailänder
5245df729d Migrate to Open.Nat version 2.0.16
Move the dependency from all libraries to game engine only.
Initialize after the renderer setup to ensure a visible window.
2016-06-19 08:41:14 +02:00
Matthias Mailänder
b70fdd7edc Correct the comment as not all ticking traits are synced. 2016-06-19 08:19:48 +02:00
Taryn Hill
7da8a018e2 Remove spurious space in TS' mod.yaml 2016-06-18 22:19:54 -05:00
reaperrr
38295341a8 Merge pull request #11445 from abcdefg30/emp-support-power
Emp support power take 2
2016-06-18 21:14:01 +02:00
Matthias Mailänder
1b4d7508ef Merge pull request #11475 from obrakmann/fix-redalert.mix-path
Fix path to redalert.mix in ra/mod.yaml
2016-06-18 21:09:08 +02:00
Oliver Brakmann
87df458c2e Merge pull request #11462 from pchote/stream-installer-copy
Extract installer data using direct stream-stream copies
2016-06-18 20:56:26 +02:00
Oliver Brakmann
bf1db4b40c Fix path to redalert.mix in ra/mod.yaml 2016-06-18 20:52:47 +02:00
Oliver Brakmann
64af0f26e9 Merge pull request #11471 from Biofreak1987/fix-smudges
Fix smudges in nod07-nod08 missions
2016-06-18 17:55:31 +02:00
Paul Chote
9edf4be229 Disable hide map crate if explored map is enabled. 2016-06-18 14:18:05 +01:00
Matthias Mailänder
b8415907e4 Merge pull request #11469 from pchote/fix-initial-map-randomization
Fix initial server map randomization.
2016-06-18 14:28:09 +02:00
abcdefg30
4d130892c0 Merge pull request #11461 from pchote/fmv-install-prompt
Prompt FMV installation when trying to play a missing video.
2016-06-18 14:15:10 +02:00
Paul Chote
cf23c85834 Fix Mobile.IsMovingInMyDirection check.
self.Location returns mobile.ToCell, so the old
code would always return a dot product of 0.
2016-06-18 13:07:59 +01:00
Biofreak1987
eaa926887b Fix smudges in nod07-nod08 missions 2016-06-18 14:06:02 +02:00
Paul Chote
e70590fd94 Merge pull request #11460 from reaperrr/fix-e1-damage
Fix damage of RA/TD minigunners and RA Jeep vs. Heavy armor
2016-06-18 12:33:26 +01:00
Paul Chote
5a1766ab5d Merge pull request #11467 from Mailaender/asset-installer-rework-minor-fixes
Fixed some minor issues in the new mod content extraction.
2016-06-18 12:30:55 +01:00
Paul Chote
43b694514d Merge pull request #11347 from abcdefg30/luaSam
Fix the bogus getAirstrikeTarget methods of the nod08 missions
2016-06-18 12:11:08 +01:00
Paul Chote
8a6bc1f6f1 Merge pull request #11308 from reaperrr/fix-11304-IsMoving
Fix IsMoving returning false when activity is a MovePart-derivative
2016-06-18 11:32:51 +01:00
abcdefg30
f619cb774d Merge pull request #11468 from GraionDilach/expose-parachutableinfo
Expose ParachutableInfo.
2016-06-18 12:27:42 +02:00
Paul Chote
55cd2ca8f5 Move initial map suitability calculation to MapCache.
This was previously trying to use values that had
not yet been initialised, which meant that *all*
maps were treated as unsuitable.  This would cause
the mod to always fall back to the first installed
map.
2016-06-18 11:04:37 +01:00
Zimmermann Gyula
58a0e381a5 Expose ParachutableInfo. 2016-06-18 11:37:57 +02:00
Matthias Mailänder
790171ed87 Fix the MIX file ending. 2016-06-18 11:05:29 +02:00
Matthias Mailänder
85bd98fadc Don't forget to mount scores-counterstrike.mix 2016-06-18 10:59:39 +02:00
Oliver Brakmann
ebf3222e06 Merge pull request #11464 from Phrohdoh/miniyaml-dont-strip-empty-lines
Do not remove empty entries in MiniYaml.FromString
2016-06-18 10:19:32 +02:00
Paul Chote
6463b31c99 Add a minimum size threshold for showing progress. 2016-06-17 19:26:13 +01:00
Paul Chote
f1758e9559 Stream installer copy and raw extraction. 2016-06-17 18:53:59 +01:00
Taryn Hill
ee50276c7a Add a new MiniYaml test regarding line numbers 2016-06-17 11:20:43 -05:00
Taryn Hill
ec40623052 Do not remove empty entries in MiniYaml.FromString 2016-06-17 10:38:06 -05:00
Paul Chote
63782aad2e Stream MSCab extraction output. 2016-06-16 21:20:42 +01:00
Paul Chote
a9a5b9bc71 Change Blast.Decompress to use Stream I/O. 2016-06-16 21:20:27 +01:00
reaperrr
2f1a6e8807 Add maximum and minimum range vs. target checks
This adresses the issue that actors would ignore the validity of weapons when deciding the attack distance versus a target. This could result in actors staying out of range of a weapon valid versus target if they carried a weapon with higher range but invalid versus target.
2016-06-16 20:39:45 +02:00
Oliver Brakmann
16a18e8de1 Merge pull request #11458 from reaperrr/fix-11457
Fix conflict in ModContentLogic
2016-06-16 19:37:11 +02:00
Paul Chote
bb88507f87 Add an "Install videos" prompt to the mission browser. 2016-06-16 18:32:55 +01:00
Paul Chote
3ac42e1643 Generalise and combine cancel/confirm prompts. 2016-06-16 18:28:02 +01:00
reaperrr
8fb94e3175 Increase RA Jeep MG efficiency vs. heavy armor to 15%
This effectively increases damage per shot vs. heavy armor from 1 to 2, and from 0 to 1 if the target has increased veterancy.
2016-06-16 16:55:21 +02:00
reaperrr
38da537136 Increase RA Minigunner MG efficiency vs. heavy armor to 15%
This effectively increases damage per shot vs. heavy armor from 1 to 2, and from 0 to 1 if the target has increased veterancy.
2016-06-16 16:55:19 +02:00
reaperrr
9d6f41ced8 Increase TD Minigunner MG efficiency vs. heavy armor to 15%
This effectively increases damage per shot vs. heavy armor from 1 to 2, and from 0 to 1 if the target has increased veterancy.
2016-06-16 16:55:18 +02:00
reaperrr
3c2a553f63 Fix conflict in ModContentLogic
The variable would otherwise conflict with the declaration at line 24.
2016-06-16 15:15:28 +02:00
Oliver Brakmann
bc03c199f5 Merge pull request #11375 from pchote/asset-installer-rework
New mod content installer
2016-06-15 22:53:42 +02:00
Oliver Brakmann
8e3415e70e Merge pull request #11436 from Mailaender/nsis-251
Updated NSIS to version 2.51
2016-06-15 22:24:10 +02:00
Paul Chote
b16a5110f4 Use ActorPreviews for WithCargo. 2016-06-15 20:36:25 +01:00
teees
7916a0a55f Copy walker animation frame to generated previews. 2016-06-15 20:36:25 +01:00
Paul Chote
eb5b50185c Add IActorPreviewInitModifier interface. 2016-06-15 20:36:25 +01:00
Paul Chote
970caf38c6 Support dynamic initial turret facings. 2016-06-15 20:36:24 +01:00
teees
4fa3ecfafb Add DynamicFacingInit. 2016-06-15 20:36:23 +01:00
teees
8724ed29bc Support dynamic offsets in ActorPreviews. 2016-06-15 20:36:08 +01:00
teees
b7bf7b6ec0 Move mod-level ActorInits out of the engine. 2016-06-15 20:35:22 +01:00
Paul Chote
4c5429200e Don’t double-notify passenger addition. 2016-06-15 20:35:22 +01:00
Paul Chote
8f412e255d Formatting fixes. 2016-06-14 20:18:57 +01:00
Paul Chote
3585d8afd4 Remove legacy installation logic. 2016-06-14 20:18:57 +01:00
Paul Chote
0b97a81616 Remove legacy music installer. 2016-06-14 20:18:56 +01:00
Paul Chote
27699ce3d7 Add new content installer metadata to TS. 2016-06-14 20:18:56 +01:00
Paul Chote
d2d15f6980 Add new content installer metadata to RA. 2016-06-14 20:18:56 +01:00
Paul Chote
6f4d168d9e Add new content installer metadata to D2k. 2016-06-14 20:18:56 +01:00
abcdefg30
b898e810bb Use INotifyCreated instead of INotifyAddedToWorld in AttackOrderPower 2016-06-14 20:18:51 +02:00
abcdefg30
1ea0607548 Support faction specific speech sounds 2016-06-14 20:18:50 +02:00
abcdefg30
c2c07d2451 Add Requires<AttackBaseInfo> to AttackOrderPowerInfo 2016-06-14 20:18:49 +02:00
abcdefg30
de14264ead Use the new INotifyBurstComplete interface instead of INotifyAttack 2016-06-14 20:18:48 +02:00
teees
ea4f33123e Use AttackOrderPower for EMP support power 2016-06-14 20:18:47 +02:00
teees
86eabeea3f Add AttackOrderPower as Supportpower 2016-06-14 20:18:44 +02:00
Paul Chote
009bdf98e6 Add new content installer metadata to TD. 2016-06-14 18:27:24 +01:00
Paul Chote
ff147f39b9 Add new content installer framework. 2016-06-14 18:27:24 +01:00
Paul Chote
054b3a43a4 Add a lightweight MSCab parser. 2016-06-14 18:27:24 +01:00
Paul Chote
bd3096f21b Add command to dump Mix contents. 2016-06-14 18:15:03 +01:00
Paul Chote
92ea404b0b Add command to dump InstallShield contents. 2016-06-14 18:15:03 +01:00
Paul Chote
67d6de91e3 Allow custom BorderWidths on ScrollPanelWidget. 2016-06-14 18:15:02 +01:00
Paul Chote
90468974ce Add tooltip support to ImageWidget. 2016-06-14 18:15:02 +01:00
Paul Chote
88768031a5 Add BecameVisible and BecameHidden methods to ChromeLogic. 2016-06-14 18:15:02 +01:00
Curtis Shmyr
f05c537491 Merge pull request #11447 from obrakmann/fix11446_fix-disabled-aa-tracking-targets
Fix disabled AA gun continuing to track targets
2016-06-13 18:08:51 -06:00
Oliver Brakmann
79fa3f731e Merge pull request #11435 from reaperrr/remove-rotoroverlay
Remove WithSpriteRotorOverlay
2016-06-13 21:59:32 +02:00
Matthias Mailänder
34c6aa79ab Merge pull request #11450 from cjshmyr/serverlaunch
Make launch-dedicated scripts consistent between platforms
2016-06-13 20:31:29 +02:00
Matthias Mailänder
fa864f55bf Move IonCannon and NukeLaunch into Projectiles folders. 2016-06-13 14:35:32 +02:00
Matthias Mailänder
71743b3b4a Only sync projectiles and future synced effects. 2016-06-13 14:35:28 +02:00
Curtis Shmyr
348d49cd5b Merge pull request #11404 from obrakmann/fix11246_getexternalip-nres
Fix NREs in LobbyUtils.GetExternalIP
2016-06-12 13:52:18 -06:00
Curtis Shmyr
b85f1e9555 Make launch-dedicated scripts consistent between platforms 2016-06-12 13:10:14 -06:00
Oliver Brakmann
3edc4da15c Fix disabled AA gun continuing to track targets 2016-06-12 18:01:04 +02:00
abcdefg30
d97d02b97f Merge pull request #11407 from reaperrr/ts-infantry-tweaks
Various TS infantry fixes
2016-06-12 14:42:12 +02:00
reaperrr
46229a50b4 Add explosion sound to TS explosion inf death 2016-06-12 14:25:34 +02:00
reaperrr
4c69fecad5 Make TS inf death sequences descriptive 2016-06-12 14:25:33 +02:00
reaperrr
ce73faaa1f Change WithDeathAnimation to look up string rather than integers
For DeathType sequence mapping.
2016-06-12 14:25:31 +02:00
reaperrr
873e2bfce4 Fix Tiberium and Vein DamageTypes 2016-06-12 14:25:30 +02:00
reaperrr
b84e27ef98 Remove TS Headshot DeathType
Also fixed a couple of mistakes compared to the original (some weapons still applied the wrong death type).
2016-06-12 14:25:28 +02:00
reaperrr
0947e7bdd6 Introduce ExplosionOnDamageTransition
And use it for TS cyborgs.
2016-06-12 14:25:26 +02:00
reaperrr
ff8af828a3 Fix Cyborgs to stay slow after losing their legs
Even if regaining health.
2016-06-12 14:25:25 +02:00
reaperrr
e59a491c1b Allow UpgradeOnDamage to grant permanent upgrades
Needed to properly implement things like permanently crippled weapons or limbs.
2016-06-12 14:25:23 +02:00
reaperrr
9def6b0f70 Merge pull request #11211 from Mailaender/debugcustomterrain
Added a CustomTerrainDebugOverlay
2016-06-12 11:53:47 +02:00
Matthias Mailänder
87b829e767 Merge pull request #11434 from GraionDilach/withvoxelwater-to-upgradeonterrain
Replace WithVoxelWaterBody with UpgradeOnTerrain.
2016-06-12 11:10:38 +02:00
Matthias Mailänder
c239b2f9be Merge pull request #9334 from Mailaender/editor-categories
Add support for EditorTemplateOrder auto-generation
2016-06-11 19:59:28 +02:00
Matthias Mailänder
c403345fed Update NSIS to version 2.51
Use Chocolatey to install since we don't require custom plugins.
2016-06-11 19:44:16 +02:00
Matthias Mailänder
f771ead7a9 Remove unused NsProcess.zip 2016-06-11 19:35:52 +02:00
Matthias Mailänder
cce10fed6b Merge pull request #11368 from Biofreak1987/nod07c
Add nod07c
2016-06-11 19:17:15 +02:00
Matthias Mailänder
e9f3d26047 Add a tileset metadata header auto-generation. 2016-06-11 19:05:03 +02:00
Matthias Mailänder
ccd4c99f8f Merge pull request #11367 from reaperrr/ts-misc-polish
Fixed various offsets in TS
2016-06-11 19:01:23 +02:00
Zimmermann Gyula
a08f325321 Deprecate WithVoxelWaterBody. 2016-06-11 18:01:39 +02:00
Zimmermann Gyula
f069326143 Use UpgradeOnTerrain in the TS APC setup. 2016-06-11 18:01:38 +02:00
Matthias Mailänder
f772ff5034 Merge pull request #11397 from reaperrr/add-moebius
Add Moebius, Chan and Delphi to TD
2016-06-11 17:59:19 +02:00
Matthias Mailänder
9332e16003 Merge pull request #11424 from GraionDilach/center-primarybuilding
Polish the TS PrimaryBuilding decoration.
2016-06-11 17:54:22 +02:00
Matthias Mailänder
4253b2d866 Merge pull request #11410 from abcdefg30/voxelNull
Fix possible NREs in RenderAsync in VoxelRenderer.cs
2016-06-11 17:52:20 +02:00
Paul Chote
d112590a82 Merge pull request #11421 from Mailaender/appveyor-pandoc-fix
Fixed the AppVeyor build
2016-06-11 16:47:18 +01:00
reaperrr
1adf887c75 Remove WithSpriteRotorOverlay
This is now redundant as WithIdleOverlay + upgrades can be used to completely replicate its functionality.
2016-06-11 17:43:10 +02:00
reaperrr
a6f6080df2 Replace WithSpriteRotorOverlay with WithIdleOverlay in OpenRA mods
In preparation of removing the now-redundant WithSpriteRotorOverlay trait.
2016-06-11 17:43:08 +02:00
Matthias Mailänder
5002cbc858 Pandoc is now installed into a system path. 2016-06-11 17:39:33 +02:00
reaperrr
b1e331e7ec Merge pull request #11364 from pchote/lobby-trait-options
Unhardcode the lobby options backend.
2016-06-11 13:40:09 +02:00
reaperrr
c516aec7a3 Merge pull request #11422 from GraionDilach/expose-teslazap-duration
Expose TeslaZap duration to yaml.
2016-06-11 13:10:12 +02:00
reaperrr
b90fc43c0d Merge pull request #11423 from GraionDilach/infiltrateforcash-maximum
Add a maximum limit to InfiltrateForCash.
2016-06-11 13:04:07 +02:00
reaperrr
239f51e8b2 Merge pull request #11406 from Mailaender/upgrademanager-exception
Added an error message when setting up upgrades without UpgradeManager
2016-06-11 12:59:59 +02:00
Zimmermann Gyula
736d58bd9a Add a maximum limit to InfiltrateForCash. 2016-06-10 18:32:49 +02:00
Zimmermann Gyula
6ef45d8f5c Change the TS Primary notif's palette to the AllowModifiers: false variant. 2016-06-10 16:24:55 +02:00
Zimmermann Gyula
1269d573ab Shift TS Primary Building tag from top to center. 2016-06-10 16:17:20 +02:00
Oliver Brakmann
0c5799cd1b Merge pull request #11411 from r34ch/flak-ground
Change RA flak truck to use flak explosion animation vs ground targets
2016-06-10 15:28:43 +02:00
Zimmermann Gyula
dfdeb81c14 Expose TeslaZap duration to yaml. 2016-06-10 13:22:58 +02:00
Biofreak1987
fc9b9ae19a Add nod07c 2016-06-08 20:32:58 +02:00
abcdefg30
aa53ff2b29 Fix possible NREs in RenderAsync in VoxelRenderer.cs 2016-06-08 18:36:22 +02:00
Matthias Mailänder
89cefbea50 Allow map imports from directories other than game root. 2016-06-07 22:03:48 +02:00
Matthias Mailänder
d76a344ebe Give hard-coded special case waypoints a descriptive name. 2016-06-07 22:03:46 +02:00
Matthias Mailänder
a3af1d91cc Don't add mpspawns when importing single-player maps. 2016-06-07 22:03:04 +02:00
D'Arcy Rush
b681f64ec4 Change RA flak truck to use flak explosion animation vs ground targets 2016-06-06 21:25:55 +01:00
Matthias Mailänder
9b6e15ea78 Add a CustomTerrain debug overlay. 2016-06-06 19:25:37 +02:00
abcdefg30
ad9fac57a3 Merge pull request #11408 from r34ch/incendiary-weapons
V2s and barrels can now ignite trees
2016-06-05 21:36:08 +02:00
reaperrr
225f777eaf Make Cyborgs explode regardless of death type
Also split out death-related traits of all non-cyborg infantry to a separate inheritable default.
2016-06-05 21:24:05 +02:00
reaperrr
3455d98289 Refactored TS infantry sequences
They now make heavy use of inheritance to cut down duplication. Most infantry in TS uses the Minigunner (E1) sequences, only that some frames are empty (civ2 shoot animation, for example) or used for a different purpose (panic anims for civilians, crippled legs for cyborgs).

To make this inheritance a bit easier, the attack sequences were renamed to a generic 'attack', rather than 'shoot' or 'throw', and split off to a separate abstract default inherited only by infantry with valid attack frames.
2016-06-05 21:24:03 +02:00
D'Arcy Rush
60441765aa V2s and barrels can now ignite trees 2016-06-05 20:05:43 +01:00
reaperrr
f8421fd2f8 Remove obsolete custom electro.shp
This shp was originally used to work around a palette issue with the original file inside conquer.mix, but since then we actually made it use the correct palette, without removing this converted shp. In other words, removing this file fixes the colors of the Zapped infantry death.
2016-06-05 19:07:31 +02:00
Matthias Mailänder
3b27975b33 Also check for a missing UpgradeManager trait
as optional upgrades will otherwise be silently non-functional.
2016-06-05 17:37:36 +02:00
Matthias Mailänder
bec879cf7c Don't check modulare actor templates
as the inherited combinations of the actors are of concern.
2016-06-05 17:36:32 +02:00
Paul Chote
e70b27f857 Merge pull request #11391 from Mailaender/flameguy
Added the FLAMEGUY death animation
2016-06-05 15:20:15 +01:00
Matthias Mailänder
af56bdef94 Explode the cyborgs to avoid glitchy no leg transitions. 2016-06-05 16:02:09 +02:00
reaperrr
5f30883cf5 Merge pull request #11399 from obrakmann/resize-td-missionbrowser
Resize TD mission browser
2016-06-05 15:57:12 +02:00
Oliver Brakmann
c0dd7c3182 Fix NREs in LobbyUtils.GetExternalIP 2016-06-05 12:55:00 +02:00
Oliver Brakmann
1168e4b3c4 Add map numbers to TD mission titles
Also made capitalization in titles consistent
2016-06-05 11:55:51 +02:00
Matthias Mailänder
6cc7a21629 Add FLAMEGUY. 2016-06-05 00:35:42 +02:00
Oliver Brakmann
65a5bd4e89 Resize the Tiberian Dawn mission browser dialog 2016-06-05 00:13:46 +02:00
reaperrr
9f8261514a Merge pull request #11090 from Mailaender/gdi07
Added Tiberian Dawn mission GDI 07
2016-06-04 22:59:09 +02:00
reaperrr
2de84253b5 Merge pull request #11398 from obrakmann/inotifyfiredsalvo
Added INotifyBurstComplete interface
2016-06-04 22:54:54 +02:00
teees
524bc3d45f Added INotifyBurstComplete trait interface to notify when a full salvo has been fired 2016-06-04 22:33:28 +02:00
reaperrr
f35338e88b Fix some style issues in Mobile 2016-06-04 21:44:48 +02:00
reaperrr
adc76638e5 Add Delphi, Chan and Moebius to TD 2016-06-04 21:39:14 +02:00
reaperrr
e9428ddab5 Move TD civ attack traits to separate default
To avoid having to disable several traits for unarmed civilians.
2016-06-04 21:30:09 +02:00
reaperrr
5c23dad2e3 Fix civilian voices in TD
Only civilians 3, 4 and 5 are females.
2016-06-04 21:15:45 +02:00
reaperrr
37c0feb2e8 Clean up TD civilian sequences 2016-06-04 20:58:32 +02:00
Oliver Brakmann
910d04f53d Merge pull request #11395 from pchote/fix-missing-filenames
Set yaml filename when loading from FileSystem.
2016-06-04 18:23:55 +02:00
Oliver Brakmann
8de91be069 Merge pull request #11380 from Mailaender/upgrade-on-terrain
Added UpgradeOnTerrain
2016-06-04 18:16:55 +02:00
Matthias Mailänder
3dc472bb06 Add UpgradeOnTerrain. 2016-06-04 17:42:58 +02:00
reaperrr
099c44f6f9 Remove ActorExtensionsForMove
And use IMove.IsMoving instead.
2016-06-04 16:34:47 +02:00
Paul Chote
b4d1517d0d Set yaml filename when loading from FileSystem. 2016-06-04 15:23:44 +01:00
reaperrr
d94d06d87b Merge pull request #11370 from pchote/fix-game-start-events
Fix shellmap UI disappearing prematurely when starting a mission or replay.
2016-06-04 15:41:35 +02:00
Oliver Brakmann
916f2ea2ea Merge pull request #11382 from reaperrr/projectile-streamlining
Moved projectiles to their own namespace and streamlined property names
2016-06-04 15:00:08 +02:00
Oliver Brakmann
fa3264affc Merge pull request #11381 from reaperrr/cleanup-upgraderules
Cleaned up upgrade rules
2016-06-04 14:43:15 +02:00
reaperrr
3adb0dc4cd Merge pull request #11377 from Mailaender/ra-burning-trees
Added burning trees to the Red Alert mod
2016-06-04 14:09:11 +02:00
reaperrr
8fc59114da Merge pull request #11337 from r34ch/ra-air-balance
[RA] Buff mig and longbow AG weapons
2016-06-04 13:53:40 +02:00
reaperrr
3f19e7c9de Merge pull request #11374 from obrakmann/fix-koth-capture-notification
Fix calling OnOwnerChange with wrong player in ProximityCapturable
2016-06-04 13:47:51 +02:00
reaperrr
e423f965cf Projectile property names upgrade rules 2016-06-04 12:59:05 +02:00
Paul Chote
bb43d3aec6 Merge pull request #11390 from OmegaBolt/d2k-lynchpass
Add Dune 2000 map Lynch Pass (2 player)
2016-06-04 11:31:53 +01:00
Paul Chote
6d17a7c9a1 Merge pull request #11296 from reaperrr/fix-ai-aggro
Removed dead AI code
2016-06-04 10:56:13 +01:00
Paul Chote
24f166595f Convert lobby dropdowns to new options backend. 2016-06-04 10:06:18 +01:00
Paul Chote
eb884ca76f Convert lobby checkboxes to new options backend. 2016-06-04 10:03:06 +01:00
Paul Chote
3e92c1944a Add plumbing for trait-defined lobby options. 2016-06-04 10:03:06 +01:00
Paul Chote
d27d265bdd Add Id field to ProvidesTechPrerequisite. 2016-06-04 10:03:05 +01:00
OmegaBolt
b698e89c1e Add Dune 2000 map Lynch Pass (2)
updated lynch pass
2016-06-03 19:05:21 +01:00
reaperrr
adc6095f9c Remove the rest of the unused AI Aggro left-overs 2016-06-01 22:48:50 +02:00
reaperrr
f1b8cf117a Remove dead code from HackyAI
Has been unused for three years...
2016-06-01 22:48:50 +02:00
Matthias Mailänder
5154e8b7ad Adjust the rallypoints to avoid overlaps when not giving orders. 2016-05-31 21:11:02 +02:00
Matthias Mailänder
e0e13f6a6a Add GDI mission 7: Finish The Nod Base. 2016-05-31 20:58:04 +02:00
reaperrr
1db96262f3 Make TeslaZap classes public 2016-05-31 15:05:38 +02:00
reaperrr
2e94a23d9e Make LaserZap classes public 2016-05-31 15:05:36 +02:00
reaperrr
af8e81a99d Add random Sequences support to GravityBomb 2016-05-31 15:05:35 +02:00
reaperrr
a320ca89a6 Rename GravityBomb Velocity to Speed
Mostly to make switching between projectiles a little easier for modders, and to potentially save some upgrade rule overhead if sprite projectiles are refactored to share a common code base.
2016-05-31 15:05:33 +02:00
reaperrr
386b142913 Add random sequences support to Missile 2016-05-31 15:05:30 +02:00
reaperrr
3d2855c3b9 Missile description fixes 2016-05-31 15:05:28 +02:00
reaperrr
170fdc89e3 Rename Bullet Trail to TrailImage 2016-05-31 15:05:26 +02:00
reaperrr
df35d60877 Change RangeLimit upgrade rule engine version 2016-05-31 13:51:23 +02:00
reaperrr
b7644df40a Remove upgrade rules older than release 20160508
Modders will have to use release 20160508 to apply upgrade rules written
between release 20151224 and 20160508.
2016-05-31 13:48:59 +02:00
Oliver Brakmann
038a10b676 Merge pull request #11379 from r34ch/fake-sd
[RA] Add the fake SD to France
2016-05-30 22:14:27 +02:00
Matthias Mailänder
e8ee2e2813 Merge pull request #11372 from r34ch/ra-goldmine
[RA] Add operation-goldmine.oramap
2016-05-30 20:01:10 +02:00
Matthias Mailänder
fa788805f9 Merge pull request #11376 from RoosterDragon/selection-perf
Only check for and render selection bars for actors on screen
2016-05-30 19:55:11 +02:00
Matthias Mailänder
1a2851bdaf Merge pull request #11316 from obrakmann/mp-allies02
Add Scott's Allies02 multiplayer mission as "Evacuation"
2016-05-30 19:49:07 +02:00
D'Arcy Rush
b3b355dd6f Add fake service depot. 2016-05-30 15:44:14 +01:00
D'Arcy Rush
fdf5a5293f Reorder fake structures UI layout to match their real counterparts. 2016-05-30 15:27:48 +01:00
D'Arcy Rush
75e75ca7c1 Buff Longbow AA weapon range to match AG range 2016-05-30 10:12:05 +01:00
D'Arcy Rush
d01e58bfd3 Buff mig and longbow AG weapons 2016-05-30 10:12:05 +01:00
D'Arcy Rush
d63bf8f053 Add operation-goldmine.oramap 2016-05-29 23:06:43 +01:00
Matthias Mailänder
b262676b08 Add a missing DESERT cactus to Red Alert. 2016-05-29 23:26:59 +02:00
Matthias Mailänder
a85a8f09c7 Add burning trees to Red Alert. 2016-05-29 23:26:56 +02:00
RoosterDragon
a4949ff1d5 Only check for and render selection bars for actors on screen.
This avoids expensive FogObscures checks and saves drawing selections bars for actors that are offscreen anyway.
2016-05-29 20:57:45 +01:00
Oliver Brakmann
29efba58b9 Merge pull request #11285 from Mailaender/maxmind-geoip-260
Updated to Maxmind GeoIP 2.6.0 and Database reader 2.0.0
2016-05-29 20:43:52 +02:00
Oliver Brakmann
e6dcf3dee6 Fix calling OnOwnerChange with wrong player in ProximityCapturable
The actor's owner only gets changed in an end frame task queued by `Actor.ChangeOwner`. So during this frame end task, `self.Owner` still points to the old owner, whereas we want the new one, represented by `captor.Owner`.

This bug lead to the capture notification being played when *losing* a building, but not when actually capturing it.
2016-05-29 20:33:34 +02:00
Oliver Brakmann
363d47f08b Merge pull request #11194 from abcdefg30/providesTech
Fix ProvidesPrerequisite not refreshing the tech tree (on owner change)
2016-05-29 20:30:23 +02:00
reaperrr
fcec4eb4b5 Fixed InitialFacings of TS defenses to match original 2016-05-29 19:00:24 +02:00
Oliver Brakmann
97ad5268b8 Merge pull request #11241 from Mailaender/replay-flag-crash
Fixed a crash when replay is selected in the wrong mod
2016-05-29 17:55:53 +02:00
Oliver Brakmann
7681cb2df5 Merge pull request #11180 from Mailaender/burning-trees
Added burning trees to the Tiberian Dawn mod
2016-05-29 15:32:28 +02:00
Oliver Brakmann
b3dd62b891 Add Scott's Allies02 multiplayer mission as "Evacuation" 2016-05-29 15:13:09 +02:00
reaperrr
8ee019a80a Fix Nod SAM Site sequence and armament offsets
The turret sequence in particular was located too far to the left.
2016-05-28 22:16:37 +02:00
reaperrr
f29904d77a Set firing offset and enable muzzle flash on TS Titan 2016-05-28 22:16:36 +02:00
reaperrr
f419b00cc6 Fix TS stealth tank firing offsets 2016-05-28 22:16:30 +02:00
reaperrr
805ffaa480 Fix TS Temple of Nod art offset 2016-05-28 22:16:28 +02:00
reaperrr
0d3500ee2f Fix Component Tower weapon and muzzle offsets 2016-05-28 22:16:27 +02:00
Paul Chote
ec2d883e9e Move lobby event unbinding to Dispose. 2016-05-28 18:21:44 +01:00
Paul Chote
fba509b363 Use BeforeGameStart to remove replay browser UI on game start. 2016-05-28 18:16:18 +01:00
Paul Chote
485e695585 Use BeforeGameStart to remove mission browser UI on game start. 2016-05-28 18:13:09 +01:00
Oliver Brakmann
3225ab7c99 Merge pull request #11369 from pchote/fix-gate-powerdown
Remove CanPowerDown from gates.
2016-05-28 18:57:25 +02:00
Paul Chote
ddf7c2c967 Merge pull request #11328 from reaperrr/td-polish
Some TD polishing
2016-05-28 17:37:45 +01:00
Paul Chote
09e110c007 Remove CanPowerDown from gates. 2016-05-28 17:19:18 +01:00
Matthias Mailänder
d1022671c0 Define the reverse playback at sequence level. 2016-05-28 16:03:19 +02:00
Matthias Mailänder
13cf193640 Lint check for invalid building footprint definitions. 2016-05-28 16:03:19 +02:00
Matthias Mailänder
99c7989ebc Rename WithSmoke into a more generic WithDamageOverlay trait.
Rename Sequence parameter to Image to avoid confusion.
2016-05-28 16:03:13 +02:00
Matthias Mailänder
65a2e155bf Update to Maxmind GeoIP 2.6.0 and Db parser 2.0.0 2016-05-28 15:57:08 +02:00
Matthias Mailänder
2567d59af4 Let TD trees burn and carbonate on incendiary weapons. 2016-05-28 15:41:27 +02:00
Matthias Mailänder
e0b77a8517 Add configurable DamageState/Type filters to WithSmoke. 2016-05-28 15:41:27 +02:00
reaperrr
e34c8f0650 Bullet style and description fixes 2016-05-28 15:01:28 +02:00
reaperrr
fef4f3eb79 Move projectiles to their own namespace and folder
While they are (currently) technically effects, this makes the actual purpose and wiki more clear.
2016-05-28 14:42:33 +02:00
RoosterDragon
773eb25917 Merge pull request #10630 from reaperrr/UAN-custom-pos
Make UpgradeActorsNear vertical range customizable
2016-05-28 13:37:09 +01:00
abcdefg30
b08d6e0447 Merge pull request #11363 from RoosterDragon/vs
Allow VS2015 to format solution file
2016-05-27 19:26:36 +02:00
RoosterDragon
7cb353b5c5 Allow Visual Studio to format solution file. 2016-05-27 18:11:13 +01:00
reaperrr
629f17b430 Merge pull request #11294 from Mailaender/generic-demolition
Renamed C4Demolition to Demolition
2016-05-26 23:23:49 +02:00
reaperrr
2fe91cd1a2 Make vertical range of UpgradeActorsNear customizable 2016-05-26 22:47:48 +02:00
reaperrr
dca26b71f4 Add VerticalLength and VerticalLengthSquared
For possible future use.
2016-05-26 22:47:47 +02:00
reaperrr
b0e90989a6 Add plumbing for customizable vertical ProximityTrigger range
And check DistanceAboveTerrain instead of just vertical distance to upgrade
source.
This is necessary to avoid situations where an actor is technically on the right
vertical distance above/below ground, but not upgraded because it is located on a lower/higher terrain level than the upgrade source.
2016-05-26 22:47:45 +02:00
Matthias Mailänder
b6afc765b4 Merge pull request #11306 from Biofreak1987/nod09
Add nod09
2016-05-26 20:37:29 +02:00
Matthias Mailänder
d787f40388 Merge pull request #11142 from abcdefg30/captureOld
Add support for playing a "LoseNotification" to the old owner through CaptureNotification
2016-05-26 19:57:58 +02:00
Matthias Mailänder
2a27c329c5 Merge pull request #11276 from reaperrr/fix-ticktank-autotarget
Fix AutoTarget handling of multiple/upgradable Attack* traits
2016-05-26 19:44:13 +02:00
Matthias Mailänder
4d12040348 Merge pull request #11358 from reaperrr/game-to-common2
Moved some more things from Game to Mods.Common
2016-05-26 19:31:12 +02:00
Matthias Mailänder
6803de9539 Make the cursor configurable and expose it to Trait docs. 2016-05-26 19:28:38 +02:00
Matthias Mailänder
3e011a74af Rename C4Demolition to Demolition. 2016-05-26 19:27:40 +02:00
reaperrr
95795c5198 Move EditorTilesetFilter to Mods.Common 2016-05-26 11:54:48 +02:00
reaperrr
e7517e7bfa Moved DrawLineToTarget from Game to Mods.Common 2016-05-26 11:38:39 +02:00
reaperrr
54891ed4bd Moved RejectsOrders and ValidateOrder from Game to Mods.Common 2016-05-26 11:37:39 +02:00
reaperrr
bdb7c80f42 Moved FlashTarget to Mods.Common
There is nothing remaining in OpenRA.Game using this.
2016-05-26 08:16:22 +02:00
reaperrr
b254d5fa88 Merge pull request #11348 from reaperrr/clean-effects
Remove redundant Effects
2016-05-26 07:52:12 +02:00
Oliver Brakmann
1b35882821 Merge pull request #11356 from GraionDilach/parach-shadow-nullcheck
Do not try to tick undefined parachute shadows.
2016-05-25 20:40:01 +02:00
Zimmermann Gyula
785f883d41 Do not try to tick undefined parachute shadows. 2016-05-25 12:50:24 +02:00
Oliver Brakmann
86620888fd Merge pull request #11183 from Mailaender/query-device-nre
Fixed a NullReferenceException in OpenAL QueryDevices
2016-05-24 21:47:02 +02:00
Oliver Brakmann
363a15f0b5 Merge pull request #11354 from abcdefg30/mapcs
Fix a wrong string.Format index in the Map ctor
2016-05-24 21:27:08 +02:00
abcdefg30
72ce367522 Fix a wrong string.Format index in the Map ctor 2016-05-24 21:01:01 +02:00
abcdefg30
42821a31a0 Merge pull request #10613 from Mailaender/ra-gates
Added Gates to the Red Alert mod
2016-05-23 23:57:51 +02:00
reaperrr
122035c36c Remove Smoke effect and use SpriteEffect instead 2016-05-23 23:57:18 +02:00
reaperrr
555d4f4adc Remove Corpse effect and use SpriteEffect instead 2016-05-23 23:30:51 +02:00
reaperrr
51b88bfbaf Remove Explosion effect and use SpriteEffect instead 2016-05-23 23:30:49 +02:00
reaperrr
6a988fd676 Move WorldInteractionControllerWidget and SpriteEffect to Common 2016-05-23 23:30:48 +02:00
abcdefg30
6637c20c59 Fix the bogus getAirstrikeTarget methods of the nod08 missions
They always searched 6 times even after finding a target.
Now they also account for SAM sites (like in the previous missions).
2016-05-23 22:06:17 +02:00
reaperrr
f8583db0d4 Merge pull request #11342 from abcdefg30/lowShellmap
Fix the creeps actor on the Dune 2000 shellmap being in low power mode
2016-05-23 22:00:05 +02:00
reaperrr
d7b26509af Enable AutoTarget on TS Tick Tank 2016-05-23 20:28:02 +02:00
reaperrr
6089599b3f Make AutoTarget handling of AttackFollow more robust
At least in theory, it's possible for an actor to have multiple AttackFollow traits, or AttackFollow is disabled initially but enabled via upgrade later.
To avoid crashes or other issues, let's play it safe and take the same approach as with AttackBase look-ups.
2016-05-23 20:28:02 +02:00
reaperrr
2a19f66a0e Make AutoTarget able to handle multiple Attack* traits 2016-05-23 20:28:02 +02:00
reaperrr
1b6f67e9ee Improve AutoTarget code readability 2016-05-23 20:28:02 +02:00
reaperrr
d5915431dd Made AutoTarget upgradable 2016-05-23 20:28:02 +02:00
abcdefg30
031b4a81a4 Fix the creeps actor on the Dune 2000 shellmap being in low power mode 2016-05-23 01:12:40 +02:00
abcdefg30
6682a4e97e Merge pull request #11290 from Mailaender/d2k-shellmap-editor-crash
Fixed a crash when loading the Dune 2000 shellmap in the map editor
2016-05-23 01:11:34 +02:00
abcdefg30
7663567dea Merge pull request #11336 from obrakmann/fix11333-mpspawn-owners
Fix mpspawn ownership
2016-05-23 00:38:46 +02:00
Oliver Brakmann
8d3320c0e3 Add a lint check to ensure mpspawns are owned by the world owner 2016-05-22 12:55:35 +02:00
Oliver Brakmann
913f4cf7f0 Fix mpspawn actors not being owned by the world owner 2016-05-22 12:43:57 +02:00
reaperrr
ff4f467a9c Merge pull request #11330 from r34ch/grenadier-slot
Change RA grenadier UI ordering
2016-05-22 11:44:52 +02:00
D'Arcy Rush
56a3237eef Change RA grenadier UI ordering 2016-05-21 20:38:25 +01:00
Oliver Brakmann
6fe126d09d Merge pull request #11329 from Biofreak1987/gdi06-polish
Polish gdi06 commando behaviour
2016-05-21 18:52:36 +02:00
Biofreak1987
2d91ff93d4 Polish gdi06 commando behaviour 2016-05-21 14:47:13 +02:00
Oliver Brakmann
392dd7db3f Merge pull request #11112 from reaperrr/improve-LeavesTrails
Add facings support and other controls to LeavesTrails
2016-05-21 12:36:13 +02:00
Biofreak1987
3f8f688918 Add nod09 2016-05-21 01:16:36 +02:00
reaperrr
dbd7606667 Move SpriteEffect facing parameter to the end
To avoid potential incompatibilities with downstream projects.
2016-05-20 23:24:33 +02:00
Matthias Mailänder
f22bc68d94 Count the string length in the system codepage. 2016-05-20 21:22:12 +02:00
Matthias Mailänder
1df5e556c6 Auto-detect UTF8 instead of assuming ANSI for device names. 2016-05-20 21:22:10 +02:00
Matthias Mailänder
e47383a4fa Fix NREs in QueryDevices by bailing out early. 2016-05-20 21:21:52 +02:00
Oliver Brakmann
149271f71e Merge pull request #11291 from reaperrr/fix-10111-para
Some WithParachute fixes
2016-05-20 20:18:53 +02:00
Oliver Brakmann
ab3de743a1 Merge pull request #11327 from reaperrr/ts-cleanup
Make TS not load unnecessary mix files
2016-05-20 20:10:34 +02:00
reaperrr
60557e59f1 Merge pull request #11284 from Mailaender/net-4-eol
Updated to .NET version 4.5
2016-05-20 15:30:57 +02:00
reaperrr
f3d869c939 Polished TD shellmap
- Nod now uses the singleplayer color scheme. While not directly visible, you can at least guess now that units use the correct color.
- Fixed position of a wall piece (was placed on a bib) and both tiberium trees (by moving them 1 cell down)
- Made all Nod Gun turrets face in a plausible direction
2016-05-20 15:11:20 +02:00
reaperrr
9a5db590be Fixed TD infantry death animations
For death by bullet and death by dinosaur.
This is how it was in the original.
2016-05-20 14:47:28 +02:00
reaperrr
840e5e7a4c Tweaked GDI01 Gunboat and turret damage
Made clear that the BoatMissile warhead is an additional bonus rather than an override, reduced the bonus damage and increased gun turret reload delay.
Overall, this makes the Gunboat and turrets behave a bit more like in the original.
2016-05-20 14:29:01 +02:00
reaperrr
c9f339b724 Change TD Gunboat missile to behave more like in the original
Much more inaccurate, slightly higher BurstDelay and lower horizontal turn rate.
2016-05-20 14:08:26 +02:00
reaperrr
9915f34c99 Reduce turret TurnSpeed on TD Gunboat
So it looks a bit more like in the original.
2016-05-20 14:06:28 +02:00
reaperrr
3cc9706ac4 Set high TurnSpeed on TD Gunboat
So it doesn't get stuck at map edge for over a second.
2016-05-20 14:05:52 +02:00
reaperrr
2c07dfbbb7 Make TS not load unnecessary mix files
gmenu.mix only contains the menu orverride from Patch 2.0/Firestorm, maps0*.mix only contain singleplayer maps, multi.mix only contains multiplayer maps, patch.mix only contains ini files.
None of these are used or even usable directly by OpenRA as-is, so it's pointless to load them.
2016-05-20 13:50:40 +02:00
Oliver Brakmann
ebba7fdaf1 Add methods to retrieve player stats to Lua API 2016-05-19 23:08:01 +02:00
Oliver Brakmann
09d1dacd95 Add a Lua API method to randomize a collection 2016-05-19 23:08:01 +02:00
Oliver Brakmann
735975057d Add another way to call air strikes/paradrops to the Lua API 2016-05-19 23:08:01 +02:00
Oliver Brakmann
d743c23482 Add missing Requires to MissionObjectiveProperties 2016-05-19 23:08:01 +02:00
Oliver Brakmann
5d2445a234 Fix winstate logic for cooperative games 2016-05-19 23:08:01 +02:00
Oliver Brakmann
0192919501 Fix crash in Beacon ctor when it runs during instead of between ticks
Causes an exception like below, for example when calling the Lua API's Beacon.New() method.

``Exception of type `System.InvalidOperationException`: Collection was modified; enumeration operation may not execute.``
2016-05-19 23:08:01 +02:00
Matthias Mailänder
5029ac705f Update to .NET 4.5 2016-05-19 21:24:21 +02:00
Oliver Brakmann
b4664d1ec5 Merge pull request #11192 from reaperrr/fix-effectwh
Fix direct hit check in CreateEffectWarhead
2016-05-18 21:52:30 +02:00
reaperrr
6e7bce9571 Merge pull request #11275 from obrakmann/fix11256-deb-build-reqs
Add libmono-i18n4.0-all to the list of Debian package dependencies
2016-05-18 18:38:45 +02:00
reaperrr
d7650e6d51 Merge pull request #11293 from reaperrr/d2k-polish1
Some D2k polishing
2016-05-18 18:06:28 +02:00
Oliver Brakmann
8319dfa70e Merge pull request #11298 from Mykogen/fix-queue-batching
Shift+hotkey queues 5 units for production. Fixes #5544
2016-05-16 21:35:53 +02:00
reaperrr
644e3cf95d Merge pull request #11303 from Biofreak1987/ship-tooltip
Add generic tooltip name for td ships
2016-05-16 21:27:36 +02:00
reaperrr
64c059fd82 Merge pull request #11118 from viszkoktamas/bleed
Add hotkeys for moving viewport to map edge
2016-05-16 21:21:19 +02:00
Tamás Viszkok
522e937597 Hotkeys for move viewport to map edge 2016-05-16 20:26:59 +02:00
reaperrr
874a9adc31 Merge pull request #11283 from Biofreak1987/nod08b
Add nod08b
2016-05-16 20:19:08 +02:00
reaperrr
9707cd9be9 Merge pull request #11299 from reaperrr/dmgstate-upgrade
Introduce trait granting upgrades at specified DamageStates
2016-05-16 20:00:53 +02:00
Oliver Brakmann
89599af5b2 Merge pull request #11292 from reaperrr/fix-v2-explosion
Fix exploding V2RL sound
2016-05-16 19:57:13 +02:00
Biofreak1987
c14fb32dae Add generic tooltip name for td ships 2016-05-16 19:39:41 +02:00
reaperrr
407a061c0a Merge pull request #11176 from pchote/lobby-trait-checkbox-prep
Query lobby checkbox state via their owning traits.
2016-05-16 19:00:35 +02:00
reaperrr
9cca92942e Merge pull request #11130 from viszkoktamas/viewportBookmark
Add hotkeys for save areas of the map
2016-05-16 18:37:56 +02:00
reaperrr
af30f6b3ad Merge pull request #11302 from Biofreak1987/ship-explosion
Add ship explosions to td mod
2016-05-16 18:32:04 +02:00
Biofreak1987
1477da7ff0 Add ship explosions to td mod 2016-05-16 16:26:41 +02:00
reaperrr
b327f6a3b2 Make vehicles and cyborgs in TS slow down when damaged
By combining the new UpgradeOnDamage trait with SpeedModifiers.
2016-05-16 14:18:16 +02:00
Viszkok Tamás
a89376daf0 Added hotkeys for save areas of the map 2016-05-16 14:01:49 +02:00
Biofreak1987
9ed0e6584f Add nod08b 2016-05-16 08:57:19 +02:00
reaperrr
d03eaaaac0 Introduce UpgradeOnDamage trait 2016-05-16 02:41:12 +02:00
reaperrr
dcd057d032 Make DamageStates flags 2016-05-16 02:41:10 +02:00
Mykogen
2bbbdbeedb Shift+hotkey queues 5 units for production. Fixes #5544 2016-05-16 00:02:00 +02:00
reaperrr
2444491fc6 Fix exploding V2RL sound
You could here the 'Report' of the V2 weapon when the launcher exploded. Added V2-exclusive explosion weapon to fix that.
2016-05-15 20:58:02 +02:00
Matthias Mailänder
b5eb537f2d Remove trailing tabs. 2016-05-15 19:48:07 +02:00
Matthias Mailänder
4209d52c4c Define the concrete slabs as terrain rather than actors. 2016-05-15 16:40:15 +02:00
reaperrr
cee5ec4754 Give large D2k missiles a ballistic flight curve 2016-05-15 16:38:34 +02:00
reaperrr
2c7fe90532 Use 'true' instead of 'yes' on all D2k booleans 2016-05-15 16:38:02 +02:00
reaperrr
974eb5aa86 Fix facings of D2k grenadier stand sequence 2016-05-15 16:34:58 +02:00
Matthias Mailänder
fc523ae953 Print actor information instead of the function name. 2016-05-15 16:21:32 +02:00
Matthias Mailänder
3c7871b352 Add actor name to ease debugging of invalid bounds. 2016-05-15 16:21:32 +02:00
reaperrr
41a53d8ed0 Merge pull request #11243 from Mailaender/elegant-lasers
Polished the Tiberian Sun laser weaponry
2016-05-15 16:17:24 +02:00
reaperrr
51194059b3 Fix WithParachute shadow position on elevated terrain 2016-05-15 16:05:15 +02:00
reaperrr
c2f537a43d Move parachute shadow anim ticking from Render to Tick 2016-05-15 16:04:01 +02:00
reaperrr
a670ea4bad Remove ITraitInfo from WithParachuteInfo
ITraitInfo is already implemented by UpgradableTraitInfo, so this was redundant.
2016-05-15 16:00:51 +02:00
Matthias Mailänder
53c1222ce2 Avoid the 0c prefix for laser beam width. 2016-05-15 15:56:50 +02:00
Matthias Mailänder
8fcb31407d Add gates to the Red Alert mod. 2016-05-15 15:52:11 +02:00
Matthias Mailänder
0d500f4bb2 Merge pull request #11270 from reaperrr/fix-td-fieldcrash
Make FrozenUnderFog footprint include '_'
2016-05-15 15:40:08 +02:00
reaperrr
95a927a181 Merge pull request #11272 from r34ch/cold-front-fix
Cold front fix
2016-05-15 15:17:16 +02:00
reaperrr
e59c7a8b1f Make FrozenUnderFog count passable footprint cells
To avoid crashing on actors with only passable footprint cells.
2016-05-15 14:56:08 +02:00
Matthias Mailänder
b4cbb52d27 Merge pull request #11206 from evgeniysergeev/spatial
SpatiallyPartitioned fixup for d2
2016-05-15 14:46:53 +02:00
reaperrr
c201558023 Merge pull request #10714 from Mailaender/import-rules
Added basic RA2/TS mod rules importers
2016-05-15 14:46:24 +02:00
Matthias Mailänder
060eca8c50 Merge pull request #11288 from reaperrr/fix-reloading-sound
Play reload sounds only to owner
2016-05-15 14:20:41 +02:00
reaperrr
794db5a2f1 Play reload sounds only to owner 2016-05-15 13:53:21 +02:00
Matthias Mailänder
b9ed065328 add captureable, infantry emitting on sell and transformation 2016-05-15 11:46:46 +02:00
Matthias Mailänder
6b1dc60d2e invisible, 0x0 foundation and sprite image auto-detection 2016-05-15 11:46:46 +02:00
Matthias Mailänder
26c0f1ebc0 terrain palette auto detection 2016-05-15 11:46:46 +02:00
Matthias Mailänder
ee482fee29 very basic building and tree support 2016-05-15 11:46:46 +02:00
Matthias Mailänder
0fc73cbe3c Merge pull request #11280 from Biofreak1987/nod08a
Add nod08a
2016-05-15 09:35:18 +02:00
Biofreak1987
e9195d3a36 Add nod08a 2016-05-15 09:04:17 +02:00
abcdefg30
2865c833eb Merge pull request #11281 from Biofreak1987/nod07fix
Replace nod07 music and fix codestyle
2016-05-14 20:51:09 +02:00
Biofreak1987
53d08e9376 Replace nod07 music and fix codestyle 2016-05-14 20:08:58 +02:00
Paul Chote
35af6b5b91 Apply minor style fixes to DeveloperMode. 2016-05-14 18:54:44 +01:00
Paul Chote
0a7c80ef6e Prepare short game code for trait-defined lobby options. 2016-05-14 18:54:44 +01:00
Paul Chote
e3bc73a168 Prepare ally build adjacency code for trait-defined lobby options. 2016-05-14 18:54:44 +01:00
Paul Chote
c412e4e86c Prepare MapCreeps code for trait-defined lobby options. 2016-05-14 18:54:44 +01:00
Paul Chote
7e49ae7eb0 Prepare DeveloperMode code for trait-defined lobby options. 2016-05-14 18:54:44 +01:00
Paul Chote
1eba0bea13 Prepare Shroud code for trait-defined lobby options. 2016-05-14 18:54:44 +01:00
Paul Chote
a0b5b5ce66 Move initial map exploration to Shroud. 2016-05-14 18:54:44 +01:00
Paul Chote
dade84db85 Remove leftover dead fragile alliances code. 2016-05-14 18:54:44 +01:00
Oliver Brakmann
3e8309974a Merge pull request #11278 from reaperrr/gps-fixup
Hotfix for GpsPower
2016-05-14 17:14:31 +02:00
reaperrr
7e312bab0a Hotfix for GpsPower
Radar namespace was created after the last rebase of #11018.
2016-05-14 16:43:42 +02:00
reaperrr
b9c026d545 Merge pull request #11018 from Mailaender/gps-disable
Fixed GPS power not taking tech center disablement into account
2016-05-14 16:31:34 +02:00
Matthias Mailänder
61385fabd1 Merge pull request #11257 from HenrytheSlav/c4lockup
Buildings get locked by Demolishable activity before their destruction
2016-05-14 13:50:35 +02:00
D'Arcy Rush
0e5dd08c21 Remove erroneous ore cells from dual-cold-front.oramap 2016-05-14 12:07:24 +01:00
D'Arcy Rush
8ebd885145 Rename cold-front 1v1 to match ingame name 2016-05-14 12:04:07 +01:00
Oliver Brakmann
bd8d754b0c Add libmono-i18n4.0-all to the list of Debian package dependencies 2016-05-14 12:23:09 +02:00
HenrytheSlav
a9bb79c0a8 Buildings get locked by Demolishable activity nefore their destruction 2016-05-14 11:23:21 +02:00
Matthias Mailänder
531570fdb7 Merge pull request #11271 from cjshmyr/slnfix
Fix nod07b Lua script paths
2016-05-14 08:43:49 +02:00
Curtis Shmyr
1144803767 Fix nod07b Lua script paths 2016-05-13 17:56:07 -06:00
reaperrr
f31ea658ef Merge pull request #11148 from pchote/improve-scroll-input
Expose separate middle and right mouse scroll config.
2016-05-13 22:44:18 +02:00
Matthias Mailänder
54c30175e2 Merge pull request #11253 from HenrytheSlav/demotruck_air_nerf
Reduce effectiveness of demo truck against air targets
Closes #10865
2016-05-13 18:59:18 +02:00
Matthias Mailänder
67d04b26fd Merge pull request #11254 from HenrytheSlav/harv_selfheal
Add slow selfealing to the harvester (RA mod)
2016-05-13 18:56:34 +02:00
Oliver Brakmann
7abe20ac43 Merge pull request #11250 from abcdefg30/byeInitAct
Remove the last relicts of InitialActivity
2016-05-11 20:57:44 +02:00
evgeniysergeev
7e7b3f505d SpatiallyPartitioned fixup for d2
BoundsToBinRowsAndCols fixup for negative width or height

Using Math.Min and Math.Max utils instead of '?:'
2016-05-10 22:39:46 +03:00
HenrytheSlav
4c97bd1323 Add slow selfealing to the harvester (RA mod) 2016-05-10 21:17:01 +02:00
HenrytheSlav
aedd135c45 Reduce effectiveness of demo truck against air targets 2016-05-10 20:52:40 +02:00
abcdefg30
304c9b9ed1 Remove the last relicts of InitialActivity 2016-05-10 18:33:57 +02:00
abcdefg30
34a2033350 Merge pull request #11249 from cjshmyr/arty
Reduce RA Artillery range from 14 to 12 cells
2016-05-10 18:11:21 +02:00
abcdefg30
22ee4d1f39 Merge pull request #11186 from Mailaender/map-import-tileset
Made the legacy map import more robust
2016-05-10 18:03:16 +02:00
Matthias Mailänder
43eed07fae Merge pull request #11245 from reaperrr/fix-gtwr-make
Skip TD guard tower make anim frames containing yellow color
2016-05-09 20:43:47 +02:00
Matthias Mailänder
15a58378cb Merge pull request #11242 from Mailaender/ts-ai
Update the Tiberian Sun AI
2016-05-09 19:59:28 +02:00
reaperrr
9b16ac6bf1 Skip TD guard tower make frames 18 and 19
Those frames are yellow but not remapable. Skipping them is easier than fixing the art.
2016-05-08 21:03:22 +02:00
Matthias Mailänder
5d32b65a9c Decrease the width of all laser weapons. 2016-05-08 20:34:05 +02:00
Matthias Mailänder
33198f4da4 Add transparency to the sonic beam. 2016-05-08 20:33:19 +02:00
Matthias Mailänder
aea521815c Update the Tiberian Sun AI. 2016-05-08 20:19:41 +02:00
Matthias Mailänder
3b7a176aa6 Don't crash when a faction flag from another mod doesn't exist. 2016-05-08 16:02:23 +02:00
reaperrr
bd2a24af55 Merge pull request #11223 from Mailaender/missile-dead
Cleaned up logically dead Missile code.
2016-05-08 14:09:27 +02:00
abcdefg30
4fbb3334bf Merge pull request #11238 from obrakmann/fix-globalchat-nre
Fix a spurious NRE in GlobalChat
2016-05-08 14:02:12 +02:00
reaperrr
eb6157f81e Merge pull request #11197 from pchote/add-sysinfo-opt-out-prompt
Add sysinfo opt out prompt
2016-05-08 13:10:55 +02:00
Oliver Brakmann
d049413c26 Fix a spurious NRE in GlobalChat 2016-05-08 12:35:50 +02:00
Matthias Mailänder
763c097498 Merge pull request #11235 from Biofreak1987/nod07b
TD Campaign: Add nod07b - "Sick And Dying (b)
2016-05-08 12:03:39 +02:00
Biofreak1987
b14080cff4 Add nod07b 2016-05-07 17:56:25 +02:00
Paul Chote
bd7e53bec4 Merge pull request #11234 from obrakmann/fix11218-spawnactorondeath-dispose-race
Fix trait lookup of destroyed actor in SpawnActorOnDeath
2016-05-07 15:58:20 +01:00
Matthias Mailänder
5462097c42 Merge pull request #11205 from reaperrr/rangelimit-wdist
Refactored Missile.RangeLimit to be a WDist value
2016-05-07 15:10:49 +02:00
Oliver Brakmann
35dfb54459 Fix trait lookup of destroyed actor in SpawnActorOnDeath
The sequence of events leading to that crash looks like this:

1. Truk enters a building.

2. `Enter.FindAndTransitionToNextState()` is running, and since `DonateSupplies` uses `EnterBehaviour.Dispose`, `Actor.Dispose()` runs for the actor, queueing a FrameEndTask.

3. Truk is then killed:

 * `Health.InflictDamage()` first calls `SpawnActorOnDeath.Killed()`, which queues a FrameEndTask during which some trait lookups happen.

 * `Health.InflightDamage()` then calls `Actor.Dispose()` as well, queueing another FrameEndTask (which will never run, the game crashes before).

4. After the tick, the first FrameEndTask disposes of the actor. The second FrameEndTask would spawn the crate from the truk, but the trait lookups then fail and throw an exception.
2016-05-07 14:21:41 +02:00
Matthias Mailänder
834295fb22 Merge pull request #11228 from pchote/appdata-about-fix
Update appdata description using text from the website About page.
2016-05-07 13:52:37 +02:00
Matthias Mailänder
11a54896c1 Merge pull request #11094 from Biofreak1987/nod07a
TD Campaign: Add nod07a - "Sick And Dying (a)"
2016-05-07 13:47:21 +02:00
Matthias Mailänder
690a6b715e Merge pull request #11233 from abcdefg30/yellow
Add TheRaffy to AUTHORS
2016-05-07 13:30:05 +02:00
abcdefg30
c92792e8bd Add TheRaffy to AUTHORS 2016-05-07 13:01:55 +02:00
Paul Chote
1180e7e519 Merge pull request #11225 from obrakmann/fix11219_oil-derrick-tooltip-owner-row
Re-instate owner row for oil pumps and tech buildings in TD
2016-05-07 10:42:30 +01:00
Paul Chote
cf4ef11403 Merge pull request #11232 from abcdefg30/navalRepair
Fix possible instant repairs by spamming Repair activities
2016-05-07 10:30:57 +01:00
reaperrr
5505595a79 Merge pull request #11226 from abcdefg30/03bTruk
Fix the supply truck in allies03b not being targetable by tanya
2016-05-07 11:01:15 +02:00
reaperrr
f2a0332f8d Merge pull request #11231 from abcdefg30/trukPreq
Fix the prerequisite of the supply truck being displayed
2016-05-07 10:47:30 +02:00
Oliver Brakmann
4f206eb1dc Merge pull request #11227 from HenrytheSlav/upstream/utility-facing-fix
Fixes Utility import facings mirror-flip
2016-05-06 23:42:40 +02:00
Oliver Brakmann
79d5498dfc Re-instate owner row for oil pumps and tech buildings in TD 2016-05-06 22:50:16 +02:00
abcdefg30
25b1c991a2 Fix possible instant repairs by spamming Repair activities
Noticeable when spam-clicking on a naval yard/sub pen.
2016-05-06 17:51:24 +02:00
abcdefg30
94fc26f268 Fix the prerequisite of the supply truck being displayed
We don't do this for other units that only require a war factory (like the light tank or ranger) either.
2016-05-06 17:09:53 +02:00
Paul Chote
122fb62a76 Update appdata description using text from the website About page. 2016-05-05 21:56:13 +01:00
HenrytheSlav
1962ea3abc Fixes Utility import facings mirror-flip 2016-05-05 18:44:23 +02:00
abcdefg30
5a424936b1 Fix the supply truck in allies03b not being targetable by tanya 2016-05-05 16:13:32 +02:00
abcdefg30
f80449be31 Merge pull request #11215 from obrakmann/mod-campaign-rules
Extract common campaign rules for d2k and ra
2016-05-05 15:53:21 +02:00
Oliver Brakmann
3cdbb1f700 Make use of common mission rules in missions (D2K) 2016-05-05 13:02:08 +02:00
Oliver Brakmann
32b063d8e0 Extract common mission rules into a separate file (D2K) 2016-05-05 13:02:08 +02:00
Oliver Brakmann
4787bc04b3 Make use of common mission rules in missions (RA) 2016-05-05 13:02:08 +02:00
Oliver Brakmann
26571e18d3 Extract common mission rules into separate files (RA) 2016-05-05 13:02:03 +02:00
abcdefg30
089c8261ad Merge pull request #11217 from obrakmann/fix-selfheal-percentage
Fix self-healing percentage in yaml rules for all mods
2016-05-05 12:47:19 +02:00
Oliver Brakmann
987da71c1d Merge pull request #11222 from HenrytheSlav/theli_gems
Allow Chinook to land/deploy on gems
2016-05-05 12:21:34 +02:00
Matthias Mailänder
3d865d46e7 Removed logically dead code.
targetPassedBy is always true in this section
and - times - is +.
2016-05-05 10:19:38 +02:00
HenrytheSlav
b958c8302d Allow Chinook to land/deploy on gems 2016-05-04 23:06:36 +02:00
Matthias Mailänder
1bc4200128 Merge pull request #11136 from SzabKel/musicButtons
Added music controlling hotkeys. Closes #3231
2016-05-03 07:16:05 +02:00
Matthias Mailänder
891c5d9937 Merge pull request #11168 from reaperrr/hitshape-offsets
Add support for custom vertical HitShape offsets
2016-05-03 07:12:49 +02:00
Curtis Shmyr
43136e218a Reduce RA Arty range from 14 to 12 cells 2016-05-02 15:59:12 -06:00
Matthias Mailänder
b00e9cf615 Merge pull request #11216 from abcdefg30/supportBeacon
Make the circle and arrow sequences of Beacon optional
2016-05-02 22:27:12 +02:00
Oliver Brakmann
a8e6ca14ab Fix self-healing percentage in yaml rules for all mods 2016-05-02 19:05:48 +02:00
abcdefg30
c3c29ee7a2 Make the circle and arrow sequences of Beacon optional 2016-05-02 17:23:17 +02:00
reaperrr
62aabffed9 Make LeavesTrails loop through a list of offsets
Instead of the unflexible 'AlternateOffset' approach.
2016-05-01 23:01:07 +02:00
reaperrr
04d075ca9f Add control over whether trails should spawn with or without delay 2016-05-01 23:01:07 +02:00
reaperrr
866e0b3577 Add facings support, start delay and offset controls to LeavesTrails 2016-05-01 23:01:07 +02:00
reaperrr
ca7a17ea06 Add facings support to SpriteEffect 2016-05-01 23:01:07 +02:00
Matthias Mailänder
6af7fa412c Simplify tunnel top sequences. 2016-05-01 15:46:25 +02:00
reaperrr
f6907cc42f Lint check for missile RangeLimit 2016-05-01 14:27:50 +02:00
reaperrr
249e65c7d1 RangeLimit WDist refactor upgrade rules 2016-05-01 14:27:49 +02:00
Oliver Brakmann
e781bf3e0d Merge pull request #10918 from Mailaender/lint-beacon
Added documentation and lint checks to PlaceBeacon
2016-05-01 13:55:04 +02:00
Matthias Mailänder
6a9b8e81f4 Don't expose palettes and sprites to Lua. 2016-05-01 12:29:39 +02:00
Matthias Mailänder
4e9a48d253 Summarize the rendering parts to generate a beacon. 2016-05-01 12:29:39 +02:00
Matthias Mailänder
a8dd67a231 ParatroopersPower also supports beacons. 2016-05-01 12:29:38 +02:00
Matthias Mailänder
59fbfbc851 Don't enforce beacons to be player palettes. 2016-05-01 12:29:38 +02:00
Matthias Mailänder
9f4cdb9843 Unhardcode player beacons for documentation and lint testing. 2016-05-01 12:27:02 +02:00
Matthias Mailänder
76124b7c79 Unhardcode beacon sprites for documentation and lint testing. 2016-05-01 12:21:13 +02:00
Matthias Mailänder
d4fdb97c35 Throw with a less generic KeyNotFoundException on error. 2016-05-01 12:19:19 +02:00
Matthias Mailänder
d826cd6247 Fix case issues like Temperat vs TEMPERAT during map import. 2016-05-01 12:18:26 +02:00
reaperrr
1258ddde7f Refactored Missile.RangeLimit from ticks to WDist
Changed default from 'unlimited' fuel to weapon range.
2016-04-30 16:02:15 +02:00
Oliver Brakmann
cc9f84f136 Merge pull request #11199 from reaperrr/fix-para-nre
Fix potential NRE in Parachutable
2016-04-30 13:53:04 +02:00
abcdefg30
8c80b61897 Fix the tech tree not refreshing properly on owner change 2016-04-30 13:15:51 +02:00
abcdefg30
a9ec325765 Merge pull request #11202 from GraionDilach/fix-ts-visceroids
Fix visceroids not spawning in TS.
2016-04-30 11:53:46 +02:00
Zimmermann Gyula
48d5164314 Fix visceroids not spawning in TS. 2016-04-29 19:37:32 +02:00
reaperrr
58ba25cc17 Merge pull request #10813 from Mailaender/vein-damage
Added damaging through Veins.
2016-04-29 13:28:58 +02:00
reaperrr
262cf087fc Merge pull request #11172 from pchote/cargo-turret
Fix a crash when multi-turreted units leave a transport.
2016-04-29 12:57:04 +02:00
reaperrr
b87b2c010f Fix potential NRE in Parachutable 2016-04-29 12:56:05 +02:00
Paul Chote
21989acd28 Fix a crash when multi-turreted units leave a transport. 2016-04-29 04:05:33 +01:00
reaperrr
fdbe3c7ba6 Merge pull request #11196 from GraionDilach/halven-destroyer-closeenough
Halven CloseEnough on Stinger.
2016-04-28 14:11:45 +02:00
Paul Chote
25a1c0c283 Include version/mod/modversion in the game list query. 2016-04-27 23:06:21 +01:00
Paul Chote
98faa15d62 Add an opt-out prompt for system information collection. 2016-04-27 22:14:26 +01:00
Zimmermann Gyula
66d0c72968 Increase Stinger RangeLimit from 50 to 65.
With the 170 Speed, the Stinger can pass a maximum of 50*170 = 8500 (8c308) world units, while having a range of 9c0, which mean it runs out of fuel before it reaches it's effective maximum range. To prevent this, RangeLimit has been increased to 65 (9c0*1.25/170 is 67.8, rounded downwards).
2016-04-27 21:51:48 +02:00
Oliver Brakmann
b28caf6564 Merge pull request #11179 from reaperrr/minor-perf-fixes
Minor trait caching tweaks
2016-04-27 20:38:02 +02:00
Zimmermann Gyula
af36214e41 Halven CloseEnough on Stinger.
With 170 Speed, 298 CloseEnough, and 128 Spread, it will always act as a proximity weapon against the targets. Other missiles aren't affected because all the other missiles have a fair margin to satisfy the optimal Speed+Spread > CloseEnough condition.
2016-04-27 18:29:50 +02:00
Oliver Brakmann
ee82a8c3a9 Merge pull request #10756 from Mailaender/ts-beacon
Added the Tiberian Sun beacon
2016-04-26 21:28:22 +02:00
Oliver Brakmann
0ba288d66b Merge pull request #11182 from Mailaender/modchooser-button-loadsound-fail
Fixed mod chooser spamming sound.log with file not found messages
2016-04-26 21:11:41 +02:00
reaperrr
10dc6ca85c CreateEffectWarhead.TargetSearchRadius lint check 2016-04-26 19:47:22 +02:00
reaperrr
3aa811bd2e Rename 'unit' to 'victim' in CEWH's GetDirectHit check 2016-04-26 19:47:21 +02:00
reaperrr
fe7fe9b49b Fix CreateEffectWarhead's HitShape distance check
Originally, this was comparing distance beween pos and unit.CenterPosition with HitShape's OuterRadius. However, the OuterRadius can exceed the shape for Capsule and Rectangular shapes, so I tried to adress that a few months ago by using the DistanceFromEdge check instead. The approach was bogus, though. DistanceFromEdge just calculates the distance of a position to the edge, so by comparing it with the distance between pos and victim.CenterPosition in combination with using LengthSquared, it was entirely possible the explosion would be within the HitShape, but closer to the edge than the victim.CenterPosition and the check would return false.
Now we just check if DistanceFromEdge is 0 or negative, which means the impact is inside the HitShape.
2016-04-26 19:47:20 +02:00
reaperrr
3a8a8110be Extend CreateEffectWarhead's GetDirectHit to scan a WDist radius for hits
Instead of only the impact cell.
2016-04-26 19:47:18 +02:00
Matthias Mailänder
92e9cf2819 Add the Tiberian Sun beacon animation. 2016-04-24 23:28:29 +02:00
reaperrr
a268b5a048 TEST COMMIT
Gives TS infantry and walls hit shapes vertical top offset.
2016-04-24 20:47:57 +02:00
reaperrr
72c580b708 Add top and bottom offsets to HitShapes 2016-04-24 20:47:56 +02:00
Matthias Mailänder
083dd97611 Don't reference non-existing sounds in the mod chooser. 2016-04-24 20:42:46 +02:00
reaperrr
c6b09ef228 Cache ResourceLayer in PoisonedByTiberium ctor
Instead of every few ticks.
2016-04-24 20:14:37 +02:00
reaperrr
828dc61b67 Use already cached mobile in MobileProperties.Scatter 2016-04-24 20:12:51 +02:00
reaperrr
b497869993 Cache IMove in Repairable's ctor
Instead of looking it up on every repair order.
2016-04-24 20:12:49 +02:00
Oliver Brakmann
23e5889a70 Merge pull request #11167 from pchote/fix-gps-satellite-palette
Fix GPS satellite palette.
2016-04-24 13:17:26 +02:00
Oliver Brakmann
d88f8d348b Merge pull request #11174 from reaperrr/fix-11173
Disable OwnerRow on TD and RA map props
2016-04-24 12:59:27 +02:00
Paul Chote
b245e6e128 Merge pull request #11163 from reaperrr/fix-11056
Fix Creeps not considering players as enemies on some TD maps
2016-04-24 11:51:49 +01:00
reaperrr
83631f3b4d Disable OwnerRow on RA trees, rocks, bridges and crates 2016-04-24 01:10:32 +02:00
reaperrr
1f078cc364 Disable OwnerRow on TD bridges, destroyed fields and crates 2016-04-24 01:07:36 +02:00
reaperrr
6701420851 Disabled OwnerRow on TD trees, tib trees and rocks 2016-04-24 00:55:04 +02:00
reaperrr
b25f8ff4b0 Fixed owner of some trees on Lessons from Kosovo and Treasure Island
They're owned by Neutral instead of Creeps now.
2016-04-24 00:54:36 +02:00
Oliver Brakmann
eae96738b9 Merge pull request #11170 from pchote/fix-missiles-again
Fix missile facing check.
2016-04-23 23:02:58 +02:00
Paul Chote
59f5e24189 Simplify and fix missile turnaround facing check. 2016-04-23 17:14:56 +01:00
reaperrr
6f876e7441 Fix Creeps enemy config on RA conquest maps 2016-04-23 16:42:33 +02:00
reaperrr
8bb2574e21 Fixed Creeps on non-Conquest RA maps 2016-04-23 16:42:31 +02:00
Matthias Mailänder
fb53890636 Merge pull request #11144 from pchote/fix-start-game-frozen-explored-map
Generate frozen actor renderables for all map-placed actors.
2016-04-23 16:26:27 +02:00
Matthias Mailänder
a0fa5ad1bd Merge pull request #11166 from pchote/fix-gps-tooltips
Only refresh tooltip/health status of revealed frozen actors.
2016-04-23 16:13:05 +02:00
reaperrr
863772675b Merge pull request #11165 from pchote/fix-missile-flip
Fix missile facing check.
2016-04-23 15:15:59 +02:00
Paul Chote
d70356b47f Fix GPS satellite palette. 2016-04-23 14:10:54 +01:00
Oliver Brakmann
ea5009393f Merge pull request #10777 from reaperrr/fix-missile-cruise
Fix missiles not moving to CruiseAltitude if launched above it
2016-04-23 15:04:54 +02:00
reaperrr
5ad89f90a5 Give RA MiG missiles a higher CruiseAltitude 2016-04-23 14:50:36 +02:00
reaperrr
3dcb7bc02b Fix missiles not moving to CruiseAltitude if launched above it 2016-04-23 14:50:35 +02:00
Paul Chote
13cfd3699d Fix missile facing check. 2016-04-23 13:37:08 +01:00
Paul Chote
0b4a8d9a13 Only refresh tooltip/health status of revealed frozen actors. 2016-04-23 13:07:53 +01:00
abcdefg30
a717ab6763 Merge pull request #11135 from obrakmann/fix11127_zoom-pxldbl-interaction
Fix PixelDoubling not working properly after zooming with mousewheel
2016-04-23 11:55:53 +02:00
reaperrr
f1f8cc8763 Fix Creeps on Llamas 2 not seeing Multi4 and Multi5 as enemies 2016-04-22 23:15:55 +02:00
Oliver Brakmann
3b2a5e2dbc Merge pull request #11162 from reaperrr/fix-11159
Enable Targetable to handle multiple Cloak traits
2016-04-22 22:15:06 +02:00
RoosterDragon
28b8850936 Merge pull request #11160 from pchote/remove-td-concrete
Remove unused Concrete armor type from TD weapons.
2016-04-22 19:27:53 +01:00
reaperrr
521a8a66d2 Enable Targetable to handle multiple Cloak traits 2016-04-22 13:01:02 +02:00
reaperrr
b28f588733 Merge pull request #11124 from pchote/tileset-depth
Add tileset depth metadata support.
2016-04-21 22:59:42 +02:00
reaperrr
5b1b0f1494 Fix Creeps not seeing players as enemies on some TD maps 2016-04-21 22:13:08 +02:00
Oliver Brakmann
77ba2b4f13 Fix PixelDoubling not working properly after zooming with mousewheel
I decided to write it this way (instead of setting `Game.Settings.Graphics.PixelDouble` in `Viewport.Zoom` appropriately) because I see the double pixel setting as the user's preference that the game uses at the start of a match and which should not be changed only because the user decided to zoom in a bit.
2016-04-21 22:04:39 +02:00
Oliver Brakmann
c8a9936b6c Merge pull request #11161 from pchote/fix-td-replay-timer
Fix replay timer.
2016-04-21 21:17:22 +02:00
Oliver Brakmann
4858ae7132 Merge pull request #11157 from abcdefg30/d2kWalls
Fix the debris spawned when walls are destroyed in d2k
2016-04-21 21:04:18 +02:00
Paul Chote
a8350783fc Fix game timer when adjusting replay speed. 2016-04-21 17:52:47 +01:00
Paul Chote
0eb446fb7d Remove unused Concrete armour type. 2016-04-21 17:30:07 +01:00
Paul Chote
8807a79c4a Add tile depth metadata to TS tileset yaml. 2016-04-21 17:23:09 +01:00
Paul Chote
756d2428d9 Add depth support to TileSet. 2016-04-21 17:23:08 +01:00
Paul Chote
08100dc49b Fix initial render state for walls. 2016-04-21 17:21:29 +01:00
Paul Chote
183e5ae7ab Generate initial frozen renderables for all map-placed actors. 2016-04-21 17:21:29 +01:00
reaperrr
8bd8e8aa56 Merge pull request #11154 from obrakmann/fix11055_targetable-cloaked-units
Fix looking up un-required trait in Targetable ctor
2016-04-21 13:02:38 +02:00
reaperrr
65f8b9f63b Merge pull request #11141 from Mailaender/missile-targetedPassedBy
Removed redundant targetPassedBy check.
2016-04-21 12:30:14 +02:00
reaperrr
d82ff3412c Merge pull request #11137 from Mailaender/deadcode-healthradiuscheck
Removed unnecessary null checks in CheckTargetHealthRadius
2016-04-21 12:29:40 +02:00
abcdefg30
e23d8f25a9 Fix the debris spawned when walls are destroyed in d2k 2016-04-20 21:03:48 +02:00
Oliver Brakmann
728de3b55f Merge pull request #11151 from abcdefg30/tanyaIdle
Fix the length of the idle2 sequence of tanya
2016-04-20 20:44:09 +02:00
abcdefg30
8c244574d1 Merge pull request #11086 from Phrohdoh/ts-marn-shellmap
Add Marn's Shellmap "Fields of Green" to TS
2016-04-20 20:42:12 +02:00
Oliver Brakmann
eb2d7016b5 Merge pull request #11152 from abcdefg30/lobbyNote
Fix reselecting a dropdown option in the lobby causing a server message
2016-04-20 20:34:40 +02:00
Taryn Hill
3e40be47f7 Remove gdi4a from TS 2016-04-20 13:18:17 -05:00
Taryn Hill
1bb2aa3522 Add Marn's Shellmap "Fields of Green" to TS 2016-04-20 13:18:15 -05:00
abcdefg30
7a13fb189c Merge pull request #11153 from RoosterDragon/selection-fast-checks
Use Contains method on Selection when possible.
2016-04-20 17:50:45 +02:00
Oliver Brakmann
357d50679c Fix looking up un-required trait in Targetable ctor 2016-04-19 22:39:36 +02:00
RoosterDragon
178fcfaf8c Use Contains method on Selection when possible.
This allows the set to be utilized for a fast check, rather than degrading to a linear search via LINQ.
2016-04-19 21:19:36 +01:00
abcdefg30
ea68fbdd7c Fix reselecting a dropdown option in the lobby causing a server message 2016-04-19 20:49:57 +02:00
abcdefg30
4b7edf6947 Fix the length of the idle2 sequence of tanya 2016-04-19 20:28:03 +02:00
Oliver Brakmann
d7f140d5a3 Merge pull request #11146 from pchote/fix-spawn-reordering
Preserve editor actor ordering.
2016-04-18 20:10:04 +02:00
Matthias Mailänder
b5b190f0fa Merge pull request #11145 from pchote/storm-light-level
Increase ambient light level in Fort Lonestar and GDI06.
2016-04-18 15:32:50 +02:00
Matthias Mailänder
2c3ceb1630 Merge pull request #11111 from reaperrr/fix-td-engprio
Remove custom TD & D2k engineer selection priority
2016-04-18 15:28:36 +02:00
Matthias Mailänder
6f151d8096 Merge pull request #11084 from cjshmyr/chatprefix
Move Spectators & Team chat labels before player nickname
2016-04-18 15:23:17 +02:00
Matthias Mailänder
7795e4f524 Add damaging through Veins. 2016-04-18 08:46:04 +02:00
Matthias Mailänder
133a0f54a3 Check for invalid targets to avoid crashing. 2016-04-18 08:46:04 +02:00
Matthias Mailänder
27888715de Have vehicles avoid veins. 2016-04-18 08:45:41 +02:00
Matthias Mailänder
99b072ddce Have infantry avoid Tiberium. 2016-04-18 08:44:27 +02:00
Paul Chote
9d02c53638 Expose separate middle and right mouse scroll config. 2016-04-17 21:27:20 -04:00
Paul Chote
c68ef3d25f Preserve editor actor order. 2016-04-17 20:25:20 -04:00
Paul Chote
39ddf29a8d Increase ambient light level in gdi06. 2016-04-17 20:07:12 -04:00
Paul Chote
03913ef768 Increase ambient light level in fort lonestar. 2016-04-17 20:07:05 -04:00
Oliver Brakmann
6323f763f1 Merge pull request #11122 from reaperrr/traits-render
Move Render traits to Traits.Render namespace
2016-04-17 21:48:32 +02:00
Oliver Brakmann
2051976f5b Merge pull request #11138 from Mailaender/dispose-xccdb
Made XccGlobalDatabase disposable
2016-04-17 21:27:49 +02:00
Oliver Brakmann
0df7e2361b Merge pull request #11140 from Mailaender/map-preview-package-nre
Fixed NullReferenceExceptions if package opening fails.
2016-04-17 20:23:59 +02:00
Oliver Brakmann
041be70371 Merge pull request #11139 from Mailaender/upgraderules-parentnull
Fixed NullReferenceExceptions in UpgradeRules
2016-04-17 20:11:11 +02:00
abcdefg30
af3d8d4860 Add support for playing a "LoseNotification" to the old owner through CaptureNotification 2016-04-17 16:17:32 +02:00
szabkel
1b4a42d3d9 Added MusicControllerLogic, now we can handle audio buttons anywhere in the game. 2016-04-17 16:11:42 +02:00
Matthias Mailänder
12543f2f32 Avoid logically dead code. 2016-04-17 16:00:57 +02:00
Matthias Mailänder
48ea9dc300 Fix NRE if package download fails or is corrupted. 2016-04-17 15:57:00 +02:00
abcdefg30
a1d39b0a42 Document the existing fields in CaptureNotificationInfo 2016-04-17 15:29:27 +02:00
abcdefg30
c8cfb10ab1 Reduce the usage of different ways to determine the new owner
We don't need the LocalPlayer check if we only play the sound to the new owner,
and captor.Owner == newOwner in this case.
2016-04-17 15:26:53 +02:00
Matthias Mailänder
3e536a61e6 targetPassedBy is always false here so avoid redundant check. 2016-04-17 14:30:22 +02:00
Matthias Mailänder
62bc2a27d9 Fix NREs in UpgradeRules. 2016-04-17 14:15:49 +02:00
Matthias Mailänder
4719a085bb Dispose global mix database.dat properly. 2016-04-17 14:09:52 +02:00
Matthias Mailänder
bd28445754 Merge pull request #10946 from abcdefg30/lobby-bots
Add a "Lonestar AI" to Fort Lonestar
2016-04-17 11:15:50 +02:00
abcdefg30
78b2ffdee1 Merge pull request #11119 from obrakmann/more-map-churn
More map churn
2016-04-17 11:11:04 +02:00
abcdefg30
3294415e8e Add an "Lonestar AI" to Fort Lonestar 2016-04-17 11:01:26 +02:00
Paul Chote
42504bfa9c Add DummyAI trait for scripted maps. 2016-04-17 11:01:25 +02:00
Matthias Mailänder
3d1fadf24a Merge pull request #11014 from dtluna/can_undeploy
Added CanUndeploy property
2016-04-17 10:37:44 +02:00
Matthias Mailänder
e127ada598 Merge pull request #11098 from pchote/vertex-secondary-texcoords
Replace SheetType.DualIndexed with secondary texture coordinates on Vertex.
2016-04-17 10:22:57 +02:00
Matthias Mailänder
7209bc474d Merge pull request #11120 from teees/fix-barrels
Fix barrel recoil being set immediately, not when actually firing
2016-04-17 09:52:06 +02:00
reaperrr
c7eeb60b5d Removed custom selection priority from D2k engineer 2016-04-17 00:38:05 +02:00
Oliver Brakmann
c2c26cbcdc Merge pull request #11131 from abcdefg30/spyName
Fix the spyplane not having a tooltip ingame
2016-04-16 19:48:21 +02:00
abcdefg30
29a79b6175 Drop "U2" out of the spy planes tooltip 2016-04-16 19:40:49 +02:00
abcdefg30
66568104ec Fix the spyplane not having a tooltip ingame 2016-04-16 19:39:30 +02:00
Paul Chote
d59488d496 Merge pull request #11076 from obrakmann/low-funds-warning-2
Fix issues with the insufficient funds warning
2016-04-16 18:00:40 +01:00
Paul Chote
95a5689b9e Merge pull request #11104 from obrakmann/fix11074-lobby-ready-map-install
Fix ready checkbox in the lobby being unusable after installing a map
2016-04-16 17:42:04 +01:00
reaperrr
a1ce5bd978 Move VeteranProductionIconOverlay to Traits.Render 2016-04-16 14:26:26 +02:00
Paul Chote
5d0990f1c6 Removing remaining SheetType.DualIndexed plumbing. 2016-04-15 16:53:37 -04:00
Paul Chote
3a37551812 Remove SheetType.DualIndexed from terrain rendering. 2016-04-15 16:53:37 -04:00
Paul Chote
b68fee9521 Remove SheetType.DualIndexed from voxel rendering. 2016-04-15 16:46:47 -04:00
Paul Chote
7c67b10d28 Add a secondary texture coordinate to Vertex. 2016-04-15 16:46:47 -04:00
reaperrr
fd5a597966 Move Render traits to Traits.Render namespace 2016-04-15 20:43:04 +02:00
reaperrr
f07a5d6f69 Merge pull request #11091 from pchote/sprite-vertex-depth
Add depth buffer support for sprites.
2016-04-15 15:59:21 +02:00
Paul Chote
e54917a0b2 Fix depth-enabled shroud rendering. 2016-04-15 09:42:29 -04:00
Paul Chote
2915db67c4 Add depth buffer support to sprites and sequences. 2016-04-15 09:42:29 -04:00
Paul Chote
2634643d91 Write z data to the depth buffer. 2016-04-15 09:42:29 -04:00
Paul Chote
ecebb2a844 Change depth function to <=. 2016-04-15 09:42:28 -04:00
teees
3c4d9b4c84 Fix barrel recoil being set immediately, not when actually firing 2016-04-15 14:06:21 +02:00
Oliver Brakmann
1e26a9fa51 Add a bunch of new maps to RA 2016-04-14 21:51:15 +02:00
Oliver Brakmann
2d0e39b9d6 Re-add map Caffeinated to RA 2016-04-14 21:50:51 +02:00
Oliver Brakmann
10748d562e Re-balance a couple of RA maps 2016-04-14 21:50:07 +02:00
Oliver Brakmann
ecb0df6f21 Remove some skirmish maps from RA 2016-04-14 21:14:06 +02:00
abcdefg30
0538f0c66e Merge pull request #11105 from obrakmann/fix11046_subs-not-attackable
Fix submarines not being attackable when surfaced
2016-04-14 17:45:23 +02:00
reaperrr
d1e926e007 Remove custom TD engineer selection priority 2016-04-13 20:37:14 +02:00
Oliver Brakmann
189b94f3a0 Merge pull request #11110 from reaperrr/fix-win-make-check
Remove Platforms.Null from Windows style check
2016-04-13 20:31:32 +02:00
reaperrr
f4d5c1d755 Remove Platforms.Null from Windows style check
Doesn't exist anymore.
2016-04-13 18:35:17 +02:00
Oliver Brakmann
2fbea092bc Fix submarines not being attackable when surfaced
This will also fix the issue of all pre-placed subs playing the submerging sound during the start of a map.
2016-04-12 21:17:04 +02:00
Oliver Brakmann
c68e03366c Merge pull request #11097 from Mailaender/group-sound-traits
Grouped the sound traits together
2016-04-12 18:46:08 +02:00
Oliver Brakmann
b25eb81a42 Fix ready checkbox in the lobby being unusable after installing a map 2016-04-12 18:30:37 +02:00
reaperrr
6239aad070 Merge pull request #11017 from Mailaender/radar-refactor
Grouped the radar traits together
2016-04-12 17:07:01 +02:00
Oliver Brakmann
87eb443121 Add upgrade rule for moving InsufficientFundsWarning logic to PlayerResources 2016-04-11 19:06:18 +02:00
Oliver Brakmann
a8ead3669d Enable the insufficient funds warning in ra, d2k and ts 2016-04-11 19:06:18 +02:00
Oliver Brakmann
87e1acfc9f Re-implement the insufficient funds warning in a simpler manner 2016-04-11 19:06:18 +02:00
Oliver Brakmann
41388b9c63 Revert the previous InsufficientFundsWarning implementation 2016-04-11 19:06:18 +02:00
Biofreak1987
158263c922 Add nod07a
Add nod07a - "Sick And Dying (a)"
2016-04-11 00:26:25 +02:00
Matthias Mailänder
be3ea7b79e Move audio traits into Sounds namespace. 2016-04-10 22:34:10 +02:00
Matthias Mailänder
c4475539a1 Move CaptureNotification into Sounds sub-folder. 2016-04-10 22:33:37 +02:00
abcdefg30
f911a80b04 Merge pull request #11095 from Mailaender/lua-getactors
Added Player.GetActors to the Lua API
2016-04-10 21:32:03 +02:00
Oliver Brakmann
833dbb3e0d Merge pull request #11089 from GraionDilach/ts-debris-fix
Fix TS debris angles.
2016-04-10 21:09:49 +02:00
Matthias Mailänder
f37f1f1e0c Add Player.GetActors to the Lua API. 2016-04-10 19:52:41 +02:00
Matthias Mailänder
18d38f0bad Merge pull request #11065 from abcdefg30/luaMapActors
Add a lua method for querying all actors that are currently InWorld
2016-04-10 18:57:14 +02:00
Matthias Mailänder
3a3be979f3 Merge pull request #11081 from pchote/fix-left-click-orders
Fix left click orders
2016-04-10 17:32:14 +02:00
reaperrr
0861c9f6fa Merge pull request #11058 from pchote/terrain-vertex-depth
Use vertex depths for rendering terrain depth preview.
2016-04-10 16:13:50 +02:00
Oliver Brakmann
94eed2c58f Merge pull request #11088 from pchote/fix-file-headers
Fix outdated file headers.
2016-04-10 16:04:46 +02:00
Paul Chote
7315ffbcb7 Fix outdated file headers. 2016-04-10 09:41:12 -04:00
Paul Chote
dabea59b7d Pass depth scale factors to vertex shaders. 2016-04-10 09:41:01 -04:00
Paul Chote
c00ef40151 Add float3 support to TerrainSpriteLayer. 2016-04-10 09:41:01 -04:00
Paul Chote
19a276da2b Replace float[] with float3 in voxel renderer. 2016-04-10 09:41:01 -04:00
Paul Chote
a8dda39a72 Introduce float3 type. 2016-04-10 09:41:01 -04:00
Oliver Brakmann
aac4820ac7 Merge pull request #11082 from pchote/custom-rule-detection
Fix and improve lobby custom rules warning.
2016-04-10 14:52:06 +02:00
abcdefg30
602d96a8e1 Merge pull request #11079 from obrakmann/fix11040-stats-screen-client-tooltip-crash
Fix several NREs during setup of client tooltips in GameInfoStatsLogic
2016-04-10 12:03:23 +02:00
Curtis Shmyr
6a492035fc Move Spectators and Team chat labels before nicknames 2016-04-09 16:37:35 -06:00
Paul Chote
aa061a5bc6 Whitelist lighting and weather traits. 2016-04-09 13:41:08 -04:00
Paul Chote
923883fad7 Fix and improve custom rule detection. 2016-04-09 13:40:44 -04:00
Paul Chote
acab6f1f4b Fix custom order generators for left-click targeting. 2016-04-09 11:59:54 -04:00
Paul Chote
7a32c8e8e7 Change InputOverridesSelection return values to match name. 2016-04-09 11:24:10 -04:00
Oliver Brakmann
fe02bea521 Fix several NREs during setup of client tooltips in GameInfoStatsLogic 2016-04-09 15:21:17 +02:00
abcdefg30
a95d9cc1fa Replace abused Map.ActorsInBox calls by Map.ActorsInWorld in all cnc missions 2016-04-08 18:01:17 +02:00
abcdefg30
82ff09acda Replace abused Map.ActorsInBox calls by Map.ActorsInWorld in all d2k missions 2016-04-08 17:48:06 +02:00
abcdefg30
29bf2206f0 Remove the now redundant NWIdlePoint waypoint from soviet-05 2016-04-08 17:42:39 +02:00
abcdefg30
2f86f25418 Remove the redundant "set to defend stance" functions
They never even worked properly
2016-04-08 17:38:41 +02:00
abcdefg30
ec602f2090 Replace abused Map.ActorsInBox calls by Map.ActorsInWorld in all ra missions 2016-04-08 17:38:17 +02:00
Zimmermann Gyula
ff82494475 Fix TS debris angles. 2016-04-08 11:10:46 +02:00
abcdefg30
b02a9a188d Add a Utils.Where function to lua for filtering collections 2016-04-08 11:00:19 +02:00
abcdefg30
1c6253c3fb Add a lua method for querying all actors that are currently InWorld 2016-04-07 22:53:13 +02:00
Matthias Mailänder
b49f1439ed Merge pull request #11059 from jaZzKCS/patch-1
Closes #11057
2016-04-06 19:42:38 +02:00
jaZzKCS
c88c1c26bb Update ai.yaml
Enabling AI to build Repair Pad, which is now needed to build the MCV, hence needed for the AI to be able to replace the ConYard when it's gone.
2016-04-06 01:07:20 +02:00
Oliver Brakmann
90902b692e Merge pull request #11053 from reaperrr/fix-emitinf
Fix value of infantry emitted on sell
2016-04-05 22:29:57 +02:00
Matthias Mailänder
231c8ed786 Update GPS satellite player information. 2016-04-05 19:25:19 +02:00
Matthias Mailänder
ec87b18608 Disable GPS dots without active radar. 2016-04-05 19:25:19 +02:00
Matthias Mailänder
a8471d9f54 Disable Gps when tech center is disabled. 2016-04-05 19:25:19 +02:00
reaperrr
fb84dab660 Fix value of infantry emitted on sell 2016-04-05 16:28:33 +02:00
Paul Chote
39cb519c1a Merge pull request #11039 from obrakmann/fix-opening-ro-files-as-rw
Fix opening the scriptwrapper.lua file as read-write
2016-04-03 18:40:01 +01:00
Oliver Brakmann
065066acc4 Fix opening the scriptwrapper.lua file as read-write 2016-04-03 19:31:11 +02:00
Paul Chote
5e0d657ec7 Merge pull request #11038 from obrakmann/upstream/bleed
Fix palette used for flare in TD
2016-04-03 17:44:41 +01:00
Paul Chote
0cba0cf3e1 Merge pull request #11035 from obrakmann/fix-allies05a
Fix  issues in allies05a
2016-04-03 17:31:57 +01:00
Oliver Brakmann
cdba6a7a7d Fix palette used for flare in TD 2016-04-03 17:50:44 +02:00
Paul Chote
aed2125ad7 Merge pull request #11036 from abcdefg30/flareTD
Remove the OwnerRow on tooltips of flare in the TD campaign
2016-04-03 16:32:34 +01:00
Oliver Brakmann
0041839872 Merge pull request #11033 from abcdefg30/mrlsFix
Fix the mrls not working
2016-04-03 17:12:33 +02:00
abcdefg30
70509c8f23 Remove the OwnerRow on tooltips of flare in the TD 2016-04-03 17:11:02 +02:00
Oliver Brakmann
16ef67e247 Fix crash in allies05a when the prison is infiltrated 2016-04-03 16:56:48 +02:00
Oliver Brakmann
64c24462d4 Disable air attacks in allies05a for now 2016-04-03 16:53:37 +02:00
abcdefg30
a42b182dce Fix the mrls not working 2016-04-03 16:46:07 +02:00
Oliver Brakmann
8a2f662bd4 Merge pull request #11012 from pchote/fix-missing-music
Add missing music tracks to global mix database.
2016-04-03 13:42:17 +02:00
Oliver Brakmann
9b971075d7 Merge pull request #11029 from pchote/work-around-target-cancel
Fix Turreted units not dropping cancelled targets.
2016-04-03 12:54:48 +02:00
Matthias Mailänder
92c04210f7 Merge pull request #10965 from RoosterDragon/actor-info-ordering
Strengthen trait ordering rules
2016-04-03 12:36:20 +02:00
Matthias Mailänder
d57e53dc53 Merge pull request #10992 from pchote/server-maps
Allow Dedicated Servers to query map info from the Resource Center.
2016-04-03 12:19:41 +02:00
Matthias Mailänder
f5dbca9405 Merge pull request #11028 from pchote/fix-parachutes-again
Fix parachutes in non-heightmapped mods.
2016-04-03 12:14:12 +02:00
Paul Chote
2024f86290 Fix Turreted units not dropping cancelled targets. 2016-04-03 10:22:53 +01:00
Paul Chote
536c00ae77 Fix parachutes in non-heightmapped mods. 2016-04-03 09:25:48 +01:00
dtluna
cf0a4bc21f Added CanUndeploy property. 2016-04-03 02:46:38 +03:00
Oliver Brakmann
a29b9ff7be Merge pull request #11025 from pchote/fix-dedicated-logging
Improve log output on dedicated servers.
2016-04-02 18:30:32 +02:00
Matthias Mailänder
ce7488f457 Merge pull request #11023 from pchote/fix-map-creeps
Respect map creeps configuration.
2016-04-02 18:23:49 +02:00
Matthias Mailänder
0ec6feb7a3 Merge pull request #11024 from pchote/fix-nod-campaign-inf-death
Fix nod infantry death palette in campaigns.
2016-04-02 18:18:25 +02:00
Paul Chote
a79f40bf4b Log all player joins on dedicated servers. 2016-04-02 17:10:00 +01:00
Paul Chote
4b0aa77ce5 Add missing timestamp to dedicated server logs. 2016-04-02 17:09:52 +01:00
Paul Chote
a9c6416d48 Fix nod infantry death palette in campaigns. 2016-04-02 16:07:09 +01:00
Paul Chote
8b29373a7c Respect map creeps configuration. 2016-04-02 15:57:04 +01:00
abcdefg30
ff8c1af80f Merge pull request #11019 from Mailaender/lint-spawn-actors
Added lint testing to SpawnActorPower effect sprite and palette
2016-04-02 16:01:05 +02:00
Matthias Mailänder
9458a74e9c Lint test and SpawnActorPower effect sprite and palette. 2016-04-02 15:12:08 +02:00
abcdefg30
b53e5d46e7 Merge pull request #11002 from HenrytheSlav/pbox_fix
Pillbox/CamPillbox blind spot fix
2016-04-02 14:44:27 +02:00
Matthias Mailänder
a78d67a60c Put radar traits into their own namespace. 2016-04-02 14:36:26 +02:00
Matthias Mailänder
8df7d8b784 Separate JamsRadar into it's own file. 2016-04-02 14:27:12 +02:00
Matthias Mailänder
9b9b3474dd Group radar traits in a sub-folder. 2016-04-02 14:27:12 +02:00
abcdefg30
03b56b0337 Merge pull request #11004 from obrakmann/pr10266_paradrop-production
Paradrop Production
2016-04-02 13:00:47 +02:00
Matthias Mailänder
982fce7a99 Document that PowerManager is a player actor trait. 2016-04-02 13:00:35 +02:00
HenrytheSlav
f6e507f152 Pillbox/CamPillbox blind spot fix 2016-04-02 12:52:18 +02:00
abcdefg30
9064f95bfd Merge pull request #11016 from Phrohdoh/fix-withspritebody
Don't render WithSpriteBody if it is disabled
2016-04-02 12:30:26 +02:00
abcdefg30
d14f027321 Merge pull request #11013 from pchote/confirm-dialog-buttons
Restore two-button prompt for two-button dialogs.
2016-04-02 12:24:32 +02:00
Matthias Mailänder
aa4ffe5bd4 Merge pull request #11015 from abcdefg30/paraGround
Fix paratroopers on heightmapped terrain
2016-04-02 11:46:43 +02:00
Matthias Mailänder
72eea3a746 Merge pull request #10995 from scshunt/allow-empty-refinery-return
Allow empty harvesters to be ordered to refineries
2016-04-02 11:38:19 +02:00
abcdefg30
d9d78715cd Fix paratroopers on heightmapped terrain 2016-04-02 11:36:45 +02:00
Matthias Mailänder
f38d30a1ff Merge pull request #11005 from pchote/server
Extract dedicated server interface to OpenRA.Server.exe
2016-04-02 11:23:17 +02:00
Matthias Mailänder
ab22908fd2 Merge pull request #11008 from pchote/left-click-guard-fix
Fix order generator vs unit targeting under left click orders.
2016-04-02 11:15:09 +02:00
Taryn Hill
c02e6b68a3 Don't render WithSpriteBody if it is disabled 2016-04-01 19:33:12 -05:00
Paul Chote
1fadc8531c Restore two-button prompt for two-button dialogs. 2016-04-01 17:51:44 +01:00
Paul Chote
d6818be229 Add nod_win1.aud and nod_map1.aud to mix database. 2016-04-01 17:22:16 +01:00
Paul Chote
bf61785f96 Remove BinaryReader from XccGlobalDatabase. 2016-04-01 17:21:50 +01:00
Oliver Brakmann
811b2d26fd Merge pull request #11009 from pchote/fix-ts-editor-bounds
Fix northern boundary on new maps.
2016-04-01 17:04:43 +02:00
abcdefg30
985f43ba0d Merge pull request #10989 from Mailaender/empty-chrome-collection
Fixed Could not find collection '' spam in debug.log
2016-04-01 00:37:51 +02:00
abcdefg30
1b8ba71a4f Merge pull request #11006 from pchote/mp-filters
Tweak the multiplayer server listing.
2016-03-31 23:32:55 +02:00
Paul Chote
bad22f0919 Fix northern boundary on new maps. 2016-03-31 21:24:28 +01:00
Paul Chote
8efa7a143e Add ExpectedButton check to GuardOrderGenerator. 2016-03-31 21:11:53 +01:00
Paul Chote
06158ee155 Simplify and fix WICW left-click order check.
The InputOverridesSelection check was inverted.
2016-03-31 21:11:53 +01:00
Paul Chote
6593895ea1 Fix comment typo in LobbyCommands.cs. 2016-03-31 21:08:37 +01:00
Paul Chote
4ec1369553 Let servers query map details from the resource centre. 2016-03-31 21:08:36 +01:00
Paul Chote
65f7d46025 Parse map rules and players from remote maps. 2016-03-31 21:08:36 +01:00
Paul Chote
81f22f8871 Remove Game.RunAfterTick from UpdateRemoteSearch.
RunAfterTick isn't available from the Server.
2016-03-31 21:08:36 +01:00
abcdefg30
95f091853e Merge pull request #10975 from Phrohdoh/trait-taggable
Add ScriptTags trait
2016-03-31 01:09:29 +02:00
Oliver Brakmann
4c8b13ef27 Merge pull request #10917 from abcdefg30/luaClosedCell
Add a ClosestEdgeCell and a ClosestMatchingEdgeCell function to lua
2016-03-31 01:04:01 +02:00
abcdefg30
69181ec8b9 Merge pull request #10959 from Phrohdoh/cargo-scripting
Expose passenger enter/exit notifications to Lua
2016-03-31 00:53:35 +02:00
Oliver Brakmann
9f8599cadc Merge pull request #11001 from dtluna/uncloak_on_dock
Added Dock Uncloak type.
2016-03-31 00:42:51 +02:00
Paul Chote
345f91d3ec Remove the null renderer. 2016-03-30 19:40:19 +01:00
Paul Chote
706d3ae52a Move dedicated server code to OpenRA.Server.exe 2016-03-30 19:26:50 +01:00
Paul Chote
c46faa351c Reorder MP browser ordering:
- Games that can be joined
- Games that are in progress
- Empty servers
2016-03-30 19:05:59 +01:00
Paul Chote
b783dba2ae List started games by default. 2016-03-30 17:56:15 +01:00
Paul Chote
d9b9407925 Persist MP game server filters. 2016-03-30 17:51:47 +01:00
abcdefg30
cec2821f13 Add a ClosestEdgeCell and a ClosestMatchingEdgeCell function to lua 2016-03-30 16:05:10 +02:00
abcdefg30
d907296f4e Make the SpawnMapActors field in MapGlobal.cs readonly 2016-03-30 16:05:10 +02:00
Oliver Brakmann
500216937b Move ProductionFromMapEdge from D2k to Common 2016-03-30 02:46:19 +02:00
Bynnar18
a9ffe0a779 Paradrop Production 2016-03-30 02:46:19 +02:00
dtluna
a20631f475 Added Dock Uncloak type. 2016-03-30 02:45:41 +03:00
Paul Chote
b5c2703eba Pass random to ChooseInitialMap. 2016-03-29 23:46:12 +01:00
Paul Chote
fee899f63d Fix unnecessary uses of Game.ModData. 2016-03-29 23:46:12 +01:00
Paul Chote
2150a5e865 Move ChooseInitialMap to MapCache. 2016-03-29 23:46:11 +01:00
RoosterDragon
36c9558b5f Added some comments to TraitsInConstructOrder. 2016-03-29 23:10:49 +01:00
RoosterDragon
0cbce8141f Fix circular trait dependencies on UpgradeManager.
Don't use Requires to force an ordering, instead just use INotifyCreated to grab all the traits once constructed.
2016-03-29 23:10:48 +01:00
RoosterDragon
3192432a5c Strengthen ordering of TraitsInConstructOrder.
All types that are dependencies of a trait must now occur before it in the construct ordering. Previously, only one type that was a dependency of a trait needed to occur before it.
2016-03-29 23:10:46 +01:00
RoosterDragon
b3b816fcc6 Improve names and test code in ActorInfoTest. 2016-03-29 23:10:45 +01:00
RoosterDragon
2c15bc9308 Remove dead code in ActorInfoTest. 2016-03-29 22:49:01 +01:00
Taryn Hill
c6265527b2 Expose passenger enter/exit notifications to Lua 2016-03-29 07:00:01 -05:00
Taryn Hill
6d4e365af5 Require explicit implementation of INotifyPassenger(Entered|Exited) 2016-03-29 06:59:43 -05:00
Taryn Hill
6582d0f480 Add ScriptTags trait
This allows actors to be tagged with arbitrary strings.
Also includes ScriptTagsInit and MapGlobal.ActorsWithTag
  which expose this functionality to map scripters.
2016-03-28 16:15:44 -05:00
Matthias Mailänder
728bad9565 Merge pull request #10986 from obrakmann/fix10718-ra-map-rebalancing
Rebalance a number of RA maps
2016-03-28 20:31:03 +02:00
Oliver Brakmann
84dad6dae7 Re-added RA map 'Snowy Ridge' 2016-03-28 19:31:49 +02:00
Oliver Brakmann
a427634517 Rebalanced RA map 'Doubles' 2016-03-28 19:31:49 +02:00
Oliver Brakmann
977df4b67f Rebalanced RA map 'Singles' 2016-03-28 19:31:49 +02:00
Oliver Brakmann
b24e32d8a7 Rebalanced RA map 'Temperal' 2016-03-28 19:31:49 +02:00
Oliver Brakmann
92c285a344 Rebalanced RA map 'Sidestep' 2016-03-28 19:31:49 +02:00
Oliver Brakmann
b31485ffe1 Rebalanced RA map 'North by Northwest' 2016-03-28 19:31:49 +02:00
Oliver Brakmann
87491d3c4f Rebalanced RA map 'Mass Confliction' 2016-03-28 19:31:49 +02:00
Oliver Brakmann
68f4062d42 Rebalanced RA map 'Man to Man' 2016-03-28 19:31:49 +02:00
Oliver Brakmann
b988aefed2 Rebalanced RA map 'Keep off the Grass 2' 2016-03-28 19:31:49 +02:00
Oliver Brakmann
79f567a425 Rebalanced RA map 'High and Low' 2016-03-28 19:31:49 +02:00
Oliver Brakmann
83e52d684f Rebalanced RA map 'Forest Path' 2016-03-28 19:31:48 +02:00
Oliver Brakmann
095339f4cc Rebalanced RA map 'Encounter' 2016-03-28 19:31:48 +02:00
Oliver Brakmann
51e7f007cf Rebalanced RA map 'East vs West' 2016-03-28 19:31:48 +02:00
Oliver Brakmann
704abfad0d Rebalanced RA map 'Chokepoint' 2016-03-28 19:31:48 +02:00
Oliver Brakmann
1453b9d311 Rebalanced RA map 'Asymetric Battle' 2016-03-28 19:31:48 +02:00
Matthias Mailänder
77d4154f95 Merge pull request #10972 from reaperrr/fp-to-int1
Migrated some remaining floats in simulation to integers (and decimals)
2016-03-28 18:45:25 +02:00
Sean Hunt
c18987e293 Allow empty harvesters to be ordered to refineries
The primary reason is to fix OpenRA/ra2#161. Rather than make the
harvester trait more complicated by making this behaviour configurable,
this commit just applies to all harvesters.
2016-03-28 12:44:23 -04:00
Matthias Mailänder
8c502e7958 Merge pull request #10968 from MustaphaTR/fake-pp
RA - Added Fake Power Plants for France
2016-03-28 18:37:06 +02:00
reaperrr
d25d9e3d7e Apply all float removal upgrade rules on the same engine version 2016-03-28 17:29:29 +02:00
reaperrr
33f26e05e1 Use decimal instead of long for WPos offset
To remove overflow risk.
2016-03-28 17:20:49 +02:00
reaperrr
fe23ac7f93 Use decimal instead of float in WVec.LerpQuadratic
To reduce desync risk (without introducing overflow risk).
2016-03-28 17:20:49 +02:00
reaperrr
73ec1ec9b2 Remove float from ReturnToBase.CalculateTurnRadius
141 / PI ~= 44.88, so 45 should be accurate enough. This should reduce desync risk while improving performance of this calculation.
2016-03-28 17:20:49 +02:00
reaperrr
4894211789 Migrate Captures.SabotageHPRemoval and Capturable.CaptureThreshold to int percentages 2016-03-28 17:20:49 +02:00
reaperrr
82f23210d9 Migrate EmitInfantryOnSell ValuePercent and MinHpPercent to int percentages
Additionally, MinHpPercent should now actually have the desired effect (previously there was not logic attached).
2016-03-28 17:20:49 +02:00
reaperrr
3a97757bfa Migrate SelfHealing.HealIfBelow from float to int percentage 2016-03-28 17:20:49 +02:00
Matthias Mailänder
8ba875476f Merge pull request #10973 from reaperrr/fp-to-int2
Getting rid of float in simulation code Part 2
2016-03-28 17:13:52 +02:00
reaperrr
1ee4131f35 Make ThrowsParticle use WAngle instead of float 2016-03-28 15:41:34 +02:00
reaperrr
ade49ba1be Migrated Minelayer.MinefieldDepth to use WDist instead of float 2016-03-28 14:44:21 +02:00
reaperrr
251b1b44d4 Migrate StrategicVictoryConditions.RatioRequired to int percentage
Remove bogus CriticalRatioRequired from RA Hopes Anchor.
2016-03-28 14:44:20 +02:00
Matthias Mailänder
f6c7e3debb Don't try to lookup '' strings in chrome collections. 2016-03-28 13:38:29 +02:00
Pavel Penev
b162afee6b Merge pull request #10984 from pchote/fix-c17-palette
Fix C17 palette in TD campaign.
2016-03-27 22:38:09 +03:00
Pavel Penev
c78ad58e4b Merge pull request #10948 from pchote/custom-map-merger
Add --map-rules utility command for the resource center
2016-03-27 22:12:47 +03:00
Pavel Penev
c74ecd0794 Merge pull request #10898 from pchote/map-format-eleven
Add support for multiple map categories.
2016-03-27 18:16:51 +03:00
Paul Chote
ba20433f49 Fix C17 palette in TD campaign. 2016-03-27 14:28:25 +01:00
Paul Chote
74d3f87a4c Merge pull request #10934 from obrakmann/spec-objectives-panel
Make objectives panel visible to spectators/observers
2016-03-27 13:58:53 +01:00
Paul Chote
10738b0c77 Remove dead space when viewing the observer menu stats. 2016-03-27 13:59:46 +02:00
Oliver Brakmann
2490e4d67e Make objectives panel visible to spectators/observers
It also allows switching the context of the panel by selecting a certain player's view in the player view spectator drop down.
2016-03-27 13:43:23 +02:00
Paul Chote
3d499f34c6 Add additional categories to TS maps. 2016-03-27 12:17:01 +01:00
Paul Chote
eb1d033ab4 Update TS maps to format 11. 2016-03-27 12:17:01 +01:00
Paul Chote
55b06cd982 Update D2K maps to format 11. 2016-03-27 12:17:00 +01:00
Paul Chote
2151f9ac15 Update TD maps to format 11. 2016-03-27 12:17:00 +01:00
Paul Chote
85c41bf50e Update RA maps to format 11. 2016-03-27 12:17:00 +01:00
Paul Chote
96eda08677 Replace map type with a category list. 2016-03-27 12:16:55 +01:00
Matthias Mailänder
85c20e7adf Merge pull request #10947 from pchote/remove-cnc-mission-boilerplate
Remove cnc mission boilerplate
2016-03-27 12:19:28 +02:00
Oliver Brakmann
0bba5a540b Merge pull request #10963 from pchote/map-load-save
Rework map data load/save.
2016-03-26 19:24:45 +01:00
Paul Chote
2b076dd35d Merge pull request #10961 from Mailaender/animate-infantry-stand
Added animation support to infantry stand sequences
2016-03-26 17:54:12 +00:00
Paul Chote
c696c318c4 Log rule errors when loading from MapPreview. 2016-03-26 17:26:51 +00:00
Paul Chote
7f30f172a1 Add --map-rules utility command. 2016-03-26 17:25:25 +00:00
RoosterDragon
f4ebfed865 Merge pull request #10960 from Phrohdoh/paratrooper-exception
Add an explicit YamlException to ParatroopersPower.SendParatroopers
2016-03-25 13:36:27 +00:00
reaperrr
19e504163e Merge pull request #10971 from HenrytheSlav/upstream/bridgeart
Fix bad bridge art for TD snow template
2016-03-24 21:32:39 +01:00
reaperrr
01f15d7917 Change TS build speeds to match original 2016-03-24 18:43:49 +01:00
reaperrr
38cea38f6b Migrate BuildSpeed from float to int 2016-03-24 18:43:48 +01:00
HenrytheSlav
68bbe1769d bridge_art_fix 2016-03-24 00:05:47 +01:00
Mustafa Alperen Seki
f7be6d4d51 Added Fake Power Plants 2016-03-23 21:10:15 +02:00
Oliver Brakmann
a0f9af1ebe Merge pull request #10711 from colonelpopcorn/bleed
Refactored ticks to delay per issue #9810
2016-03-23 19:03:42 +01:00
Jonathan Ling
2d4c3f715f Refactored ticks to delay per issue #9810 2016-03-22 17:03:37 -04:00
colonelpopcorn
689f05c3ca Upgraded rules for Tiberian Dawn mod. 2016-03-22 16:58:38 -04:00
colonelpopcorn
24f010b673 Upgraded rules for Dune 2000 mod. 2016-03-22 16:58:38 -04:00
colonelpopcorn
95350a7e81 Upgraded rules for Red Alert mod. 2016-03-22 16:58:38 -04:00
colonelpopcorn
9c069ae3be Upgraded rules for Tiberian Sun mod. 2016-03-22 16:58:38 -04:00
Oliver Brakmann
52d0d8781d Merge pull request #10938 from reaperrr/explo-image
Unhardcode Explosion "Image"
2016-03-22 21:58:03 +01:00
Matthias Mailänder
4ee1da3970 Merge pull request #10964 from GraionDilach/fix-takecover
Fix TakeCover dependence on AttackTurreted.
2016-03-22 20:11:50 +01:00
Zimmermann Gyula
b0239368a1 Fix TakeCover dependence on AttackTurreted. 2016-03-22 10:38:24 +01:00
Paul Chote
3e00d72255 Rework map data load/save. 2016-03-21 23:15:12 +00:00
Paul Chote
ca2b712ad9 Clean up ImportTSMapCommand. 2016-03-21 23:08:43 +00:00
Oliver Brakmann
3a6c1de725 Merge pull request #10933 from Hanzik/replays-hotkeys
Replay hotkeys for pause/play/change of speed
2016-03-21 21:30:17 +01:00
Matthias Mailänder
ebe945e6c7 Merge pull request #10910 from RoosterDragon/turret-active-tracking
Turrets actively track targets
2016-03-21 20:52:18 +01:00
Matthias Mailänder
ed6067cd2f Merge pull request #10939 from pchote/fix-map-install-kick
Notify the server after installing a map.
2016-03-21 20:37:12 +01:00
Matthias Mailänder
e83261e6c3 Merge pull request #10922 from abcdefg30/shpPng
Fix the --png command trying to use OpenRA's virtual file system
2016-03-21 20:30:44 +01:00
Matthias Mailänder
dd0d8c86c6 Merge pull request #10942 from pchote/remove-map-lazyness
Remove map lazyness.
2016-03-21 20:23:47 +01:00
Matthias Mailänder
15c2df2c69 Merge pull request #10943 from pchote/map-grid-tile-range
Move Map.TilesByDistance to MapGrid and un-static it.
2016-03-21 20:05:08 +01:00
Matthias Mailänder
477d36c29a Merge pull request #10940 from pchote/drain-remaining-funds
Fix AI stalling after losing its conyard and ref.
2016-03-21 19:50:06 +01:00
Matthias Mailänder
0c41142027 Add animation support to infantry stand sequences. 2016-03-21 19:48:09 +01:00
Taryn Hill
8c8ff01b10 Add an explicit YamlException to ParatroopersPower.SendParatroppers 2016-03-20 18:07:43 -05:00
Paul Chote
4052da3ea6 Move Map.TilesByDistance to MapGrid and make non-static. 2016-03-20 21:41:04 +00:00
Paul Chote
946e6ba008 Fix "Civilians" spelling in gdi04c. 2016-03-20 21:29:41 +00:00
Paul Chote
6ca7663579 Extract common cnc campaign rules to shared includes. 2016-03-20 21:28:56 +00:00
Matthias Mailänder
5d8824fece Merge pull request #10957 from reaperrr/fix-deviator
Fix D2k deviator not taking effect
2016-03-20 19:39:58 +01:00
reaperrr
683eb7cf83 Upgrade rule for *Collection -> Image rename 2016-03-20 13:48:54 +01:00
reaperrr
a83f44d907 Unhardcode Explosion "Image"
Add ExplosionCollection property to CreateEffectWarhead
2016-03-20 13:48:53 +01:00
reaperrr
5905e75d95 Fix D2k deviator not taking effect
The warhead's scan range was lower than both the missile inaccuracy as
well as the Missile CloseEnough value of 298, so it almost never had an
effect.
2016-03-20 13:07:13 +01:00
reaperrr
0ff836b7ab Merge pull request #10955 from obrakmann/fix10936_missing-worm-sound
Fix filename case of sandworm attack sound
2016-03-20 12:59:57 +01:00
Honza Vrátník
1728f9d662 Added support for pause/play/speed hotkeys in replays 2016-03-20 12:39:16 +01:00
Oliver Brakmann
b1fd74010f Fix filename case of sandworm attack sound 2016-03-19 23:07:59 +01:00
Paul Chote
0dc939e0e8 Notify the server after installing a map. 2016-03-18 20:53:48 +00:00
Paul Chote
e6b28c2a00 Remove Map.AssetExists. 2016-03-18 20:23:52 +00:00
Paul Chote
1e5065e06a Remove lazy loading of map rules. 2016-03-18 20:23:52 +00:00
Paul Chote
4a7ef68b39 Remove Map.SpawnPoints. 2016-03-18 20:16:25 +00:00
Paul Chote
65df25b1a4 Remove lazy loading of binary map data. 2016-03-18 20:16:24 +00:00
abcdefg30
51bfe4accc Merge pull request #10916 from pchote/lobby-bots
Support map-defined bot types
2016-03-18 19:31:05 +01:00
Paul Chote
5741e53fe2 Fix AI stalling after losing its conyard and ref. 2016-03-18 18:16:24 +00:00
abcdefg30
7a63437a73 Merge pull request #10929 from Hanzik/editor-gridcolor
Changed grid in map editor to darker red
2016-03-18 19:10:30 +01:00
Oliver Brakmann
77297f1ca6 Merge pull request #10935 from pchote/dot-net-sdk-ver
Remove sdk flag from default makefile.
2016-03-17 22:06:05 +01:00
Paul Chote
dc0011a852 Remove sdk flag from default makefile. 2016-03-17 20:58:16 +00:00
Oliver Brakmann
483a008af6 Merge pull request #10931 from pchote/fix-appdata
Fix and overhaul Linux appdata
2016-03-17 21:08:20 +01:00
Paul Chote
fe28393406 Remove invalid bot types when switching maps. 2016-03-16 21:03:32 +00:00
Paul Chote
d40bff3fd9 Support map-defined AI in the lobby. 2016-03-16 21:03:31 +00:00
Paul Chote
ab6a9597bb Remove Map usage from LobbyLogic. 2016-03-16 21:03:31 +00:00
abcdefg30
ad2c6e9c11 Merge pull request #10915 from pchote/map-grid-subcells
Reference SubCells directly from MapGrid.
2016-03-16 21:58:38 +01:00
Paul Chote
3bdc4bee3a Fix and overhaul appdata metadata. 2016-03-16 19:59:06 +00:00
Paul Chote
c1b1c3cb1a Change maintainer for debian package. 2016-03-16 19:59:06 +00:00
Paul Chote
e79fbe1bb9 Reference SubCells directly from MapGrid. 2016-03-16 18:57:07 +00:00
Hanzik
52c8d165f8 Changed grid to darker red 2016-03-15 22:40:55 +01:00
Oliver Brakmann
c9e7bb43c2 Merge pull request #10924 from Mailaender/powershell-cp
Fixed AppVeyor after_test depending on a Unix cp command
2016-03-15 19:43:09 +01:00
Matthias Mailänder
1524717bc2 Don't rely on C:\Program Files\Git\usr\bin\cp.exe 2016-03-14 23:06:08 +01:00
Matthias Mailänder
b75c7e4869 Merge pull request #10923 from abcdefg30/isPlayerNuke
Add an IsPlayerPalette flag to NukePowerInfo
2016-03-14 19:59:29 +01:00
abcdefg30
8547fac90d Add an IsPlayerPalette flag to NukePowerInfo 2016-03-14 16:42:49 +01:00
abcdefg30
ad3b41dfa3 Fix the --png command trying to use OpenRA's virtual file system 2016-03-14 15:24:33 +01:00
abcdefg30
79bad0f8b1 Merge pull request #10920 from obrakmann/fix10812-subs-no-nuke-damage
Change nukes to be able to damage submerged submarines
2016-03-13 21:16:18 +01:00
Matthias Mailänder
82f7413a6a Merge pull request #10919 from obrakmann/fix10780_map-editor-no-neutral-actors
Fix some actors not being available for the neutral player in the map editor
2016-03-13 17:48:36 +01:00
Oliver Brakmann
38ccc4aff9 Change nukes to be able to damage submerged submarines 2016-03-13 15:53:33 +01:00
Oliver Brakmann
8c58dbacc1 Fix some actors not being available for the neutral player in the map editor 2016-03-13 15:32:29 +01:00
Oliver Brakmann
6b7bf86373 Merge pull request #10913 from pchote/fix-editor-tooltips
Fix multi-line tooltip padding.
2016-03-13 15:17:25 +01:00
abcdefg30
b097f7df91 Merge pull request #10912 from pchote/soundloader-streams
Introduce ISoundFormat for parsing sound files.
2016-03-13 14:56:01 +01:00
abcdefg30
e1b2f5a280 Merge pull request #10901 from pchote/server-maps
Remove Map usage from the server and mission browser.
2016-03-13 11:24:04 +01:00
Matthias Mailänder
bd03479e7d Remove trailing space. 2016-03-13 10:48:55 +01:00
Oliver Brakmann
541186a142 Merge pull request #10897 from pchote/map-tileset-cleanup
Clean up map tileset references.
2016-03-12 22:16:14 +01:00
RoosterDragon
163688fc39 Prevent turrets from firing until they are aligned with the target. 2016-03-12 20:42:10 +00:00
RoosterDragon
4598b0de43 Have turrets actively track targets, even when not ready to attack. 2016-03-12 20:42:10 +00:00
Paul Chote
324ef2e073 Remove Map usage from MissionBrowerLogic. 2016-03-12 20:07:07 +00:00
Paul Chote
1ba7a5e59e Use MapPreview on the server. 2016-03-12 20:07:07 +00:00
Paul Chote
6c319d53dd Remove an obsolete comment from Map. 2016-03-12 20:01:39 +00:00
Paul Chote
be5eee0227 Allow rules to be constructed from a MapPreview. 2016-03-12 20:01:39 +00:00
Oliver Brakmann
f8b61782a1 Merge pull request #10914 from Phrohdoh/sprite-loader-xmldoc
Add xmldoc to some ISpriteFrame members
2016-03-12 20:58:34 +01:00
Paul Chote
43a3d42d31 Change LoadMapSettings to accept a Ruleset. 2016-03-12 19:52:02 +00:00
Paul Chote
37a81f8385 Don't crash when updating bogus tiles. 2016-03-12 19:47:08 +00:00
Paul Chote
602acabe47 Remove World.TileSet. 2016-03-12 19:47:07 +00:00
Taryn Hill
19a6a7bbcf Add xmldoc to some ISpriteFrame members 2016-03-12 13:46:38 -06:00
Paul Chote
7993068c8f Remove Map.SequenceProvider. 2016-03-12 19:46:20 +00:00
abcdefg30
d7bdc840d6 Merge pull request #10909 from pchote/remove-ruleset-cache
Remove ruleset cache
2016-03-12 20:41:03 +01:00
abcdefg30
6c4d24e505 Merge pull request #10851 from obrakmann/prod-from-map-edge_ground-units-fixes
Fix ProductionFromMapEdge to work properly with ground units
2016-03-12 20:37:02 +01:00
abcdefg30
f3c8dd0397 Merge pull request #10886 from reaperrr/fix-gravitybomb
Fix GravityBomb crash when Image is null
2016-03-12 18:36:44 +01:00
Paul Chote
dbe55eedaf Fix multi-line tooltip padding. 2016-03-12 16:43:05 +00:00
Paul Chote
860876b08f Merge pull request #10893 from abcdefg30/MurtosExploit
Fix an exploit were players were able to repair at enemy service depots
2016-03-12 13:46:55 +00:00
Paul Chote
1a574028b7 Merge pull request #10891 from abcdefg30/repairCursorExploit
Fix players being able to command allied units to the service depot
2016-03-12 13:38:44 +00:00
Oliver Brakmann
3c9aa20e99 Merge pull request #10911 from reaperrr/fix-smoketrails
Fix Smoke facings to not track spawner's facing
2016-03-12 14:35:29 +01:00
Paul Chote
35cb2cb609 Lazily parse Wav data. 2016-03-12 13:17:28 +00:00
Paul Chote
3e37b717a4 Lazily parse Aud data. 2016-03-12 13:17:23 +00:00
Paul Chote
6bbe785019 Remove hardcoded wav/aud music assumption. 2016-03-12 13:01:01 +00:00
teees
0193ee5b3c Object oriented sound loader approach
Reshapes the ISoundLoader interface and
adds a new ISoundFormat interface to allow streaming in the near future
2016-03-12 12:50:52 +00:00
reaperrr
d3ca9e1733 Fix Smoke facings to not track spawner's facing 2016-03-12 13:12:42 +01:00
reaperrr
03dd192de8 Make shadow palette of GravityBomb configurable 2016-03-12 12:16:40 +01:00
Paul Chote
82a9d69a51 Remove RulesetCache and push rule parsing to background thread. 2016-03-11 21:18:32 +00:00
Paul Chote
a3b1baa654 Extract default TileSet/Sequence dictionaries to ModData. 2016-03-11 21:18:32 +00:00
abcdefg30
c32bf9f8f7 Merge pull request #10862 from ABrandau/ts-stat-correction
Adjust TS Actor stats to match vanilla TS and FS stats.
2016-03-11 21:51:52 +01:00
abcdefg30
956c36c4fc Merge pull request #10902 from pchote/inline-rules
Restore the ability for maps to include inline rules.
2016-03-11 21:33:52 +01:00
Paul Chote
b0c0bf3151 Revert format upgrader and map importers saving rules to external file. 2016-03-11 16:46:22 +00:00
Paul Chote
dd677ae916 Move TS lighting overrides to map.yaml. 2016-03-11 16:46:22 +00:00
Paul Chote
20e8bc249d Restore support for inline map rules. 2016-03-10 19:27:50 +00:00
Oliver Brakmann
2d98e41f11 Merge pull request #10839 from pchote/map-format-nine
Extract map rules to external files (and map format changes).
2016-03-09 21:50:56 +01:00
Paul Chote
d60e1ddfb9 Upgrade TS maps to format 10. 2016-03-08 22:19:27 +00:00
Paul Chote
1f9262f653 Upgrade D2K maps to format 10. 2016-03-08 22:19:26 +00:00
Paul Chote
9884a29b9e Upgrade RA maps to format 10. 2016-03-08 22:19:26 +00:00
Paul Chote
f4cdc523fc Upgrade TD maps to format 10. 2016-03-08 22:19:26 +00:00
Paul Chote
c58520e41b Add upgrade rules for Map format 9 -> 10. 2016-03-08 22:19:25 +00:00
Paul Chote
9c4dd54fa3 Generate map previews on save. 2016-03-08 21:13:38 +00:00
Paul Chote
b969d61466 Move advanced map yaml to their own files. 2016-03-08 20:54:54 +00:00
Paul Chote
e313ce62f0 Mount the map filesystem for yaml checks. 2016-03-08 20:54:51 +00:00
Paul Chote
e59557f588 Include all yaml and lua files in Map UID. 2016-03-08 20:54:26 +00:00
Paul Chote
8532f4deef Move smudge definitions from Map to SmudgeLayer. 2016-03-08 20:54:26 +00:00
abcdefg30
81749cf56d Merge pull request #10857 from pchote/map-format-more
Remove hardcoded map options and videos from the Map format.
2016-03-08 21:52:52 +01:00
Oliver Brakmann
bab1051e5e Merge pull request #10895 from abcdefg30/mammothWalls
Make mammoth tanks capable of crushing concrete walls
2016-03-08 18:55:35 +01:00
abcdefg30
9bb58b7e39 Make mammoth tanks capable of crushing concrete walls 2016-03-07 22:50:27 +01:00
Paul Chote
61e17b8c86 Fix option reporting when joining a server. 2016-03-07 21:41:15 +00:00
Paul Chote
3635888dd9 Upgrade TS maps to format 9. 2016-03-07 21:41:15 +00:00
Paul Chote
1afa56565c Upgrade TD maps to format 9. 2016-03-07 21:41:15 +00:00
Paul Chote
505dddcf96 Upgrade RA maps to format 9. 2016-03-07 21:41:14 +00:00
Paul Chote
5516557515 Upgrade D2K maps to format 9. 2016-03-07 21:41:14 +00:00
Paul Chote
4a7dfb9d4c Add upgrade rules for Map format 8 -> 9. 2016-03-07 21:41:14 +00:00
Paul Chote
01a14d9ae5 Move mission briefing to rules. 2016-03-07 21:41:14 +00:00
Paul Chote
668e13b849 Move mission videos to rules. 2016-03-07 21:41:13 +00:00
Paul Chote
8017844a15 Remove LobbyDefaults from mod.yaml. 2016-03-07 21:41:13 +00:00
Paul Chote
d4f8fe1666 Move map configuration to rules. 2016-03-07 21:41:13 +00:00
Paul Chote
5b2bf5b284 Move build radius configuration to rules. 2016-03-07 21:41:13 +00:00
Paul Chote
cce292a68a Move creeps configuration to rules. 2016-03-07 21:41:13 +00:00
Paul Chote
3c779d4101 Move starting units configuration to rules. 2016-03-07 21:41:13 +00:00
Paul Chote
e34864fe40 Use DefaultCash for the default cash. 2016-03-07 21:41:12 +00:00
Paul Chote
76b1810925 Remove unused FragileAlliances default. 2016-03-07 21:41:12 +00:00
Paul Chote
62f28d2909 Move shroud options to rules. 2016-03-07 21:41:12 +00:00
Paul Chote
f44993e4f7 Move crates option to rules. 2016-03-07 21:41:12 +00:00
Paul Chote
aed8518e04 Move cheats option to rules. 2016-03-07 21:41:12 +00:00
Paul Chote
5e59a9d1c1 Move ServerStarted notifications into the server thread. 2016-03-07 21:41:12 +00:00
Paul Chote
6389e9aa5c Fix automated map format upgrades. 2016-03-07 21:41:11 +00:00
Paul Chote
2029f34c86 Remove redundant Rules definition from ImportLegacyMapCommand. 2016-03-07 21:41:11 +00:00
abcdefg30
51ceda4e7f Merge pull request #10885 from pchote/fix-partially-locked-slots
Prevent locked spawns from being selected by other players.
2016-03-07 21:23:28 +01:00
abcdefg30
e8a051e761 Fix an exploit were players were able to repair at enemy service depots 2016-03-07 15:53:40 +01:00
abcdefg30
3b6e481196 Account for allied service depot when ordering an auto repair 2016-03-07 15:26:50 +01:00
abcdefg30
bfe9bc329c Fix players being able to command allied units to the service depot 2016-03-07 15:18:23 +01:00
Taryn Hill
0dcc51b3a3 Merge pull request #10890 from Micr0Bit/patch-3
Add SoScared to AUTHORS
2016-03-07 07:12:03 -06:00
Micr0Bit
04cd769ac2 Add SoScared to AUTHORS
should not have to explain why ... thank you @SoScared for :

https://www.youtube.com/watch?v=ueosN-JFqG0
http://www.twitch.tv/soscared
https://www.youtube.com/user/SoScared101
http://www.sleipnirstuff.com/forum/viewtopic.php?f=82&t=19414
http://www.sleipnirstuff.com/forum/viewtopic.php?f=82&t=19354
2016-03-07 03:51:29 +01:00
reaperrr
2378b427fe Fix GravityBomb crashing when Image is null 2016-03-06 20:04:41 +01:00
Oliver Brakmann
c02b70ee6d Merge pull request #10884 from pchote/revert-keyrepeat
Revert "Added Keybord input filter to only register first key press."
2016-03-06 19:57:06 +01:00
Paul Chote
ccdae033ff Prevent locked spawns from being selected. 2016-03-06 11:38:00 +00:00
Paul Chote
8b9bdadf53 Don't propagate locked spawns when changing slots. 2016-03-06 11:24:24 +00:00
abcdefg30
b1b4c0bbd4 Merge pull request #10856 from reaperrr/smoke-facings
Added facings support to sprite trails
2016-03-06 12:18:29 +01:00
Paul Chote
cff482bb1a Revert "Added Keybord input filter to only register first key press."
This reverts commit 57cd25d5f8.
2016-03-06 11:11:20 +00:00
Matthias Mailänder
f23df1170b Merge pull request #10875 from RoosterDragon/mod-package-dispose
Close some packages
2016-03-06 10:06:33 +01:00
Oliver Brakmann
1fb68b8a20 Merge pull request #10778 from Mailaender/test-nuke-sprites
Exposed nuke missile sprites to lint testing
2016-03-05 21:52:20 +01:00
RoosterDragon
4bd57aec91 Close packages that are not required when loading mod metadata. 2016-03-05 15:00:24 +00:00
Oliver Brakmann
0039cbc590 Fix indentation in ProductionFromMapEdge 2016-03-05 14:46:16 +01:00
Oliver Brakmann
df7ec2b029 Fix ProductionFromMapEdge spawning ground units in inappropriate places 2016-03-05 14:22:12 +01:00
Oliver Brakmann
be3bd52474 Add a method returning the closest edge cell matching a condition to Map 2016-03-05 14:17:01 +01:00
Oliver Brakmann
f547a4b6e9 Add ProductionSpawnLocationInit, used by ProductionFromMapEdge
This enables fixed per-factory actor spawn locations.
2016-03-05 14:16:57 +01:00
Oliver Brakmann
a1e6f65f8f Use a "real" Move instead of VisualMove in ProductionFromMapEdge 2016-03-05 14:11:52 +01:00
Oliver Brakmann
7a29cfeaea Add optional use of a rally point to ProductionFromMapEdge 2016-03-05 14:11:46 +01:00
reaperrr
717a5063d9 Add facings support to projectile trails and SmokeTrailWhenDamaged 2016-03-05 13:49:07 +01:00
Matthias Mailänder
83a13f1594 Merge pull request #10877 from RoosterDragon/png-dispose
Ensure we do not leak bitmaps when parsing invalid PNG files
2016-03-05 13:46:01 +01:00
reaperrr
d063087de9 Add TrailSequences to Bullet
And use that instead of Sequences.
2016-03-05 13:45:06 +01:00
Paul Chote
f50cd2307a Merge pull request #10876 from RoosterDragon/upgrade-fix-nre
Fix a theoretical null reference in UpgradeWeaponRules.
2016-03-05 10:42:37 +00:00
RoosterDragon
0bce7a1b71 Fix a possible null reference in UpgradeWeaponRules. 2016-03-04 21:29:56 +00:00
RoosterDragon
9166d9b369 Ensure we do not leak bitmaps when parsing invalid PNG files. 2016-03-04 19:55:44 +00:00
Pavel Penev
aa78dc32e3 Merge pull request #10874 from obrakmann/fix-spyware-typos
Fix typos in advanced settings dialog
2016-03-04 21:19:21 +02:00
Oliver Brakmann
bae8c09e8c Merge pull request #10873 from abcdefg30/lobbyGame
Change the game lobby's chat label from 'Lobby' to 'Game'
2016-03-04 20:11:22 +01:00
Oliver Brakmann
85d0be5d3e Fix typos in advanced settings dialog 2016-03-04 19:29:18 +01:00
abcdefg30
436e364c58 Merge pull request #10803 from obrakmann/player-census
Add ability to collect system information from users' systems
2016-03-04 16:27:32 +01:00
abcdefg30
ab4afb238b Merge pull request #10863 from reaperrr/ROT-TurnSpeed
Renamed ROT to TurnSpeed
2016-03-04 16:23:06 +01:00
abcdefg30
d58eb46833 Change the game lobby's chat label from 'Lobby' to 'Game' 2016-03-04 16:16:36 +01:00
abcdefg30
bc4a512d7d Merge pull request #10837 from RoosterDragon/priority-queue-tests
Add tests for PriorityQueue
2016-03-04 15:16:54 +01:00
reaperrr
0a168b26f0 Fix InitialFacing of turrets to match Mobile 2016-03-04 15:13:56 +01:00
reaperrr
cddf182996 Renamed ROT to TurnSpeed on Mobile, Aircraft, Turreted and ThrowsParticle 2016-03-04 15:13:55 +01:00
RoosterDragon
0790884e4f Fix namespaces of some tests. 2016-03-03 22:31:46 +00:00
RoosterDragon
0306a8de6c Add tests and make minor fixes to PriorityQueue. 2016-03-03 22:31:45 +00:00
Paul Chote
bc0efbefd1 Include OpenGL version string in sysinfo. 2016-03-02 21:33:12 +01:00
Oliver Brakmann
6b4ccecabe Add ability to collect system information from users' systems 2016-03-02 21:33:12 +01:00
ABrandau
9087527b48 Adjust Actor stats to match TS and FS stats. 2016-03-01 19:00:53 -04:00
reaperrr
d3ab8dbd01 Add facing support to Smoke effect 2016-03-01 23:37:27 +01:00
Oliver Brakmann
86e4a72dce Merge pull request #10841 from pchote/oramod
Add support for loading mods from `oramod` packages.
2016-02-29 22:13:40 +01:00
abcdefg30
09c48012d8 Merge pull request #10770 from AoAGeneral/upstream/myfeature
TD Balance Patch Revised. 021616
2016-02-29 15:47:01 +01:00
Paul Chote
293b6202ef Add support for oramod packages. 2016-02-28 20:30:40 +00:00
Paul Chote
5c32a77179 Don't dispose mod packages when returning to mod chooser. 2016-02-28 20:25:40 +00:00
Matthias Mailänder
50294917da Document FlashType. 2016-02-28 20:54:22 +01:00
Matthias Mailänder
8e62186c6c Require MissileWeapon. 2016-02-28 20:54:22 +01:00
Matthias Mailänder
a7a6815f99 Lint test the nuke missile sprites. 2016-02-28 20:54:10 +01:00
Pavel Penev
0eaa57c017 Merge pull request #10838 from pchote/map-saving-packages
Rework map loading and saving.
2016-02-28 21:50:18 +02:00
Paul Chote
21d19e65a5 Unhardcode map installation directory. 2016-02-28 19:34:56 +00:00
Paul Chote
be52c1cb72 Properly use the virtual filesystem for map loading and saving. 2016-02-28 19:27:33 +00:00
Oliver Brakmann
2f374d2a66 Merge pull request #10847 from penev92/fixWindowsDeps
Fix making dependencies on Windows
2016-02-28 13:37:08 +01:00
Oliver Brakmann
516f973487 Merge pull request #10848 from GraionDilach/fix-insuffunds-header
Normalize InsufficientFundsWarning header.
2016-02-28 13:27:16 +01:00
Zimmermann Gyula
505542955c Normalize InsufficientFundsWarning header.
It got merged with the old, now outdated header.
2016-02-28 12:57:36 +01:00
Paul Chote
6490a66ffc Fix false Folder contains for absolute paths. 2016-02-28 10:18:50 +00:00
Paul Chote
b0f4646b88 Dispose package on exception. 2016-02-28 10:18:50 +00:00
Paul Chote
617113fa86 Rework IReadWritePackage interface. 2016-02-28 10:18:50 +00:00
Paul Chote
bee3eb2c0a Dispose MapPreviews and map packages. 2016-02-28 10:18:49 +00:00
Paul Chote
b5f792b997 Fix unmounting of explicit packages. 2016-02-28 10:18:49 +00:00
Pavel Penev
970f295af0 Extract SDL zip when making dependencies using purely PowerShell commands
Fixes script crash when the currently used .NET DLL is not found (it's available only in .NET 4.5.1+ and even then it can fail to locate it for some reason).
2016-02-27 21:05:57 +02:00
Oliver Brakmann
584bf9e7f7 Merge pull request #10570 from abcdefg30/InsufficientFunds
Add support for playing an InsufficientFunds warning
2016-02-27 18:09:13 +01:00
Oliver Brakmann
59d9eeaa08 Merge pull request #10795 from Mailaender/screenmap-bounds-crash
Fixed screen map updates for invisible mobile actors
2016-02-27 17:52:49 +01:00
Paul Chote
0e87b49a61 Merge pull request #10802 from Mailaender/exit-sprite-checks
Added exit codes to CheckSequenceSprites
2016-02-27 13:36:53 +00:00
Matthias Mailänder
e4f3aeeb13 Terminate with exit codes on missing sprite sequences. 2016-02-27 14:12:01 +01:00
Matthias Mailänder
9734054582 Reduce duplication. 2016-02-27 14:10:17 +01:00
Paul Chote
bc379d2357 Merge pull request #10831 from abcdefg30/flare
Fix the flare being invisible
2016-02-27 12:57:50 +00:00
Paul Chote
20c8a2bb74 Merge pull request #10800 from obrakmann/fix10330_lobbycommand-input-validation
Fix LobbyCommands not validating user-modifiable input
2016-02-27 11:49:43 +00:00
Paul Chote
d4963311ed Merge pull request #10363 from Mailaender/ts-hospital-heal
Added hospital healing to Tiberian Sun
2016-02-27 11:17:56 +00:00
Matthias Mailänder
3117b50c92 Merge pull request #10840 from Micr0Bit/patch-1
Add FiveAces to AUTHORS
2016-02-27 09:31:36 +01:00
Micr0Bit
b625de4503 Add FiveAces to AUTHORS
https://www.youtube.com/watch?v=Y5IDhShbDNI (picked the full name from the description)
https://www.youtube.com/user/CovertFlobert
http://www.sleipnirstuff.com/forum/viewtopic.php?f=82&t=18054

i think the efforts and time that he is spending on making those Videos and to help making OpenRA more popular with his passion and creativity should be rewarded with a credit-entry
2016-02-27 01:32:17 +01:00
abcdefg30
726f446185 Fix the flare being invisible 2016-02-26 23:58:32 +01:00
Oliver Brakmann
94228cd372 Merge pull request #10836 from RoosterDragon/fuzzy-lock-fix
Fix thread issue in AttackOrFleeFuzzy
2016-02-26 23:19:25 +01:00
RoosterDragon
3ff678ef86 Lock fuzzyEngine during construction so it is published correctly. 2016-02-26 21:23:19 +00:00
Oliver Brakmann
fe6c4d8e5c Merge pull request #10788 from pchote/widget-moddata
Remove Game.ModData references from Widget code.
2016-02-25 22:18:18 +01:00
reaperrr
589b2d19c3 Merge pull request #10797 from pchote/fix-upgrade-rules
Fix mod updater and clear out legacy rules.
2016-02-25 14:34:47 +01:00
Oliver Brakmann
07ec56fd22 Merge pull request #10821 from obrakmann/pr10559-squashed
Added mousewheel zooming
2016-02-24 22:37:00 +01:00
Philipp Schärer
ea74499ec2 Added mousewheel zooming 2016-02-24 22:22:32 +01:00
RoosterDragon
ee4307cf9d Merge pull request #10819 from abcdefg30/selectMillHus
Adjust the (visual) selection bounds of the Windmill and the Lighthouse
2016-02-24 20:26:03 +00:00
RoosterDragon
b04e578857 Merge pull request #10814 from Mailaender/unselect-crash-site
Fixed selectable crash sites
2016-02-24 20:23:52 +00:00
Matthias Mailänder
286028eb0b Merge pull request #10820 from abcdefg30/tdBounds
Adjust the bounds of structures in TD
2016-02-24 20:40:07 +01:00
RoosterDragon
94638606fa Merge pull request #10680 from Mailaender/redcross-pip
Added artwork for the constant TD hospital healing power-up
2016-02-24 19:23:21 +00:00
RoosterDragon
c63d71b95d Merge pull request #10599 from Mailaender/sdl-2.0.4
Updated to SDL 2.0.4 for Windows
2016-02-24 19:07:51 +00:00
abcdefg30
7f9c3e978e Adjust the bounds of structures in TD 2016-02-24 18:04:06 +01:00
abcdefg30
376c788ba0 Adjust the (visual) selection bounds of the Windmill and the Lighthouse 2016-02-24 17:44:00 +01:00
abcdefg30
85ee351d96 Merge pull request #10636 from reaperrr/missile-speed
Refactor naming of Missile's speed-related properties
2016-02-24 17:39:25 +01:00
Paul Chote
a6c4eb330a Remove modRules widget logic argument. 2016-02-23 23:34:36 +00:00
Paul Chote
84b470017f Remove static Game.ModData references from widget logic. 2016-02-23 23:34:34 +00:00
Paul Chote
ff2aabda9b Remove ModRules assumption from editor code. 2016-02-23 23:32:59 +00:00
Paul Chote
a553b46d3b Remove upgrade pre-20151224 upgrade rules. 2016-02-23 23:31:32 +00:00
Oliver Brakmann
1dcc43801a Fix broken map format upgrade 2016-02-23 23:28:16 +00:00
Paul Chote
d2566d442c Load files for upgrading using the filesystem. 2016-02-23 23:24:27 +00:00
Matthias Mailänder
ecbd1a0247 Merge pull request #9509 from penev92/upgradeTickTank
Convert Tick Tank to use DeployToUpgrade + some fixes
2016-02-23 23:33:38 +01:00
Oliver Brakmann
4f1fa3acec Merge pull request #10786 from pchote/mappreview-packages
Remove internal use of map paths.
2016-02-23 22:52:54 +01:00
abcdefg30
fad0ed7124 Make use of the new InsufficientFunds warning in ra, d2k and ts 2016-02-23 22:16:54 +01:00
abcdefg30
063321ea6b Fix the horrible formatting in CustomBuildTimeValueExts 2016-02-23 22:16:52 +01:00
abcdefg30
be1080f7bd Add support for playing an InsufficientFunds warning 2016-02-23 22:16:51 +01:00
Matthias Mailänder
eb9d47a316 Avoid redundancy and selectable crash sites. 2016-02-23 22:08:12 +01:00
RoosterDragon
494f71a8bb Merge pull request #10758 from Mailaender/ice-tiles
Added the regrow-able LAT ice sets to the map editor
2016-02-23 20:56:56 +00:00
Oliver Brakmann
7249de5434 Merge pull request #10801 from pchote/update-license-header
Update license header for 2016 and GPLv3+.
2016-02-23 20:22:19 +01:00
abcdefg30
3496eed1e1 Merge pull request #10804 from obrakmann/fix10683_broken-dev-commands
Fix broken dev commands
2016-02-22 13:31:58 +01:00
Paul Chote
8c7237ddc4 Update README. 2016-02-22 08:26:47 +00:00
Pavel Penev
118d015e4d Make the TS map importer aware of deployable actors who use upgrades instead of transforming 2016-02-22 02:44:29 +02:00
Pavel Penev
17ef6efefc Fix AttackFollow (and consequently AttackTurreted) firing at old target when the trait is reenabled
Most noticeable by ordering a deployed Tick Tank to fire at the ground, then undeploying it and deploying it again.
2016-02-22 02:44:28 +02:00
Pavel Penev
ba0781c28d Remove now-redundant actor gatick (deployed tick tank) 2016-02-22 02:44:27 +02:00
Pavel Penev
99afec6533 Convert the Tick Tank to use DeployToUpgrade 2016-02-22 02:44:26 +02:00
Pavel Penev
07947179cd Don't crash on multiple Attack* traits
This is important for actors that use upgrades to switch between attack types.
2016-02-22 02:44:25 +02:00
Paul Chote
e71225496b Clarify GPL version. 2016-02-21 16:30:48 +00:00
Paul Chote
b396965fd9 Update licence header year. 2016-02-21 16:27:31 +00:00
Matthias Mailänder
65942ecfbf Merge pull request #10722 from pchote/fix-asset-dependency
Remove asset requirement from dedicated servers and the resource site.
2016-02-21 17:20:19 +01:00
Paul Chote
8a9bce45ec Remove map loading shim. 2016-02-21 16:11:36 +00:00
Paul Chote
d492c23a6d Store map packages in MapPreview. 2016-02-21 16:11:36 +00:00
Paul Chote
226081d379 Remove map saving shim method. 2016-02-21 16:11:36 +00:00
Paul Chote
573e26c887 Load and save maps using packages. 2016-02-21 16:11:35 +00:00
Oliver Brakmann
cf9f25eb0b Fix LobbyCommands not validating user-modifiable input
Validates all input that could have been changed with custom yaml rules.
2016-02-21 16:50:43 +01:00
Oliver Brakmann
40514184d8 Convert CRLF to LF line endings in LobbyCommands.cs 2016-02-21 16:30:53 +01:00
Paul Chote
9c3b967a47 Remove dead map saving code. 2016-02-21 15:11:55 +00:00
Matthias Mailänder
3885f0b559 Fix screen map updates for boundless actors. 2016-02-21 11:34:33 +01:00
Matthias Mailänder
9d85ddb82c Merge pull request #10191 from abcdefg30/backfallDeathAnim
Add support for a FallbackSequence in WithDeathAnimation
2016-02-21 10:18:47 +01:00
abcdefg30
5db994b83f Merge pull request #10372 from Mailaender/cnc-tooltips
Added tooltips for civilian buildings to Tiberian Dawn
2016-02-21 10:01:30 +01:00
Matthias Mailänder
eedf5ce6f4 Merge pull request #10785 from pchote/fix-shadow-height
Add terrain height support to WithShadow.
2016-02-21 10:00:14 +01:00
abcdefg30
ff3f9356cc Merge pull request #10695 from bateramos/upstream/#10029
Bug fix #10029 Plane resupply
2016-02-20 17:28:37 +01:00
abcdefg30
0a07be801a Merge pull request #10774 from obrakmann/fix-make-version
Fix 'make version' to adjust the user's custom map path
2016-02-20 17:28:27 +01:00
abcdefg30
9e799537f8 Fix make version on windows 2016-02-20 17:18:55 +01:00
Oliver Brakmann
8d1bb58754 Fix 'make version' to adjust the user's custom map path 2016-02-20 17:18:55 +01:00
abcdefg30
f7d53311e3 Merge pull request #10751 from RoosterDragon/shuffle
Improve Util.Shuffle
2016-02-20 17:04:44 +01:00
Paul Chote
04c40eddfe Add terrain height support to WithShadow. 2016-02-20 15:31:36 +00:00
Matthias Mailänder
16a3eb4d2c Merge pull request #10781 from pchote/fix-windows-fs
Fix filesystem references under Windows.
2016-02-19 22:00:54 +01:00
Paul Chote
34e6bfdfa0 Fix filesystem references under Windows. 2016-02-19 20:44:06 +00:00
PedroFerreiraRamos
bf97dd6b7b Bug fix #10029 Plane resupply 2016-02-19 08:35:18 -02:00
Matthias Mailänder
c420d24fb3 only display generic names for civilian buildings in missions 2016-02-19 10:26:12 +01:00
Matthias Mailänder
2eca30db76 add non-generic tooltips from the original game 2016-02-19 10:19:20 +01:00
Matthias Mailänder
00e95864b9 Merge pull request #10768 from pchote/startup-mappreview
Avoid creating throwaway map objects at startup.
2016-02-19 09:20:18 +01:00
Paul Chote
02ab54c9bc Load MapPreview data without initialising a full Map. 2016-02-18 20:19:44 +00:00
Paul Chote
ab25e26312 Add method to check if IGlobalModData exists. 2016-02-18 20:19:43 +00:00
Matthias Mailänder
3674038f00 Merge pull request #10765 from pchote/readonlyfs
Don't reenumerate FileSystem when switching maps.
2016-02-18 21:15:41 +01:00
Paul Chote
fe75f265f8 Disable now-invalid sequence caching. 2016-02-18 18:12:34 +00:00
Paul Chote
0b13811976 Don't reenumerate files when loading maps. 2016-02-18 18:12:33 +00:00
Paul Chote
88f6daf57f Misc remaining FileSystem cleanups. 2016-02-18 18:12:33 +00:00
Paul Chote
d573e21a48 Traits open files via the Map. 2016-02-18 18:12:33 +00:00
Paul Chote
7106d7ecdf Pass ModData to ILintPass. 2016-02-18 18:12:33 +00:00
Paul Chote
24e9294741 Tidy ModData/ModFiles usage in utility commands. 2016-02-18 18:12:33 +00:00
Paul Chote
edf59b159f Small tidy in AssetBrowserLogic. 2016-02-18 18:12:32 +00:00
Paul Chote
a4337648e1 Use IReadOnlyFileSystem in MissionBrowserLogic. 2016-02-18 18:12:32 +00:00
Paul Chote
a0141318d5 Pass FileSystem in to InstallUtils. 2016-02-18 18:12:32 +00:00
Paul Chote
b9f8301959 Use IReadOnlyFileSystem in Sound code. 2016-02-18 18:12:32 +00:00
Paul Chote
d1d3d72edb Implement IReadOnlyFileSystem on Map. 2016-02-18 18:12:32 +00:00
Paul Chote
6fde09c075 Use IReadOnlyFileSystem in voxel loader. 2016-02-18 18:12:31 +00:00
Paul Chote
9341055f50 Use IReadOnlyFileSystem in UI code. 2016-02-18 18:12:31 +00:00
Paul Chote
b347fade71 Use IReadOnlyFileSystem in artwork loaders. 2016-02-18 18:12:31 +00:00
Paul Chote
a1bc70cb58 Use IReadOnlyFileSystem in MusicInfo. 2016-02-18 18:12:31 +00:00
Paul Chote
9978e20a83 Introduce IReadOnlyFileSystem interface. 2016-02-18 18:12:31 +00:00
reaperrr
4d3a4a32b9 Merge pull request #10750 from obrakmann/drop-invalid-target
Fixed not dropping targets that are out of range if the attacker cannot move
2016-02-18 17:02:48 +01:00
reaperrr
76e7a27ca5 Merge pull request #10767 from obrakmann/undo-medics-low-selection-prio
Undo lowering selection priority of medics and mechanics
2016-02-18 15:47:24 +01:00
Matthias Mailänder
64de0efa87 Merge pull request #10769 from abcdefg30/credits
Fix the spacing at the end of the AUTHORS file
2016-02-17 21:29:07 +01:00
Oliver Brakmann
426bf0d975 Merge pull request #10731 from RoosterDragon/fuzzy-singletons
Create singletons for AttackOrFleeFuzzy rulesets
2016-02-17 21:25:03 +01:00
Oliver Brakmann
b28d03049b Merge pull request #10728 from Codes4Fun/bleed
Fixed domain index updates for bridges
2016-02-17 20:46:23 +01:00
Paul Chote
65f017acc9 Revert "Make travis fetch the mod content before running tests."
This reverts commit 1f4269df76.
2016-02-17 01:47:25 +00:00
Paul Chote
33c52963d7 Revert "Lint sequences using the external utility command."
This reverts commit 1442056cb1.
2016-02-17 01:47:24 +00:00
Paul Chote
31c83c46a8 Don't force assets on dedicated servers and tools. 2016-02-17 01:47:22 +00:00
abcdefg30
2b0d87ea3f Fix the spacing at the end of the AUTHORS file
Polishes the ingame look
2016-02-16 21:32:29 +01:00
AoAGeneral
a8615dc1eb TD Balance Patch Revised. 021616
Grenadier damage vs light increase to 80 from 75.

Increase APC HP to 210 from 200.

Guard Tower damage vs heavy reduced to 30 from 35.

SAM damage increase to 35 from 30.

Light Tank movement speed reduced to 110 from 113.

Light Tank Cost increased to 700 from 600. (Build time increase to 17
seconds from 15)

Light Tank HP Decreased to 340 from 350.

Rocket Infantry damage vs none decreased to 30 from 50.

(Revised from https://github.com/OpenRA/OpenRA/pull/10761)

forums will be updated once check made with the notes about GT.
2016-02-16 00:22:09 -08:00
Oliver Brakmann
c7089d9fca Undo lowering selection priority of medics and mechanics (TS) 2016-02-15 21:28:18 +01:00
Oliver Brakmann
742cc613c5 Undo lowering selection priority of medics and mechanics (RA) 2016-02-15 21:27:36 +01:00
Oliver Brakmann
5866164c40 Merge pull request #10353 from Mailaender/resize-map
Added a resize map command
2016-02-15 21:10:39 +01:00
Oliver Brakmann
7b90eea9aa Merge pull request #10754 from Mailaender/medic-cursor
Added the medic heal cursor
2016-02-15 21:02:49 +01:00
abcdefg30
72aefba89e Merge pull request #10748 from Mailaender/veins-minimap
Gave veins an orange minimap color
2016-02-15 15:54:09 +01:00
abcdefg30
07bdf49934 Merge pull request #10703 from pchote/explicitpackages
Unify filesystem package syntax.
2016-02-15 15:00:31 +01:00
Matthias Mailänder
3a8d28e508 Check for out of bounds map actors and remove them if so. 2016-02-15 08:49:04 +01:00
Matthias Mailänder
01577b400b Add heal cursor to GDI Medic. 2016-02-15 08:41:06 +01:00
Paul Chote
b50b2f31b5 Restore key:value syntax for MapFolders. 2016-02-15 00:44:37 +00:00
Paul Chote
a229e4253f Implement new syntax for mod-specific filesystem requests. 2016-02-15 00:44:36 +00:00
Paul Chote
a0bc556172 Implement new syntax for package-specific filesystem requests. 2016-02-15 00:44:36 +00:00
Paul Chote
102880c80f Use the virtual filesystem to resolve MapFolder paths. 2016-02-15 00:44:36 +00:00
RoosterDragon
3a99111a42 Improve Util.Shuffle.
Reduce algorithmic complexity from O(n^2) to O(n).
2016-02-14 22:22:00 +00:00
Oliver Brakmann
412188465c Merge pull request #10666 from Mailaender/nuget-update
Updated NuGet dependencies
2016-02-14 23:03:15 +01:00
Oliver Brakmann
fe25b9501b Merge pull request #10723 from abcdefg30/nukeHardcode
Unhardcode the palette the missile weapon of the NukePower uses
2016-02-14 22:43:38 +01:00
Oliver Brakmann
f3eab0eab0 Merge pull request #10742 from mazarf/bleed
Fix max view distance check.
2016-02-14 22:39:07 +01:00
abcdefg30
b27950b517 Unhardcode the palette the missile weapon of the NukePower uses 2016-02-14 22:32:53 +01:00
Oliver Brakmann
ce62e456d7 Fix TD gunboat attack behaviour 2016-02-14 21:28:50 +01:00
teees
dc6d31cec8 Fix turreted immovable actors not dropping targets that are out of range 2016-02-14 21:28:50 +01:00
teees
e95cb7540d Fix immovable actors not dropping targets that are out of range 2016-02-14 21:28:50 +01:00
Oliver Brakmann
dec9018723 Merge pull request #10759 from GraionDilach/spriteeffect-bleeding-fog
Do not render trails under fog by default.
2016-02-14 20:51:43 +01:00
abcdefg30
5327ea1418 Fix crushed sequences not appearing due to an FrameEndTask 2016-02-14 19:38:13 +01:00
abcdefg30
24ec7b0ad7 Fix the mobile trait spamming crush-notifications 2016-02-14 19:38:12 +01:00
abcdefg30
a46815e532 Move the creation of the CrushedSequence to WithDeathAnimation 2016-02-14 18:52:00 +01:00
abcdefg30
fe5754e2bd Change the parameters of ICrushable.CrushableBy 2016-02-14 18:51:59 +01:00
abcdefg30
9ea2a7a0bd Add [RequireExplicitImplementation] to the ICrushable interface 2016-02-14 18:51:58 +01:00
abcdefg30
17e23a7adc Add support for a FallbackSequence in WithDeathAnimation
Used when the actor is killed by non-standard means, like suicide.
2016-02-14 18:51:58 +01:00
abcdefg30
f21d1f52e7 Make the ICrushable implementation explicit 2016-02-14 18:51:57 +01:00
abcdefg30
8b59ce4dc2 Add a new INotifyCrushed interface 2016-02-14 18:51:56 +01:00
abcdefg30
e343803810 Remove an unnecessary Where in Crate.cs 2016-02-14 18:51:55 +01:00
Zimmermann Gyula
f37e59e116 Do not render trails under fog by default.
Exposed a boolean for rendering a SpriteEffect under fog. Exposed a setting in LeavesTrails for this boolean, defaulting to false.
2016-02-14 18:11:43 +01:00
Matthias Mailänder
93b3b454aa Add the regrowable LAT ice sets to the map editor. 2016-02-14 17:03:43 +01:00
reaperrr
08034fa7e0 Upgrade D2k missile rules 2016-02-14 13:43:45 +01:00
reaperrr
838ad30622 Upgrade TD missile rules 2016-02-14 13:43:45 +01:00
reaperrr
32bb632dbc Upgrade RA missile rules 2016-02-14 13:43:45 +01:00
reaperrr
e75cda66ec Upgrade TS missile rules 2016-02-14 13:41:27 +01:00
reaperrr
fe76742651 Upgrade rules for renamed Missile speed properties 2016-02-14 13:41:27 +01:00
reaperrr
462b8583a2 Refactor Missile speed nomenclature 2016-02-14 13:41:27 +01:00
Matthias Mailänder
0db2682fdf Add heal cursor to GDI Medic. 2016-02-14 11:01:45 +01:00
Matthias Mailänder
a471b5c5ab The sell2 cursor doesn't have a purpose yet. 2016-02-14 11:01:45 +01:00
Matthias Mailänder
6d80174e81 Cursor undeploy is in use. 2016-02-14 11:01:44 +01:00
Oliver Brakmann
2debda926a Merge pull request #10205 from abcdefg30/fort-lonestar
Fix and rebalance Fort Lonestar
2016-02-13 22:00:33 +01:00
Matthias Mailänder
8b9e60ba82 Set the bounds when resizing maps. 2016-02-13 21:56:51 +01:00
Matthias Mailänder
284e6ea061 Add a resize map command. 2016-02-13 21:56:51 +01:00
Oliver Brakmann
4c1322b4cd Merge pull request #10740 from reaperrr/fix-missile-nre
Fix Missile projectile crashing with NRE if it has no Image
2016-02-13 21:25:50 +01:00
Matthias Mailänder
c881a174ee Give veins an orange minimap color. 2016-02-13 21:01:14 +01:00
Matthias Mailänder
d189838b77 Add hospital healing. 2016-02-13 20:47:34 +01:00
Oliver Brakmann
7f5143bf46 Merge pull request #10746 from Phrohdoh/armament-yaml-excpt
Add an explicit YamlException to ArmamentInfo
2016-02-13 19:07:42 +01:00
Oliver Brakmann
6007bca0a2 Merge pull request #10744 from Mailaender/aircraft-falls-to-earth
Added missing Requires<AircraftInfo> to FallsToEarthInfo.
2016-02-13 18:56:22 +01:00
Taryn Hill
4f798ede3c Add an explicit YamlException to ArmamentInfo
Throw a more descriptive exception when the current weapon ruleset
doesn't contain an entry for the referenced weapon.
2016-02-13 09:15:16 -06:00
Matthias Mailänder
00ecea03cb Require AircraftInfo for activity FallToEarth. 2016-02-13 14:24:19 +01:00
Mazar Farran
22a3358581 Fix max view distance check. 2016-02-12 21:01:34 -08:00
reaperrr
8729f39154 Fix Missile projectile crashing with NRE if it has no Image 2016-02-13 01:06:22 +01:00
Oliver Brakmann
613854de91 Merge pull request #10632 from reaperrr/cleanup-harv
Improve Harvester-related code
2016-02-12 22:03:51 +01:00
Oliver Brakmann
781d173b7d Merge pull request #10733 from abcdefg30/leaveEditor
Fix the misleading wording of the confirm dialogs
2016-02-12 20:49:37 +01:00
abcdefg30
b23c5687ec Fix a crash when using parabombs on Fort Lonestar 2016-02-12 16:56:33 +01:00
abcdefg30
3a217fed20 Let units directly hunt instead of attack move on Fort Lonestar 2016-02-12 16:56:33 +01:00
abcdefg30
07f9ec7562 Add "Mobile Tent" actor
It is available through crates
2016-02-12 16:56:32 +01:00
abcdefg30
b3436f9b6a Make the walls have a player as owner
except when there is no player in the respective edge.
2016-02-12 16:56:31 +01:00
abcdefg30
59385f9b04 Add new difficulties to Fort Lonestar and try to balance them 2016-02-12 16:56:30 +01:00
abcdefg30
0b284de241 Fix the spawnpoint selection not working on Fort Lonestar 2016-02-12 16:56:30 +01:00
abcdefg30
fff67d3348 Add support for sending Iron Curtained units on Fort Lonestar 2016-02-12 16:56:29 +01:00
abcdefg30
7092e81f2d Make MECH buildable on Fort Lonestar but very expensive 2016-02-12 16:56:28 +01:00
abcdefg30
05c77c6df9 Add myself to the Authors of Fort Lonestar 2016-02-12 16:56:28 +01:00
abcdefg30
5dc91d533e Add support for sending unarmed actors as part of the waves on Fort Lonestar 2016-02-12 16:56:27 +01:00
abcdefg30
ba93269e73 Enable AllyBuildRadius and add GivesBuildableArea to the defenses on Fort Lonestar 2016-02-12 16:56:26 +01:00
abcdefg30
8b22f4fc7c Add different ProductionBars for each production queue on Fort Lonestar 2016-02-12 16:56:26 +01:00
abcdefg30
be0903ab34 Improve crates on Fort Lonestar 2016-02-12 16:56:25 +01:00
abcdefg30
0f0cb20629 Add paratroopers to Fort Lonestar 2016-02-12 16:56:24 +01:00
abcdefg30
1818c362da Clean fort-lonestar.lua up 2016-02-12 16:56:23 +01:00
abcdefg30
7812087209 Clean the yaml up and fix wrong inheritance on Fort Lonestar
Fort Lonestar became unplayable when someone changed the weapon default definitions
As most of its weapons try to override the defaults this resulted in two SpreadDamageWarheads (Warhead: and Warhead@1Dam:) for each weapon
2016-02-12 16:56:23 +01:00
Oliver Brakmann
6fa4b2bbda Fix missing 'Cancel' buttons on some confirmation prompts 2016-02-12 16:48:59 +01:00
abcdefg30
3604d901b1 Fix the missleading wording of the confirm dialogs 2016-02-12 16:48:58 +01:00
abcdefg30
b8942d4298 Merge pull request #10639 from RockyTV/replay-fix
Wrap OpenRA.exe arguments in quotes
2016-02-11 15:01:37 +01:00
RoosterDragon
3b480ea4bb Create singletons for AttackOrFleeFuzzy rulesets.
This avoids the cost of recreating the engines and rules for every AI and AI squad.
2016-02-10 20:17:27 +00:00
Codes4Fun
c9ed97524f Fix for 7539.
When the bridge damage state changes, the domain cells of the bridge
would pull in the first neighbors domain which may be untraversable.
This change only pulls the domain of traversable neighbor tiles.
2016-02-09 14:38:16 -08:00
Oliver Brakmann
6093398de3 Merge pull request #10543 from whinis/RestartSkirmish
Restart skirmish matches
2016-02-09 20:42:02 +01:00
Alexandre Oliveira
bcb8daba84 Wrap OpenRA arguments in quotes
On Windows, if the path to the replay contained spaces, it wouldn't be parsed correctly and would crash the game.
2016-02-09 11:21:00 -02:00
Matthias Mailänder
93466c74ba Merge pull request #10701 from pchote/map-cleanup-part-4
Remove automatic map format upgrades and add versioned user map dirs
2016-02-08 23:08:55 +01:00
Matthias Mailänder
a5bc4f756d Merge pull request #10721 from pchote/assemblycleanup
Fix mod assembly loading on Windows.
2016-02-08 23:00:09 +01:00
Paul Chote
f839e96ea7 Use versioned user map directories. 2016-02-08 18:53:28 +00:00
Paul Chote
34910cd128 Move map format upgrades to an explicit upgrade rule. 2016-02-08 18:53:28 +00:00
Paul Chote
e4867ad18a Clean up GetMapHash lint rule. 2016-02-08 18:51:58 +00:00
Paul Chote
6c7b687f34 Move map UID calculation to a static method. 2016-02-08 18:51:58 +00:00
Paul Chote
6c6826c3f3 Fix mod assembly loading on Windows. 2016-02-07 23:38:12 +00:00
Matthias Mailänder
e0d74455f5 Merge pull request #10720 from GraionDilach/gen2-map-import-waypoint-fix
Do not crash during importing a TS map if a waypoint ID isn't an integer.
2016-02-07 21:36:28 +01:00
Oliver Brakmann
5d88b7fae2 Merge pull request #10716 from Mailaender/all-assets
Re-enabled All Packages which seems to be fast enough now.
2016-02-07 21:10:31 +01:00
Pavel Penev
336fee45b1 Merge pull request #10719 from pchote/filesystem-loadscreens
Load Loadscreen images via the virtual filesystem.
2016-02-07 21:48:41 +02:00
Matthias Mailänder
aec74d8f7f Only list packages with viewable contents. 2016-02-07 20:24:44 +01:00
Matthias Mailänder
f87a4bf16f Default to the all packages instead of the first. 2016-02-07 20:24:44 +01:00
Matthias Mailänder
5e0a89fa30 Re-enabled All Packages which seems to be fast enough now. 2016-02-07 20:24:42 +01:00
Paul Chote
f8992991f5 Load the load screen images from the virtual filesystem. 2016-02-07 17:57:05 +00:00
Paul Chote
79b039d8b9 Change ILoadScreen to take a ModData instance. 2016-02-07 17:57:05 +00:00
Oliver Brakmann
aaa5b37199 Merge pull request #10713 from pchote/filesystem-modmetadata
Unify static mod metadata collections.
2016-02-07 18:47:49 +01:00
Zimmermann Gyula
4aa9d26e12 Do not crash during gen2 map importing if a waypoint ID isn't an integer. 2016-02-07 18:40:12 +01:00
Paul Chote
2328de94a7 Fix d2k dll reference. 2016-02-07 17:11:35 +00:00
Paul Chote
62402e0e2e Unify static mod metadata collections. 2016-02-07 16:28:04 +00:00
Oliver Brakmann
d4aa28e221 Merge pull request #10706 from pchote/filesystem-assemblies
Loads mod assemblies via the virtual filesystem.
2016-02-07 16:53:33 +01:00
Oliver Brakmann
02f25b0692 Merge pull request #10704 from pchote/filesystem-fonts
Loads fonts via the virtual filesystem.
2016-02-07 16:41:34 +01:00
Whinis
f2260174f0 Changes to allow restarting of skirmish match 2016-02-07 10:22:54 -05:00
Oliver Brakmann
1df728adad Merge pull request #10697 from pchote/map-cleanup-part-2
Remove Map references from MapPreview.
2016-02-07 15:47:37 +01:00
Oliver Brakmann
ce0e092432 Merge pull request #10707 from RoosterDragon/mobile-fix
Fix mobile checks
2016-02-07 14:29:19 +01:00
abcdefg30
d5b37edccb Merge pull request #10712 from chrisforbes/map-cull
ra: Remove caffeinated, snowy-ridge
2016-02-07 12:59:59 +01:00
Paul Chote
879987960e Merge pull request #10603 from Mailaender/appveyor-nsis-pr-version
Fixed AppVeyor pull request artifact suffixes
2016-02-07 11:10:56 +00:00
Chris Forbes
a1a2796292 ra: Remove caffeinated, snowy-ridge
These are both terrible.

Caffeinated is my old RA95 study of how much
detailing you could get away with; it has horribly unbalanced resources
and spawn locations.

Snowy-ridge is a 1v1v1 so small that you can shoot from one base to
another, and the bottom player has a serious disadvantage.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
2016-02-07 22:30:02 +13:00
Paul Chote
7015a2e12f Loads mod assemblies via the virtual filesystem. 2016-02-06 22:42:27 +00:00
Paul Chote
8b5592e1dd Reduce jank in the mission chooser. 2016-02-06 22:30:50 +00:00
Paul Chote
7b00da04ca Remove MapPreview.Map. 2016-02-06 22:30:50 +00:00
Paul Chote
3708a7649d Remove MapPreview.CacheRules. 2016-02-06 22:30:49 +00:00
Paul Chote
4328f24276 Remove unnecessary Map usage from MissionBrowserLogic. 2016-02-06 22:30:49 +00:00
Paul Chote
e13e0792f6 Remove unnecessary Map usage from MainMenuLogic. 2016-02-06 22:30:49 +00:00
Paul Chote
d5e3fbf452 Store map path in MapPreview. 2016-02-06 22:30:49 +00:00
Paul Chote
6628bc046f Add a Map reference to LobbyLogic. 2016-02-06 22:30:46 +00:00
Paul Chote
4ec3997be6 Rename LobbyPreview.Map to LobbyLogic.MapPreview. 2016-02-06 22:30:25 +00:00
Paul Chote
7a5678ec39 Move MapVisibility to MapPreview. 2016-02-06 22:28:35 +00:00
Pavel Penev
6aac8c5f70 Merge pull request #10705 from pchote/filesystem-lint
Fix lint test yaml loading.
2016-02-07 00:24:49 +02:00
RoosterDragon
7fe42d7493 Fix mobility checks when we aren't checking a realized actor. 2016-02-06 22:18:30 +00:00
Matthias Mailänder
60e86f73d0 Merge pull request #10702 from RoosterDragon/map-contains-fix
Fix Map.Contains for maps with height
2016-02-06 23:02:56 +01:00
Oliver Brakmann
a6e98620c0 Merge pull request #10650 from pchote/remove-fragile-diplomacy
Remove fragile diplomacy.
2016-02-06 22:55:55 +01:00
Paul Chote
844e1a1770 Loads fonts via the virtual filesystem. 2016-02-06 21:24:43 +00:00
Paul Chote
e1c73beede Fix CheckSequences to load via the filesystem. 2016-02-06 21:15:31 +00:00
Paul Chote
789d3c172a Fix CheckSequenceSprites to load via the filesystem. 2016-02-06 21:12:21 +00:00
Paul Chote
ce55b0454e Fix CheckChromeLogic lint test to load via the filesystem. 2016-02-06 21:12:07 +00:00
Oliver Brakmann
870867760a Merge pull request #10696 from RoosterDragon/self-assumed-not-null
Remove null checks against self
2016-02-06 21:22:52 +01:00
RoosterDragon
36e09990ca Fix Map.Contains checks for maps with height.
If a cell lacked any valid projected cells, then it is off the map entirely. The previous logic would think such a cell was within the map as none of projected cells were out of bounds (as there were no projected cells to fail the check).
2016-02-06 17:55:27 +00:00
Oliver Brakmann
8588f36575 Merge pull request #10687 from pchote/filesystem-yaml
Load mod yaml via the virtual filesystem.
2016-02-06 17:54:27 +01:00
Paul Chote
1442056cb1 Lint sequences using the external utility command. 2016-02-06 16:33:22 +00:00
Paul Chote
1f4269df76 Make travis fetch the mod content before running tests. 2016-02-06 16:30:23 +00:00
Paul Chote
4a12e7bafc Load mod yaml via the virtual filesystem. 2016-02-06 16:30:23 +00:00
Paul Chote
45bae7e9b3 Mount the mod filesystem context in the ModData ctor. 2016-02-06 16:30:23 +00:00
Paul Chote
b81d2d8333 Fix incorrect ModFiles.Open(resolved path). 2016-02-06 16:30:22 +00:00
Pavel Penev
c44f0d4120 Merge pull request #10692 from pchote/map-cleanup-part-1
Move CellCorners to MapGrid.
2016-02-06 17:15:13 +02:00
Oliver Brakmann
bb044a34d5 Merge pull request #10670 from RockyTV/rockytv
Disable 1 human versus bots games
2016-02-06 15:36:22 +01:00
Oliver Brakmann
7a0825ce92 Merge pull request #10381 from penev92/warheadEffects
Enhance CreateEffectWarhead
2016-02-06 13:35:52 +01:00
Paul Chote
626fa0b60b Move CellCorners to MapGrid. 2016-02-05 23:00:14 +00:00
RoosterDragon
4b308dee02 Remove checks for self being null in Mobile.cs. 2016-02-05 22:11:11 +00:00
RoosterDragon
ddea517b19 Merge pull request #10587 from Mailaender/gps-refactor
Cleaned up the GPS code a bit
2016-02-04 18:09:25 +00:00
Alexandre Oliveira
989bf4f807 Disable 1 human versus bots games
Changed the Server.LockBots setting to Server.DisableSinglePlayer.

If the setting is enabled, and there is only one client in the server,
the game won't start.
2016-02-03 20:32:34 -02:00
Oliver Brakmann
25bdad4ee5 Ensure widget creation happens after traits are loaded
This is to make sure that traits' `WorldLoaded` method runs before widgets are created.
2016-02-03 22:43:09 +01:00
Matthias Mailänder
19149e4c69 Add decoration when hospital healing is enabled in TD. 2016-02-03 22:14:03 +01:00
Zimmermann Gyula
02010a6dd2 Add art for medkit decoration to TD. 2016-02-03 22:13:20 +01:00
Oliver Brakmann
951336689b Merge pull request #10667 from Mailaender/mcs
Updated to use the unified Mono compiler suite
2016-02-03 19:15:08 +01:00
Oliver Brakmann
1dbb75482b Merge pull request #10616 from Mailaender/bio-immunity
Added HazMat suites to Tiberian Dawn
2016-02-03 19:02:24 +01:00
Matthias Mailänder
712a2b2896 Merge pull request #10554 from pchote/remove-package-order
Remove IReadOnlyPackage.Priority
2016-02-02 21:26:14 +01:00
Paul Chote
00945dc9ef Tidy IReadOnlyPackage interface and implementations. 2016-02-01 22:49:12 +00:00
Paul Chote
feab81bdea Remove IReadOnlyPackage.Priority.
Priority is now determined solely by order in mod.yaml
(later packages take priority of earlier ones).
2016-02-01 22:49:11 +00:00
Paul Chote
cbfd9bb921 Properly handle multiple mount/unmount requests. 2016-02-01 22:49:11 +00:00
Paul Chote
fcccc0f5f9 Merge mod Folders into Packages. 2016-02-01 22:49:11 +00:00
Matthias Mailänder
f67e682041 Merge pull request #10669 from RoosterDragon/vs-version
Update VS version in solution file
2016-02-01 21:45:24 +01:00
abcdefg30
ac2455824c Merge pull request #10653 from Mailaender/common-metrics
Moved shared metrics to mods/commons.
2016-02-01 12:00:53 +01:00
RoosterDragon
0a6009a1b0 Update version in solution file to match VS 2015 Update 1. 2016-01-31 23:05:05 +00:00
abcdefg30
1cc8330c51 Merge pull request #10535 from pchote/mix-type-autodetection
Auto-detect mix hash type.
2016-01-31 22:57:14 +01:00
Matthias Mailänder
a19baa9500 Merge pull request #10657 from RoosterDragon/sync-perf
Improve sync performance
2016-01-31 22:56:08 +01:00
Matthias Mailänder
5ba304619d Merge pull request #10659 from obrakmann/fix10593_gdi03-invalid-tile
Replace invalid tile in gdi03
2016-01-31 20:12:39 +01:00
Matthias Mailänder
44bd704799 Don't recommend WinForms on Debian
as that isn't a requirement anymore.
2016-01-31 20:04:46 +01:00
Matthias Mailänder
dc24d004c4 Don't recommend mono-mcs
as it is already a dependency of mono-devel.
2016-01-31 20:04:22 +01:00
Matthias Mailänder
c7b6695328 Don't recommend cli-common-dev
as it is meant to be for DEB building.
2016-01-31 20:03:44 +01:00
Matthias Mailänder
9bb130928b Don't use deprecated Mono compilers. 2016-01-31 19:44:07 +01:00
Matthias Mailänder
4278eff253 Merge pull request #10642 from Sapena/flood_fill
Recovered flood fill functionality from the old editor
2016-01-31 18:49:17 +01:00
Matthias Mailänder
f6c669d6d4 Merge pull request #10611 from reaperrr/flip-offsets1
Make FlipX/FlipY flip respective embedded offsets as well
2016-01-31 18:27:50 +01:00
Matthias Mailänder
77585735ad Update to Mono.Nat version 1.2.24 2016-01-31 18:14:24 +01:00
Matthias Mailänder
a6a789b878 Update to SharpFont 3.1.0 2016-01-31 18:14:01 +01:00
Oliver Brakmann
bbe8b199ed Add decoration when HazMat suits are enabled in TD 2016-01-31 17:10:46 +01:00
Zimmermann Gyula
e69fcd385b Add art for HazMat decoration to TD 2016-01-31 17:10:46 +01:00
Matthias Mailänder
33f649e949 Grant Tiberium immunity from biolab captures. 2016-01-31 17:10:46 +01:00
Matthias Mailänder
76066c65bd Disable trainable dinos. 2016-01-31 17:10:46 +01:00
Oliver Brakmann
8291cffb1c Merge pull request #10608 from reaperrr/ra-no-sw-tech2
Enable Chrono Tank at "No Superweapons"
2016-01-31 16:39:34 +01:00
Oliver Brakmann
738bf44569 Merge pull request #10588 from Mailaender/eluant-20160124
Updated to Eluant version 20160124
2016-01-31 16:25:47 +01:00
Oliver Brakmann
5fdce51699 Merge pull request #10551 from RockyTV/rockytv
Change CONNECTIONFAILED_PANEL title if server requires password
2016-01-31 16:14:21 +01:00
Oliver Brakmann
e532637a24 Merge pull request #10404 from Mailaender/legacy-map-import-refactor
Organized legacy map import into respective mod DLLs
2016-01-31 15:31:02 +01:00
Pavel Penev
6913ac29e6 Clean up some dead YAML from Fort Lonestar and Drop Zone W weapons definitions
There haven't been WaterExplosion and WaterImpactSound properties on CreateEffectWarhead for quite a while.
2016-01-31 16:22:48 +02:00
Pavel Penev
489ee9fc54 Add support for multiple impact sounds to CreateEffectWarhead
Have the engine pick one impact sound at random from the provided list.
2016-01-31 16:22:47 +02:00
Pavel Penev
7e3ec91d30 Add support for multiple explosions to CreateEffectWarhead
Have the engine pick one explosion at random from the provided list.
2016-01-31 16:22:09 +02:00
Oliver Brakmann
d336904c52 Merge pull request #10517 from reaperrr/d2k-cleanup1
Some D2k clean-ups
2016-01-31 15:19:53 +01:00
Oliver Brakmann
9dbb725cef Replace invalid tile in gdi03 2016-01-31 12:36:22 +01:00
RoosterDragon
dc37574494 Cache sync hash functions per actor for faster sync calculations.
Caching the result of the function lookup allows the actor to calculate all the sync hashes for its syncable traits faster as it does not need to repeat the lookup each time.
2016-01-31 00:44:43 +00:00
RoosterDragon
eb3be990a6 Remove dead code and encapsulate more in Sync.cs. 2016-01-31 00:42:00 +00:00
Matthias Mailänder
690e5125ec Move shared metrics to mods/commons. 2016-01-30 23:03:37 +01:00
Philipp Schärer
b0cd4ec367 Fixed styling issues and TS compatibility 2016-01-30 22:17:23 +01:00
Oliver Brakmann
c22281876c Merge pull request #10651 from Phrohdoh/widget-xmldoc
Add xmldoc to Widget.HandleMouseInput
2016-01-30 22:06:25 +01:00
Matthias Mailänder
10ebd7e48d Merge pull request #10649 from obrakmann/radar-team-colors
Added option to show team colors on radar map
2016-01-30 21:53:14 +01:00
Paul Chote
b387e6a19e Polish the lobby option bin layout. 2016-01-30 20:47:57 +00:00
Paul Chote
73b3f20921 Remove fragile alliances feature. 2016-01-30 20:47:50 +00:00
Oliver Brakmann
aa491a35c8 Fix Monster Tank Madness to not use Player.SetStance 2016-01-30 20:47:49 +00:00
Matthias Mailänder
5ae86d86a9 Merge pull request #10637 from reaperrr/d2k-split-weapons
Split D2k weapons.yaml
2016-01-30 21:44:37 +01:00
Taryn Hill
d12fd9de86 Add xmldoc to Widget.HandleMouseInput 2016-01-30 14:41:53 -06:00
Philipp Schärer
32b599266c Recovered flood fill functionality from the old editor 2016-01-30 20:38:50 +01:00
Oliver Brakmann
7ca1af4e96 Merge pull request #10648 from pchote/rewrite-yaml-merger
Rewrite yaml merger
2016-01-30 20:04:53 +01:00
reaperrr
0bfe9a701a Fix faction-specific upgraded factory images for mercenaries and smugglers 2016-01-30 17:45:03 +01:00
Paul Chote
f8f3d1deb4 Fix allies-05a map yaml. 2016-01-30 15:03:57 +00:00
Paul Chote
3e3c11ea5c Remove duplication between vice and pvice sequences. 2016-01-30 15:03:56 +00:00
Paul Chote
ab921682c4 Rewrite yaml merger. 2016-01-30 15:03:56 +00:00
DArcy Rush
eb795909da Implement player stance colors
Adds an option to display actors on radar and
support weapon timers in colors denoting the
diplomatic stance toward the player.
2016-01-30 15:46:55 +01:00
Paul Chote
1581ba951f Add a new test case for actor info merging. 2016-01-30 11:55:37 +00:00
reaperrr
c19383472f Merge pull request #10624 from pchote/overhaul-color-validator
Fix color validator issues and increase color picker palette size.
2016-01-29 23:57:46 +01:00
reaperrr
930aeb71c4 Some misc D2k cleanup
C. Yard doesn't need DamagedWithoutFoundation, aircraft aren't selectable so they don't need a voice, ordos tank ROT matches default, RepairBuildings on carryall is redundant.
2016-01-29 23:18:09 +01:00
reaperrr
daef6283c1 Add Mercenaries and Smugglers to D2k
Rename some structures.
2016-01-29 23:18:07 +01:00
reaperrr
42711dbe7b Merge pull request #10638 from obrakmann/git-ignore-support-dir
Add Support directory to .gitignore file
2016-01-29 23:14:28 +01:00
Oliver Brakmann
ee3d8b50f7 Merge pull request #10641 from reaperrr/fix-cpZ0
Fix Mobile using legacy CenterPosition.Z check
2016-01-29 23:08:14 +01:00
Oliver Brakmann
4e44e6b914 Merge pull request #10640 from abcdefg30/removeReveals
Remove obsolete and performance costly RevealsShroud definitions
2016-01-29 23:04:56 +01:00
Oliver Brakmann
7128e1b8f0 Merge pull request #10623 from riiga/icons
Improved GPS icons
2016-01-29 22:53:48 +01:00
reaperrr
75d066d6af Fix Mobile using legacy CenterPosition.Z check 2016-01-29 22:26:52 +01:00
abcdefg30
e8c67993c1 Remove obsolete and performance costly RevealsShroud definitions
from the APC on the dropzone maps.
2016-01-29 22:22:15 +01:00
riiga
7180f4fbef Improved GPS icons and added shadows to all icons 2016-01-29 22:19:54 +01:00
Paul Chote
31cc399579 Remove unused package annotations. 2016-01-29 20:41:20 +00:00
Paul Chote
cbf2b1984a Auto detect mix type. 2016-01-29 20:41:20 +00:00
Oliver Brakmann
ce8b03a276 Merge pull request #10530 from pchote/remove-external-hashes
Index filesystem contents by filename instead of hash.
2016-01-29 21:12:31 +01:00
Paul Chote
6085de7263 Remove unused PackagePaths. 2016-01-29 19:59:31 +00:00
Paul Chote
fa6b50f2a2 Fix filename case of D2K FMVs. 2016-01-29 19:56:17 +00:00
Paul Chote
f90b21b1b7 Fix D2K installation on case sensitive filesystems. 2016-01-29 19:56:17 +00:00
Paul Chote
314aba0861 Overhaul InstallShieldPackage.
- Remove hashing
- Use full file paths
- Replace BinaryReader with stream extensions.
2016-01-29 19:56:17 +00:00
Paul Chote
7ed24ce6de Remove legacy hashing from BagFile. 2016-01-29 19:56:17 +00:00
Paul Chote
ccdbdebdb1 Remove legacy hashing from D2kSoundResources. 2016-01-29 19:56:16 +00:00
Paul Chote
91c25d7b84 Remove unused Package.(Classic|Crc)Hashes. 2016-01-29 19:56:16 +00:00
Paul Chote
86e4cb763d Replace FileSystem hash index with a regular string cache.
This requires that .mix files have valid max database
entries for all files used by the mod.
2016-01-29 19:56:16 +00:00
Oliver Brakmann
8bec1f5c5b Add Support directory to .gitignore file 2016-01-29 20:43:58 +01:00
reaperrr
01cd6c93d9 Merge pull request #10633 from teees/nawast-fix
fix nawast popping up on gdi build menu, fixes #10631
2016-01-29 18:00:18 +01:00
reaperrr
ed3c0799d3 Do not consider waiting harvesters to be idle 2016-01-29 16:08:29 +01:00
reaperrr
1f35a1c010 Let harvesters tick idle for a while before queueing Wait activity 2016-01-29 16:08:28 +01:00
reaperrr
f38f159dad Remove Chronosphere from Chrono Tank prerequisite
And lower tech-level requirement to 'high', making it available at "No
Superweapons".
2016-01-29 15:55:07 +01:00
teees
97265be139 fix nawast popping up on gdi build menu, fixes #10631 2016-01-29 09:27:05 +01:00
reaperrr
75736cb127 Clean up Harvester and FindResources unblocking 2016-01-29 02:57:43 +01:00
reaperrr
7b315aa9cc Merge pull request #10562 from pchote/classic-facing-fudge
Implement ClassicFacingFudge for fudging classic facings.
2016-01-28 23:45:48 +01:00
Matthias Mailänder
4203feed40 Merge pull request #10576 from abcdefg30/bridgeRepaired
Add support for playing a BridgeRepaired notification
2016-01-28 20:09:05 +01:00
Matthias Mailänder
9f002050ec Merge pull request #10601 from pchote/fix-td-connection-dialog
Fix button positions on TD connection dialog.
2016-01-28 19:53:47 +01:00
Matthias Mailänder
4c86dad8d5 Merge pull request #10628 from teees/upgradeactorsnear-fix
Don't grant upgrades to newly built units while disabled
2016-01-28 15:15:23 +01:00
abcdefg30
a34818bb3e Merge pull request #10620 from teees/production-exit-fix
Fix units warping from an exit subcell to cellcenter when produced
2016-01-28 14:55:45 +01:00
reaperrr
27a67415e9 Merge pull request #10621 from teees/ts-fixes
Small ts rules fixes
2016-01-28 12:25:51 +01:00
teees
8315350f07 Don't grant upgrades to newly built units while disabled 2016-01-28 10:42:02 +01:00
Paul Chote
dd963b75f5 Per-terrain color validation. 2016-01-27 21:43:55 +00:00
Paul Chote
cc4ca839d9 Bind color mixer to validator range. 2016-01-27 21:43:55 +00:00
Paul Chote
66df822412 Enable ClassicFacingFudge in RA. 2016-01-27 21:39:51 +00:00
Paul Chote
2d9bbd9405 Enable ClassicFacingFudge in TD. 2016-01-27 21:39:50 +00:00
Paul Chote
608b5d1674 Add UseClassicFacingFudge flag for TD/RA. 2016-01-27 21:32:21 +00:00
Paul Chote
fe60f5a77f Introduce Turreted.WorldOrientation. 2016-01-27 21:32:21 +00:00
Paul Chote
7638746069 Define additional constraints in HSV space. 2016-01-27 19:56:04 +00:00
Paul Chote
617295cc91 Overhaul color validator logic. 2016-01-27 19:49:03 +00:00
Matthias Mailänder
e11afaf55b Update to SDL 2.0.4 on Windows. 2016-01-27 20:25:55 +01:00
Paul Chote
1832a9c60f Increase the size of the color picker. 2016-01-27 19:16:37 +00:00
teees
c5da3623ac fix spelling mistake 2016-01-27 15:08:09 +01:00
teees
3088230c29 Add EjectOnDeath for civilian transport vehicles 2016-01-27 14:19:41 +01:00
teees
55fd75edce Use correct armor type 2016-01-27 14:19:41 +01:00
teees
e721bb9602 Use correct crushing behavior 2016-01-27 14:19:41 +01:00
teees
cb3be2cd0d Fix units visually moving to a bogus subcell via MoveIntoWorld 2016-01-27 12:01:37 +01:00
Oliver Brakmann
2f2d7e1083 Merge pull request #10592 from RoosterDragon/fa-debug
Debug frozen actors without footprints
2016-01-26 23:24:08 +01:00
Oliver Brakmann
8584ed710e Merge pull request #10564 from abcdefg30/botUnderAttack
Added support for playing a "Our ally is under attack" notification
2016-01-26 23:20:41 +01:00
reaperrr
fd632baa5b Flip embedded offsets along when flipping sequences
Instead of only flipping the sprite, but not the baked-in offsets.
2016-01-26 22:01:27 +01:00
RoosterDragon
68eda63008 Add some debugging code to catch frozen actors without footprints. 2016-01-26 20:45:04 +00:00
abcdefg30
a2753ad1e4 Make use of the OurAllyIsUnderAttack notification in ts 2016-01-26 21:16:37 +01:00
abcdefg30
79829c5270 Add support for playing a "Our ally is under attack" notification 2016-01-26 21:16:29 +01:00
abcdefg30
a56ffb581f Move some checks in *AttackNotifier to improve performance 2016-01-26 21:10:12 +01:00
Matthias Mailänder
faff5aadca also version pull request artifacts 2016-01-26 20:17:00 +01:00
Oliver Brakmann
2ae9bc7ebd Merge pull request #10567 from Mailaender/passenger-upgrade-lint
Fixed Passenger missing UpgradeGrantedReference
2016-01-26 20:11:36 +01:00
Oliver Brakmann
5bd474f3d0 Merge pull request #10573 from Mailaender/ts-exit-offsets
Adjusted the Tiberian Sun harvester spawn point
2016-01-26 20:06:44 +01:00
Matthias Mailänder
c3629a93a3 Merge pull request #10610 from riiga/uipolish
Use player name as default for global chat
2016-01-26 20:01:49 +01:00
Matthias Mailänder
dd18e2f632 Merge pull request #10600 from pchote/fix-td-spec-kick
Fix spectator kick button in TD lobby.
2016-01-26 19:52:21 +01:00
Oliver Brakmann
4b02134b2d Merge pull request #10594 from abcdefg30/sizeD2k
Fix a crash in d2k caused by empty bounds
2016-01-26 19:30:30 +01:00
Oliver Brakmann
e0bf307d4d Merge pull request #10596 from abcdefg30/d2kNotifications
Add all remaining d2k speech notifications
2016-01-26 19:25:18 +01:00
riiga
38c5ad35fa Uses player name as default for global chat 2016-01-26 19:20:07 +01:00
Oliver Brakmann
a2639da5e8 Merge pull request #10602 from pchote/fix-td-aircraft-fog-visibility
Fix TD aircraft being visible through fog.
2016-01-26 18:59:18 +01:00
reaperrr
f4c4997d60 Merge pull request #10580 from pchote/ra-no-sw-tech
Add a "no superweapons" tech level to RA.
2016-01-26 16:58:07 +01:00
Paul Chote
49eb521db0 Fix aircraft without sight being visible under fog. 2016-01-25 21:04:08 +00:00
Paul Chote
fd06b8abc3 Fix button positions on TD connection dialog.
"forward" acting buttons go on the right.
"back" acting buttons go on the left.
2016-01-25 21:00:47 +00:00
Paul Chote
9f6a6b31e9 Fix spectator kick button in TD lobby. 2016-01-25 20:56:26 +00:00
Matthias Mailänder
0878f5f371 Merge pull request #9981 from teees/gates-trait
Added gates to Tiberian Sun
2016-01-25 19:51:01 +01:00
abcdefg30
d087a16042 Fix a crash in d2k caused by empty bounds
This adds respective checks to Building.cs.
2016-01-25 16:44:17 +01:00
abcdefg30
386acdcfc9 Merge pull request #10536 from Mailaender/warn-nobots
Added a warning when bots have been disabled
2016-01-25 16:35:42 +01:00
abcdefg30
b8c59c5fad Add all remaining d2k speech notifications
except the MAP* notifications because they differ between the factions
and are used in the mission selector only.
2016-01-25 16:26:53 +01:00
abcdefg30
27c6829b65 Arrange the d2k speech notifications in alphabetical order 2016-01-25 15:59:22 +01:00
teees
5ca9f52a62 IWallConnectorInfo to allow gates connect to walls in map editor 2016-01-25 09:25:36 +01:00
teees
3dc63999e3 Fix for BlockProjectiles to ignore blockers with height <= 0 2016-01-25 09:14:00 +01:00
teees
18e26d87c7 Add support for multiple IWallConnector traits 2016-01-25 09:14:00 +01:00
Paul Chote
1de1458fda Fix wall adjacency for multi-cell neighbours. 2016-01-25 09:14:00 +01:00
teees
65e1e301f4 Added Gates
FIXUP: account for full gate footprint when updating neighbours.

FIXUP: gate-wall connection adjacency yaml.
2016-01-25 09:14:00 +01:00
teees
3d597c7880 Add IBlocksProjectiles interface to avoid using BlocksProjectiles directly 2016-01-25 09:14:00 +01:00
teees
7f2feb29cd Added IWallConnector trait interface 2016-01-25 09:14:00 +01:00
Paul Chote
8ade035049 Add support for loading CVec[] from yaml. 2016-01-25 09:14:00 +01:00
Paul Chote
963a92214d Fix line build for multi-cell neighbours. 2016-01-25 09:14:00 +01:00
Matthias Mailänder
1555c163cb add singleplayer briefing extraction 2016-01-24 21:50:12 +01:00
abcdefg30
73e68773e0 Use the BridgeRepaired notification in ts 2016-01-24 21:16:27 +01:00
abcdefg30
db1d83fc4e Add support for playing a BridgeRepaired notification 2016-01-24 21:16:26 +01:00
abcdefg30
085367ced6 Merge pull request #10461 from RoosterDragon/partition-bounds
Calculate better upper bounds in SpatiallyPartitioned.
2016-01-24 21:13:55 +01:00
Oliver Brakmann
8fe90999a5 Merge pull request #10462 from RoosterDragon/partition-no-empty
Prevent items without size from being added to SpatiallyPartitioned.
2016-01-24 20:59:25 +01:00
Matthias Mailänder
d2848696fa Update Eluant to version 20160124. 2016-01-24 19:37:46 +01:00
Matthias Mailänder
a11a183cad GpsWatcher.Owner is not used anywhere else 2016-01-24 19:25:37 +01:00
Matthias Mailänder
91041fbea3 no need to cast this 2016-01-24 19:25:37 +01:00
Matthias Mailänder
a2398d2e00 annotate spy satellite related palettes and sprites 2016-01-24 19:25:37 +01:00
Matthias Mailänder
38625ec6f8 avoid an unneccessary abbreviation 2016-01-24 19:25:37 +01:00
Matthias Mailänder
f709ef891a document and expose GpsDot strings to lint testing 2016-01-24 19:25:33 +01:00
Matthias Mailänder
29e6f53a78 document interdependencies 2016-01-24 16:52:37 +01:00
Matthias Mailänder
6c56ac39c6 split GpsWatcher into it's own file 2016-01-24 16:48:44 +01:00
Matthias Mailänder
5c1a236a75 split mod specific parts of legacy map import 2016-01-24 15:40:35 +01:00
Matthias Mailänder
2b38a0b279 add crate actors for legacy map compatibility 2016-01-24 15:40:31 +01:00
Matthias Mailänder
0d497c6a16 this class should not be public 2016-01-24 15:30:36 +01:00
abcdefg30
3de5e7fea1 Merge pull request #10571 from Mailaender/wwcrate
Added the water variant for the wooden crate
2016-01-24 15:02:53 +01:00
abcdefg30
ec30f38b7e Merge pull request #10584 from Mailaender/ai-armed-harvesters
Fixed AI using armed harvesters for combat
2016-01-24 14:48:05 +01:00
Matthias Mailänder
8b5dac7c6f Merge pull request #10585 from abcdefg30/unhardcodeBridges
Unhardcode the cursors used by RepairsBridges
2016-01-24 14:27:12 +01:00
abcdefg30
13d271308d Merge pull request #10583 from Mailaender/tactical-terrace
Added original TS maps Tactical and Terraces
2016-01-24 14:22:35 +01:00
abcdefg30
3fa926c9bd Merge pull request #10582 from Mailaender/crat0c
Added missing CRAT0C rule
2016-01-24 14:20:00 +01:00
abcdefg30
f52210c15b Unhardcode the cursors used by RepairsBridges 2016-01-24 14:14:23 +01:00
Matthias Mailänder
922217271c don't actively attack nor defend with armed harvesters 2016-01-24 14:05:00 +01:00
abcdefg30
4df876382f Merge pull request #10579 from Mailaender/kate
Added support for the Kate text editor
2016-01-24 14:01:01 +01:00
Matthias Mailänder
03590b13cc check the cheap bool before expensive trait lookups 2016-01-24 13:52:44 +01:00
Oliver Brakmann
3d4f6f8e57 Merge pull request #10577 from riiga/upstream/buildingtabplacement
Moved Kennel in Soviet buildings tab as per issue 8973
2016-01-24 13:36:29 +01:00
Matthias Mailänder
e50e07c67c add map Terraces 2016-01-24 13:33:44 +01:00
Matthias Mailänder
cf182cc9f9 add map Tactical 2016-01-24 13:33:31 +01:00
Matthias Mailänder
4d02ae27ae add missing CRAT0C definition 2016-01-24 13:30:27 +01:00
Matthias Mailänder
e6213c864b Merge pull request #10581 from reaperrr/remove-charge-bitrot
Remove bitrotted WeaponInfo.Charges
2016-01-24 13:16:23 +01:00
reaperrr
56ab3f43da Remove bitrotted WeaponInfo.Charges
There is no logic attached anymore (or never was).
2016-01-24 12:58:39 +01:00
Paul Chote
b83247187a Increase the width of the RA lobby option dropdowns. 2016-01-24 11:48:09 +00:00
Paul Chote
df30257881 Add a "No Superweapons" tech level. 2016-01-24 11:33:30 +00:00
Matthias Mailänder
2876522617 Add a Kate project file. 2016-01-24 10:58:31 +01:00
riiga
04f506928c Moved Kennel in Soviet buildings tab as per issue 8973 2016-01-23 23:48:04 +01:00
Matthias Mailänder
eefd6c45ef Fix TS harvester spawn point. 2016-01-23 17:59:24 +01:00
abcdefg30
6b008a1b71 Merge pull request #10563 from whinis/ObeliskFix
Fixes Obelisk not attacking again after a forced attack command
2016-01-23 17:47:15 +01:00
Whinis
ad81b2ee68 Fixes Obelisk not attacking again after a forced attack command 2016-01-23 11:40:51 -05:00
Matthias Mailänder
9d3a3dd9e5 Merge pull request #10568 from abcdefg30/waterCrates
Fix crates not showing their water animation
2016-01-23 15:10:26 +01:00
Matthias Mailänder
756d4f2374 simplify steel crate sequences 2016-01-23 15:07:21 +01:00
Matthias Mailänder
c3bca38987 add the water variant for the wooden crate 2016-01-23 14:58:04 +01:00
Matthias Mailänder
2420509bb6 add lint references to all crate body sequences 2016-01-23 14:56:50 +01:00
Matthias Mailänder
8b478e3d0a Merge pull request #10569 from abcdefg30/PrimaryNote
Unhardcode the "PrimaryBuildingSelected" notification
2016-01-23 14:09:41 +01:00
Paul Chote
5f4ca605bd Merge pull request #10420 from Mailaender/revert-fixAttack
Revert "Don't attack actors that you can't see"
2016-01-23 12:45:55 +00:00
abcdefg30
71c804781e Unhardcode the "PrimaryBuildingSelected" notification 2016-01-23 13:41:18 +01:00
abcdefg30
b1fac69b01 Make the INotifyParachuteLanded implementation in WithCrateBody.cs explicit 2016-01-23 13:22:11 +01:00
abcdefg30
4a67104603 Fix crates not showing their water animation
when they are not paradropped.
2016-01-23 13:21:29 +01:00
Matthias Mailänder
dcd1f5ba3c add missing UpgradeGrantedReference to Passenger 2016-01-23 12:11:08 +01:00
Matthias Mailänder
7aa6921c72 Merge pull request #10557 from abcdefg30/queueCleanup
More cleanup in the production logic
2016-01-23 10:52:33 +01:00
Oliver Brakmann
97d10da39b Merge pull request #10478 from pchote/fix-replay-support-timers
Sync replay support timers to original game time.
2016-01-22 23:19:25 +01:00
reaperrr
ef290a9596 Split D2k weapons.yaml
To make things more organized and in line with other mods.
2016-01-22 17:09:57 +01:00
abcdefg30
ed3f3706f9 Reduce trait lookups further by adding a BuildableInfo parameter to GetBuildTime 2016-01-21 22:29:01 +01:00
abcdefg30
4e0775b59e Remove the unused ISync implementation in ClassicProductionQueue.cs
The base class ProductionQueue already implements ISync
2016-01-21 22:24:51 +01:00
abcdefg30
5496245a00 Remove unnecessary lookups and checks
- We already return early if the unit doesn't have a BuildableInfo
- World.Map.Rules.Actors[actorName] won't return null
- Made BuildUnit use an ActorInfo instead of the name as parameter
2016-01-21 22:24:50 +01:00
abcdefg30
17daac11a1 Avoid unnecessary lookups in the production logic
by improving the GetBuildTime method and moving lookups around.
2016-01-21 22:24:49 +01:00
Matthias Mailänder
6272d79072 Merge pull request #10561 from obrakmann/fix10560_fix-1st-spy-hideout-sov03
Fix bogus conditional in soviet03 lua script
2016-01-21 21:43:31 +01:00
Oliver Brakmann
26ad018348 Fix bogus conditional in soviet03 lua script 2016-01-21 21:28:05 +01:00
abcdefg30
2ee7e11064 Merge pull request #10488 from obrakmann/fix10451_printing_money_with_spies
Change guaranteed amount of stolen funds to spy's value
2016-01-21 21:27:48 +01:00
Matthias Mailänder
eb9fb75d3c warn players if bots have been disabled 2016-01-21 21:25:23 +01:00
abcdefg30
fac6459b19 Merge pull request #10526 from obrakmann/koth-refactor
Improve ProximityCapturable
2016-01-21 20:38:57 +01:00
Oliver Brakmann
a612ca9c5f Use proper speech notification for InfiltrateForCash 2016-01-21 20:35:28 +01:00
Oliver Brakmann
159a760941 Merge pull request #10558 from abcdefg30/chronoCursor
Unhardcode the chronoshift cursor sequences
2016-01-21 20:22:29 +01:00
Oliver Brakmann
a0f3c576e5 Merge pull request #10532 from abcdefg30/polish
Apply some general polish to the code/yaml
2016-01-21 20:18:57 +01:00
Matthias Mailänder
7ef640dfba Merge pull request #10553 from AoAGeneral/bleed
MSAM Trajectory change.
2016-01-21 20:06:03 +01:00
Matthias Mailänder
08abc2f873 Merge pull request #10552 from AoAGeneral/upstream/myfeature
TD Balance Changes v1192016
2016-01-21 20:03:48 +01:00
Matthias Mailänder
df695fed7f Merge pull request #10555 from pchote/fix-installation
Fix TD/RA/TS installation from CD.
2016-01-21 19:58:04 +01:00
abcdefg30
ab7907c5a1 Unhardcode the chronoshift cursor sequences 2016-01-21 17:43:41 +01:00
abcdefg30
03ed54b3fb Merge pull request #10537 from pchote/move-util
Move OpenRA.Traits.Util to Mods.Common
2016-01-21 17:13:03 +01:00
abcdefg30
2437091760 Remove yaml duplication in ts by creating ^Cloakable and using inheritance 2016-01-21 15:41:35 +01:00
abcdefg30
6bbab081d1 Fix wrong indentation in ProductionPaletteWidget.cs 2016-01-21 15:41:34 +01:00
abcdefg30
fdfea2f0fb Fix style errors in ProductionQueue.cs 2016-01-21 15:41:33 +01:00
abcdefg30
3106336c6a Add missing spaces to the rallypoint sequences in misc.yaml 2016-01-21 15:41:33 +01:00
abcdefg30
e37d804a5a Replace spaces by tabs in UpgradeRules.cs 2016-01-21 15:41:32 +01:00
abcdefg30
a8475d7fcd Merge pull request #10541 from Mailaender/unhardcode-chronoshift-palette-sequences
Unhardcode ChronoShift palettes and sequences
2016-01-21 14:30:49 +01:00
Paul Chote
00920b0060 Fix TD/RA/TS installation from CD. 2016-01-21 00:01:32 +00:00
Alexandre Oliveira
6f715a6a4e Change CONNECTIONFAILED_PANEL title if server requires password
If the server requires a password, display Password Required instead of the usual Connection Error title.
2016-01-20 18:44:36 -02:00
Paul Chote
b0bd252343 Move Util to Mods.Common. 2016-01-19 23:35:18 +00:00
Paul Chote
0039a2bdbf Split out an ActivityUtils class. 2016-01-19 23:34:13 +00:00
Paul Chote
e46fc644c1 Remove Util.QuantizeFacing from trait code. 2016-01-19 23:34:13 +00:00
Paul Chote
275be64f05 Remove Util.QuantizeFacing from support powers. 2016-01-19 23:34:13 +00:00
AoAGeneral
7ac1a1fb20 MSAM Trajectory change.
changes from 341 to 300.

This allows aircraft to escape the MSAM with the same mechanics as
current release. In https://github.com/OpenRA/OpenRA/pull/10552 the
reload speed was changed to prevent stand still. This allows them to
keep fire rates up rather then wasted fire.

The missile mechanic change is a great buff addition. Thank you very
much!
2016-01-19 14:05:04 -08:00
AoAGeneral
fb95776170 TD Balance Changes v1192016
Balance changes are as followed:

Increase power of AGT to 50 from 40.

MSAM faster reload to 45 from 100.

Increase APC damage vs light target to 105 from 100.

MLRS attack speed increase to 100 from 140.

Rocket Infantry damage increase to 35 from 30.

MCV Price increase to 4000 from 2000. Build time increase from 0:48 to
1:36.

MCV unit HP increase to 950 from 750. armor type Heavy from Light.

MCV now requires both Command Center and Repair Pad to produce.

Construction yard HP increase to 2000 from 1400.

Repair pad HP increase to 600 from 400.

Link discussion at:
http://www.sleipnirstuff.com/forum/viewtopic.php?f=82&p=294421#294421
2016-01-19 12:41:51 -08:00
Oliver Brakmann
4f2b1f5177 Make WithRangeCircle a little more flexible
* Added ability to show the circle in the player's colour.
* Added ability to show the circle either always or only when selected.
* Added ability to configure the stances players need to see the circle.
2016-01-19 21:07:50 +01:00
Oliver Brakmann
8b5df6bf2c Improve ProximityCapturable
The following changes are made:

* Replaced the custom actor search with ProximityTriggers.
* Added a `Sticky` flag, which causes the ownership to not revert back to
  the original owner when the captor leaves.
* Added trait documentation.
2016-01-19 21:07:50 +01:00
Alexandre Oliveira
8ab72edc6a Fix alignment of Retry connection button on RA 2016-01-19 16:10:12 -02:00
Oliver Brakmann
3b675c9bad Merge pull request #10547 from Mailaender/passenger-refactor
Small code cleanup in the Passenger trait
2016-01-19 19:07:47 +01:00
abcdefg30
3c8be18a73 Merge pull request #10507 from pchote/fix-locked-color-validation
Disable color validation for locked colors.
2016-01-19 18:18:09 +01:00
abcdefg30
0804f97deb Merge pull request #10538 from pchote/fix-report-case
Fix filename case on weapon reports.
2016-01-19 18:12:16 +01:00
Oliver Brakmann
332d61c2c0 Merge pull request #10397 from pchote/ts-map-importer
Add the "gen2" map importer.
2016-01-18 22:00:48 +01:00
Matthias Mailänder
fc8d35c2d4 put enter transport order targeters into respective files 2016-01-18 21:53:57 +01:00
Paul Chote
c581283c9a Add the TS map importer. 2016-01-18 20:52:35 +00:00
Matthias Mailänder
a8a1fafbc9 unhardcode ChronoShift palettes and sequences 2016-01-18 21:31:06 +01:00
Oliver Brakmann
a04223fcd2 Merge pull request #10143 from Phrohdoh/interface-reflection
Implement a utility command to check for explicit interface implementation violations.
2016-01-18 20:23:43 +01:00
Oliver Brakmann
afdc6bc0ae Merge pull request #10546 from abcdefg30/madTarget
Fix the TargetTypes of the Mad Tank
2016-01-18 19:53:36 +01:00
abcdefg30
d416138cec Merge pull request #10542 from RoosterDragon/simplify
General Cleanup
2016-01-18 11:37:30 +01:00
abcdefg30
50e4cc84d0 Fix the TargetTypes of the Mad Tank
"Vehicle" was missing, which lead to tanya shooting at it.
Tanya's weapon (Colt45) has InvalidTargets: Vehicle defined,
so adding just "Vehicle" to the TargetTypes fixed the bug.
2016-01-18 11:00:37 +01:00
Matthias Mailänder
40debbde28 Merge pull request #10508 from pchote/cancel-tooltip-on-menu
Cancel tooltips when opening the ingame menu.
2016-01-18 07:30:11 +01:00
Taryn Hill
25eddb9567 Explicitly implement ISelectionBar 2016-01-17 22:33:41 -06:00
Taryn Hill
e3229f4cd8 Add explicit interface checking to 'make check' 2016-01-17 17:31:36 -06:00
Taryn Hill
2e861c6d65 Implement a utility command to check for explicit
interface implementation violations
2016-01-17 17:31:36 -06:00
Paul Chote
3ccbb480ad Merge pull request #10505 from Mailaender/palette-conf
Fixed parachute palette configuration for Red Alert 2
2016-01-17 21:54:56 +00:00
Oliver Brakmann
d151343216 Merge pull request #10468 from RoosterDragon/fix-dev-shroud-invalidation
Fix shroud not updating when disabled
2016-01-17 22:42:34 +01:00
RoosterDragon
8e89a6a696 Simplify names, remove unused usings, remove redundant casts. 2016-01-17 21:35:36 +00:00
Oliver Brakmann
2e157b82f4 Limit InfiltrateForCash's guaranteed amount to spy's value in RA 2016-01-17 22:09:04 +01:00
Oliver Brakmann
c40b64ad02 Fix arbitrary defaults in InfiltrateForCashInfo. 2016-01-17 22:09:04 +01:00
Oliver Brakmann
ee8323373b Add trait documentation to InfiltrateForCash 2016-01-17 22:00:55 +01:00
Oliver Brakmann
5ec11fba8f Allow falling back to infiltrator's value in InfiltrateForCash 2016-01-17 22:00:55 +01:00
Oliver Brakmann
aaeb715006 Merge pull request #10246 from penev92/terrainPalettes
Allow tile templates to define their own palette
2016-01-17 21:39:28 +01:00
Paul Chote
cac2d82e5a Fix filename case for TS voices. 2016-01-17 19:31:25 +00:00
Paul Chote
9f7f759da4 Fix filename case on weapon reports. 2016-01-17 19:24:40 +00:00
Matthias Mailänder
a829baa82a Merge pull request #10521 from pchote/facing-cleanup
Remove Util.GetFacing.
2016-01-17 20:21:50 +01:00
Pavel Penev
288de5284e Fix TerrainTemplatePreviewWidget to use proper palettes 2016-01-17 19:02:18 +02:00
Pavel Penev
861d1368a4 Unhardcode internal terrain palette name from all over the codebase 2016-01-17 19:02:16 +02:00
Pavel Penev
0c51d73be9 Enable use of "custom" palettes per tile Templates
Keep the tileset's palette as default, defined on the tileset, but override it for any tile templates that may want to do so with a palette defined on the template.
2016-01-17 19:02:15 +02:00
Oliver Brakmann
7cf98c5e26 Merge pull request #10324 from RoosterDragon/change-frozen-actor-removals
GPS updates frozen actors that change owner
2016-01-17 13:37:53 +01:00
Matthias Mailänder
457dca25b4 Merge pull request #10506 from pchote/fix-flying-mcvs
Remove some hardcoded trait assumptions from HackyAI.
2016-01-17 08:18:04 +01:00
RoosterDragon
dc99dbef2a Add an upgrade rule for FrozenUnderFogUpdatedByGps. 2016-01-17 00:15:08 +00:00
RoosterDragon
3c930c3ef9 Introduce FrozenUnderFogUpdatedByGps and IOnGpsRefreshed.
This trait uses the new interface to register with the GpsWatcher to get notified when the GPS state changes. It needs to register as if the actor is destroyed, the GpsWatcher can no longer query actors in the world to get the trait. This is no good as the trait needs to perform actions after the death of its parent actor.

When the GPS is enabled, the trait will track ownership changes and update the frozen actor (just like if there was only a GPS dot, it would change colour) and it will also remove frozen actors if the real actor dies or is sold.
2016-01-17 00:13:06 +00:00
RoosterDragon
a232eff7fd Replace IRemoveFrozenActor with FrozenActorLayer.Remove.
The IRemoveFrozenActor interface is replaced with a Remove method on FrozenActorLayer. IRemoveFrozenActor is a performance problem for FrozenActorLayer.Tick as it incurs a large cache miss penalty in order to load and enumerate the array of these interfaces for every frozen actor. Instead, we invert control and allow traits to remove frozen actors directly which eliminates the performance penalty.
2016-01-17 00:13:06 +00:00
RoosterDragon
c98df23b57 Create FrozenActor.RefreshState method for better encapsulation and reuse of this logic. 2016-01-17 00:13:06 +00:00
RoosterDragon
3026bdcea5 Implement equality on TraitPair. 2016-01-17 00:13:06 +00:00
Paul Chote
bee77db1e3 Rename variables for clarity. 2016-01-17 00:02:49 +00:00
Paul Chote
bec059a3c7 Remove unnecessary assumption about non-mobile. 2016-01-17 00:02:49 +00:00
Paul Chote
d4815407f2 Remove hardcoded trait assumptions from MCV and ConYards. 2016-01-17 00:02:49 +00:00
Paul Chote
e026a0f00f Create proper data structures for hardcoded AI classes. 2016-01-17 00:02:49 +00:00
Paul Chote
3b18c7815d Remove Util.GetFacing. 2016-01-16 22:38:17 +00:00
Paul Chote
a0979634bb Use .Yaw.Facing in Map. 2016-01-16 22:38:17 +00:00
Paul Chote
8a8368b97b Use .Yaw.Facing in Missile. 2016-01-16 22:38:17 +00:00
Paul Chote
46bf58b520 Introduce WVec.Yaw and WAngle.Facing. 2016-01-16 22:38:17 +00:00
Oliver Brakmann
addbe6d564 Merge pull request #10472 from Mailaender/guard-refactor
Cleaned up the Guard code
2016-01-16 23:09:19 +01:00
Oliver Brakmann
aeafa3383d Merge pull request #10516 from reaperrr/shp-compress
Recompressed a number of shp(td) files with shapeset
2016-01-16 22:59:41 +01:00
Oliver Brakmann
29e8396863 Merge pull request #10531 from pchote/fix-tileset-case
Fix case mismatches in TS tileset importer.
2016-01-16 22:43:02 +01:00
Oliver Brakmann
9de239e246 Merge pull request #10371 from Mailaender/demotruck-detonates
Generalized the DemoTruck trait for Tiberian Sun
2016-01-16 19:46:37 +01:00
Matthias Mailänder
6900e4bad3 rename DemoTruck to AttackSuicides
generalize move to add Aircraft support
give it a description
don't require Explodes as it is just a soft dependency
use a regular self kill
2016-01-16 19:38:23 +01:00
Oliver Brakmann
01a873218d Merge pull request #10364 from Mailaender/unload-overlay
Added the Tiberian Sun harvester unload overlay
2016-01-16 19:30:19 +01:00
abcdefg30
b593063057 Merge pull request #10519 from RockyTV/rockytv
Decrease Engineer and Medic priority
2016-01-16 14:35:41 +01:00
Matthias Mailänder
56313e6d8a Merge pull request #10525 from pchote/split-package-interfaces
Split IPackage into IReadOnlyPackage and IReadWritePackage
2016-01-16 14:19:54 +01:00
Matthias Mailänder
5fc6af6566 Merge pull request #10493 from pchote/fix-menu-hover
Update button mouseover when switching menus.
2016-01-16 14:10:24 +01:00
Paul Chote
9f28eefb31 Fix case mismatches in TS tileset importer. 2016-01-16 13:07:36 +00:00
Matthias Mailänder
152ff32ded add the Tiberian Sun harvester unload overlay 2016-01-16 13:51:08 +01:00
Matthias Mailänder
f3210755c0 rename WithDockingOverlay to WithDockedOverlay 2016-01-16 13:51:06 +01:00
abcdefg30
2ccf142ce9 Merge pull request #10492 from pchote/fix-mission-order
Sort missions by their order in missions.yaml
2016-01-16 13:26:26 +01:00
abcdefg30
aa23928e7b Merge pull request #10514 from pchote/blink-install-button
Blink install map button.
2016-01-16 13:16:31 +01:00
abcdefg30
c701ed6a5c Merge pull request #10510 from pchote/cancel-pbog-on-death
Cancel PBOG on death
2016-01-16 12:17:39 +01:00
abcdefg30
ee1cf5ff87 Merge pull request #10523 from pchote/fix-pbog-gameover-crash
Fix a crash if an order generator is active when a game ends.
2016-01-16 12:04:45 +01:00
Paul Chote
bdb8fd48ca Remove legacy package creation code. 2016-01-16 10:37:21 +00:00
Paul Chote
f8d0b97e8d Split IPackage into IReadOnlyPackage and IReadWritePackage. 2016-01-16 10:37:21 +00:00
reaperrr
77b0bd6067 Merge pull request #10520 from pchote/fix-voxel-z-offsets
Use height offset when rendering voxels.
2016-01-16 00:10:17 +01:00
Paul Chote
2fb0af60d1 Merge pull request #10482 from Mailaender/ra2-wav
Fixed crashes with Red Alert 2 wav files
2016-01-15 23:05:13 +00:00
Paul Chote
24570f0bdf Merge pull request #10490 from penev92/packages
Some renaming from "folder" to "package"
2016-01-15 22:40:02 +00:00
Paul Chote
1cb93b52c0 Cancel PBOG when placement becomes invalid. 2016-01-15 21:26:32 +00:00
Paul Chote
99ba155a16 Fix a crash if an order generator is active when a game ends. 2016-01-15 21:13:22 +00:00
Paul Chote
054be44563 Cache production queue on PBOG. 2016-01-15 20:59:57 +00:00
Paul Chote
44b1402080 Update button mouseover when switching menus. 2016-01-15 20:57:39 +00:00
Paul Chote
4bf887a905 Extract a helper method for switching menu types. 2016-01-15 20:57:39 +00:00
Oliver Brakmann
8ebee425ab Merge pull request #10264 from whinis/bleed
Restart button for missions
2016-01-15 21:55:02 +01:00
Whinis
9059e3e2c8 Changes to the RestartGame function to make it more streamlined
Removal of PromptAbortAction and inclusion into PromptConfirmAction
Changes to prevent a restart button being required for all mods
ConfirmAction
Addtion of named parameters to PromptConfirmAction
Moved StartGame from MissionBrowserLogic.cs to Game.cs
2016-01-15 15:34:00 -05:00
RoosterDragon
999965fc82 Merge pull request #10491 from pchote/fix-country-overflow
Fix MP browser country name overflow
2016-01-15 19:54:09 +00:00
RoosterDragon
db520a8560 Merge pull request #10476 from pchote/sound-device-labels
Truncate SoundDevice label at the UI level.
2016-01-15 19:53:42 +00:00
Matthias Mailänder
047f71e5ec Reset stream position after TryParseSound failures 2016-01-15 18:29:25 +01:00
Matthias Mailänder
d578ea4094 Implement MergedStream.Position properly 2016-01-15 18:29:25 +01:00
Matthias Mailänder
dc62dcd56d Avoid the bracket syntax everywhere 2016-01-15 18:29:25 +01:00
Matthias Mailänder
71e8e20987 Report unknown codecs when failing 2016-01-15 18:29:11 +01:00
Paul Chote
1896e707e6 Fix deployed tick tank turret. 2016-01-15 17:13:59 +00:00
Matthias Mailänder
fb39aed29f Return earlier on error in AudLoader 2016-01-15 18:11:22 +01:00
Matthias Mailänder
a01bc02390 Log sound parsing errors in sound.log 2016-01-15 18:10:52 +01:00
Paul Chote
18b3595894 Fix nod laser turret. 2016-01-15 17:08:45 +00:00
Paul Chote
d235dad754 Fix voxel barrel rendering. 2016-01-15 17:05:00 +00:00
Paul Chote
88e15d9100 Fix voxel z offsets. 2016-01-15 17:04:19 +00:00
Alexandre Oliveira
5ce454ce7b Decrease Engineer, Medic and Mechanic priority
Fixes the issue that engineers would just run straight at the target while
mixed with a group and attack moved.
2016-01-15 14:18:10 -02:00
Pavel Penev
e3f5697f7e Some more renaming from "folder" to "package" 2016-01-14 22:08:49 +02:00
Oliver Brakmann
da4f04acfb Merge pull request #10509 from pchote/cancel-pbog-on-menu
Cancel custom input modes when opening the menu.
2016-01-14 20:29:30 +01:00
abcdefg30
3128bec301 Merge pull request #10512 from pchote/disable-line-build
Use shift to disable line building.
2016-01-14 20:18:26 +01:00
Oliver Brakmann
4d3918f6de Merge pull request #10511 from pchote/disable-slot-admin-when-empty
Disable slot admin dropdown when empty.
2016-01-14 20:11:08 +01:00
reaperrr
4c737bccd5 Re-compress some D2k SHPs 2016-01-14 20:10:31 +01:00
reaperrr
902c19d394 Re-compress SHPs in RA bits with shapeset 2016-01-14 20:10:11 +01:00
reaperrr
82806d90bd Re-compress SHPs in cnc bits folder with shapeset 2016-01-14 20:09:16 +01:00
Alexander Heinz
e0c033fe99 restart button added for singleplayer in cnc, ra, d2k 2016-01-14 11:53:31 -05:00
Paul Chote
6d017b09f3 Blink install map button. 2016-01-14 00:27:30 +00:00
Paul Chote
fca759987c Use shift to disable line building. 2016-01-13 23:57:18 +00:00
Paul Chote
a639d9587d Disable slot admin dropdown when empty. 2016-01-13 23:45:25 +00:00
Paul Chote
244fb582fb Cancel tooltips when opening the ingame menu. 2016-01-13 23:32:45 +00:00
Paul Chote
06678ecc0d Cancel custom input modes when opening the menu. 2016-01-13 23:28:51 +00:00
Paul Chote
80b5311082 Disable color validation for locked colors. 2016-01-13 23:09:54 +00:00
Matthias Mailänder
5516291c60 Merge pull request #10441 from abcdefg30/07demolish
Let Tanya try to attack the flame turrets in soviet07
2016-01-13 22:50:41 +01:00
Matthias Mailänder
0317c984cb fix parachute palette configuration 2016-01-13 22:34:40 +01:00
Paul Chote
675faa2a6d Truncate long server locations. 2016-01-12 00:03:17 +00:00
Paul Chote
260681d048 Sort missions by their order in missions.yaml. 2016-01-11 23:54:55 +00:00
Paul Chote
eebdd6d041 Fix width of server location column. 2016-01-11 23:39:06 +00:00
Oliver Brakmann
8a755e673c Merge pull request #10480 from pchote/fix-cloak-modifier
Fix Cloak modifying the palette of decoration renderables.
2016-01-11 22:12:46 +01:00
Oliver Brakmann
e2a4efec29 Merge pull request #10479 from pchote/fix-d2k-moveflash
Disable modifiers on the d2k move flash palette.
2016-01-11 21:56:28 +01:00
Oliver Brakmann
af1611fcac Merge pull request #10477 from pchote/fix-pbog-decoration-offset
Use the correct CenterPosition for PBOG overlays.
2016-01-11 21:47:03 +01:00
Oliver Brakmann
1be9cedc01 Merge pull request #10303 from r34ch/doubles-rebalance
Rebalance doubles.oramap in RA mod
2016-01-11 21:39:53 +01:00
Pavel Penev
45382d193a Rename IFolder to IPackage 2016-01-11 21:53:48 +02:00
Paul Chote
2c0f231c77 Merge pull request #10486 from penev92/modImages
Hardcode mod logo and preview image file names
2016-01-11 19:31:05 +00:00
Pavel Penev
75d983c922 Hardcode mod logo and preview image file names
(Revert "Unhardcode mod logo and preview image paths")
2016-01-11 21:16:57 +02:00
Matthias Mailänder
37c41b2a23 Merge pull request #10232 from penev92/modSupport
Implement mod loading from the support directory
2016-01-11 12:37:35 +01:00
Paul Chote
62c222ebd2 Fix Cloak modifying the palette of decoration renderables. 2016-01-11 00:40:05 +00:00
Paul Chote
a8ac3a41e7 Disable modifiers on the d2k move flash palette. 2016-01-11 00:25:00 +00:00
Paul Chote
353837e37b Sync replay support timers to original game time. 2016-01-11 00:06:46 +00:00
Paul Chote
4f07d615b7 Use the correct CenterPosition for PBOG overlays. 2016-01-10 23:41:23 +00:00
Paul Chote
8731d78594 Truncate SoundDevice label at the UI level. 2016-01-10 23:31:30 +00:00
Pavel Penev
652f38ff66 Merge pull request #10471 from Mailaender/check-d2k-legacymap-actor-import
Fixed the Dune 2000 legacy map import
2016-01-11 00:29:54 +02:00
Pavel Penev
3722b2848b Change D2k to use the new path syntax with a mod ID prefix
Allows seemless movement between the game's mods directory and the support directory.
NOTE: Rebuilding will create the mod directories in the game's project dir and put the new DLLs there, which may lead to (although swallowed) exceptions when populating the mod dictionary due to repeating keys.
2016-01-10 23:52:10 +02:00
Pavel Penev
a3299d7030 Unhardcode mod logo and preview image paths 2016-01-10 23:52:09 +02:00
Pavel Penev
71c2d6b9d7 Add GetCandidateMods() method to ModMetadata to preload all folders that may contain a mod
This allows for loading of mods from both the game's mods directory and the support directory
2016-01-10 23:52:08 +02:00
Pavel Penev
778492840f Update mod.yaml loading methods to account for potential "package paths" 2016-01-10 23:19:29 +02:00
Pavel Penev
0e53312a1d Add a package-oriented Platform.ResolvePath() method 2016-01-10 23:19:28 +02:00
Pavel Penev
b27cf8ea94 Small refactoring in Manifest.cs 2016-01-10 23:19:26 +02:00
Matthias Mailänder
4012433e10 test and correct the ActorDataByActorCode 2016-01-10 21:56:26 +01:00
Oliver Brakmann
6114fe582c Merge pull request #10453 from huwpascoe/selbox
Refactored WorldInteractionControllerWidget
2016-01-10 19:34:25 +01:00
Matthias Mailänder
13f20a4b56 cache the trait lookup 2016-01-10 07:28:28 +01:00
Matthias Mailänder
a74aaf73c5 Guard requires IMove 2016-01-10 07:28:19 +01:00
Matthias Mailänder
5b263e3cdb put GuardOrderGenerator in the correct namespace 2016-01-10 07:22:42 +01:00
Matthias Mailänder
7729646f45 Merge pull request #10465 from obrakmann/fix-upgrade-rule-dates
Fix dates for upgrade rules
2016-01-10 06:53:13 +01:00
RoosterDragon
a15d1801e1 Calculate better upper bounds in SpatiallyPartitioned.
SpatiallyPartitioned was calculating larger that necessary bounding regions as this was simple to do and does not impact correctness. By being careful to calculate the upper bounds exactly we can avoid checking more bins than we need to during updates and queries.
2016-01-09 23:44:58 +00:00
RoosterDragon
8ff08d4e19 Add IntegerDivisionRoundingAwayFromZero.
This provides the mirror of the integer division operator, which rounds towards zero.
2016-01-09 23:44:55 +00:00
RoosterDragon
8b12a4a747 Add tests for SpatiallyPartitioned. 2016-01-09 23:44:53 +00:00
RoosterDragon
21fd4df586 Invalidate shroud when enabling/disabled the shroud.
This ensures when shroud is toggled during a replay, the shroud renderer and radar update correctly.
2016-01-09 23:07:32 +00:00
Oliver Brakmann
0a413af3eb Merge pull request #10440 from abcdefg30/05aDemolish
Polish the demolition of the prison in allies05a
2016-01-09 22:22:54 +01:00
Oliver Brakmann
2ee3a66b48 Merge pull request #10442 from abcdefg30/06secondary
Add a new secondary objective to the soviet06 missions
2016-01-09 22:13:46 +01:00
Oliver Brakmann
a0d33320a0 Merge pull request #10439 from abcdefg30/sub04a
Disable sub pen and ship yard in soviet04a
2016-01-09 21:41:17 +01:00
Oliver Brakmann
b8667ba968 Merge pull request #10458 from Mailaender/ts-cliffsin
Added Tiberian Sun map Cliffs of Insanity
2016-01-09 21:38:26 +01:00
Oliver Brakmann
2a1bc11133 Merge pull request #10459 from Mailaender/ts-karasjok
Added map Town of Karasjok for Tiberian Sun
2016-01-09 21:23:56 +01:00
Oliver Brakmann
abe76d6f07 Fix dates for upgrade rules
The dates for the following two upgrade rules have not been touched since they were backported to release-20151224:

1. 20151107: PaticleSize -> ParticleSize
2. 20151122: DeployToUpgrade, Upgrades -> DeployedUpgrades
2016-01-09 20:25:32 +01:00
RoosterDragon
1bc3a7395f Prevent items without size from being added to SpatiallyPartitioned.
Items with no size act unexpectedly as they can fail to be returned when querying partition bins as they do not intersect along the top or left edges of the bin. We prevent such items being added in the first place to avoid this scenario.

As a side effect - we must now prevent any Immobile items that do not have size from being added to the screen map.
2016-01-09 16:51:13 +00:00
abcdefg30
9476889989 Add a new secondary objective to the soviet06 missions 2016-01-09 14:58:36 +01:00
RoosterDragon
bef6f40759 Merge pull request #10392 from Mailaender/d2k-ai-aircraft
Fixed AI bots not building any Carryalls
2016-01-09 11:46:51 +00:00
RoosterDragon
764f5d6bd9 Merge pull request #10236 from teees/ts-air-separation
Set ideal aircraft separation to half of the default value
2016-01-09 11:43:09 +00:00
Matthias Mailänder
715ba32262 add map Town of Karasjok 2016-01-09 08:24:24 +01:00
Matthias Mailänder
1d20203478 add Cliffs of Insanity 2016-01-09 08:11:13 +01:00
Matthias Mailänder
97b0b1afab Merge pull request #10418 from pchote/format-names
Rename WW compression formats and move into Mods.Common.
2016-01-08 19:17:50 +01:00
Matthias Mailänder
3c4dd64b86 Merge pull request #10457 from obrakmann/fix10450_lobby-early-crash
Don't update player list when lobby doesn't have our client yet
2016-01-08 19:14:03 +01:00
Matthias Mailänder
65a06adc51 Merge pull request #10041 from teees/exit-on-death
Unload passengers / cargo on death
2016-01-08 18:15:40 +01:00
teees
b7a3a446e1 Unload passengers on death 2016-01-08 08:50:35 +01:00
Paul Chote
1202a4d968 Move IniFile to Mods.Common. 2016-01-07 21:07:43 +00:00
Paul Chote
9f4b7097b2 Move WW compression formats into Mods.Common. 2016-01-07 21:07:43 +00:00
Paul Chote
83477ec19e Move VqaReader to Mods.Common. 2016-01-07 21:07:42 +00:00
Paul Chote
33f3e5ad47 Rename WW-created compression formats. 2016-01-07 21:07:42 +00:00
Oliver Brakmann
d580551572 Don't update player list when lobby doesn't have our client yet 2016-01-07 21:54:47 +01:00
Matthias Mailänder
7c31f6e18e Merge pull request #10417 from RoosterDragon/log-thread-safety
Make Log thread-safe.
2016-01-07 21:34:56 +01:00
Matthias Mailänder
c607c8532f Merge pull request #10443 from Truth99A/TD-BuildPaletteOrder-Change
Changed build palette order of structures for TD
2016-01-07 21:05:32 +01:00
Matthias Mailänder
27eeaf3d41 Merge pull request #10112 from DnAp/PowerTooltip
Closes #6011
2016-01-07 20:57:14 +01:00
abcdefg30
22e071c57f Merge pull request #10152 from teees/ts-aircraft-husks
Added aircraft husks (Tiberian Sun)
2016-01-07 17:36:53 +01:00
abcdefg30
9aca470a73 Merge pull request #9808 from teees/cloak-fix
Several fixes for cloak behavior
2016-01-07 17:34:33 +01:00
Huw Pascoe
df441ff5c7 Refactored WorldInteractionControllerWidget
Cleaned up all the nullable types
Simplified dragEnd, lastMousePos, xy, etc.
2016-01-07 16:00:41 +00:00
teees
e8856a9268 Set ideal separation to a lower value for ts aircraft 2016-01-07 14:50:22 +01:00
teees
5ef93d330a Added aircraft husks 2016-01-07 14:36:22 +01:00
teees
3a83e0cb92 Changes to ts cloaking behaviour to closer resemble the original 2016-01-07 13:44:17 +01:00
teees
f46185b85f Reworked cloaking behaviour 2016-01-07 13:44:16 +01:00
Truth99A
3f156f6dda changed build palette order of sturctures for TD
changed the build palette order so that it follows the tech tree
images of the change + poll can be found at: http://www.sleipnirstuff.com/forum/viewtopic.php?f=82&t=19220&postdays=0&postorder=asc&vote=viewresult
2016-01-07 12:38:50 +11:00
abcdefg30
9db974cfe9 Merge pull request #10406 from Mailaender/d2k-no-ra
Removed the RA mod DLL dependency from D2k
2016-01-06 21:53:09 +01:00
abcdefg30
6fa70134cd Merge pull request #10399 from Mailaender/cnc-no-ra
Removed the RA mod DLL dependency from TD
2016-01-06 21:51:16 +01:00
abcdefg30
334105da19 Merge pull request #10369 from Mailaender/tread-lightly
Fixed map "Tread Lightly"
2016-01-06 21:39:52 +01:00
abcdefg30
c28a09e3ef Merge pull request #10377 from Mailaender/tiberium-garden-redux
Added TS map Tiberium Garden Redux
2016-01-06 21:31:37 +01:00
Matthias Mailänder
b61cfc86a0 Merge pull request #10032 from teees/vocloader
Added VocLoader
2016-01-05 22:33:27 +01:00
teees
5def1ed626 Added VocLoader 2016-01-05 18:06:54 +01:00
Matthias Mailänder
aa9ef48737 Revert "Don't attack actors that you can't see"
This reverts commit d235ea3a52.
2016-01-04 23:02:03 +01:00
Matthias Mailänder
98a1a452c1 Merge pull request #10410 from RoosterDragon/fal-footprint
Fix FrozenActorLayer.FootprintBounds.
2016-01-04 22:13:49 +01:00
Oliver Brakmann
36dc8775bc Merge pull request #10414 from abcdefg30/luaLearn
Reference the Map Scripting page from the Lua API page
2016-01-04 21:57:46 +01:00
Matthias Mailänder
16d2f8466c Merge pull request #10412 from kyrylo/ra-minelayer-health-buff
ra: buff minelayer's HP
2016-01-04 21:51:39 +01:00
RoosterDragon
081b40b14f Make Log thread-safe.
Since logging is exposed via static methods, it need to be thread-safe or multiple threads trying to log at the same time will cause bad things to happen.
2016-01-04 19:27:48 +00:00
abcdefg30
e9d76011c5 Merge pull request #10388 from RoosterDragon/auto-target-perf
Speed up AutoTarget.ChooseTarget among groups of allied units.
2016-01-04 17:48:33 +01:00
abcdefg30
749163464a Reference the Map Scripting page from the Lua API page 2016-01-04 16:59:44 +01:00
abcdefg30
bb399a536b Merge pull request #10409 from Mailaender/fix-globalchat
Fixed all known crashes in GlobalChat
2016-01-04 15:42:14 +01:00
atlimit8
e4f4c578f6 Merge pull request #10376 from RoosterDragon/repulse-perf
Speed up Aircraft.Repulse.
2016-01-04 01:26:03 -06:00
RoosterDragon
adc7e902e3 Speed up AutoTarget.ChooseTarget among groups of allied units.
Most auto target scans will be conducted among groups of allied units unable to target each other because they are allied and their weapons only target enemies. Since they cannot target each other, the scan will be repeated constantly. Realising this, we can significantly reduce the performance impact of auto target scanning by bailing early in this scenario to avoid carrying out expensive targeting checks on friendly units which we know will fail anyway.
2016-01-04 07:07:26 +00:00
atlimit8
7acd71cd7d Merge pull request #10407 from pchote/ts-resource-colors
Fix the TS resource minimap colors.
2016-01-04 00:31:58 -06:00
Kyrylo Silin
91690bdc44 ra: buff minelayer's HP
Currently 1 rocket soldier can kill a minelayer with 2 shots. With this
change a rocket soldier needs 3 shots. I think this buff is needed
because minelayer costs $800 and it has even less HP than a paper light
tank.
2016-01-04 07:41:51 +02:00
RoosterDragon
0dc51f79a0 Fix FrozenActorLayer.FootprintBounds.
The size of the bounds was too small (as rectangle has exclusive edges on the right and bottom). This meant some intersection tests would fail and thus the frozen actor was not found when searching the partition bins.
2016-01-03 23:48:28 +00:00
Matthias Mailänder
83bada07b5 don't disconnect every client when one user gets kicked 2016-01-03 23:19:36 +01:00
Matthias Mailänder
fa4a177cd5 fix a NullReferenceException when the widget is unbound 2016-01-03 23:09:04 +01:00
RoosterDragon
5b8b059d19 Merge pull request #10405 from Mailaender/ts-rm-gps
Removed GpsWatcher from Tiberian Sun
2016-01-03 21:40:57 +00:00
Paul Chote
ca2728f361 Fix the TS resource minimap colors. 2016-01-03 21:32:15 +00:00
Matthias Mailänder
bb9429a530 remove the RA mod dependency 2016-01-03 22:25:54 +01:00
Matthias Mailänder
1c8a0fc52a remove GpsWatcher from Tiberian Sun 2016-01-03 21:32:07 +01:00
Taryn Hill
7cb8b42a13 Merge pull request #10401 from scshunt/authorship
Add me to AUTHORS file.
2016-01-03 11:48:32 -06:00
Sean Hunt
aa0cd89b5c Add myself to AUTHORS 2016-01-03 12:16:51 -05:00
Matthias Mailänder
3053024fa2 Merge pull request #10400 from scshunt/style
Style fixes.
2016-01-03 18:10:40 +01:00
Sean Hunt
a7a22d7a49 Style fixes. 2016-01-03 12:02:26 -05:00
Matthias Mailänder
27712efe9b remove the RA mod dependency 2016-01-03 17:48:41 +01:00
Matthias Mailänder
ed5b8d024b reimport Tread Lightly 2016-01-03 12:12:03 +01:00
Matthias Mailänder
7d827a9c32 limit the production of carryalls 2016-01-03 11:57:50 +01:00
Matthias Mailänder
88289f8242 add Tiberium Garden Redux 2016-01-03 11:55:28 +01:00
Matthias Mailänder
c17db1245d use the original naming to keep compatible for legacy map import 2016-01-03 11:55:27 +01:00
Matthias Mailänder
47bc8426f1 use the original naming for legacy map import
although it seems redundant for now
2016-01-03 11:51:48 +01:00
Matthias Mailänder
14d412a361 Merge pull request #10385 from pchote/d2k-worm-trail
Finish D2K worm implementation
2016-01-03 09:21:08 +01:00
Matthias Mailänder
df8b1efbf4 fix AI not building any Carryalls 2016-01-03 08:54:12 +01:00
Paul Chote
47c97735ed Overhaul sand worm rendering and attacking. 2016-01-03 01:17:30 +00:00
Paul Chote
8ce274ed79 Overhaul and rename WithActiveAnimation -> WithIdleAnimation. 2016-01-03 01:17:29 +00:00
Paul Chote
adaa1fa70e Add multiple sequence and upgrade support to LeavesTrails. 2016-01-03 01:17:29 +00:00
Paul Chote
6af377030c Add sequence parameter to SpriteEffect. 2016-01-03 01:17:29 +00:00
RoosterDragon
8d7ed98636 Merge pull request #10380 from pchote/improve-trails
Polish and improved customization for actor trails
2016-01-03 01:15:26 +00:00
RoosterDragon
55d074b25d Merge pull request #10384 from pchote/upgrade-newlines
Fix duplicated end of file newline being saved to upgraded yaml.
2016-01-03 00:56:19 +00:00
RoosterDragon
cf841f1e64 Merge pull request #10386 from penev92/fixStuff
Fix upgrade rule output spam
2016-01-03 00:40:44 +00:00
Paul Chote
f108d4b113 Polish wakes for TS HVR and APC. 2016-01-02 21:19:06 +00:00
Pavel Penev
30f6c10101 Fix upgrade rule output spam 2016-01-02 22:37:12 +02:00
Paul Chote
4f1d8b7ac9 Remove spurious final newline from mod files. 2016-01-02 20:06:53 +00:00
Paul Chote
bc4ea3f87b Don’t duplicate the final newline when saving upgraded yaml. 2016-01-02 20:06:52 +00:00
Matthias Mailänder
63af439c73 Merge pull request #10365 from reaperrr/fix-missile-effects
Misc Missile and CreateEffectWarhead tweaks
2016-01-02 17:08:52 +01:00
abcdefg30
7934995a8f Let Tanya try to attack the flame turrets in soviet07 2016-01-02 16:31:01 +01:00
abcdefg30
7c84c666d7 Add some empty lines to soviet07.lua for better readability 2016-01-02 16:24:25 +01:00
abcdefg30
fb7d64a126 Disable sub pen and ship yard in soviet04a
as there is no water in this mission
2016-01-02 16:13:29 +01:00
abcdefg30
c6822452e8 Polish the demolition of the prison in allies05a 2016-01-02 16:07:59 +01:00
RoosterDragon
224c458d20 Merge pull request #10375 from Mailaender/zip-codepage
Use UTF8 instead of system locale code page
2016-01-02 14:57:04 +00:00
Paul Chote
7a9f27aa11 Fix trail sprite size with zoom. 2016-01-02 12:25:52 +00:00
Paul Chote
f8b0674ccc Add extra configuration options for trails. 2016-01-02 12:25:52 +00:00
Matthias Mailänder
fb62b40848 Merge pull request #10252 from penev92/removeToP
Remove obsolete TransformOnPassenger trait
2016-01-02 12:49:01 +01:00
Matthias Mailänder
51468c60ed use UTF8 instead of system locale code page 2016-01-02 09:08:21 +01:00
RoosterDragon
53ede338de Speed up Aircraft.Repulse.
Avoid LINQ in the repulsion force calculation, and cache a trait lookup used when determining movement speed.
2016-01-02 06:48:12 +00:00
Pavel Penev
51281e2546 Remove obsolete TransformOnPassenger trait
The upgrade system has made this obsolete. Units like the RA2 IFV are better done that way.
2016-01-02 02:01:46 +02:00
RoosterDragon
0363aeaaea Merge pull request #10362 from Mailaender/new-map-crash
Fixed a crash on new map creation
2016-01-01 20:53:06 +00:00
Pavel Penev
17239979d7 Merge pull request #10162 from teees/hovers-fix2
fix hovers trait to use heightmap
2016-01-01 22:51:27 +02:00
teees
ce5c8fde5c fix hovers trait to use heightmap 2016-01-01 21:04:17 +01:00
Matthias Mailänder
bf2513407a fix a crash on new map creation 2016-01-01 16:47:15 +01:00
Oliver Brakmann
46133891bb Merge pull request #10312 from r34ch/man-to-man-rebalance
Rebalance man-to-man.oramap for the RA mod
2016-01-01 16:38:08 +01:00
Oliver Brakmann
e1a5a5632d Merge pull request #10366 from Phoib/NoLineEnding
Eliminated superfluous linendings
2016-01-01 16:33:28 +01:00
Oliver Brakmann
9e0f325887 Merge pull request #10301 from r34ch/singles-rebalance
Singles rebalance
2016-01-01 16:31:37 +01:00
Emiel Suilen
3e63869bd1 Eliminated superfluous linendings 2016-01-01 16:22:19 +01:00
reaperrr
d93a3a61ee Use DistanceFromEdge instead of OuterRadius for CreateEffectWarhead's hit check 2016-01-01 15:52:13 +01:00
reaperrr
671f5af723 Unhardcode Missile freefall gravity 2016-01-01 15:52:12 +01:00
reaperrr
c02206601c Use airMargin in CreateEffectWarhead's water check
Closes #10350.
2016-01-01 15:43:34 +01:00
Paul Chote
99ef4dc832 Merge pull request #10346 from RoosterDragon/misc-fixes
Dispose fixes + misc touchups
2016-01-01 13:53:05 +00:00
DArcy Rush
e004b5a7c5 Rebalance doubles.oramap for the RA mod 2016-01-01 13:22:09 +00:00
Paul Chote
0d2be8182f Merge pull request #10345 from RoosterDragon/test-deprecation
Suppress warning about Is.StringContaining on NUnit 3
2016-01-01 13:02:08 +00:00
Matthias Mailänder
be235eb9fb Merge pull request #10210 from pchote/other-enter-traits
Add enter behaviour field to Infiltrates/EngineerRepair/RepairsBridges.
2016-01-01 12:01:26 +01:00
Matthias Mailänder
b3c474ebf9 Merge pull request #9452 from atlimit8/CreateFrozenActorsInFrozenUnderFogConstructor
Move FrozenActor creation to Created in FrozenUnderFog
2016-01-01 11:45:08 +01:00
RoosterDragon
3e77f48b06 Rethrow exception correctly in CoordinateTest. 2016-01-01 04:51:57 +00:00
RoosterDragon
5f13fa0343 Fix serialization of custom exceptions. 2016-01-01 04:51:55 +00:00
RoosterDragon
b5f24c3fa6 Add some missing Dispose calls, fix some Dispose implementations. 2016-01-01 04:51:54 +00:00
DnAp
c4b925ffc3 Make trait PowerTooltip 2015-12-31 18:20:55 +03:00
Matthias Mailänder
85ffd505c1 Merge pull request #10344 from obrakmann/fix10339_map-editor-filetype-crash
Allow only valid file types when saving maps in the editor
2015-12-31 13:33:45 +01:00
Matthias Mailänder
f8161300ed Merge pull request #10304 from whinis/ReplayReworkPR
Reworking ReplayRecorderConnection to be not be a Connection
2015-12-31 12:40:51 +01:00
Matthias Mailänder
cd730914db Merge pull request #10119 from RoosterDragon/sort-effects-with-actors
Interleave renderables for effects and actors
2015-12-31 12:31:47 +01:00
Matthias Mailänder
6a555a7a8d Merge pull request #10089 from abcdefg30/shellmapCPU
Try to win a small amount of performance when the shellmap is disabled
2015-12-31 12:22:14 +01:00
DArcy Rush
68d8ba7344 Update singles.oramap in the RA mod 2015-12-31 09:33:24 +00:00
DArcy Rush
e88721ca73 Rebalance man-to-man.oramap for the RA mod 2015-12-31 08:41:50 +00:00
Matthias Mailänder
9e5d325a25 Merge pull request #10347 from r34ch/kotg2-rebalance
Rebalance keep-off-the-grass-2.oramap for the RA mod
2015-12-31 09:39:49 +01:00
Matthias Mailänder
39bdda8fd3 Merge pull request #10352 from RoosterDragon/global-light-perf
Speed up GlobalLightingPaletteEffect.
2015-12-31 09:35:19 +01:00
atlimit8
4744f436d3 Move FrozenActor creation to Created in FrozenUnderFog 2015-12-31 00:53:26 -06:00
RoosterDragon
32bf9f7661 Suppress warning about Is.StringContaining on NUnit 3. 2015-12-31 06:37:55 +00:00
RoosterDragon
208b51feb1 Speed up GlobalLightingPaletteEffect.
Perform everything in integer arithmetic using some bit twiddling to avoid the performance cost of converting to and from floating point values.
2015-12-31 06:26:05 +00:00
Whinis
155c74fc5f Reworking ReplayRecorderConnection to no longer be an IConnection but rather attached to IConnection 2015-12-30 22:17:13 -05:00
reaperrr
f7c6938e27 Merge pull request #10243 from pchote/fix-neutrino-bullets
Fix collision detection for Missiles and Bullets.
2015-12-31 00:14:16 +01:00
Matthias Mailänder
aed5e4a057 Merge pull request #10337 from RoosterDragon/fix-upgrade
Fix UpgradeChromeMetrics.
2015-12-30 23:48:33 +01:00
RoosterDragon
47aafc7936 Merge pull request #10334 from obrakmann/fix10331_suppress-unread-irc-notifications
Fix counting IRC notifications as unread messages
2015-12-30 22:25:17 +00:00
abcdefg30
f364a306f3 Merge pull request #10201 from teees/discardexcessresources
Optionally discard resources when silo capacity has been reached
2015-12-30 22:43:15 +01:00
DArcy Rush
6b93e21b81 Rebalance keep-off-the-grass-2.oramap for the RA mod 2015-12-30 21:36:16 +00:00
Paul Chote
5b99a0c2da Implement enter behaviour for building/bridge repair. 2015-12-30 19:54:18 +00:00
Paul Chote
1959820bc8 Implement enter behaviour for Infiltrates plus other cleanups. 2015-12-30 19:53:51 +00:00
Paul Chote
f5fafb1b9d Move EnterBehaviour behaviour to Enter. 2015-12-30 19:53:06 +00:00
Paul Chote
8771562e37 Reduce projectile search radius to match warheads. 2015-12-30 19:32:00 +00:00
Paul Chote
124e7b389a Add a lint test for projectile target search radius. 2015-12-30 19:31:59 +00:00
Paul Chote
a44b50c2ad Increase wall blocking geometry to a full cell. 2015-12-30 19:31:59 +00:00
Paul Chote
871d328c35 Fix collision detection for Missiles and Bullets. 2015-12-30 19:15:17 +00:00
Oliver Brakmann
83ee267105 Allow only valid file types when saving maps in the editor
It will also allow saving to files and directories which have a dot in their name.
2015-12-30 19:59:13 +01:00
Oliver Brakmann
a580aa1f27 Merge pull request #10316 from abcdefg30/powerUpDownD2k
Swap the Disable- and EnablePower sounds of D2K
2015-12-30 17:06:47 +01:00
abcdefg30
d2b75d780d Merge pull request #9856 from atlimit8/FilterInstalledModsFromNeededMods
Show only missing required "mod (version)"s
2015-12-30 15:38:07 +01:00
Matthias Mailänder
f0ef8e669a Merge pull request #9945 from teees/air-fix
Adjust orca sight range and prevent aircraft from flying into shroud
2015-12-30 14:33:13 +01:00
Matthias Mailänder
c6cc0ecd29 Merge pull request #10323 from RoosterDragon/struct-equatable
Ensure some structs implement IEquatable<T>.
2015-12-30 09:28:09 +01:00
Matthias Mailänder
5061e7acd7 Merge pull request #10333 from atlimit8/RemoveLingeringNUnit2
Fix-up NUnit 2 & 3 use in Unix Makefile
2015-12-30 09:21:23 +01:00
Matthias Mailänder
3372079beb Merge pull request #10336 from RoosterDragon/fix-param-order
Fix parameters sent to DetectionCircleRenderable.
2015-12-30 09:13:37 +01:00
RoosterDragon
a010b06b49 Fix UpgradeChromeMetrics.
This needs to handle the null value passed in for the parent parameter from it's only (non-recursive) callsite.
2015-12-30 04:48:38 +00:00
RoosterDragon
6156575cd5 Fix parameters sent to DetectionCircleRenderable.
The parameters had been accidentally reversed in the builder methods.
2015-12-30 04:26:52 +00:00
atlimit8
68fd5dfd58 Merge pull request #10272 from RoosterDragon/player-dict
Speed up dictionaries keyed on Player
2015-12-29 19:27:11 -06:00
abcdefg30
2dd48ebe5f Merge pull request #10320 from r34ch/competitive-maps
Add competitive maps to the pool
2015-12-30 02:01:28 +01:00
atlimit8
dbcb0d6c09 Fix-up NUnit 2 & 3 use in Unix Makefile 2015-12-29 18:48:32 -06:00
Oliver Brakmann
7858ba16c4 Fix counting IRC notifications as unread messages 2015-12-30 00:50:03 +01:00
Oliver Brakmann
0be9d09650 Merge pull request #10328 from r34ch/ra-light-tank-buff
Buff light tank in the RA mod
2015-12-29 23:11:45 +01:00
Oliver Brakmann
d3b9277981 Merge pull request #10327 from pjdelport/add-travis-make-nunit
Add "make nunit" step to Travis
2015-12-29 22:50:50 +01:00
Piët Delport
8c3533e8e6 Add "make nunit" step to Travis
Historically, this wasn't working, but it should be more stable now.
2015-12-29 22:43:58 +02:00
Oliver Brakmann
928eda3a24 Merge pull request #10326 from pjdelport/add-nunit-binpath-config
Add NUnit configuration with correct binpath
2015-12-29 21:42:43 +01:00
DArcy Rush
efefb0e842 Buff light tank in the RA mod 2015-12-29 20:06:49 +00:00
Pavel Penev
1d69669b05 Merge pull request #10168 from teees/heightmap-fixes
Use heightmap to get correct groundlevel, use AircraftInfo for correct ground level
2015-12-29 21:45:55 +02:00
Piët Delport
8050b10488 Add NUnit configuration with correct binpath
This allows the tests to find and load OpenRA.Mods.Common.dll correctly
under Linux / Mono.

This should fix #10325.
2015-12-29 21:03:51 +02:00
Oliver Brakmann
6190db06ad Merge pull request #10309 from pjdelport/update-nunit-2.6.4-to-3.0.1
Update the default NUnit from 2.6.4 to 3.0.1
2015-12-29 19:10:00 +01:00
Piët Delport
e7a5be0c1b Add --noresult to the "make nunit" invocation
(requested by @obrakmann)
2015-12-29 19:47:41 +02:00
Piët Delport
8399ec721e Update AppVeyor config for NUnit 3.x
This follows the instructions at:

https://www.appveyor.com/docs/running-tests#nunit-3-x

and should enable reporting test results to AppVeyor, too.
2015-12-29 19:34:02 +02:00
Piët Delport
7f51a69eb5 Update NUnit lib path for the ps1 script too 2015-12-29 19:34:02 +02:00
Piët Delport
d682522b78 List myself in AUTHORS 2015-12-29 19:34:02 +02:00
Piët Delport
e9faad8224 Update fetch scripts to download NUnit 3.0.1, and adjust paths
Update Makefile to look for nunit3-console.exe
2015-12-29 19:34:02 +02:00
abcdefg30
c372d966b4 Merge pull request #10322 from RoosterDragon/triggers-array
Store triggers in ScriptTriggers in an array.
2015-12-29 16:41:03 +01:00
abcdefg30
0c23648899 Merge pull request #10225 from reaperrr/disable-turret
Disable WithSpriteTurret until build/transform complete
2015-12-29 16:27:38 +01:00
RoosterDragon
4948f73154 Ensure some structs implement IEquatable<T>. 2015-12-29 15:27:00 +00:00
abcdefg30
a7de8b3919 Merge pull request #10256 from RoosterDragon/fal-partitioning
Spatially partition frozen actors
2015-12-29 16:16:26 +01:00
abcdefg30
d5cfc1672c Merge pull request #9800 from huwpascoe/hitshape
Hitshape
2015-12-29 16:16:05 +01:00
RoosterDragon
0c5463208d Store triggers in ScriptTriggers in an array.
We can use the enum to index the array directly, in order to give faster lookups compared to a dictionary.
2015-12-29 14:27:54 +00:00
abcdefg30
e38424a2eb Merge pull request #10133 from Mailaender/benchmark
Added a benchmark mode
2015-12-29 15:20:28 +01:00
abcdefg30
3c171569a7 Merge pull request #10193 from atlimit8/ITraitInfoInterface
TraitInfoInterface base for interfaces implemented by trait infos
2015-12-29 15:04:57 +01:00
abcdefg30
76d88e5ae4 Remove the now unused ctor of VqaPlayerWidget to silence travis 2015-12-29 14:54:22 +01:00
abcdefg30
64f57ac9a5 Try to win a small amount of performance when the shellmap is disabled 2015-12-29 14:54:21 +01:00
DArcy Rush
6dafeba3ab Add behind-the-veil.oramap to the RA mod 2015-12-29 11:35:42 +00:00
DArcy Rush
2a69b60af0 Add sidestep.oramap to the RA mod 2015-12-29 11:34:48 +00:00
DArcy Rush
734312ff37 Add and touch up tabula-rasa.oramap for the RA mod 2015-12-29 11:23:47 +00:00
RoosterDragon
4b2df6d133 Merge pull request #10290 from Phrohdoh/remove-fromdict
Remove unused methods in MiniYaml
2015-12-29 02:26:43 +00:00
RoosterDragon
840dd189ae Merge pull request #10310 from pchote/moregl
More OpenGL cleanups
2015-12-29 02:08:40 +00:00
reaperrr
7076dfaa4d HitShape Upgrade Rules
Radius is now a sub-property of Shape.Circle.
2015-12-29 00:29:03 +00:00
Huw Pascoe
b427190ab4 HitShape Unit Tests
The shapes should accurately calculate their distancce from a point.
2015-12-28 23:25:36 +00:00
Huw Pascoe
a8299221db Integrated HitShapes
Integrated hit shapes with field loader and warhead calculations.
2015-12-28 23:25:35 +00:00
Huw Pascoe
5ef6d86f66 Added HitShapes
New IHitShape interface.
Added Circle, Capsule and Rectangle shapes.
2015-12-28 23:25:33 +00:00
RoosterDragon
8d2fc24fbe Speed up SpatiallyPartitioned.InBox for searches in a single partition bin.
If a search in a spatial partition is taking place entirely within a single bin, the cost of tracking possible duplicate items with a set can be avoided for a small speedup.
2015-12-28 21:49:58 +00:00
RoosterDragon
8ec03ab3b7 Spatially partition frozen actor layer.
Track changes in the shroud in a spatial partition in frozen actor layer. This allows us to run the expensive visibility updates only on frozen actors with a footprint in affected partitions, rather than on all frozen actors every time.
2015-12-28 21:49:57 +00:00
abcdefg30
f65ecf7780 Swap the Disable- and EnablePower sounds of D2K
Although the naming suggests something different,
the sounds are more fitting the other way round.
2015-12-28 22:30:34 +01:00
reaperrr
8d412e75ed Misc ZOffset fixes 2015-12-28 21:29:21 +00:00
reaperrr
c7b61799dc Make Bullet and Missile contrail ZOffset customizable
And give them a high default to avoid contrails "hiding" below large sprites.
2015-12-28 21:28:32 +00:00
reaperrr
2c5998e5d2 Make actor Contrail ZOffset customizable 2015-12-28 21:28:30 +00:00
RoosterDragon
e7f127976a Fix floating text ZOffset. 2015-12-28 21:28:29 +00:00
reaperrr
eafae0dee5 Fix ZOffset for move flash sequence 2015-12-28 21:28:28 +00:00
reaperrr
a7b5800d6f Make AreaBeam and LaserZap Z sorting customizable 2015-12-28 21:28:27 +00:00
reaperrr
92c7af7302 Fix beacon and rallypoint sequence ZOffsets 2015-12-28 21:28:26 +00:00
reaperrr
55f5bb5404 Fix powerdown/poweroff sequence ZOffsets 2015-12-28 21:28:25 +00:00
reaperrr
d8169556c8 Fix repair indicator sequence ZOffset 2015-12-28 21:28:24 +00:00
reaperrr
9cdbb5cf9e Fix crate effect sequence ZOffsets 2015-12-28 21:28:22 +00:00
reaperrr
af2343f487 Fix D2k rpg sequence ZOffset 2015-12-28 21:28:21 +00:00
RoosterDragon
8cb7211bb1 Fix YAML style. 2015-12-28 21:28:19 +00:00
reaperrr
32c6860445 Adapt explosion ZOffsets for effect Z sorting 2015-12-28 21:28:18 +00:00
reaperrr
072e4ce212 Adjust TS projectile sequences for Z sorting 2015-12-28 21:28:16 +00:00
reaperrr
0f61bec6b2 Adjust D2k projectile sequences for Z sorting 2015-12-28 21:28:15 +00:00
reaperrr
7cb5615c0b Adjust TD projectile sequences for Z sorting
Remove unused atomicup / atomicdown entries.
2015-12-28 21:28:14 +00:00
reaperrr
74123be3af Adjust RA projectile and smoke trail sequences for Z sorting
Make torpedoes go below ships.
Remove unused atomicup/atomicdown entries.
2015-12-28 21:28:13 +00:00
RoosterDragon
a50fa4fcaa Interleave renderables for effects and actors.
Previously, renderables from actors were z-ordered, but effects were excluded and not ordered. Now we order them all as a whole.
2015-12-28 21:28:12 +00:00
Paul Chote
7cc8846d72 Merge pull request #10271 from RoosterDragon/point-sequencing
Support sending sequences of points when drawing lines
2015-12-28 19:36:49 +00:00
Paul Chote
0d07fe4b78 Merge pull request #10066 from Mailaender/last-resource-sprite-frame
Fixed highest density sprite frame never being rendered
2015-12-28 19:32:34 +00:00
Paul Chote
b7b48e71ef Merge pull request #10222 from teees/withvoxelturret-fix
Disable WithVoxelTurret until build/transform complete
2015-12-28 18:55:48 +00:00
Paul Chote
12df496f5b Merge pull request #10015 from atlimit8/MapEditorTooltips
Add map editor only tooltips
2015-12-28 18:46:07 +00:00
Paul Chote
6b0e4cf645 Unify framebuffer api naming. 2015-12-28 15:15:30 +00:00
Paul Chote
e69c3360f6 Reorganise GL initialisation. 2015-12-28 15:15:29 +00:00
Oliver Brakmann
5e04c45dd9 Merge pull request #10163 from teees/cruising
Added cruising upgrade to aircraft
2015-12-28 15:25:41 +01:00
Paul Chote
e63fc00b76 Unify framebuffer api naming. 2015-12-28 14:23:44 +00:00
Oliver Brakmann
3cd708d2bb Merge pull request #10302 from Phrohdoh/attrib-require-traits
Allow ActorReferenceAttribute to list required traits
2015-12-28 14:30:01 +01:00
Oliver Brakmann
906aa0f1fd Merge pull request #10003 from r34ch/mute-setting
Mute setting
2015-12-28 14:07:27 +01:00
Paul Chote
4372ed650e Move CheckGlVersion to OpenGL. 2015-12-28 10:59:43 +00:00
Paul Chote
d96a32a89f Move WriteGraphicsLog to OpenGL. 2015-12-28 10:57:43 +00:00
Pavel Penev
4ec200b3a1 Merge pull request #10300 from abcdefg30/bomberjohn
Polish the chronoshiftpower on the map Bomber John
2015-12-27 23:18:31 +02:00
Oliver Brakmann
4052781bf3 Merge pull request #10260 from scshunt/silos-needed
Factor silos needed warning to a new trait.
2015-12-27 21:05:22 +01:00
Sean Hunt
8f4ec87b63 Factor silos needed warning to a new trait. 2015-12-27 14:40:37 -05:00
reaperrr
23dc6f64ac Merge pull request #9605 from Mailaender/nod-poweroffline
Added support for speech variants to CanPowerDown
2015-12-27 20:10:27 +01:00
Oliver Brakmann
14b6034e9d Merge pull request #10216 from pchote/remove-tags
Reimplement Primary and Fake tags using WithDecoration.
2015-12-27 19:43:57 +01:00
Pavel Penev
90aef33b68 Merge pull request #10299 from pchote/remove-minitk2
Replace MiniTK.Audio with OpenAL-CS and update to latest SDL2-CS.
2015-12-27 19:49:06 +02:00
Taryn Hill
5b5a45b0a4 Place constraints on ActorReferences in ParatroopersPower to improve linting 2015-12-27 11:24:16 -06:00
Taryn Hill
5542076a68 Make AirstrikePowerInfo.UnitType require AircraftInfo 2015-12-27 11:24:16 -06:00
Taryn Hill
a7a6f41ef9 Allow ActorReferenceAttribute to list required trait types enforced by --check-yaml 2015-12-27 11:24:13 -06:00
Paul Chote
9063befb71 Update SDL2-CS dependency. 2015-12-27 17:03:32 +00:00
Paul Chote
9f41743465 Replace MiniTK.Audio with OpenAL-CS. 2015-12-27 17:03:32 +00:00
Oliver Brakmann
feba44cd6d Merge pull request #10297 from Trebgarta/bleed
Observer Shroud Options listing polish #10263
2015-12-27 17:31:13 +01:00
Oliver Brakmann
5a27150587 Merge pull request #9977 from RoosterDragon/dispose-lua-values
Ensure LuaValues are disposed
2015-12-27 17:20:39 +01:00
abcdefg30
d342c81abc Polish the chronoshiftpower on the map Bomber John 2015-12-27 17:20:10 +01:00
Taryn Hill
453cb17a0f Merge pull request #10288 from pchote/remove-minitk
Replace MiniTK.Graphics with custom OpenGL shim.
2015-12-27 09:25:31 -06:00
reaperrr
7bd0ce012d Merge pull request #10270 from RoosterDragon/less-samples
Remove some unneeded PerfSamples
2015-12-27 15:52:12 +01:00
reaperrr
d2d302432e Merge pull request #10289 from RoosterDragon/aud-sample-rate
Allow AUD file with sample rates other than 22050 Hz
2015-12-27 15:40:32 +01:00
Paul Chote
397ca0f481 Replace MiniTK.Graphics with custom OpenGL shim. 2015-12-27 14:37:07 +00:00
Doruk Turak
5436319406 Observer Shroud Options listing polish #10263
Pretty self explanatory: Now "All Players" and "Disable Shroud" options come before
2015-12-27 16:32:32 +02:00
Taryn Hill
2974af83c6 Remove unused MiniYaml methods From(Dictionary|List) 2015-12-27 07:56:41 -06:00
Matthias Mailänder
fcdf32015e fix Nod building online/offline notifications using EVA voices 2015-12-27 11:44:50 +01:00
Matthias Mailänder
a8d8764b81 unhardcode and self-document the notification 2015-12-27 11:44:41 +01:00
Matthias Mailänder
89ff2f1ba2 expose palette and sprite sequence to lint testing 2015-12-27 11:38:58 +01:00
RoosterDragon
da84f3d5ef Allow AUD file with sample rates other than 22050 Hz. 2015-12-27 00:05:28 +00:00
Matthias Mailänder
4660b7156d Merge pull request #10249 from pchote/remove-legacy-gl
Replace deprecated OpenGL features with more modern replacements
2015-12-26 22:53:22 +01:00
Paul Chote
74fb9bbfbb Remove legacy SetLineWidth methods. 2015-12-26 13:51:53 +00:00
Paul Chote
be29ec5342 Use explicit shader attributes. 2015-12-26 12:50:33 +00:00
Paul Chote
788def1c31 Remove Quad rendering support. 2015-12-26 12:46:55 +00:00
Paul Chote
d0e9af8f6b Convert VoxelRenderer to TriangleList. 2015-12-26 12:46:55 +00:00
Paul Chote
a754a96b77 Convert SpriteRenderer to TriangleList. 2015-12-26 12:46:54 +00:00
Paul Chote
af344452ea Convert RgbaColorRenderer to TriangleList. 2015-12-26 12:46:54 +00:00
Paul Chote
409a0052ca Remove legacy tag rendering. 2015-12-26 12:38:27 +00:00
Paul Chote
5b017cee58 Remove "Primary" tag. 2015-12-26 12:38:27 +00:00
Paul Chote
ef2f9cbafa Remove "Fake" tag. 2015-12-26 12:38:27 +00:00
Paul Chote
372bbaf7b6 Overhaul WithDecoration trait. 2015-12-26 12:38:26 +00:00
Paul Chote
cec2c584e6 Fix TS EMP overlay. 2015-12-26 12:37:22 +00:00
Paul Chote
7b54fe1645 Fix TS actor defaults. 2015-12-26 12:37:22 +00:00
Paul Chote
3ceacbb7c1 Fix Z-sorting for UISpriteRenderable. 2015-12-26 12:37:22 +00:00
DArcy Rush
67f88e368f Add mute option to the game 2015-12-25 23:33:18 +00:00
Oliver Brakmann
3474da0ecc Merge pull request #10072 from r34ch/monster-tank-madness
Monster tank madness polish
2015-12-25 21:36:43 +01:00
abcdefg30
b3f6085ea0 Adjustments to "Fail mission if impossible to land at beach" 2015-12-25 20:10:21 +00:00
DArcy Rush
c65a15bfb0 Fail mission if impossible to land at beach 2015-12-25 20:08:53 +00:00
DArcy Rush
e452f40ae1 Hide TechCenter tooltip 2015-12-25 20:01:54 +00:00
DArcy Rush
b282ecdf2a Make Dr. Demitri use Soviet voice 2015-12-25 20:01:54 +00:00
Oliver Brakmann
9ea2e0015d Merge pull request #10255 from pchote/campaign-colors-redo
Enable original TD campaign colors.
2015-12-25 19:48:18 +01:00
Matthias Mailänder
4f080a996e also render highest density sprite frame 2015-12-25 19:37:55 +01:00
Matthias Mailänder
276c1984fd document graphic settings interesting for benchmarking 2015-12-25 19:30:18 +01:00
Matthias Mailänder
d4e842e643 add a benchmark mode 2015-12-25 19:30:15 +01:00
Oliver Brakmann
39ffa18000 Merge pull request #10110 from Mailaender/rm-stylecop
Removed StyleCop dependency for unit tests
2015-12-25 19:29:06 +01:00
Matthias Mailänder
e80625880f Merge pull request #10011 from atlimit8/EasierActorSelectionInGame
Better actor selection in game by actor bounds center
2015-12-25 19:17:12 +01:00
Oliver Brakmann
d375a27416 Merge pull request #10161 from jaZzKCS/patch-1
Updated music.yaml files (RA/TD/D2k)
2015-12-25 18:31:48 +01:00
Matthias Mailänder
7335c4a8ce Merge pull request #10069 from penev92/soundLoader
Add plumbing for mod-defined sound loaders
2015-12-25 14:40:43 +01:00
Matthias Mailänder
b289478123 Merge pull request #10189 from reaperrr/less-lazy1
AttackBase and Armament optimizations
2015-12-25 14:04:46 +01:00
Matthias Mailänder
3dee27c855 Merge pull request #10269 from RoosterDragon/shader-path
Load shaders relative to the game directory, rather than the CWD
2015-12-25 13:03:06 +01:00
abcdefg30
668902c526 Merge pull request #10274 from Mailaender/mono-4.2
Updated to Mono 4.2
2015-12-24 16:45:48 +01:00
Matthias Mailänder
01aed5e64c update to mono 4.2 series 2015-12-24 16:27:57 +01:00
Matthias Mailänder
c83e194b4e Merge pull request #10267 from abcdefg30/allies5aDesc
Adjust the description of allies05a
2015-12-24 15:08:04 +01:00
RoosterDragon
3a2139de26 Add PlayerDictionary.
This custom collection allows other classes to implement a Player to value mapping, but also stores the values in an array for faster lookup by the player index in the world. For some code, this improved lookup time is important for performance.
2015-12-23 23:54:04 +00:00
RoosterDragon
5c14044138 Support sending sequences of points when drawing lines.
This allows the graph widgets to avoid having to create temporary arrays just to draw these lines, which reduces GC pressure.
2015-12-23 22:58:53 +00:00
RoosterDragon
611a928a47 Prevent changing world players after being set once. 2015-12-23 21:53:47 +00:00
RoosterDragon
6d02d5ebaa Remove some unneeded PerfSamples. 2015-12-23 20:19:22 +00:00
RoosterDragon
c25fe32c9e Load shaders relative to the game directory, rather than the CWD.
If OpenRA is started with a current working directory that does not match the path to the game, then loading shaders will fail. By using a path relative to the game directory, we can successfully start the game with different working directories.
2015-12-23 19:19:02 +00:00
atlimit8
b07cd683e8 Easier actor selection in game by actor bounds center 2015-12-23 12:09:08 -06:00
RoosterDragon
6ab6d774a7 Ensure LuaValues are disposed.
Adding in these missing calls prevents these instances from having to be finalized.
2015-12-23 17:22:51 +00:00
abcdefg30
57510fc954 Add a "tutorial" message at the beginning of allies05a 2015-12-23 13:54:16 +01:00
abcdefg30
3b6a02a3af Adjust the description of allies05a 2015-12-23 12:21:27 +01:00
jaZzKCS
4c461b08af Update music.yaml
Added a one-liner to make sure the song "Afterlife" (await_r.aud) is loaded in both content data alternatives (Aftermath scores.mix from DL mirror / Base game scores.mix file from Game CD.)

Regarding of which scores.mix file is used (the DL mirror one including the Aftermath expansion tracks or the vanilla one from "Install from CD"-option)
the naming of the file is different. Resulting in missing out this song when using the bigger scores.mix file with the bonus tracks.
2015-12-22 21:39:39 +01:00
Oliver Brakmann
387d0d0e3f Merge pull request #10154 from teees/fix-banshee-deathsound
enable banshee death sound
2015-12-21 22:52:32 +01:00
atlimit8
43b2957331 Merge pull request #10251 from abcdefg30/removeISpriteBody
Remove ISpriteBody
2015-12-21 11:37:54 -06:00
Paul Chote
e11f49a773 Enable original TD campaign colors. 2015-12-21 17:14:49 +00:00
Paul Chote
95629c29a4 Use map rules to build the editor sidebar. 2015-12-21 15:05:44 +00:00
Paul Chote
fef25c7269 Add IndexedPlayerPalette for original campaign colors. 2015-12-21 15:05:28 +00:00
Matthias Mailänder
0fe644f458 Merge pull request #10203 from pchote/widelines2
Rewrite line renderer: Part 2 (remove LineRenderer plus other cleanups)
2015-12-21 07:36:21 +01:00
Oliver Brakmann
71478aa2b8 Merge pull request #9734 from RoosterDragon/auto-target-perf
Improve AutoTarget performance
2015-12-20 19:53:17 +01:00
abcdefg30
72ac5240b8 Remove ISpriteBody 2015-12-20 18:44:55 +01:00
Pavel Penev
42c98ec154 Don't crash when parsing corrupt sound files
Log the exception and move to the next parser.
2015-12-20 19:17:54 +02:00
Pavel Penev
8542ed33ce Add ModData.GetLoaders()
Extract sound loaders and sprite loaders creation into a generic method to avoid code duplication.
2015-12-20 19:17:53 +02:00
Pavel Penev
61c1cab963 Add the SoundFormats field to mods 2015-12-20 19:17:51 +02:00
Pavel Penev
a31b0becf1 Make AudLoader implement ISoundLoader 2015-12-20 19:17:50 +02:00
Pavel Penev
5063e56786 Make WavLoader implement ISoundLoader 2015-12-20 19:17:49 +02:00
Pavel Penev
8d56de80ca Add ISoundLoader
The interface is to be implemented by all sound loaders, just like ISpriteLoader. All loading goes through the interface. This would allow mods to create their own sound loaders outside the engine.
Also add a SoundFormats property to mod.yaml, where mods can define what sound loaders they will need.
This requires Game.Sound to be initialized after the ModData is loaded.
2015-12-20 19:17:48 +02:00
abcdefg30
e5cb7e03e1 Merge pull request #10239 from penev92/annotationChange
Use '@' in mod.yaml to indicate extra info
2015-12-20 17:47:36 +01:00
abcdefg30
49cf33dda3 Merge pull request #10242 from obrakmann/fix10228_frozenactor-startrevealed
Fix the StartsRevealed option of FrozenUnderFog being ignored
2015-12-20 17:45:21 +01:00
Pavel Penev
7c0b30888d Merge pull request #10238 from abcdefg30/d2kFoundationDamage
Fix DamagedWithoutFoundation causing more damage than it should
2015-12-20 18:10:18 +02:00
abcdefg30
fa260ddee1 Document fields in DamagedWithoutFoundationInfo 2015-12-20 16:36:13 +01:00
abcdefg30
c0206b18b0 Fix DamagedWithoutFoundation causing more damage than it should
Tick caused extra damage in addition to the damage in AddedToWorld,
which lead the actor to have less health than damageThreshold.
2015-12-20 16:36:11 +01:00
Pavel Penev
4e6df6372d Merge pull request #10247 from obrakmann/fix10245_soviet06_build_prereqs
Fix gap gens being buildable in Soviet 06x
2015-12-20 17:24:48 +02:00
Oliver Brakmann
79bd2d400b Fix gap gens being buildable in Soviet 06x 2015-12-20 14:43:34 +01:00
Paul Chote
855b473084 Merge pull request #10229 from abcdefg30/initialDropzone
Fix crates not spawning immediately on the dropzone maps
2015-12-19 13:36:28 +00:00
Paul Chote
e021617c85 Remove duplication from FillRect. 2015-12-19 12:28:59 +00:00
Paul Chote
4ffee12065 Remove legacy line rendering code. 2015-12-19 12:28:59 +00:00
Paul Chote
8e9318e64d Use RgbaColorRenderer in UISpriteRenderable. 2015-12-19 12:28:59 +00:00
Paul Chote
1b755d9833 Use RgbaColorRenderer in RadarWidget. 2015-12-19 12:28:58 +00:00
Paul Chote
ee5ccc4b8a Use RgbaColorRenderer in LineGraphWidget. 2015-12-19 12:28:58 +00:00
Paul Chote
17c98e8af5 Use RgbaColorRenderer in PerfGraphWidget. 2015-12-19 12:28:58 +00:00
Paul Chote
8fc323602c Use RgbaColorRenderer in WeatherOverlay. 2015-12-19 12:28:56 +00:00
Paul Chote
f6606afa8b Use RgbaColorRenderer in CombatDebugOverlay. 2015-12-19 12:28:10 +00:00
Paul Chote
b0806fca92 Use RgbaColorRenderer in SelectionBoxRenderable. 2015-12-19 12:28:10 +00:00
Paul Chote
310222eb0e Use RgbaColorRenderer for rendering contrails. 2015-12-19 12:28:10 +00:00
Paul Chote
c618c2d8ab Use RgbaColorRenderer for selection box rendering. 2015-12-19 12:28:10 +00:00
Paul Chote
8719b4ed3c Use RgbaColorRenderer in SpriteRenderable / TextRenderable. 2015-12-19 12:28:10 +00:00
Paul Chote
b35762f537 Use RgbaColorRenderer in TerrainGeometryOverlay. 2015-12-19 12:28:09 +00:00
Paul Chote
cdf4aaf2b8 Use RgbaColorRenderer in SelectionBarsRenderable. 2015-12-19 12:28:09 +00:00
Paul Chote
27f615261a Use RgbaColorRenderer in VoxelRenderable. 2015-12-19 12:28:09 +00:00
Paul Chote
03a48a7a41 Use RgbaColorRenderer in TargetLineRenderable. 2015-12-19 12:28:09 +00:00
Paul Chote
bb0a7bdaf5 Add two-colour line rendering to RgbaColorRenderer. 2015-12-19 12:28:09 +00:00
Paul Chote
c5dbc5fab7 Add composite line drawing methods to RgbaColorRenderer. 2015-12-19 12:28:09 +00:00
Paul Chote
50dfa6df8f Fix Contrail field description. 2015-12-19 12:28:08 +00:00
Paul Chote
55433bd27c Fix voxel shadow geometry position. 2015-12-19 12:28:08 +00:00
Paul Chote
43226d7c55 Move DrawRollover to WICW. 2015-12-19 12:28:08 +00:00
Paul Chote
0f1fcdaca4 Move DrawTargetMarker to TargetLineRenderable. 2015-12-19 12:28:08 +00:00
Oliver Brakmann
879ccaf4f8 Fix the StartsRevealed option of FrozenUnderFog being ignored 2015-12-18 20:32:10 +01:00
Pavel Penev
55bb7eb1a0 Use '@' in mod.yaml to indicate extra info
Applies to MapFolders (to indicate System and User directories) and Packages (to indicate package annotation).
2015-12-16 23:39:22 +02:00
teees
1869880aab Enable Hovers: when cruising, merged common aircraft rules into defaults 2015-12-16 13:44:13 +01:00
teees
00c15eaf3a Add cruising upgrade to Aircraft trait 2015-12-16 13:18:18 +01:00
Oliver Brakmann
c7a9d024b0 Merge pull request #10234 from abcdefg30/damagedFix
Fix the idle animation of the host in WithRepairAnimation.cs
2015-12-15 22:51:18 +01:00
Oliver Brakmann
7a1d6e9c26 Merge pull request #10233 from teees/remove-aircraft-defaults
Remove aircraft defaults
2015-12-15 22:43:25 +01:00
abcdefg30
6e5181fe4d Fix the idle animation of the host in WithRepairAnimation.cs using the damage state of the repaired actor. 2015-12-15 20:57:55 +01:00
teees
cdf82cab14 Merged common ra aircraft definitions 2015-12-15 18:45:14 +01:00
teees
c1c386a994 Removed default definitions for repair and rearmbuildings in Aircraft.cs 2015-12-15 18:44:05 +01:00
abcdefg30
1cdd121753 Fix crates not spawning immediately on the dropzone maps 2015-12-15 13:25:48 +01:00
Oliver Brakmann
20725c9b2c Merge pull request #10153 from abcdefg30/repairableNear
Add a 'Voice' field to RepairableNearInfo
2015-12-14 21:59:56 +01:00
Oliver Brakmann
11cbb43212 Merge pull request #9918 from penev92/fixTransforms
Fix an oversight regarding building unlocking
2015-12-14 21:00:41 +01:00
Oliver Brakmann
02fa63c1b4 Merge pull request #9853 from penev92/unglobalFileSystem
Unglobal file system
2015-12-14 20:52:30 +01:00
reaperrr
83dc3a36d2 Add d2k turret make sequences
Currently unused, as WithMakeAnimation and WithWallSpriteBody don't work well together at this point.
2015-12-14 15:33:05 +01:00
reaperrr
e5b3291d41 Enable crumble overlay for D2k turrets 2015-12-14 15:28:31 +01:00
reaperrr
0d60ee5fe0 Disable WithSpriteTurret until build/transform complete 2015-12-14 15:27:52 +01:00
teees
19036d1927 Disable WithVoxelTurret until build/transform complete 2015-12-14 12:10:40 +01:00
reaperrr
2d55bbdedf Cache trait look-ups and range modifiers directly in Armament
Avoid the performance impact of accessing Lazy.Value by caching them
when the actor is created and accessing the references directly when needed.
2015-12-14 04:34:58 +01:00
reaperrr
0e5ea959aa Perform faster checks in AB.CanAttack much earlier
Move self.IsDisabled right after IsInWorld and IsTraitDisabled checks.
This should skip/avoid a lot of the following checks when actors are disabled by low power, EMP or similar, potentially saving some performance when there are many disabled actors with attack trait.

Move IsValidFor before HasAnyValidWeapons because the latter is more
expensive.
2015-12-14 04:34:58 +01:00
reaperrr
acc9b37a01 Remove ITraitInfo from AttackBase
That is already included in UpgradableTraitInfo.
2015-12-14 04:34:58 +01:00
atlimit8
bee590a057 Merge pull request #10208 from RoosterDragon/perf-comments
Added some performance comments
2015-12-13 20:46:07 -06:00
Pavel Penev
22678221d0 Fix an oversight regarding building unlocking 2015-12-14 04:18:57 +02:00
Pavel Penev
d08a400565 Add a context argument to package files contructors 2015-12-14 03:42:25 +02:00
Pavel Penev
4ce1444c6b Fix shader loading
Also remove now redundant mounting of the game directory
2015-12-14 03:42:24 +02:00
Pavel Penev
1b88d24cfa Unstatic GlobalFileSystem and rename it to FileSystem
Add a ModFiles field on ModData and move all access to the file system to go through that.
2015-12-14 03:42:22 +02:00
Pavel Penev
5684bcec1c Move IFolder out of GlobalFileSystem.cs 2015-12-14 03:42:18 +02:00
Matthias Mailänder
02c5c1bbfb Merge pull request #10148 from pchote/widelines
Rewrite line renderer: Part 1 (improved lasers plus other cleanups)
2015-12-13 20:55:54 +01:00
Matthias Mailänder
0bde5bc294 Merge pull request #10211 from abcdefg30/damagedAfld
Fix the idle animation of the hostBuilding in Rearm.cs
2015-12-13 20:43:29 +01:00
abcdefg30
9d76ff2770 Merge pull request #10214 from RoosterDragon/lays-terrain-bounds
Ensure LaysTerrain doesn't access cells outside the map
2015-12-13 20:07:16 +01:00
Oliver Brakmann
1f440baaa0 Merge pull request #10120 from RoosterDragon/gps-dot-perf
Fix broken GPS and frozen actor behaviour
2015-12-13 18:28:12 +01:00
RoosterDragon
b0619a3e25 Added comments in performance sensitive code. 2015-12-13 16:24:54 +00:00
RoosterDragon
0f70e23b70 Ensure LaysTerrain doesn't access cells outside the map. 2015-12-13 16:21:08 +00:00
abcdefg30
62addb9c60 Merge pull request #10182 from obrakmann/fix9851-attackmove-click-madness
Fix AttackMove not working properly under certain conditions
2015-12-13 16:06:51 +01:00
abcdefg30
cf9ea91606 Fix the idle animation of the hostBuilding in Rearm.cs
using the damage state of the reloaded actor
2015-12-13 16:00:18 +01:00
Oliver Brakmann
59d22a2ff0 Fix AttackMove not working properly under certain conditions
This fixes the issue where AttackMove (and possibly other order modes) would not work properly when people were clicking their mouse buttons at the same time. A move order (the default order mode) would be issued instead.
2015-12-13 14:16:06 +01:00
abcdefg30
fe334906f6 Make 'CloseEnough' on 'RepairableNear' use WDist 2015-12-13 01:10:38 +01:00
abcdefg30
301c2f0ca0 Add a 'Voice' field to RepairableNearInfo 2015-12-13 01:08:34 +01:00
Pavel Penev
2017a6d989 Merge pull request #10206 from abcdefg30/survival02
Let spawned soviet vehicles attack move on Survival02
2015-12-12 23:44:48 +02:00
RoosterDragon
21292061f9 Added "PERF: Avoid LINQ." comments. 2015-12-12 21:05:13 +00:00
RoosterDragon
d0c23ef2dd Prevent redundant enumerations in Attack.InnerTick.
The armaments variable is enumerated several times, but the results won't change. If we cache it straight away we can improve performance.
2015-12-12 20:55:23 +00:00
RoosterDragon
7fbbaa2221 Optimize AutoTarget.ChooseTarget.
Avoid using LINQ for filtering, grouping and dictionary building. Instead, we do these ourselves to reduce overhead.

Actors are checked for AutoTargetIgnoreInfo (rather than the trait) since info checks are marginally faster. This check can now be done immediately to allow us to skip such actors right away.

The ClosestTo calculation is now only run on the group on actors for the selected armament, rather than all potential armaments.
2015-12-12 20:55:22 +00:00
RoosterDragon
487727c9d0 Optimize AutoTarget.ScanForTarget.
The currentTarget parameter is null at the only call site. Inlining it allows us to make some simplifications to the logic.
2015-12-12 20:55:20 +00:00
RoosterDragon
16386873af Optimize AttackBase.ChooseArmamentsForTarget.
Remove the unused onlyEnabled parameter to avoid it needlessly being captured in the closure, and simplify the logic.

Evaluate RequiresForceFire and Weapon.IsValidAgainst last in their respective logic chains as these are the most expensive operations and benefit from short-circuiting being able to skip their evaluation.
2015-12-12 20:55:19 +00:00
RoosterDragon
0fab3ec1b2 Remove LINQ in some performance critical AutoTarget paths. 2015-12-12 20:55:18 +00:00
RoosterDragon
dcf375a412 Store Targetables in Actor.
This can be used to avoid several lookups for these traits, as well as allow Actor to provide specialised methods to deal with target types efficiently. This also reduces some code duplication.
2015-12-12 20:55:17 +00:00
RoosterDragon
aaa82339d1 Small cleanup in TraitDictionary. 2015-12-12 20:46:10 +00:00
RoosterDragon
c0286bb147 Remove ActorMap.ActorsInWorld.
Prefer the more direct and efficient query on World.Actors instead.
2015-12-12 20:42:44 +00:00
RoosterDragon
912a0630e2 Tweak some Render methods for efficiency. 2015-12-12 20:42:43 +00:00
RoosterDragon
62a932272c Fix GPS refreshing for incorrect player.
GpsWatcher.RefreshGps was wrongly using the render player in simulation code.
2015-12-12 19:57:08 +00:00
RoosterDragon
f96d02a794 Fix GPS dot relying on frozen actor render state.
The GPS dot was not displayed if a frozen actor for it was already visible. However, this was mistakenly affecting visibility checks in the world. Now, we only avoid rendering it when the frozen actor is present, but the indicator is still regarded as visible for visilbity checks in the world.
2015-12-12 19:57:07 +00:00
RoosterDragon
cbc090dd38 Ensure frozen actors are rendered on the first tick they become visible.
The previous lazy rendering means the snapshot of the render state might be more up to date then when the frozen actor actually did become visible. Now, we take this snapshot as soon as needed. We still retain the performance of only doing this rendering when needed by avoiding extra rendering until the visibility cycles again.
2015-12-12 19:54:25 +00:00
RoosterDragon
87d35a75da Merge dictionaries in GpsDot.
This speeds up GpsDot.Tick as it requires only one dictionary lookup per player rather than two.
2015-12-12 19:54:23 +00:00
abcdefg30
93757d3324 Let spawned soviet vehicles attack move on Survival02 2015-12-12 18:49:28 +01:00
Paul Chote
8230be6a14 Merge pull request #10196 from RoosterDragon/hardware-cursoring
More graceful hardware cursor failing
2015-12-12 12:55:53 +00:00
Oliver Brakmann
01d3bbb12c Merge pull request #10067 from Mailaender/ingame-client-tooltip
Added an in-game client tooltip with IP and country
2015-12-11 21:09:05 +01:00
teees
3b65232365 Optionally discard resources when silo capacity has been reached 2015-12-11 17:55:40 +01:00
teees
9dba85def5 Use heightmap to get correct groundlevel, fix additional behavior 2015-12-11 17:10:38 +01:00
Matthias Mailänder
79dc26c978 add an in-game client tooltip without latency indicator 2015-12-11 07:29:54 +01:00
Matthias Mailänder
1f07962510 remove unused Session.Slot 2015-12-11 07:29:07 +01:00
Pavel Penev
a673aee547 Merge pull request #10199 from RoosterDragon/vector-typos
Fix some typos in vector strings
2015-12-11 01:31:08 +02:00
Paul Chote
92d0261005 Overhaul LazerZap and AreaBeam rendering. 2015-12-10 23:25:59 +00:00
Paul Chote
78556ec60c Remove obsolete WorldRenderer.DrawRangeCircle. 2015-12-10 23:25:58 +00:00
Paul Chote
170ef577d7 Reimplement RenderDetectionCircle trails. 2015-12-10 23:22:47 +00:00
Paul Chote
e2d43da1d8 Use RgbaColorRenderer for range circle rendering. 2015-12-10 23:22:47 +00:00
Paul Chote
43eb4dadc9 Remove obsolete QuadRenderer. 2015-12-10 23:22:47 +00:00
Paul Chote
68302c9617 Use RgbaColorRenderer for pathfinder debug rendering. 2015-12-10 23:22:47 +00:00
Paul Chote
8158d25ee6 Use RgbaColorRenderer for weather rendering. 2015-12-10 23:22:46 +00:00
Paul Chote
66744ee92a Use RgbaColorRenderer for UI rendering. 2015-12-10 23:22:46 +00:00
Paul Chote
2d89f15374 Use RgbaColorRenderer for warhead debug rendering. 2015-12-10 23:22:45 +00:00
Paul Chote
02dedf9acf Introduce RgbaColorRenderer class. 2015-12-10 23:22:07 +00:00
RoosterDragon
654ca6ed03 Fix some typos in vector strings. 2015-12-10 21:53:11 +00:00
RoosterDragon
4ed5a24bbe Merge pull request #10118 from pchote/rework-order-targets
Rework order targeting crazyness.
2015-12-10 20:09:57 +00:00
RoosterDragon
e1f4ad7176 Merge pull request #9838 from Phrohdoh/warhead-colors
Per-warhead WarheadDebugOverlay colors
2015-12-10 19:35:00 +00:00
Taryn Hill
20927e9aae Change healing weapons to have a Green DebugOverlayColor 2015-12-09 20:57:57 -06:00
Taryn Hill
9b9d3c8af5 Add DebugOverlayColor to Warhead
This allows us to render WarheadDebugOverlay circles in a
color-per-warhead fashion.
2015-12-09 20:48:10 -06:00
RoosterDragon
679cff004e When hardware cursors fail, retry next session. 2015-12-08 22:53:21 +00:00
RoosterDragon
765bc4fa72 When the SDL hardware cursor fails, ensure more of the error message is logged.
Capture the useful details from the inner exception into the message, as this will be logged.
2015-12-08 22:51:55 +00:00
RoosterDragon
47224bca40 Merge pull request #10078 from penev92/actorNameOverlay
Add an actor name overlay debug option
2015-12-08 21:16:26 +00:00
RoosterDragon
0c1df850a5 Merge pull request #10185 from obrakmann/fix-lobby-chat-unread-messages-button-blinking
Fix showing unread messages count on active lobby chat button
2015-12-08 20:48:08 +00:00
atlimit8
3d2aa751a3 TraitInfoInterface base for interfaces implemented by trait infos 2015-12-07 18:22:43 -06:00
abcdefg30
0976972f7c Merge pull request #10141 from reaperrr/fix-anim-cancel
Fix actors not going back to idle animation after custom animation
2015-12-07 15:13:00 +01:00
abcdefg30
22aa548d1b Merge pull request #10126 from RoosterDragon/fuf-perf
Speed up FrozenUnderFog.Tick
2015-12-07 15:03:59 +01:00
Pavel Penev
6f8b3c45b4 Add RenderDebugState trait 2015-12-07 01:41:19 +02:00
Pavel Penev
c51bad6050 Expose HackyAI's Squads and IsEnabled fields 2015-12-07 01:41:16 +02:00
Pavel Penev
6217ec0360 Add a ShowActorTags property to DeveloperMode 2015-12-07 01:41:15 +02:00
Pavel Penev
4bbb406d4d Add checkboxes for actor tag overlay 2015-12-07 01:41:14 +02:00
Pavel Penev
101d8ab363 Give TS its own copy of ingame-info.yaml
This is a 1:1 copy of RA's ingame-info.yaml file.
2015-12-07 01:41:13 +02:00
Oliver Brakmann
40c7ada8e7 Merge pull request #9927 from atlimit8/EasierActorSelectionInMapEditor
Easier actor selection in map editor by actor bounds center
2015-12-06 21:30:38 +01:00
Oliver Brakmann
c02881e51e Merge pull request #9735 from RoosterDragon/animation-refactor
Refactor animation classes
2015-12-06 18:53:45 +01:00
Oliver Brakmann
8c8e29e2fa Merge pull request #9802 from RoosterDragon/move-min-range
Fix MoveWithinRange not moving far enough for min range checks
2015-12-06 17:11:22 +01:00
Matthias Mailänder
fa5fd5c92f Merge pull request #9710 from obrakmann/yaml-removals
Fix yaml removals
2015-12-06 17:04:47 +01:00
Oliver Brakmann
16dd2a3323 Fix showing unread messages count on active lobby chat button
The lobby chat button text would change to include the unread messages count for a split second, even when the lobby chat was the current panel, leading to the button text sort of 'blinking' in an ugly way.
2015-12-06 14:27:40 +01:00
abcdefg30
310f0cbea5 Merge pull request #10174 from atlimit8/WDistToString
Make WDist.ToString() return <cells>c<units>
2015-12-06 13:51:24 +01:00
abcdefg30
c6cb0e2c78 Merge pull request #10183 from reaperrr/fix-ts-obel
Fix TS Obelisk charge overlay Z offset
2015-12-06 13:42:00 +01:00
reaperrr
04b5b3df5c Fix TS Obelisk charge overlay Z offset
To make sure it is played on top of the 'body'.
2015-12-06 02:04:40 +01:00
Matthias Mailänder
995d1dd4af Merge pull request #9650 from r34ch/health-bars-on-damage
Display status bars dropdown
2015-12-05 19:45:20 +01:00
Matthias Mailänder
a9d2ec5750 Merge pull request #9619 from abcdefg30/repulsionbug
Fix aircraft repulsing other aircraft when not being repulsable themselves
2015-12-05 19:20:40 +01:00
Matthias Mailänder
142d3ef6ab Merge pull request #9438 from atlimit8/UpgradableMobile
Upgradable Mobile and replace IDisableMove
2015-12-05 18:24:40 +01:00
Oliver Brakmann
d5dc49db85 Merge pull request #10156 from abcdefg30/deathSoundsAny
Fix DeathSounds not working without DeathTypes defined
2015-12-05 18:16:50 +01:00
Matthias Mailänder
0c44bac636 Merge pull request #9357 from UberWaffe/LineImpactProjectile
Added a LineImpactProjectile (Attempt 2)
2015-12-05 18:09:12 +01:00
RoosterDragon
082ea6ba73 Refactor animation classes.
Specify pause function in constructors of Animation if required, and remove the unused pause function from AnimationWithOffset.

Cleanup Animation.cs and reduce code duplication.
2015-12-05 16:58:26 +00:00
Oliver Brakmann
af4667fc68 Merge pull request #10178 from abcdefg30/proxCaptor
Remove junk ProximityCaptor values
2015-12-05 17:20:13 +01:00
abcdefg30
6df67cf451 Merge pull request #9595 from ChaoticMind/middle_click
Middle click to cancel directly (skips onhold) & ctrl+cancel to cancel entire queue
2015-12-05 16:06:09 +01:00
Kevin Azzam
7b22023d57 Implement middle click to cancel (skips onhold) and ctrl+cancel to cancel entire queue 2015-12-05 15:50:41 +01:00
atlimit8
e9b0691f70 Improve rule upgrade logic for immobilization 2015-12-04 19:30:39 -06:00
atlimit8
c827dbe183 Replace IDisableMove with upgradability 2015-12-04 19:26:49 -06:00
atlimit8
0fc04b7a4a Make Mobile upgradable 2015-12-04 19:22:23 -06:00
atlimit8
019951795d Upgrades for Carryable while waiting or being carried 2015-12-04 19:19:54 -06:00
atlimit8
f5460f9f56 Upgrade(s) while loading cargo 2015-12-04 19:17:16 -06:00
abcdefg30
466279e23b Remove junk ProximityCaptor values 2015-12-05 01:56:32 +01:00
abcdefg30
e5bafe835f Merge pull request #9541 from reaperrr/rename-rendertraits-xy
Rename WithTurret, WithBarrel and WithReloadingTurret to include 'Sprite' in trait name
2015-12-05 00:24:37 +01:00
UberWaffe
35c62cabf5 Changed Sonic Tank projectile to LineImpactProjectile (from LaserZap). 2015-12-05 00:23:57 +02:00
UberWaffe
8b9df5f32c Changed TS SonicZap weapon to LineImpactProjectile (from LaserZap).
Changed TS Ghost Railgun weapon to LineImpactProjectile (from LaserZap).
Changed TS Mammoth Mk2 weapon to LineImpactProjectile (from LaserZap).
2015-12-05 00:23:56 +02:00
UberWaffe
f7f0dde4bb Added LineImpactProjectile. 2015-12-05 00:23:55 +02:00
abcdefg30
642e213049 Fix DeathSounds not working without DeathTypes defined 2015-12-04 22:06:16 +01:00
atlimit8
d196d2d40f make WDist.ToString() return <cells>c<units> 2015-12-04 13:03:57 -06:00
Paul Chote
a34b0be873 Add AnyBlockingActorsBetween helper. 2015-12-04 17:44:40 +02:00
Oliver Brakmann
b45ae48c59 Merge pull request #10170 from abcdefg30/crashActorsNear
Fix a crash when producing an actor without OccupiesSpace...
2015-12-03 21:57:15 +01:00
Oliver Brakmann
44b940333a Merge pull request #9988 from pchote/isometric-boundingregion
Fix CellRegion.BoundingRegion behaviour.
2015-12-03 21:36:58 +01:00
abcdefg30
6f8d580567 Fix a crash when producing an actor without OccupiesSpace in combination with UpgradeActorsNear 2015-12-03 16:25:46 +01:00
Pavel Penev
a4b755dd87 Merge pull request #9791 from RichSuther/upstream/fix-keyboard-filter
Added Keyboard input filter to only register first key press.
2015-12-02 21:56:05 +02:00
Oliver Brakmann
fd2bd7c9d3 Merge pull request #9639 from abcdefg30/specchat
Add team chat for spectators
2015-12-01 22:32:57 +01:00
Oliver Brakmann
5174da6d93 Merge pull request #10048 from r34ch/scientist-on-sell
Add CHAN to EmitInfantryOnSell on certain structures.
2015-12-01 21:34:31 +01:00
Oliver Brakmann
1a11eec43a Merge pull request #10099 from abcdefg30/newExplosions
Add more building explosions to d2k and cnc
2015-12-01 21:19:00 +01:00
abcdefg30
07bfd5f59e Merge pull request #9786 from RoosterDragon/reserve-fixes
Reserve fixes
2015-12-01 21:13:41 +01:00
Matthias Mailänder
035dc3fc5c Merge pull request #9943 from abcdefg30/moreexplosions
Add more variations to building explosions in ra
2015-12-01 20:05:05 +01:00
abcdefg30
837c553e88 Merge pull request #10068 from Mailaender/catch-natdevice-externalip
Fixed crashes when NatDevice.GetExternalIP() fails
2015-12-01 17:20:13 +01:00
Pavel Penev
e1dc53a0d2 Merge pull request #10093 from teees/harvesterdocksequence
Made the HarvesterDockSequence class abstract
2015-12-01 13:53:21 +02:00
Paul Chote
03693a06eb Add CurrentSource parameter to ProjectileArgs. 2015-12-01 07:47:39 +02:00
teees
2211808ef4 enable banshee death sound 2015-11-30 18:56:40 +01:00
abcdefg30
354f44a17b Merge pull request #10151 from teees/fix-falltoearth
Fixed FallToEarth groundlevel check
2015-11-30 16:57:22 +01:00
teees
c9e5dba38b Fixed FallToEarth groundlevel check 2015-11-30 13:02:16 +01:00
DArcy Rush
8eb34f3cfa Replace 'Always show Healthbars' checkbox with dropdown
The player can now cycle between;
-Standard: Health and Status bars display only on mouse hover.
-Show On Damage: Health shows on damaged actors, Status always shows.
-Always Show: Health and Status bars are always displayed.
2015-11-29 21:52:31 +00:00
Matthias Mailänder
70de26557b Merge pull request #10145 from obrakmann/fix10127_creeps-enemies
Set enemies of the 'Creeps' player when adding a new player in the editor
2015-11-29 19:47:23 +01:00
Pavel Penev
f9efe94f62 Merge pull request #10134 from abcdefg30/upgradeUpgrades
Try to polish the upgrade rules
2015-11-29 20:45:29 +02:00
abcdefg30
a10ea0350e Misc (style) improvements in the upgrade rule code 2015-11-29 19:39:43 +01:00
abcdefg30
5c6c44ba7b Try to avoid adding duplicate values through upgrade rules 2015-11-29 19:39:42 +01:00
abcdefg30
1695627ffc Let upgrade rules also account for negated traits
(this commit affects only "-SpawnViceroid:", "-LeavesHusk:", "-Plane:" and "-Helicopter:")
2015-11-29 19:39:41 +01:00
Oliver Brakmann
e53a167046 Set enemies of 'Creeps' player when adding a new player in the editor 2015-11-29 15:21:20 +01:00
reaperrr
e9ed50a831 Fix actors not going back to idle animation after custom animation 2015-11-28 22:45:05 +01:00
reaperrr
35c4aca983 Rename WithTurret, WithBarrel and WithReloadingTurret
Make them use RenderUtils.ZOffsetFromCenter.
2015-11-28 20:57:09 +01:00
reaperrr
72ec431766 Add RenderUtils
With ZOffsetFromCenter as first feature so render traits don't have to use it from WithTurret(Overlay)
2015-11-28 20:47:17 +01:00
RoosterDragon
9e43daeec7 Add tests for trait inheritance and removals in yaml. 2015-11-28 17:20:32 +01:00
RoosterDragon
0caffa8196 Remove some global state dependence in ActorInfo.
Instead on relying on the global Game.ModData.ObjectCreator, this is passed in via a parameter.
2015-11-28 17:20:32 +01:00
Paul Chote
c7249e6fa6 Move yaml removals to the end of the merge. 2015-11-28 17:20:32 +01:00
Paul Chote
a074bb1d4b Rename MiniYaml MergeLiberal -> MergePartial, MergeStrict -> Merge. 2015-11-28 17:20:21 +01:00
abcdefg30
b8715b0377 Let the utility fix cosmetics in the chrome yamls 2015-11-28 16:12:17 +01:00
abcdefg30
18b9022915 Fix potential crashes in the upgrade rules 2015-11-28 16:12:16 +01:00
abcdefg30
abed25d293 Merge pull request #9501 from atlimit8/DeployedInit
Add DeployStateInit for Pre-deployment and Clean Up after #9124
2015-11-28 15:58:46 +01:00
Oliver Brakmann
f89d40ee10 Merge pull request #10131 from pchote/add-join-logging
Add a server log line for player joins.
2015-11-28 15:44:59 +01:00
Matthias Mailänder
19e000a8ec Merge pull request #10021 from teees/weed
added nawast
2015-11-28 11:54:01 +01:00
Paul Chote
cfb2933a6b Merge pull request #10125 from Mailaender/eluant-20151127
Updated to current version from Eluant fork
2015-11-28 10:44:13 +00:00
Paul Chote
4c0ffe98f1 Merge pull request #10121 from RoosterDragon/spelling
Fix some spellings
2015-11-28 10:42:58 +00:00
Paul Chote
92e6efd45c Add a server log line for player joins. 2015-11-28 10:38:47 +00:00
RoosterDragon
bfe1804bf6 Fix some spellings. 2015-11-27 16:19:59 +00:00
RoosterDragon
91ea3532b4 Change a dictionary to an array for faster player lookup in FrozenUnderFog.
Deferencing an array element to get the state is cheaper than a dictionary lookup. We can do this since the players collection does not change during gameplay.
2015-11-27 15:46:32 +00:00
RoosterDragon
ab6ef9be40 Cache traits directly in FrozenUnderFog.
Avoid the performance impact of accessing Lazy.Value by caching the traits on the first tick and accessing the references directly when needed.
2015-11-27 15:45:50 +00:00
RoosterDragon
23a38a08f7 Refactor player setup.
Tweak how players in a world are created. Change the collection to be an array to more strongly imply it will not change during a game.
2015-11-27 15:15:43 +00:00
Matthias Mailänder
5dcd48a54e update Eluant 2015-11-27 14:01:22 +01:00
Matthias Mailänder
5c083fa6de Merge pull request #10092 from pchote/saboteur-suicide
Implement suicide bomb for D2K Saboteur
2015-11-27 13:41:23 +01:00
Paul Chote
373bfefc6c Only support move orders against terrain targets. 2015-11-26 18:38:10 +00:00
Paul Chote
756bec69b3 Fall back to target cell if there are no valid orders against the target actor. 2015-11-26 18:37:40 +00:00
Paul Chote
fb99a1f3c2 Remove ActorMap query for each actor. 2015-11-26 18:30:43 +00:00
Paul Chote
7b31f18046 Reduce duplication in UnitOrderGenerator. 2015-11-26 18:25:39 +00:00
atlimit8
e417ecb93f Add map editor only tooltips 2015-11-25 17:28:29 -06:00
Paul Chote
1a5de4707f Implement suicide saboteur. 2015-11-25 21:16:16 +00:00
Paul Chote
7c69461ff2 Fix C4Demolition trait doc punctuation. 2015-11-25 21:16:15 +00:00
Paul Chote
6304d72f44 Add enter behaviour customisation to C4Demolition. 2015-11-25 21:16:15 +00:00
Pavel Penev
3e8df55bcb Merge pull request #10082 from OmegaBolt/d2k-deviator
D2k Deviator balance
2015-11-25 22:51:55 +02:00
Pavel Penev
da1485dab7 Merge pull request #10106 from Mailaender/nsis-section-polish
Polished the Windows installer
2015-11-25 22:33:39 +02:00
Pavel Penev
44457c854a Merge pull request #10085 from reaperrr/d2k-missile-fixes
Give Missile Tank weapon a range limit
2015-11-25 22:28:43 +02:00
Pavel Penev
4cb2fc8387 Merge pull request #10095 from r34ch/kennel-exit
Add second exit to kennel
2015-11-25 22:16:27 +02:00
Pavel Penev
c374bff9fb Merge pull request #10103 from pchote/fix-png-command
Fix the ConvertSpriteToPngCommand.
2015-11-25 22:07:52 +02:00
Pavel Penev
df71b42d13 Merge pull request #10104 from pchote/fix-d2k-tags
Fix the D2K building selection decorations
2015-11-25 21:58:45 +02:00
Pavel Penev
893d3afc4d Merge pull request #10105 from pchote/fix-outpost-position
Fix D2K outpost artwork offsets and selection box.
2015-11-25 21:57:04 +02:00
abcdefg30
944d8f8b11 Add more building explosions to cnc 2015-11-25 17:06:48 +01:00
Matthias Mailänder
c4bf5b85d4 remove unnecessary dependency on StyleCop 2015-11-25 14:32:12 +01:00
Matthias Mailänder
ba5aec2d66 simplify the hierarchy section hierarchy 2015-11-25 10:03:06 +01:00
Matthias Mailänder
d40cb941d3 make the "Game" component read-only 2015-11-25 10:02:14 +01:00
Paul Chote
555c02cd92 Fix D2K outpost artwork offsets and selection box. 2015-11-24 23:37:41 +00:00
Paul Chote
dffd2c87cd Add upgraded tag to D2K production structures. 2015-11-24 23:21:19 +00:00
Paul Chote
ee1fb0f1e0 Add SelectionDecoration flag to WithDecoration. 2015-11-24 23:03:06 +00:00
Paul Chote
d626c7c568 Add new primary building tag artwork. 2015-11-24 23:03:06 +00:00
Paul Chote
0c2d9c5ed4 Fix the ConvertSpriteToPngCommand. 2015-11-24 23:02:45 +00:00
abcdefg30
7dad0517e4 Small reordering and cleanup in mods/cnc/sequences/misc.yaml 2015-11-24 21:49:43 +01:00
abcdefg30
b7ddf1b8f5 Add more building explosions to d2k 2015-11-24 21:26:05 +01:00
DArcy Rush
e098743b09 Add second exit to kennel 2015-11-24 08:21:32 +00:00
teees
0c17188f24 Made the HarvesterDockSequence class abstract 2015-11-23 23:49:00 +01:00
Matthias Mailänder
b75bfec2f8 avoid working with NatDevice directly as it is dangerous 2015-11-23 21:40:48 +01:00
Matthias Mailänder
86a2a54640 catch MappingExceptions in NatDevice.GetExternalIP 2015-11-23 21:39:42 +01:00
Matthias Mailänder
262f547271 Merge pull request #9994 from huwpascoe/rally
TargetLine for Rally Points
2015-11-23 21:36:20 +01:00
Huw Pascoe
e92ccdf808 TargetLine for Rally Points
Also enabled allied players to see waypoints.
2015-11-23 19:30:24 +00:00
teees
11cdd84606 Added nawast 2015-11-23 20:26:39 +01:00
reaperrr
08ef8443b2 Give Missile Tank weapon a range limit and reduce Quad rocket range limit 2015-11-23 00:24:37 +01:00
OmegaBolt
937584af53 D2k Deviator balance 2015-11-22 23:15:13 +00:00
Pavel Penev
bacac082cc Merge pull request #10079 from abcdefg30/cdesktypo
Fix the description of ReturnToOrigin in Chronoshiftable.cs
2015-11-22 23:20:03 +02:00
abcdefg30
b2b0a5fe9c Merge pull request #10071 from obrakmann/fix-pacifist-worms
Fix worms not attacking anything anymore
2015-11-22 21:55:50 +01:00
abcdefg30
d8feb69e8c Merge pull request #10074 from OmegaBolt/d2k-terrain-regress
Add SpiceSand to more terrain type definitions
2015-11-22 21:54:05 +01:00
abcdefg30
921d3b9278 Fix the description of ReturnToOrigin in Chronoshiftable.cs 2015-11-22 21:52:23 +01:00
Matthias Mailänder
2f82b22ca1 Merge pull request #9980 from penev92/chromeLogic
Allow loading of ChromeLogic properties from YAML
2015-11-22 19:21:11 +01:00
OmegaBolt
16af35289e D2k, fix #10037 terrain regressions 2015-11-22 18:02:16 +00:00
Matthias Mailänder
284adf9501 Merge pull request #10047 from abcdefg30/film03a
Add the briefing video to atreides03a
2015-11-22 18:29:22 +01:00
Oliver Brakmann
8e5929b070 Fix worms not attacking anything anymore 2015-11-22 18:20:00 +01:00
Matthias Mailänder
3ab5c0042b Merge pull request #10037 from OmegaBolt/d2k-terrain
Fixes #4243.
Fixes #8317.
2015-11-22 18:14:59 +01:00
Matthias Mailänder
79bf69cd4c Merge pull request #9978 from RoosterDragon/cache-script-actor-luavalue
Cache self.ToLuaValue in ScriptTriggers
2015-11-22 18:06:41 +01:00
Oliver Brakmann
a6dadbe26e Merge pull request #9926 from reaperrr/d2k-spiceblooms3
Further improve D2k spiceblooms
2015-11-22 17:17:47 +01:00
reaperrr
c4ca5d6497 Add invisible spice bloom spawn
When real spiceblooms explode, they spawn an invisible
spicebloom.spawnpoint actor, which only 'grows' when the cell is of
GrowthTerrainType. When 'exploding', it then displays the animation of
blowing spice up into the air, and spawns a real spicebloom.

This replicates the original behavior where spice blooms would only grow
on sand cells that had been harvested and free of spice.
2015-11-22 16:43:16 +01:00
reaperrr
a175f53ba7 Improve spice bloom seeding mechanism
Improve seeding target cell determination.
Draw out spice seedable cells before loop.
Default to null for SpiceBloom.Weapon.
Pull spice seeding into its own method.
Skip it completely if no seed weapon is defined.
2015-11-22 16:41:12 +01:00
reaperrr
64b1aea065 Only allow spice blooms to grow on certain terrain types 2015-11-22 16:16:24 +01:00
Matthias Mailänder
db38d390eb Merge pull request #9970 from Sapena/fix_9965_minimap_orders_left_click_control_scheme
Fixed the minimap orders for left click control
2015-11-22 16:13:40 +01:00
Matthias Mailänder
3727fccd1b Merge pull request #9982 from abcdefg30/chronodesc
Unhardcode and document things in Chronoshiftable
2015-11-22 16:05:36 +01:00
Matthias Mailänder
1e85c73a1e Merge pull request #9862 from atlimit8/StoresResourcesOverflowBuffer
Preclude StoresResources.Stored overflow
2015-11-22 15:51:17 +01:00
Matthias Mailänder
0b349f943e Merge pull request #9890 from atlimit8/CreateEffectWarhead_TargetTypes
Target type support for CreateEffectWarhead
2015-11-22 15:42:54 +01:00
Matthias Mailänder
4559949846 Merge pull request #10062 from RoosterDragon/seeds-bounds-check
Prevent invalid cells checks in SeedsResource
2015-11-22 08:04:13 +01:00
atlimit8
36db019823 Add DeployStateInit for pre-deployment 2015-11-21 20:25:17 -06:00
atlimit8
607b345aaf Clean-up MiniYaml after #9124, closing #9497 2015-11-21 20:10:58 -06:00
RoosterDragon
172846fdb4 Merge pull request #10063 from pchote/fix-mp-dropdown
Fix width of the MP filter checkboxes.
2015-11-22 01:34:33 +00:00
Paul Chote
6777bb247b Fix width of the MP filter checkboxes. 2015-11-22 01:01:05 +00:00
abcdefg30
b51548a60d Merge pull request #9585 from ChaoticMind/select_all_map
Make "select all units" work across screen/map again
2015-11-22 01:50:48 +01:00
RoosterDragon
c4851a40cd Prevent invalid cells checks in SeedsResource. 2015-11-22 00:30:27 +00:00
abcdefg30
802b6215e1 Merge pull request #10014 from penev92/fixDTU
Fixup DeployToUpgrade
2015-11-22 00:59:29 +01:00
abcdefg30
ea19f7cd54 Add an upgrade rule for the Upgrades -> DeployedUpgrades change 2015-11-22 01:51:11 +02:00
Pavel Penev
64dd2357cd Update thumpers and Mobile Sensor Arrays to the new DeployToUpgrade
Currently those are the only two usages of the trait.
2015-11-22 01:51:09 +02:00
Pavel Penev
7e4f0be7fb Add support for deploy animations using a specific upgrade
Also ignore orders while playing a deploy/undeploy animation. Fixes 9242.

We grant a level 1 Undeployed upgrade(s) when the actor is created which enables the default behavior of the actor. When the actor receives a deploy order, the Undeployed upgrade(s) is(are) revoked, which may or may not be used to enable a trait to play a deploy animation. Once the deployment is complete, the Deployed upgrade(s) is(are) granted.
Then do the reverse when undeploying, disabling weapons and other systems first by revoking the Deployed upgrade(s), and granting the Undeployed upgrade(s) when the undeploy animation is done.
2015-11-22 01:51:08 +02:00
Oliver Brakmann
69c9a7a0cc Merge pull request #10059 from abcdefg30/06transport
Fix 'oldlst's letting units enter it (after delivering them)
2015-11-21 23:23:17 +01:00
Oliver Brakmann
62aebbab38 Merge pull request #10060 from abcdefg30/06crash
Add IsDead checks to gdi06
2015-11-21 23:15:20 +01:00
Oliver Brakmann
0713978673 Merge pull request #10058 from abcdefg30/harv05
Fix the harvester stopping when you reach the base in gdi05
2015-11-21 23:06:48 +01:00
Paul Chote
f945e35136 Fix CellRegion.BoundingRegion behaviour. 2015-11-21 22:00:35 +00:00
atlimit8
34cbd8bdf2 Merge pull request #10061 from pchote/fix-sam-death-crash
Fix a NRE when destroying SAM Sites in GDI06.
2015-11-21 15:50:06 -06:00
Paul Chote
1667dd812e Fix a NRE when destroying SAM Sites in GDI06. 2015-11-21 21:29:31 +00:00
abcdefg30
997c9ca615 Add IsDead checks to gdi06 2015-11-21 22:15:45 +01:00
abcdefg30
fb56093ccf Fix 'oldlst's letting units enter it (after delivering them) 2015-11-21 21:26:59 +01:00
abcdefg30
b24dbe86c8 Fix the harvester stopping when you reach the base in gdi05 2015-11-21 21:05:22 +01:00
Oliver Brakmann
458de06727 Merge pull request #10056 from abcdefg30/rushwater
Fix the rushAI building spens/syrds without being able to build naval units
2015-11-21 21:01:47 +01:00
Oliver Brakmann
16de21d41c Merge pull request #10018 from pchote/fix-spy-cursor
Restore targeting cursor when mousing over a disguised enemy spy.
2015-11-21 20:57:12 +01:00
abcdefg30
1a269d0f2e Fix the rushAI building spens/syrds without being able to build naval units 2015-11-21 20:29:28 +01:00
abcdefg30
ff228b79ea Merge pull request #10027 from atlimit8/FillEditorActorSelectionTooltipBlankLine
Fill editor actor selection tooltip blank line
2015-11-21 20:20:39 +01:00
Pavel Penev
be49435265 Merge pull request #10035 from reaperrr/fix-orca-missile
Increased default range of angles that missiles can launch at
2015-11-21 21:09:25 +02:00
abcdefg30
3fc9d23648 Merge pull request #10040 from teees/weap-fix
Move weapons factory exit and waypoint closer to the building
2015-11-21 20:05:15 +01:00
abcdefg30
73dd073e08 Merge pull request #9798 from teees/medic-selfheal
Lower GDI medic self heal speed
2015-11-21 20:00:41 +01:00
teees
c87a9de9a4 Lower gdi medic self heal speed 2015-11-21 19:25:50 +01:00
Paul Chote
65a7f2e863 Restore earlier spy targeting behaviour. 2015-11-21 18:06:47 +00:00
Oliver Brakmann
74db6f337d Merge pull request #10023 from OpenRA/fixGpsDot
Fix gps dot
2015-11-21 18:57:34 +01:00
Oliver Brakmann
ab260de203 Merge pull request #10007 from penev92/fixAttack
Don't attack actors outside vision range
2015-11-21 18:57:11 +01:00
Pavel Penev
d235ea3a52 Don't attack actors that you can't see 2015-11-21 19:33:10 +02:00
Paul Chote
09b000f7cd Merge pull request #10038 from r34ch/ammo-box-select
Hide ammobox healthbar.
2015-11-21 14:06:55 +00:00
Matthias Mailänder
e4054ef8d0 Merge pull request #9956 from teees/radar-update-line
Draw radar update line for mobile sensors array (TS)
2015-11-21 14:58:34 +01:00
Matthias Mailänder
645900d836 Merge pull request #8861 from atlimit8/NunitMakefileTarget
Add `nunit` NUnit make target to Makefile.
2015-11-21 14:33:01 +01:00
DArcy Rush
5d7a088f18 Add CHAN to EmitInfantryOnSell on certain structures. 2015-11-21 09:39:05 +00:00
atlimit8
418e70b68e Easier actor selection in map editor by actor bounds center 2015-11-20 22:59:20 -06:00
atlimit8
39545c7150 Remove editor actor selection tooltip blank line 2015-11-20 22:56:44 -06:00
abcdefg30
d3b62b60ae Add the briefing video to atreides03a 2015-11-21 01:14:35 +01:00
Pavel Penev
8d4d37ca46 Make GPS respect shroud 2015-11-21 01:11:40 +02:00
Pavel Penev
78e2eabd17 Remove byPlayer parameter from IFogVisibilityModifier.HasFogVisibility() 2015-11-21 01:11:38 +02:00
Pavel Penev
217c3881c6 Add IFogVisibilityModifier.IsVisible(Actor) 2015-11-21 01:11:37 +02:00
Pavel Penev
bfa23c18c0 Track GpsDot state per player
Should let us fix the issue mentioned in https://github.com/OpenRA/OpenRA/pull/10007#issuecomment-157409237
2015-11-21 01:11:36 +02:00
abcdefg30
7afbe0d6fd Merge pull request #10045 from r34ch/chan-scientist
Rename Chan to Scientist.
2015-11-20 23:09:30 +01:00
DArcy Rush
23880afe05 Rename Chan to Scientist. 2015-11-20 20:38:10 +00:00
teees
5337c788ce moved weapons factory exit and waypoint closer to the building 2015-11-20 07:39:03 +01:00
DArcy Rush
6db8eac009 Hide ammobox healthbar. 2015-11-19 22:57:19 +00:00
OmegaBolt
ce217d0fdd D2k spice no longer erases map details & terrain fixes 2015-11-19 21:51:22 +00:00
Oliver Brakmann
a4d864903d Merge pull request #10022 from reaperrr/fix-point-art
Fix waypoint, spawnpoint and camera editor art
2015-11-19 19:36:12 +01:00
reaperrr
af39d731a5 Fix D2k wormspawner editor art 2015-11-19 19:27:56 +01:00
Oliver Brakmann
6bc3c61f23 Merge pull request #10010 from penev92/fixUAN
Fix UpgradeActorsNear revoking upgrades after the actor dies
2015-11-19 18:59:42 +01:00
reaperrr
1d020872ec Increase the default range of angles that missiles can launch at 2015-11-19 15:02:19 +01:00
Kevin Azzam
64ed164295 Make "select all units" work across screen/map again 2015-11-19 00:21:16 +01:00
abcdefg30
6cd8649156 Small code style fixes 2015-11-18 21:16:58 +01:00
abcdefg30
9b2391cf0c Unhardcode and document things in Chronoshiftable 2015-11-18 21:16:57 +01:00
abcdefg30
c35f9007c3 Merge pull request #9582 from ChaoticMind/ctrl_backspace
Implement some keyboard hotkeys for chat (TextFieldWidget)
2015-11-18 20:48:05 +01:00
Kevin Azzam
3c79e9075b Add some hotkeys for OSX (cmd + arrow_keys, ctrl + k, and ctrl + d) 2015-11-18 18:44:02 +01:00
reaperrr
defab6959e Fix D2k effect palette shadow index 2015-11-17 21:09:29 +01:00
reaperrr
88430f3a33 Fix mpspawn, waypoint and camera art
All mpspawn, waypoint and camera editor art uses the correct shadow and remap colors.
Additionally added camera art to CnC, D2k and TS.
2015-11-17 21:09:29 +01:00
reaperrr
9827796ea8 Merge pull request #9997 from abcdefg30/d2kspeed
Add production acceleration to d2k
2015-11-17 19:30:04 +01:00
reaperrr
782a1f3497 Merge pull request #10020 from cjshmyr/truckbuffs
Increase Supply & Demo Truck vision from 3 to 4 cells
2015-11-17 19:18:36 +01:00
atlimit8
7e4bf51895 Merge pull request #9937 from hacklex/server-settings-fix
Changed ServerSettings cloning to a more reliable approach
2015-11-16 21:47:17 -06:00
Thehx
6bd3195c3d Changed ServerSettings cloning to a more reliable approach 2015-11-17 05:27:42 +03:00
Curtis Shmyr
cfec9caaaa Increase TRUK and DTRK vision from 3 to 4 cells 2015-11-16 18:25:29 -07:00
Paul Chote
5a5fc8474f Merge pull request #10013 from abcdefg30/bomberchrono
Fix a crash when using the chronoshift power on the map bomber john
2015-11-16 21:59:55 +00:00
Paul Chote
565e292e12 Merge pull request #10008 from penev92/serverBrowserFilter
Add a null check to CachedTransform.Update()
2015-11-16 21:51:50 +00:00
Oliver Brakmann
612026b4bd Merge pull request #10001 from pchote/fix-d2k-shroud
Split D2K shroud/fog rendering and fix shroud blending.
2015-11-16 22:25:10 +01:00
Paul Chote
124c0ea041 Make CanTarget modifiers a ref parameter. 2015-11-16 20:38:53 +00:00
Oliver Brakmann
d2d4767e94 Merge pull request #9951 from Phrohdoh/explain-node-merge
Add a comment explaining some of the sequence parsing code.
2015-11-16 20:02:22 +01:00
teees
2777262cb0 Draw radar update line for mobile sensors array 2015-11-16 15:38:13 +01:00
abcdefg30
a5f15f5080 Merge pull request #10009 from penev92/grantUpgradePower
Check if WithSpriteBody is available in GrantUpgradePower
2015-11-16 13:55:48 +01:00
teees
b12e029b04 Prevent aircraft from flying into shroud 2015-11-16 09:01:36 +01:00
teees
3662a1781b Adjusted orca and drop pod sight range 2015-11-16 09:01:35 +01:00
Pavel Penev
4d787cbedb Check if WithSpriteBody is available in GrantUpgradePower 2015-11-16 01:25:09 +02:00
abcdefg30
828cb5cf38 Fix a crash when using the chronoshift power
if the "chronosphere-actor" doesn't have an "active" sequence
2015-11-15 22:21:23 +01:00
Pavel Penev
13978b08bc Fix UpgradeActorsNear revoking upgrades after the actor dies
Very hard bug to reproduce: if you can power down a stealth generator just as it is dieing you can hit a race condition that leads to ActorExited() being called to revoke the upgrades after they have already been revoked once.
2015-11-15 18:51:15 +02:00
Pavel Penev
636725235b Add a null check to CachedTransform.Update() 2015-11-15 16:23:07 +02:00
Paul Chote
1dca3f1206 Split D2K shroud/fog rendering and fix shroud blending. 2015-11-15 11:35:22 +00:00
Matthias Mailänder
7d2c86d75b Merge pull request #10000 from cjshmyr/typos
Fix some comment typos
2015-11-15 09:26:46 +01:00
Curtis Shmyr
f0e9b85ccc I before E except after C 2015-11-14 22:32:37 -07:00
abcdefg30
e8cb0a3d48 Add production acceleration to d2k
except for starports
2015-11-15 01:48:07 +01:00
Curtis Shmyr
7b0c9b7bf5 Merge pull request #9992 from obrakmann/pr9959-new
RA balance fixed up
2015-11-14 14:06:20 -07:00
Oliver Brakmann
dceb1fbd80 Increase range of flak truck against air targets
From 6 cells to 8 cells
2015-11-14 20:51:10 +01:00
Paul Chote
a9f2fc962e Merge pull request #9984 from cjshmyr/spypowerdrain
Lower Spy's InfiltrateForPowerOutage time from 30->20sec
2015-11-14 19:33:03 +00:00
DArcy Rush
ee4383b75d Rebalance Tesla Tank.
Allow attacking of target regardless of facing.
2015-11-14 19:16:59 +01:00
Pavel Penev
4c7e6db4da Merge pull request #9599 from ChaoticMind/lua_debug
Add a Lua wrapper to display debug messages (shows if setting enabled)
2015-11-14 20:00:38 +02:00
Oliver Brakmann
5b73417d83 Merge pull request #9987 from pchote/transforms
Check deploy location at the time of transform.
2015-11-14 16:41:44 +01:00
Pavel Penev
0c1283c8c0 Merge pull request #9969 from obrakmann/fix9892_dead-radar-stops-all-reinf
Fix reinforcements appearing in soviet04a/b despite killed radar dome
2015-11-14 14:58:25 +02:00
Paul Chote
67193b43d5 Check deploy location at the time of transform. 2015-11-14 12:49:26 +00:00
Pavel Penev
8f85794a52 Allow AssetBrowserLogic's allowed extentions to be loaded from YAML
Keep the default list of file formats as a fallback for thirdparty mods, but still add it to YAML to show off the functionality and to make it more transparent what formats are supported.
2015-11-14 14:40:52 +02:00
Oliver Brakmann
473ae7c9cb Merge pull request #9985 from cjshmyr/husknames
Update some husk names to match current tooltips
2015-11-14 13:15:48 +01:00
Paul Chote
62682351b6 Merge pull request #9974 from reaperrr/fix-d2k-bloom-editor
Fix spice bloom editor visibility
2015-11-14 12:08:19 +00:00
Pavel Penev
5b185f93a1 Pass subnodes of the widget Logic node to the corresponding ChromeLogic class 2015-11-14 14:06:53 +02:00
Curtis Shmyr
2a240718db Update some husk names to match current tooltips 2015-11-14 02:01:25 -07:00
Curtis Shmyr
bac98acce7 lower InfiltrateForPowerOutage time from 30->20sec 2015-11-14 01:42:13 -07:00
abcdefg30
a1fd16f6c9 Add a flipped napalm explosion for buildings 2015-11-14 00:41:30 +01:00
abcdefg30
e238c583d5 Add more variations to building explosions 2015-11-14 00:10:33 +01:00
abcdefg30
08f8dc0067 Move Length: * to Defaults on exlosion: 2015-11-13 23:59:54 +01:00
Pavel Penev
56a2f4c9a3 Merge pull request #9976 from obrakmann/fix9975_mod-loading-exceptions
Fix exceptions while loading mods
2015-11-13 22:22:45 +02:00
Paul Chote
57cd1b2a8a Merge pull request #9961 from GraionDilach/fix-ts-tileset
Fix TS legacy tileset importer color regression.
2015-11-13 20:04:35 +00:00
Oliver Brakmann
d9663d8a80 Merge pull request #9972 from Biofreak1987/fix_dead_cyard_ai_construction
Fix ai building in soviet04/06 missions despite killed construction yard
2015-11-13 20:50:00 +01:00
Pavel Penev
fed8ba666f Merge pull request #9770 from evgeniysergeev/combined_frames
flip sprites in combined sequences
2015-11-13 21:15:53 +02:00
Pavel Penev
fb5695b0c9 Merge pull request #9979 from RoosterDragon/fix-sln
Allow VS2015 to format solution file
2015-11-13 17:07:19 +02:00
Philipp Schärer
830288b5a0 Fixed the minimap orders for left click control
Use the correct actions when orders are issued
over the minimap.
2015-11-13 08:56:43 +01:00
evgeniysergeev
ea1115fe46 flip sprites in sequences and frames in combined sequences 2015-11-13 06:31:12 +03:00
RoosterDragon
8cf4502e2e Allow VS to reorder entries in solution file. 2015-11-12 23:39:03 +00:00
RoosterDragon
e6e98d3aa2 Cache self.ToLuaValue in ScriptTriggers.
When making an Lua function call, any LuaCustomClrObject must be introspected via reflection in order to determine what to expose in Lua code. In OpenRA, we use these for any types that implement IScriptBindable, such as Actor.

Previously, we would need to pay the cost of this reflection for every individual Lua call an Actor used in its ScriptTriggers trait where it passed `self` as a parameter. This would be repeated every time. For performance, we now cache self.ToLuaValue in the trait and use that for all calls so we only pay the reflection cost once on trait construction. This removes a significant overhead in the Lua bridging code.
2015-11-12 22:18:19 +00:00
abcdefg30
f52bbd1b0b Merge pull request #9928 from Biofreak1987/fix_nod05_airstrike_crash
Fix nod05 airstrike Lua crash and update map rules
2015-11-12 22:48:46 +01:00
Oliver Brakmann
f2bad4331d Skip mod directories without a mod manifest file 2015-11-12 22:13:38 +01:00
Oliver Brakmann
5e576ddca4 Add missing RequiresMods entry to mods/all/mod.yaml 2015-11-12 22:13:06 +01:00
Oliver Brakmann
1b8cdfad02 Merge pull request #9854 from Arcitectus/resolve.Issue#6170
prevent allied units from autoattack building which is being captured…
2015-11-12 21:42:39 +01:00
reaperrr
820b193d27 Fix spice bloom editor visibility 2015-11-12 19:52:55 +01:00
Biofreak1987
627edd4ac2 Fix ai building in soviet04/06 missions despite killed construction yard 2015-11-12 13:34:48 +01:00
Biofreak1987
84a0dc0242 Fix nod05 airstrike Lua crash and update map rules
- Fix airstrike Lua crash when there are no targets
- Increased harvester search range
- Hide owner row from husks and walls

Changes to make it closer to the original:
- Added e3 and sandbag production
- Made airstrikes gdi only
- Limited airstrike squadsize to 1
- Allow to attack civilian buildings
2015-11-12 13:27:53 +01:00
Paul Chote
98d0844695 Merge pull request #9922 from penev92/validateColor
Validate player color when changing slots in the lobby
2015-11-11 22:56:30 +00:00
Paul Chote
dbd23c9d46 Merge pull request #9919 from obrakmann/fix9863
Fix bogus owner check in Lua API production code
2015-11-11 22:23:44 +00:00
Oliver Brakmann
e05098400a Merge pull request #9968 from Phrohdoh/miniyaml-cleanups
MiniYaml.cs cleanups
2015-11-11 22:19:37 +01:00
Oliver Brakmann
121b0a6e9c Merge pull request #9942 from abcdefg30/descexplodes
Fix the documentation of Explodes
2015-11-11 22:14:14 +01:00
Oliver Brakmann
c8a517713d Fix reinforcements appearing in soviet04a/b despite killed radar dome 2015-11-11 22:11:54 +01:00
Pavel Penev
d760ee1cd5 Merge pull request #9948 from OmegaBolt/d2k-thumper-bal
D2k thumper worm attraction balance change
2015-11-11 23:01:06 +02:00
Pavel Penev
36bf9eee0c Merge pull request #9949 from pchote/fix-more-overlaps
Truncate player names in more places.
2015-11-11 22:38:54 +02:00
Pavel Penev
a4b54aacbb Merge pull request #9933 from pchote/shroud-cursor-bug
Prevent frozen actors leaking through shroud.
2015-11-11 22:28:12 +02:00
abcdefg30
8c2c946254 Add an upgrade rule for the DeathType -> DeathTypes change 2015-11-11 21:24:04 +01:00
abcdefg30
4a4608e1f3 Rename DeathType to DeathTypes of Explodes 2015-11-11 21:23:40 +01:00
abcdefg30
a5aff66848 Polish the documentation in Explodes.cs 2015-11-11 21:23:27 +01:00
DArcy Rush
b3cba2d005 Rebalance phase transport.
Passengers increased to 4, speed and LoS increased.
2015-11-11 19:36:19 +00:00
DArcy Rush
ef1a92eaa8 Reduce chronotank charge time.
Chronotank charge decreased from 20s to 12s.
2015-11-11 19:36:19 +00:00
Oliver Brakmann
db96b62427 Merge pull request #9967 from cjshmyr/barrackexits
Made both barracks' doors exit to different cells
2015-11-11 20:20:03 +01:00
Taryn Hill
a8600ffbe7 Replace instance of 4 spaces with a single tab in MiniYaml.cs 2015-11-11 13:03:22 -06:00
Curtis Shmyr
1a0bf541de Made both barracks' doors exit to different cells 2015-11-11 11:51:15 -07:00
Taryn Hill
44e03c094b Add newlines in MiniYaml.cs for readability 2015-11-11 12:47:30 -06:00
Taryn Hill
9b568f53a1 Rename some variables in MiniYaml.cs for readability 2015-11-11 12:44:04 -06:00
Michael Rätzel
51bb515a4d prevent allied units from autoattack building which is being captured. resolves #6170. 2015-11-11 14:32:38 +01:00
Taryn Hill
d33922915e Merge pull request #9891 from teees/sounds-fix
Added sounds for orca takeoff and landing (TS)
2015-11-11 06:15:59 -06:00
Zimmermann Gyula
d13d5088cd Fix TS legacy tileset importer color regression. 2015-11-11 12:18:01 +01:00
Pavel Penev
34876db9d9 Merge pull request #9885 from pchote/editor-copypasta
Add copy/paste to the map editor
2015-11-11 01:00:37 +02:00
Paul Chote
a081321790 Add copy/paste to the map editor. 2015-11-10 22:18:18 +00:00
Paul Chote
1c06297ff7 Make editor brushes disposable. 2015-11-10 22:17:28 +00:00
Oliver Brakmann
bf3a46be93 Merge pull request #9958 from penev92/gpsAutoTarget
Enable AutoTarget to aquire targets under fog if GPS is present
2015-11-10 22:23:58 +01:00
Oliver Brakmann
727ad3e61b Merge pull request #9947 from OmegaBolt/d2k-leftover-armours
D2k fixed armour & AI typos
2015-11-10 21:57:51 +01:00
Pavel Penev
ab2c5ab43d Enable AutoTarget to aquire targets under fog if GPS is present 2015-11-10 22:50:22 +02:00
Oliver Brakmann
4bbf6ea0c7 Merge pull request #9925 from atlimit8/MultiLineMapEditorTooltips
Multi-line map editor tooltips
2015-11-10 21:06:57 +01:00
Taryn Hill
2fc391c5b8 Add a comment explaining some of the sequence parsing code 2015-11-10 07:17:18 -06:00
atlimit8
44eec7a885 Merge pull request #9893 from teees/minor-fixes
Polish the Tiberian Sun Construction Yard and MCV deployment

Use the undeploy cursor for the construction yard
Use the correct deploy sound for the mcv
2015-11-09 23:27:22 -06:00
Oliver Brakmann
496f8d7ddf Merge pull request #9950 from GraionDilach/fix-sp-disable
Fix observer GUI showing disabled support powers.
2015-11-09 21:03:32 +01:00
Pavel Penev
cfdce8d1a2 Merge pull request #9934 from OmegaBolt/d2k-sw-times
D2k super weapon timers
2015-11-09 21:49:36 +02:00
Pavel Penev
76cdda2eae Merge pull request #9946 from OmegaBolt/d2k-bfd-mapup
D2k Battle For Dune map update
2015-11-09 21:41:37 +02:00
Oliver Brakmann
4ea20027b1 Merge pull request #9941 from OmegaBolt/d2k-orni-bombs
D2k Ornithopter bomb damage increase
2015-11-09 19:57:10 +01:00
Paul Chote
491e96466d Truncate player name in replay browser. 2015-11-09 18:55:54 +00:00
Zimmermann Gyula
6b891c50cf Fix observer GUI showing disabled support powers. 2015-11-09 19:55:51 +01:00
Paul Chote
6236b29fde Truncate player name in observer stats and diplomacy panels. 2015-11-09 18:51:15 +00:00
Paul Chote
dcc21aea41 Truncate player name in ingame menu stats. 2015-11-09 18:50:58 +00:00
Oliver Brakmann
b30bae08c0 Fix bogus owner check in Lua API production code 2015-11-09 19:31:19 +01:00
OmegaBolt
fbebb26a33 D2k thumper worm attraction balance 2015-11-09 18:28:22 +00:00
OmegaBolt
3532b22e5e D2k fixed armour & AI typos 2015-11-09 18:08:51 +00:00
OmegaBolt
bf982f81d0 D2k Battle For Dune map update 2015-11-09 17:03:16 +00:00
OmegaBolt
494266e257 D2k Ornithopter bomb damage increase 2015-11-09 14:36:48 +00:00
OmegaBolt
03367d4913 D2k super weapon timers 2015-11-08 22:15:58 +00:00
Paul Chote
9ae811e0c0 Prevent frozen actors leaking through shroud. 2015-11-08 20:53:47 +00:00
Pavel Penev
d2c94adc55 Merge pull request #9875 from OmegaBolt/d2k_infondunes
D2k, fixed infantry moving too slow on dunes
2015-11-08 21:54:51 +02:00
atlimit8
cdb2da33be CreateEffectWarhead target types support 2015-11-08 12:54:17 -06:00
atlimit8
def564e97c reorganize CreateEffectWarhead.GetImpactType(World world, CPos cell, WPos pos) 2015-11-08 12:54:14 -06:00
Oliver Brakmann
ea2defdbc1 Merge pull request #9659 from abcdefg30/atreides03a
Add atreides03a
2015-11-08 19:30:37 +01:00
Matthias Mailänder
ab739c8446 Merge pull request #9415 from atlimit8/SpawnActorOnDeath_to_Common
Move SpawnActorOnDeath to OpenRA.Mods.Common
2015-11-08 19:07:07 +01:00
Matthias Mailänder
3941bc441f Merge pull request #9913 from OmegaBolt/d2k-start-cash
Added D2k 7000 start cash option
2015-11-08 17:39:51 +01:00
Pavel Penev
62f2c01bd6 Merge pull request #9920 from pchote/label-truncation
Truncate long user-defined strings.
2015-11-08 17:21:19 +02:00
Paul Chote
fed2029d1f Truncate long player names in lobby. 2015-11-08 14:59:59 +00:00
Paul Chote
cfc92f66a4 Truncate long server names in MP browser. 2015-11-08 14:59:59 +00:00
Paul Chote
19aa07d019 Truncate long map name in replay browser. 2015-11-08 14:59:59 +00:00
Paul Chote
b689364a4d Truncate long map name / mod version in MP panel. 2015-11-08 14:59:59 +00:00
Paul Chote
bb66957bad Truncate long map name / author in map chooser. 2015-11-08 14:59:58 +00:00
Paul Chote
ef3a0e36e0 Truncate long map name / author in lobby. 2015-11-08 14:59:58 +00:00
Paul Chote
6673c882ee Add helpers for truncating long labels. 2015-11-08 14:59:53 +00:00
Pavel Penev
c7ebfd608e Merge pull request #9929 from pchote/editor-defaultlocation
Set the default map location to the support dir.
2015-11-08 14:46:52 +02:00
Paul Chote
6edac4bdf7 Set the default map location to the support dir. 2015-11-08 12:08:20 +00:00
Paul Chote
4bd3b257f1 Merge pull request #9887 from r34ch/n64-td-mission
Move blossom trees south one cell on cnc64gdi01.
2015-11-08 11:39:49 +00:00
Paul Chote
101efaed4f Merge pull request #9873 from teees/editor-fix
Handle mouse up event in default editor brush (instead of mouse down)
2015-11-08 11:29:03 +00:00
Paul Chote
9ef708b3df Merge pull request #9923 from obrakmann/fix-gdi06-creep-stances
Fix lint warning in gdi06
2015-11-08 11:12:55 +00:00
Matthias Mailänder
f02dc7e426 Merge pull request #9846 from Biofreak1987/soviet06_prerequisites_fix
Fix soviet06 prerequisites
2015-11-08 09:39:37 +01:00
Matthias Mailänder
e8a07a6ddf Merge pull request #9921 from obrakmann/fix-weatheroverlay-typo
Fix typo in WeatherOverlayInfo
2015-11-08 09:12:15 +01:00
Matthias Mailänder
0e13472651 Merge pull request #9924 from cjshmyr/lua-islocalplayer
Added 3 Lua player API properties
2015-11-08 08:52:17 +01:00
atlimit8
9c0d83d0d9 Make ActorSelector tooltips better match actor tooltips in map editor 2015-11-07 16:10:13 -06:00
atlimit8
4c2488f9b1 Made editor actor preview tooltip easier to read 2015-11-07 16:10:13 -06:00
atlimit8
cbc8d1c5ec Multiline support for SimpleTooltipLogic 2015-11-07 16:10:00 -06:00
Curtis Shmyr
2a6c87f81d Added 3 Lua player API properties 2015-11-07 12:17:09 -07:00
Oliver Brakmann
0742cbfdb9 Fix lint warning in gdi06 2015-11-07 19:33:29 +01:00
Pavel Penev
98134fab5d Validate player color when changing slots in the lobby 2015-11-07 20:27:10 +02:00
Oliver Brakmann
27d915046c Fix typo in WeatherOverlayInfo 2015-11-07 19:23:22 +01:00
Matthias Mailänder
39fa74a013 Merge pull request #9882 from teees/walker-turn-animation
Tick VoxelWalker move animation when turning
2015-11-07 18:42:22 +01:00
Matthias Mailänder
b45aa98081 Merge pull request #9888 from reaperrr/d2k-spiceblooms2
Improve D2k spiceblooms
2015-11-07 18:28:11 +01:00
Matthias Mailänder
391580d8bf Merge pull request #9917 from penev92/d2kRepairPad
D2k repair pad
2015-11-07 18:07:44 +01:00
Pavel Penev
239f842107 Merge pull request #9909 from reaperrr/fix-upgrade-dates
Change engineVersion for several upgrade rules to 20150920
2015-11-07 16:17:01 +02:00
Pavel Penev
4b954b8e28 Buff D2k repair pads 2015-11-07 14:54:29 +02:00
Pavel Penev
d04b0617fe Fix repair pad reference in units' Repairable trait 2015-11-07 14:38:33 +02:00
Pavel Penev
5df01b2137 Merge pull request #9916 from pchote/news-from-the-future
Fetch battlefield news once per game launch.
2015-11-07 14:12:03 +02:00
Oliver Brakmann
c738628c02 Merge pull request #9915 from pchote/globalchat-margins
Fix global chat line margins.
2015-11-07 12:40:08 +01:00
Oliver Brakmann
a70ebe2486 Merge pull request #9877 from pchote/lobby-unread
Show unread message count on lobby chat tabs.
2015-11-07 12:34:35 +01:00
Paul Chote
b235e244a4 Fetch battlefield news once per game launch. 2015-11-07 11:29:34 +00:00
Paul Chote
8c975fc81f Fix global chat line margins. 2015-11-07 11:17:08 +00:00
Pavel Penev
a417c82b0f Merge pull request #9901 from reaperrr/d2k-muzzles
Fix D2k Trike and Raider muzzles
2015-11-07 13:06:32 +02:00
Paul Chote
797f800966 Add unread message count to lobby chat tabs. 2015-11-07 10:59:18 +00:00
Paul Chote
d49e2cc84b Add Tick method to ChromeLogic. 2015-11-07 10:52:30 +00:00
OmegaBolt
51a4147b69 D2k 7000 start cash option 2015-11-07 02:26:02 +00:00
Oliver Brakmann
3539095ea1 Merge pull request #9898 from OmegaBolt/d2k-crate-prereq
D2k crate balance
2015-11-06 19:42:05 +01:00
abcdefg30
4576b97bf6 Add atreides03a 2015-11-06 19:27:01 +01:00
reaperrr
1ea339f316 Fix WithSpriteRotorOverlay upgrade rule to account for @ separator 2015-11-06 15:09:42 +01:00
reaperrr
f208cc6d38 Change engineVersion for upgrade rules of changes made between 20150808 and 20150919
Those changes were merged after the feature-freeze, but predate the stable release. Changing the engine version to the day after release makes it easier for modders to upgrade without using bogus engine dates.
2015-11-06 15:00:44 +01:00
DArcy Rush
42af7b9f07 Add self to AUTHORS. 2015-11-06 09:35:43 +00:00
DArcy Rush
29bd95c351 Move blossom trees south one cell in cnc64gdi01. 2015-11-06 09:35:06 +00:00
teees
2e0719f1fd tick VoxelWalker move animation when turning 2015-11-06 06:51:57 +01:00
reaperrr
63925fe7a5 Fix D2k Trike and Raider muzzles
The muzzle weapon appears to need some warhead to 'fire' at actors.
2015-11-06 00:48:26 +01:00
Oliver Brakmann
e609abf445 Merge pull request #9852 from RoosterDragon/event-handler-removals
Detach some event handlers
2015-11-05 22:46:42 +01:00
OmegaBolt
5831d58d13 D2k crate balance
- Fixed prerequisites.
- Added more infantry crates.
- Upped the create explosion damage, though it is still very little. Takes about a third health off a Trike.
2015-11-05 20:09:17 +00:00
RoosterDragon
ee1ef5eff7 Merge pull request #9886 from penev92/fixC17
Fix the C17 delivery plane doing a steep dive when trying to land
2015-11-05 19:47:30 +00:00
Oliver Brakmann
3c09ec3de7 Merge pull request #9855 from RoosterDragon/irc-disconnect-hack
Work around a hang on shutdown caused by IRC
2015-11-05 20:39:20 +01:00
Oliver Brakmann
d3d8a59088 Merge pull request #9867 from GraionDilach/fix-powermultiplier-namespace
Fix PowerMultiplier namespace.
2015-11-05 20:21:42 +01:00
teees
79d2ea3d09 Use the correct deploy sound for the mcv 2015-11-05 12:56:28 +01:00
teees
fbd65b5118 Use the undeploy cursor for the con yard 2015-11-05 12:56:28 +01:00
teees
f81c3da259 Added sounds for orca takeoff and landing 2015-11-05 08:59:32 +01:00
atlimit8
7352290c94 Move SpawnActorOnDeath to OpenRA.Mods.Common & fix spawned death actor teleportation 2015-11-05 00:55:29 -06:00
RoosterDragon
6f09d1a2f4 Remove event handler when disposed in MainMenuLogic.
Removes a static event handler to Game.OnRemoteDirectConnect which allow the GC to reclaim the MainMenuLogic class after it has been disposed.
2015-11-04 23:09:33 +00:00
RoosterDragon
9f728b287b Remove event handlers to CellEntryChanged when done.
Several classes would attach event handlers to the Map which would live longer then they did. Detaching them when no longer needed allows the GC to reclaim them.
2015-11-04 23:09:32 +00:00
RoosterDragon
c562b8c51e Detach event handlers on dispose in TerrainSpriteLayer.
The WorldRenderer outlives the TerrainSpriteLayer and thus keeps it alive longer than expected via the event handler. We detach it to allow the GC to reclaim it.
2015-11-04 23:09:30 +00:00
atlimit8
726bf1c8a9 Support using NUnit.Runners NuGet package for make nunit 2015-11-04 16:56:19 -06:00
reaperrr
71360c1bc2 Reduce spawned spice per piece 2015-11-04 23:54:26 +01:00
reaperrr
008eda7a5f Make sure that a spice bloom spawns at least the minimum of pieces 2015-11-04 23:44:36 +01:00
reaperrr
2e6b71154a Increase variation and average of spice bloom growth 2015-11-04 23:44:36 +01:00
reaperrr
0afb1ed5c8 Improve SpiceExplosion and add BloomExplosion
Fixes angle and loudness of spice debris, adds BloomExplosion to add proper animation and damage crushing actors.
2015-11-04 23:41:03 +01:00
reaperrr
46a728826b Fix spice debris target cell randomization 2015-11-04 23:41:02 +01:00
RoosterDragon
8fe493938e Merge pull request #9842 from GraionDilach/damagewarhead-stance-fix
Fix (HealthPercentage)DamageWarheads ignoring stances.
2015-11-04 22:32:37 +00:00
atlimit8
bbf96141ae Add nunit NUnit make target to Makefile. 2015-11-04 15:41:47 -06:00
Pavel Penev
5cf34f926b Fix the C17 delivery plane doing a steep dive when trying to land 2015-11-04 23:40:26 +02:00
Oliver Brakmann
af7d62a343 Merge pull request #9884 from penev92/fixDropdown
Fix server filter width
2015-11-04 22:29:52 +01:00
Oliver Brakmann
177d983728 Merge pull request #9759 from atlimit8/ActorsHavingTrait
Add ActorsHavingTrait<TTrait>()
2015-11-04 22:26:10 +01:00
Pavel Penev
e741e4300b Fix server filter width 2015-11-04 23:16:18 +02:00
Biofreak1987
b84f663765 Fix soviet06 prerequisites 2015-11-04 20:23:39 +01:00
Oliver Brakmann
861f16329b Merge pull request #9745 from Biofreak1987/soviet06_difficulty
Add difficulty settings to soviet06 missions
2015-11-04 20:18:28 +01:00
Oliver Brakmann
040543fd6b Merge pull request #9743 from reaperrr/untangle-uibits
Fix RA-uibits dependency in D2k and TS
2015-11-03 22:10:23 +01:00
Oliver Brakmann
ada72ee501 Merge pull request #9868 from abcdefg30/build107_8
Allow building on tiles 107 and 108
2015-11-03 19:35:11 +01:00
Oliver Brakmann
adeeb7f89f Merge pull request #9871 from atlimit8/UpdateHexColorUpgradeEngineVersion
Fix hex colors upgrade rules engine version
2015-11-03 19:03:29 +01:00
OmegaBolt
e9fa198fc2 D2k, fixed infantry moving slow on dunes and rough 2015-11-03 14:42:14 +00:00
teees
2465344a20 only change editor brushes on mouseup
let other uses of the right mouse button bubble up
2015-11-03 13:15:28 +01:00
teees
eb6df6fe62 Handle mouse up event in default editor brush 2015-11-03 11:45:10 +01:00
Pavel Penev
120afb9254 Merge pull request #9865 from teees/offset-fix
Tweaked the local offsets for the laser turret and obelisk (TS)
2015-11-03 08:43:29 +02:00
atlimit8
e0123c2011 Merge pull request #9870 from obrakmann/fix9831_viceroids-spawn-from-crushing
Fix viceroids being spawned by crushed infantry
2015-11-02 21:48:35 -06:00
atlimit8
e385b21fae Fix hex colors upgrade rules engine version 2015-11-02 17:28:25 -06:00
Oliver Brakmann
17370c9e2e Fix viceroids being spawned by crushed infantry 2015-11-02 21:30:31 +01:00
Oliver Brakmann
214945a61f Merge pull request #9324 from atlimit8/ColorSpacePrefixes
Hex Color Parsing
2015-11-02 20:28:04 +01:00
abcdefg30
f3b364d749 Allow building on tiles 107 and 108
(in the snow and temperat tilesets)
2015-11-02 19:14:36 +01:00
Zimmermann Gyula
9ace207102 Fix PowerMultiplier namespace. 2015-11-02 14:03:37 +01:00
teees
528c1c6a77 Tweak laser turret armament offset 2015-11-02 12:34:41 +01:00
teees
2a94abbdb1 Tweak obelisk armament offset 2015-11-02 12:00:01 +01:00
atlimit8
29de05cb59 Preclude StoresResources.Stored overflow
Closes #9857
2015-11-02 00:08:10 -06:00
Matthias Mailänder
d37e5f0129 Merge pull request #9809 from RockyTV/upstream/ant-range
Fix Giant Ants and Zombies not being able to attack diagonally
2015-11-02 06:15:16 +01:00
atlimit8
ce649e4501 Merge pull request #9848 from r34ch/tech-buildings-los
Add LoS to Bio lab and prison.
2015-11-01 17:42:54 -06:00
atlimit8
74c63812eb Show only missing required "mod (version)"s 2015-11-01 17:14:46 -06:00
RoosterDragon
8106ecbf4e Work around a hang on shutdown caused by IRC.
Our IRC client doesn't shut down properly - but we only need to shut it down when we're about to close the game anyway, so we just don't bother since it won't hurt anybody.
2015-11-01 22:31:46 +00:00
Taryn Hill
aa594c8532 Merge pull request #9463 from penev92/modDependencies
Add support for inter-mod dependencies
2015-11-01 15:08:43 -06:00
Pavel Penev
1d93bf0500 Update make version to change the required mod target versions 2015-11-01 22:35:39 +02:00
Pavel Penev
2faf15bad7 Add an Install Mod dialog to the ModChooser 2015-11-01 22:35:38 +02:00
Pavel Penev
9748b556dc Add RequiresMods tag to the mod Manifest
List required mods and their versions to enable mod dependencies on another mods.
Also used for identifying the engine version by `modchooser`'s version.
2015-11-01 22:22:03 +02:00
Zimmermann Gyula
0f14339763 Fix (HealthPercentage)DamageWarheads ignoring stances/TargetTypes.
Moves the IsValidAgainst check from SpreadDamage level to Damage level
and adds a duplication to HealthPercentageDamageWarhead.
2015-11-01 21:06:54 +01:00
RoosterDragon
7a6b5a0e55 Merge pull request #9763 from reaperrr/warhead-perf
Attempt to reduce SpreadDamageWarhead CPU overhead
2015-11-01 19:38:50 +00:00
DArcy Rush
c27ba0fa90 Add LoS to Bio lab and prison. 2015-11-01 14:02:17 +00:00
Oliver Brakmann
88c20a6654 Merge pull request #9414 from atlimit8/TurretFacingsInit
Support loading multiple turret facings
2015-11-01 13:18:17 +01:00
Matthias Mailänder
281cd95be4 Merge pull request #9627 from RoosterDragon/mix-on-filesystem
Avoid redundant copies of mix files in memory
2015-11-01 08:54:24 +01:00
Oliver Brakmann
7fe0c9c55d Merge pull request #9828 from Arcitectus/RallyPoint.Reset.OnCapture
reset RallyPoint Location after building was captured. resolves #9163.
2015-10-31 21:57:07 +01:00
Oliver Brakmann
c61d028069 Merge pull request #9829 from pchote/fixup-install
Add IRC library to the install rules.
2015-10-31 20:44:47 +01:00
Paul Chote
bcebba3a2f Add IRC library to the install rules. 2015-10-31 19:39:59 +00:00
Michael Rätzel
c5029e270d reset RallyPoint Location after capture. resolves #9163. 2015-10-31 20:31:08 +01:00
Pavel Penev
ef1e217a2a Merge pull request #9825 from reaperrr/d2k-stealth-det
Add infantry stealth detection to D2k
2015-10-31 20:18:15 +02:00
reaperrr
82d00c22b2 Merge pull request #9821 from abcdefg30/hijackerspeed
Increase the speed of HIJACKER
2015-10-31 18:09:16 +01:00
Pavel Penev
499eba944a Merge pull request #9822 from reaperrr/fix-ts-sensor
Fix TS sensor array DetectCloaked range
2015-10-31 18:52:51 +02:00
reaperrr
124989c6c6 Add stealth detection to D2k infantry 2015-10-31 17:39:10 +01:00
reaperrr
283e864f73 Fix TS sensor array DetectCloaked range 2015-10-31 16:29:05 +01:00
abcdefg30
16dbdebb72 Increase the speed of HIJACKER 2015-10-31 16:08:16 +01:00
Biofreak1987
37cc524f43 Add difficulty settings to soviet06 missions 2015-10-31 14:48:14 +01:00
Pavel Penev
9ae4114d26 Merge pull request #9771 from reaperrr/d2k-thumper
Implement D2k thumper
2015-10-31 15:47:33 +02:00
Pavel Penev
0ca370e2ae Merge pull request #9813 from atlimit8/FixRallyPointColor
RallyPoint palette tracks owner
2015-10-31 15:12:45 +02:00
Pavel Penev
a263f18824 Merge pull request #9812 from obrakmann/fix9811_missing-production-bar-after-capture
Fix missing production bar on captured factories
2015-10-31 15:04:48 +02:00
reaperrr
2e0a8ef9c4 Make sandworms not eat infantry 2015-10-31 13:44:00 +01:00
reaperrr
f220a18fef Align thumper-sand overlay with thump anim 2015-10-31 13:43:59 +01:00
reaperrr
dbaf7e9d12 Add D2k thumper sound 2015-10-31 13:43:58 +01:00
reaperrr
bbf5a4a06d Make AmbientSound upgradable and add customisable interval 2015-10-31 13:43:57 +01:00
reaperrr
85de71514d Merge pull request #9818 from pchote/fix-latency
Fix singleplayer game latency.
2015-10-31 12:44:33 +01:00
Paul Chote
64498b1ea7 Fix singleplayer game latency. 2015-10-31 11:36:32 +00:00
atlimit8
faa1a49604 RallyPoint palette tracks owner 2015-10-30 20:09:39 -05:00
Oliver Brakmann
b1e6916838 Add missing Requires<> to ProductionBar 2015-10-31 00:24:41 +01:00
Oliver Brakmann
9843d10dbd Fix production bars not being visible on captured factories 2015-10-31 00:00:08 +01:00
Alexandre Oliveira
dedccd44bb Fix Giant Ants and Zombies not being able to attack diagonally 2015-10-30 15:37:53 -02:00
reaperrr
b6229fd456 Implement D2k thumper 2015-10-30 14:23:37 +01:00
atlimit8
168dab9707 Merge pull request #9706 from reaperrr/block-height
Add Height property to BlocksProjectiles
2015-10-29 23:51:14 -05:00
RoosterDragon
26d7d59c1a Fix MoveWithinRange not moving far enough for min range checks.
MoveWithinRange was only moving the unit far enough away so the center of the target was above the minimum distance. However, the min range checks in the attack code require all positions on the target to be above the minimum distance. For large targets (e.g. buildings) this means some of the target was still too close, and the unit would get stuck in a loop.

Now MoveWithinRange uses the same range checks in order to ensure units are moved the correct distances.
2015-10-29 22:59:20 +00:00
abcdefg30
a1f27c6133 Merge pull request #9796 from obrakmann/fix9784_missing-base-range-circle
Fix base range circle not being shown during building placement
2015-10-29 21:58:48 +01:00
Oliver Brakmann
e7e4f2f825 Fix base range circle not being shown during building placement 2015-10-29 11:00:59 +01:00
atlimit8
b6f17df260 Add ActorsHavingTrait<TTrait>([Func<TTrait, bool]) 2015-10-28 16:36:45 -05:00
Oliver Brakmann
0997f5b52f Merge pull request #9773 from Mailaender/musictab-dereference
Fixed musicTab = null return value from GetOrNull<ButtonWidget>
2015-10-28 21:53:59 +01:00
Oliver Brakmann
bdf71eabf3 Merge pull request #9777 from teees/repulsion-fix
calculate correct altitude with terrain elevation offset (aircraft repulsion)
2015-10-28 20:56:53 +01:00
Oliver Brakmann
c89bced9f0 Merge pull request #9782 from atlimit8/AircraftIsMovingAboveGround
Fix Aircaft.IsMoving Check
2015-10-28 20:45:15 +01:00
RichSuther
57cd25d5f8 Added Keybord input filter to only register first key press. 2015-10-28 12:08:54 +00:00
RoosterDragon
b4180615a8 Add Aircraft.MakeReservation.
This provides a simpler method for making reservations and also ensures the previous reservation is definitely unreserved before being discarded.
2015-10-27 22:15:56 +00:00
RoosterDragon
e2dd967757 Fix some reservation issues.
- TakeOff.Tick was nulling a local variable, rather than the Reservation field - this is changed to call UnReserve which does the right thing.
- Aircraft.ResolveOrder was missing an UnReserve call before setting a new reservation.
2015-10-27 22:00:26 +00:00
atlimit8
a5b93156db Add --rgba2hex & --argb2hex color format conversion utility commands 2015-10-27 16:12:57 -05:00
atlimit8
949994f10b Convert MiniYaml colors to hex 2015-10-27 16:10:33 -05:00
atlimit8
dac15edce5 Load rgb[a] hex colors from MiniYaml (+ Lua) 2015-10-27 16:09:48 -05:00
Oliver Brakmann
f69ab464af Merge pull request #9785 from abcdefg30/upgradeExit
Fix upgrades in d2k not being producible
2015-10-27 21:36:24 +01:00
abcdefg30
687f459fbc Merge pull request #9611 from obrakmann/fix3285_default-stance-defend
Change the default stance to Defend for human players
2015-10-27 21:21:43 +01:00
abcdefg30
f72dd97844 Fix upgrades in d2k not being producible 2015-10-27 21:17:53 +01:00
Oliver Brakmann
a0fdfc3f79 Add testcase for StanceInit 2015-10-27 19:41:49 +01:00
Oliver Brakmann
b096671acb Add an ActorInit for unit stances 2015-10-27 19:41:49 +01:00
Oliver Brakmann
1a879009f1 Change InitialStance to Defend for human players 2015-10-27 19:41:49 +01:00
atlimit8
2772ddbab4 Fix Aircaft.IsMoving Check 2015-10-27 10:45:45 -05:00
teees
3f718ae7d5 calculate correct altitude with terrain elevation offset 2015-10-27 11:19:56 +01:00
atlimit8
549f8a9e7c Merge pull request #9760 from pchote/fix-teleporting-harvesters
Fix harvesters teleporting through doors
2015-10-26 23:42:51 -05:00
Matthias Mailänder
d2ce79e580 avoid a possible null return value musicTab 2015-10-26 21:45:40 +01:00
Oliver Brakmann
8b2245ad4e Merge pull request #9772 from Mailaender/multiplayer-dereference
Fixed filtersButton = null return value from GetOrNull<DropDownButtonWidget>
2015-10-26 21:30:45 +01:00
Matthias Mailänder
e435864531 don't dereference null return value 2015-10-26 21:21:47 +01:00
Oliver Brakmann
bfdac57138 Merge pull request #9676 from reaperrr/d2k-falloff
Tweaked D2k warhead falloffs
2015-10-26 21:12:45 +01:00
Oliver Brakmann
2723ca1a1f Merge pull request #9615 from reaperrr/d2k-rest1
Remaining D2k changes to restore original balancing/gameplay
2015-10-26 21:03:12 +01:00
Oliver Brakmann
d07ac08dff Merge pull request #9458 from reaperrr/d2k-sight
Change D2k shroud revealing ranges to match original
2015-10-26 20:49:52 +01:00
reaperrr
731875c270 Reduce default warhead TargetExtraSearchRadius
There aren't any actors in any shipping mod where a health radius larger
than 1c512 would be feasible, so no need to make the default larger than necessary.
2015-10-26 16:24:16 +01:00
reaperrr
f166fd9525 Merge pull request #9526 from penev92/tileShapes
Rename TileShape to fit its role better
2015-10-26 15:41:09 +01:00
reaperrr
ce43d02dbc Reduce range and number of D2k building debris
Fix debris warhead falloff
2015-10-26 15:14:11 +01:00
reaperrr
0d990d2818 Calculate D2k building visibility around center instead of footprint 2015-10-26 15:14:10 +01:00
reaperrr
3ce1ee24ae Make only light infantry come out of destroyed D2k buildings 2015-10-26 15:14:09 +01:00
reaperrr
0d2c9725ea Tweak D2k infantry bounds 2015-10-26 15:14:08 +01:00
reaperrr
793b72b3ba Tone down D2k veterancy stat gains 2015-10-26 15:14:07 +01:00
reaperrr
d469e073bc Disable D2k capturing of husks, make husks explode 2015-10-26 15:14:06 +01:00
reaperrr
e37729f634 Tweak D2k worm disappear chance, spawn interval and minimum 2015-10-26 15:14:05 +01:00
reaperrr
7fdc8f9ad9 Make D2k constr. yard explicit prerequisite
In preparation for moving Upgrades to the player actor in the future.

Additionally remove unnecessary Exit trait from construction yard.
2015-10-26 15:12:16 +01:00
abcdefg30
91fda29f84 Merge pull request #9769 from RoosterDragon/fix-replay-2-the-fixining
Fix replay freeze 2
2015-10-26 12:19:38 +01:00
abcdefg30
86df9f66e8 Merge pull request #9718 from penev92/hvaException
Check HVA files validity at load time
2015-10-26 12:14:28 +01:00
Pavel Penev
905d46bd99 Merge pull request #9723 from evgeniysergeev/fix_sprite
flip or mirror sprites with negative width and height
2015-10-26 01:31:15 +02:00
Pavel Penev
5f7ecbe0af Merge pull request #9767 from obrakmann/fix-cnc-plane-max-pitch
Change aircraft's maximum pitch in TD to match the increased cruise altitude
2015-10-26 01:21:19 +02:00
Pavel Penev
b16ebd480b Rename MapGridType.Diamond to MapGridType.RectangularIsometric 2015-10-26 00:42:30 +02:00
Pavel Penev
0e417a3cf3 Rename MapGridType.Rectangle to MapGridType.Rectangular 2015-10-26 00:41:26 +02:00
Pavel Penev
bb3aea338a Rename enum TileShape to MapGridType 2015-10-26 00:41:21 +02:00
Pavel Penev
84db36d3e8 Check HVA files validity at load time 2015-10-26 00:25:28 +02:00
RoosterDragon
36a1715e5c Ensure replays end when the recorder disconnects.
When ReplayConnection fixes up disconnection packets, this allows the game to continue past the point of a player disconnecting. Unfortunately this also applies to the player who actually disconnected which means the replay continues in an invalid manner. To fix this - we now explicitly don't replace their packet in order to ensure such replays end at the correct time.
2015-10-25 21:22:44 +00:00
RoosterDragon
0ca1805ea7 Merge pull request #9389 from Herve-M/fix-replay
Fix replay freeze
2015-10-25 21:20:11 +00:00
Oliver Brakmann
744d66955a Merge pull request #9749 from RoosterDragon/delay-toctou-fixes
Fix TOCTOU issues when calling Game.RunAfterDelay
2015-10-25 21:16:15 +01:00
RoosterDragon
7c889c5ef0 Fix TOCTOU issues when calling Game.RunAfterDelay.
Since the action runs after a delay, the state of the game may no longer be the same and it may no longer be valid to run the action. Anything that references the world now calls IsCurrentWorld to ensure the world hasn't changed or been disposed.
2015-10-25 19:44:21 +00:00
Oliver Brakmann
8eb2a380f7 Change aircraft's maximum pitch in TD to match the increased cruise altitude 2015-10-25 20:01:55 +01:00
abcdefg30
d10dd5c9d9 Merge pull request #9758 from reaperrr/fix-barrel-seldeco
Fix #9751 - Replace Selectable with CustomSelectionSize on RA barrels
2015-10-25 18:51:02 +01:00
abcdefg30
f5ab218c4f Merge pull request #9766 from obrakmann/fix-d2k-missing-replaybrowser
Add replaybrowser yaml file back to d2k manifest.
2015-10-25 18:43:58 +01:00
atlimit8
10aca92bef Merge pull request #9720 from penev92/fixUtility
Fix a crash in CheckPlayers when an actor doesn't define an Owner
2015-10-25 12:41:50 -05:00
Matthias Mailänder
e0dffe773c Merge pull request #9550 from clemty/gdi06
Add gdi06
2015-10-25 18:27:33 +01:00
Matthias Mailänder
d4016ae6f0 Merge pull request #9716 from teees/hover-fix
Disable hovering for landed aircraft
2015-10-25 18:01:29 +01:00
Oliver Brakmann
356b50fb18 Add replaybrowser yaml file back to d2k manifest. 2015-10-25 18:00:02 +01:00
reaperrr
bdfbbb540b Misc D2k visibility changes
- Make structure reveal range centered around CenterPosition.
- Change camera range
2015-10-25 17:38:00 +01:00
reaperrr
2c88015bb3 Change D2k vehicle shroud reveal ranges to original values 2015-10-25 17:37:59 +01:00
reaperrr
3ce670998a Change D2k shroud reveal ranges to original values 2015-10-25 17:37:57 +01:00
reaperrr
63aeb6b2d5 Change D2k infantry shroud reveal ranges to match original 2015-10-25 17:37:55 +01:00
Matthias Mailänder
86ddcf05a1 Merge pull request #9764 from Biofreak1987/fix_soviet06
Fix unit production in soviet06
2015-10-25 17:37:31 +01:00
reaperrr
7d3905ca53 Move musicplayer, spawnpoint and strategic point UI art to button.png
Migrate strategic points to new spawnpoint art.
2015-10-25 17:00:29 +01:00
Pavel Penev
0487ec0d08 Fix a crash in CheckPlayers when an actor doesn't define an Owner 2015-10-25 17:11:51 +02:00
Pavel Penev
06ba175fde Merge pull request #9762 from obrakmann/fix7926_fix_td_sams_not_closing
Fix TD SAM sites not closing after killing a target.
2015-10-25 16:12:37 +02:00
atlimit8
7c1e93a880 Merge pull request #9730 from r34ch/fake-structures-detonate
Fake structures detonate to mask health difference.
2015-10-25 09:12:02 -05:00
Biofreak1987
454ac1edaf Fix soviet06 unit production 2015-10-25 14:55:56 +01:00
reaperrr
02fcdb80d6 Re-increase siege tank and grenadier area of effect
Siege Tank:
- 'Stretches' each Spread step by 1 pixel (from 12 to 13), increasing total area of effect from 48 pixels (1.5 cells) to 52 pixels (1.625 cells)
- increases falloff damage by 5 percentage points

Grenadier:
- same Falloff as Siege Tank
2015-10-25 14:05:23 +01:00
reaperrr
fa29b16967 Skip DoImpact if actor has no Health trait 2015-10-25 13:23:21 +01:00
DArcy Rush
60ad19b625 Fake structures use 'DamageThreshold' under 'Explodes'.
This change means that fake structures take damage at the same
rate as their real counterparts, but explode at 90% of their
max health.

MSLF and PDOF have been given a health buff as only one fake
version of each can be built.

Also fixed mission Monster Tank Madness. Actor v19.Husk required
HealthInfo.
2015-10-25 11:51:27 +00:00
Pavel Penev
82144ce975 Merge pull request #9738 from abcdefg30/loadimport
Fix the legacy map importer not working
2015-10-25 13:41:29 +02:00
Oliver Brakmann
3d4500a86e Fix TD SAM sites not closing after killing a target.
This fix will not make the SAM close if the target is still alive and got out of range.
2015-10-25 12:40:09 +01:00
reaperrr
92c05912e1 Remove negligible stages from default warhead Falloff
- reduces situations where infantry goes prone even though the impact was rather far away and damage absolutely negligible
- saves a little bit of performance by reducing the total area of effect, resulting in lower average number of calls to Health.InflictDamage at a given Spread value
2015-10-25 11:55:47 +01:00
abcdefg30
7210883e71 Merge pull request #9754 from atlimit8/LuaArraysToTables
Convert Lua array-like structures to use named entries.
2015-10-25 11:43:13 +01:00
Paul Chote
68bdedb9ba Make the production exit wait uncancellable. 2015-10-25 10:41:17 +00:00
reaperrr
80e6e024d8 Replace Selectable with CustomSelectionSize on RA barrels
This still allows targeting them, but you neither see their health bar on mouse-over, nor can you select them (effectively making their health bar and selection box invisible).
2015-10-25 10:01:14 +01:00
Matthias Mailänder
8e6c5cef74 Merge pull request #9757 from Biofreak1987/add_to_authors
Add myself to AUTHORS
2015-10-25 09:22:00 +01:00
reaperrr
1c98dc9a62 Remove SpiceExplosion impact sound
Way too annoying, and the original didn't have this either.
2015-10-25 09:16:20 +01:00
reaperrr
fe85458dde Fix animations and sounds of explosions
Animation for small and medium explosion was reversed, sounds were wrong compared to original.
2015-10-25 09:15:36 +01:00
reaperrr
943e43a738 Remove unnecessary D2k ValidTargets entries 2015-10-25 09:15:35 +01:00
reaperrr
2a6a46f120 Remove redundant 100% versus values from D2k warheads 2015-10-25 09:15:34 +01:00
reaperrr
064a008f3e Make D2k bazooka and quad rocket more inaccurate 2015-10-25 09:15:33 +01:00
reaperrr
64b4e92ab2 Tweaked D2k warhead falloffs 2015-10-25 09:15:32 +01:00
Biofreak1987
f02d87fa35 Add myself to AUTHORS 2015-10-25 09:15:15 +01:00
atlimit8
128574723a Merge pull request #9753 from RoosterDragon/better-actor-lookups
Improve some actor queries
2015-10-25 02:38:21 -05:00
Matthias Mailänder
40a7ab5a6a Merge pull request #9628 from abcdefg30/luatime
Fix Utils.FormatTime not working properly on different game speeds
2015-10-25 07:49:01 +01:00
Matthias Mailänder
3dc765f7c1 Merge pull request #9744 from pchote/serverbrowser
Redesign the MP server browser.
2015-10-25 07:32:04 +01:00
Matthias Mailänder
83399277b5 Merge pull request #9717 from teees/emp-disable-extensions
Let emp effect buildings and cyborgs too
2015-10-25 07:20:26 +01:00
atlimit8
f79ac636f2 Convert Lua array-like structures to use named entries 2015-10-25 00:36:04 -05:00
RoosterDragon
30aee56d78 Improve some actor queries.
Use ActorsWithTrait if possible to avoid querying all actors in the world.
2015-10-25 01:19:29 +01:00
DArcy Rush
c0850e44f4 Explodes trait has new 'DamageThreshold' property.
An actor will explode when its health is below the
defined percentage of its max health.
2015-10-24 23:02:42 +01:00
abcdefg30
e65465c539 Fix Utils.FormatTime not working properly on different game speeds 2015-10-24 23:42:32 +02:00
Paul Chote
e0177d7798 Merge pull request #9494 from abcdefg30/luabackground
Add lua support for playing background music
2015-10-24 22:25:35 +01:00
Paul Chote
be37717e6d Account for cross-mod tile shapes in map previews. 2015-10-24 22:02:46 +01:00
Paul Chote
c0f42904f0 Overhaul the server browser. 2015-10-24 21:58:31 +01:00
Paul Chote
2a210a7314 Fix some lobby yaml nits. 2015-10-24 21:38:09 +01:00
Paul Chote
c87c2270ca Merge pull request #9668 from abcdefg30/balanceRA
RA-Balance changes for the next playtest
2015-10-24 21:16:52 +01:00
Oliver Brakmann
c62d1a395b Merge pull request #9748 from pchote/map-metadata-lint
Add a lint pass for map format/author/title.
2015-10-24 22:13:49 +02:00
Paul Chote
347eb6410c Add a lint pass for map metadata. 2015-10-24 20:36:38 +01:00
Paul Chote
f425323965 Merge pull request #9702 from reaperrr/d2k-airspeed
Increase D2k aircraft speed
2015-10-24 20:35:19 +01:00
abcdefg30
90968022cb Merge pull request #9703 from reaperrr/fix-tanya9673
Fix Tanya's Colt targeting buildings
2015-10-24 21:21:03 +02:00
abcdefg30
caaa779da4 Merge pull request #9736 from obrakmann/fix9693_lua-attack-broken
Fix broken scripted attacks in some missions
2015-10-24 21:18:45 +02:00
Oliver Brakmann
63c687cdce Merge pull request #9746 from matija-hustic/missile_submarine
Revert missile explosion condition to strictly less than zero
2015-10-24 20:11:50 +02:00
Matija Hustić
8f4543c1e1 Changed TD Advanced Guard Tower's firing height 2015-10-24 19:54:36 +02:00
RoosterDragon
bf7aace592 Merge pull request #9714 from Phrohdoh/fix_9713
Fix misleading Utility message.
2015-10-24 18:22:55 +01:00
Matija Hustić
7ca8d85771 Revert explosion condition to strictly less than zero 2015-10-24 18:20:18 +02:00
reaperrr
663de1a6ea Merge pull request #9731 from obrakmann/fix9647_9727_remove_tesla_boost_from_ra
Remove tesla boost from RA
2015-10-24 12:33:57 +02:00
reaperrr
b5cdde6c5d Fix RA building TargetTypes 2015-10-24 08:45:30 +02:00
Taryn Hill
9ab5eacdee Cache the command entered in a variable in Utility.Program.cs for easier reading. 2015-10-23 20:55:18 -05:00
Taryn Hill
780f905959 Fix misleading Utility message
We were reporting that the entered command did not exist
by assuming that any ArgumentException indicated this.

Now we will throw and catch a NoSuchCommandException.
2015-10-23 20:55:13 -05:00
abcdefg30
69496c2f16 Fix the legacy map importer not working 2015-10-24 00:59:14 +02:00
Oliver Brakmann
42d2e016ed Fix broken scripted attacks in some missions
In all three cases, the failure came down to the targets not being declared as enemies to the attackers.

Recent changes to the attack code made it impossible to attack friendly or neutral things with the Lua API's Attack() method. Changing the allegiance of affected parties fixed it, or, in the case of Soviet 02a, using force-attack.
2015-10-24 00:36:09 +02:00
Oliver Brakmann
6420a6ec8a Allow force-attacking things with the Lua API's Attack() method 2015-10-24 00:27:23 +02:00
abcdefg30
f6d1e51050 Merge pull request #9708 from r34ch/chronotank-extra-bar
Charge now using ticks and fixed extra bar time formula.
2015-10-23 23:29:20 +02:00
DArcy Rush
1e2101fab9 Add an upgrade rule. 2015-10-23 22:22:55 +01:00
Oliver Brakmann
206f644949 Merge pull request #9672 from penev92/fixAutoTarget
Fix a series of visibility/targeting bugs
2015-10-23 20:53:03 +02:00
Oliver Brakmann
9c75079b2e Remove tesla boost from RA 2015-10-23 19:51:39 +02:00
abcdefg30
fcd27707d7 Merge pull request #9705 from reaperrr/misc-cleanup
Misc yaml formatting cleanup
2015-10-23 14:38:44 +02:00
abcdefg30
60d7880b77 Merge pull request #9719 from penev92/d2kTimer
Bring back the observer clock for D2k
2015-10-23 14:29:57 +02:00
abcdefg30
ff02644ea1 Merge pull request #9725 from atlimit8/InvalidOperationException-to-YamlException-in-Warhead-RulesetLoaded
Replace InvalidOperationException with YamlException in SpreadDamageWarhead
2015-10-23 14:11:21 +02:00
atlimit8
6992decad0 InvalidOperationException => YamlException in SpreadDamageWarhead 2015-10-23 02:37:39 -05:00
reaperrr
d0c9d743cf Merge pull request #9722 from teees/cursor-fix
use right cursor for ion and nuke
2015-10-23 09:04:52 +02:00
teees
43eda007d6 disable buildings and cyborgs with emp 2015-10-23 08:52:41 +02:00
teees
dfb1c7a357 shutdown power when buildings get emp disabled 2015-10-23 08:52:40 +02:00
atlimit8
173f85319a Merge pull request #9715 from teees/mouseovereditor
Show owner and faction of units in map editor tooltips
2015-10-22 20:10:33 -05:00
atlimit8
7de98ad6d8 Merge pull request #9635 from RoosterDragon/occupy-space-perf
Speed up checks for IOccupySpace trait
2015-10-22 18:28:57 -05:00
Pavel Penev
35b926705c Bring back the observer clock for D2k 2015-10-23 01:04:49 +03:00
Pavel Penev
a69f26b705 Fix players being able to manually attack invisible structures 2015-10-23 00:27:46 +03:00
Pavel Penev
000c701414 Fix actors ignoring Disguise 2015-10-23 00:27:43 +03:00
Pavel Penev
8c7bdae617 Fix AutoTarget acquiring targets under fog/shroud 2015-10-23 00:27:42 +03:00
RoosterDragon
b30fc2c725 Merge pull request #9696 from RoosterDragon/vs-sln
Allow VS2015 to format solution file
2015-10-22 21:04:01 +01:00
Oliver Brakmann
b739151eaf Merge pull request #9711 from penev92/fixMapEditor
Fix D2kEditorResourceLayer starting NetWorth
2015-10-22 19:56:57 +02:00
evgeniysergeev
907df4800a flip or/and mirror sprites with negative width and heigth 2015-10-22 20:53:15 +03:00
abcdefg30
ac95dc65dd Clean SONAR up 2015-10-22 17:21:44 +02:00
abcdefg30
64931db796 Add camera.spyplane and let camera.paradrop inherit CAMERA 2015-10-22 17:21:43 +02:00
abcdefg30
234796ef6f Remove ProximityCaptor from CAMERA and camera.paradrop 2015-10-22 16:46:22 +02:00
abcdefg30
6eb5dcb6cf Remove DetectCloaked from CAMERA 2015-10-22 16:43:12 +02:00
abcdefg30
7c2d3682b0 Reduce the range of FLAK-23 from 8c0 to 6c0 2015-10-22 16:43:11 +02:00
abcdefg30
f675c17640 Remove junk values (5c0 is the default) 2015-10-22 16:43:11 +02:00
abcdefg30
1a7a184730 Add cloak to HIJACKER 2015-10-22 16:43:10 +02:00
abcdefg30
065386f134 Increase Crushable: WarnProbability: to 95 for HIJACKERs 2015-10-22 16:43:09 +02:00
abcdefg30
3f7a65e1bc Reduce chinook sight range 2015-10-22 16:43:08 +02:00
teees
326f82242d use right cursor for ion and nuke 2015-10-22 14:40:00 +02:00
reaperrr
f7b8eaf1ac Add height visualization to CombatDebugOverlay 2015-10-22 13:21:57 +02:00
reaperrr
c1b805ce42 Lower TS wall blocking height
Allows Tick Tanks to shoot over them from certain angles/distances, like in the original.
2015-10-22 12:19:43 +02:00
reaperrr
9b2cdd4457 Add Height property to BlocksProjectiles 2015-10-22 12:19:42 +02:00
teees
9292219d3b hover only when airborne 2015-10-22 10:30:33 +02:00
teees
36753b5d99 change hovers trait to be upgradeable 2015-10-22 10:29:26 +02:00
teees
f9c3446849 Added owner name and faction to map editor tooltips 2015-10-22 09:43:06 +02:00
teees
7f96ee4589 Multi line simple tooltips 2015-10-22 09:42:50 +02:00
Pavel Penev
f7a63ab2f8 Fix D2kEditorResourceLayer starting NetWorth 2015-10-22 01:10:16 +03:00
Pavel Penev
ccddc37c08 Merge pull request #9701 from pchote/widget-baseclass
Add a common ChromeLogic base class and lint verification.
2015-10-22 00:39:43 +03:00
Oliver Brakmann
a0816b7dea Merge pull request #9692 from pchote/lobby-irc
Integrate global chat with the lobby.
2015-10-21 21:04:54 +02:00
Paul Chote
8e59c4a106 Make the lobby buttons consistent across mods. 2015-10-21 19:38:28 +01:00
Paul Chote
fa2b10b269 Integrate global chat with the server lobby. 2015-10-21 19:38:28 +01:00
Paul Chote
3d7d7ff2a5 Allow chrome yaml to define disabled text fields. 2015-10-21 19:38:28 +01:00
Paul Chote
d6c75844bf Add a lint pass to check chrome logic validity. 2015-10-21 19:35:35 +01:00
Paul Chote
b6f463729b Add a ChromeLogic base class for chrome logic. 2015-10-21 19:35:35 +01:00
Pavel Penev
f68da6ada7 Small refactoring to AutoTarget
- Move a check for AutoTargetIgnore up the chain
 - Simplify some LINQs to a single .FirstOrDefault()
 - Rename local variable
2015-10-21 21:09:26 +03:00
atlimit8
1e890a921f Merge pull request #9709 from reaperrr/unitsat-actorsat
Rename ActorMap *UnitsAt* occurences to *ActorsAt*
2015-10-21 09:56:41 -05:00
DArcy Rush
0111f0d750 Charge now using ticks and fixed extra bar time formula.
ChargeTime has been changed to ChargeDelay and is
measured in ticks rather than seconds.

The formula for working out the extra bar time has
been fixed to work properly at different charge delays.
2015-10-21 12:08:44 +01:00
atlimit8
5f3d735864 Merge pull request #9700 from r34ch/chronotank-extra-bar
Use support power like charge bar for Chronotank instead of pips.
2015-10-21 03:32:59 -05:00
reaperrr
78def7330e Make TS laser weapon names more descriptive and remove comments 2015-10-21 10:07:50 +02:00
reaperrr
5615719d28 Fix WithMuzzleOverlay upgrade rule to properly cover cases with @ separator 2015-10-21 10:07:49 +02:00
reaperrr
8e6d5bd603 Misc yaml formatting/style fixes 2015-10-21 10:07:48 +02:00
reaperrr
1a08e6de77 Add Music trait to maps (applied upgrade rule) 2015-10-21 08:20:48 +02:00
Pavel Penev
8c32f7ff9f Merge pull request #9697 from RoosterDragon/irc-no-force-copy
Don't force SmarIrc4net to be copied to output
2015-10-21 07:58:57 +03:00
reaperrr
6f2292d14b Increase D2k aircraft speed 2015-10-21 06:55:31 +02:00
DArcy Rush
ecccc8bc68 Chronotank uses extra bar when charging.
The two blue pips have been replaced by
a magenta charge bar.
2015-10-20 23:14:08 +01:00
RoosterDragon
983032205f Merge pull request #9593 from huwpascoe/HealthTrait
Moved Health to OpenRA.Mods.Common
2015-10-20 20:59:04 +01:00
RoosterDragon
557731bc6b Don't force SmarIrc4net to be copied to output.
Instead, it will be implicitly included since it is a reference. This avoids pulling in the documentary .xml file.
2015-10-20 20:06:44 +01:00
Oliver Brakmann
03e47a9cb7 Merge pull request #9682 from pchote/polish-mapchooser
Polish mapchoosers
2015-10-20 20:38:07 +02:00
RoosterDragon
9049ae7bfc Allow VS2015 to format solution file. 2015-10-20 19:17:24 +01:00
Oliver Brakmann
a547f55c6f Merge pull request #9646 from matija-hustic/missile_fixup
Temporary fix for missiles launched from zero height
2015-10-20 20:16:59 +02:00
Pavel Penev
dc47288ce2 Merge pull request #9695 from RoosterDragon/fix-sln
Fix solution file
2015-10-20 21:14:35 +03:00
RoosterDragon
7448093b12 Fix solution file. 2015-10-20 19:08:05 +01:00
Oliver Brakmann
72a0f7e69c Merge pull request #9633 from Mailaender/movement-class-logs
Added the movement classes of the domain index to the debug logs
2015-10-20 20:01:10 +02:00
Pavel Penev
11210109f4 Merge pull request #9675 from abcdefg30/missionprefixes
Remove the prefixes of all red alert missions
2015-10-20 17:05:32 +03:00
abcdefg30
7d97f22f11 Merge pull request #9681 from pchote/fix-d2k-refinery
Fix D2K refinery flames.
2015-10-19 21:49:14 +02:00
abcdefg30
30e03b5d0b Align the titles of all ra missions 2015-10-19 21:40:13 +02:00
Paul Chote
f53cdbfb35 Polish RA map chooser. 2015-10-19 18:36:37 +01:00
Paul Chote
9c3d278853 Polish TD map chooser. 2015-10-19 18:02:14 +01:00
Paul Chote
8c50f444ec Fix refinery flame animation. 2015-10-19 17:54:05 +01:00
Paul Chote
a9424d0fa7 Hide the docking animation when it is not active. 2015-10-19 17:43:27 +01:00
abcdefg30
b64e4886a7 Remove the prefixes of all red alert missions 2015-10-18 21:59:07 +02:00
Matthias Mailänder
ec56d2ec88 Merge pull request #9674 from OpenRA/fixFremen
Fix a typo on the Fremen Select voices
2015-10-18 21:47:16 +02:00
Pavel Penev
fd577f4b7c Fix a typo on the Fremen Select voices 2015-10-18 22:24:14 +03:00
abcdefg30
919ba7762c Merge pull request #9657 from Biofreak1987/soviet-06b
Add soviet-06b
2015-10-18 21:19:45 +02:00
Biofreak1987
4b7f5f2c1f Add soviet-06b 2015-10-18 21:12:57 +02:00
clemty
2dfa39bdfb Add gdi06 2015-10-18 21:01:11 +02:00
abcdefg30
ce95ff074a Add checks for missing music tracks 2015-10-18 20:43:47 +02:00
abcdefg30
0c373cc8c4 Remove an unused using 2015-10-18 20:43:46 +02:00
abcdefg30
4afef8868e Add lua support for playing background music 2015-10-18 20:43:45 +02:00
abcdefg30
76ada5176f Merge pull request #9656 from Biofreak1987/soviet-06a
Add soviet-06a
2015-10-18 20:26:25 +02:00
Biofreak1987
7fcde4a7c9 Add soviet-06a 2015-10-18 20:17:44 +02:00
Oliver Brakmann
27e898f4ee Merge pull request #9512 from abcdefg30/atreides02b
Add atreides02b
2015-10-18 20:07:18 +02:00
abcdefg30
8caa5511c3 Fix the Enemies: entries in all d2k missions 2015-10-18 19:53:41 +02:00
abcdefg30
6eb4ba2a7c Add bricks to the harkonnen base in atreides02a 2015-10-18 19:53:40 +02:00
abcdefg30
7347278d79 Add atreides02b.lua to OpenRA.sln 2015-10-18 19:53:40 +02:00
abcdefg30
2467c3a76f Fix the description of atreides02a 2015-10-18 19:53:39 +02:00
abcdefg30
08ee4fe02d Adjust the descriptions of the atreides01 missions 2015-10-18 19:53:38 +02:00
abcdefg30
4cc73ab9a7 Add atreides02b 2015-10-18 19:53:37 +02:00
Matthias Mailänder
742aa01284 Merge pull request #9666 from pchote/fix-startingmusic-clash
Fix map StartingMusic overriding BackgroundMusic initialization.
2015-10-18 19:36:39 +02:00
Oliver Brakmann
c1dda97836 Merge pull request #9586 from pchote/irc-common
Overhaul IRC in preparation for the global chat UI
2015-10-18 19:31:07 +02:00
abcdefg30
674b1672f5 Merge pull request #9488 from atlimit8/MapMusic
Map Music
2015-10-18 17:47:26 +02:00
atlimit8
63513af027 Load music after mounting map 2015-10-18 09:53:39 -05:00
atlimit8
90bdeb1e92 Move external Fort Lonestar assets into map directory 2015-10-18 09:53:39 -05:00
Oliver Brakmann
d216362a56 Merge pull request #9655 from Biofreak1987/soviet-02b
Add soviet-02b
2015-10-18 14:47:36 +02:00
Biofreak1987
dc90a35aa0 Add soviet-02b 2015-10-18 14:41:07 +02:00
abcdefg30
f4d937094d Merge pull request #9664 from reaperrr/td-aggreg-seq
Use aggregate sequences for all TD flame/chem muzzles
2015-10-18 12:37:45 +02:00
Pavel Penev
9d76c61b8b Merge pull request #9660 from abcdefg30/factionalign
Fix the faction in the lobby being misaligned
2015-10-18 12:57:40 +03:00
Paul Chote
fb631367ea Fix map StartingMusic overriding BackgroundMusic. 2015-10-18 09:56:12 +01:00
Matthias Mailänder
b14f5ca608 Merge pull request #9661 from pchote/editor-preview-fix
Update the UID stored in the map file after saving.
2015-10-18 08:27:22 +02:00
reaperrr
48babec519 Use aggregate sequences for all TD flame/chem muzzles 2015-10-18 03:23:05 +02:00
reaperrr
380f30ed13 Merge pull request #9547 from pchote/aggregate-sequences
Add support for aggregate sequences
2015-10-18 02:23:23 +02:00
Pavel Penev
6c94eef763 Merge pull request #9662 from reaperrr/color_remap2
Fix hardcoded player color ramp Lerp
2015-10-18 02:29:56 +03:00
reaperrr
51aca8de9a Fix hardcoded player color ramp Lerp 2015-10-18 01:21:59 +02:00
reaperrr
d2f656737b Merge pull request #9654 from evgeniysergeev/color_remap
fix player color remap to handle RemapIndex: with any number of entri…
2015-10-18 01:05:11 +02:00
Paul Chote
cf875c3db6 Update the UID stored in the map file after saving. 2015-10-17 23:25:52 +01:00
Pavel Penev
3db724e6dd Merge pull request #9640 from abcdefg30/luaSLN
Add the missing lua files to OpenRA.sln
2015-10-18 01:11:31 +03:00
abcdefg30
e76bb593a2 Fix the faction in the lobby being misaligned 2015-10-18 00:01:00 +02:00
abcdefg30
4daf22e759 Merge pull request #9634 from pchote/fix-bridge-huts
Fix bridge destruction and repair.
2015-10-17 23:51:14 +02:00
Paul Chote
940bc310c3 Use aggregate sequences for TD flame muzzle. 2015-10-17 22:50:22 +01:00
Paul Chote
9ce8544e34 Add support for aggregate sequences. 2015-10-17 22:50:22 +01:00
abcdefg30
bc9abdb3db Merge pull request #9476 from pchote/depthbuffer
Make the TS terrain depth data available for use by shaders.
2015-10-17 23:45:31 +02:00
abcdefg30
501a965c63 Add the missing lua files to OpenRA.sln 2015-10-17 23:38:49 +02:00
abcdefg30
5cc69d7877 Rename some lua files 2015-10-17 23:38:47 +02:00
Paul Chote
83949b250a Add a visualisation mode for depth sprites.
For now this displays the raw sprites.  It will
eventually be repurposed for rendering the proper
depth data.
2015-10-17 22:35:47 +01:00
Paul Chote
b08adbeb61 Add support for boolean uniforms. 2015-10-17 22:35:47 +01:00
Paul Chote
3665d8f19b Send TS terrain depth data to the GPU. 2015-10-17 22:35:07 +01:00
Paul Chote
9a5483fea7 Send TS terrain depth data to the GPU. 2015-10-17 22:34:46 +01:00
Paul Chote
d5fd8e5828 Use varyings for masks instead of overloading gl_TexCoord. 2015-10-17 22:28:19 +01:00
Paul Chote
e819ff832b Record the SheetType in each Sheet. 2015-10-17 22:28:19 +01:00
Matthias Mailänder
8d0d789e40 fix bridge hut selection priority 2015-10-17 22:23:44 +01:00
Paul Chote
4226370495 Fix bridge destruction and repair. 2015-10-17 22:23:44 +01:00
Paul Chote
a3fe2b3d35 Overhaul the IRC implementation.
* Simplified UI plumbing.
* Improves handling of errors and kicks.
* Persists chat history between session.
* Fixes leaks of the old widget tree when exiting.
* A few small UI polish improvements.
2015-10-17 22:13:22 +01:00
Paul Chote
386f252736 Implement ObservableList collection. 2015-10-17 22:13:22 +01:00
Paul Chote
4ba78f65b9 Add Dispose support to widget logic objects. 2015-10-17 22:13:22 +01:00
evgeniysergeev
0830e4a2c0 fix player color remap to handle RemapIndex: with any number of entries, not only 16 colors 2015-10-17 22:47:03 +03:00
Matthias Mailänder
426e187a4c Merge pull request #9515 from Biofreak1987/soviet03
Add soviet03
2015-10-17 17:05:20 +02:00
Matthias Mailänder
eab5e474cb Merge pull request #9637 from abcdefg30/newTDdelay
Reduce InitialSpawnDelay for crates in TD
2015-10-17 15:15:54 +02:00
Biofreak1987
628e75d484 Add Soviet03 2015-10-17 12:46:25 +02:00
Matthias Mailänder
66a2512c21 Merge pull request #9638 from JoppyFurr/bleed
Change mouse cursors while joystick scrolling
2015-10-17 09:07:56 +02:00
reaperrr
5778d1621a Merge pull request #8987 from Mailaender/spiceblooms
Added spice blooms
2015-10-16 19:38:21 +02:00
Pavel Penev
3abf2af9ff Merge pull request #9649 from r34ch/balance-mcv-crate
Balance mcv crate
2015-10-16 18:41:56 +03:00
DArcy Rush
2cc3cafdd2 Rebalance MCV crate in TS mod
Completely removes the chance of getting an MCV from a crate
in the TS mod unless the player has no base remaining.
2015-10-16 16:23:17 +01:00
DArcy Rush
e6417abb51 Rebalance MCV crate in RA mod
Completely removes the chance of getting an MCV from a crate
in the RA mod unless the player has no base remaining.
2015-10-16 16:22:37 +01:00
abcdefg30
d5a6d9949c Remove the now unnecessary InitialSpawnDelay: 0 from the dropzone maps 2015-10-16 14:44:48 +02:00
abcdefg30
7624256001 Set InitialSpawnDelay to 0
and set the value to 1500 in the default mods.
2015-10-16 14:42:11 +02:00
Matija Hustić
5fe7c4af4d Temporary fix for missiles launched from zero height 2015-10-16 10:22:58 +02:00
Pavel Penev
8cbb132764 Merge pull request #9644 from hypercube33/patch-1
Update gdi-vehicles.yaml
2015-10-16 10:32:42 +03:00
hypercube33
093aea81c4 Update gdi-vehicles.yaml 2015-10-15 20:40:33 -05:00
Joppy Furr
6ded247d0c Change mouse cursors while joystick scrolling
This patch adds mouse cursors to the joystick scrolling feature.

On Tiberian Sun, which itself had joystick scrolling, the same cursors are
used as in the original game.

As the older games did not have joystick scrolling, I've had to make a
best-effort guess as to what were suitable cursors.
  -> When scrolling in all directions is available, the default arrow
     cursor is used.
  -> When a direction is blocked, the edge-scrolling blocked direction
     cursor is used.
2015-10-16 11:53:53 +13:00
reaperrr
2f69711341 Rename ActorMap *UnitsAt* occurences to *ActorsAt*
These enumerate actors in general, not just mobile actors (which the term 'unit' usually refers to).
2015-10-16 00:07:06 +02:00
abcdefg30
cd62873003 Add team chat for spectators 2015-10-15 16:20:17 +02:00
abcdefg30
db37b14392 Minor code (style) cleanup 2015-10-15 15:05:17 +02:00
abcdefg30
fd37869a88 Merge pull request #9636 from RoosterDragon/ai-mcv-perf
Remove a redundant check
2015-10-15 12:21:49 +02:00
RoosterDragon
a4338d9350 Remove a redundant check in FindAndDeployBackupMcv.
This avoids enumerating the mcvs twice.
2015-10-14 21:06:37 +01:00
RoosterDragon
262ab408b5 Speed up checks for IOccupySpace trait.
Eagerly load the trait (if it exists) in Actor, and use this reference to avoid having to perform self.Info.HasTraitInfo<IOccupySpaceInfo>() checks.
2015-10-14 20:46:15 +01:00
Matthias Mailänder
e0fa63ae19 also mention the movement class of the domain index in logs 2015-10-14 20:34:20 +02:00
abcdefg30
4432c071cc Fix aircraft repulsing other aircraft when not being repulsable themselves 2015-10-13 21:48:38 +02:00
RoosterDragon
210c7e312b Don't keep mix files in memory.
Added SegmentStream class to assist in maintaining views into portions of the FileStream of the overall mix file to avoid having to copy sections into in-memory buffers.
2015-10-13 19:23:56 +01:00
Oliver Brakmann
410f121a1e Merge pull request #8717 from matija-hustic/missile
Some work on the missile projectile
2015-10-13 19:02:25 +02:00
Pavel Penev
b161c58bbc Merge pull request #9622 from DSUK/test_fix
Fixed TFD Installation.
2015-10-13 10:48:42 +03:00
Pavel Penev
d070971272 Merge pull request #9618 from abcdefg30/cncplanes
Increase planes' CruiseAltitude in cnc
2015-10-13 09:52:52 +03:00
James
5000369463 Fixed TFD Not Creating Install Directory 2015-10-12 19:52:49 +01:00
James
b071bcf28c Added myself to AUTHORS 2015-10-12 19:52:49 +01:00
Kevin Azzam
96c0c2dec6 Make ctrl+x cut to clipboard 2015-10-12 18:58:26 +02:00
abcdefg30
5242bc88f7 Increase planes' CruiseAltitude in cnc 2015-10-12 17:26:28 +02:00
Huw Pascoe
c95fc793e4 Moved Health trait to OpenRA.Mods.Common
In preparation for custom hitboxes.
2015-10-12 01:56:00 +01:00
Huw Pascoe
5a81d5dfa7 Created IHealth interface and cleanup.
To decouple the Health trait from OpenRA.Traits.
DisplayHp renamed to DisplayHP and HealthExts moved
moved next to Actor.Kill() for consistency.
2015-10-12 01:55:59 +01:00
Matija Hustić
cd8a15271c Downward lookahead.
Added downward lookahead capability.
2015-10-11 22:15:30 +02:00
Matija Hustić
12b4f8ccf4 Programatic YAML upgrade 2015-10-11 22:03:06 +02:00
Matija Hustić
b9e57d33c3 Added lookahead, launch speed & angle computation.
The missiles should be more intelligent, avoiding cliffs,
surmounting inclines and flexibly selecting appropriate
launch speed and angle to avoid a close incline or miss
a close target.
2015-10-11 22:02:02 +02:00
Matija Hustić
41f57f2a15 Missile projectile refactor.
Introduces:

Vertical rate of turn
Customizable vertical launch angle
Delayed activation of the homing mechanism / propulsion
Freefall while propulsion deactivated
Customizable explosion altitude (for airburst)
Customizable cruise altitude (when target out of range)
Height checks for terrain impact and shadow rendering
Acceleration (instead of constant speed from launch to impact)
2015-10-11 22:02:01 +02:00
Matthias Mailänder
a79b71c608 Merge pull request #9581 from matija-hustic/attackmove_defendstance
Gets AttackMove to work with 'Defend' stance
2015-10-11 21:28:35 +02:00
Matthias Mailänder
40eb7fa074 Merge pull request #9588 from pchote/fix-recoil
Fix sprite turret recoil.
2015-10-11 21:21:48 +02:00
abcdefg30
9e24d4ec79 Merge pull request #9590 from pchote/fix-debug-case
Fix debug menu terminology.
2015-10-11 20:45:13 +02:00
Herve-M
4366593b33 2 pass replay loader (fix freeze) close #6241 2015-10-11 20:21:19 +02:00
Matthias Mailänder
4437bce132 Merge pull request #9459 from reaperrr/d2k-power-misc
Change D2k power draw and various other aspects to match original
2015-10-11 19:48:41 +02:00
Matthias Mailänder
770afd520b let the crusher take damage on spice explosions 2015-10-11 19:30:28 +02:00
Matthias Mailänder
1887875413 make Devastators crush walls 2015-10-11 19:30:28 +02:00
Matthias Mailänder
c6eff7023a add spice blooms 2015-10-11 19:30:28 +02:00
Matthias Mailänder
f2663c18a3 add an empty sprite 2015-10-11 19:30:28 +02:00
Christopher Grant
246f85413f document ThrowsShrapnel 2015-10-11 19:30:24 +02:00
Matthias Mailänder
6107eb389b Merge pull request #9600 from abcdefg30/tanyadamage
Fix tanya not being able to damage barrels
2015-10-11 19:26:27 +02:00
Matija Hustić
1ba81d7c97 Fixes bad comment in UpgradeRules
https://github.com/OpenRA/OpenRA/pull/8768/files#r41694572
2015-10-11 19:23:10 +02:00
Matija Hustić
2a0a7541ba Gets AttackMove to work with 'Defend' stance 2015-10-11 19:23:08 +02:00
Christopher Grant
a378abe7c1 Moved RandomWalk to OpenRA.Traits.Util 2015-10-11 18:59:11 +02:00
reaperrr
5646f4118f Make D2k infantry no longer attract worms 2015-10-11 16:28:41 +02:00
reaperrr
0629cde10f D2k implement classic engineer capturing, reduce Fremen cloak delay, add cloak to Saboteur 2015-10-11 16:27:39 +02:00
reaperrr
efde2ab8ff Enable Carryall self-healing 2015-10-11 16:27:36 +02:00
reaperrr
a94b8f5f0c Enable self-healing on D2k MCV, Harvester and Devastator to match original
Additionally change harvester PipCount and Capacity to match original.
2015-10-11 16:27:35 +02:00
reaperrr
5d20a9e4f2 Tweak emitted infantry types of D2k construction yard 2015-10-11 16:27:34 +02:00
reaperrr
4292a05470 Tweak D2k barracks RallyPoint offset 2015-10-11 16:27:33 +02:00
reaperrr
6dd5e3b77a Reduce D2k wall line build range 2015-10-11 16:27:32 +02:00
reaperrr
e8defccd95 Remove stealth detection from D2k buildings 2015-10-11 16:27:30 +02:00
reaperrr
70163e9c86 Change D2k building power draw/output to original values 2015-10-11 16:27:29 +02:00
Oliver Brakmann
421b15cad1 Merge pull request #9562 from Biofreak1987/soviet07-fix
Fix early game over in soviet07
2015-10-11 15:43:26 +02:00
Oliver Brakmann
42b04b8a6f Merge pull request #9450 from atlimit8/SpreadDamageWarheadRangeOnRulesetLoaded
SpreadDamageWarhead Range on ruleset loaded
2015-10-11 15:28:19 +02:00
Oliver Brakmann
244093834c Merge pull request #9447 from atlimit8/CacheFireportsForAttackGarrisoned
Cache AttackGarrisoned fire ports using IRulesetLoaded
2015-10-11 15:26:38 +02:00
Oliver Brakmann
63d1158f94 Merge pull request #8563 from matija-hustic/tesla_boost
Tesla boost for RA2 mod
2015-10-11 14:33:13 +02:00
Biofreak1987
4e36ce2050 Soviet07 fix game over and add healthcrate
-Fix game over
-Add healthcrate
2015-10-11 14:32:51 +02:00
abcdefg30
6aa8f9772a Fix tanya not being able to damage barrels 2015-10-11 14:24:03 +02:00
abcdefg30
b0c1f95ef2 Merge pull request #9486 from reaperrr/fix-9403
Fix AI queueing structure build orders twice at higher game speeds due to lag
2015-10-11 13:51:02 +02:00
Kevin Azzam
a0bcfb6f35 Add a Lua wrapper to display debug messages (shows if setting enabled) 2015-10-11 13:13:31 +02:00
reaperrr
3711ef8eb5 Fix AI queueing build orders twice at higher game speeds due to lag
Fixes #9403.
2015-10-11 01:53:25 +02:00
Paul Chote
08df5b9d7d Fix the server reporting for Debug Menu. 2015-10-10 21:41:27 +01:00
Paul Chote
f40dea41d6 Fix capitalisation in Debug menu. 2015-10-10 21:38:53 +01:00
Paul Chote
7e1dfa96be Merge pull request #9584 from obrakmann/fix-d2k-sequence-crash
Fix case sensitivity issue in d2k sequence definitions
2015-10-10 20:46:11 +01:00
Paul Chote
6c0a4e0722 Merge pull request #9453 from reaperrr/d2k-cost
Change D2k Cost and CustomBuildValues to match original
2015-10-10 20:44:33 +01:00
Paul Chote
ad3714e9ec Merge pull request #9406 from reaperrr/d2k-weapon-offsets
Fixed D2k armament offsets and some cleanup
2015-10-10 20:34:02 +01:00
Paul Chote
8954ac585c Merge pull request #9442 from Mailaender/ai-world-check
Fixed AI bots trying to assign orders to units not in the world
2015-10-10 20:21:10 +01:00
Paul Chote
d70fbdf6ce Fix sprite turret recoil. 2015-10-10 19:31:28 +01:00
Matthias Mailänder
4579e8af06 don't let the AI assign orders to units not in the world 2015-10-10 19:06:20 +02:00
Matthias Mailänder
f1b1df1428 Merge pull request #9537 from penev92/fixLaunch
Fix crash when launching the game directly into a mod with missing assets
2015-10-10 18:59:19 +02:00
Matthias Mailänder
dd90d6929f Merge pull request #9567 from abcdefg30/soviet02ownerrow
Hide the owner row of FCOM
2015-10-10 18:50:57 +02:00
Matthias Mailänder
d677192bea Merge pull request #9578 from penev92/deployOnRamps
Add a CanDeployOnRamps property to DeployToUpgrade
2015-10-10 18:44:42 +02:00
Oliver Brakmann
a26e1a1d52 Fix case sensitivity issue in d2k sequence definitions
Game would crash on systems with case-sensitive filesystems when a support-power beacon appeared.
2015-10-10 14:19:02 +02:00
Kevin Azzam
fdf993ddda Reset cursor blinking after keyboard-activated cursor movement 2015-10-10 13:16:16 +02:00
Kevin Azzam
5e4ea69dbd Refactor TextFieldWidget into much clearer and extensible code 2015-10-10 00:50:33 +02:00
Kevin Azzam
96c30788b0 Add hotkeys for TextFieldWidget including:
- ctrl+left/ctrl+right (cmd on osx) (back/forward by a word)
- ctrl+backspace/ctrl+delete (alt on osx) (delete word)
- ctrl+k/ctrl+u (cmd+delete/cmd+backspace on osx) (delete line from cursor)
- ctrl+x (cmd on osx) (deletes line)
2015-10-09 23:56:19 +02:00
Matija Hustić
c55141c91c Enabled multiple timed upgrades from single source.
This makes the UpgradeManager support requests to grant a timed
upgrade multiple times from a single source.
GrantUpgradeWarhead modified to take advantage of this.
2015-10-09 22:41:23 +02:00
Matija Hustić
03c80fb9c6 Added tesla boost capabilities.
Shock troopers and tesla tanks standing near a tesla coil
will charge it up, enhancing its range, modifying the zap
animation and allowing it to work even when player's power
is down.
The sound for charger weapons edited from
https://www.freesound.org/people/JoelAudio/sounds/136542/
2015-10-09 22:41:21 +02:00
Pavel Penev
db609b12a0 Add a CanDeployOnRamps property to DeployToUpgrade 2015-10-09 17:15:54 +03:00
Pavel Penev
6e1f461e9b Move mod asset validation from BlankLoadScreen.StartGame() to Game.InitializeMod()
This fixes a crash that happens when you try to launch a mod directly while its assets aren't installed.
Additionally should reduce the overhead for dedicated servers (in theory).
2015-10-09 12:34:58 +03:00
Pavel Penev
50679cd6c4 Merge pull request #9576 from obrakmann/fix-broken-infiltration
Fix inverted TargetTypes test in Infiltrates order resolution logic
2015-10-09 01:37:32 +03:00
Oliver Brakmann
6274f2a47e Merge pull request #8768 from matija-hustic/attackbase_refactor
Some work on Attack*
2015-10-08 21:56:22 +02:00
Oliver Brakmann
d741c86ed8 Merge pull request #9549 from pchote/lobby-music
Add a music player to the game lobby.
2015-10-08 21:40:04 +02:00
Oliver Brakmann
784f2425bf Fix inverted TargetTypes test in Infiltrates order resolution logic 2015-10-08 21:21:15 +02:00
Matthias Mailänder
d199ba5048 Merge pull request #9520 from obrakmann/make-scroll-keys-remappable
Add hotkey configuration for scroll keys
2015-10-08 20:15:55 +02:00
Matthias Mailänder
1318a11ed2 Merge pull request #9551 from clemty/editorwindow
Editor: Increase size of editor tile/actor list widget
2015-10-08 20:05:23 +02:00
abcdefg30
4db2704f45 Merge pull request #9568 from reaperrr/fix-chinook-box
Fix RA Chinook selection box size
2015-10-08 16:08:31 +02:00
reaperrr
247bbeb869 Fix RA Chinook selection box size 2015-10-07 22:26:11 +02:00
abcdefg30
ae805726b0 Merge pull request #9563 from HenrytheSlav/polish
Map polish
2015-10-07 22:05:30 +02:00
HenrytheSlav
f120c65b0f Polish for maps Monster tank madness and Arctic triangle affair 2015-10-07 22:02:14 +02:00
Oliver Brakmann
92d8c358b1 Merge pull request #9521 from pchote/produce-support
Implement actor-producing support powers
2015-10-07 21:41:36 +02:00
abcdefg30
c339df6b72 Merge pull request #9564 from pchote/more-maps
Add more TD maps.
2015-10-07 21:31:48 +02:00
abcdefg30
17225c732b Hide the owner row of FCOM 2015-10-07 21:23:15 +02:00
Oliver Brakmann
de5e37539b Merge pull request #9506 from AoAGeneral/upstream/myfeature
TD Additional Balance Changes Revamped
2015-10-07 20:11:00 +02:00
clemty
a4eafa9a15 Increase size of editor tile/actor list widget 2015-10-07 19:38:27 +02:00
Oliver Brakmann
783928f20e Merge pull request #9545 from abcdefg30/selectcrash
Fix a possible crash in WorldInteractionControllerWidget
2015-10-07 19:32:14 +02:00
Paul Chote
f35ea28dfc Add new 2v2 and 3v3 maps. 2015-10-06 23:28:43 +01:00
Paul Chote
51fd1fac75 Restore Deterring Democracy map. 2015-10-06 23:19:43 +01:00
Oliver Brakmann
7eb2c48a1e Merge pull request #9471 from abcdefg30/luaprereq
Add a lua function to check for prerequisites
2015-10-06 22:20:19 +02:00
abcdefg30
be50adbed3 Add a lua function to check for prerequisites 2015-10-06 22:14:23 +02:00
Oliver Brakmann
cd62044a3a Merge pull request #9462 from abcdefg30/sovietfix
Fix a crash in the soviet04 missions
2015-10-06 20:27:16 +02:00
Oliver Brakmann
d4863badb6 Merge pull request #9397 from Herve-M/feat-utility-polish
Add basic arguments validation
2015-10-06 19:23:23 +02:00
Matija Hustić
69696fc154 UpgradeRules YAMLs 2015-10-06 02:00:39 +02:00
Matija Hustić
d94c645046 First step in the attack mechanism's refactor.
Enabled firing multiple armaments at a target simultaneously.
Each armament defines own cursor for targeting.
The force attack modifier influences armament choice for target.
Autotargeting modified to handle firing multiple armaments simultaneously.
As a consequence, healers (medics) no longer require separate Heal
activity and AttackMedic and AutoHeal traits.
2015-10-06 01:46:55 +02:00
Paul Chote
73adfe0bfc Add music player to lobby. 2015-10-05 22:43:19 +01:00
Chris Forbes
72ea009042 Merge pull request #9546 from pchote/lobby-panels
Add panel-transparent to TD
2015-10-06 10:27:25 +13:00
Paul Chote
6dce8a1385 Implement Hunter-seeker support power. 2015-10-05 22:05:02 +01:00
Paul Chote
213ac2d554 Fix Hunter-seeker rules. 2015-10-05 22:05:02 +01:00
Paul Chote
8ae01cf73b Move fremen and saboteur to palace powers. 2015-10-05 22:05:02 +01:00
Paul Chote
b43f9bc524 Add ProduceActorsPower trait. 2015-10-05 22:05:01 +01:00
Paul Chote
9b6dba02a8 Improve customisation of support power targeting. 2015-10-05 22:05:01 +01:00
Paul Chote
cade56084a Don’t render transparent overlays. 2015-10-05 19:15:03 +01:00
Paul Chote
ca5b08968d Add panel-transparent background to TD. 2015-10-05 19:15:02 +01:00
abcdefg30
d7c0d4197c Fix a possible crash in WorldInteractionControllerWidget 2015-10-05 17:23:42 +02:00
abcdefg30
36b7524d37 Merge pull request #9491 from cjshmyr/gameinprogress
Fix incorrect "In progress" time shown in server browser
2015-10-05 16:34:13 +02:00
Curtis Shmyr
2b3432e68e Fix incorrect gametime in progress shown in server browser 2015-10-04 17:08:10 -06:00
abcdefg30
efa8f3f59e Merge pull request #9534 from pchote/refresh-cnc-1v1-maps
Refresh TD 1v1 map choices
2015-10-04 22:08:19 +02:00
gitTerebi
86c57a270b Add hotkey configuration for scroll keys 2015-10-04 22:04:44 +02:00
abcdefg30
c1e1a32010 Merge pull request #9532 from atlimit8/CacheWeaponInfoLookups
Cache WeaponInfo Look-ups
2015-10-04 21:46:27 +02:00
Matthias Mailänder
93dc472020 Merge pull request #9528 from abcdefg30/seedsoutofbounds
Fix a possible crash in ResourceLayer
2015-10-04 21:40:39 +02:00
Matthias Mailänder
243bbe1981 Merge pull request #9527 from abcdefg30/halfsietch
Fix the sietch being DamagedWithoutFoundation
2015-10-04 21:02:24 +02:00
abcdefg30
dcd1638455 Merge pull request #9523 from penev92/fixWalls
Fix TS component towers
2015-10-04 21:01:47 +02:00
Matthias Mailänder
01fc961bd3 Merge pull request #9539 from pchote/lobby-prep
Prepare for lobby layout overhaul.
2015-10-04 20:58:30 +02:00
abcdefg30
e5dca60f5c Merge pull request #9542 from reaperrr/WithRotorOverlay
Rename WithRotor to WithSpriteRotorOverlay
2015-10-04 20:50:59 +02:00
Matthias Mailänder
1a8ec3745b Merge pull request #9540 from obrakmann/fix9530
Fix H and Home keys not working when the shroud debug option is enabled
2015-10-04 20:49:53 +02:00
reaperrr
b722aa6721 Rename WithRotor to WithSpriteRotorOverlay 2015-10-04 20:22:46 +02:00
Oliver Brakmann
f98a55c72f Fix H and Home keys not working when the shroud debug option is enabled 2015-10-04 18:46:05 +02:00
Paul Chote
fba879b954 Add four new 1v1 TD maps, and remove two older ones. 2015-10-04 17:31:13 +01:00
Paul Chote
d5721af91e Inherit map bin size from the root. 2015-10-04 17:26:44 +01:00
Paul Chote
c6740b1bcb Inherit lobby bin size from the root. 2015-10-04 17:26:38 +01:00
Paul Chote
b73f775ef2 Move the player bin header to lobby-players.yaml. 2015-10-04 17:26:32 +01:00
Paul Chote
fb5a6d8ec0 Reorganise the lobby chrome files. 2015-10-04 17:26:25 +01:00
Pavel Penev
044e562457 Merge pull request #9533 from pchote/fix-d2k-assets
Copy palette.bin from disk and check it exists.
2015-10-04 15:20:22 +03:00
Pavel Penev
828c53cd26 Merge pull request #9518 from JoppyFurr/bleed
Tiberian Sun style right-click-and-drag scrolling implementation
2015-10-04 14:45:21 +03:00
Paul Chote
020cce5414 Copy palette.bin from disk and check it exists. 2015-10-04 09:50:06 +01:00
atlimit8
49d7604bd9 Cache WeaponInfo look-ups 2015-10-03 22:29:40 -05:00
Joppy Furr
447049c495 Update AUTHORS 2015-10-04 16:23:07 +13:00
Joppy Furr
07273fa666 Add support for Tiberian Sun style right-click-and-drag scrolling
This patch introduces support for the right-click-and-drag scrolling that
is available in Tiberian Sun and Red Alert 2. It can be enabled by
selecting "Joystick" scrolling in the Input settings.

The speed of the scroll is proportional to the product of the distance of
the drag, and the Scroll Speed selected in the Input settings menu.

A side-effect of this is that events previously tied to right clicks on
the world are now based on the release of the click rather than the press.

The "Middle-Mouse Scrolling:" option is renamed
to "Mouse Scrolling Method:"
2015-10-04 16:22:55 +13:00
Pavel Penev
8b83fac306 Fix WithWallSpriteBody hijacking WithSpriteBody's DefaultAnimation before/during the "make" animation 2015-10-04 04:02:40 +03:00
abcdefg30
e291606dad Fix a possible crash in ResourceLayer 2015-10-04 00:18:38 +02:00
abcdefg30
3ad4aafcef Fix the sietch being DamagedWithoutFoundation 2015-10-03 23:15:33 +02:00
Herve-M
1485dd1675 Add basic arguments validation 2015-10-03 17:21:21 +02:00
Pavel Penev
f2f2fd8871 Merge pull request #9514 from abcdefg30/02aPreview
Fix the preview of atreides02a
2015-10-03 16:38:05 +03:00
Oliver Brakmann
9940efd3cb Merge pull request #9483 from reaperrr/cleanup-assets
Clean up assets
2015-10-03 12:37:55 +02:00
abcdefg30
acdb9a67f6 Fix the preview of atreides02a 2015-10-03 12:31:24 +02:00
atlimit8
a000bf7805 Merge pull request #9400 from reaperrr/fix-airefplaceperf
Fixed massive AI base builder performance issue
2015-10-02 23:18:10 -05:00
atlimit8
54b03c92d8 Support loading multiple turret facings 2015-10-02 21:58:02 -05:00
reaperrr
2ae0694385 Merge pull request #9054 from penev92/bleed_aircraft
Merge Plane and Helicopter traits
2015-10-03 01:52:30 +02:00
atlimit8
e86eea383a SpreadDamageWarhead.Range loading 2015-10-02 13:42:26 -05:00
atlimit8
dc54841bad cache AttackGarrisoned fire ports using IRulesetLoaded 2015-10-02 13:40:21 -05:00
atlimit8
079cff0a7a IRulesetLoaded Warhead support and better error messages. 2015-10-02 13:40:21 -05:00
reaperrr
87d6b3c7f2 Remove d2k.pal from D2k bits
And use palette.bin instead.
2015-10-02 18:13:49 +02:00
AoAGeneral
f2ca1d272b TD Additional Balance Changes Revamped
Infantry stealth detection: Increase sight range of stealth detection to
2 from 1.

MLRS: Reduce price to 1000 from 1200

Repair pad: Power remains at 30. Repair speed increased. (Interval 15
from 0)

Blue Tiberium: Reduce the value income to 75-90% from 110% (60 from 75)

Infantry evade chance: 75 from 67

Samsites: cost reduced to 700 from 750. Reduced build time (2000 from
2160)

Airstrikes: Increase cool down timer to 3:30 from 3:00.
2015-10-02 03:22:30 -07:00
atlimit8
22183fd5c7 Merge pull request #9465 from huwpascoe/CombatOverlay
Added warhead visualization to combat debug overlay.
2015-10-01 22:14:18 -05:00
Huw Pascoe
cfd179b0c6 Added warhead visualization to combat debug overlay. 2015-10-02 02:48:21 +01:00
Pavel Penev
c33371226c Merge pull request #9435 from ABrandau/bleed
Create disable movement trait
2015-10-02 04:30:22 +03:00
atlimit8
dc1e48556d Merge pull request #9464 from clemty/playername
TD: Lua replace GDI/Nod player reference variables with player/enemy variables
2015-10-01 17:57:27 -05:00
Oliver Brakmann
07d7df0345 Merge pull request #9485 from clemty/n64gdi01fix
Fix crash in cnc64gdi01
2015-10-01 23:38:01 +02:00
clemty
6a3b558227 Fix crash in cnc64gdi01
apparently helicopters can't .Hunt()
I introduced the bug late in testing, so it didn't trigger in review
on the plus side, AI will now attack you from a random direction
2015-10-01 23:00:01 +02:00
Oliver Brakmann
77ed5454dd Merge pull request #9402 from abcdefg30/atreides02a
Add atreides02a
2015-10-01 22:43:48 +02:00
abcdefg30
e9c8ab8d6b Add atreides02a 2015-10-01 21:46:57 +02:00
Oliver Brakmann
3f32730143 Merge pull request #9478 from clemty/pngcrush
PNG file size reduction
2015-10-01 20:18:21 +02:00
Pavel Penev
0ee38de4bb Rename HeliReturn
Rename HeliReturn to HeliReturnToBase to keep somewhat with the convention established for Plane- against Heli- oriented traits.
2015-10-01 20:15:50 +03:00
Pavel Penev
15a5bde7e7 Don't stop rearming if ordered to "Stop" while rearming
This one actually fixes a bug.
2015-10-01 20:15:47 +03:00
Pavel Penev
1ab2a781f1 Add an upgrade rule for Helicopter removal 2015-10-01 20:15:45 +03:00
Pavel Penev
d55541c5f8 Add an upgrade rule for Plane removal 2015-10-01 20:15:43 +03:00
Pavel Penev
8a44366667 Merge Plane and Helicopter into Aircraft 2015-10-01 20:15:41 +03:00
Pavel Penev
0ee1ad3fa4 Add a default value to ReturnToBase's constructor for non-Lua usages 2015-10-01 20:09:16 +03:00
Pavel Penev
4e3d6bde4f Split AircraftMoveOrderTargeter to its own file 2015-10-01 20:09:12 +03:00
Pavel Penev
ce52c62639 Merge pull request #9270 from reaperrr/upgradable-blockproj
Made BlocksProjectiles upgradable
2015-10-01 01:52:00 +03:00
reaperrr
4cf27fc207 Replace duplicate BlockedByActor with BlocksProjectiles.AnyBlockingActorAt 2015-09-30 23:54:21 +02:00
reaperrr
7e1f29d4c5 Made BlocksProjectiles upgradable 2015-09-30 21:54:35 +02:00
RoosterDragon
1b1e4f1dd2 Merge pull request #9174 from reaperrr/radius-explode
Customizable impact victim scan radius
2015-09-30 20:28:17 +01:00
atlimit8
f6180d7fa4 Include add/replace playlist entries support using map.yaml 2015-09-30 10:31:49 -05:00
Pavel Penev
0ed3ef0eb8 Merge pull request #9219 from deniz1a/hide-map-crate
Adds IncludeAllies option to hide-map crate.
2015-09-30 16:15:26 +03:00
Pavel Penev
a31302116c Merge pull request #9475 from clemty/yaml-cleanup
TD mission yaml fixes
2015-09-30 16:09:44 +03:00
Pavel Penev
356fa9d847 Merge pull request #9457 from Phrohdoh/fix#ai
Fix NullReferenceException in HackyAI.BuildUnit
2015-09-30 16:07:57 +03:00
reaperrr
85eba9da1c Remove mouse.shp and mousepal.pal from TS bits 2015-09-30 01:56:13 +02:00
reaperrr
4fd95ee2b2 Remove cursor.pal and mouse.shp from RA bits 2015-09-30 01:56:12 +02:00
reaperrr
3049fa07e0 Remove cursor.pal from TD bits 2015-09-30 01:56:11 +02:00
reaperrr
95709f1157 Remove obsolete mount hack 2015-09-30 01:56:10 +02:00
reaperrr
74308c245c Add AI MinBaseRadius to give more control over and slightly increase performance of AI building placement checks 2015-09-29 22:19:21 +02:00
reaperrr
2b0920398f Add AI MaxResourceCellsToCheck for refinery placement decision 2015-09-29 22:19:20 +02:00
clemty
76de14b6f5 PNG file size reduction
run pngcrush -brute on *.png

before:
 70 File(s)      3.455.140 bytes

after:
 70 File(s)      2.616.088 bytes
2015-09-29 20:47:36 +02:00
reaperrr
17ff3864e8 Merge pull request #9441 from Mailaender/d2k-mouse
Removed the included MOUSE.R8
2015-09-29 20:22:14 +02:00
reaperrr
258d2e2222 Merge pull request #9469 from obrakmann/fix-aircraft-husk-crash-velocity
Fix aircraft husk crash velocity
2015-09-29 20:05:29 +02:00
Nolt
7994d08702 Create #9435 DisableMovementOnUpgrade, rename DisableUpgrade to DisableOnUpgrade and Fixed not showing the blocked move cursor when movement is disabled. 2015-09-28 21:32:00 -03:00
Oliver Brakmann
8c6872fff0 Merge pull request #9387 from pchote/mission-gamespeed
Add game speed dropdown to the mission browser.
2015-09-28 21:05:30 +02:00
clemty
43590e5a67 TD yaml fixes 2015-09-28 20:18:06 +02:00
Taryn Hill
3d7e49655d Fix NullReferenceException in HackyAI.BuildUnit
HackyAIInfo grew a UnitLimits Dictionary that was not null-checked.
Also null-check UnitsToBuild.
2015-09-28 13:17:19 -05:00
Oliver Brakmann
ebfe5a3fd7 Merge pull request #9474 from obrakmann/pr9217
Ensure that we have a working OpenGL context.
2015-09-28 18:26:51 +02:00
Guido L
d0447fd97e Ensure that we have a working OpenGL context. 2015-09-28 18:20:35 +02:00
abcdefg30
7a0a618169 Merge pull request #9309 from reaperrr/missile-airfix
Add margin to CreateEffectWarhead air check
2015-09-28 17:33:46 +02:00
Oliver Brakmann
2f66fc98b9 Merge pull request #9118 from clemty/n64-01
N64 Special Ops - GDI 1
2015-09-27 23:12:57 +02:00
Oliver Brakmann
05e18fe682 Fix aircraft husk crash velocity
This fixes the long glide time aircraft husks had when they were shot down. They are falling down to earth much faster now and the distance covered matches that from release-20150614
2015-09-27 22:53:01 +02:00
clemty
62bad226e5 N64 Special Ops - GDI 1 2015-09-27 22:41:15 +02:00
Oliver Brakmann
8f0ce91f63 Merge pull request #9090 from Mailaender/cloak-reveal
Fixed cloaked units getting revealed by tooltips
2015-09-27 21:26:09 +02:00
clemty
6e315a815c replace GDI/Nod player reference variables with player/enemy
fixes unit production in nod02a and nod02b (killed infantry wouldn't get rebuilt)
2015-09-27 21:18:10 +02:00
abcdefg30
3a68364bc5 Fix a crash in the soviet04 missions 2015-09-27 19:04:38 +02:00
Pavel Penev
7fa7ebe657 Merge pull request #9384 from Mailaender/lint-player-palettes
Added a lint check for player palette references.
2015-09-27 18:44:55 +03:00
atlimit8
8495c1e2a4 Merge pull request #9448 from abcdefg30/oiltip
Don't show "Oil Pump" owner in campaign mission tooltips.
2015-09-27 09:39:17 -05:00
atlimit8
30985ff9c9 Merge pull request #9342 from penev92/mapGrid
Organize map data in Manifest
2015-09-27 09:18:39 -05:00
Matthias Mailänder
f4bb55113c fix cloak getting revealed by frozen actor tooltips 2015-09-27 15:05:07 +02:00
Paul Chote
d1f437e944 Adjust the d2k mission browser layout. 2015-09-27 13:58:57 +01:00
Matthias Mailänder
defba7aece lint check player palette reference
and tell which actor is affected when a problem is found
2015-09-27 14:57:58 +02:00
Paul Chote
36b5eb651e Rename Default game speed to Normal. 2015-09-27 10:28:34 +01:00
Paul Chote
3322f34e7b Add game speed option for missions. 2015-09-27 10:28:34 +01:00
reaperrr
74bcbcc9a8 D2k original starport prerequisites 2015-09-27 04:57:27 +02:00
reaperrr
bccfc33859 D2k original queue build speeds 2015-09-27 04:56:39 +02:00
reaperrr
9cdaf6114d D2k original cost and build speed 2015-09-27 04:56:38 +02:00
Pavel Penev
642468ce0c Add MapGrid class
MapGrid is a mod Manifest field which includes (and thus makes redundant) TileSize, TileShape, SubCells info and MaximumTerrainHeight.
2015-09-27 04:14:43 +03:00
atlimit8
699a7f8227 Merge pull request #9302 from RoosterDragon/alloc-tweaks
Reduce allocations for shroud checks and lost actors.
2015-09-26 15:31:57 -05:00
RoosterDragon
108f2e9b6e Tweak some AI methods to avoid allocations. 2015-09-26 21:12:07 +01:00
RoosterDragon
d70eea5adc Refactor occupied cells visibility checks.
Provide some common extension methods to reduce code duplication, and also use loops instead of LINQ to reduce allocations and provide a minor speedup.
2015-09-26 21:12:05 +01:00
atlimit8
49d351bf22 Merge pull request #9417 from clemty/topleft
Reduce use of Map.Topleft and Map.Bottomright
2015-09-26 14:36:22 -05:00
atlimit8
5e4e085a85 Merge pull request #9445 from RoosterDragon/activity-early-bail
Provide an early exit in RunActivity when there is no activity
2015-09-26 14:02:14 -05:00
RoosterDragon
e016227ddf Merge pull request #9327 from Mailaender/bridge-render-sizes
Fixed bridge rendering glitches
2015-09-26 19:54:43 +01:00
Oliver Brakmann
d667271ab7 Merge pull request #9262 from RoosterDragon/frozen-unify-dict
Speed up FrozenUnderFog.Tick
2015-09-26 20:45:58 +02:00
reaperrr
4c41f8f656 Lint check for SpreadDamageWarhead victim scan radius bonus 2015-09-26 17:46:28 +02:00
reaperrr
33dc50d29c Fix Bullet to consider DistanceAboveTerrain 2015-09-26 17:46:27 +02:00
abcdefg30
512faddb3e Hide the OwnerRow of the "Oil Pump"s tooltip in campaign missions 2015-09-26 17:45:02 +02:00
RoosterDragon
285a3eab2e Merge pull request #8760 from atlimit8/RangeMultiplier
Added [I]RangeMultiplier & made UpgradeMultiplierTraitInfo implement ITraitInfo
2015-09-26 16:24:17 +01:00
abcdefg30
fb97dd9481 Merge pull request #9407 from reaperrr/d2k-nsfremen
Added no stealth map creep fremen to d2k
2015-09-26 17:04:14 +02:00
reaperrr
5ad9eb852c Fix massive AI base builder performance issue
Previously, the Refinery placement check would first collect all cells
with resources inside the MaxBaseRadius, then perform a full findPos check
for each cell until one of them would not return null. The problem was
that if all of the cells returned null (for example if there wasn't enough
space between base center and resource, or if all suitable space was
otherwise occupied), it would basically check all tiles with resources
only to fail finding a suitable position and fall back to the normal
findPos check.

Since nearbyResources already performs a shuffle, I simply made the check
use the first cell from the list and use the basic findPos fallback if
that cell is null.

Closes #4717.
2015-09-26 16:48:03 +02:00
RoosterDragon
faaf1ea1e1 Provide an early exit in RunActivity when there is no activity. 2015-09-26 15:32:26 +01:00
reaperrr
e913fbcb3f Enable no-stealth fremen in map importer 2015-09-26 15:17:19 +02:00
reaperrr
73a07a5e19 Add no stealth map creep fremen to d2k 2015-09-26 15:17:18 +02:00
Matthias Mailänder
64dbaf8e76 Merge pull request #9444 from atlimit8/ModChooserMetricsExtraLine
Remove overridden ButtonBaseLine line in mods/modchooser/metrics.yaml
2015-09-26 14:54:23 +02:00
Matthias Mailänder
3e0330ab8b fix a crash when cloaking trains 2015-09-26 14:48:59 +02:00
atlimit8
361501c40c Remove overridden ButtonBaseLine line in mods/modchooser/metrics.yaml 2015-09-26 07:31:54 -05:00
Matthias Mailänder
9088a58756 Merge pull request #9408 from reaperrr/d2k-debris
Added original D2k debris
2015-09-26 13:56:51 +02:00
Matthias Mailänder
76b53ce9d7 Merge pull request #9288 from RoosterDragon/action-queue-order
Fix ActionQueue ordering
2015-09-26 13:42:56 +02:00
Matthias Mailänder
3884a31550 Merge pull request #9313 from RoosterDragon/actor-eager
Eagerly cache traits in Actor
2015-09-26 13:18:05 +02:00
Matthias Mailänder
83a17710a1 Merge pull request #9418 from reaperrr/d2k-speed
Apply original D2k actor speed
2015-09-26 13:07:49 +02:00
Matthias Mailänder
7063a4a8bb use the supplied MOUSE.R8 2015-09-26 12:42:39 +02:00
Paul Chote
9aa5828155 Merge pull request #9307 from obrakmann/fix6174_beacon-key-in-replays
Make some navigation keys available to spectators
2015-09-26 11:30:50 +01:00
Paul Chote
7ceb283034 Merge pull request #9263 from penev92/assetInstallation
Move asset installation to the ModChooser
2015-09-26 10:40:04 +01:00
Oliver Brakmann
c7cfd40f65 Merge pull request #9060 from abcdefg30/cratespawndelay
Add a InitialSpawnDelay to CrateSpawner
2015-09-26 01:26:41 +02:00
Oliver Brakmann
3e2102192e Merge pull request #9437 from pchote/fix-bogus-memory-copy
Rewrite BlowfishKeyProvider.ProcessPredata using safe code.
2015-09-26 00:47:22 +02:00
Paul Chote
7dcb896f3d Rewrite BlowfishKeyProvider.ProcessPredata using safe code.
Fixes #2441.  This error would occur when the memory
regions were allocated at particular addresses when
running a mono-compiled binary on a .net runtime.

The data would be copied to the pointer returned
from a fixed() statement, but the managed array
would *not* be updated with the new data.  This
caused DecryptKey to silently return a bogus key
full of zeros, and the mix file header decryption
would subsequently fail.
2015-09-25 22:13:55 +01:00
abcdefg30
4c52d10aaf Fix an oversight in ConvertFloatToIntPercentage 2015-09-25 17:00:08 +02:00
abcdefg30
ccf184413e Add an upgrade rule for the float to int percentage change 2015-09-25 17:00:07 +02:00
abcdefg30
589e673aa9 Replace the float WaterChance by an integer percentage 2015-09-25 17:00:06 +02:00
abcdefg30
e7c62b070b Add an upgrade rule for the seconds -> ticks change
and update the default mods
2015-09-25 17:00:06 +02:00
abcdefg30
277f9acb89 Replace seconds by ticks 2015-09-25 16:53:45 +02:00
abcdefg30
7fd3ae7db9 Adjust the dropzone maps 2015-09-25 16:53:44 +02:00
abcdefg30
10c2a897f4 Small code cleanup 2015-09-25 16:53:44 +02:00
abcdefg30
a2af88da21 Add a InitialSpawnDelay to CrateSpawner 2015-09-25 16:53:43 +02:00
Oliver Brakmann
0e9257abcf Merge pull request #9239 from penev92/clearFootprint
Move actors outside of the desired footprint when placing a building
2015-09-25 15:34:38 +02:00
Pavel Penev
059769de76 Merge pull request #9346 from reaperrr/fix-silo-preview
Fixed silo placement preview
2015-09-25 16:26:21 +03:00
Pavel Penev
b26e622bee Merge pull request #9284 from clemty/newtiles
TD: Add additional desert tiles (work originally by psydev)
2015-09-25 16:20:05 +03:00
reaperrr
74da2a2c72 Add TargetExtraSearchRadius to SpreadDamageWarhead
Allows to customize the victim scan radius. Necessary to ensure that actors where health radius is close enough, but CenterPosition isn't, properly receive damage.
2015-09-25 15:11:06 +02:00
abcdefg30
8a0023b40a Merge pull request #9248 from r34ch/ra-balance-changes
Lower shocktrooper health
2015-09-25 14:50:39 +02:00
reaperrr
010d8e8147 Upgrade rule 2015-09-25 14:30:15 +02:00
reaperrr
59a96ab0ef Make sure silo animation is properly updated on owner change 2015-09-25 14:26:22 +02:00
reaperrr
522e7d5d04 Add custom sequence support to WithSiloAnimation
Additionally add description to Stages property, and remove unnecessary var (information is only needed once anyway).
2015-09-25 14:26:21 +02:00
Pavel Penev
e67bd7cffe Merge pull request #9425 from abcdefg30/chosecrash
Fix possible crashes in the MapChooserLogic
2015-09-25 12:38:57 +03:00
atlimit8
558eea0bd5 Merge pull request #9390 from reaperrr/rename-flashoverlay
Renamed WithMuzzleFlash to WithMuzzleOverlay
2015-09-24 20:04:13 -05:00
atlimit8
74a9dc6793 Added IRangeMultiplier 2015-09-24 16:37:43 -05:00
atlimit8
65c1d2f5c1 Add IRulesetLoaded for late binding in trait info getting all rules 2015-09-24 16:26:42 -05:00
atlimit8
a8106a9999 Made UpgradeMultiplierTraitInfo implement ITraitInfo 2015-09-24 16:17:06 -05:00
atlimit8
527675db8d Attack activities use armaments directly through constructor 2015-09-24 16:17:06 -05:00
clemty
d4e1b1ba48 reduce use of Map.Topleft and Map.Bottomright as requested in #8549 2015-09-24 21:03:36 +02:00
reaperrr
5b5164211e Rename WithMuzzleFlash to WithMuzzleOverlay 2015-09-24 20:23:31 +02:00
abcdefg30
e989ce2ef2 Fix possible crashes in the MapChooserLogic 2015-09-24 16:57:03 +02:00
reaperrr
e8f18d2c3f Remove incorrect anti-air capability from quad rocket 2015-09-24 14:43:03 +02:00
reaperrr
3ce18834ed Fix siege tank weapon explosion sound 2015-09-24 14:43:02 +02:00
reaperrr
1b39936e80 Use both firing offsets for missile tank and missile tower
Remove missile tank FireDelay. Fix Report of missile tank weapon. Fix and explosion animation of both missile weapons and use less audible explosion sound (had no sound at all in the original).
2015-09-24 14:43:01 +02:00
reaperrr
63344aafcb Remove duplicate d2k explosion sequences, increase explosion tick, fix deviator explosion offset 2015-09-24 14:43:00 +02:00
reaperrr
03508c7bda Fix d2k bazooka explosion
to match original.
2015-09-24 14:42:59 +02:00
reaperrr
3fb1ec91b8 Tweak d2k armament offsets of some actors 2015-09-24 14:42:58 +02:00
Pavel Penev
cdd4590ece Merge pull request #8839 from RoosterDragon/test-sync-implementations
Test sync implementations
2015-09-24 15:17:33 +03:00
Pavel Penev
c41446e022 Merge pull request #9139 from Mailaender/editor-cash-counter
Added a total resource cash counter to the map editor
2015-09-24 15:07:15 +03:00
reaperrr
2b867c99b4 Original d2k terrain speeds 2015-09-24 13:46:07 +02:00
reaperrr
f762bcb252 Fix D2k aircraft HP and armor
This seems to have been overlooked or lost during rebase.
2015-09-24 13:46:06 +02:00
Pavel Penev
2c27452a44 Merge pull request #9386 from atlimit8/FinishWrappingActorInfoTraits
Finish wrapping ActorInfo.Traits
2015-09-24 14:40:07 +03:00
Pavel Penev
32ed7ca416 Merge pull request #9257 from reaperrr/incr-harv-radius
Increased harvester search radii
2015-09-24 12:32:53 +03:00
Pavel Penev
a5f1293c69 Merge pull request #9413 from abcdefg30/new_d2k_flags
Add new flags for d2k
2015-09-24 12:27:23 +03:00
atlimit8
1f247a0a51 Merge pull request #9220 from GraionDilach/observer-clocks
Add customizable properties to observer clocks.
2015-09-23 21:07:01 -05:00
atlimit8
8e0f5bb943 Merge pull request #9361 from visav/player-count-map-filter
Extends MapChooserLogic.mapFilter to match against PlayerCount
2015-09-23 18:46:45 -05:00
reaperrr
f955e83797 Apply original D2k base speeds
10.666667 in OpenRA with 32x32px tiles equals 1 in original RA1 and 64 in original D2k (ground actors).
For aircraft, I applied original D2k speed / 64 * 7, which should be correct for 32x32px.
2015-09-23 20:51:49 +02:00
reaperrr
685be50168 Added original D2k debris 2015-09-23 19:07:07 +02:00
Pavel Penev
f942ab1389 Move any mobile actors that block the building's desired footprint when placing a building 2015-09-23 19:41:21 +03:00
Pavel Penev
02be188d14 Add ActorExts.ClosestCell() 2015-09-23 19:13:34 +03:00
abcdefg30
d47ebc4dd6 Add definitions for the new flags 2015-09-23 16:14:47 +02:00
x-a-n-a-x
b257d4001a Add new flags for factions in d2k 2015-09-23 15:17:21 +02:00
Pavel Penev
60fee57f75 Remove obsolete installation UI YAML files from the official mods 2015-09-23 15:33:08 +03:00
Pavel Penev
50ea12723c Streamline mod changing after installation
- Don't return to the ModChooser after a successful installation.
 - Don't reload the ModChooser after a cancelled installation.
2015-09-23 15:33:06 +03:00
Pavel Penev
4401e1aa0c Pipe mod music installation through the ModChooser 2015-09-23 15:33:03 +03:00
Pavel Penev
0e7122acad Enable mod asset installation from CD from the modchooser 2015-09-23 15:33:00 +03:00
Pavel Penev
bdcb0fee58 Enable mod asset package downloading from the modchooser 2015-09-23 15:32:57 +03:00
Pavel Penev
f0a2e58ccd Add content installation dialogs to modchooser 2015-09-23 15:32:51 +03:00
Pavel Penev
cb0ccbac50 Add paths to TestFiles
File checks for existing files don't work otherwise.
2015-09-23 15:32:41 +03:00
Pavel Penev
fbfb2cfda1 Remove asset handling from BlankLoadScreen 2015-09-23 15:32:40 +03:00
Pavel Penev
d472805fc6 Add mod asset checks to ModBrowserLogic 2015-09-23 15:32:37 +03:00
Pavel Penev
4314fae77a Move ContentInstaller to OpenRA.Game from Mods.Common 2015-09-23 15:32:35 +03:00
Pavel Penev
82bf66a9be Generalise progress bars 2015-09-23 15:32:33 +03:00
Pavel Penev
19388fd773 Add ButtonBaseLine metric 2015-09-23 15:32:29 +03:00
Pavel Penev
1e57f13ecd Fix ModChooser UI 2015-09-23 15:32:26 +03:00
Pavel Penev
863814105b Move D2k tilesets to the root asset directory 2015-09-23 15:32:24 +03:00
abcdefg30
95d2f7c461 Merge pull request #9412 from simon-v/patch-1
Allies-02: Fix mission timer on medium difficulty
2015-09-23 14:10:57 +02:00
Simon Volpert
c1b8ded79b Allies-02: Fix mission timer on medium difficulty 2015-09-23 13:21:15 +03:00
Zimmermann Gyula
1358024b38 Add customizable properties to observer clocks. 2015-09-22 23:30:48 +02:00
Pavel Penev
0ac0fed15c Merge pull request #9340 from reaperrr/d2k-bal-weapons
Changed D2k health, armor types and weapon stats to match original
2015-09-22 23:55:25 +03:00
RoosterDragon
3a63a427e6 Improved sync lint pass.
Now also checks for classes with Sync members lacking the ISync interface.
2015-09-21 22:17:09 +01:00
RoosterDragon
6b62aa1ad5 Add missing sync interfaces. 2015-09-21 22:17:06 +01:00
RoosterDragon
593d913f55 Remove sync on actor - as it doesn't currently work. 2015-09-21 22:16:03 +01:00
atlimit8
9cef739dd5 Make ActorInfo.{Traits => traits} private 2015-09-21 15:50:57 -05:00
atlimit8
b889675c83 ActorInfoTest fixup with new ActorInfo ctor 2015-09-21 15:50:57 -05:00
atlimit8
9acf121eb1 Replace ActorInfo.Traits.WithInterface with ActorInfo.TraitInfos<T>() 2015-09-21 15:50:57 -05:00
atlimit8
6e39a5e264 Replace .WithInterface<T>().Any() => .HasTraitInfo<T>() 2015-09-21 15:50:57 -05:00
atlimit8
b38b6eadd0 Add IEnumerable<ITraitInfo> ActorInfo.TraitInfos() replacing actorInfo.traits enumeration 2015-09-21 15:50:57 -05:00
RoosterDragon
7decfc83ea Fix ActionQueue ordering.
This enforces a well defined ordering for ActionQueue to ensure it runs actions in the the order one would expect.
2015-09-20 23:20:51 +01:00
RoosterDragon
bbdd597917 Merge pull request #9394 from pchote/unstatic-sound
Unstatic the Sound class.
2015-09-20 22:58:00 +01:00
Paul Chote
7f4663f606 Pull out a temporary variable in ProductionQueue. 2015-09-20 22:46:07 +01:00
Paul Chote
d112083c44 Clean up sound devices on game exit. 2015-09-20 22:46:07 +01:00
RoosterDragon
6b9bd1cbbc Eagerly cache traits in Actor.
In this case, removing the lazy generation buys us more performance in removing the overhead of accessing these values than we lose from avoided computation when these values are never accessed.
2015-09-20 22:36:21 +01:00
Oliver Brakmann
28c78f6085 Make a number of navigation keys available to spectators
This will make the following keys available to spectators and in replays:

* Center screen on last event/beacon [Space]
* Center screen on current selection [Home]
* Cycle construction yards [H]
* Cycle production buildings [Tab]

The latter two need a player view to work, the former two work in all
views.
2015-09-20 22:39:06 +02:00
Oliver Brakmann
379b5a181f Make (Harvester|Base)AttackNotifiers visible to team mates and spectators 2015-09-20 22:37:34 +02:00
Visa Varjus
b9f7fb4ebc adds map filtering by PlayerCount 2015-09-20 22:06:46 +03:00
Paul Chote
ef55d646f7 Unstatic the Sound class. 2015-09-20 14:11:06 +01:00
Matthias Mailänder
c3dce785a5 add custom selection sizes to aid the renderer 2015-09-20 14:58:39 +02:00
Matthias Mailänder
7845577553 Add descriptions to the SelectionSize traits. 2015-09-20 14:58:23 +02:00
Paul Chote
ff10fe3e07 Merge pull request #9377 from reaperrr/fix-bldplace-overlay
Fixed TS crane overlay's last frame hiding idle overlay
2015-09-20 12:13:52 +01:00
Paul Chote
141575fc45 Merge pull request #9339 from reaperrr/sbag-fence
Makes only concrete walls block fire
2015-09-20 11:57:04 +01:00
Pavel Penev
db11b81c13 Merge pull request #9371 from reaperrr/maketest-order
Changed make.ps1 test order
2015-09-20 03:15:53 +03:00
Matthias Mailänder
c79f5a20a5 Merge pull request #9369 from RoosterDragon/cross-thread-checks
Added thread-affinity checks to SDL2 renderer
2015-09-19 21:09:08 +02:00
reaperrr
5ec1f8f8a0 Merge pull request #9379 from atlimit8/DanglingActorInfoTraitsContains
Changed missed ActorInfo.Traits.Contains => ActorInfo.HasTraitInfo
2015-09-19 20:55:16 +02:00
reaperrr
e36e4f97bb Fix Grenadier projectile 2015-09-19 20:47:27 +02:00
reaperrr
4aaa62845d Fix TS repair depot idle overlay
This was an idle animation in the original, and this and "platform" cannot be displayed at the same time anyway.
Also increased Tick rate to match idle light.
2015-09-19 20:37:59 +02:00
reaperrr
58e474ec80 Make repair overlay invisible when not repairing 2015-09-19 20:37:58 +02:00
reaperrr
e99c951a0c Hide WithBuildingPlacedOverlay after it has been played
Fixes #9319.
2015-09-19 20:37:57 +02:00
Paul Chote
7dfd5ade3a Merge pull request #9301 from atlimit8/WDistTraitRangeFields
Make Range WDist for all traits with circular ranges.
2015-09-19 19:10:34 +01:00
Paul Chote
3fec4c2032 Merge pull request #9298 from atlimit8/AffectsShroud
Create abstract class AffectsShroud[Info] with RevealsShroud core logic also used by CreatesShroud
2015-09-19 18:46:23 +01:00
atlimit8
131084d129 Changed missed ActorInfo.Traits.Contains => ActorInfo.HasTraitInfo 2015-09-19 12:06:37 -05:00
Matthias Mailänder
fea59346a5 add a total resource cash counter to the map editor 2015-09-19 18:21:07 +02:00
atlimit8
de7f5a4288 Make Range WDist for all traits with circular ranges. 2015-09-19 11:02:28 -05:00
reaperrr
654c66ddd0 Split Trike and Raider muzzle flash to its own weapon
Allows to show 3 muzzle flashes while only playing report, explosion effect and applying damage once
2015-09-19 17:40:02 +02:00
reaperrr
8e737d09c1 Temporary work-around for D2k deviator missile
The lint check doesn't handle player palettes properly yet.
2015-09-19 17:40:01 +02:00
reaperrr
ec277be9b6 Missile tank weapon renamed 2015-09-19 17:40:00 +02:00
reaperrr
ad9bc30c7e D2k added Grenadier and Sardaukar explosions 2015-09-19 17:39:59 +02:00
reaperrr
ab5a07fa5c D2k weapon targeting validity changes 2015-09-19 17:39:58 +02:00
reaperrr
03413b9875 D2k weapon warhead changes 2015-09-19 17:39:57 +02:00
abcdefg30
97346e1833 Merge pull request #9355 from ChaoticMind/socket_crash
Catch exception when hosting server on busy port
2015-09-19 17:27:11 +02:00
abcdefg30
6cbcd66b87 Merge pull request #9215 from LipkeGu/upnp_externalip_fix
Move NAT Logic from ClientTooltipLogic into its own Function at LobbyUtils.
2015-09-19 17:22:02 +02:00
reaperrr
d77839bb3d Merge pull request #9332 from atlimit8/TraitInfoAccess_1
TraitInfo through ActorInfo and HasTrait Removal
2015-09-19 17:06:10 +02:00
atlimit8
09984683a7 Add ActorInfo.TraitInfo[OrDefault]<T>() requiring ITraitIfo types 2015-09-19 09:56:14 -05:00
reaperrr
0ce36b6648 D2k weapon projectile changes
speed, trails, rate of turn, projectile type etc.
2015-09-19 16:55:20 +02:00
atlimit8
6970959ef1 .Trait[OrDefault]<Trait> => .Info.Traits.Get[OrDefault]<TraitInfo> where applicable 2015-09-19 09:49:24 -05:00
atlimit8
8162fa27ab Add ActorInfo.HasTraitInfo<T>() requiring ITraitInfo types 2015-09-19 09:49:24 -05:00
atlimit8
85fab45451 Remove Actor.HasTrait<T>() 2015-09-19 09:49:23 -05:00
reaperrr
d62460cfa1 Reorder yaml testing in make.ps1 to match makefile 2015-09-19 14:28:20 +02:00
reaperrr
959914779f Merge pull request #9376 from pchote/fix-news-panel-width
Make the news panel dropdown consistent across mods.
2015-09-19 14:20:38 +02:00
Paul Chote
55dee63b55 Make the news panel dropdown consistent across mods. 2015-09-19 12:46:07 +01:00
Matthias Mailänder
c0dd9c4566 Merge pull request #9359 from RoosterDragon/fix-pathfinder-layer-pooling
Fixed pooling of layers used for pathfinding
2015-09-19 13:07:33 +02:00
Matthias Mailänder
b5a5dfdb54 Merge pull request #9365 from atlimit8/HealUnitsCrateAction_use_ActorsWithTrait
HealUnitsCrateAction.Activate() use ActorsWithTrait<Health>()
2015-09-19 12:53:25 +02:00
Matthias Mailänder
6c26251b41 Merge pull request #9368 from atlimit8/Harvester_linq_syntax
Replace only use of Linq syntax
2015-09-19 12:03:19 +02:00
RoosterDragon
fc436f1aab Added thread-affinity checks to SDL2 renderer.
If a call is made into a graphics resource that has thread-affinity, from a thread other than the one that created the graphics device, an exception will now be thrown to make debugging easier.
2015-09-18 21:04:21 +01:00
atlimit8
be010249d7 Replace only use of Linq syntax 2015-09-18 10:31:41 -05:00
atlimit8
1d9d28b540 HealUnitsCrateAction.Activate() use ActorsWithTrait<Health>() 2015-09-17 23:55:38 -05:00
reaperrr
4fa20e78fa Merge pull request #9304 from atlimit8/Fix_AttackBase_GetMinimumRange
Make AttackBase.GetMinimumRange() return WDist.Zero if there are no available armaments
2015-09-18 01:26:35 +02:00
reaperrr
ef451ad4a7 Merge pull request #9356 from atlimit8/RemoveIBodyOrientation
Remove redundant IBodyOrientation[Info] & replace with BodyOrientation[Info]
2015-09-18 01:11:54 +02:00
reaperrr
1c759427b5 Merge pull request #9358 from abcdefg30/ts_stnk
Fix a crash when the stnk of TS is cloaking
2015-09-18 01:05:18 +02:00
reaperrr
4d85081577 D2k weapon changes to reload, burst and range 2015-09-17 22:08:40 +02:00
Kevin Azzam
f4461b292e Generalize error message when creating a server fails 2015-09-17 20:03:05 +02:00
RoosterDragon
519be4374c Fixed pooling of layers used for pathfinding.
The previous implementation:
- Was failing to dispose of pooled layers.
- Was using a finalizer to allow undisposed layers to be reused.

This means all pooled layers are kept alive indefinitely until the map changes. If the finalizer is slow for any reason then the pathfiinder will allocate new layers when the pool runs out. Since these new layers are eventually stuffed back into the pool when the finalizer does run, this can theoretically leak unbounded memory until the pool goes out of scope. In practice it would leak tens of megabytes.

The new implementation ensures layers are disposed and pooled correctly to allow proper memory reuse. It also introduces some safeguards against memory leaks:
- A cap is set on the number of pooled layers. If more concurrent layers are needed than this, then the excess layers will not be pooled but instead be allowed to be garbage collected.
- No finalizer. An implementation that fails to call dispose simply allows the layer to be garbage collected instead.
2015-09-16 21:25:46 +01:00
abcdefg30
a5b9442170 Fix a crash when the stnk of TS is cloaking 2015-09-16 17:54:06 +02:00
reaperrr
6b0816d68f Increase default harvester resource search radius
While this slightly decreases performance per search, it reduces the
chance of search-fail-repeat loops on human-controlled and singleplayer AI
harvesters as well as the chance of the more expensive fallback search on skirmish bot harvesters.
2015-09-16 17:37:24 +02:00
Kevin Azzam
89f2a479bf Catch exception when hosting server on busy port
Closes #9354
2015-09-16 13:08:23 +02:00
atlimit8
45112cfa76 Remove redundant IBodyOrientation[Info] & replace with BodyOrientation[Info] 2015-09-15 22:57:08 -05:00
reaperrr
886f366926 Clean up TS wall default
- don't give experience
- don't update player statistics
- don't count it as structure that must be destroyed
2015-09-16 00:51:44 +02:00
reaperrr
b5bf9ec605 Make TS sandbags not block fire anymore 2015-09-16 00:51:43 +02:00
reaperrr
81b8754ffa Make only concrete walls block fire in RA 2015-09-16 00:51:42 +02:00
reaperrr
42a4722ebc Make only concrete walls block fire in TD 2015-09-16 00:51:40 +02:00
Matthias Mailänder
59edf85513 Merge pull request #9344 from reaperrr/fix-ra-water
Fixed RotationPaletteEffect tileset validity check
2015-09-15 21:10:37 +02:00
Guido L
8a1a6945f1 Fix and move Logic into its own Function in LobbyUtils 2015-09-14 23:19:50 +02:00
reaperrr
6613db7a15 Fix RotationPaletteEffect tileset validity check
If Tilesets was empty but ExcludeTilesets was not, it would always return false even though that combination is supposed to mean only the excluded tileset(s) is/are not valid for this effect.
2015-09-14 16:36:56 +02:00
reaperrr
605ec81c55 Merge pull request #9203 from Mailaender/tunnel-rendering
Added tunnel top rendering
2015-09-14 15:42:14 +02:00
reaperrr
642497a5b7 Merge pull request #9323 from abcdefg30/d2k_rock
Fixed a wrong tileset definition in d2k
2015-09-14 15:17:09 +02:00
Pavel Penev
3fc41238d8 Merge pull request #9333 from atlimit8/DuplicateUnitCrateAction_EnabledTargetting
Make DuplicateUnitCrateAction only check enabled targetability
2015-09-14 02:45:19 +03:00
reaperrr
472191c634 Changed d2k vehicle HP and armor types to their original values 2015-09-14 00:03:36 +02:00
reaperrr
98137c514e Changed d2k structure HP and armor types to their original values 2015-09-14 00:03:35 +02:00
reaperrr
6d24006a7f Changed d2k infantry HP to their original values 2015-09-14 00:03:34 +02:00
Pavel Penev
4fad418db5 Merge pull request #9341 from reaperrr/d2k-cleanup1
Some D2k cleanup
2015-09-14 00:27:33 +03:00
reaperrr
ce8554b94a Make ornithopters targetable by anti-air weapons 2015-09-13 22:46:07 +02:00
reaperrr
6c828f90ad Remove unused airborne upgrade from unlandable d2k aircraft 2015-09-13 22:46:06 +02:00
reaperrr
ac9db803e0 Make Carryalls targetable as in original D2k 2015-09-13 22:35:12 +02:00
reaperrr
82b57165e7 Remove Parachutable from d2k infantry default 2015-09-13 22:33:06 +02:00
Pavel Penev
3e542d1039 Merge pull request #9338 from reaperrr/d2k-paradrop
Removes paradrop and carryall.infantry from D2k
2015-09-13 22:56:30 +03:00
reaperrr
ab603827ca Remove paradrop remnants from D2k 2015-09-13 21:49:24 +02:00
reaperrr
3fc11c4555 Remove carryall.infantry
No longer used since paradrops were removed.
2015-09-13 21:49:23 +02:00
reaperrr
be28da2a64 Remove paradrop power from Ix Lab 2015-09-13 21:49:22 +02:00
Pavel Penev
c41e3025c1 Merge pull request #9337 from reaperrr/d2k-orni
Removes unused ornithopter definition and renames ornithopter.bomber
2015-09-13 22:37:43 +03:00
reaperrr
7aaa31774d Rename ornithopter.bomber to just ornithopter 2015-09-13 19:41:41 +02:00
reaperrr
1d197da5ac Remove unused ornithopter definition 2015-09-13 19:39:38 +02:00
reaperrr
a580e6846e Merge pull request #9328 from Mailaender/ai-common-names
Fixed BuildingCommonNames magic
2015-09-13 18:53:37 +02:00
abcdefg30
48ecc717b2 Merge pull request #8996 from Mailaender/alpha-cloak
Added pre-multiplied alpha palettes for cloak effects
2015-09-13 18:53:17 +02:00
abcdefg30
47f07a47bd Merge pull request #9330 from clemty/buildtool
make: don't assume luac is installed
2015-09-13 17:47:29 +02:00
Matthias Mailänder
9df86f031b Merge pull request #9278 from pchote/rename-d2k-actors
Rename d2k actors to match original game rules.
2015-09-13 17:44:15 +02:00
abcdefg30
f78aea4f90 Merge pull request #8636 from Mailaender/irc
Added the in-game IRC client again
2015-09-13 17:14:36 +02:00
abcdefg30
4fc07c55b9 Merge pull request #9260 from Mailaender/tileset-import-fixes
Fixed the legacy isometric tileset importer
2015-09-13 17:07:24 +02:00
Matthias Mailänder
59142d7782 terrain sprite definition MiniYaml changed to plural form, too 2015-09-13 15:01:15 +02:00
Matthias Mailänder
d65600352b Merge pull request #9325 from Mailaender/ai-editor
Fixed HackyAI crashing the map editor
2015-09-13 13:48:36 +02:00
Matthias Mailänder
a7235d84e9 document the hidden keys 2015-09-13 08:30:17 +02:00
atlimit8
578a92370b Make DuplicateUnitCrateAction only check enabled targetability 2015-09-12 21:30:35 -05:00
clemty
378fff75bf don't assume luac is installed 2015-09-12 20:27:51 +02:00
Matthias Mailänder
f903cfea96 don't throw as we are checking for null later 2015-09-12 10:27:22 +02:00
Matthias Mailänder
39b79f5347 don't load the AI routines in the map editor 2015-09-12 08:40:40 +02:00
Matthias Mailänder
b4d22c2eb0 setup tunnel top rendering 2015-09-12 08:24:02 +02:00
abcdefg30
c79f416461 Fix a wrong tileset definition 2015-09-12 02:18:50 +02:00
reaperrr
4108b6da46 Merge pull request #9256 from Mailaender/ai-harv-search
Added AI search for new resource patches avoiding enemies
2015-09-11 23:25:59 +02:00
abcdefg30
0af5b45cb9 Merge pull request #9211 from Mailaender/railroad
Added Tiberian Sun railroad track rendering
2015-09-11 21:25:36 +02:00
abcdefg30
5660b45690 Merge pull request #9267 from clemty/luadocs
Lua API documentation cleanup
2015-09-11 20:32:48 +02:00
reaperrr
0b9fb4420b Add margin to CreateEffectWarhead isAir check 2015-09-11 16:20:25 +02:00
reaperrr
f0129838d7 Merge pull request #9016 from OmegaBolt/hmlrs-orca-wep-expl
TS vanilla rocket explosions
2015-09-11 16:06:42 +02:00
reaperrr
8cae4ee982 Merge pull request #9280 from clemty/nod05build
Nod05: fix unit production
2015-09-11 15:06:07 +02:00
abcdefg30
7573b53c7f Merge pull request #9300 from Mailaender/bot-debug-production
Removed a redundant bot production debug message
2015-09-11 14:40:34 +02:00
Matthias Mailänder
958f305520 Merge pull request #9314 from baxxxster/patch-1
Update soviet01.lua
2015-09-11 07:35:55 +02:00
Pavel Penev
0494ffa120 Update the D2k map importer 2015-09-10 19:26:56 +01:00
Pavel Penev
d74d50df52 Add an upgrade rule for D2k actor renaming 2015-09-10 19:26:52 +01:00
Pavel Penev
a23ea17c2d Update mission Lua scipts 2015-09-10 19:23:06 +01:00
Paul Chote
96b8b8c1ce Rename actors to match original game rules. 2015-09-10 19:23:05 +01:00
reaperrr
181e934ee8 Merge pull request #9311 from atlimit8/Fix9310
DeathType Count check in Explodes
2015-09-10 17:57:26 +02:00
Glenn Martin Jensen
e201e390ff Update soviet01.lua 2015-09-10 15:49:12 +02:00
atlimit8
33915fb271 DeathType Count check in Explodes 2015-09-09 18:35:55 -05:00
Matthias Mailänder
4b1bedd7dd use pre-multiplied alpha for cloak effects 2015-09-09 23:07:24 +02:00
Matthias Mailänder
dae3b62d2a add a simple in-game IRC client 2015-09-09 20:56:05 +02:00
Matthias Mailänder
e06970d942 add railroad tracks 2015-09-09 20:52:26 +02:00
Pavel Penev
4bc8a60fb9 Merge pull request #9231 from reaperrr/bye-rendersimple4
Remove RenderSimple
2015-09-09 18:51:08 +03:00
Pavel Penev
20fe9a9ff2 Merge pull request #9255 from pchote/gamespeed
Add a game speed dropdown to the lobby options.
2015-09-09 18:14:05 +03:00
Pavel Penev
14defdea6c Merge pull request #9258 from Mailaender/editor-mousewheel
Added stepless mouse wheel actor rotation to the editor
2015-09-09 17:33:52 +03:00
Pavel Penev
9e6c664f30 Merge pull request #9290 from RoosterDragon/fix-tileset-dispose
Dispose earlier in FixClassicTilesets.
2015-09-09 17:23:50 +03:00
Pavel Penev
7d7e3a8e0e Merge pull request #9294 from RoosterDragon/remove-shroud-tests
Remove Shroud.IsVisibleTest and IsExploredTest
2015-09-09 17:22:00 +03:00
Pavel Penev
f65a049e61 Merge pull request #9296 from RoosterDragon/can-view-actor-perf
Speed up Player.CanViewActor
2015-09-09 14:14:06 +03:00
atlimit8
6ab32d75bf Make AttackBase.GetMinimumRange() return WDist.Zero if there are no available armaments 2015-09-08 23:36:05 -05:00
atlimit8
b6ffcb8279 Add WDist.MaxValue 2015-09-08 23:25:48 -05:00
atlimit8
3e211232a3 Create abstract class AffectsShroud[Info] with RevealsShroud core logic also used by CreatesShroud 2015-09-08 17:24:49 -05:00
reaperrr
c2a0ca49a6 Cut yaml duplication between anti-actor mines 2015-09-09 00:16:23 +02:00
reaperrr
c272e790e5 Remove RenderSimple
All traits inheriting from it have been removed, and WithSpriteBody can
now take its place.
2015-09-09 00:16:21 +02:00
deniz1a
07c0f489e3 Adds IncludeAllies option to hide-map crate. 2015-09-08 04:06:15 +03:00
reaperrr
7c7506fafb Merge pull request #9096 from deniz1a/hide-crate
Hides crates under fog.
2015-09-07 22:35:46 +02:00
Matthias Mailänder
088f56d181 remove redundant bot debug message 2015-09-07 20:58:52 +02:00
Matthias Mailänder
c53126513e Merge pull request #9295 from reaperrr/hashhash
Use HashSets for AI
2015-09-07 20:55:17 +02:00
RoosterDragon
d1960258db Speed up Player.CanViewActor.
Create Actor.CanBeViewedByPlayer and simply call this instead. The actor can cache all trait lookups on construction to avoid them being repeated for every visibility check.
2015-09-06 23:29:09 +01:00
reaperrr
60359cc6f5 Use HashSets for AI 2015-09-06 22:59:49 +02:00
RoosterDragon
ebf113dfb7 Remove Shroud.IsVisibleTest and IsExploredTest.
These are no longer any faster than the regular checks, so there's no need to keep them.
2015-09-06 21:13:32 +01:00
Pavel Penev
aae3c8ef7d Merge pull request #9293 from RoosterDragon/repair-render-perf
Speed up RepairIndicator.Render.
2015-09-06 23:13:28 +03:00
RoosterDragon
a1f6b83653 Speed up RepairIndicator.Render.
Check repairer count first, as this is quicker than checking fog visibility.
2015-09-06 21:06:02 +01:00
Matthias Mailänder
a8d4bc2cef Merge pull request #9292 from obrakmann/fix-silo-infinite-loop
Fix an infinite loop that occurs when a silo is captured
2015-09-06 21:54:14 +02:00
Oliver Brakmann
caa0e1678e Fix an infinite loop that occurs when a silo is captured 2015-09-06 21:46:20 +02:00
RoosterDragon
662077a47e Merge pull request #9103 from reaperrr/water-rot
Refactored WaterPaletteRotation into RotationPaletteEffect
2015-09-06 20:19:09 +01:00
reaperrr
fabdefeaf1 Use HashSets for tileset checks, check in constructor for better performance 2015-09-06 20:58:24 +02:00
RoosterDragon
286372fedf Dispose earlier in FixClassicTilesets.
Ensure we dispose the stream we opened right away to avoid leaving it open when an exception occurs.
2015-09-06 19:55:00 +01:00
OmegaBolt
55d55b3723 removed ImpactTypes changes 2015-09-06 19:47:16 +01:00
RoosterDragon
1e22762a16 Merge pull request #8766 from TheRaffy/WeatherOverlay
Added a WeatherOverlay
2015-09-06 19:35:00 +01:00
TheRaffy
1fc2158f2e Added a WeatherOverlay 2015-09-06 20:25:29 +02:00
reaperrr
ea7811a076 Rename temp to rotationBuffer and remove comment 2015-09-06 19:28:16 +02:00
reaperrr
cd9effaa35 Added positive palette/tileset properties to RotationPaletteEffect 2015-09-06 19:28:15 +02:00
reaperrr
96c7d4345e Renamed WaterPaletteRotation to RotationPaletteEffect 2015-09-06 19:25:12 +02:00
reaperrr
ca055eb7bb Refactored WaterPaletteRotation
Moved RotationBase from tileset definition to WaterPaletteRotation effect.
Unhardcoded rotation range and rotation rate.
Added possibility to exclude Tilesets from effect.

Fixed RA water palette rotation for actors on desert maps (#8872).
2015-09-06 19:25:10 +02:00
Paul Chote
1109ec53d1 Update UI timers for variable game speed. 2015-09-06 17:48:42 +01:00
Paul Chote
301b698c81 Add game speed dropdown to the lobby. 2015-09-06 17:48:41 +01:00
Paul Chote
257c043e58 Add Timestep property to GlobalSettings. 2015-09-06 17:48:26 +01:00
Matthias Mailänder
0df8b3ba39 bring back AI search for new resource patches avoiding enemies 2015-09-06 12:56:23 +02:00
clemty
bc13ae7ff0 Add missing desert tiles (work originally by psydev) 2015-09-06 12:39:19 +02:00
Pavel Penev
7912e3c7ff Merge pull request #9283 from reaperrr/d2k-weapon-names
Changed D2k weapon names to match original
2015-09-06 13:29:14 +03:00
Pavel Penev
5b93146279 Merge pull request #9273 from clemty/tileset
TD: make cliffs unbuildable
2015-09-06 12:54:39 +03:00
Pavel Penev
8262591cc4 Merge pull request #9282 from reaperrr/d2k-nobounty
Removed bounties from D2k
2015-09-06 12:37:27 +03:00
Matthias Mailänder
c206bebb7f Merge pull request #9274 from pchote/fix-sound-engine
Don’t create multiple sound contexts.
2015-09-06 11:35:50 +02:00
Matthias Mailänder
0e5fcc1756 Merge pull request #9279 from atlimit8/SemanticallySets
More HashSet trait fields & Lint support
2015-09-06 10:23:20 +02:00
Matthias Mailänder
154225d9ee rotate actors freely with mouse wheel and remove the facing hack 2015-09-06 08:54:14 +02:00
Matthias Mailänder
d20e93495e Merge pull request #9272 from pchote/remove-dps-table
Remove the broken actor stats export command.
2015-09-06 08:24:55 +02:00
reaperrr
5e6d30c3f5 D2k - switch stats of UnitExplodeSmall and UnitExplodeMed to match name 2015-09-06 05:08:45 +02:00
reaperrr
a321b41c72 D2k - remove unused UnitExplode 2015-09-06 05:08:44 +02:00
reaperrr
3b2d69df18 D2k - change position and name of ChainGun
To reduce conflicts with stats changes
2015-09-06 05:08:43 +02:00
reaperrr
b9377c49a9 D2k - remove unused ParaBomb 2015-09-06 05:08:40 +02:00
reaperrr
fe2491dd50 Add 80mm_O cannon for Ordos tank
To reduce conflicts with upcoming stats changes.
2015-09-06 05:08:39 +02:00
reaperrr
d3e8ffceb2 D2k weapon renamings 2015-09-06 05:08:38 +02:00
reaperrr
f857f49c10 Remove bounties from d2k 2015-09-06 02:37:28 +02:00
clemty
3bf31c99da Nod05: fix unit production
closes #9277
2015-09-06 00:24:30 +02:00
RoosterDragon
6b14d400ce Merge pull request #9259 from atlimit8/AI_countsAllAircraftRearmBuildings
AI counts all aircraft rearm buildings
2015-09-05 23:17:28 +01:00
atlimit8
8250f223c4 More HashSet trait fields & Lint support 2015-09-05 16:59:30 -05:00
clemty
23c6baa57d TD: make cliffs unbuildable
fixes #9265
2015-09-05 22:41:37 +02:00
Paul Chote
886d489766 Don’t create multiple sound contexts. 2015-09-05 18:29:14 +01:00
Paul Chote
a11ffa5135 Remove the bitrotted actor stats command. 2015-09-05 18:01:32 +01:00
RoosterDragon
592004e738 Unify the player dictionaries in FrozenUnderFog.
This improves the performance of FrozenUnderFog.Tick as only one lookup needs to be done rather than two.
2015-09-05 16:10:00 +01:00
reaperrr
e74c0d6c13 Merge pull request #9141 from RoosterDragon/pathfinder-perf
Improve pathfinder performance (paths may change)
2015-09-05 16:49:51 +02:00
clemty
ea71620f47 Lua API documentation cleanup
also reduces amount of headings with only a single entry

SendAirStrike() - now listed under "Support Powers"
Guard() - now listed under "Combat"
FindResources() - now listed under "Movement"
Deploy() - now listed under "General"
SendParaTroopers() - now listed under "Support Powers"
Paradrop() - no listed under "Transports"

Teleport() should probably be listd under "Movement", but I don't know how to change that (currently listed under "General").

note that I changed "ScriptGlobal" to "ScriptPropertyGroup" for SendAirStrike() - I hope that does not screw up anything
2015-09-05 15:01:14 +02:00
reaperrr
e0e31d89b1 Merge pull request #9264 from penev92/appearsOnRadar
Make AppearsOnRadar implement INotifyCreated
2015-09-05 00:39:33 +02:00
Pavel Penev
c323046ed0 Make AppearsOnRadar implement INotifyCreated
Cache the IRadarColorModifier so we don't look for it on every render tick.
2015-09-05 01:18:45 +03:00
RoosterDragon
e44342daa0 Merge pull request #9250 from reaperrr/fix-deco-visibility
Make rocks and trees HiddenUnderShroud instead of FrozenUnderFog
2015-09-04 18:15:34 +01:00
atlimit8
dbae16b7a0 AI counts all aircraft rearm buildings 2015-09-04 10:45:58 -05:00
reaperrr
543dc8e5d0 Make rocks and trees HiddenUnderShroud instead of FrozenUnderFog
This improves performance significantly when many trees and rocks are on the map and shroud/fog are enabled.
2015-09-04 17:15:16 +02:00
deniz1a
fb87bf0b90 Hides crates under fog of war. 2015-09-04 13:01:01 +03:00
Matthias Mailänder
91c7d7893e Merge pull request #9238 from deniz1a/asymmetric
Red Alert: Corrects spelling in "Asymetric Battle" map.
2015-09-04 10:50:25 +02:00
Matthias Mailänder
f785c5d03f Merge pull request #9246 from RoosterDragon/array-to-set
Change some arrays to sets
2015-09-04 08:56:44 +02:00
Matthias Mailänder
02460a16b4 Merge pull request #9240 from penev92/fixAnims
Fix crash when aircraft is rearming at a helipad in TS
2015-09-04 08:46:23 +02:00
Matthias Mailänder
266a1eac8d Merge pull request #9241 from reaperrr/streamline-bo-yaml
Added ^SpriteActor and fixed remaining BodyOrientation regressions
2015-09-04 08:25:14 +02:00
reaperrr
31bcbeb789 Added ^SpriteActor and streamlined TS defaults
To avoid BodyOrientation issues.
2015-09-03 22:40:02 +02:00
reaperrr
89a115466c Added ^SpriteActor and streamlined D2k defaults
To reduce risk of BodyOrientation issues.
2015-09-03 22:40:01 +02:00
reaperrr
ec48c411f0 Added ^SpriteActor and streamlined TD defaults
To fix BodyOrientation regressions and reduce risk of future regressions.
2015-09-03 22:40:00 +02:00
reaperrr
0fc9507930 Clean and fix RA maps to avoid BodyOrientation-related crashes 2015-09-03 22:39:59 +02:00
reaperrr
6b9a511bd5 Added ^SpriteActor and streamlined RA defaults
To fix potential BodyOrientation issues and reduce risk of future
regressions.
2015-09-03 22:39:57 +02:00
reaperrr
fc4fadbd8d Merge pull request #9237 from Mailaender/allies-03-prison-orientation
Fixed BodyOrientation in 3rd Allies mission
2015-09-03 22:33:08 +02:00
DArcy Rush
f9a011d657 lower shocktrooper health 2015-09-03 20:51:54 +01:00
RoosterDragon
901e604cf3 Replace arrays with sets.
In places where arrays were being treated as a set, just create a set directly. This reveals the intention of such collections better, and also improves performance by allowing set based methods to be used.
2015-09-03 20:09:24 +01:00
Pavel Penev
4f4bab2cdf Merge pull request #9245 from atlimit8/WarheadTargetHashSets
Load HashSets in OpenRA.Mods.Common/Warheads/Warhead.cs directly from MiniYaml
2015-09-03 21:35:59 +03:00
atlimit8
7e31a249ab Load HashSets in OpenRA.Mods.Common/Warheads/Warhead.cs directly from MiniYaml 2015-09-03 13:27:58 -05:00
Pavel Penev
27e16d0730 Don't try to play a rearming animation if it doesn't exist 2015-09-03 15:55:20 +03:00
deniz1a
650cc8fb51 Red Alert: Corrects spelling in "Asymetric Battle" map.
Changes map name to "Asymmetric Battle".
2015-09-03 12:29:59 +03:00
Matthias Mailänder
4f0f5cdee7 remove BodyOrientation for invisible actor 2015-09-03 07:42:21 +02:00
Matthias Mailänder
119023c485 Merge pull request #8727 from atlimit8/MultipleTargetableTraits
TargetTypes by Upgrade and Replacement of Targetable* by Targetable and ITargetablePositions
2015-09-03 07:41:34 +02:00
atlimit8
5f079f2463 Add MinAirborneAltitude to Aircraft trait to set airborne threshold 2015-09-02 23:19:00 -05:00
atlimit8
b789739352 Allies 03 - kill prisoners with barrels 2015-09-02 23:19:00 -05:00
atlimit8
fadfd179cb Cache FrozenActor ITargetable.TargetTypes union 2015-09-02 23:19:00 -05:00
atlimit8
6986cd9f0e Remove TargetableAircraft 2015-09-02 23:19:00 -05:00
atlimit8
97ce4766f3 Grant upgrades while aircraft is airborne 2015-09-02 23:19:00 -05:00
atlimit8
a6cd770dcf Remove TargetableSubmarine 2015-09-02 23:14:41 -05:00
atlimit8
ecc15d9ae6 Grant upgrades while cloaked 2015-09-02 23:14:40 -05:00
atlimit8
23d0424437 Add ITargetablePositions seperating it from ITargetable 2015-09-02 23:14:40 -05:00
atlimit8
f5c3575c5a Support multiple ITargetable traits 2015-09-02 23:14:40 -05:00
Taryn Hill
4bd34e3ed3 Merge pull request #9236 from atlimit8/FixAircraftTraitIndent
Fix indentation in OpenRA.Mods.Common/Traits/Air/Aircraft.cs
2015-09-02 23:07:57 -05:00
atlimit8
5bfa3afd88 Fix indentation in OpenRA.Mods.Common/Traits/Air/Aircraft.cs 2015-09-02 22:54:05 -05:00
Paul Chote
2f759abddc Merge pull request #9159 from penev92/bleed_plugInit
Add PlugInit
2015-09-03 04:18:29 +01:00
Matthias Mailänder
8114a53760 Merge pull request #9222 from GraionDilach/hackyai-unitlimits
Implement HackyAI->UnitLimits.
2015-09-02 21:14:13 +02:00
Matthias Mailänder
8e382cf598 Merge pull request #9218 from deniz1a/badger-satellite
Red Alert: Adds satellite icons to badger planes.
2015-09-02 21:00:46 +02:00
Matthias Mailänder
735bb06c48 Merge pull request #9229 from pchote/fix-building-offsets
Fix TS building artwork offsets.
2015-09-02 20:45:15 +02:00
Pavel Penev
2042fccefd Merge pull request #9189 from reaperrr/bye-rendersimple3
Remove RenderBuilding
2015-09-02 19:21:01 +03:00
reaperrr
032bef7d71 Merge pull request #9124 from penev92/bleed_deployToUpgrade
Make use of DeployToUpgrade
2015-09-02 18:15:14 +02:00
reaperrr
0785bdbcf1 Move WithSpriteBody pause check to constructor 2015-09-02 17:55:03 +02:00
reaperrr
2031df965c Clarify TODO on TS missile silo sequences 2015-09-02 17:51:43 +02:00
reaperrr
45e6c62ec9 Cache WithSpriteBody in Refinery constructor 2015-09-02 17:51:19 +02:00
Paul Chote
7063d785a3 Fix Nod stealth generator offsets. 2015-09-02 16:22:24 +01:00
Paul Chote
291ba0e664 Fix GDI upgrade center offset. 2015-09-02 16:18:37 +01:00
Paul Chote
abce4678ca Fix Nod advanced power plant offset. 2015-09-02 16:18:27 +01:00
Paul Chote
04c61727f7 Don’t sample map height when calculating building centers. 2015-09-02 16:06:05 +01:00
Pavel Penev
495a99991c Add turret plugs to the TS shellmap 2015-09-02 16:13:27 +03:00
Pavel Penev
8f42cff550 Introduce PlugsInit 2015-09-02 16:13:23 +03:00
Pavel Penev
c4bf92870b Merge pull request #9083 from Mailaender/lint-cleanup
Cleaned up the ILint boiler plate code
2015-09-02 15:49:43 +03:00
Pavel Penev
59aded844f Merge pull request #9204 from reaperrr/bleed-rendertweaks1
Fix TD tower selection boxes and improve TS sequence offsets
2015-09-02 15:45:31 +03:00
Pavel Penev
8fbe35d156 Merge pull request #9228 from penev92/buildFix
Fix the build after a bad merge
2015-09-02 15:29:03 +03:00
Pavel Penev
a3633671a9 Fix the build after a bad merge
Merging #9187 without rebasing it on post-#9182 bleed was a bad idea.
2015-09-02 15:22:14 +03:00
Pavel Penev
ba9abc9e0a Merge pull request #9187 from RoosterDragon/field-saver-culture
Fix culture in FieldSaver for collections
2015-09-02 15:14:42 +03:00
Pavel Penev
b7192ffa14 Merge pull request #9207 from Mailaender/ctdam-animations
Added damaged, light and water animations to the Tiberian Sun hydroelectric dam
2015-09-02 15:08:49 +03:00
Pavel Penev
1679ac5a91 Merge pull request #9208 from Mailaender/kodiak-lights
Added Tiberian Sun Kodiak positional lights
2015-09-02 15:04:57 +03:00
Pavel Penev
325e974a94 Merge pull request #9209 from Mailaender/nod-lights
Added lights to the Nod Montauk and Pyramid
2015-09-02 14:58:19 +03:00
Pavel Penev
acd11d4521 Merge pull request #9212 from OpenRA/trucka
Added the unloaded truck to Tiberian Sun
2015-09-02 14:53:10 +03:00
Pavel Penev
995926b572 Merge pull request #9226 from GraionDilach/d2k-bo
Fix misc D2k BodyOrientation-regressions.
2015-09-02 14:42:44 +03:00
Pavel Penev
800b77e137 Merge pull request #9007 from reaperrr/armor-upgradable
Made Armor upgradable
2015-09-02 14:19:30 +03:00
Pavel Penev
8e2fca6f46 Merge pull request #9225 from LipkeGu/Namespace_Is_Wrong
Fix Namespace definition
2015-09-02 13:42:01 +03:00
Zimmermann Gyula
7ce1b89ba9 Fix misc D2k BodyOrientation-regressions. 2015-09-02 10:39:12 +02:00
Guido L
7181519fe4 Fix Namespace definition 2015-09-02 08:11:27 +02:00
Zimmermann Gyula
11c5144cb4 Restore AI kennel usage, limit AI harvesters and dogs. 2015-09-01 23:32:22 +02:00
Zimmermann Gyula
0a79109d01 Implement HackyAI->UnitLimits. 2015-09-01 23:32:13 +02:00
RoosterDragon
509a0e54a2 Merge pull request #9182 from penev92/bleed_dicts
Add support for Dictionary to FieldLoader and FieldSaver
2015-09-01 21:28:24 +01:00
Pavel Penev
256929073c Clean up some trait info loading code
Remove some methods that traits define to load their YAML values on their own.
2015-09-01 22:52:22 +03:00
Pavel Penev
8ddbabbfde Add Dictionary<,> support to FieldSaver 2015-09-01 22:52:20 +03:00
Pavel Penev
341b3395c8 Add Dictionary<,> support to FieldLoader 2015-09-01 22:52:18 +03:00
Pavel Penev
821e09877d Remove an assumption from FieldLoader.TryGetValueFromYaml() about the current value not having subnodes.
FieldLoader assumed the YAML that is being loaded is a simple value with no subnodes and threw an exception otherwise. This explicitly excluded the possibility of trying to load a Dictionary or another more complex object.
2015-09-01 22:52:04 +03:00
Matthias Mailänder
2df76ad962 add an overload that doesn't use string.Format 2015-09-01 20:59:14 +02:00
Matthias Mailänder
d17d68f894 Merge pull request #9221 from GraionDilach/fix-veinhole
Fix veinholes.
2015-09-01 20:38:46 +02:00
Pavel Penev
606a8c1639 Convert the Mobile Sensor Array to use DeployToUpgrade
Stop using Transforms.
2015-09-01 20:24:45 +03:00
Pavel Penev
899ea7e16d Add a description to DisableUpgrade 2015-09-01 20:19:31 +03:00
Pavel Penev
cdedfe6931 Don't get stuck in deployed mode because of an impossible move order 2015-09-01 20:19:29 +03:00
Pavel Penev
7668e0a30c Add deploy and undeploy sounds to DeployToUpgrade 2015-09-01 20:19:27 +03:00
Pavel Penev
21f9547fed Add facing to DeployToUpgrade
Make the actor turn to a desired facing before starting to deploy (and before granting the upgrade).
2015-09-01 20:19:25 +03:00
Pavel Penev
7d59aaa00c Add a deploy animation to DeployToUpgrade
Play a "deploy"/"undeploy" animation
2015-09-01 20:19:23 +03:00
Pavel Penev
3678e146cf Make WithVoxelBody upgradable 2015-09-01 20:19:21 +03:00
RoosterDragon
ac55c5bf09 Fix pathfinding using PriorityQueue incorrectly.
By providing a comparer that could change over time (as estimated costs on the graph were updated), this meant the priority queue could have its heap property invalidated and thus not maintain a correct ordering. Instead we store elements into the queue with their estimations at the time. This preserves the heap property and thus ensures the queue returns properly ordered results, although it may contain out of date estimations.

This also improves performance. The fixed comparer need not perform expensive lookups into the graph, but can instead use the readily available value. This speeds up adds and removes on the queue significantly.
2015-09-01 17:29:36 +01:00
RoosterDragon
77923a27c1 Tweak IPathSearch to avoid exposing the OpenQueue directly. 2015-09-01 17:29:36 +01:00
RoosterDragon
774992c246 Cache only unit paths in the pathfinder.
The path caching works on the assumption that the time saved from reusing a cached path outweights the cost of caching it in the first place.

For unit paths, this assumption holds. For path searchs, we spend more time caching them then we save when we get to reuse these cached paths. This is because they are reused less often, and calculating their key is more expensive in comparison.
2015-09-01 17:29:35 +01:00
Zimmermann Gyula
1410a3d405 Fix veinholes. 2015-09-01 17:14:41 +02:00
reaperrr
7f7031d5c8 Update outdated description 2015-09-01 13:52:09 +02:00
Zimmermann Gyula
4aba64cc0f Fix armors. 2015-09-01 13:52:08 +02:00
reaperrr
0f9ef4036e Merge pull request #9140 from RoosterDragon/safe-pathfinder-perf
Improve pathfinder performance
2015-09-01 13:02:29 +02:00
reaperrr
a154410307 Merge pull request #9214 from Mailaender/ts-trains
Fixed the TS mod crashing on startup and oh trains!
2015-09-01 13:00:14 +02:00
deniz1a
d065c9f202 Red Alert: Adds satellite icons to badger planes.
They drop crates, paratroopers and parabombs.
2015-09-01 10:15:37 +03:00
Matthias Mailänder
2ed240527e add train locomotive and waggons 2015-08-31 22:22:49 +02:00
Matthias Mailänder
b3bed529d2 fix 'nawall' does not define a quantized body orientation 2015-08-31 22:14:17 +02:00
RoosterDragon
0739fc80a3 Cache the speed modifiers enumerable, not just the traits, in Mobile. 2015-08-31 20:45:34 +01:00
RoosterDragon
d9dd96ca35 Speed up Map.ContainsAllProjectedCellsCovering on flat maps.
This method gets called often via Contains calls. We can significantly speed up the method for flat maps since we know the projection and it is trivial to perform. This avoids an expensive projection lookup.
2015-08-31 20:45:32 +01:00
RoosterDragon
76303e9699 In PathGraph.GetConnections, return a List of neighbors directly, rather than a LinkedList typed an IEnumerable.
The caller can enumerate the list more efficiently without the IEnumerable indirection, and the reduced memory allocation is marginally faster than allocating a linked list and several nodes.
2015-08-31 20:45:31 +01:00
RoosterDragon
7d44eb953e Reduce size of GraphConnection for allocation efficiency. 2015-08-31 20:45:29 +01:00
RoosterDragon
be59d045ce Only enumerate crushable traits once in MobileInfo.IsBlockedBy. 2015-08-31 20:45:25 +01:00
RoosterDragon
dab53f403d Provide a hand-written enumerator for ActorMap.GetUnitsAt(CPos). 2015-08-31 20:43:19 +01:00
RoosterDragon
18478646d4 Avoid multiple ToMPos calls in ActorMap. 2015-08-31 20:43:18 +01:00
RoosterDragon
ac1658c9ce Refactor movement cost method to avoid repeated terrain information lookups.
As the world tileset is fixed, the pathfinder can look up the terrain information for that tileset on creation. This is implemented by the WorldMovementInfo struct. When calculating node costs, this allows the pathfinder to avoid having to repeat this expensive dictionary lookup on every node.
2015-08-31 20:43:18 +01:00
RoosterDragon
4eacb6e5c9 Transparently cache results of GetTerrainIndex in Map.
This method performs an expensive calculation and is called often during pathfinding. We create a cache of the terrain indicies for the map to vastly reduce the cost.
2015-08-31 20:43:17 +01:00
RoosterDragon
fa87befeff Add missing CellEntryChanged checks. 2015-08-31 20:43:16 +01:00
Matthias Mailänder
f65c356399 add Kodiak positional lights 2015-08-31 20:20:47 +02:00
Matthias Mailänder
ee8cac25d0 add lights to the Nod pyramid 2015-08-31 20:18:14 +02:00
reaperrr
3175ef4d67 Merge pull request #9193 from Mailaender/quanbo-fixup
Fixed BodyOrientation refactor regressions
2015-08-31 20:12:53 +02:00
Matthias Mailänder
252b102886 add the unloaded truck 2015-08-31 18:30:22 +02:00
Matthias Mailänder
6137a44123 add lights to the Montauk 2015-08-30 18:51:00 +02:00
Matthias Mailänder
f60080e0ac Merge pull request #9186 from LavenderMoon/bleed
Combine Shrapnel into Bullet
2015-08-30 18:40:26 +02:00
Matthias Mailänder
47b581d8c0 be more concise 2015-08-30 17:42:56 +02:00
Matthias Mailänder
19801b6cc3 add damaged, light and water animations 2015-08-30 17:40:54 +02:00
reaperrr
10ab4cbe61 Fixed production overlay ZOffsets 2015-08-30 15:45:01 +02:00
reaperrr
c39c7cdc4e Fix d2k NukePower sequence requirement 2015-08-30 15:45:00 +02:00
reaperrr
9da56f51e2 Remove RenderBuilding 2015-08-30 15:44:59 +02:00
reaperrr
df29ee1e19 Improved TS sequence offsets for gaplug and naapwr
Fixes #9003.
2015-08-30 15:38:03 +02:00
reaperrr
6c2eb1b0a8 Fixed TD obelisk and adv. guard tower visual selection boxes 2015-08-30 15:38:02 +02:00
Pavel Penev
5e55cef02c Merge pull request #8699 from deniz1a/disguise-owner
Shows real owner of disguised units to allies.
2015-08-30 14:32:34 +03:00
Matthias Mailänder
0b8d7708ef add more lint interfaces to reduce boiler plate 2015-08-30 13:12:25 +02:00
Lavender Moon
81e5b7866b Combine Shrapnel into Bullet 2015-08-30 06:37:38 -04:00
Matthias Mailänder
838faa4ae3 Merge pull request #9200 from penev92/bleed_upgradableResources
Make SeedsResource upgradable
2015-08-30 11:41:12 +02:00
Matthias Mailänder
24a5c37d5b Merge pull request #9199 from reaperrr/fix-td-shell-mamm
Fixed TD shellmap mammoth turrets drawn below body
2015-08-30 11:11:37 +02:00
Pavel Penev
55045d691a Make SeedsResource upgradable 2015-08-30 02:13:56 +03:00
Pavel Penev
43809b7fc5 Merge pull request #9194 from Mailaender/emitError-sequences
Fixed undefined sequence lint checks not emitting errors
2015-08-30 01:29:20 +03:00
reaperrr
bf51e0600d RenderBuildingWall -> WithWallSpriteBody 2015-08-30 00:22:53 +02:00
reaperrr
21186c10b6 RenderBuildingTurreted -> WithTurretedSpriteBody 2015-08-30 00:22:52 +02:00
reaperrr
dddb49e095 Fix TD shellmap mammoth turrets 2015-08-29 23:59:16 +02:00
reaperrr
69d062495c RenderBuildingSilo -> WithSiloAnimation 2015-08-29 23:33:18 +02:00
reaperrr
2df318cd3e RenderBuildingCharge -> WithChargeAnimation 2015-08-29 23:33:17 +02:00
reaperrr
bc2b60be05 Extend WithSpriteBody funtionality
Move building placement range circle to PlaceBuilding, add
PauseAnimationWhenDisabled.
2015-08-29 23:10:22 +02:00
Matthias Mailänder
539e25920c add missing spaces 2015-08-29 21:24:58 +02:00
Pavel Penev
8d1e46dc54 Merge pull request #9195 from Mailaender/map-preview-leak
Fixed a resource leak in MapPreview
2015-08-29 20:36:48 +03:00
Matthias Mailänder
25a0143b46 avoid unnecessary trait lookups 2015-08-29 18:58:30 +02:00
Matthias Mailänder
1dfb982d6f fix paradrop camera not defining a body orientation 2015-08-29 18:49:51 +02:00
Matthias Mailänder
72dffe3391 dispose res properly 2015-08-29 18:47:10 +02:00
Matthias Mailänder
5fc8a413e6 emitError for undefined sequences 2015-08-29 08:18:52 +02:00
Matthias Mailänder
da0c80dc3d fix bridges not defining body orientation 2015-08-29 08:15:17 +02:00
Matthias Mailänder
45f7526967 fix dereference after null check 2015-08-29 08:05:00 +02:00
Matthias Mailänder
fda39f7136 add missing ISync 2015-08-29 08:04:37 +02:00
Matthias Mailänder
589cb4cd0a Merge pull request #9191 from reaperrr/fix-qffs
Fix TS regression from #9004
2015-08-29 07:12:21 +02:00
reaperrr
c3ff298572 Fix TS regression from #9004 2015-08-29 02:41:26 +02:00
Matthias Mailänder
9c1eeafa08 Merge pull request #9004 from reaperrr/quanbo
Introduce QuantizeFacingsFromSequence
2015-08-28 22:46:29 +02:00
Pavel Penev
c793ac565e Merge pull request #9188 from RoosterDragon/friendly-name-hashset
Friendly name for HashSet in docs
2015-08-28 23:03:15 +03:00
Matthias Mailänder
a0bdce9ad8 Merge pull request #9185 from reaperrr/d2k-fixes
D2k fix for cliff passability
2015-08-28 21:51:03 +02:00
Matthias Mailänder
88df5057b6 Merge pull request #9175 from penev92/bleed_maxMind
Update MaxMind.GeoIP2 version to 2.3.1
2015-08-28 21:48:19 +02:00
RoosterDragon
637a87c33b Use a better name for HashSet in ExtractTraitDocsCommand.FriendlyTypeName. 2015-08-28 19:55:25 +01:00
RoosterDragon
d11e60474a Ensure the elements of arrays and sets are formatted correctly in FormatValue.
We call FormatValue on each element to ensure correct culture and other formatting that would otherwise not be applied.
2015-08-28 19:39:25 +01:00
RoosterDragon
243763f570 Remove redundant invariant culture handling for float, decimal, double.
This is already handled by the type converter portion of the code.
2015-08-28 19:33:59 +01:00
reaperrr
a4bac0ab29 Fix ground type of some D2k cliffs 2015-08-28 17:37:14 +02:00
reaperrr
f62bc3c226 Merge pull request #9172 from Mailaender/fix-withcargo-desync
Fixed a desync involving WithCargo
2015-08-28 15:05:55 +02:00
Pavel Penev
d1a3bf97a6 Merge pull request #9105 from RoosterDragon/cmfi-refactor-perf
Mobile Blocking Refactor
2015-08-28 15:35:49 +03:00
Pavel Penev
3d76f76c26 Merge pull request #9181 from RoosterDragon/field-loader-hashsets
Support HashSet in FieldLoader/FieldSaver
2015-08-28 01:13:33 +03:00
RoosterDragon
2f9ca36506 Update WeaponInfo to use HashSets for some fields directly. 2015-08-27 21:48:12 +01:00
RoosterDragon
5a177a889c Add ability to load and save HashSets. 2015-08-27 21:48:09 +01:00
RoosterDragon
6d183b6d63 Merge pull request #9178 from LavenderMoon/bleed
Move duplicate Tick() code from Plane and Helicopter to Aircraft.
2015-08-27 21:42:18 +01:00
RoosterDragon
410b97823a Ensure our array handling only accepts single dimensional arrays. 2015-08-27 21:31:24 +01:00
RoosterDragon
42123d5653 Merge pull request #9143 from LipkeGu/mod_loadscreen_crash
LoadScreen: Do not crash when Image or Text is not defined.
2015-08-27 21:25:26 +01:00
Lavender Moon
4649c03260 Move duplicate Tick() code from Plane and Helicopter to Aircraft. 2015-08-27 16:21:51 -04:00
Pavel Penev
353d9215c6 Update MaxMind.GeoIP2 version to 2.3.1
Fixes an "Operation did not complete successfully because the file contains a virus." message when making dependencies.
2015-08-27 21:43:47 +03:00
Paul Chote
8730a7f223 Fix WithCargo desync. 2015-08-26 19:35:18 +02:00
Guido L
bc39fcda98 LoadScreen: Add fallback message when no Text or Image is specified. 2015-08-25 20:44:38 +02:00
reaperrr
508c99655c Made Armor upgradable 2015-08-25 20:12:37 +02:00
Pavel Penev
d5e0bf2169 Merge pull request #9006 from reaperrr/remove-cantarget
Remove legacy 0% = not targetable assumption
2015-08-25 20:03:31 +03:00
reaperrr
aff1e5afe7 Upgrade notice 2015-08-25 18:54:01 +02:00
reaperrr
050a9076ed Fix TS medic heal target validation 2015-08-25 18:54:00 +02:00
reaperrr
cb95eeb914 Fix RA target validation
0% versus no longer means cannot target
2015-08-25 18:53:59 +02:00
reaperrr
6161b72f3e TD target validation
This mod already implements ValidTargets as intended, but grounded helicopters should count as vehicles for target validation.
2015-08-25 18:53:58 +02:00
reaperrr
468b0b4223 Fix D2k target validation
0% versus no longer means not targetable.
2015-08-25 18:53:57 +02:00
abcdefg30
1ddab69025 Merge pull request #9131 from Mailaender/ts-logo
Added a Tiberian Sun loadscreen and shellmap logo
2015-08-25 11:53:59 +02:00
Pavel Penev
d48cf695f3 Merge pull request #9144 from Mailaender/opt-find-resource
Optimized FindResources worse case scenario path finding
2015-08-25 04:24:05 +03:00
abcdefg30
d5680f0ee0 Merge pull request #8952 from Mailaender/ts-debris-variation
Added more variation to Tiberian Sun debris
2015-08-24 22:02:13 +02:00
abcdefg30
67966ad704 Merge pull request #8731 from deniz1a/simplify-lobby-logic
Simplifies Start button logic in lobby
2015-08-24 21:27:05 +02:00
reaperrr
18b8eb30a3 Merge pull request #9134 from clemty/docs
minor LUA and trait documentation fixes, whitespace fixes
2015-08-24 21:26:20 +02:00
abcdefg30
b9f4431ed0 Merge pull request #9151 from penev92/bleed_summaries
Add a bit of code documentation
2015-08-24 21:18:11 +02:00
Pavel Penev
ae43d813ad Merge pull request #9024 from atlimit8/consolidateDefenseDeployedVehicle
Consolidate rules into ^Defense (all) & ^DeployedVehicle (ts)
2015-08-24 22:08:38 +03:00
Matthias Mailänder
5c2849a08f add a simple projectile with random sequences for debris effects 2015-08-24 21:05:37 +02:00
Matthias Mailänder
2a21c7d1f2 don't let bots do 2x the amount of path searches 2015-08-24 21:03:46 +02:00
Matthias Mailänder
7108344501 bail out early before trying impossible paths 2015-08-24 21:03:46 +02:00
clemty
2bbc1fcda4 LUA and trait documentation fixes
- Typo in documentation ("proximitry").
- Add spaces between sentences.
- Remove most occurrences of "  " (two spaces) unless clearly used as indendation
- Punctuation (although no fullstop after filenames like "notifications.yaml").
2015-08-24 19:41:15 +02:00
reaperrr
64bbfe4121 Merge pull request #9129 from Mailaender/ts-build-palette
Fixed black dots on Tiberian Sun build palette icons
2015-08-24 17:46:02 +02:00
reaperrr
7f928477f9 Merge pull request #9130 from Mailaender/gdi4-shellmap
Replaced the blank shellmap with something more interesting
2015-08-24 17:29:22 +02:00
Matthias Mailänder
6132ec6558 Merge pull request #9150 from penev92/bleed_dedicatedSound
Make lower-level Sound not require the server state directly
2015-08-24 06:44:51 +02:00
atlimit8
f45358c36d Consolidate defense rules into ^Defense & ^DeployedVehicle for ts mod 2015-08-23 22:42:10 -05:00
atlimit8
a83806d90c Consolidate defense structure rules into ^Defense for d2k mod 2015-08-23 22:39:13 -05:00
atlimit8
68ee859666 Consolidate defense structure rules into ^Defense for cnc mod 2015-08-23 22:39:13 -05:00
atlimit8
59cd477e3e Consolidate defense structure rules into ^Defense for ra mod 2015-08-23 22:39:13 -05:00
Pavel Penev
02dd5afbd9 Merge pull request #9058 from RoosterDragon/reduce-alloc
Reduce allocations in the main game loop
2015-08-24 02:11:08 +03:00
reaperrr
3821729744 Upgrade rule 2015-08-24 00:49:01 +02:00
reaperrr
ed81eaaac2 TS yaml changes 2015-08-24 00:49:00 +02:00
reaperrr
542d88245d D2k yaml changes 2015-08-24 00:48:59 +02:00
reaperrr
9780bb26c2 RA yaml changes 2015-08-24 00:48:58 +02:00
reaperrr
2293494c56 TD yaml changes 2015-08-24 00:48:57 +02:00
reaperrr
006e66a3c3 Refactored IQuantizeBodyOrientation implementation
Moved BodyOrientation and related interfaces from Game to Mods.Common.
Introduced QuantizeFacingsFromSequence trait.
With*Body render traits no longer implement IQuantizeBodyOrientation
themselves.
2015-08-24 00:48:56 +02:00
Pavel Penev
09a41d8bde Add a bit of code documentation 2015-08-24 01:47:35 +03:00
Pavel Penev
49e9ad2c7c Make lower-level Sound not require the server state directly 2015-08-24 01:36:56 +03:00
Pavel Penev
1d3cfcf378 Merge pull request #8632 from Mailaender/openra-platform
Removed the OpenAL/OpenGL/SDL2 dependency from the game engine
2015-08-24 00:45:27 +03:00
Pavel Penev
535863ea83 Merge pull request #9147 from Mailaender/exception-log-map
Added the current map to the exception.log
2015-08-24 00:29:52 +03:00
Matthias Mailänder
0fba872b73 replace blank shellmap with something more interesting 2015-08-23 22:49:17 +02:00
Matthias Mailänder
001d2cde30 add the map to the exception.log 2015-08-23 22:27:00 +02:00
Pavel Penev
d64f5f29a4 Merge pull request #9075 from deniz1a/fix-crate
Removes LocalPlayer check from HideMapCrateAction and RevealMapCrateAction.
2015-08-23 23:17:28 +03:00
Matthias Mailänder
bec209085b Merge pull request #7873 from penev92/bleed_raceToFaction
Replace old "country" and "race" name in the code with the generic "faction"
2015-08-23 17:49:40 +02:00
Matthias Mailänder
f7b0454b9e avoid an unnecessary overload 2015-08-23 07:58:07 +02:00
Matthias Mailänder
4059f83b7e remove redundant namespace repetition 2015-08-23 07:58:06 +02:00
Matthias Mailänder
bfc7013ba4 avoid magic numbers 2015-08-23 07:58:06 +02:00
Matthias Mailänder
6abd21e71d explicitly set the OpenTK GL context 2015-08-23 07:58:06 +02:00
Matthias Mailänder
17f3466451 untie the engine from SDL2 and MiniTK 2015-08-23 07:58:03 +02:00
Pavel Penev
60eea5a507 Merge pull request #8840 from deniz1a/dropdown-gap
Removes spacing between dropdown menu items.
2015-08-23 01:32:53 +03:00
Pavel Penev
dec2696e76 Change "Change faction" lobby command 2015-08-22 23:34:40 +03:00
Pavel Penev
05e081043b Rename last usages of "race" in UI YAML files 2015-08-22 23:34:38 +03:00
Pavel Penev
09f67d18bb Some internal "race" to "faction" renaming 2015-08-22 23:34:36 +03:00
Pavel Penev
a83fc81571 Merge pull request #9126 from LipkeGu/RadarWidget_crash
Add Cell check to RadarWidget
2015-08-22 22:58:19 +03:00
Pavel Penev
b1b576c41b Merge pull request #8797 from abcdefg30/gpsvanish
Add a GpsRemoveFrozenActor trait
2015-08-22 22:47:57 +03:00
abcdefg30
87580d0aab Add a GpsRemoveFrozenActor trait 2015-08-22 21:36:30 +02:00
abcdefg30
429e6145cb Merge pull request #9073 from pchote/remove-production-duplication
Minor Production trait cleanups.
2015-08-22 20:39:10 +02:00
Pavel Penev
6d0d5b52fe Merge pull request #9133 from abcdefg30/interiorsmudge
Fix smudges/scorches being displayed on interior clear ground
2015-08-22 21:27:24 +03:00
abcdefg30
0f599bfc10 Fix smudges/scorches being displayed on interior clear ground 2015-08-22 18:26:10 +02:00
Matthias Mailänder
79f38802be replace Tiberian Dawn artwork for consistency 2015-08-22 17:37:13 +02:00
Matthias Mailänder
2917d28545 set up original build click palette to fix dark pixel errors 2015-08-22 16:18:19 +02:00
reaperrr
8e9da7f897 unhardcode palettes and sequences 2015-08-22 16:09:07 +02:00
Matthias Mailänder
1c45ca75a7 Merge pull request #9034 from Biofreak1987/soviet07
Add Soviet07
2015-08-22 14:12:56 +02:00
deniz1a
3b36ddfc54 Removes LocalPlayer check from HideMapCrateAction and RevealMapCrateAction.
Fixes #9063.
Fixes #9127.
2015-08-22 14:37:39 +03:00
Matthias Mailänder
f325463204 Merge pull request #9117 from GraionDilach/infiltrate-fix
Prevent infiltrating allied targets.
2015-08-22 12:54:42 +02:00
Guido L
9bad84e117 Add Cell check to RadarWidget. 2015-08-22 09:31:09 +02:00
deniz1a
347143ba87 Adds TopBottomSpacing to GridLayout. 2015-08-22 04:04:05 +03:00
deniz1a
90897481f9 Adds TopBottomSpacing values to yaml files. 2015-08-22 03:51:07 +03:00
deniz1a
a534290dc5 Removes spacing between dropdown menu items. 2015-08-22 03:51:07 +03:00
Zimmermann Gyula
3670c003a4 Prevent infiltrating allied targets unless explicitly set. 2015-08-22 00:35:41 +02:00
Pavel Penev
b7af5f5291 Merge pull request #9018 from Mailaender/cnc-maps
Added high quality Tiberian Dawn community maps
2015-08-22 01:13:01 +03:00
abcdefg30
8783905c51 Merge pull request #8773 from dan9550/ts-yaml
Alter install logic to convert case of file names
2015-08-21 21:53:48 +02:00
Dan9550
a559f6d4ac Modified mod.yaml to respect case sensitive file names
Modified mod.yaml to respect case sensitive file names

Modified install logic to convert case of files on install

Revert initial changes
2015-08-21 23:42:10 +10:00
Pavel Penev
174bde57f1 Merge pull request #9123 from clemty/authors
add myself to AUTHORS
2015-08-21 13:38:28 +03:00
clemty
447326c328 add myself to AUTHORS 2015-08-21 12:06:32 +02:00
Pavel Penev
d803a06a1e Merge pull request #8995 from reaperrr/vxl-upgrades1
Made WithVoxelTurret and WithVoxelBarrel upgradable
2015-08-21 00:33:42 +03:00
Biofreak1987
2242ae8937 Add Soviet07 2015-08-20 22:41:52 +02:00
Matthias Mailänder
9a861bdfba Merge pull request #8700 from deniz1a/rename-disable-shroud
Renames "Disable Shroud & Fog" debug option to "Observer view".
2015-08-20 20:41:01 +02:00
Matthias Mailänder
913871f171 Merge pull request #9097 from LipkeGu/rules_terrainType_fixes
Fix TerrainTypes for walls and crates
2015-08-20 20:37:12 +02:00
Pavel Penev
20193f086f Merge pull request #8942 from reaperrr/explodes2
Add specific exception message when Explodes cannot find a weapon
2015-08-20 13:03:37 +03:00
Matthias Mailänder
59a7d743cb Merge pull request #9047 from clemty/tooltips
TD tooltip fixes
2015-08-19 22:08:53 +02:00
Matthias Mailänder
cafad9f843 Merge pull request #9092 from penev92/bleed_rename
Some more renaming from "race" to "faction"
2015-08-19 22:03:01 +02:00
abcdefg30
7612f60b22 Merge pull request #8939 from Mailaender/lint-map-scripts
Added checks for syntax errors in Lua scripts
2015-08-19 21:36:34 +02:00
abcdefg30
7e7e3723dc Add "check-scripts" to make.ps1 2015-08-19 21:21:01 +02:00
Matthias Mailänder
5a3e61a902 check the .lua scripts for syntax error 2015-08-19 21:21:01 +02:00
clemty
4351094bd7 TD tooltip fixes
- mention Apache being strong vs aircraft
- mention engineers will damage buildings, not just capture them

reverted:
- Sentences are now (mostly) lowercase, end with full-stop
- Changed "defence" tab tooltip to "defense"
2015-08-19 12:53:08 +02:00
RoosterDragon
3d94c4b216 Minor formatting fix in Mobile.cs. 2015-08-18 22:03:14 +01:00
RoosterDragon
7eab7220ff In CanMoveFreelyInto, check if transient actor checks are needed at the start.
When transient actors checks are not needed, all control flows in the method return true. Therefore, we can return true directly in this case. Checking this condition is cheaper than checking for a free sub-cell, so this allows us a faster exit when we don't need to check for transient actors.
2015-08-18 22:03:13 +01:00
RoosterDragon
ca75b5af30 Factor logic for determining if an actor blocks movement into IsBlockedBy. 2015-08-18 22:03:11 +01:00
RoosterDragon
6414743f8e Introduce HasCellCondition to avoid HasFlag overhead. 2015-08-18 22:03:09 +01:00
RoosterDragon
d415d3ba4e Reduce allocations in the main game loop.
- Cache the shroud projection even for flat maps to avoid allocating single element arrays.
- Avoid LINQ in shroud and map projection queries to avoid enumerator allocations.
- Avoid LINQ in calculation of sync values.
- Cache enumerables in ProductionQueue.
- Cache delegate in HackyAI.
2015-08-18 21:17:28 +01:00
abcdefg30
83b310713d Merge pull request #8905 from atlimit8/WithProductionOverlay_accept_OnOwnerChanged
WithProductionOverlay: replace ITick => INotifyCreated & add INotifyOwnerChanged
2015-08-18 21:17:00 +02:00
abcdefg30
ee09dd41bc Merge pull request #8957 from Mailaender/ts-decorations
Added Tiberian Sun decorational actors
2015-08-18 21:15:28 +02:00
reaperrr
e057a97217 Remove bogus ShadowIndex from TS cameo palette 2015-08-18 18:33:46 +02:00
Pavel Penev
663c9239df Mop up remaining "race" private variables 2015-08-18 00:26:11 +03:00
Pavel Penev
2b359b54c7 Add an upgrade rule for renaming crates' ValidRaces 2015-08-18 00:26:09 +03:00
Pavel Penev
1a95e7a9f1 Rename crates' ValidRaces 2015-08-18 00:26:07 +03:00
Pavel Penev
b6b107de46 Rename RenderSpritesInfo.RaceImages 2015-08-18 00:26:05 +03:00
Pavel Penev
1e817fad76 Merge pull request #9089 from Mailaender/editor-coordinate
Added a coordinate display to the map editor
2015-08-18 00:12:10 +03:00
Pavel Penev
3d292d8200 Merge pull request #8749 from Mailaender/lint-palettes
Added a lint rule for palette references
2015-08-17 23:09:53 +03:00
Matthias Mailänder
4f05681707 Merge pull request #8912 from reaperrr/ts-icons1
Added the Nod repair bay icon
2015-08-17 21:46:20 +02:00
Matthias Mailänder
322358ff3d also check shroud sequences 2015-08-17 21:36:55 +02:00
Matthias Mailänder
118782a85e check palette references 2015-08-17 21:36:45 +02:00
Matthias Mailänder
41698ab8bb show the current coordinate at the top 2015-08-17 21:21:52 +02:00
Matthias Mailänder
ba8e292b71 Merge pull request #9022 from RoosterDragon/less-sync
Sync only once per tick
2015-08-17 21:13:55 +02:00
abcdefg30
0c021770f0 Merge pull request #9076 from Mailaender/resource-sequences
Added missing check yaml references
2015-08-17 21:13:32 +02:00
Paul Chote
eae41b1750 Fix LST queue type. 2015-08-17 19:37:24 +01:00
reaperrr
4e633b21f6 Fixed D2k grenadier to not explode violently when reloading
Removed redundant Chance (default is 100 anyway).
2015-08-17 20:11:57 +02:00
reaperrr
3ae75f870c Add Explodes safeguards
Accept both null and empty string to disable explosion weapons.

Throw specific exception if weapon was not found.
Require Weapon (EmptyWeapon stays optional).
2015-08-17 20:11:38 +02:00
Pavel Penev
17b2a37e97 Merge pull request #9051 from abcdefg30/creepssetting
Fix the creeps setting being ignored
2015-08-17 18:57:06 +03:00
abcdefg30
0c4e691008 Rename HuskActor to Actor 2015-08-17 17:38:07 +02:00
abcdefg30
3dc5515d16 Remove references to 'husk' in the descriptions 2015-08-17 17:38:06 +02:00
abcdefg30
5967b06189 Remove the 'workaround' in gdi05 2015-08-17 17:38:05 +02:00
abcdefg30
b24c1845fb Adjust the upgrade rule for SpawnActorOnDeath 2015-08-17 17:38:04 +02:00
abcdefg30
9f5a8a6d1f Fix the creeps setting being ignored 2015-08-17 17:38:03 +02:00
Guido L
ce9bbd2a52 Fix TerrainTypes for walls and crates 2015-08-17 16:44:20 +02:00
Pavel Penev
71c5d69dc5 Merge pull request #8938 from abcdefg30/heliheigth
Have flying actors account for terrain height
2015-08-17 13:53:39 +03:00
Pavel Penev
ac46a356f4 Merge pull request #9057 from Mailaender/map-tilset-sequence-nre
Fixed a likely null reference exception when checking mod sequence definitions
2015-08-17 13:44:06 +03:00
abcdefg30
e05ba2454c Merge pull request #9084 from Mailaender/sonar-shroud
Fixed sonar pulse revealing shroud
2015-08-16 23:58:09 +02:00
Matthias Mailänder
51fabae106 change editor tooltip to actor: description (type) 2015-08-16 21:58:17 +02:00
Pavel Penev
4600d1c62b Merge pull request #9071 from pchote/fix-shroud-healthbars
Fix visibility queries when fog is disabled.
2015-08-16 19:19:16 +03:00
Matthias Mailänder
61cba78d62 rebalance sonar to not reveal any shroud 2015-08-16 13:32:26 +02:00
Matthias Mailänder
e3194ed35a Merge pull request #9080 from pchote/fix-spy-overlay
Replace icon veterancy overlay with new artwork.
2015-08-16 09:33:47 +02:00
Paul Chote
78391e7c65 Replace icon veterancy overlay with new artwork.
New shp includes frames for higher level veterancy
for potential future use.
2015-08-15 20:59:52 +01:00
Paul Chote
0b13a173ae Merge pull request #9053 from abcdefg30/dropzone-w-shroudrange
Fix a crash in dropzone-w
2015-08-15 10:25:45 +01:00
Paul Chote
a4c4cec4ee Merge pull request #9050 from GraionDilach/fix-td-shippedost
Increase ShippedSoundtracks of the TD mod.
2015-08-15 10:15:04 +01:00
Paul Chote
b7d549e2d2 Merge pull request #9062 from clemty/renamedefencetab
TD: renames tooltip on "Defence" tab to "Support"
2015-08-15 10:04:35 +01:00
Matthias Mailänder
37b6dc1603 add maps from the resource site 2015-08-15 11:03:45 +02:00
Matthias Mailänder
dc477c3ced add missing sequence reference 2015-08-15 09:59:53 +02:00
Matthias Mailänder
d0634d9bb7 add missing weapon reference 2015-08-15 09:57:42 +02:00
Matthias Mailänder
299e5881b3 Merge pull request #9072 from pchote/fix-shroud-option-case
Fix capitalisation of the "Explored Map" option.
2015-08-14 23:26:14 +02:00
Paul Chote
30d0ce2dee Remove bogus property from d2k conyard. 2015-08-14 19:44:24 +01:00
Paul Chote
8dfd42b30e Make Production.Info readonly. 2015-08-14 19:44:24 +01:00
Paul Chote
086467020e Simplify IOccupySpace check. 2015-08-14 19:44:24 +01:00
Paul Chote
d730b4ee50 Remove duplicated DoProduction from Production. 2015-08-14 19:35:48 +01:00
Paul Chote
1d5644476a Fix capitalisation of the "Explored Map" option. 2015-08-14 19:29:04 +01:00
Paul Chote
738a500876 Fix visibility queries when fog is disabled. 2015-08-14 19:26:01 +01:00
clemty
31fe6b7e9d TD: renames tooltip on "Defence" tab to "Support" as suggested in #9047#issuecomment-130350382 2015-08-14 00:04:26 +02:00
Matthias Mailänder
9dabf9019f Merge pull request #9026 from baxxxster/bleed
Changed TimestampFormat for server logs
2015-08-13 21:16:23 +02:00
Matthias Mailänder
e13f983946 Merge pull request #9038 from penev92/bleed_rename
Some more renaming from "race" to "faction"
2015-08-13 21:13:31 +02:00
Matthias Mailänder
c5b1e6be5f fix a null reference exception at map (tileset) 2015-08-13 20:28:52 +02:00
abcdefg30
92c41aedb6 Fix a crash in dropzone-w
We don't need RevealsShroud here anyway,
as the map disabled Shroud and Fog.
2015-08-12 23:34:39 +02:00
abcdefg30
dae70321c2 Merge pull request #8792 from deniz1a/reveal-shroud
Changes shroud lobby setting from disabling shroud to revealing it.
2015-08-12 22:04:15 +02:00
abcdefg30
032ea2a377 Merge pull request #9032 from deniz1a/fix-8935
Fixes observer widgets being loaded multiple times at game end.
2015-08-12 20:47:39 +02:00
Zimmermann Gyula
e29a103e32 Increase ShippedSoundtracks of the TD mod. 2015-08-12 17:45:01 +02:00
abcdefg30
15f22c32b3 Merge pull request #8886 from atimoschenkow/fly-queue
Fix queue commands for Plane/Heli
2015-08-12 00:50:43 +02:00
abcdefg30
7e5b4f61eb Merge pull request #9036 from reaperrr/heli-reserve
Improve aircraft unreserving of structures
2015-08-11 23:36:32 +02:00
reaperrr
d97d4c82a3 Plane style fixes 2015-08-11 15:49:06 +02:00
reaperrr
9cbc16b6a3 If aircraft has FallsToEarth, return instead of just skipping reservation. 2015-08-11 15:47:45 +02:00
reaperrr
6fc8de69ac Unreserve aircraft when removed from world 2015-08-11 15:02:31 +02:00
deniz1a
e59cd78322 Fixes observer widgets being loaded multiple times at game end. 2015-08-11 12:31:23 +03:00
Pavel Penev
4d11195989 Rename MPStartUnitsInfo.Races to Factions
Also add an upgrade rule.
2015-08-11 04:00:08 +03:00
Pavel Penev
fd01e95d6c Rename EmitInfantryOnSellInfo.Races to Factions
Also rename the rest of "race" in that file.
2015-08-11 03:46:12 +03:00
Pavel Penev
8b58f3a1d8 Rename ProductionQueue.Race to Faction 2015-08-11 03:29:49 +03:00
Pavel Penev
6e9b5ed2c9 Rename ProductionQueueInfo.Race to Factions
Also add an upgrade rule.
2015-08-11 03:27:12 +03:00
Pavel Penev
a6dae8e854 Merge pull request #9017 from reaperrr/lower-rank1
Rebalanced stat gains from rank-up
2015-08-11 02:36:01 +03:00
Pavel Penev
c99dcb3f24 Merge pull request #9023 from RoosterDragon/actor-lookup
Add a method to look up actors by ID.
2015-08-11 02:28:36 +03:00
abcdefg30
923c5405d2 Merge pull request #8965 from Mailaender/rallypoint-polish
Fixed the RallyPoint trait for Tiberian Sun polish
2015-08-10 22:03:13 +02:00
Matthias Mailänder
27016367c7 use more appropriate waypoint art for rally points 2015-08-10 21:35:21 +02:00
Matthias Mailänder
df206ddb18 unhardcode rallypoint sprites 2015-08-10 21:35:21 +02:00
Matthias Mailänder
b536e677fb rename RallyPoint.RallyPoint to RallyPoint.Offset 2015-08-10 21:35:21 +02:00
reaperrr
f11331a7cd Merge pull request #8989 from Mailaender/ts-light-cloak
Removed cloak effect from light posts
2015-08-10 19:14:21 +02:00
Glenn Martin Jensen
441f23d1e6 Changed TimestampFormat for server logs
Changed TimestampFormat for server logs
2015-08-10 16:53:51 +02:00
abcdefg30
22184a6791 Merge pull request #8934 from Mailaender/travis-mono4
Updated Travis to use Mono 4.0
2015-08-09 22:16:25 +02:00
abcdefg30
797b9d18c8 Merge pull request #8915 from Mailaender/cpos-mpos-test
Added a unit test for MPos conversions
2015-08-09 22:01:33 +02:00
RoosterDragon
89f5a23077 When dumping the sync report, log all the orders issued in the frame that desynced. 2015-08-09 20:59:59 +01:00
RoosterDragon
709befda08 Sync only once per tick, rather than once per tick and once per order.
This greatly improves performance by not syncing the world state for every single order processed as this becomes very expensive, at the cost of being unable to directly pinpoint the order that causes a desync. Instead the granularity of detecting desyncs is reduced to the tick level.
2015-08-09 20:58:20 +01:00
Matthias Mailänder
4d360a66ed Merge pull request #8979 from penev92/bleed_production
Remove producer-is-in-world assumptions from Production
2015-08-09 21:29:29 +02:00
RoosterDragon
a0117a3890 Add a method to look up actors by ID.
This can be used to speed up some methods.
2015-08-09 20:25:34 +01:00
Matthias Mailänder
021b344532 Merge pull request #8988 from reaperrr/fix-moveanim
Fix for WithAttackAnimation breaking WithMoveAnimation
2015-08-09 21:21:33 +02:00
Matthias Mailänder
84fdd97f94 Merge pull request #8744 from abcdefg30/viceroidhusk
Merge SpawnViceroid into LeavesHusk
2015-08-09 21:07:32 +02:00
Matthias Mailänder
9efc3b377b Merge pull request #9020 from abcdefg30/clearscreenshot
Fix shroud outside map bounds being transparent
2015-08-09 20:55:23 +02:00
abcdefg30
e8477b1b5a Rename LeavesHusk to SpawnActorOnDeath 2015-08-09 19:24:14 +02:00
abcdefg30
1a1e1e08d7 Fix shroud outside map bounds being transparent 2015-08-09 18:55:13 +02:00
reaperrr
d8ca66bec5 Merge pull request #9014 from Mailaender/immobile-groundcheck
Fixed ground level checks for immobile actors
2015-08-09 15:48:50 +02:00
Pavel Penev
03cc69538e Merge pull request #9015 from Mailaender/publishcoverity-0.11
Fixed automatic Coverity build submissions
2015-08-09 13:52:34 +03:00
reaperrr
fdeb901da6 Rebalance TS rankups 2015-08-09 12:47:26 +02:00
reaperrr
05b82dbc02 Rebalance D2k rankups 2015-08-09 12:47:11 +02:00
reaperrr
cd41ecaa78 Rebalance TD rankups 2015-08-09 12:46:55 +02:00
reaperrr
b5352c24a0 Rebalance RA rankups 2015-08-09 12:46:41 +02:00
Matthias Mailänder
bf53f981d4 fix path for PublishCoverity 0.11.0 2015-08-09 11:50:15 +02:00
Matthias Mailänder
208cfa9542 fix IsAtGroundLevel always being false for immobile actors 2015-08-09 11:45:25 +02:00
reaperrr
277ac04f85 Remove legacy 0% = not targetable assumption 2015-08-09 01:11:10 +02:00
abcdefg30
abf5047072 Add an upgrade rule and update the default mods 2015-08-08 23:23:32 +02:00
abcdefg30
538723f8fb Merge SpawnViceroid into LeavesHusk 2015-08-08 23:23:31 +02:00
abcdefg30
1bc84275fd Merge pull request #9000 from reaperrr/fix-misl-shadow
Fixed missile shadow on elevated terrain
2015-08-08 23:20:23 +02:00
reaperrr
433eac34b5 Fixes missile shadow on elevated terrain 2015-08-08 20:14:05 +02:00
reaperrr
e527513cbd Made voxel turret and barrel traits upgradable. 2015-08-08 18:13:27 +02:00
Matthias Mailänder
7f42664b23 don't cloak light posts 2015-08-08 17:32:58 +02:00
reaperrr
281a87acbc Fix WithAttackAnimation breaking WithMoveAnimation 2015-08-08 17:00:38 +02:00
Matthias Mailänder
4e101afb6d Merge pull request #8838 from reaperrr/withbarrel2
Fixed WithBarrel and made it upgradable
2015-08-08 16:50:42 +02:00
Matthias Mailänder
88b98fa8ef Merge pull request #8975 from penev92/bleed_rename
Some more renaming from "country" and "race" to "faction"
2015-08-08 16:13:16 +02:00
Pavel Penev
3cb707ad3c Remove producer-is-in-world assumptions from Production
D2k upgrades need to be actors that never actor the world, produced by the PlayerActor, who is also not in the world, but the Production trait expects the producer to be in the world even if it has Exit.MoveIntoWorld = False, allowing the producees to not enter the world.
2015-08-08 16:36:24 +03:00
atimoschenkow
b1c51cc910 Fix for #6161 queue commands for Plane/Heli (do not ignore Order.Queued in ResolveOrder()) 2015-08-07 23:41:03 +02:00
Matthias Mailänder
d358c495c5 test the coordinate system conversions 2015-08-07 00:31:58 +02:00
Matthias Mailänder
ddb01b6ae5 fix warnings about unused local variables 2015-08-07 00:31:24 +02:00
Matthias Mailänder
8aac12ffb4 add palettes (decorational sprites) 2015-08-05 18:27:13 +02:00
Matthias Mailänder
1685dce28f add drums 2015-08-05 18:22:00 +02:00
Matthias Mailänder
6c3b668a86 add boxes (decorational crates) 2015-08-05 18:18:47 +02:00
Pavel Penev
10aee9ffa9 Rid Transforms and Transform of "race" 2015-08-05 18:15:11 +03:00
Pavel Penev
faf0da6994 Rename Session.Slot.LockRace 2015-08-05 18:11:10 +03:00
Pavel Penev
2f38239f32 Clean up LobbyUtils from "race" a bit 2015-08-05 18:07:26 +03:00
Pavel Penev
5eaf5b5b51 Rename Session.Client.Race 2015-08-05 17:45:56 +03:00
Pavel Penev
50f4508123 Rid SpawnSelectorTooltipLogic from "Country" 2015-08-05 17:35:07 +03:00
Pavel Penev
957af9ac5e Rename SpawnOccupant.Country 2015-08-05 17:31:00 +03:00
deniz1a
2ca949dbd2 Renames Shroud lobby option to Explored map. 2015-08-04 17:31:07 +03:00
deniz1a
7efbf0633e Changes shroud lobby setting from disabling shroud to revealing it. 2015-08-04 17:31:06 +03:00
abcdefg30
a94e35163a Have flying actors account for terrain height 2015-08-04 15:48:03 +02:00
Matthias Mailänder
9170db9642 update Travis to use Mono 4 2015-08-04 12:00:45 +02:00
reaperrr
dff3201eca Use Nod variant of repair bay icon 2015-08-03 22:12:27 +02:00
atlimit8
d785c50c3e WithProductionOverlay: replace ITick => INotifyCreated & add INotifyOwnerChanged 2015-08-03 10:00:33 -05:00
deniz1a
2abd1b5350 Renames "Disable Shroud & Fog" debug option to "Disable visibility checks". 2015-08-02 00:30:42 +03:00
reaperrr
72d67de414 Fixed WithBarrel and made it upgradable.
Fixed missing Requires<ArmamentInfo>.
Removed now-redundant Barrel property (has been unused since RenderSprites animation keys were removed).
Made trait classes public.
Made ctor-cached trait lookups readonly.
2015-08-01 19:31:59 +02:00
deniz1a
f2ac6c9980 Some yaml cleanups. 2015-07-25 23:03:15 +03:00
deniz1a
ac6e915839 Simplifies Start button logic in lobby. 2015-07-25 23:03:14 +03:00
deniz1a
1a968588b6 Shows real owner of disguised units to allies. 2015-07-10 23:00:04 +03:00
3947 changed files with 410250 additions and 140441 deletions

View File

@@ -1,16 +1,213 @@
; Top-most http://editorconfig.org/ file
root = true
charset=utf-8
; Unix-style newlines
[*]
end_of_line = LF
insert_final_newline = true
trim_trailing_whitespace = true
; 4-column tab indentation
; 4-column tab indentation and .NET coding conventions
[*.cs]
indent_style = tab
indent_size = 4
dotnet_separate_import_directive_groups = false
dotnet_sort_system_directives_first = true
csharp_style_var_elsewhere = true:suggestion
csharp_style_var_for_built_in_types = true:suggestion
csharp_style_var_when_type_is_apparent = true:suggestion
csharp_prefer_braces = when_multiline:suggestion
csharp_using_directive_placement = outside_namespace:suggestion
csharp_new_line_before_open_brace = all
csharp_space_around_binary_operators = before_and_after
## Naming styles:
dotnet_naming_style.camel_case.capitalization = camel_case
dotnet_naming_style.pascal_case.capitalization = pascal_case
dotnet_naming_style.i_prefix_pascal_case.capitalization = pascal_case
dotnet_naming_style.i_prefix_pascal_case.required_prefix = I
## Symbol specifications:
dotnet_naming_symbols.const_locals.applicable_kinds = local
dotnet_naming_symbols.const_locals.applicable_accessibilities = *
dotnet_naming_symbols.const_locals.required_modifiers = const
dotnet_naming_symbols.const_fields.applicable_kinds = field
dotnet_naming_symbols.const_fields.applicable_accessibilities = *
dotnet_naming_symbols.const_fields.required_modifiers = const
dotnet_naming_symbols.static_readonly_fields.applicable_kinds = field
dotnet_naming_symbols.static_readonly_fields.applicable_accessibilities = *
dotnet_naming_symbols.static_readonly_fields.required_modifiers = static, readonly
dotnet_naming_symbols.non_private_readonly_fields.applicable_kinds = field
dotnet_naming_symbols.non_private_readonly_fields.applicable_accessibilities = public, internal, protected, protected_internal, private_protected
dotnet_naming_symbols.non_private_readonly_fields.required_modifiers = readonly
dotnet_naming_symbols.private_or_protected_fields.applicable_kinds = field
dotnet_naming_symbols.private_or_protected_fields.applicable_accessibilities = private, protected, private_protected
dotnet_naming_symbols.interfaces.applicable_kinds = interface
dotnet_naming_symbols.interfaces.applicable_accessibilities = *
dotnet_naming_symbols.parameters_and_locals.applicable_kinds = parameter, local
dotnet_naming_symbols.parameters_and_locals.applicable_accessibilities = *
dotnet_naming_symbols.most_symbols.applicable_kinds = namespace, class, struct, enum, field, property, method, local_function, event, delegate, type_parameter
dotnet_naming_symbols.most_symbols.applicable_accessibilities = *
## Naming rules:
dotnet_naming_rule.const_locals_should_be_pascal_case.symbols = const_locals
dotnet_naming_rule.const_locals_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.const_locals_should_be_pascal_case.severity = warning
dotnet_naming_rule.const_fields_should_be_pascal_case.symbols = const_fields
dotnet_naming_rule.const_fields_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.const_fields_should_be_pascal_case.severity = warning
dotnet_naming_rule.static_readonly_fields_should_be_pascal_case.symbols = static_readonly_fields
dotnet_naming_rule.static_readonly_fields_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.static_readonly_fields_should_be_pascal_case.severity = warning
dotnet_naming_rule.non_private_readonly_fields_should_be_pascal_case.symbols = non_private_readonly_fields
dotnet_naming_rule.non_private_readonly_fields_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.non_private_readonly_fields_should_be_pascal_case.severity = warning
dotnet_naming_rule.private_or_protected_fields_should_be_camel_case.symbols = private_or_protected_fields
dotnet_naming_rule.private_or_protected_fields_should_be_camel_case.style = camel_case
dotnet_naming_rule.private_or_protected_fields_should_be_camel_case.severity = warning
dotnet_naming_rule.interfaces_should_be_i_prefix_pascal_case.symbols = interfaces
dotnet_naming_rule.interfaces_should_be_i_prefix_pascal_case.style = i_prefix_pascal_case
dotnet_naming_rule.interfaces_should_be_i_prefix_pascal_case.severity = warning
dotnet_naming_rule.parameters_and_locals_should_be_camel_case.symbols = parameters_and_locals
dotnet_naming_rule.parameters_and_locals_should_be_camel_case.style = camel_case
dotnet_naming_rule.parameters_and_locals_should_be_camel_case.severity = warning
dotnet_naming_rule.most_symbols_should_be_pascal_case.symbols = most_symbols
dotnet_naming_rule.most_symbols_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.most_symbols_should_be_pascal_case.severity = warning
## Formatting:
# Also handled by StyleCopAnalyzers - SA1024: ColonsMustBeSpacedCorrectly.
csharp_space_after_colon_in_inheritance_clause = true
# Also handled by StyleCopAnalyzers - SA1024: ColonsMustBeSpacedCorrectly.
csharp_space_before_colon_in_inheritance_clause = true
# Also handled by StyleCopAnalyzers - SA1000: KeywordsMustBeSpacedCorrectly.
csharp_space_after_keywords_in_control_flow_statements = true
# Leave code block on single line.
csharp_preserve_single_line_blocks = true
# Leave statements and member declarations on the same line.
csharp_preserve_single_line_statements = true
# IDE0049, IDE-only counterpart of StyleCopAnalyzers - SA1121: UseBuiltInTypeAlias.
dotnet_style_predefined_type_for_member_access = true
# IDE0049, IDE-only counterpart of StyleCopAnalyzers - SA1121: UseBuiltInTypeAlias.
dotnet_style_predefined_type_for_locals_parameters_members = true
## Others:
# Show an IDE warning when default access modifiers are explicitly specified.
dotnet_style_require_accessibility_modifiers = omit_if_default:warning
# use 'var' instead of explicit type
dotnet_diagnostic.IDE0007.severity = warning
# Don't prefer braces (for one liners).
dotnet_diagnostic.IDE0011.severity = silent
# Object initialization can be simplified / Use object initializer.
dotnet_diagnostic.IDE0017.severity = warning
# Collection initialization can be simplified
dotnet_diagnostic.IDE0028.severity = warning
# Simplify 'default' expression
dotnet_diagnostic.IDE0034.severity = warning
# Modifiers are not ordered.
dotnet_diagnostic.IDE0036.severity = warning
# Raise a warning on build when default access modifiers are explicitly specified.
dotnet_diagnostic.IDE0040.severity = warning
# Make field readonly.
dotnet_diagnostic.IDE0044.severity = warning
# Unused private member.
dotnet_diagnostic.IDE0052.severity = warning
# Unnecessary value assignment.
dotnet_diagnostic.IDE0059.severity = warning
# Unused parameter.
dotnet_diagnostic.IDE0060.severity = warning
# Naming rule violation.
dotnet_diagnostic.IDE1006.severity = warning
# Avoid unnecessary zero-length array allocations.
dotnet_diagnostic.CA1825.severity = warning
# Do not use Enumerable methods on indexable collections. Instead use the collection directly.
dotnet_diagnostic.CA1826.severity = warning
# Count() is used where Any() could be used instead to improve performance.
dotnet_diagnostic.CA1827.severity = warning
# Use Length/Count property instead of Enumerable.Count method.
dotnet_diagnostic.CA1829.severity = warning
# Use string.Contains(char) instead of string.Contains(string) with single characters.
dotnet_diagnostic.CA1847.severity = warning
; 4-column tab indentation
[*.yaml]
indent_style = tab
indent_size = 4
indent_size = 4
# Use 'Count' property instead of 'Any' method.
dotnet_diagnostic.RCS1080.severity = warning
# Use read-only auto-implemented property.
dotnet_diagnostic.RCS1170.severity = warning
# Unnecessary interpolated string.
dotnet_diagnostic.RCS1214.severity = warning
# Unnecessary usage of verbatim string literal.
dotnet_diagnostic.RCS1192.severity = warning
# Use pattern matching instead of combination of 'as' operator and null check.
dotnet_diagnostic.RCS1221.severity = warning
# Expression is always equal to 'true'.
dotnet_diagnostic.RCS1215.severity = warning
# Use StringComparison when comparing strings.
dotnet_diagnostic.RCS1155.severity = warning
# Abstract type should not have public constructors.
dotnet_diagnostic.RCS1160.severity = warning
# Optimize 'Dictionary<TKey, TValue>.ContainsKey' call.
dotnet_diagnostic.RCS1235.severity = warning
# Call extension method as instance method.
dotnet_diagnostic.RCS1196.severity = warning

8
.gitattributes vendored
View File

@@ -1,12 +1,10 @@
# Enforce LF normalization on Windows
*.yaml eol=lf
*.lua eol=lf
*.cs eol=lf
*.csproj eol=lf
*.sln eol=lf
* text=lf
# Custom for Visual Studio
*.cs diff=csharp
*.sln merge=union
*.csproj merge=union
*.vbproj merge=union
*.fsproj merge=union
*.dbproj merge=union

33
.github/ISSUE_TEMPLATE/bug-report.md vendored Normal file
View File

@@ -0,0 +1,33 @@
---
name: Bug report
about: Report unexpected behavior or any issues you experienced in OpenRA.
title: ''
labels: Bug
assignees: ''
---
<!-- This is a guideline that shall help you to include information we need to understand and fix the issue you experienced. Please follow the instructions and replace any placeholders that are written in capital letters. Instructions like this comment will not be visible in your report. -->
<!-- Important: Help us to avoid duplicates and use the search function to find existing reports for your issue. Please do not submit duplicate reports! Try to help others to find your report by using a precise title. -->
## Issue Summary
<!-- Please provide a a clear and concise description of what the issue is below. -->
DESCRIPTION
## Reproduction
<!-- Please provide information about how the issue can be reproduced below. -->
STEPS TO REPRODUCE THE ISSUE
## Expected behavior
<!-- Please explain what you expected to happen below. -->
EXPECTED BEHAVIOR
## Screenshots / Screen recordings / Replays
<!-- If applicable, attach screenshots, screen recordings or replays to help explain your problem. -->

14
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,14 @@
blank_issues_enabled: false
contact_links:
- name: Frequently Asked Questions
url: https://github.com/OpenRA/OpenRA/wiki/FAQ#frequently-asked-questions
about: Explanations for common problems and questions.
- name: OpenRA Forum
url: https://forum.openra.net/
about: Please ask questions about modding here.
- name: OpenRA Discord server
url: https://discord.openra.net/
about: Join the community Discord server for community discussion and support.
- name: OpenRA IRC Channel
url: https://web.libera.chat/#openra
about: Join our development IRC channel on Libera for discussion of development topics.

35
.github/ISSUE_TEMPLATE/crash-report.md vendored Normal file
View File

@@ -0,0 +1,35 @@
---
name: Crash report
about: Report a game crash. Check the FAQ first https://github.com/OpenRA/OpenRA/wiki/FAQ#common-issues
title: My game crashed
labels: Crash
assignees: ''
---
<!-- This is a guideline that shall help you to include all the required information we depend on to investigate and fix game-breaking bugs. Please follow the instructions and replace any placeholders that are written in capital letters. Instructions like this comment will not be visible in your report. -->
## System Information
<!-- Information about the operating system, engine version, game mod and package source are mandatory for investigating and fixing crashes. -->
- Operating System: OPERATING SYSTEM
- OpenRA Version: ENGINE VERSION
- OpenRA Mod: GAME MOD
- Source: Official download package OR self-compiled OR third-party package
- For self-compiled or third-party packages: Mono version
## Exception log
<!-- Please replace the placeholder below with the content of the exception.log file. The three backticks before and after the placeholder are used for formatting, so don't remove them. If you don't find the log folder consult https://github.com/OpenRA/OpenRA/wiki/FAQ#my-game-just-crashed. -->
```
PASTE LOG HERE
```
## Replay
<!-- If you have a replay file for the game that crashed, and it crashes again when you play it back, it will be a great help for us to fix the issue. Please compress the replay into a zip file and drag it here to include it in the report. -->
## Additional information
<!-- Please tell us below everything that you think is important for us to know about the crash. Specifically, what you were doing in the moment before the crash or ideally steps to reproduce it are very valuable information. -->

View File

@@ -0,0 +1,35 @@
---
name: Feature / Enhancement request
about: Describe what you think is missing or could be improved in OpenRA.
title: ''
labels: Idea/Wishlist
assignees: ''
---
<!-- This is a guideline that shall help you to describe your idea for a missing feature or enhancement. Please follow the instructions and replace any placeholders that are written in capital letters. Instructions like this comment will not be visible in your report. -->
<!-- Important: Help us to avoid duplicates and use the search function to find existing requests. Please do not submit duplicate requests! Try to help others to find your request by using a precise title. -->
## Motivation
<!-- Please provide a clear and concise description of the motivation behind the request. If your request is related to a problem or limitation, describe it below. -->
REQUEST MOTIVATION
## Proposed solution
<!-- Please describe your idea and how it is intended to address the motivation of your request. Provide a clear and concise description of the proposed changes. -->
PROPOSED SOLUTION
## Side effects
<!-- Changes often have side effects or unintended consequences. If you expect that your solution has any side effects, please describe them below. -->
EXPECTED SIDE EFFECTS
## Alternatives
<!-- Please outline any alternative solutions you have considered. -->
ALTERNATIVES

16
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,16 @@
Thank you for your contribution to OpenRA!
Please be aware that we do not have enough project maintainers to match the rate of contributions, so it may take several days before somebody is able to respond to your Pull Request.
You can help speed up the review process by following a few steps:
* Make sure that you have read and understand the OpenRA Coding Standard (see https://github.com/OpenRA/OpenRA/wiki/Coding-Standard).
* Write quality commit messages (see https://chris.beams.io/posts/git-commit/).
* Only commit changes that directly relate to your Pull Request. Use your Git interface to unstage any unrelated changes to project files, line endings, whitespace, or other files.
* Review the code diff view below to double check that your changes satisfy the above three points.
* Use the `make test` and `make check` commands to check for (and fix!) any issues that are reported by our automated tests.
* If you are changing shared mod or engine code, make sure that you have tested your changes in all four default mods.
* Respond to review comments as soon as you reasonably can. Reviewers will usually prioritize Pull Requests that are still fresh in their minds. Make sure to leave a comment when you push new changes, otherwise GitHub does not automatically notify reviewers!
* Leave a polite comment asking for reviews if a week or more has passed without feedback.
If you need any help you can ask on Discord (https://discord.openra.net) or in the #openra IRC channel on Libera (not as active as Discord).

77
.github/workflows/ci.yml vendored Normal file
View File

@@ -0,0 +1,77 @@
name: Continuous Integration
on:
push:
pull_request:
branches: [ bleed, 'prep-*' ]
jobs:
linux:
name: Linux (.NET 6.0)
runs-on: ubuntu-20.04
steps:
- name: Clone Repository
uses: actions/checkout@v2
- name: Install .NET 6.0
uses: actions/setup-dotnet@v1
with:
dotnet-version: '6.0.x'
- name: Check Code
run: |
make check
- name: Check Mods
run: |
sudo apt-get install lua5.1
make check-scripts
make test
linux-mono:
name: Linux (mono)
runs-on: ubuntu-20.04
steps:
- name: Clone Repository
uses: actions/checkout@v2
- name: Check Code
run: |
mono --version
make RUNTIME=mono check
- name: Check Mods
run: |
# check-scripts does not depend on .net/mono, so is not needed here
make RUNTIME=mono test
windows:
name: Windows (.NET 6.0)
runs-on: windows-2019
steps:
- name: Clone Repository
uses: actions/checkout@v2
- name: Install .NET 6.0
uses: actions/setup-dotnet@v1
with:
dotnet-version: '6.0.x'
- name: Check Code
shell: powershell
run: |
# Work around runtime failures on the GH Actions runner
dotnet nuget add source https://api.nuget.org/v3/index.json -n nuget.org
.\make.ps1 check
dotnet build OpenRA.Test\OpenRA.Test.csproj -c Debug --nologo -p:TargetPlatform=win-x64
dotnet test bin\OpenRA.Test.dll --test-adapter-path:.
- name: Check Mods
run: |
chocolatey install lua --version 5.1.5.52
$ENV:Path = $ENV:Path + ";C:\Program Files (x86)\Lua\5.1\"
.\make.ps1 check-scripts
.\make.ps1 test

140
.github/workflows/documentation.yml vendored Normal file
View File

@@ -0,0 +1,140 @@
name: Deploy Documentation
on:
workflow_dispatch:
inputs:
tag:
description: 'Git Tag'
required: true
default: 'release-xxxxxxxx'
jobs:
wiki:
name: Update Wiki
if: github.repository == 'openra/openra'
runs-on: ubuntu-20.04
steps:
- name: Clone Repository
uses: actions/checkout@v2
with:
ref: ${{ github.event.inputs.tag }}
- name: Install .NET 6
uses: actions/setup-dotnet@v1
with:
dotnet-version: '6.0.x'
- name: Prepare Environment
run: |
make all
- name: Clone Wiki
uses: actions/checkout@v2
with:
repository: openra/openra.wiki
token: ${{ secrets.DOCS_TOKEN }}
path: wiki
- name: Update Wiki (Playtest)
if: startsWith(github.event.inputs.tag, 'playtest-')
env:
GIT_TAG: ${{ github.event.inputs.tag }}
run: |
./utility.sh all --settings-docs "${GIT_TAG}" > "wiki/Settings (playtest).md"
- name: Update Wiki (Release)
if: startsWith(github.event.inputs.tag, 'release-')
env:
GIT_TAG: ${{ github.event.inputs.tag }}
run: |
./utility.sh all --settings-docs "${GIT_TAG}" > "wiki/Settings.md"
- name: Push Wiki
env:
GIT_TAG: ${{ github.event.inputs.tag }}
run: |
cd wiki
git config --local user.email "actions@github.com"
git config --local user.name "GitHub Actions"
git add --all
git commit -m "Update auto-generated documentation for ${GIT_TAG}"
git push origin master
docs:
name: Update docs.openra.net
if: github.repository == 'openra/openra'
runs-on: ubuntu-20.04
steps:
- name: Clone Repository
uses: actions/checkout@v2
with:
ref: ${{ github.event.inputs.tag }}
- name: Install .NET 6
uses: actions/setup-dotnet@v1
with:
dotnet-version: '6.0.x'
- name: Prepare Environment
run: |
make all
- name: Clone docs.openra.net (Playtest)
if: startsWith(github.event.inputs.tag, 'playtest-')
uses: actions/checkout@v2
with:
repository: openra/docs
token: ${{ secrets.DOCS_TOKEN }}
path: docs
ref: playtest
- name: Clone docs.openra.net (Release)
if: startsWith(github.event.inputs.tag, 'release-')
uses: actions/checkout@v2
with:
repository: openra/docs
token: ${{ secrets.DOCS_TOKEN }}
path: docs
ref: release
- name: Update docs.openra.net (Playtest)
if: startsWith(github.event.inputs.tag, 'playtest-')
env:
GIT_TAG: ${{ github.event.inputs.tag }}
run: |
./utility.sh all --docs "${GIT_TAG}" | python3 ./packaging/format-docs.py > "docs/api/traits.md"
./utility.sh all --weapon-docs "${GIT_TAG}" | python3 ./packaging/format-docs.py > "docs/api/weapons.md"
./utility.sh all --sprite-sequence-docs "${GIT_TAG}" | python3 ./packaging/format-docs.py > "docs/api/sprite-sequences.md"
./utility.sh all --lua-docs "${GIT_TAG}" > "docs/api/lua.md"
- name: Update docs.openra.net (Release)
if: startsWith(github.event.inputs.tag, 'release-')
env:
GIT_TAG: ${{ github.event.inputs.tag }}
run: |
./utility.sh all --docs "${GIT_TAG}" | python3 ./packaging/format-docs.py > "docs/api/traits.md"
./utility.sh all --weapon-docs "${GIT_TAG}" | python3 ./packaging/format-docs.py > "docs/api/weapons.md"
./utility.sh all --sprite-sequence-docs "${GIT_TAG}" | python3 ./packaging/format-docs.py > "docs/api/sprite-sequences.md"
./utility.sh all --lua-docs "${GIT_TAG}" > "docs/api/lua.md"
- name: Commit docs.openra.net
env:
GIT_TAG: ${{ github.event.inputs.tag }}
run: |
cd docs
git config --local user.email "actions@github.com"
git config --local user.name "GitHub Actions"
git add api/*.md
git commit -m "Update auto-generated documentation for ${GIT_TAG}"
- name: Push docs.openra.net (Release)
if: startsWith(github.event.inputs.tag, 'release-')
run: |
cd docs
git push origin release
- name: Push docs.openra.net (Playtest)
if: startsWith(github.event.inputs.tag, 'playtest-')
run: |
cd docs
git push origin playtest

86
.github/workflows/itch.yml vendored Normal file
View File

@@ -0,0 +1,86 @@
name: Deploy itch.io Packages
on:
workflow_dispatch:
inputs:
tag:
description: 'Git Tag'
required: true
default: 'release-xxxxxxxx'
jobs:
itch:
name: Deploy to itch.io
runs-on: ubuntu-20.04
if: github.repository == 'openra/openra'
steps:
- name: Download Packages
run: |
wget -q "https://github.com/${{ github.repository }}/releases/download/${{ github.event.inputs.tag }}/OpenRA-${{ github.event.inputs.tag }}-x64.exe"
wget -q "https://github.com/${{ github.repository }}/releases/download/${{ github.event.inputs.tag }}/OpenRA-${{ github.event.inputs.tag }}-x64-winportable.zip" -O "OpenRA-${{ github.event.inputs.tag }}-x64-win-itch.zip"
wget -q "https://github.com/${{ github.repository }}/releases/download/${{ github.event.inputs.tag }}/OpenRA-${{ github.event.inputs.tag }}.dmg"
wget -q "https://github.com/${{ github.repository }}/releases/download/${{ github.event.inputs.tag }}/OpenRA-Dune-2000-x86_64.AppImage"
wget -q "https://github.com/${{ github.repository }}/releases/download/${{ github.event.inputs.tag }}/OpenRA-Red-Alert-x86_64.AppImage"
wget -q "https://github.com/${{ github.repository }}/releases/download/${{ github.event.inputs.tag }}/OpenRA-Tiberian-Dawn-x86_64.AppImage"
wget -q "https://raw.githubusercontent.com/${{ github.repository }}/${{ github.event.inputs.tag }}/packaging/.itch.toml"
zip -u "OpenRA-${{ github.event.inputs.tag }}-x64-win-itch.zip" .itch.toml
- name: Publish Windows Installer
uses: josephbmanley/butler-publish-itchio-action@master
env:
BUTLER_CREDENTIALS: ${{ secrets.BUTLER_CREDENTIALS }}
CHANNEL: win
ITCH_GAME: openra
ITCH_USER: openra
VERSION: ${{ github.event.inputs.tag }}
PACKAGE: OpenRA-${{ github.event.inputs.tag }}-x64.exe
- name: Publish Windows Itch Bundle
uses: josephbmanley/butler-publish-itchio-action@master
env:
BUTLER_CREDENTIALS: ${{ secrets.BUTLER_CREDENTIALS }}
CHANNEL: itch
ITCH_GAME: openra
ITCH_USER: openra
VERSION: ${{ github.event.inputs.tag }}
PACKAGE: OpenRA-${{ github.event.inputs.tag }}-x64-win-itch.zip
- name: Publish macOS Package
uses: josephbmanley/butler-publish-itchio-action@master
env:
BUTLER_CREDENTIALS: ${{ secrets.BUTLER_CREDENTIALS }}
CHANNEL: macos
ITCH_GAME: openra
ITCH_USER: openra
VERSION: ${{ github.event.inputs.tag }}
PACKAGE: OpenRA-${{ github.event.inputs.tag }}.dmg
- name: Publish RA AppImage
uses: josephbmanley/butler-publish-itchio-action@master
env:
BUTLER_CREDENTIALS: ${{ secrets.BUTLER_CREDENTIALS }}
CHANNEL: linux-ra
ITCH_GAME: openra
ITCH_USER: openra
VERSION: ${{ github.event.inputs.tag }}
PACKAGE: OpenRA-Red-Alert-x86_64.AppImage
- name: Publish TD AppImage
uses: josephbmanley/butler-publish-itchio-action@master
env:
BUTLER_CREDENTIALS: ${{ secrets.BUTLER_CREDENTIALS }}
CHANNEL: linux-cnc
ITCH_GAME: openra
ITCH_USER: openra
VERSION: ${{ github.event.inputs.tag }}
PACKAGE: OpenRA-Tiberian-Dawn-x86_64.AppImage
- name: Publish D2k AppImage
uses: josephbmanley/butler-publish-itchio-action@master
env:
BUTLER_CREDENTIALS: ${{ secrets.BUTLER_CREDENTIALS }}
CHANNEL: linux-d2k
ITCH_GAME: openra
ITCH_USER: openra
VERSION: ${{ github.event.inputs.tag }}
PACKAGE: OpenRA-Dune-2000-x86_64.AppImage

129
.github/workflows/packaging.yml vendored Normal file
View File

@@ -0,0 +1,129 @@
name: Release Packaging
on:
push:
tags:
- 'release-*'
- 'playtest-*'
- 'devtest-*'
jobs:
source:
name: Source Tarball
runs-on: ubuntu-20.04
steps:
- name: Clone Repository
uses: actions/checkout@v2
- name: Prepare Environment
run: echo "GIT_TAG=${GITHUB_REF#refs/tags/}" >> ${GITHUB_ENV}
- name: Package Source
run: |
mkdir -p build/source
./packaging/source/buildpackage.sh "${GIT_TAG}" "${PWD}/build/source"
- name: Upload Packages
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref }}
overwrite: true
file_glob: true
file: build/source/*
linux:
name: Linux AppImages
runs-on: ubuntu-20.04
steps:
- name: Clone Repository
uses: actions/checkout@v2
- name: Install .NET 6.0
uses: actions/setup-dotnet@v1
with:
dotnet-version: '6.0.x'
- name: Prepare Environment
run: echo "GIT_TAG=${GITHUB_REF#refs/tags/}" >> ${GITHUB_ENV}
- name: Package AppImages
run: |
mkdir -p build/linux
./packaging/linux/buildpackage.sh "${GIT_TAG}" "${PWD}/build/linux"
- name: Upload Packages
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref }}
overwrite: true
file_glob: true
file: build/linux/*
macos:
name: macOS Disk Image
runs-on: macos-11
steps:
- name: Clone Repository
uses: actions/checkout@v2
- name: Install .NET 6.0
uses: actions/setup-dotnet@v1
with:
dotnet-version: '6.0.x'
- name: Prepare Environment
run: echo "GIT_TAG=${GITHUB_REF#refs/tags/}" >> ${GITHUB_ENV}
- name: Package Disk Image
env:
MACOS_DEVELOPER_IDENTITY: ${{ secrets.MACOS_DEVELOPER_IDENTITY }}
MACOS_DEVELOPER_CERTIFICATE_BASE64: ${{ secrets.MACOS_DEVELOPER_CERTIFICATE_BASE64 }}
MACOS_DEVELOPER_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_DEVELOPER_CERTIFICATE_PASSWORD }}
MACOS_DEVELOPER_USERNAME: ${{ secrets.MACOS_DEVELOPER_USERNAME }}
MACOS_DEVELOPER_PASSWORD: ${{ secrets.MACOS_DEVELOPER_PASSWORD }}
run: |
mkdir -p build/macos
./packaging/macos/buildpackage.sh "${GIT_TAG}" "${PWD}/build/macos"
- name: Upload Package
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref }}
overwrite: true
file_glob: true
file: build/macos/*
windows:
name: Windows Installers
runs-on: ubuntu-20.04
steps:
- name: Clone Repository
uses: actions/checkout@v2
- name: Install .NET 6.0
uses: actions/setup-dotnet@v1
with:
dotnet-version: '6.0.x'
- name: Prepare Environment
run: |
echo "GIT_TAG=${GITHUB_REF#refs/tags/}" >> ${GITHUB_ENV}
sudo apt-get update
sudo apt-get install nsis wine64
- name: Package Installers
run: |
mkdir -p build/windows
./packaging/windows/buildpackage.sh "${GIT_TAG}" "${PWD}/build/windows"
- name: Upload Packages
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref }}
overwrite: true
file_glob: true
file: build/windows/*

129
.gitignore vendored
View File

@@ -1,73 +1,56 @@
# Visual Studio
Release
bin
obj
*.ncb
*.vcproj*
*.suo
*.user
*.sln.cache
*.manifest
*.CodeAnalysisLog.xml
*.lastcodeanalysissucceeded
_ReSharper.*/
# movies
*.vqa
# archives
*.mix
# binaries
mods/*/*.dll
mods/*/*.mdb
/*.dll
/*.dll.config
/*.so
/*.dylib
/*.pdb
/*.mdb
/*.exe
thirdparty/download/*
*.mmdb.gz
# backup files by various editors
*~
*.orig
\#*
.*.sw?
# Monodevelop
*.pidb
*.userprefs
# Mac OS X
.DS_Store
# XCode
packaging/osx/launcher/build/
packaging/osx/launcher/OpenRA.xcodeproj/*.pbxuser
packaging/osx/launcher/OpenRA.xcodeproj/*.perspectivev3
packaging/osx/launcher/OpenRA.xcodeproj/*.mode1v3
temp.c
temp.o
temp.s
OpenRA.Launcher.Mac/build/
OpenRA.Launcher.Mac/OpenRA.xcodeproj/*.pbxuser
OpenRA.Launcher.Mac/OpenRA.xcodeproj/*.perspectivev3
OpenRA.Launcher.Mac/OpenRA.xcodeproj/*.mode1v3
*.resources
# auto-generated documentation
DOCUMENTATION.md
Lua-API.md
*.html
openra.6
# StyleCop
*.Cache
StyleCopViolations.xml
# SublimeText
*.sublime-project
*.sublime-workspace
# Visual Studio
Release
bin
obj
*.ncb
*.vcproj*
*.suo
*.user
*.sln.cache
*.manifest
*.CodeAnalysisLog.xml
*.lastcodeanalysissucceeded
_ReSharper.*/
/.vs
# Visual Studio Code
/.vscode/settings.json
# binaries
IP2LOCATION-LITE-DB1.IPV6.BIN.ZIP
# backup files by various editors
*~
*.orig
\#*
.*.sw?
# Monodevelop
*.pidb
*.userprefs
# Mac OS X
.DS_Store
# auto-generated documentation
DOCUMENTATION.md
WEAPONS.md
Lua-API.md
Settings.md
*.html
openra.6
update.log
# SublimeText
*.sublime-project
*.sublime-workspace
# NUnit
/TestResult.xml
/lib/
# Support directory
/Support
# IntelliJ files
.idea

9
.kateproject Normal file
View File

@@ -0,0 +1,9 @@
{
"name": "OpenRA"
, "files": [ { "git": 1 } ]
, "build": {
"directory": "."
, "build": "make all"
, "clean": "make clean"
}
}

View File

@@ -1,77 +0,0 @@
# Travis-CI Build for OpenRA
# see travis-ci.org for details
language: csharp
mono: 3.12.0
# http://docs.travis-ci.com/user/migrating-from-legacy
sudo: false
cache:
directories:
- thirdparty/download
addons:
apt:
packages:
- nsis
- nsis-common
- dpkg
- markdown
# Environment variables
env:
secure: "C0+Hlfa0YGErxUuWV00Tj6p45otC/D3YwYFuLpi2mj1rDFn/4dgh5WRngjvdDBVbXJ3duaZ78jPHWm1jr7vn2jqj9yETsCIK9psWd38ep/FEBM0SDr6MUD89OuXk/YyvxJAE+UXF6bXg7giey09g/CwBigjMW7ynET3wNAWPHPs="
# Fetch dependencies
# Run the build script
# Check source code with StyleCop
# call OpenRA to check for YAML errors
script:
- travis_retry make all-dependencies
- make all
- make check
- make test
# Automatically update the trait documentation and Lua API
after_success:
- test $TRAVIS_PULL_REQUEST == "false" && make docs && cd packaging && ./update-wiki.sh $TRAVIS_BRANCH; cd ..
# Only watch the development branch and tagged release.
branches:
only:
- /^release-.*$/
- /^playtest-.*$/
- /^pkgtest-.*$/
- /^prep-.*$/
- bleed
# Notify developers when build passed/failed.
notifications:
irc:
template:
- "%{repository}#%{build_number} %{commit} %{author}: %{message} %{build_url}"
channels:
- "irc.freenode.net#openra"
use_notice: true
skip_join: true
before_deploy:
- export PATH=$PATH:$HOME/usr/bin
- DOTVERSION=`echo ${TRAVIS_TAG} | sed "s/-/\\./g"`
- cd packaging
- mkdir build
- ./package-all.sh ${TRAVIS_TAG} ${PWD}/build/
deploy:
provider: releases
api_key:
secure: "g/LU11f+mjqv+lj0sR1UliHwogXL4ofJUwoG5Dbqlvdf5UTLWytw/OWSCv8RGyuh10miyWeaoqHh1cn2C1IFhUEqN1sSeKKKOWOTvJ2FR5mzi9uH3d/MOBzG5icQ7Qh0fZ1YPz5RaJJhYu6bmfvA/1gD49GoaX2kxQL4J5cEBgg="
file:
- build/OpenRA-${TRAVIS_TAG}.exe
- build/OpenRA-${TRAVIS_TAG}.zip
- build/openra_${DOTVERSION}_all.deb
skip_cleanup: true
on:
all_branches: true
tags: true
repo: OpenRA/OpenRA

9
.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,9 @@
{
"recommendations": [
"ms-dotnettools.csharp",
"openra.oraide-vscode",
"openra.vscode-openra-lua",
"EditorConfig.EditorConfig",
"macabeus.vscode-fluent",
]
}

63
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,63 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch (TD)",
"type": "coreclr",
"request": "launch",
"program": "${workspaceRoot}/bin/OpenRA.dll",
"windows": {
"program": "${workspaceRoot}/bin/OpenRA.exe",
},
"args": ["Game.Mod=cnc", "Engine.EngineDir=.."],
"preLaunchTask": "build",
},
{
"name": "Launch (RA)",
"type": "coreclr",
"request": "launch",
"program": "${workspaceRoot}/bin/OpenRA.dll",
"windows": {
"program": "${workspaceRoot}/bin/OpenRA.exe",
},
"args": ["Game.Mod=ra", "Engine.EngineDir=.."],
"preLaunchTask": "build",
},
{
"name": "Launch (D2k)",
"type": "coreclr",
"request": "launch",
"program": "${workspaceRoot}/bin/OpenRA.dll",
"windows": {
"program": "${workspaceRoot}/bin/OpenRA.exe",
},
"args": ["Game.Mod=d2k", "Engine.EngineDir=.."],
"preLaunchTask": "build",
},
{
"name": "Launch (TS)",
"type": "coreclr",
"request": "launch",
"program": "${workspaceRoot}/bin/OpenRA.dll",
"windows": {
"program": "${workspaceRoot}/bin/OpenRA.exe",
},
"args": ["Game.Mod=ts", "Engine.EngineDir=.."],
"preLaunchTask": "build",
},
{
"name": "Launch Utility",
"type": "coreclr",
"request": "launch",
"program": "${workspaceRoot}/bin/OpenRA.Utility.dll",
"windows": {
"program": "${workspaceRoot}/bin/OpenRA.Utility.exe",
},
"args": ["all", "--docs", "{DEV_VERSION}"],
"env": {
"ENGINE_DIR": ".."
},
"preLaunchTask": "build",
},
]
}

36
.vscode/tasks.json vendored Normal file
View File

@@ -0,0 +1,36 @@
{
"version": "2.0.0",
"options": {
"env": {
"ENGINE_DIR": ".."
}
},
"tasks": [
{
"label": "build",
"command": "make",
"args": ["all", "CONFIGURATION=Debug"],
"windows": {
"command": "make.cmd"
}
},
{
"label": "Run Utility",
"command": "dotnet ${workspaceRoot}/bin/OpenRA.Utility.dll ${input:modId} ${input:command}",
"type": "shell",
}
],
"inputs": [
{
"id": "modId",
"description": "ID of the mod to run",
"default": "all",
"type": "promptString"
}, {
"id": "command",
"description": "Name of the command + parameters",
"default": "",
"type": "promptString"
},
]
}

118
AUTHORS
View File

@@ -2,30 +2,34 @@ OpenRA wouldn't be where it is today without the
hard work of many contributors.
The OpenRA developers are:
* Chris Forbes (chrisf)
* Igor Popov (ihptru)
* Gustas Kažukauskas (PunkPun)
* Lukas Franke (abcdefg30)
* Matthias Mailänder (Mailaender)
* Oliver Brakmann (obrakmann)
* Paul Chote (pchote)
* Pavel Penev (penev92)
* Reaperrr
* Tom Roostan (RoosterDragon)
Previous developers included:
* Alli Witheford (alzeih)
* Caleb Anderson (RobotCaleb)
* Chris Forbes (chrisf)
* Curtis Shmyr (hamb)
* Daniel Hernandez (Mancano)
* Igor Popov (ihptru)
* Megan Bowra-Dean (beedee)
* Mike Bundy (kehaar)
* Oliver Brakmann (obrakmann)
* Paul Chote (pchote)
* Pavel Penev (penev92)
* Reaperrr
* Robert Pepperell (ytinasni)
* ScottNZ
* Tom Roostan (RoosterDragon)
Also thanks to:
* abmyii
* anvilvapre (anvilvapre)
* Adam Valy (Tschokky)
* Akseli Virtanen (RAGEQUIT)
* Alexander Fast (mizipzor)
* Alexis Hunt (alercah)
* Allen262
* Andrew Aldridge (i80and)
* Andrew Perkins
@@ -35,57 +39,88 @@ Also thanks to:
* Arik Lirette (Angusm3)
* Barnaby Smith (mvi)
* Bellator
* Bernd Stellwag (burned42)
* Biofreak
* Braxton Williams (Buddytex)
* Brendan Gluth (Mechanical_Man)
* Brent Gardner (bggardner)
* Bryan Wilbur
* Bugra Cuhadaroglu (BugraC)
* Christer Ulfsparre (Holloweye)
* Chris Cameron (Vesuvian)
* Chris Grant (Unit158)
* Christer Ulfsparre (Holloweye)
* Christoph Lahner (chlah)
* clem
* Cody Brittain (Generalcamo)
* Constantin Helmig (CH4Code)
* D2k Sardaukar
* D'Arcy Rush (r34ch)
* Daniel Derejvanik (Harisson)
* Danny Keary (Dan9550)
* David Jiménez (Rydra)
* David Russell (DavidARussell)
* DeadlySurprise
* Dmitri Suvorov (suvjunmd)
* dtluna
* Eduardo Cáceres (eduherminio)
* Erasmus Schroder (rasco)
* Eric Bajumpaa (SteelPhase)
* Evgeniy Sergeev (evgeniysergeev)
* Fahrradkette
* Florian Wiesbauer (FiveAces)
* Frank Razenberg (zzattack)
* Gareth Needham (Ripley`)
* Glen Anderson (GlenAnderson)
* Glen Anderson (glen7)
* Glenn Martin Jensen (Baxxster)
* Gordon Martin (Happy0)
* Guido Lipke (LipkeGu)
* Gyula Zimmermann (Graion Dilach)
* Hervé Matysiak (Herve-M)
* Huw Pascoe
* Ian T. Jacobsen (Smilex)
* Imago
* Iran
* Ishan Bhargava (ishantheperson)
* Ivaylo Draganov (dragunoff)
* Jacob Dufault (jacobdufault)
* James Dunne (jsd)
* James Gilbert (DSUK)
* Jan-Willem Buurlage (jwbuurlage)
* Jason (atlimit8)
* Jeff Harris (jeff_1amstudios)
* Jefri Sevkin (Arular)
* Jes
* Joakim Lindberg (booom3)
* Joe Alam (joealam)
* John Turner (whinis)
* Jonas A. Lind (SoScared)
* Joppy Furr
* Kanar
* Kenny Hoxworth (hoxworth)
* Kevin Azzam (ChaoticMind)
* Krishnakanth Mallik
* Kyle Smith (Smitty)
* Kyrre Soerensen (zypres)
* Lawrence Wang
* Lesueur Benjamin (Valkirie)
* Maarten Meuris (Nyerguds)
* Manuel Geiger (Ectras)
* Mark Olson (markolson)
* Markus Hartung (hartmark)
* Matija Hustic (matija-hustic)
* Matthew Gatland (mgatland)
* Matthew Uzzell (MUzzell)
* Matthijs Benschop (Nerdie)
* Max621
* Max Ugrumov (katzsmile)
* Mazar Farran (mazarf)
* Michael Rätzel
* Michael Silber (frühstück)
* Michael Sztolcman (s1w_)
* Mike Gagné (AngryBirdz)
* Muh
* Mustafa Alperen Seki (MustaphaTR)
* Neil Shivkar (havok13888)
* Nikolay Fomin (netnazgul)
* Nooze
* Nukem
* Okunev Yu Dmitry (xaionaro)
@@ -93,23 +128,35 @@ Also thanks to:
* Paolo Chiodi (paolochiodi)
* Paul Dovydaitis (pdovy)
* Pavlos Touboulidis (pav)
* Pedro Ferreira Ramos (bateramos)
* Peter Amrehn (jongleur1983)
* Pizzaoverhead
* Pi Delport (pjdelport)
* Psydev
* Raphael Vogt (TheRaffy, Yellow)
* Raymond Bedrossian (Squiggles211)
* Raymond Martineau (mart0258)
* Riderr3
* riiga
* Rikhardur Bjarni Einarsson (WolfGaming)
* Sascha Biedermann (bidifx)
* Sebastien Kerguen (xanax)
* Sean Hunt (coppro)
* Shawn Collins (UberWaffe)
* Simon Verbeke (Saticmotion)
* Stuart McHattie (SDJMcHattie)
* Taryn Hill (Phrohdoh)
* Teemu Nieminen (Temeez)
* Thomas Christlieb (ThomasChr)
* Tim Mylemans (gecko)
* Tirili
* Tomas Einarsson (Mesacer)
* Tom van Leth (tovl)
* Trevor Nichols (ocdi)
* Tristan Keating (Kilkakon)
* Tristan Mühlbacher (MicroBit)
* UnknownProgrammer
* Vladimir Komarov (VrKomarov)
* Wojciech Walaszek (Voidwalker)
* Wuschel
Using GNU FreeFont distributed under the GNU GPL
@@ -123,20 +170,8 @@ FreeType License.
Using OpenAL Soft distributed under the GNU LGPL.
Using MaxMind GeoIP2 .NET API distributed under
the Apache 2.0 license.
Using GeoLite2 data created by MaxMind and
distributed under the CC BY-SA 3.0 license.
Using SharpFont created by Robert Rouhani and
distributed under the MIT license.
Using the Open Toolkit distributed under the
MIT license.
Using SDL2# created by Ethan Lee and released
under the zlib license.
Using SDL2-CS and OpenAL-CS created by Ethan
Lee and released under the zlib license.
Using Eluant created by Chris Howie and released
under the MIT license.
@@ -144,14 +179,41 @@ under the MIT license.
Using FuzzyLogicLibrary (fuzzynet) by Dmitry
Kaluzhny and released under the GNU GPL terms.
Using Mono.Nat by Alan McGovern and Ben
Motmans and distributed under the MIT license.
Using Mono.Nat by Alan McGovern, Ben Motmans,
Nicholas Terry distributed under the MIT license.
Using MP3Sharp by Robert Bruke and Zane Wagner
licensed under the GNU LGPL Version 3.
Using TagLib# by Stephen Shaw licensed under the
GNU LGPL Version 2.1.
Using NVorbis by Andrew Ward distributed under
the MIT license.
Using ICSharpCode.SharpZipLib initially by Mike
Krueger and distributed under the GNU GPL terms.
Using rix0rrr.BeaconLib developed by Rico Huijbers
distributed under MIT License.
Using DiscordRichPresence developed by Lachee
distributed under MIT License.
Using Json.NET developed by James Newton-King
distributed under MIT License.
Using ANGLE distributed under the BS3 3-Clause license.
Using Pfim developed by Nick Babcock
distributed under the MIT license.
Using Linguini by the Space Station 14 team
licensed under Apache and MIT terms.
This site or product includes IP2Location LITE data
available from http://www.ip2location.com.
Finally, special thanks goes to the original teams
at Westwood Studios and EA for creating the classic
games which OpenRA aims to reimagine.

76
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,76 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of experience,
nationality, personal appearance, race, religion, or sexual identity and
orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by private-messaging a project team member (users with a + in front
of their name) via our IRC channel (#openra on Libera
[webchat](https://web.libera.chat/#openra)). All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/

View File

@@ -1,5 +1,8 @@
# OpenRA Contributing Guidelines
## Participating
Help us keep OpenRA open and inclusive. Please read and follow our [Code of Conduct](https://github.com/OpenRA/OpenRA/blob/bleed/CODE_OF_CONDUCT.md).
## Bug reports
* Have you read the [FAQ](https://github.com/OpenRA/OpenRA/wiki/FAQ)?
@@ -17,7 +20,7 @@
Please `git rebase` to the latest revision of the bleed branch.
Don't forget to add youself to [AUTHORS](https://github.com/OpenRA/OpenRA/blob/bleed/AUTHORS).
Don't forget to add yourself to [AUTHORS](https://github.com/OpenRA/OpenRA/blob/bleed/AUTHORS).
Please propose a [CHANGELOG](https://github.com/OpenRA/OpenRA/wiki/CHANGELOG) entry in the pull-request comments.

52
Directory.Build.props Normal file
View File

@@ -0,0 +1,52 @@
<Project>
<PropertyGroup>
<OutputType>Library</OutputType>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Optimize>true</Optimize>
<LangVersion>7.3</LangVersion>
<DebugSymbols>true</DebugSymbols>
<EngineRootPath Condition="'$(EngineRootPath)' == ''">..</EngineRootPath>
<OutputPath>$(EngineRootPath)/bin</OutputPath>
<PlatformTarget>AnyCPU</PlatformTarget>
<ExternalConsole>false</ExternalConsole>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
<CodeAnalysisRuleSet>$(EngineRootPath)/OpenRA.ruleset</CodeAnalysisRuleSet>
<Nullable>disable</Nullable>
</PropertyGroup>
<PropertyGroup>
<TargetFramework Condition="'$(MSBuildRuntimeType)'!='Mono'">net6.0</TargetFramework>
<TargetFramework Condition="'$(MSBuildRuntimeType)'=='Mono'">netstandard2.1</TargetFramework>
</PropertyGroup>
<PropertyGroup>
<TargetPlatform Condition="$([MSBuild]::IsOsPlatform('Windows'))">win-x64</TargetPlatform>
<TargetPlatform Condition="$([MSBuild]::IsOsPlatform('Linux'))">linux-x64</TargetPlatform>
<TargetPlatform Condition="$([MSBuild]::IsOsPlatform('OSX'))">osx-x64</TargetPlatform>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
<DefineConstants>DEBUG;TRACE</DefineConstants>
<Optimize>false</Optimize>
</PropertyGroup>
<ItemGroup>
<!-- Work around an issue where Rider does not detect files in the project root using the default glob -->
<Compile Include="**/*.cs" Exclude="$(DefaultItemExcludes)" />
</ItemGroup>
<Target Name="DisableAnalyzers" BeforeTargets="CoreCompile" Condition="'$(Configuration)'=='Release'">
<!-- Disable code style analysis on Release builds to improve compile-time performance -->
<ItemGroup Condition="'$(Configuration)'=='Release'">
<Analyzer Remove="@(Analyzer)" />
</ItemGroup>
</Target>
<!-- StyleCop -->
<ItemGroup>
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.2" PrivateAssets="All" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="All" />
</ItemGroup>
</Project>

View File

@@ -6,68 +6,78 @@ The following lists per-platform dependencies required to build from source.
Windows
=======
* [Windows PowerShell >= 4.0](http://microsoft.com/powershell)
* [.NET Framework >= 4.0 (Client Profile)](http://www.microsoft.com/en-us/download/details.aspx?id=17113)
* [SDL 2](http://www.libsdl.org/download-2.0.php) (included)
* [FreeType](http://gnuwin32.sourceforge.net/packages/freetype.htm) (included)
* [zlib](http://gnuwin32.sourceforge.net/packages/zlib.htm) (included)
* [OpenAL](http://kcat.strangesoft.net/openal.html) (included)
* [liblua 5.1](http://luabinaries.sourceforge.net/download.html) (included)
Compiling OpenRA requires the following dependencies:
* [Windows PowerShell >= 4.0](http://microsoft.com/powershell) (included by default in recent Windows 10 versions)
* [.NET 6 SDK](https://dotnet.microsoft.com/download/dotnet/6.0) (or via Visual Studio)
You need to fetch the thirdparty dependencies using [NuGet](http://www.nuget.org) and place them at the appropriate places by typing `make dependencies` in a command terminal.
To compile OpenRA, open the `OpenRA.sln` solution in the main folder, build it from the command-line with `dotnet` or use the Makefile analogue command `make all` scripted in PowerShell syntax.
To compile OpenRA, open the `OpenRA.sln` solution in the main folder, build it from the command-line with MSBuild or use the Makefile analogue command `make all` scripted in PowerShell syntax.
Run the game with `OpenRA.Game.exe Game.Mod=ra` for Red Alert or `OpenRA.Game.exe Game.Mod=cnc` for Tiberian Dawn.
Run the game with `launch-game.cmd`. It can be handed arguments that specify the exact mod one wishes to run, for example, run `launch-game.cmd Game.Mod=ra` to launch Red Alert, `launch-game.cmd Game.Mod=cnc` to start Tiberian dawn or `launch-game.cmd Game.Mod=d2k` to launch Dune 2000.
Linux
=====
Use `make dependencies` to map the native libraries to your system, fetch the remaining CLI dependencies using [NuGet](http://www.nuget.org) and place them at the appropriate places.
.NET 6 or Mono (version 6.4 or later) is required to compile OpenRA. We recommend using .NET 6 when possible, as Mono is poorly packaged by most Linux distributions (e.g. missing the required `msbuild` toolchain), and has been deprecated as a standalone project.
To compile OpenRA, run `make all` from the command line.
The [.NET 6 download page](https://dotnet.microsoft.com/download/dotnet/6.0) provides repositories for various package managers and binary releases for several architectures. If you prefer to use Mono, we suggest adding the [upstream repository](https://www.mono-project.com/download/stable/#download-lin) for your distro to obtain the latest version and the `msbuild` toolchain.
Run with either `launch-game.sh` or `mono --debug OpenRA.Game.exe`.
To compile OpenRA, run `make` from the command line (or `make RUNTIME=mono` if using Mono). After this one can run the game with `./launch-game.sh`. It is also possible to specify the mod you wish to run from the command line, e.g. with `./launch-game.sh Game.Mod=ts` if you wish to try the experimental Tiberian Sun mod.
Type `sudo make install-all` for system wide installation. Run `make install-linux-shortcuts` to get startup scripts, icons and desktop files. You can then run from the `openra` shortcut.
The default behaviour on the x86_64 architecture is to download several pre-compiled native libraries using the Nuget packaging manager. If you prefer to use system libraries, compile instead using `make TARGETPLATFORM=unix-generic`.
Debian/Ubuntu
-------------
If you choose to use system libraries, or your system is not x86_64, you will need to install [SDL 2](https://www.libsdl.org/download-2.0.php), [FreeType](http://gnuwin32.sourceforge.net/packages/freetype.htm), [OpenAL](https://openal-soft.org/), and [liblua 5.1](http://luabinaries.sourceforge.net/download.html) before compiling OpenRA.
* mono-dmcs
* libmono-system-windows-forms4.0-cil
* nuget
* cli-common-dev (>= 2.10)
* libfreetype6
* libopenal1
* liblua5.1-0
* libsdl2-2.0-0
* xdg-utils
* zenity
These can be installed using your package manager on various distros:
openSUSE
--------
<details><summary>Arch Linux</summary>
* mono-devel
* nuget
* openal
* freetype2
* SDL2
* lua51
* xdg-utils
* zenity
```
sudo pacman -S openal libgl freetype2 sdl2 lua51
```
</details>
<details><summary>Debian/Ubuntu</summary>
Gentoo
------
```
sudo apt install libfreetype6 libopenal1 liblua5.1-0 libsdl2-2.0-0
```
</details>
<details><summary>Fedora</summary>
* dev-lang/mono
* dev-dotnet/libgdiplus
* dev-dotnet/nuget
* media-libs/freetype:2
* media-libs/libsdl2
* media-libs/openal
* virtual/jpeg
* virtual/opengl
* dev-lang/lua-5.1.5
* x11-misc/xdg-utils
* gnome-extra/zenity
```
sudo dnf install SDL2 freetype "lua = 5.1" openal-soft
```
</details>
<details><summary>Gentoo</summary>
```
sudo emerge -av media-libs/freetype:2 media-libs/libsdl2 media-libs/openal virtual/opengl '=dev-lang/lua-5.1.5*'
```
</details>
<details><summary>Mageia</summary>
```
sudo dnf install SDL2 freetype "lib*lua5.1" "lib*freetype2" "lib*sdl2.0_0" openal-soft
```
</details>
<details><summary>openSUSE</summary>
```
sudo zypper in openal-soft freetype2 SDL2 lua51
```
</details>
<details><summary>Red Hat Enterprise Linux (and rebuilds, e.g. CentOS)</summary>
The EPEL repository is required in order for the following command to run properly.
```
sudo yum install SDL2 freetype "lua = 5.1" openal-soft
```
</details>
Type `sudo make install` for system-wide installation. Run `sudo make install-linux-shortcuts` to get startup scripts, icons and desktop files. You can then run the Red Alert by executing the `openra-ra` command, the Dune 2000 mod by running the `openra-d2k` command and Tiberian Dawn by the `openra-cnc` command. Alternatively, you can also run these mods by clicking on their desktop shortcuts if you ran `sudo make install-linux-shortcuts`.
macOS
=====
[.NET 6](https://dotnet.microsoft.com/download/dotnet/6.0) or [Mono](https://www.mono-project.com/download/stable/#download-mac) (version 6.4 or later) is required to compile OpenRA. We recommend using .NET 6 unless you are running a very old version of macOS (10.9 through 10.14).
To compile OpenRA, run `make` from the command line (or `make RUNTIME=mono` if using Mono). Run with `./launch-game.sh`.

526
Makefile
View File

@@ -1,60 +1,43 @@
############################# INSTRUCTIONS #############################
#
# to compile, run:
# make [DEBUG=false]
# make
#
# to compile with development tools, run:
# make all [DEBUG=false]
# to compile using Mono (version 6.4 or greater) instead of .NET 6, run:
# make RUNTIME=mono
#
# to compile using system libraries for native dependencies, run:
# make [RUNTIME=net6] TARGETPLATFORM=unix-generic
#
# to check the official mods for erroneous yaml files, run:
# make test
# make [RUNTIME=net6] test
#
# to check the official mod dlls for StyleCop violations, run:
# make check
# to check the engine and official mod dlls for code style violations, run:
# make [RUNTIME=net6] check
#
# to generate documentation aimed at modders, run:
# make docs
# to compile and install Red Alert, Tiberian Dawn, and Dune 2000, run:
# make [RUNTIME=net6] [prefix=/foo] [bindir=/bar/bin] install
#
# to install, run:
# make [prefix=/foo] [bindir=/bar/bin] install
# to compile and install Red Alert, Tiberian Dawn, and Dune 2000
# using system libraries for native dependencies, run:
# make [prefix=/foo] [bindir=/bar/bin] TARGETPLATFORM=unix-generic install
#
# to install with development tools, run:
# make [prefix=/foo] [bindir=/bar/bin] install-all
# to install FreeDesktop startup scripts, desktop files, icons, and MIME metadata
# make install-linux-shortcuts
#
# to install Linux startup scripts, desktop files and icons:
# make install-linux-shortcuts [DEBUG=false]
# to install FreeDesktop AppStream metadata
# make install-linux-appdata
#
# to uninstall, run:
# make uninstall
# to install the Unix man page
# make install-man
#
# for help, run:
# make help
#
# to start the game, run:
# openra
############################## TOOLCHAIN ###############################
#
CSC = dmcs
CSFLAGS = -nologo -warn:4 -codepage:utf8 -unsafe -warnaserror
DEFINE = TRACE
COMMON_LIBS = System.dll System.Core.dll System.Data.dll System.Data.DataSetExtensions.dll System.Drawing.dll System.Xml.dll thirdparty/download/ICSharpCode.SharpZipLib.dll thirdparty/download/FuzzyLogicLibrary.dll thirdparty/download/Mono.Nat.dll thirdparty/download/MaxMind.Db.dll thirdparty/download/MaxMind.GeoIP2.dll thirdparty/download/Eluant.dll
DEBUG = true
ifeq ($(DEBUG), $(filter $(DEBUG),false no n off 0))
CSFLAGS += -debug:pdbonly -optimize+
else
CSFLAGS += -debug:full -optimize-
DEFINE := DEBUG;$(DEFINE)
endif
######################### UTILITIES/SETTINGS ###########################
#
# install locations
# Install locations for local installs and downstream packaging
prefix ?= /usr/local
datarootdir ?= $(prefix)/share
datadir ?= $(datarootdir)
@@ -63,407 +46,166 @@ bindir ?= $(prefix)/bin
libdir ?= $(prefix)/lib
gameinstalldir ?= $(libdir)/openra
BIN_INSTALL_DIR = $(DESTDIR)$(bindir)
DATA_INSTALL_DIR = $(DESTDIR)$(gameinstalldir)
# install tools
# Toolchain
CWD = $(shell pwd)
MSBUILD = msbuild -verbosity:m -nologo
DOTNET = dotnet
MONO = mono
RM = rm
RM_R = $(RM) -r
RM_F = $(RM) -f
RM_RF = $(RM) -rf
CP = cp
CP_R = $(CP) -r
INSTALL = install
INSTALL_DIR = $(INSTALL) -d
INSTALL_PROGRAM = $(INSTALL) -m755
INSTALL_DATA = $(INSTALL) -m644
# program targets
CORE = rsdl2 rnull game utility
TOOLS = gamemonitor
VERSION = $(shell git name-rev --name-only --tags --no-undefined HEAD 2>/dev/null || echo git-`git rev-parse --short HEAD`)
RUNTIME ?= net6
CONFIGURATION ?= Release
DOTNET_RID = $(shell ${DOTNET} --info | grep RID: | cut -w -f3)
ARCH_X64 = $(shell echo ${DOTNET_RID} | grep x64)
# dependencies
# Only for use in target version:
VERSION := $(shell git name-rev --name-only --tags --no-undefined HEAD 2>/dev/null || (c=$$(git rev-parse --short HEAD 2>/dev/null) && echo git-$$c))
# Detect target platform for dependencies if not given by the user
ifndef TARGETPLATFORM
UNAME_S := $(shell uname -s)
UNAME_M := $(shell uname -m)
ifeq ($(UNAME_S),Darwin)
os-dependencies = osx-dependencies
ifeq ($(ARCH_X64),)
TARGETPLATFORM = osx-arm64
else
os-dependencies = linux-dependencies
TARGETPLATFORM = osx-x64
endif
else
ifeq ($(UNAME_M),x86_64)
TARGETPLATFORM = linux-x64
else
ifeq ($(UNAME_M),aarch64)
TARGETPLATFORM = linux-arm64
else
TARGETPLATFORM = unix-generic
endif
endif
endif
endif
######################## PROGRAM TARGET RULES ##########################
##################### DEVELOPMENT BUILDS AND TESTS #####################
#
# Core binaries
all:
@echo "Compiling in ${CONFIGURATION} mode..."
ifeq ($(RUNTIME), mono)
@command -v $(firstword $(MSBUILD)) >/dev/null || (echo "OpenRA requires the '$(MSBUILD)' tool provided by Mono >= 6.4."; exit 1)
@$(MSBUILD) -t:Build -restore -p:Configuration=${CONFIGURATION} -p:TargetPlatform=$(TARGETPLATFORM)
else
@$(DOTNET) build -c ${CONFIGURATION} -nologo -p:TargetPlatform=$(TARGETPLATFORM)
endif
ifeq ($(TARGETPLATFORM), unix-generic)
@./configure-system-libraries.sh
endif
@./fetch-geoip.sh
game_SRCS := $(shell find OpenRA.Game/ -iname '*.cs')
game_TARGET = OpenRA.Game.exe
game_KIND = winexe
game_LIBS = $(COMMON_LIBS) $(game_DEPS) thirdparty/download/SDL2-CS.dll thirdparty/download/SharpFont.dll
game_FLAGS = -win32icon:OpenRA.Game/OpenRA.ico
PROGRAMS += game
game: $(game_TARGET)
# dotnet clean and msbuild -t:Clean leave files that cause problems when switching between mono/dotnet
# Deleting the intermediate / output directories ensures the build directory is actually clean
clean:
@-$(RM_RF) ./bin ./*/obj
@-$(RM_F) IP2LOCATION-LITE-DB1.IPV6.BIN.ZIP
# Renderer dlls
rsdl2_SRCS := $(shell find OpenRA.Renderer.Sdl2/ -iname '*.cs')
rsdl2_TARGET = OpenRA.Renderer.Sdl2.dll
rsdl2_KIND = library
rsdl2_DEPS = $(game_TARGET)
rsdl2_LIBS = $(COMMON_LIBS) thirdparty/download/SDL2-CS.dll $(rsdl2_DEPS)
rnull_SRCS := $(shell find OpenRA.Renderer.Null/ -iname '*.cs')
rnull_TARGET = OpenRA.Renderer.Null.dll
rnull_KIND = library
rnull_DEPS = $(game_TARGET)
rnull_LIBS = $(COMMON_LIBS) $(rnull_DEPS)
PROGRAMS += rsdl2 rnull
renderers: $(rsdl2_TARGET) $(rnull_TARGET)
# Mods Common
mod_common_SRCS := $(shell find OpenRA.Mods.Common/ -iname '*.cs')
mod_common_TARGET = mods/common/OpenRA.Mods.Common.dll
mod_common_KIND = library
mod_common_DEPS = $(game_TARGET)
mod_common_LIBS = $(COMMON_LIBS) $(STD_MOD_LIBS) thirdparty/download/StyleCop.dll thirdparty/download/StyleCop.CSharp.dll thirdparty/download/StyleCop.CSharp.Rules.dll
PROGRAMS += mod_common
mod_common: $(mod_common_TARGET)
##### Official Mods #####
STD_MOD_LIBS = $(game_TARGET)
STD_MOD_DEPS = $(STD_MOD_LIBS)
# Red Alert
mod_ra_SRCS := $(shell find OpenRA.Mods.RA/ -iname '*.cs')
mod_ra_TARGET = mods/ra/OpenRA.Mods.RA.dll
mod_ra_KIND = library
mod_ra_DEPS = $(STD_MOD_DEPS) $(mod_common_TARGET)
mod_ra_LIBS = $(COMMON_LIBS) $(STD_MOD_LIBS) $(mod_common_TARGET)
PROGRAMS += mod_ra
mod_ra: $(mod_ra_TARGET)
# Command and Conquer
mod_cnc_SRCS := $(shell find OpenRA.Mods.Cnc/ -iname '*.cs')
mod_cnc_TARGET = mods/cnc/OpenRA.Mods.Cnc.dll
mod_cnc_KIND = library
mod_cnc_DEPS = $(STD_MOD_DEPS) $(mod_common_TARGET)
mod_cnc_LIBS = $(COMMON_LIBS) $(STD_MOD_LIBS) $(mod_common_TARGET)
PROGRAMS += mod_cnc
mod_cnc: $(mod_cnc_TARGET)
# Dune 2000
mod_d2k_SRCS := $(shell find OpenRA.Mods.D2k/ -iname '*.cs')
mod_d2k_TARGET = mods/d2k/OpenRA.Mods.D2k.dll
mod_d2k_KIND = library
mod_d2k_DEPS = $(STD_MOD_DEPS) $(mod_common_TARGET)
mod_d2k_LIBS = $(COMMON_LIBS) $(STD_MOD_LIBS) $(mod_common_TARGET)
PROGRAMS += mod_d2k
mod_d2k: $(mod_d2k_TARGET)
# Tiberian Sun
mod_ts_SRCS := $(shell find OpenRA.Mods.TS/ -iname '*.cs')
mod_ts_TARGET = mods/ts/OpenRA.Mods.TS.dll
mod_ts_KIND = library
mod_ts_DEPS = $(STD_MOD_DEPS) $(mod_common_TARGET)
mod_ts_LIBS = $(COMMON_LIBS) $(STD_MOD_LIBS) $(mod_common_TARGET)
PROGRAMS += mod_ts
mod_ts: $(mod_ts_TARGET)
check: utility mods
check:
@echo
@echo "Checking for code style violations in OpenRA.Game..."
@mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Game
@echo "Compiling in Debug mode..."
ifeq ($(RUNTIME), mono)
# Enabling EnforceCodeStyleInBuild and GenerateDocumentationFile as a workaround for some code style rules (in particular IDE0005) being bugged and not reporting warnings/errors otherwise.
@$(MSBUILD) -t:build -restore -p:Configuration=Debug -warnaserror -p:TargetPlatform=$(TARGETPLATFORM) -p:EnforceCodeStyleInBuild=true -p:GenerateDocumentationFile=true
else
# Enabling EnforceCodeStyleInBuild and GenerateDocumentationFile as a workaround for some code style rules (in particular IDE0005) being bugged and not reporting warnings/errors otherwise.
@$(DOTNET) build -c Debug -nologo -warnaserror -p:TargetPlatform=$(TARGETPLATFORM) -p:EnforceCodeStyleInBuild=true -p:GenerateDocumentationFile=true
endif
ifeq ($(TARGETPLATFORM), unix-generic)
@./configure-system-libraries.sh
endif
@echo
@echo "Checking for code style violations in OpenRA.Renderer.Null..."
@mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Renderer.Null
@echo "Checking for explicit interface violations..."
@./utility.sh all --check-explicit-interfaces
@echo
@echo "Checking for code style violations in OpenRA.GameMonitor..."
@mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.GameMonitor
@echo
@echo "Checking for code style violations in OpenRA.Mods.Common..."
@mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Mods.Common
@echo
@echo "Checking for code style violations in OpenRA.Mods.RA..."
@mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Mods.RA
@echo
@echo "Checking for code style violations in OpenRA.Mods.Cnc..."
@mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Mods.Cnc
@echo
@echo "Checking for code style violations in OpenRA.Mods.D2k..."
@mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Mods.D2k
@echo
@echo "Checking for code style violations in OpenRA.Mods.TS..."
@mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Mods.TS
@echo
@echo "Checking for code style violations in OpenRA.Renderer.Sdl2..."
@mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Renderer.Sdl2
@echo
@echo "Checking for code style violations in OpenRA.Utility..."
@mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Utility
@echo
@echo "Checking for code style violations in OpenRA.Test..."
@mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Test
@echo "Checking for incorrect conditional trait interface overrides..."
@./utility.sh all --check-conditional-trait-interface-overrides
test: utility mods
check-scripts:
@echo
@echo "Checking for Lua syntax errors..."
@find lua/ mods/*/{maps,scripts}/ -iname "*.lua" -print0 | xargs -0n1 luac -p
test: all
@echo
@echo "Testing Tiberian Sun mod MiniYAML..."
@mono --debug OpenRA.Utility.exe ts --check-yaml
@./utility.sh ts --check-yaml
@echo
@echo "Testing Dune 2000 mod MiniYAML..."
@mono --debug OpenRA.Utility.exe d2k --check-yaml
@./utility.sh d2k --check-yaml
@echo
@echo "Testing Tiberian Dawn mod MiniYAML..."
@mono --debug OpenRA.Utility.exe cnc --check-yaml
@./utility.sh cnc --check-yaml
@echo
@echo "Testing Red Alert mod MiniYAML..."
@mono --debug OpenRA.Utility.exe ra --check-yaml
@./utility.sh ra --check-yaml
##### Launchers / Utilities #####
gamemonitor_SRCS := $(shell find OpenRA.GameMonitor/ -iname '*.cs')
gamemonitor_TARGET = OpenRA.exe
gamemonitor_KIND = winexe
gamemonitor_DEPS = $(game_TARGET)
gamemonitor_LIBS = $(COMMON_LIBS) $(gamemonitor_DEPS) System.Windows.Forms.dll
gamemonitor_FLAGS = -win32icon:OpenRA.Game/OpenRA.ico
PROGRAMS += gamemonitor
gamemonitor: $(gamemonitor_TARGET)
# Backend for the launcher apps - queries game/mod info and applies actions to an install
utility_SRCS := $(shell find OpenRA.Utility/ -iname '*.cs')
utility_TARGET = OpenRA.Utility.exe
utility_KIND = exe
utility_DEPS = $(game_TARGET)
utility_LIBS = $(COMMON_LIBS) $(utility_DEPS) thirdparty/download/ICSharpCode.SharpZipLib.dll
PROGRAMS += utility
utility: $(utility_TARGET)
# Patches binary headers to work around a mono bug
fixheader.exe: packaging/fixheader.cs
@echo CSC fixheader.exe
@$(CSC) packaging/fixheader.cs $(CSFLAGS) -out:fixheader.exe -t:exe $(COMMON_LIBS:%=-r:%)
# Generate build rules for each target defined above in PROGRAMS
define BUILD_ASSEMBLY
$$($(1)_TARGET): $$($(1)_SRCS) Makefile $$($(1)_DEPS) fixheader.exe
@echo CSC $$(@)
@$(CSC) $$($(1)_LIBS:%=-r:%) \
-out:$$(@) $(CSFLAGS) $$($(1)_FLAGS) \
-define:"$(DEFINE)" \
-t:"$$($(1)_KIND)" \
$$($(1)_EXTRA) \
$$($(1)_SRCS)
@mono fixheader.exe $$(@) > /dev/null
@test `echo $$(@) | sed 's/^.*\.//'` = "dll" && chmod a-x $$(@) || ``
@$$($(1)_EXTRA_CMDS)
endef
$(foreach prog,$(PROGRAMS),$(eval $(call BUILD_ASSEMBLY,$(prog))))
########################## MAKE/INSTALL RULES ##########################
############# LOCAL INSTALLATION AND DOWNSTREAM PACKAGING ##############
#
default: core
core: game renderers mods utility
tools: gamemonitor
package: all-dependencies core tools docs version
mods: mod_common mod_ra mod_cnc mod_d2k mod_ts
all: dependencies core tools
clean:
@-$(RM_F) *.exe *.dll *.dylib *.dll.config ./OpenRA*/*.dll ./OpenRA*/*.mdb *.mdb mods/**/*.dll mods/**/*.mdb *.resources
@-$(RM_RF) ./*/bin ./*/obj
@-$(RM_RF) ./thirdparty/download
distclean: clean
cli-dependencies:
@./thirdparty/fetch-thirdparty-deps.sh
@ $(CP_R) thirdparty/download/*.dll .
@ $(CP_R) thirdparty/download/*.dll.config .
@ $(CP) thirdparty/SDL2-CS.dll.config .
linux-dependencies: cli-dependencies linux-native-dependencies
linux-native-dependencies:
@./thirdparty/configure-native-deps.sh
windows-dependencies:
@./thirdparty/fetch-thirdparty-deps-windows.sh
osx-dependencies: cli-dependencies
@./thirdparty/fetch-thirdparty-deps-osx.sh
@ $(CP_R) thirdparty/download/osx/*.dylib .
@ $(CP_R) thirdparty/download/osx/*.dll.config .
dependencies: $(os-dependencies)
@./thirdparty/fetch-geoip-db.sh
@ $(CP) thirdparty/download/GeoLite2-Country.mmdb.gz .
all-dependencies: cli-dependencies windows-dependencies osx-dependencies
version: mods/ra/mod.yaml mods/cnc/mod.yaml mods/d2k/mod.yaml mods/ts/mod.yaml mods/modchooser/mod.yaml mods/all/mod.yaml
@for i in $? ; do \
awk '{sub("Version:.*$$","Version: $(VERSION)"); print $0}' $${i} > $${i}.tmp && \
mv -f $${i}.tmp $${i} ; \
done
docs: utility mods version
@mono --debug OpenRA.Utility.exe all --docs > DOCUMENTATION.md
@mono --debug OpenRA.Utility.exe all --lua-docs > Lua-API.md
man-page: utility mods
@mono --debug OpenRA.Utility.exe all --man-page > openra.6
install: install-core
install-all: install-core install-tools
install-linux-shortcuts: install-linux-scripts install-linux-icons install-linux-desktop
install-core: default
@-echo "Installing OpenRA to $(DATA_INSTALL_DIR)"
@$(INSTALL_DIR) "$(DATA_INSTALL_DIR)"
@$(INSTALL_PROGRAM) $(foreach prog,$(CORE),$($(prog)_TARGET)) "$(DATA_INSTALL_DIR)"
@$(INSTALL_DIR) "$(DATA_INSTALL_DIR)/mods"
@$(CP_R) mods/common "$(DATA_INSTALL_DIR)/mods/"
@$(INSTALL_PROGRAM) $(mod_common_TARGET) "$(DATA_INSTALL_DIR)/mods/common"
@$(CP_R) mods/cnc "$(DATA_INSTALL_DIR)/mods/"
@$(INSTALL_PROGRAM) $(mod_cnc_TARGET) "$(DATA_INSTALL_DIR)/mods/cnc"
@$(CP_R) mods/ra "$(DATA_INSTALL_DIR)/mods/"
@$(INSTALL_PROGRAM) $(mod_ra_TARGET) "$(DATA_INSTALL_DIR)/mods/ra"
@$(CP_R) mods/d2k "$(DATA_INSTALL_DIR)/mods/"
@$(INSTALL_PROGRAM) $(mod_d2k_TARGET) "$(DATA_INSTALL_DIR)/mods/d2k"
@$(CP_R) mods/modchooser "$(DATA_INSTALL_DIR)/mods/"
@$(INSTALL_DATA) "global mix database.dat" "$(DATA_INSTALL_DIR)/global mix database.dat"
@$(INSTALL_DATA) "GeoLite2-Country.mmdb.gz" "$(DATA_INSTALL_DIR)/GeoLite2-Country.mmdb.gz"
@$(INSTALL_DATA) AUTHORS "$(DATA_INSTALL_DIR)/AUTHORS"
@$(INSTALL_DATA) COPYING "$(DATA_INSTALL_DIR)/COPYING"
@$(CP_R) glsl "$(DATA_INSTALL_DIR)"
@$(CP_R) lua "$(DATA_INSTALL_DIR)"
@$(CP) SDL2-CS* "$(DATA_INSTALL_DIR)"
@$(CP) Eluant* "$(DATA_INSTALL_DIR)"
@$(INSTALL_PROGRAM) ICSharpCode.SharpZipLib.dll "$(DATA_INSTALL_DIR)"
@$(INSTALL_PROGRAM) FuzzyLogicLibrary.dll "$(DATA_INSTALL_DIR)"
@$(INSTALL_PROGRAM) SharpFont.dll "$(DATA_INSTALL_DIR)"
@$(CP) SharpFont.dll.config "$(DATA_INSTALL_DIR)"
@$(INSTALL_PROGRAM) Mono.Nat.dll "$(DATA_INSTALL_DIR)"
@$(INSTALL_PROGRAM) MaxMind.Db.dll "$(DATA_INSTALL_DIR)"
@$(INSTALL_PROGRAM) MaxMind.GeoIP2.dll "$(DATA_INSTALL_DIR)"
@$(INSTALL_PROGRAM) Newtonsoft.Json.dll "$(DATA_INSTALL_DIR)"
@$(INSTALL_PROGRAM) RestSharp.dll "$(DATA_INSTALL_DIR)"
ifneq ($(UNAME_S),Darwin)
@$(CP) *.sh "$(DATA_INSTALL_DIR)"
version: VERSION mods/ra/mod.yaml mods/cnc/mod.yaml mods/d2k/mod.yaml mods/ts/mod.yaml mods/modcontent/mod.yaml mods/all/mod.yaml
ifeq ($(VERSION),)
$(error Unable to determine new version (requires git or override of variable VERSION))
endif
@sh -c '. ./packaging/functions.sh; set_engine_version "$(VERSION)" .'
@sh -c '. ./packaging/functions.sh; set_mod_version "$(VERSION)" mods/ra/mod.yaml mods/cnc/mod.yaml mods/d2k/mod.yaml mods/ts/mod.yaml mods/modcontent/mod.yaml mods/all/mod.yaml'
install-tools: tools
@-echo "Installing OpenRA tools to $(DATA_INSTALL_DIR)"
@$(INSTALL_DIR) "$(DATA_INSTALL_DIR)"
@$(INSTALL_PROGRAM) $(foreach prog,$(TOOLS),$($(prog)_TARGET)) "$(DATA_INSTALL_DIR)"
install:
@sh -c '. ./packaging/functions.sh; install_assemblies $(CWD) $(DESTDIR)$(gameinstalldir) $(TARGETPLATFORM) $(RUNTIME) True True True'
@sh -c '. ./packaging/functions.sh; install_data $(CWD) $(DESTDIR)$(gameinstalldir) cnc d2k ra'
install-linux-icons:
@$(INSTALL_DIR) "$(DESTDIR)$(datadir)/icons/"
@$(CP_R) packaging/linux/hicolor "$(DESTDIR)$(datadir)/icons/"
install-linux-desktop:
@$(INSTALL_DIR) "$(DESTDIR)$(datadir)/applications"
@$(INSTALL_DATA) packaging/linux/openra.desktop "$(DESTDIR)$(datadir)/applications"
install-linux-mime:
@$(INSTALL_DIR) "$(DESTDIR)$(datadir)/mime/packages/"
@$(INSTALL_DATA) packaging/linux/openra-mimeinfo.xml "$(DESTDIR)$(datadir)/mime/packages/openra.xml"
@$(INSTALL_DIR) "$(DESTDIR)$(datadir)/applications"
@$(INSTALL_DATA) packaging/linux/openra-join-servers.desktop "$(DESTDIR)$(datadir)/applications"
@$(INSTALL_DATA) packaging/linux/openra-replays.desktop "$(DESTDIR)$(datadir)/applications"
install-linux-shortcuts:
@sh -c '. ./packaging/functions.sh; install_linux_shortcuts $(CWD) "$(DESTDIR)" "$(gameinstalldir)" "$(bindir)" "$(datadir)" "$(shell head -n1 VERSION)" cnc d2k ra'
install-linux-appdata:
@$(INSTALL_DIR) "$(DESTDIR)$(datadir)/appdata/"
@$(INSTALL_DATA) packaging/linux/openra.appdata.xml "$(DESTDIR)$(datadir)/appdata/"
@sh -c '. ./packaging/functions.sh; install_linux_appdata $(CWD) "$(DESTDIR)" "$(datadir)" cnc d2k ra'
install-man-page: man-page
@$(INSTALL_DIR) "$(DESTDIR)$(mandir)/man6/"
@$(INSTALL_DATA) openra.6 "$(DESTDIR)$(mandir)/man6/"
install-linux-scripts:
@echo "#!/bin/sh" > openra
@echo 'cd "$(gameinstalldir)"' >> openra
ifeq ($(DEBUG), $(filter $(DEBUG),false no n off 0))
@echo 'mono OpenRA.Game.exe "$$@"' >> openra
else
@echo 'mono --debug OpenRA.Game.exe "$$@"' >> openra
endif
@echo 'if [ $$? != 0 -a $$? != 1 ]' >> openra
@echo 'then' >> openra
@echo 'ZENITY=`which zenity` || echo "OpenRA needs zenity installed to display a graphical error dialog. See ~/.openra. for log files."' >> openra
@echo '$$ZENITY --question --title "OpenRA" --text "OpenRA has encountered a fatal error.\nLog Files are available in ~/.openra." --ok-label "Quit" --cancel-label "View FAQ" || xdg-open https://github.com/OpenRA/OpenRA/wiki/FAQ' >> openra
@echo 'exit 1' >> openra
@echo 'fi' >> openra
@$(INSTALL_DIR) "$(BIN_INSTALL_DIR)"
@$(INSTALL_PROGRAM) -m +rx openra "$(BIN_INSTALL_DIR)"
@-$(RM) openra
uninstall:
@-$(RM_R) "$(DATA_INSTALL_DIR)"
@-$(RM_F) "$(BIN_INSTALL_DIR)/openra"
@-$(RM_F) "$(DESTDIR)$(datadir)/applications/openra.desktop"
@-$(RM_F) "$(DESTDIR)$(datadir)/icons/hicolor/16x16/apps/openra.png"
@-$(RM_F) "$(DESTDIR)$(datadir)/icons/hicolor/32x32/apps/openra.png"
@-$(RM_F) "$(DESTDIR)$(datadir)/icons/hicolor/48x48/apps/openra.png"
@-$(RM_F) "$(DESTDIR)$(datadir)/icons/hicolor/64x64/apps/openra.png"
@-$(RM_F) "$(DESTDIR)$(datadir)/icons/hicolor/128x128/apps/openra.png"
@-$(RM_F) "$(DESTDIR)$(datadir)/mime/packages/openra.xml"
@-$(RM_F) "$(DESTDIR)$(datadir)/appdata/openra.appdata.xml"
@-$(RM_F) "$(DESTDIR)$(mandir)/man6/openra.6"
install-man: all
@mkdir -p $(DESTDIR)$(mandir)/man6/
@./utility.sh all --man-page > $(DESTDIR)$(mandir)/man6/openra.6
help:
@echo to compile, run:
@echo \ \ make [DEBUG=false]
@echo 'to compile, run:'
@echo ' make'
@echo
@echo to compile with development tools, run:
@echo \ \ make all [DEBUG=false]
@echo 'to compile using Mono (version 6.4 or greater) instead of .NET 6, run:'
@echo ' make RUNTIME=mono'
@echo
@echo to check the official mods for erroneous yaml files, run:
@echo \ \ make test
@echo 'to compile using system libraries for native dependencies, run:'
@echo ' make [RUNTIME=net6] TARGETPLATFORM=unix-generic'
@echo
@echo to generate documentation aimed at modders, run:
@echo \ \ make docs
@echo 'to check the official mods for erroneous yaml files, run:'
@echo ' make [RUNTIME=net6] test'
@echo
@echo to install, run:
@echo \ \ make \[prefix=/foo\] \[bindir=/bar/bin\] install
@echo 'to check the engine and official mod dlls for code style violations, run:'
@echo ' make [RUNTIME=net6] check'
@echo
@echo to install with development tools, run:
@echo \ \ make \[prefix=/foo\] \[bindir=/bar/bin\] install-all
@echo 'to compile and install Red Alert, Tiberian Dawn, and Dune 2000 run:'
@echo ' make [RUNTIME=net6] [prefix=/foo] [TARGETPLATFORM=unix-generic] install'
@echo
@echo to install Linux startup scripts, desktop files and icons
@echo \ \ make install-linux-shortcuts [DEBUG=false]
@echo 'to compile and install Red Alert, Tiberian Dawn, and Dune 2000'
@echo 'using system libraries for native dependencies, run:'
@echo ' make [RUNTIME=net6] [prefix=/foo] [bindir=/bar/bin] TARGETPLATFORM=unix-generic install'
@echo
@echo to uninstall, run:
@echo \ \ make uninstall
@echo 'to install FreeDesktop startup scripts, desktop files, icons, and MIME metadata'
@echo ' make install-linux-shortcuts'
@echo
@echo to start the game, run:
@echo \ \ openra
@echo 'to install FreeDesktop AppStream metadata'
@echo ' make install-linux-appdata'
@echo
@echo 'to install a Unix man page'
@echo ' make install-man'
########################### MAKEFILE SETTINGS ##########################
#
.DEFAULT_GOAL := default
.DEFAULT_GOAL := all
.SUFFIXES:
.PHONY: core tools package all mods clean distclean dependencies version $(PROGRAMS)
.PHONY: all clean check check-scripts test version install install-linux-shortcuts install-linux-appdata install-man help

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<loadFromRemoteSources enabled="true" />
</runtime>
</configuration>

View File

@@ -1,54 +1,291 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Linq;
using OpenRA.Graphics;
using OpenRA.Primitives;
using OpenRA.Traits;
namespace OpenRA.Activities
{
public abstract class Activity
public enum ActivityState { Queued, Active, Canceling, Done }
public class TargetLineNode
{
public Activity NextActivity { get; set; }
protected bool IsCanceled { get; private set; }
public readonly Target Target;
public readonly Color Color;
public readonly Sprite Tile;
public abstract Activity Tick(Actor self);
public virtual void Cancel(Actor self)
public TargetLineNode(in Target target, Color color, Sprite tile = null)
{
IsCanceled = true;
NextActivity = null;
// Note: Not all activities are drawable. In that case, pass Target.Invalid as target,
// if "yield break" in TargetLineNode(Actor self) is not feasible.
Target = target;
Color = color;
Tile = tile;
}
}
/*
* Things to be aware of when writing activities:
*
* - Use "return true" at least once somewhere in the tick method.
* - Do not "reuse" activity objects (by queuing them as next or child, for example) that have already started running.
* Queue a new instance instead.
* - Avoid calling actor.CancelActivity(). It is almost always a bug. Call activity.Cancel() instead.
* - Do not evaluate dynamic state (an actor's location, health, conditions, etc.) in the activity's constructor,
* as that might change before the activity gets to tick for the first time. Use the OnFirstRun() method instead.
*/
public abstract class Activity : IActivityInterface
{
public ActivityState State { get; private set; }
Activity childActivity;
protected Activity ChildActivity
{
get => SkipDoneActivities(childActivity);
private set => childActivity = value;
}
public virtual void Queue(Activity activity)
Activity nextActivity;
public Activity NextActivity
{
if (NextActivity != null)
NextActivity.Queue(activity);
get => SkipDoneActivities(nextActivity);
private set => nextActivity = value;
}
internal static Activity SkipDoneActivities(Activity first)
{
// If first.Cancel() was called while it was queued (i.e. before it first ticked), its state will be Done
// rather than Queued (the activity system guarantees that it cannot be Active or Canceling).
// An unknown number of ticks may have elapsed between the Cancel() call and now,
// so we cannot make any assumptions on the value of first.NextActivity.
// We must not return first (ticking it would be bogus), but returning null would potentially
// drop valid activities queued after it. Walk the queue until we find a valid activity or
// (more likely) run out of activities.
while (first != null && first.State == ActivityState.Done)
first = first.nextActivity;
return first;
}
public bool IsInterruptible { get; protected set; }
public bool ChildHasPriority { get; protected set; }
public bool IsCanceling => State == ActivityState.Canceling;
bool finishing;
bool firstRunCompleted;
bool lastRun;
public Activity()
{
IsInterruptible = true;
ChildHasPriority = true;
}
public Activity TickOuter(Actor self)
{
if (State == ActivityState.Done)
throw new InvalidOperationException($"Actor {self} attempted to tick activity {GetType()} after it had already completed.");
if (State == ActivityState.Queued)
{
OnFirstRun(self);
firstRunCompleted = true;
State = ActivityState.Active;
}
if (!firstRunCompleted)
throw new InvalidOperationException($"Actor {self} attempted to tick activity {GetType()} before running its OnFirstRun method.");
// Only run the parent tick when the child is done.
// We must always let the child finish on its own before continuing.
if (ChildHasPriority)
{
lastRun = TickChild(self) && (finishing || Tick(self));
finishing |= lastRun;
}
// The parent determines whether the child gets a chance at ticking.
else
NextActivity = activity;
lastRun = Tick(self);
// Avoid a single tick delay if the childactivity was just queued.
var ca = ChildActivity;
if (ca != null && ca.State == ActivityState.Queued)
{
if (ChildHasPriority)
lastRun = TickChild(self) && finishing;
else
TickChild(self);
}
if (lastRun)
{
State = ActivityState.Done;
OnLastRun(self);
return NextActivity;
}
return this;
}
protected bool TickChild(Actor self)
{
ChildActivity = ActivityUtils.RunActivity(self, ChildActivity);
return ChildActivity == null;
}
/// <summary>
/// Called every tick to run activity logic. Returns false if the activity should
/// remain active, or true if it is complete. Cancelled activities must ensure they
/// return the actor to a consistent state before returning true.
///
/// Child activities can be queued using QueueChild, and these will be ticked
/// instead of the parent while they are active. Activities that need to run logic
/// in parallel with child activities should set ChildHasPriority to false and
/// manually call TickChildren.
///
/// Queuing one or more child activities and returning true is valid, and causes
/// the activity to be completed immediately (without ticking again) once the
/// children have completed.
/// </summary>
public virtual bool Tick(Actor self)
{
return true;
}
/// <summary>
/// Runs once immediately before the first Tick() execution.
/// </summary>
protected virtual void OnFirstRun(Actor self) { }
/// <summary>
/// Runs once immediately after the last Tick() execution.
/// </summary>
protected virtual void OnLastRun(Actor self) { }
/// <summary>
/// Runs once on Actor.Dispose() (through OnActorDisposeOuter) and can be used to perform activity clean-up on actor death/disposal,
/// for example by force-triggering OnLastRun (which would otherwise be skipped).
/// </summary>
protected virtual void OnActorDispose(Actor self) { }
/// <summary>
/// Runs once on Actor.Dispose().
/// Main purpose is to ensure ChildActivity.OnActorDispose runs as well (which isn't otherwise accessible due to protection level).
/// </summary>
internal void OnActorDisposeOuter(Actor self)
{
ChildActivity?.OnActorDisposeOuter(self);
OnActorDispose(self);
}
public virtual void Cancel(Actor self, bool keepQueue = false)
{
if (!keepQueue)
NextActivity = null;
if (!IsInterruptible)
return;
ChildActivity?.Cancel(self);
// Directly mark activities that are queued and therefore didn't run yet as done
State = State == ActivityState.Queued ? ActivityState.Done : ActivityState.Canceling;
}
public void Queue(Activity activity)
{
var it = this;
while (it.nextActivity != null)
it = it.nextActivity;
it.nextActivity = activity;
}
public void QueueChild(Activity activity)
{
if (childActivity != null)
childActivity.Queue(activity);
else
childActivity = activity;
}
/// <summary>
/// Prints the activity tree, starting from the top or optionally from a given origin.
///
/// Call this method from any place that's called during a tick, such as the Tick() method itself or
/// the Before(First|Last)Run() methods. The origin activity will be marked in the output.
/// </summary>
/// <param name="self">The actor performing this activity.</param>
/// <param name="origin">Activity from which to start traversing, and which to mark. If null, mark the calling activity, and start traversal from the top.</param>
/// <param name="level">Initial level of indentation.</param>
protected void PrintActivityTree(Actor self, Activity origin = null, int level = 0)
{
if (origin == null)
self.CurrentActivity.PrintActivityTree(self, this);
else
{
Console.Write(new string(' ', level * 2));
if (origin == this)
Console.Write("*");
Console.WriteLine(GetType().ToString().Split('.').Last());
ChildActivity?.PrintActivityTree(self, origin, level + 1);
NextActivity?.PrintActivityTree(self, origin, level);
}
}
public virtual IEnumerable<Target> GetTargets(Actor self)
{
yield break;
}
}
public static class ActivityExts
{
public static IEnumerable<Target> GetTargetQueue(this Actor self)
public virtual IEnumerable<TargetLineNode> TargetLineNodes(Actor self)
{
return self.GetCurrentActivity()
.Iterate(u => u.NextActivity)
.TakeWhile(u => u != null)
.SelectMany(u => u.GetTargets(self));
yield break;
}
public IEnumerable<string> DebugLabelComponents()
{
var act = this;
while (act != null)
{
yield return act.GetType().Name;
act = act.ChildActivity;
}
}
public IEnumerable<T> ActivitiesImplementing<T>(bool includeChildren = true) where T : IActivityInterface
{
// Skips Done child and next activities
if (includeChildren)
{
var ca = ChildActivity;
if (ca != null)
foreach (var a in ca.ActivitiesImplementing<T>())
yield return a;
}
if (this is T)
yield return (T)(object)this;
var na = NextActivity;
if (na != null)
foreach (var a in na.ActivitiesImplementing<T>())
yield return a;
}
}
}

View File

@@ -1,10 +1,11 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
@@ -15,25 +16,18 @@ namespace OpenRA.Activities
public class CallFunc : Activity
{
public CallFunc(Action a) { this.a = a; }
public CallFunc(Action a, bool interruptable)
public CallFunc(Action a, bool interruptible)
{
this.a = a;
this.interruptable = interruptable;
IsInterruptible = interruptible;
}
Action a;
bool interruptable;
readonly Action a;
public override Activity Tick(Actor self)
public override bool Tick(Actor self)
{
if (a != null) a();
return NextActivity;
}
public override void Cancel(Actor self)
{
if (interruptable)
base.Cancel(self);
a.Invoke();
return true;
}
}
}

View File

@@ -1,16 +1,18 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using Eluant;
using Eluant.ObjectBinding;
@@ -22,66 +24,117 @@ using OpenRA.Traits;
namespace OpenRA
{
[Flags]
public enum SystemActors
{
Player = 0,
EditorPlayer = 1,
World = 2,
EditorWorld = 4
}
public sealed class Actor : IScriptBindable, IScriptNotifyBind, ILuaTableBinding, ILuaEqualityBinding, ILuaToStringBinding, IEquatable<Actor>, IDisposable
{
internal readonly struct SyncHash
{
public readonly ISync Trait;
readonly Func<object, int> hashFunction;
public SyncHash(ISync trait) { Trait = trait; hashFunction = Sync.GetHashFunction(trait); }
public int Hash() { return hashFunction(Trait); }
}
public readonly ActorInfo Info;
public readonly World World;
public readonly uint ActorID;
[Sync] public Player Owner { get; set; }
public Player Owner { get; internal set; }
public bool IsInWorld { get; internal set; }
public bool WillDispose { get; private set; }
public bool Disposed { get; private set; }
Activity currentActivity;
public Group Group;
public int Generation;
Lazy<Rectangle> bounds;
Lazy<Rectangle> visualBounds;
Lazy<IFacing> facing;
Lazy<Health> health;
Lazy<IOccupySpace> occupySpace;
Lazy<IEffectiveOwner> effectiveOwner;
public Rectangle Bounds { get { return bounds.Value; } }
public Rectangle VisualBounds { get { return visualBounds.Value; } }
public IOccupySpace OccupiesSpace { get { return occupySpace.Value; } }
public IEffectiveOwner EffectiveOwner { get { return effectiveOwner.Value; } }
public bool IsIdle { get { return currentActivity == null; } }
public bool IsDead { get { return Disposed || (health.Value == null ? false : health.Value.IsDead); } }
public CPos Location { get { return occupySpace.Value.TopLeft; } }
public WPos CenterPosition { get { return occupySpace.Value.CenterPosition; } }
public WRot Orientation
public Activity CurrentActivity
{
get
{
// TODO: Support non-zero pitch/roll in IFacing (IOrientation?)
var facingValue = facing.Value != null ? facing.Value.Facing : 0;
return new WRot(WAngle.Zero, WAngle.Zero, WAngle.FromFacing(facingValue));
}
get => Activity.SkipDoneActivities(currentActivity);
private set => currentActivity = value;
}
public int Generation;
public Actor ReplacedByActor;
public IEffectiveOwner EffectiveOwner { get; }
public IOccupySpace OccupiesSpace { get; }
public ITargetable[] Targetables { get; }
public IEnumerable<ITargetablePositions> EnabledTargetablePositions { get; private set; }
public bool IsIdle => CurrentActivity == null;
public bool IsDead => Disposed || (health != null && health.IsDead);
public CPos Location => OccupiesSpace.TopLeft;
public WPos CenterPosition => OccupiesSpace.CenterPosition;
public WRot Orientation => facing?.Orientation ?? WRot.None;
/// <summary>Value used to represent an invalid token.</summary>
public static readonly int InvalidConditionToken = -1;
class ConditionState
{
/// <summary>Delegates that have registered to be notified when this condition changes.</summary>
public readonly List<VariableObserverNotifier> Notifiers = new List<VariableObserverNotifier>();
/// <summary>Unique integers identifying granted instances of the condition.</summary>
public readonly HashSet<int> Tokens = new HashSet<int>();
}
readonly Dictionary<string, ConditionState> conditionStates = new Dictionary<string, ConditionState>();
/// <summary>Each granted condition receives a unique token that is used when revoking.</summary>
readonly Dictionary<int, string> conditionTokens = new Dictionary<int, string>();
int nextConditionToken = 1;
/// <summary>Cache of condition -> enabled state for quick evaluation of token counter conditions.</summary>
readonly Dictionary<string, int> conditionCache = new Dictionary<string, int>();
/// <summary>Read-only version of conditionCache that is passed to IConditionConsumers.</summary>
readonly IReadOnlyDictionary<string, int> readOnlyConditionCache;
internal SyncHash[] SyncHashes { get; }
readonly IFacing facing;
readonly IHealth health;
readonly IResolveOrder[] resolveOrders;
readonly IRenderModifier[] renderModifiers;
readonly IRender[] renders;
readonly IDisable[] disables;
readonly IMouseBounds[] mouseBounds;
readonly IVisibilityModifier[] visibilityModifiers;
readonly IDefaultVisibility defaultVisibility;
readonly INotifyBecomingIdle[] becomingIdles;
readonly INotifyIdle[] tickIdles;
readonly IEnumerable<WPos> enabledTargetableWorldPositions;
bool created;
internal Actor(World world, string name, TypeDictionary initDict)
{
var duplicateInit = initDict.WithInterface<ISingleInstanceInit>().GroupBy(i => i.GetType())
.FirstOrDefault(i => i.Count() > 1);
if (duplicateInit != null)
throw new InvalidDataException($"Duplicate initializer '{duplicateInit.Key.Name}'");
var init = new ActorInitializer(this, initDict);
readOnlyConditionCache = new ReadOnlyDictionary<string, int>(conditionCache);
World = world;
ActorID = world.NextAID();
if (initDict.Contains<OwnerInit>())
Owner = init.Get<OwnerInit, Player>();
occupySpace = Exts.Lazy(() => TraitOrDefault<IOccupySpace>());
var ownerInit = init.GetOrDefault<OwnerInit>();
if (ownerInit != null)
Owner = ownerInit.Value(world);
if (name != null)
{
@@ -91,59 +144,142 @@ namespace OpenRA
throw new NotImplementedException("No rules definition for unit " + name);
Info = world.Map.Rules.Actors[name];
foreach (var trait in Info.TraitsInConstructOrder())
AddTrait(trait.Create(init));
var resolveOrdersList = new List<IResolveOrder>();
var renderModifiersList = new List<IRenderModifier>();
var rendersList = new List<IRender>();
var mouseBoundsList = new List<IMouseBounds>();
var visibilityModifiersList = new List<IVisibilityModifier>();
var becomingIdlesList = new List<INotifyBecomingIdle>();
var tickIdlesList = new List<INotifyIdle>();
var targetablesList = new List<ITargetable>();
var targetablePositionsList = new List<ITargetablePositions>();
var syncHashesList = new List<SyncHash>();
foreach (var traitInfo in Info.TraitsInConstructOrder())
{
var trait = traitInfo.Create(init);
AddTrait(trait);
// PERF: Cache all these traits as soon as the actor is created. This is a fairly cheap one-off cost per
// actor that allows us to provide some fast implementations of commonly used methods that are relied on by
// performance-sensitive parts of the core game engine, such as pathfinding, visibility and rendering.
// Note: The blocks are required to limit the scope of the t's, so we make an exception to our normal style
// rules for spacing in order to keep these assignments compact and readable.
{ if (trait is IOccupySpace t) OccupiesSpace = t; }
{ if (trait is IEffectiveOwner t) EffectiveOwner = t; }
{ if (trait is IFacing t) facing = t; }
{ if (trait is IHealth t) health = t; }
{ if (trait is IResolveOrder t) resolveOrdersList.Add(t); }
{ if (trait is IRenderModifier t) renderModifiersList.Add(t); }
{ if (trait is IRender t) rendersList.Add(t); }
{ if (trait is IMouseBounds t) mouseBoundsList.Add(t); }
{ if (trait is IVisibilityModifier t) visibilityModifiersList.Add(t); }
{ if (trait is IDefaultVisibility t) defaultVisibility = t; }
{ if (trait is INotifyBecomingIdle t) becomingIdlesList.Add(t); }
{ if (trait is INotifyIdle t) tickIdlesList.Add(t); }
{ if (trait is ITargetable t) targetablesList.Add(t); }
{ if (trait is ITargetablePositions t) targetablePositionsList.Add(t); }
{ if (trait is ISync t) syncHashesList.Add(new SyncHash(t)); }
}
resolveOrders = resolveOrdersList.ToArray();
renderModifiers = renderModifiersList.ToArray();
renders = rendersList.ToArray();
mouseBounds = mouseBoundsList.ToArray();
visibilityModifiers = visibilityModifiersList.ToArray();
becomingIdles = becomingIdlesList.ToArray();
tickIdles = tickIdlesList.ToArray();
Targetables = targetablesList.ToArray();
var targetablePositions = targetablePositionsList.ToArray();
EnabledTargetablePositions = targetablePositions.Where(Exts.IsTraitEnabled);
enabledTargetableWorldPositions = EnabledTargetablePositions.SelectMany(tp => tp.TargetablePositions(this));
SyncHashes = syncHashesList.ToArray();
}
}
internal void Initialize(bool addToWorld = true)
{
created = true;
// Make sure traits are usable for condition notifiers
foreach (var t in TraitsImplementing<INotifyCreated>())
t.Created(this);
var allObserverNotifiers = new HashSet<VariableObserverNotifier>();
foreach (var provider in TraitsImplementing<IObservesVariables>())
{
foreach (var variableUser in provider.GetVariableObservers())
{
allObserverNotifiers.Add(variableUser.Notifier);
foreach (var variable in variableUser.Variables)
{
var cs = conditionStates.GetOrAdd(variable);
cs.Notifiers.Add(variableUser.Notifier);
// Initialize conditions that have not yet been granted to 0
// NOTE: Some conditions may have already been granted by INotifyCreated calling GrantCondition,
// and we choose to assign the token count to safely cover both cases instead of adding an if branch.
conditionCache[variable] = cs.Tokens.Count;
}
}
}
facing = Exts.Lazy(() => TraitOrDefault<IFacing>());
health = Exts.Lazy(() => TraitOrDefault<Health>());
effectiveOwner = Exts.Lazy(() => TraitOrDefault<IEffectiveOwner>());
// Update all traits with their initial condition state
foreach (var notify in allObserverNotifiers)
notify(this, readOnlyConditionCache);
bounds = Exts.Lazy(() =>
// TODO: Other traits may need initialization after being notified of initial condition state.
// TODO: A post condition initialization notification phase may allow queueing activities instead.
// The initial activity should run before any activities queued by INotifyCreated.Created
// However, we need to know which traits are enabled (via conditions), so wait for after the calls and insert the activity as the first
ICreationActivity creationActivity = null;
foreach (var ica in TraitsImplementing<ICreationActivity>())
{
var si = Info.Traits.GetOrDefault<SelectableInfo>();
var size = (si != null && si.Bounds != null) ? new int2(si.Bounds[0], si.Bounds[1]) :
TraitsImplementing<IAutoSelectionSize>().Select(x => x.SelectionSize(this)).FirstOrDefault();
if (!ica.IsTraitEnabled())
continue;
var offset = -size / 2;
if (si != null && si.Bounds != null && si.Bounds.Length > 2)
offset += new int2(si.Bounds[2], si.Bounds[3]);
if (creationActivity != null)
throw new InvalidOperationException($"More than one enabled ICreationActivity trait: {creationActivity.GetType().Name} and {ica.GetType().Name}");
return new Rectangle(offset.X, offset.Y, size.X, size.Y);
});
var activity = ica.GetCreationActivity();
if (activity == null)
continue;
visualBounds = Exts.Lazy(() =>
{
var sd = Info.Traits.GetOrDefault<ISelectionDecorationsInfo>();
if (sd == null || sd.SelectionBoxBounds == null)
return bounds.Value;
creationActivity = ica;
var size = new int2(sd.SelectionBoxBounds[0], sd.SelectionBoxBounds[1]);
activity.Queue(CurrentActivity);
CurrentActivity = activity;
}
var offset = -size / 2;
if (sd.SelectionBoxBounds.Length > 2)
offset += new int2(sd.SelectionBoxBounds[2], sd.SelectionBoxBounds[3]);
return new Rectangle(offset.X, offset.Y, size.X, size.Y);
});
renderModifiers = TraitsImplementing<IRenderModifier>().ToArray();
renders = TraitsImplementing<IRender>().ToArray();
disables = TraitsImplementing<IDisable>().ToArray();
if (addToWorld)
World.Add(this);
}
public void Tick()
{
var wasIdle = IsIdle;
currentActivity = Traits.Util.RunActivity(this, currentActivity);
CurrentActivity = ActivityUtils.RunActivity(this, CurrentActivity);
if (!wasIdle && IsIdle)
foreach (var n in TraitsImplementing<INotifyBecomingIdle>())
{
foreach (var n in becomingIdles)
n.OnBecomingIdle(this);
// If IsIdle is true, it means the last CurrentActivity.Tick returned null.
// If a next activity has been queued via OnBecomingIdle, we need to start running it now,
// to avoid an 'empty' null tick where the actor will (visibly, if moving) do nothing.
CurrentActivity = ActivityUtils.RunActivity(this, CurrentActivity);
}
else if (wasIdle)
foreach (var tickIdle in tickIdles)
tickIdle.TickIdle(this);
}
public IEnumerable<IRenderable> Render(WorldRenderer wr)
{
// PERF: Avoid LINQ.
var renderables = Renderables(wr);
foreach (var modifier in renderModifiers)
renderables = modifier.ModifyRender(this, wr, renderables);
@@ -152,35 +288,69 @@ namespace OpenRA
IEnumerable<IRenderable> Renderables(WorldRenderer wr)
{
// PERF: Avoid LINQ.
// Implementations of Render are permitted to return both an eagerly materialized collection or a lazily
// generated sequence.
// For large amounts of renderables, a lazily generated sequence (e.g. as returned by LINQ, or by using
// `yield`) will avoid the need to allocate a large collection.
// For small amounts of renderables, allocating a small collection can often be faster and require less
// memory than creating the objects needed to represent a sequence.
foreach (var render in renders)
foreach (var renderable in render.Render(this, wr))
yield return renderable;
}
public IEnumerable<Rectangle> ScreenBounds(WorldRenderer wr)
{
var bounds = Bounds(wr);
foreach (var modifier in renderModifiers)
bounds = modifier.ModifyScreenBounds(this, wr, bounds);
return bounds;
}
IEnumerable<Rectangle> Bounds(WorldRenderer wr)
{
// PERF: Avoid LINQ. See comments for Renderables
foreach (var render in renders)
foreach (var r in render.ScreenBounds(this, wr))
if (!r.IsEmpty)
yield return r;
}
public Polygon MouseBounds(WorldRenderer wr)
{
foreach (var mb in mouseBounds)
{
var bounds = mb.MouseoverBounds(this, wr);
if (!bounds.IsEmpty)
return bounds;
}
return Polygon.Empty;
}
public void QueueActivity(bool queued, Activity nextActivity)
{
if (!queued)
CancelActivity();
QueueActivity(nextActivity);
}
public void QueueActivity(Activity nextActivity)
{
if (currentActivity == null)
currentActivity = nextActivity;
if (!created)
throw new InvalidOperationException("An activity was queued before the actor was created. Queue it inside the INotifyCreated.Created callback instead.");
if (CurrentActivity == null)
CurrentActivity = nextActivity;
else
currentActivity.Queue(nextActivity);
CurrentActivity.Queue(nextActivity);
}
public void CancelActivity()
{
if (currentActivity != null)
currentActivity.Cancel(this);
}
public Activity GetCurrentActivity()
{
return currentActivity;
CurrentActivity?.Cancel(this);
}
public override int GetHashCode()
@@ -190,8 +360,7 @@ namespace OpenRA
public override bool Equals(object obj)
{
var o = obj as Actor;
return o != null && Equals(o);
return obj is Actor o && Equals(o);
}
public bool Equals(Actor other)
@@ -201,6 +370,7 @@ namespace OpenRA
public override string ToString()
{
// PERF: Avoid format strings.
var name = Info.Name + " " + ActorID;
if (!IsInWorld)
name += " (not in world)";
@@ -222,11 +392,6 @@ namespace OpenRA
return World.TraitDict.WithInterface<T>(this);
}
public bool HasTrait<T>()
{
return World.TraitDict.Contains<T>(this);
}
public void AddTrait(object trait)
{
World.TraitDict.AddTrait(this, trait);
@@ -234,6 +399,13 @@ namespace OpenRA
public void Dispose()
{
// If CurrentActivity isn't null, run OnActorDisposeOuter in case some cleanups are needed.
// This should be done before the FrameEndTask to avoid dependency issues.
CurrentActivity?.OnActorDisposeOuter(this);
// Allow traits/activities to prevent a race condition when they depend on disposing the actor (e.g. Transforms)
WillDispose = true;
World.AddFrameEndTask(w =>
{
if (Disposed)
@@ -248,53 +420,181 @@ namespace OpenRA
World.TraitDict.RemoveActor(this);
Disposed = true;
if (luaInterface != null)
luaInterface.Value.OnActorDestroyed();
luaInterface?.Value.OnActorDestroyed();
});
}
public void ResolveOrder(Order order)
{
foreach (var r in resolveOrders)
r.ResolveOrder(this, order);
}
// TODO: move elsewhere.
public void ChangeOwner(Player newOwner)
{
World.AddFrameEndTask(w =>
{
if (Disposed)
return;
var oldOwner = Owner;
var wasInWorld = IsInWorld;
// momentarily remove from world so the ownership queries don't get confused
if (wasInWorld)
w.Remove(this);
Owner = newOwner;
Generation++;
if (wasInWorld)
w.Add(this);
foreach (var t in this.TraitsImplementing<INotifyOwnerChanged>())
t.OnOwnerChanged(this, oldOwner, newOwner);
});
World.AddFrameEndTask(_ => ChangeOwnerSync(newOwner));
}
public void Kill(Actor attacker)
/// <summary>
/// Change the actors owner without queuing a FrameEndTask.
/// This must only be called from inside an existing FrameEndTask.
/// </summary>
public void ChangeOwnerSync(Player newOwner)
{
if (health.Value == null)
if (Disposed)
return;
health.Value.InflictDamage(this, attacker, health.Value.MaxHP, null, true);
var oldOwner = Owner;
var wasInWorld = IsInWorld;
// momentarily remove from world so the ownership queries don't get confused
if (wasInWorld)
World.Remove(this);
Owner = newOwner;
Generation++;
foreach (var t in TraitsImplementing<INotifyOwnerChanged>())
t.OnOwnerChanged(this, oldOwner, newOwner);
foreach (var t in World.WorldActor.TraitsImplementing<INotifyOwnerChanged>())
t.OnOwnerChanged(this, oldOwner, newOwner);
if (wasInWorld)
World.Add(this);
}
public bool IsDisabled()
public DamageState GetDamageState()
{
foreach (var disable in disables)
if (disable.Disabled)
if (Disposed)
return DamageState.Dead;
return (health == null) ? DamageState.Undamaged : health.DamageState;
}
public void InflictDamage(Actor attacker, Damage damage)
{
if (Disposed || health == null)
return;
health.InflictDamage(this, attacker, damage, false);
}
public void Kill(Actor attacker, BitSet<DamageType> damageTypes = default)
{
if (Disposed || health == null)
return;
health.Kill(this, attacker, damageTypes);
}
public bool CanBeViewedByPlayer(Player player)
{
// PERF: Avoid LINQ.
foreach (var visibilityModifier in visibilityModifiers)
if (!visibilityModifier.IsVisible(this, player))
return false;
return defaultVisibility.IsVisible(this, player);
}
public BitSet<TargetableType> GetAllTargetTypes()
{
// PERF: Avoid LINQ.
var targetTypes = default(BitSet<TargetableType>);
foreach (var targetable in Targetables)
targetTypes = targetTypes.Union(targetable.TargetTypes);
return targetTypes;
}
public BitSet<TargetableType> GetEnabledTargetTypes()
{
// PERF: Avoid LINQ.
var targetTypes = default(BitSet<TargetableType>);
foreach (var targetable in Targetables)
if (targetable.IsTraitEnabled())
targetTypes = targetTypes.Union(targetable.TargetTypes);
return targetTypes;
}
public bool IsTargetableBy(Actor byActor)
{
// PERF: Avoid LINQ.
foreach (var targetable in Targetables)
if (targetable.TargetableBy(this, byActor))
return true;
return false;
}
public IEnumerable<WPos> GetTargetablePositions()
{
if (EnabledTargetablePositions.Any())
return enabledTargetableWorldPositions;
return new[] { CenterPosition };
}
#region Conditions
void UpdateConditionState(string condition, int token, bool isRevoke)
{
var conditionState = conditionStates.GetOrAdd(condition);
if (isRevoke)
conditionState.Tokens.Remove(token);
else
conditionState.Tokens.Add(token);
conditionCache[condition] = conditionState.Tokens.Count;
// Conditions may be granted or revoked before the state is initialized.
// These notifications will be processed after INotifyCreated.Created.
if (created)
foreach (var notify in conditionState.Notifiers)
notify(this, readOnlyConditionCache);
}
/// <summary>
/// Grants a specified condition if it is valid.
/// Otherwise, just returns InvalidConditionToken.
/// </summary>
/// <returns>The token that is used to revoke this condition.</returns>
public int GrantCondition(string condition)
{
if (string.IsNullOrEmpty(condition))
return InvalidConditionToken;
var token = nextConditionToken++;
conditionTokens.Add(token, condition);
UpdateConditionState(condition, token, false);
return token;
}
/// <summary>
/// Revokes a previously granted condition.
/// </summary>
/// <param name="token">The token ID returned by GrantCondition.</param>
/// <returns>The invalid token ID.</returns>
public int RevokeCondition(int token)
{
if (!conditionTokens.TryGetValue(token, out var condition))
throw new InvalidOperationException($"Attempting to revoke condition with invalid token {token} for {this}.");
conditionTokens.Remove(token);
UpdateConditionState(condition, token, true);
return InvalidConditionToken;
}
/// <summary>Returns whether the specified token is valid for RevokeCondition</summary>
public bool TokenValid(int token)
{
return conditionTokens.ContainsKey(token);
}
#endregion
#region Scripting interface
Lazy<ScriptActorInterface> luaInterface;
@@ -306,14 +606,13 @@ namespace OpenRA
public LuaValue this[LuaRuntime runtime, LuaValue keyValue]
{
get { return luaInterface.Value[runtime, keyValue]; }
set { luaInterface.Value[runtime, keyValue] = value; }
get => luaInterface.Value[runtime, keyValue];
set => luaInterface.Value[runtime, keyValue] = value;
}
public LuaValue Equals(LuaRuntime runtime, LuaValue left, LuaValue right)
{
Actor a, b;
if (!left.TryGetClrValue<Actor>(out a) || !right.TryGetClrValue<Actor>(out b))
if (!left.TryGetClrValue(out Actor a) || !right.TryGetClrValue(out Actor b))
return false;
return a == b;
@@ -321,7 +620,7 @@ namespace OpenRA
public LuaValue ToString(LuaRuntime runtime)
{
return "Actor ({0})".F(this);
return $"Actor ({this})";
}
public bool HasScriptProperty(string name)

View File

@@ -1,10 +1,11 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
@@ -15,44 +16,67 @@ using OpenRA.Scripting;
namespace OpenRA
{
public struct CPos : IScriptBindable, ILuaAdditionBinding, ILuaSubtractionBinding, ILuaEqualityBinding, ILuaTableBinding, IEquatable<CPos>
public readonly struct CPos : IScriptBindable, ILuaAdditionBinding, ILuaSubtractionBinding, ILuaEqualityBinding, ILuaTableBinding, IEquatable<CPos>
{
public readonly int X, Y;
// Coordinates are packed in a 32 bit signed int
// X and Y are 12 bits (signed): -2048...2047
// Layer is an unsigned byte
// Packing is XXXX XXXX XXXX YYYY YYYY YYYY LLLL LLLL
public readonly int Bits;
public CPos(int x, int y) { X = x; Y = y; }
public static readonly CPos Zero = new CPos(0, 0);
// X is padded to MSB, so bit shift does the correct sign extension
public int X => Bits >> 20;
// Align Y with a short, cast, then shift the rest of the way
// The signed short bit shift does the correct sign extension
public int Y => ((short)(Bits >> 4)) >> 4;
public byte Layer => (byte)Bits;
public CPos(int bits) { Bits = bits; }
public CPos(int x, int y)
: this(x, y, 0) { }
public CPos(int x, int y, byte layer)
{
Bits = (x & 0xFFF) << 20 | (y & 0xFFF) << 8 | layer;
}
public static readonly CPos Zero = new CPos(0, 0, 0);
public static explicit operator CPos(int2 a) { return new CPos(a.X, a.Y); }
public static CPos operator +(CVec a, CPos b) { return new CPos(a.X + b.X, a.Y + b.Y); }
public static CPos operator +(CPos a, CVec b) { return new CPos(a.X + b.X, a.Y + b.Y); }
public static CPos operator -(CPos a, CVec b) { return new CPos(a.X - b.X, a.Y - b.Y); }
public static CPos operator +(CVec a, CPos b) { return new CPos(a.X + b.X, a.Y + b.Y, b.Layer); }
public static CPos operator +(CPos a, CVec b) { return new CPos(a.X + b.X, a.Y + b.Y, a.Layer); }
public static CPos operator -(CPos a, CVec b) { return new CPos(a.X - b.X, a.Y - b.Y, a.Layer); }
public static CVec operator -(CPos a, CPos b) { return new CVec(a.X - b.X, a.Y - b.Y); }
public static bool operator ==(CPos me, CPos other) { return me.X == other.X && me.Y == other.Y; }
public static bool operator ==(CPos me, CPos other) { return me.Bits == other.Bits; }
public static bool operator !=(CPos me, CPos other) { return !(me == other); }
public static CPos Max(CPos a, CPos b) { return new CPos(Math.Max(a.X, b.X), Math.Max(a.Y, b.Y)); }
public static CPos Min(CPos a, CPos b) { return new CPos(Math.Min(a.X, b.X), Math.Min(a.Y, b.Y)); }
public override int GetHashCode() { return Bits.GetHashCode(); }
public override int GetHashCode() { return X.GetHashCode() ^ Y.GetHashCode(); }
public bool Equals(CPos other) { return X == other.X && Y == other.Y; }
public bool Equals(CPos other) { return Bits == other.Bits; }
public override bool Equals(object obj) { return obj is CPos && Equals((CPos)obj); }
public override string ToString() { return X + "," + Y; }
public override string ToString()
{
if (Layer == 0)
return X + "," + Y;
return X + "," + Y + "," + Layer;
}
public MPos ToMPos(Map map)
{
return ToMPos(map.TileShape);
return ToMPos(map.Grid.Type);
}
public MPos ToMPos(TileShape shape)
public MPos ToMPos(MapGridType gridType)
{
if (shape == TileShape.Rectangle)
if (gridType == MapGridType.Rectangular)
return new MPos(X, Y);
// Convert from diamond cell (x, y) position to rectangular map position (u, v)
// Convert from RectangularIsometric cell (x, y) position to rectangular map position (u, v)
// - The staggered rows make this fiddly (hint: draw a diagram!)
// (a) Consider the relationships:
// - +1x (even -> odd) adds (0, 1) to (u, v)
@@ -71,28 +95,35 @@ namespace OpenRA
public LuaValue Add(LuaRuntime runtime, LuaValue left, LuaValue right)
{
CPos a;
CVec b;
if (!left.TryGetClrValue<CPos>(out a) || !right.TryGetClrValue<CVec>(out b))
throw new LuaException("Attempted to call CPos.Add(CPos, CVec) with invalid arguments ({0}, {1})".F(left.WrappedClrType().Name, right.WrappedClrType().Name));
if (!left.TryGetClrValue(out CPos a) || !right.TryGetClrValue(out CVec b))
throw new LuaException($"Attempted to call CPos.Add(CPos, CVec) with invalid arguments ({left.WrappedClrType().Name}, {right.WrappedClrType().Name})");
return new LuaCustomClrObject(a + b);
}
public LuaValue Subtract(LuaRuntime runtime, LuaValue left, LuaValue right)
{
CPos a;
CVec b;
if (!left.TryGetClrValue<CPos>(out a) || !right.TryGetClrValue<CVec>(out b))
throw new LuaException("Attempted to call CPos.Subtract(CPos, CVec) with invalid arguments ({0}, {1})".F(left.WrappedClrType().Name, right.WrappedClrType().Name));
var rightType = right.WrappedClrType();
if (!left.TryGetClrValue(out CPos a))
throw new LuaException($"Attempted to call CPos.Subtract(CPos, (CPos|CVec)) with invalid arguments ({left.WrappedClrType().Name}, {rightType.Name})");
return new LuaCustomClrObject(a - b);
if (rightType == typeof(CPos))
{
right.TryGetClrValue(out CPos b);
return new LuaCustomClrObject(a - b);
}
else if (rightType == typeof(CVec))
{
right.TryGetClrValue(out CVec b);
return new LuaCustomClrObject(a - b);
}
throw new LuaException($"Attempted to call CPos.Subtract(CPos, (CPos|CVec)) with invalid arguments ({left.WrappedClrType().Name}, {rightType.Name})");
}
public LuaValue Equals(LuaRuntime runtime, LuaValue left, LuaValue right)
{
CPos a, b;
if (!left.TryGetClrValue<CPos>(out a) || !right.TryGetClrValue<CPos>(out b))
if (!left.TryGetClrValue(out CPos a) || !right.TryGetClrValue(out CPos b))
return false;
return a == b;
@@ -106,16 +137,14 @@ namespace OpenRA
{
case "X": return X;
case "Y": return Y;
default: throw new LuaException("CPos does not define a member '{0}'".F(key));
case "Layer": return Layer;
default: throw new LuaException($"CPos does not define a member '{key}'");
}
}
set
{
throw new LuaException("CPos is read-only. Use CPos.New to create a new value");
}
set => throw new LuaException("CPos is read-only. Use CPos.New to create a new value");
}
#endregion
}
}
}

View File

@@ -1,22 +1,23 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Drawing;
using Eluant;
using Eluant.ObjectBinding;
using OpenRA.Primitives;
using OpenRA.Scripting;
namespace OpenRA
{
public struct CVec : IScriptBindable, ILuaAdditionBinding, ILuaSubtractionBinding, ILuaUnaryMinusBinding, ILuaEqualityBinding, ILuaTableBinding, IEquatable<CVec>
public readonly struct CVec : IScriptBindable, ILuaAdditionBinding, ILuaSubtractionBinding, ILuaUnaryMinusBinding, ILuaEqualityBinding, ILuaTableBinding, IEquatable<CVec>
{
public readonly int X, Y;
@@ -41,8 +42,8 @@ namespace OpenRA
public CVec Sign() { return new CVec(Math.Sign(X), Math.Sign(Y)); }
public CVec Abs() { return new CVec(Math.Abs(X), Math.Abs(Y)); }
public int LengthSquared { get { return X * X + Y * Y; } }
public int Length { get { return Exts.ISqrt(LengthSquared); } }
public int LengthSquared => X * X + Y * Y;
public int Length => Exts.ISqrt(LengthSquared);
public CVec Clamp(Rectangle r)
{
@@ -74,18 +75,16 @@ namespace OpenRA
public LuaValue Add(LuaRuntime runtime, LuaValue left, LuaValue right)
{
CVec a, b;
if (!left.TryGetClrValue<CVec>(out a) || !right.TryGetClrValue<CVec>(out b))
throw new LuaException("Attempted to call CVec.Add(CVec, CVec) with invalid arguments ({0}, {1})".F(left.WrappedClrType().Name, right.WrappedClrType().Name));
if (!left.TryGetClrValue(out CVec a) || !right.TryGetClrValue(out CVec b))
throw new LuaException($"Attempted to call CVec.Add(CVec, CVec) with invalid arguments ({left.WrappedClrType().Name}, {right.WrappedClrType().Name})");
return new LuaCustomClrObject(a + b);
}
public LuaValue Subtract(LuaRuntime runtime, LuaValue left, LuaValue right)
{
CVec a, b;
if (!left.TryGetClrValue<CVec>(out a) || !right.TryGetClrValue<CVec>(out b))
throw new LuaException("Attempted to call CVec.Subtract(CVec, CVec) with invalid arguments ({0}, {1})".F(left.WrappedClrType().Name, right.WrappedClrType().Name));
if (!left.TryGetClrValue(out CVec a) || !right.TryGetClrValue(out CVec b))
throw new LuaException($"Attempted to call CVec.Subtract(CVec, CVec) with invalid arguments ({left.WrappedClrType().Name}, {right.WrappedClrType().Name})");
return new LuaCustomClrObject(a - b);
}
@@ -97,8 +96,7 @@ namespace OpenRA
public LuaValue Equals(LuaRuntime runtime, LuaValue left, LuaValue right)
{
CVec a, b;
if (!left.TryGetClrValue<CVec>(out a) || !right.TryGetClrValue<CVec>(out b))
if (!left.TryGetClrValue(out CVec a) || !right.TryGetClrValue(out CVec b))
return false;
return a == b;
@@ -112,14 +110,11 @@ namespace OpenRA
{
case "X": return X;
case "Y": return Y;
default: throw new LuaException("CVec does not define a member '{0}'".F(key));
default: throw new LuaException($"CVec does not define a member '{key}'");
}
}
set
{
throw new LuaException("WVec is read-only. Use CVec.New to create a new value");
}
set => throw new LuaException("CVec is read-only. Use CVec.New to create a new value");
}
#endregion

View File

@@ -1,19 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
namespace OpenRA
{
public interface ICacheStorage<T>
{
void Remove(string key);
void Store(string key, T data);
T Retrieve(string key);
}
}

261
OpenRA.Game/CryptoUtil.cs Normal file
View File

@@ -0,0 +1,261 @@
#region Copyright & License Information
/*
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
namespace OpenRA
{
public static class CryptoUtil
{
// Fixed byte pattern for the OID header
static readonly byte[] OIDHeader = { 0x30, 0xD, 0x6, 0x9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0xD, 0x1, 0x1, 0x1, 0x5, 0x0 };
public static string PublicKeyFingerprint(RSAParameters parameters)
{
// Public key fingerprint is defined as the SHA1 of the modulus + exponent bytes
return SHA1Hash(parameters.Modulus.Append(parameters.Exponent).ToArray());
}
public static string EncodePEMPublicKey(RSAParameters parameters)
{
var data = Convert.ToBase64String(EncodePublicKey(parameters));
var output = new StringBuilder();
output.AppendLine("-----BEGIN PUBLIC KEY-----");
for (var i = 0; i < data.Length; i += 64)
output.AppendLine(data.Substring(i, Math.Min(64, data.Length - i)));
output.Append("-----END PUBLIC KEY-----");
return output.ToString();
}
public static RSAParameters DecodePEMPublicKey(string key)
{
try
{
// Reconstruct original key data
var lines = key.Split('\n');
var data = Convert.FromBase64String(lines.Skip(1).Take(lines.Length - 2).JoinWith(""));
// Pull the modulus and exponent bytes out of the ASN.1 tree
// Expect this to blow up if the key is not correctly formatted
using (var s = new MemoryStream(data))
{
// SEQUENCE
s.ReadByte();
ReadTLVLength(s);
// SEQUENCE -> fixed header junk
s.ReadByte();
var headerLength = ReadTLVLength(s);
s.Position += headerLength;
// SEQUENCE -> BIT_STRING
s.ReadByte();
ReadTLVLength(s);
s.ReadByte();
// SEQUENCE -> BIT_STRING -> SEQUENCE
s.ReadByte();
ReadTLVLength(s);
// SEQUENCE -> BIT_STRING -> SEQUENCE -> INTEGER (modulus)
s.ReadByte();
var modulusLength = ReadTLVLength(s);
s.ReadByte();
var modulus = s.ReadBytes(modulusLength - 1);
// SEQUENCE -> BIT_STRING -> SEQUENCE -> INTEGER (exponent)
s.ReadByte();
var exponentLength = ReadTLVLength(s);
s.ReadByte();
var exponent = s.ReadBytes(exponentLength - 1);
return new RSAParameters
{
Modulus = modulus,
Exponent = exponent
};
}
}
catch (Exception e)
{
throw new InvalidDataException("Invalid PEM public key", e);
}
}
static byte[] EncodePublicKey(RSAParameters parameters)
{
using (var stream = new MemoryStream())
{
var writer = new BinaryWriter(stream);
var modExpLength = TripletFullLength(parameters.Modulus.Length + 1) + TripletFullLength(parameters.Exponent.Length + 1);
var bitStringLength = TripletFullLength(modExpLength + 1);
var sequenceLength = TripletFullLength(bitStringLength + OIDHeader.Length);
// SEQUENCE
writer.Write((byte)0x30);
WriteTLVLength(writer, sequenceLength);
// SEQUENCE -> fixed header junk
writer.Write(OIDHeader);
// SEQUENCE -> BIT_STRING
writer.Write((byte)0x03);
WriteTLVLength(writer, bitStringLength);
writer.Write((byte)0x00);
// SEQUENCE -> BIT_STRING -> SEQUENCE
writer.Write((byte)0x30);
WriteTLVLength(writer, modExpLength);
// SEQUENCE -> BIT_STRING -> SEQUENCE -> INTEGER
// Modulus is padded with a zero to avoid issues with the sign bit
writer.Write((byte)0x02);
WriteTLVLength(writer, parameters.Modulus.Length + 1);
writer.Write((byte)0);
writer.Write(parameters.Modulus);
// SEQUENCE -> BIT_STRING -> SEQUENCE -> INTEGER
// Exponent is padded with a zero to avoid issues with the sign bit
writer.Write((byte)0x02);
WriteTLVLength(writer, parameters.Exponent.Length + 1);
writer.Write((byte)0);
writer.Write(parameters.Exponent);
return stream.ToArray();
}
}
static void WriteTLVLength(BinaryWriter writer, int length)
{
if (length < 0x80)
{
// Length < 128 is stored in a single byte
writer.Write((byte)length);
}
else
{
// If 128 <= length < 256**128 first byte encodes number of bytes required to hold the length
// High-bit is set as a flag to use this long-form encoding
var lengthBytes = BitConverter.GetBytes(length).Reverse().SkipWhile(b => b == 0).ToArray();
writer.Write((byte)(0x80 | lengthBytes.Length));
writer.Write(lengthBytes);
}
}
static int ReadTLVLength(Stream s)
{
var length = s.ReadByte();
if (length < 0x80)
return length;
var data = new byte[4];
s.ReadBytes(data, 0, Math.Min(length & 0x7F, 4));
return BitConverter.ToInt32(data.ToArray(), 0);
}
static int TripletFullLength(int dataLength)
{
if (dataLength < 0x80)
return 2 + dataLength;
return 2 + dataLength + BitConverter.GetBytes(dataLength).Reverse().SkipWhile(b => b == 0).Count();
}
public static string DecryptString(RSAParameters parameters, string data)
{
try
{
using (var rsa = new RSACryptoServiceProvider())
{
rsa.ImportParameters(parameters);
return Encoding.UTF8.GetString(rsa.Decrypt(Convert.FromBase64String(data), false));
}
}
catch (Exception e)
{
Log.Write("debug", "Failed to decrypt string with exception: {0}", e);
Console.WriteLine("String decryption failed: {0}", e);
return null;
}
}
public static string Sign(RSAParameters parameters, string data)
{
return Sign(parameters, Encoding.UTF8.GetBytes(data));
}
public static string Sign(RSAParameters parameters, byte[] data)
{
try
{
using (var rsa = new RSACryptoServiceProvider())
{
rsa.ImportParameters(parameters);
using (var csp = SHA1.Create())
return Convert.ToBase64String(rsa.SignHash(csp.ComputeHash(data), CryptoConfig.MapNameToOID("SHA1")));
}
}
catch (Exception e)
{
Log.Write("debug", "Failed to sign string with exception: {0}", e);
Console.WriteLine("String signing failed: {0}", e);
return null;
}
}
public static bool VerifySignature(RSAParameters parameters, string data, string signature)
{
return VerifySignature(parameters, Encoding.UTF8.GetBytes(data), signature);
}
public static bool VerifySignature(RSAParameters parameters, byte[] data, string signature)
{
try
{
using (var rsa = new RSACryptoServiceProvider())
{
rsa.ImportParameters(parameters);
using (var csp = SHA1.Create())
return rsa.VerifyHash(csp.ComputeHash(data), CryptoConfig.MapNameToOID("SHA1"), Convert.FromBase64String(signature));
}
}
catch (Exception e)
{
Log.Write("debug", "Failed to verify signature with exception: {0}", e);
Console.WriteLine("Signature validation failed: {0}", e);
return false;
}
}
public static string SHA1Hash(Stream data)
{
using (var csp = SHA1.Create())
return new string(csp.ComputeHash(data).SelectMany(a => a.ToString("x2")).ToArray());
}
public static string SHA1Hash(byte[] data)
{
using (var csp = SHA1.Create())
return new string(csp.ComputeHash(data).SelectMany(a => a.ToString("x2")).ToArray());
}
public static string SHA1Hash(string data)
{
return SHA1Hash(Encoding.UTF8.GetBytes(data));
}
}
}

View File

@@ -0,0 +1,20 @@
#region Copyright & License Information
/*
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using OpenRA.Primitives;
namespace OpenRA
{
public class DefaultPlayer : IGlobalModData
{
public readonly Color Color = Color.FromArgb(0xEE, 0xEE, 0xEE);
}
}

View File

@@ -1,79 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.ComponentModel;
using System.Net;
namespace OpenRA
{
public class Download
{
WebClient wc;
bool cancelled;
public static string FormatErrorMessage(Exception e)
{
var ex = e as WebException;
if (ex == null)
return e.Message;
switch (ex.Status)
{
case WebExceptionStatus.NameResolutionFailure:
return "DNS lookup failed";
case WebExceptionStatus.Timeout:
return "Connection timeout";
case WebExceptionStatus.ConnectFailure:
return "Cannot connect to remote server";
case WebExceptionStatus.ProtocolError:
return "File not found on remote server";
default:
return ex.Message;
}
}
public Download(string url, string path, Action<DownloadProgressChangedEventArgs> onProgress, Action<AsyncCompletedEventArgs, bool> onComplete)
{
wc = new WebClient();
wc.Proxy = null;
wc.DownloadProgressChanged += (_, a) => onProgress(a);
wc.DownloadFileCompleted += (_, a) => onComplete(a, cancelled);
Game.OnQuit += Cancel;
wc.DownloadFileCompleted += (_, a) => { Game.OnQuit -= Cancel; };
wc.DownloadFileAsync(new Uri(url), path);
}
public Download(string url, Action<DownloadProgressChangedEventArgs> onProgress, Action<DownloadDataCompletedEventArgs, bool> onComplete)
{
wc = new WebClient();
wc.Proxy = null;
wc.DownloadProgressChanged += (_, a) => onProgress(a);
wc.DownloadDataCompleted += (_, a) => onComplete(a, cancelled);
Game.OnQuit += Cancel;
wc.DownloadDataCompleted += (_, a) => { Game.OnQuit -= Cancel; };
wc.DownloadDataAsync(new Uri(url));
}
public void Cancel()
{
Game.OnQuit -= Cancel;
wc.CancelAsync();
wc.Dispose();
cancelled = true;
}
}
}

View File

@@ -1,10 +1,11 @@
#region Copyright & License Information
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
@@ -16,8 +17,8 @@ namespace OpenRA.Effects
{
public class AsyncAction : IEffect
{
Action a;
IAsyncResult ar;
readonly Action a;
readonly IAsyncResult ar;
public AsyncAction(IAsyncResult ar, Action a)
{

View File

@@ -1,10 +1,11 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
@@ -16,7 +17,7 @@ namespace OpenRA.Effects
{
public class DelayedAction : IEffect
{
Action a;
readonly Action a;
int delay;
public DelayedAction(int delay, Action a)

View File

@@ -0,0 +1,43 @@
#region Copyright & License Information
/*
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System.Collections.Generic;
using OpenRA.GameRules;
using OpenRA.Graphics;
using OpenRA.Traits;
namespace OpenRA.Effects
{
public class DelayedImpact : IEffect
{
readonly Target target;
readonly IWarhead wh;
readonly WarheadArgs args;
int delay;
public DelayedImpact(int delay, IWarhead wh, Target target, WarheadArgs args)
{
this.wh = wh;
this.delay = delay;
this.target = target;
this.args = args;
}
public void Tick(World world)
{
if (--delay <= 0)
world.AddFrameEndTask(w => { w.Remove(this); wh.DoImpact(target, args); });
}
public IEnumerable<IRenderable> Render(WorldRenderer wr) { yield break; }
}
}

View File

@@ -1,54 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System.Collections.Generic;
using System.Linq;
using OpenRA.Graphics;
namespace OpenRA.Effects
{
public class FlashTarget : IEffect
{
Actor target;
Player player;
int remainingTicks;
public FlashTarget(Actor target, Player asPlayer = null, int ticks = 4)
{
this.target = target;
player = asPlayer;
remainingTicks = ticks;
target.World.RemoveAll(effect =>
{
var flashTarget = effect as FlashTarget;
return flashTarget != null && flashTarget.target == target;
});
}
public void Tick(World world)
{
if (--remainingTicks == 0 || !target.IsInWorld)
world.AddFrameEndTask(w => w.Remove(this));
}
public IEnumerable<IRenderable> Render(WorldRenderer wr)
{
if (target.IsInWorld && remainingTicks % 2 == 0)
{
var palette = wr.Palette(player == null ? "highlight" : "highlight" + player.InternalName);
return target.Render(wr)
.Where(r => !r.IsDecoration)
.Select(r => r.WithPalette(palette));
}
return SpriteRenderable.None;
}
}
}

View File

@@ -1,10 +1,11 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
@@ -18,4 +19,10 @@ namespace OpenRA.Effects
void Tick(World world);
IEnumerable<IRenderable> Render(WorldRenderer r);
}
// Identifier interface for effects that are added to ScreenMap
public interface ISpatiallyPartitionable { }
public interface IEffectAboveShroud { IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr); }
public interface IEffectAnnotation { IEnumerable<IRenderable> RenderAnnotation(WorldRenderer wr); }
}

View File

@@ -1,40 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System.Collections.Generic;
using OpenRA.Graphics;
namespace OpenRA.Effects
{
public class SpriteEffect : IEffect
{
readonly string palette;
readonly Animation anim;
readonly WPos pos;
public SpriteEffect(WPos pos, World world, string image, string palette)
{
this.pos = pos;
this.palette = palette;
anim = new Animation(world, image);
anim.PlayThen("idle", () => world.AddFrameEndTask(w => w.Remove(this)));
}
public void Tick(World world)
{
anim.Tick();
}
public IEnumerable<IRenderable> Render(WorldRenderer wr)
{
return anim.Render(pos, WVec.Zero, 0, wr.Palette(palette), 1f / wr.Viewport.Zoom);
}
}
}

290
OpenRA.Game/ExternalMods.cs Normal file
View File

@@ -0,0 +1,290 @@
#region Copyright & License Information
/*
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using OpenRA.FileFormats;
using OpenRA.Graphics;
using OpenRA.Primitives;
namespace OpenRA
{
[Flags]
enum ModRegistration { User = 1, System = 2 }
public class ExternalMod
{
public readonly string Id;
public readonly string Version;
public readonly string Title;
public readonly string LaunchPath;
public readonly string[] LaunchArgs;
public Sprite Icon { get; internal set; }
public Sprite Icon2x { get; internal set; }
public Sprite Icon3x { get; internal set; }
public static string MakeKey(Manifest mod) { return MakeKey(mod.Id, mod.Metadata.Version); }
public static string MakeKey(ExternalMod mod) { return MakeKey(mod.Id, mod.Version); }
public static string MakeKey(string modId, string modVersion) { return modId + "-" + modVersion; }
}
public class ExternalMods : IReadOnlyDictionary<string, ExternalMod>
{
readonly Dictionary<string, ExternalMod> mods = new Dictionary<string, ExternalMod>();
readonly SheetBuilder sheetBuilder;
Sheet CreateSheet()
{
var sheet = new Sheet(SheetType.BGRA, new Size(512, 512));
// We must manually force the buffer creation to avoid a crash
// that is indirectly triggered by rendering from a Sheet that
// has not yet been written to.
sheet.CreateBuffer();
sheet.GetTexture().ScaleFilter = TextureScaleFilter.Linear;
return sheet;
}
public ExternalMods()
{
// Don't try to load mod icons if we don't have a texture to put them in
if (Game.Renderer != null)
sheetBuilder = new SheetBuilder(SheetType.BGRA, CreateSheet);
// Several types of support directory types are available, depending on
// how the player has installed and launched the game.
// Read registration metadata from all of them
foreach (var source in GetSupportDirs(ModRegistration.User | ModRegistration.System))
{
var metadataPath = Path.Combine(source, "ModMetadata");
if (!Directory.Exists(metadataPath))
continue;
foreach (var path in Directory.GetFiles(metadataPath, "*.yaml"))
{
try
{
var yaml = MiniYaml.FromStream(File.OpenRead(path), path).First().Value;
LoadMod(yaml, path);
}
catch (Exception e)
{
Log.Write("debug", "Failed to parse mod metadata file '{0}'", path);
Log.Write("debug", e.ToString());
}
}
}
}
void LoadMod(MiniYaml yaml, string path = null, bool forceRegistration = false)
{
var mod = FieldLoader.Load<ExternalMod>(yaml);
if (sheetBuilder != null)
{
var iconNode = yaml.Nodes.FirstOrDefault(n => n.Key == "Icon");
if (iconNode != null && !string.IsNullOrEmpty(iconNode.Value.Value))
using (var stream = new MemoryStream(Convert.FromBase64String(iconNode.Value.Value)))
mod.Icon = sheetBuilder.Add(new Png(stream));
var icon2xNode = yaml.Nodes.FirstOrDefault(n => n.Key == "Icon2x");
if (icon2xNode != null && !string.IsNullOrEmpty(icon2xNode.Value.Value))
using (var stream = new MemoryStream(Convert.FromBase64String(icon2xNode.Value.Value)))
mod.Icon2x = sheetBuilder.Add(new Png(stream), 1f / 2);
var icon3xNode = yaml.Nodes.FirstOrDefault(n => n.Key == "Icon3x");
if (icon3xNode != null && !string.IsNullOrEmpty(icon3xNode.Value.Value))
using (var stream = new MemoryStream(Convert.FromBase64String(icon3xNode.Value.Value)))
mod.Icon3x = sheetBuilder.Add(new Png(stream), 1f / 3);
}
// Avoid possibly overwriting a valid mod with an obviously bogus one
var key = ExternalMod.MakeKey(mod);
if ((forceRegistration || File.Exists(mod.LaunchPath)) && (path == null || Path.GetFileNameWithoutExtension(path) == key))
mods[key] = mod;
}
internal void Register(Manifest mod, string launchPath, IEnumerable<string> launchArgs, ModRegistration registration)
{
if (mod.Metadata.Hidden)
return;
var key = ExternalMod.MakeKey(mod);
var yaml = new MiniYamlNode("Registration", new MiniYaml("", new List<MiniYamlNode>()
{
new MiniYamlNode("Id", mod.Id),
new MiniYamlNode("Version", mod.Metadata.Version),
new MiniYamlNode("Title", mod.Metadata.Title),
new MiniYamlNode("LaunchPath", launchPath),
new MiniYamlNode("LaunchArgs", new[] { "Game.Mod=" + mod.Id }.Concat(launchArgs).JoinWith(", "))
}));
using (var stream = mod.Package.GetStream("icon.png"))
if (stream != null)
yaml.Value.Nodes.Add(new MiniYamlNode("Icon", Convert.ToBase64String(stream.ReadAllBytes())));
using (var stream = mod.Package.GetStream("icon-2x.png"))
if (stream != null)
yaml.Value.Nodes.Add(new MiniYamlNode("Icon2x", Convert.ToBase64String(stream.ReadAllBytes())));
using (var stream = mod.Package.GetStream("icon-3x.png"))
if (stream != null)
yaml.Value.Nodes.Add(new MiniYamlNode("Icon3x", Convert.ToBase64String(stream.ReadAllBytes())));
var sources = new HashSet<string>();
if (registration.HasFlag(ModRegistration.System))
sources.Add(Platform.GetSupportDir(SupportDirType.System));
if (registration.HasFlag(ModRegistration.User))
{
sources.Add(Platform.GetSupportDir(SupportDirType.User));
// If using the modern support dir we must also write the registration
// to the legacy support dir for older engine versions, but ONLY if it exists
var legacyPath = Platform.GetSupportDir(SupportDirType.LegacyUser);
if (Directory.Exists(legacyPath))
sources.Add(legacyPath);
}
// Make sure the mod is available for this session, even if saving it fails
LoadMod(yaml.Value, forceRegistration: true);
var lines = new List<MiniYamlNode> { yaml }.ToLines().ToArray();
foreach (var source in sources)
{
var metadataPath = Path.Combine(source, "ModMetadata");
try
{
Directory.CreateDirectory(metadataPath);
File.WriteAllLines(Path.Combine(metadataPath, key + ".yaml"), lines);
}
catch (Exception e)
{
Log.Write("debug", "Failed to register current mod metadata");
Log.Write("debug", e.ToString());
}
}
}
/// <summary>
/// Removes invalid mod registrations:
/// * LaunchPath no longer exists
/// * LaunchPath and mod id matches the active mod, but the version is different
/// * Filename doesn't match internal key
/// * Fails to parse as a mod registration
/// </summary>
internal void ClearInvalidRegistrations(ModRegistration registration)
{
foreach (var source in GetSupportDirs(registration))
{
var metadataPath = Path.Combine(source, "ModMetadata");
if (!Directory.Exists(metadataPath))
continue;
foreach (var path in Directory.GetFiles(metadataPath, "*.yaml"))
{
string modKey = null;
try
{
var yaml = MiniYaml.FromStream(File.OpenRead(path), path).First().Value;
var m = FieldLoader.Load<ExternalMod>(yaml);
modKey = ExternalMod.MakeKey(m);
// Continue to the next entry if this one is valid
// HACK: Explicitly invalidate paths to OpenRA.dll to clean up bogus metadata files
// that were created after the initial migration from .NET Framework to Core/5.
if (File.Exists(m.LaunchPath) && Path.GetFileNameWithoutExtension(path) == modKey && Path.GetExtension(m.LaunchPath) != ".dll")
continue;
}
catch (Exception e)
{
Log.Write("debug", "Failed to parse mod metadata file '{0}'", path);
Log.Write("debug", e.ToString());
}
// Remove from the ingame mod switcher
if (Path.GetFileNameWithoutExtension(path) == modKey)
mods.Remove(modKey);
// Remove stale or corrupted metadata
try
{
File.Delete(path);
Log.Write("debug", "Removed invalid mod metadata file '{0}'", path);
}
catch (Exception e)
{
Log.Write("debug", "Failed to remove mod metadata file '{0}'", path);
Log.Write("debug", e.ToString());
}
}
}
}
internal void Unregister(Manifest mod, ModRegistration registration)
{
var key = ExternalMod.MakeKey(mod);
mods.Remove(key);
foreach (var source in GetSupportDirs(registration))
{
var path = Path.Combine(source, "ModMetadata", key + ".yaml");
try
{
if (File.Exists(path))
File.Delete(path);
}
catch (Exception e)
{
Log.Write("debug", "Failed to remove mod metadata file '{0}'", path);
Log.Write("debug", e.ToString());
}
}
}
IEnumerable<string> GetSupportDirs(ModRegistration registration)
{
var sources = new HashSet<string>(4);
if (registration.HasFlag(ModRegistration.System))
sources.Add(Platform.GetSupportDir(SupportDirType.System));
if (registration.HasFlag(ModRegistration.User))
{
// User support dir may be using the modern or legacy value, or overridden by the user
// Add all the possibilities and let the HashSet ignore the duplicates
sources.Add(Platform.GetSupportDir(SupportDirType.User));
sources.Add(Platform.GetSupportDir(SupportDirType.ModernUser));
sources.Add(Platform.GetSupportDir(SupportDirType.LegacyUser));
}
return sources;
}
public ExternalMod this[string key] => mods[key];
public int Count => mods.Count;
public ICollection<string> Keys => mods.Keys;
public ICollection<ExternalMod> Values => mods.Values;
IEnumerable<string> IReadOnlyDictionary<string, ExternalMod>.Keys => ((IReadOnlyDictionary<string, ExternalMod>)mods).Keys;
IEnumerable<ExternalMod> IReadOnlyDictionary<string, ExternalMod>.Values => ((IReadOnlyDictionary<string, ExternalMod>)mods).Values;
public bool ContainsKey(string key) { return mods.ContainsKey(key); }
public IEnumerator<KeyValuePair<string, ExternalMod>> GetEnumerator() { return mods.GetEnumerator(); }
public bool TryGetValue(string key, out ExternalMod value) { return mods.TryGetValue(key, out value); }
IEnumerator IEnumerable.GetEnumerator() { return mods.GetEnumerator(); }
}
}

View File

@@ -1,20 +1,20 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Globalization;
using System.Linq;
using System.Reflection;
using OpenRA.Primitives;
using OpenRA.Support;
using OpenRA.Traits;
@@ -38,12 +38,6 @@ namespace OpenRA
catch { return def; }
}
public static void Do<T>(this IEnumerable<T> e, Action<T> fn)
{
foreach (var ee in e)
fn(ee);
}
public static Lazy<T> Lazy<T>(Func<T> p) { return new Lazy<T>(p); }
public static IEnumerable<string> GetNamespaces(this Assembly a)
@@ -53,7 +47,7 @@ namespace OpenRA
public static bool HasAttribute<T>(this MemberInfo mi)
{
return mi.GetCustomAttributes(typeof(T), true).Length != 0;
return Attribute.IsDefined(mi, typeof(T));
}
public static T[] GetCustomAttributes<T>(this MemberInfo mi, bool inherit)
@@ -78,19 +72,9 @@ namespace OpenRA
return val;
}
public static bool Contains(this Rectangle r, int2 p)
{
return r.Contains(p.ToPoint());
}
public static bool Contains(this RectangleF r, int2 p)
{
return r.Contains(p.ToPointF());
}
static int WindingDirectionTest(int2 v0, int2 v1, int2 p)
{
return (v1.X - v0.X) * (p.Y - v0.Y) - (p.X - v0.X) * (v1.Y - v0.Y);
return Math.Sign((v1.X - v0.X) * (p.Y - v0.Y) - (p.X - v0.X) * (v1.Y - v0.Y));
}
public static bool PolygonContains(this int2[] polygon, int2 p)
@@ -111,21 +95,38 @@ namespace OpenRA
return windingNumber != 0;
}
public static bool LinesIntersect(int2 a, int2 b, int2 c, int2 d)
{
// If line segments AB and CD intersect:
// - the triangles ACD and BCD must have opposite sense (clockwise or anticlockwise)
// - the triangles CAB and DAB must have opposite sense
// Segments intersect if the orientation (clockwise or anticlockwise) of the two points in each line segment are opposite with respect to the other
// Assumes that lines are not collinear
return WindingDirectionTest(c, d, a) != WindingDirectionTest(c, d, b) && WindingDirectionTest(a, b, c) != WindingDirectionTest(a, b, d);
}
public static bool HasModifier(this Modifiers k, Modifiers mod)
{
// PERF: Enum.HasFlag is slower and requires allocations.
return (k & mod) == mod;
}
public static V GetOrAdd<K, V>(this Dictionary<K, V> d, K k)
where V : new()
{
return d.GetOrAdd(k, _ => new V());
return d.GetOrAdd(k, new V());
}
public static V GetOrAdd<K, V>(this Dictionary<K, V> d, K k, V v)
{
if (!d.TryGetValue(k, out var ret))
d.Add(k, ret = v);
return ret;
}
public static V GetOrAdd<K, V>(this Dictionary<K, V> d, K k, Func<K, V> createFn)
{
V ret;
if (!d.TryGetValue(k, out ret))
if (!d.TryGetValue(k, out var ret))
d.Add(k, ret = createFn(k));
return ret;
}
@@ -152,14 +153,34 @@ namespace OpenRA
if (xs.Count == 0)
{
if (throws)
throw new ArgumentException("Collection must not be empty.", "ts");
throw new ArgumentException("Collection must not be empty.", nameof(ts));
else
return default(T);
return default;
}
else
return xs.ElementAt(r.Next(xs.Count));
}
public static Rectangle Union(this IEnumerable<Rectangle> rects)
{
// PERF: Avoid LINQ.
var first = true;
var result = Rectangle.Empty;
foreach (var rect in rects)
{
if (first)
{
first = false;
result = rect;
continue;
}
result = Rectangle.Union(rect, result);
}
return result;
}
public static float Product(this IEnumerable<float> xs)
{
return xs.Aggregate(1f, (a, x) => a * x);
@@ -173,7 +194,11 @@ namespace OpenRA
public static IEnumerable<T> Iterate<T>(this T t, Func<T, T> f)
{
for (;;) { yield return t; t = f(t); }
while (true)
{
yield return t;
t = f(t);
}
}
public static T MinBy<T, U>(this IEnumerable<T> ts, Func<T, U> selector)
@@ -205,9 +230,9 @@ namespace OpenRA
{
if (!e.MoveNext())
if (throws)
throw new ArgumentException("Collection must not be empty.", "ts");
throw new ArgumentException("Collection must not be empty.", nameof(ts));
else
return default(T);
return default;
t = e.Current;
u = selector(t);
while (e.MoveNext())
@@ -247,7 +272,7 @@ namespace OpenRA
public static int ISqrt(int number, ISqrtRoundMode round = ISqrtRoundMode.Floor)
{
if (number < 0)
throw new InvalidOperationException("Attempted to calculate the square root of a negative integer: {0}".F(number));
throw new InvalidOperationException($"Attempted to calculate the square root of a negative integer: {number}");
return (int)ISqrt((uint)number, round);
}
@@ -288,7 +313,7 @@ namespace OpenRA
public static long ISqrt(long number, ISqrtRoundMode round = ISqrtRoundMode.Floor)
{
if (number < 0)
throw new InvalidOperationException("Attempted to calculate the square root of a negative integer: {0}".F(number));
throw new InvalidOperationException($"Attempted to calculate the square root of a negative integer: {number}");
return (long)ISqrt((ulong)number, round);
}
@@ -326,6 +351,19 @@ namespace OpenRA
return root;
}
public static int MultiplyBySqrtTwo(short number)
{
return number * 46341 / 32768;
}
public static int IntegerDivisionRoundingAwayFromZero(int dividend, int divisor)
{
var quotient = Math.DivRem(dividend, divisor, out var remainder);
if (remainder == 0)
return quotient;
return quotient + (Math.Sign(dividend) == Math.Sign(divisor) ? 1 : -1);
}
public static string JoinWith<T>(this IEnumerable<T> ts, string j)
{
return string.Join(j, ts);
@@ -336,6 +374,11 @@ namespace OpenRA
return ts.Concat(moreTs);
}
public static IEnumerable<T> Exclude<T>(this IEnumerable<T> ts, params T[] exclusions)
{
return ts.Except(exclusions);
}
public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source)
{
return new HashSet<T>(source);
@@ -350,7 +393,7 @@ namespace OpenRA
public static Dictionary<TKey, TElement> ToDictionaryWithConflictLog<TSource, TKey, TElement>(
this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector,
string debugName, Func<TKey, string> logKey, Func<TElement, string> logValue)
string debugName, Func<TKey, string> logKey = null, Func<TElement, string> logValue = null)
{
// Fall back on ToString() if null functions are provided:
logKey = logKey ?? (s => s.ToString());
@@ -358,37 +401,40 @@ namespace OpenRA
// Try to build a dictionary and log all duplicates found (if any):
var dupKeys = new Dictionary<TKey, List<string>>();
var d = new Dictionary<TKey, TElement>();
var capacity = source is ICollection<TSource> collection ? collection.Count : 0;
var d = new Dictionary<TKey, TElement>(capacity);
foreach (var item in source)
{
var key = keySelector(item);
var element = elementSelector(item);
// Discard elements with null keys
if (!typeof(TKey).IsValueType && key == null)
continue;
// Check for a key conflict:
if (d.ContainsKey(key))
if (!d.TryAdd(key, element))
{
List<string> dupKeyMessages;
if (!dupKeys.TryGetValue(key, out dupKeyMessages))
if (!dupKeys.TryGetValue(key, out var dupKeyMessages))
{
// Log the initial conflicting value already inserted:
dupKeyMessages = new List<string>();
dupKeyMessages.Add(logValue(d[key]));
dupKeyMessages = new List<string>
{
logValue(d[key])
};
dupKeys.Add(key, dupKeyMessages);
}
// Log this conflicting value:
dupKeyMessages.Add(logValue(element));
continue;
}
d.Add(key, element);
}
// If any duplicates were found, throw a descriptive error
if (dupKeys.Count > 0)
{
var badKeysFormatted = string.Join(", ", dupKeys.Select(p => "{0}: [{1}]".F(logKey(p.Key), string.Join(",", p.Value))));
var msg = "{0}, duplicate values found for the following keys: {1}".F(debugName, badKeysFormatted);
var badKeysFormatted = string.Join(", ", dupKeys.Select(p => $"{logKey(p.Key)}: [{string.Join(",", p.Value)}]"));
var msg = $"{debugName}, duplicate values found for the following keys: {badKeysFormatted}";
throw new ArgumentException(msg);
}
@@ -433,27 +479,6 @@ namespace OpenRA
return result;
}
public static Rectangle Bounds(this Bitmap b) { return new Rectangle(0, 0, b.Width, b.Height); }
public static Bitmap CloneWith32bbpArgbPixelFormat(this Bitmap original)
{
// Note: We would use original.Clone(original.Bounds(), PixelFormat.Format32bppArgb)
// but this doesn't work on mono.
var clone = new Bitmap(original.Width, original.Height, PixelFormat.Format32bppArgb);
try
{
using (var g = System.Drawing.Graphics.FromImage(clone))
g.DrawImage(original, original.Bounds());
}
catch (Exception)
{
clone.Dispose();
throw;
}
return clone;
}
public static int ToBits(this IEnumerable<bool> bits)
{
var i = 0;
@@ -473,20 +498,109 @@ namespace OpenRA
return int.Parse(s, NumberStyles.Integer, NumberFormatInfo.InvariantInfo);
}
public static byte ParseByte(string s)
{
return byte.Parse(s, NumberStyles.Integer, NumberFormatInfo.InvariantInfo);
}
public static bool TryParseIntegerInvariant(string s, out int i)
{
return int.TryParse(s, NumberStyles.Integer, NumberFormatInfo.InvariantInfo, out i);
}
public static bool IsTraitEnabled(this object trait)
public static bool TryParseInt64Invariant(string s, out long i)
{
return trait as IDisabledTrait == null || !(trait as IDisabledTrait).IsTraitDisabled;
return long.TryParse(s, NumberStyles.Integer, NumberFormatInfo.InvariantInfo, out i);
}
public static bool IsTraitEnabled<T>(T t)
public static bool IsTraitEnabled<T>(this T trait)
{
return IsTraitEnabled(t as object);
return !(trait is IDisabledTrait disabledTrait) || !disabledTrait.IsTraitDisabled;
}
public static T FirstEnabledTraitOrDefault<T>(this IEnumerable<T> ts)
{
// PERF: Avoid LINQ.
foreach (var t in ts)
if (t.IsTraitEnabled())
return t;
return default;
}
public static T FirstEnabledTraitOrDefault<T>(this T[] ts)
{
// PERF: Avoid LINQ.
foreach (var t in ts)
if (t.IsTraitEnabled())
return t;
return default;
}
public static T FirstEnabledConditionalTraitOrDefault<T>(this IEnumerable<T> ts) where T : IDisabledTrait
{
// PERF: Avoid LINQ.
foreach (var t in ts)
if (!t.IsTraitDisabled)
return t;
return default;
}
public static T FirstEnabledConditionalTraitOrDefault<T>(this T[] ts) where T : IDisabledTrait
{
// PERF: Avoid LINQ.
foreach (var t in ts)
if (!t.IsTraitDisabled)
return t;
return default;
}
public static LineSplitEnumerator SplitLines(this string str, char separator)
{
return new LineSplitEnumerator(str.AsSpan(), separator);
}
}
public ref struct LineSplitEnumerator
{
ReadOnlySpan<char> str;
readonly char separator;
public LineSplitEnumerator(ReadOnlySpan<char> str, char separator)
{
this.str = str;
this.separator = separator;
Current = default;
}
public LineSplitEnumerator GetEnumerator() => this;
public bool MoveNext()
{
var span = str;
// Reach the end of the string
if (span.Length == 0)
return false;
var index = span.IndexOf(separator);
if (index == -1)
{
// The remaining string is an empty string
str = ReadOnlySpan<char>.Empty;
Current = span;
return true;
}
Current = span.Slice(0, index);
str = span.Slice(index + 1);
return true;
}
public ReadOnlySpan<char> Current { get; private set; }
}
public static class Enum<T>
@@ -502,7 +616,7 @@ namespace OpenRA
if (values.Any(x => !names.Contains(x)))
{
value = default(T);
value = default;
return false;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,21 +1,21 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Imaging;
using System.Globalization;
using System.Linq;
using System.Reflection;
using OpenRA.Primitives;
namespace OpenRA
{
@@ -28,7 +28,18 @@ namespace OpenRA
foreach (var info in FieldLoader.GetTypeLoadInfo(o.GetType(), includePrivateByDefault))
{
if (info.Attribute.FromYamlKey)
if (info.Attribute.DictionaryFromYamlKey)
{
var dict = (System.Collections.IDictionary)info.Field.GetValue(o);
foreach (var kvp in dict)
{
var key = ((System.Collections.DictionaryEntry)kvp).Key;
var value = ((System.Collections.DictionaryEntry)kvp).Value;
nodes.Add(new MiniYamlNode(FormatValue(key), FormatValue(value)));
}
}
else if (info.Attribute.FromYamlKey)
root = FormatValue(o, info.Field);
else
nodes.Add(new MiniYamlNode(info.YamlName, FormatValue(o, info.Field)));
@@ -55,51 +66,42 @@ namespace OpenRA
return new MiniYamlNode(field, FormatValue(o, o.GetType().GetField(field)));
}
public static string FormatValue(object v, Type t)
public static string FormatValue(object v)
{
if (v == null)
return "";
// Color.ToString() does the wrong thing; force it to format as an array
if (t == typeof(Color))
var t = v.GetType();
if (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(BitSet<>))
return ((IEnumerable<string>)v).Select(FormatValue).JoinWith(", ");
if (t.IsArray && t.GetArrayRank() == 1)
return ((Array)v).Cast<object>().Select(FormatValue).JoinWith(", ");
if (t.IsGenericType && (t.GetGenericTypeDefinition() == typeof(HashSet<>) || t.GetGenericTypeDefinition() == typeof(List<>)))
return ((System.Collections.IEnumerable)v).Cast<object>().Select(FormatValue).JoinWith(", ");
// This is only for documentation generation
if (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(Dictionary<,>))
{
var c = (Color)v;
return "{0},{1},{2},{3}".F(((int)c.A).Clamp(0, 255),
((int)c.R).Clamp(0, 255),
((int)c.G).Clamp(0, 255),
((int)c.B).Clamp(0, 255));
var result = "";
var dict = (System.Collections.IDictionary)v;
foreach (var kvp in dict)
{
var key = ((System.Collections.DictionaryEntry)kvp).Key;
var value = ((System.Collections.DictionaryEntry)kvp).Value;
var formattedKey = FormatValue(key);
var formattedValue = FormatValue(value);
result += $"{formattedKey}: {formattedValue}{Environment.NewLine}";
}
return result;
}
// Don't save using country-specific decimal separators which can be misunderstood as group seperators.
if (t == typeof(float))
return ((float)v).ToString(CultureInfo.InvariantCulture);
if (t == typeof(decimal))
return ((decimal)v).ToString(CultureInfo.InvariantCulture);
if (t == typeof(double))
return ((double)v).ToString(CultureInfo.InvariantCulture);
if (t == typeof(ImageFormat))
{
return ((ImageFormat)v).ToString();
}
if (t == typeof(Rectangle))
{
var r = (Rectangle)v;
return "{0},{1},{2},{3}".F(r.X, r.Y, r.Width, r.Height);
}
if (t.IsArray)
{
var elems = ((Array)v).OfType<object>();
return elems.JoinWith(", ");
}
if (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(OpenRA.Primitives.Cache<,>))
return ""; // TODO
if (t == typeof(DateTime))
return ((DateTime)v).ToString("yyyy-MM-dd HH-mm-ss", CultureInfo.InvariantCulture);
if (v is DateTime d)
return d.ToString("yyyy-MM-dd HH-mm-ss", CultureInfo.InvariantCulture);
// Try the TypeConverter
var conv = TypeDescriptor.GetConverter(t);
@@ -119,7 +121,7 @@ namespace OpenRA
public static string FormatValue(object o, FieldInfo f)
{
return FormatValue(f.GetValue(o), f.FieldType);
return FormatValue(f.GetValue(o));
}
}
}

View File

@@ -1,159 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.IO;
namespace OpenRA.FileFormats
{
[Flags]
enum SoundFlags
{
Stereo = 0x1,
_16Bit = 0x2,
}
enum SoundFormat
{
WestwoodCompressed = 1,
ImaAdpcm = 99,
}
struct Chunk
{
public int CompressedSize;
public int OutputSize;
public static Chunk Read(Stream s)
{
Chunk c;
c.CompressedSize = s.ReadUInt16();
c.OutputSize = s.ReadUInt16();
if (s.ReadUInt32() != 0xdeaf)
throw new InvalidDataException("Chunk header is bogus");
return c;
}
}
public static class AudLoader
{
static int[] indexAdjust = { -1, -1, -1, -1, 2, 4, 6, 8 };
static int[] stepTable =
{
7, 8, 9, 10, 11, 12, 13, 14, 16,
17, 19, 21, 23, 25, 28, 31, 34, 37,
41, 45, 50, 55, 60, 66, 73, 80, 88,
97, 107, 118, 130, 143, 157, 173, 190, 209,
230, 253, 279, 307, 337, 371, 408, 449, 494,
544, 598, 658, 724, 796, 876, 963, 1060, 1166,
1282, 1411, 1552, 1707, 1878, 2066, 2272, 2499, 2749,
3024, 3327, 3660, 4026, 4428, 4871, 5358, 5894, 6484,
7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, 15289,
16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767
};
static short DecodeSample(byte b, ref int index, ref int current)
{
var sb = (b & 8) != 0;
b &= 7;
var delta = (stepTable[index] * b) / 4 + stepTable[index] / 8;
if (sb) delta = -delta;
current += delta;
if (current > short.MaxValue) current = short.MaxValue;
if (current < short.MinValue) current = short.MinValue;
index += indexAdjust[b];
if (index < 0) index = 0;
if (index > 88) index = 88;
return (short)current;
}
public static byte[] LoadSound(byte[] raw, ref int index)
{
var s = new MemoryStream(raw);
var dataSize = raw.Length;
var outputSize = raw.Length * 4;
var output = new byte[outputSize];
var offset = 0;
var currentSample = 0;
while (dataSize-- > 0)
{
var b = s.ReadUInt8();
var t = DecodeSample(b, ref index, ref currentSample);
output[offset++] = (byte)t;
output[offset++] = (byte)(t >> 8);
t = DecodeSample((byte)(b >> 4), ref index, ref currentSample);
output[offset++] = (byte)t;
output[offset++] = (byte)(t >> 8);
}
return output;
}
public static float SoundLength(Stream s)
{
var sampleRate = s.ReadUInt16();
/*var dataSize = */ s.ReadInt32();
var outputSize = s.ReadInt32();
var flags = (SoundFlags)s.ReadByte();
var samples = outputSize;
if (0 != (flags & SoundFlags.Stereo)) samples /= 2;
if (0 != (flags & SoundFlags._16Bit)) samples /= 2;
return samples / sampleRate;
}
public static byte[] LoadSound(Stream s)
{
/*var sampleRate =*/ s.ReadUInt16();
var dataSize = s.ReadInt32();
var outputSize = s.ReadInt32();
/*var flags = (SoundFlags)*/ s.ReadByte();
/*var format = (SoundFormat)*/ s.ReadByte();
var output = new byte[outputSize];
var offset = 0;
var index = 0;
var currentSample = 0;
while (dataSize > 0)
{
var chunk = Chunk.Read(s);
for (var n = 0; n < chunk.CompressedSize; n++)
{
var b = s.ReadUInt8();
var t = DecodeSample(b, ref index, ref currentSample);
output[offset++] = (byte)t;
output[offset++] = (byte)(t >> 8);
if (offset < outputSize)
{
/* possible that only half of the final byte is used! */
t = DecodeSample((byte)(b >> 4), ref index, ref currentSample);
output[offset++] = (byte)t;
output[offset++] = (byte)(t >> 8);
}
}
dataSize -= 8 + chunk.CompressedSize;
}
return output;
}
}
}

View File

@@ -1,281 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*
* This file is based on the blast routines (version 1.1 by Mark Adler)
* included in zlib/contrib
*/
#endregion
using System;
using System.IO;
namespace OpenRA.FileFormats
{
public static class Blast
{
public static readonly int MAXBITS = 13; // maximum code length
public static readonly int MAXWIN = 4096; // maximum window size
static byte[] litlen = new byte[] {
11, 124, 8, 7, 28, 7, 188, 13, 76, 4,
10, 8, 12, 10, 12, 10, 8, 23, 8, 9,
7, 6, 7, 8, 7, 6, 55, 8, 23, 24,
12, 11, 7, 9, 11, 12, 6, 7, 22, 5,
7, 24, 6, 11, 9, 6, 7, 22, 7, 11,
38, 7, 9, 8, 25, 11, 8, 11, 9, 12,
8, 12, 5, 38, 5, 38, 5, 11, 7, 5,
6, 21, 6, 10, 53, 8, 7, 24, 10, 27,
44, 253, 253, 253, 252, 252, 252, 13, 12, 45,
12, 45, 12, 61, 12, 45, 44, 173
};
// bit lengths of length codes 0..15
static byte[] lenlen = new byte[] { 2, 35, 36, 53, 38, 23 };
// bit lengths of distance codes 0..63
static byte[] distlen = new byte[] { 2, 20, 53, 230, 247, 151, 248 };
// base for length codes
static short[] lengthbase = new short[] {
3, 2, 4, 5, 6, 7, 8, 9, 10, 12,
16, 24, 40, 72, 136, 264
};
// extra bits for length codes
static byte[] extra = new byte[] {
0, 0, 0, 0, 0, 0, 0, 0, 1, 2,
3, 4, 5, 6, 7, 8
};
static Huffman litcode = new Huffman(litlen, litlen.Length, 256);
static Huffman lencode = new Huffman(lenlen, lenlen.Length, 16);
static Huffman distcode = new Huffman(distlen, distlen.Length, 64);
// Decode PKWare Compression Library stream.
public static byte[] Decompress(byte[] src)
{
var br = new BitReader(src);
// Are literals coded?
var coded = br.ReadBits(8);
if (coded < 0 || coded > 1)
throw new NotImplementedException("Invalid datastream");
var encodedLiterals = coded == 1;
// log2(dictionary size) - 6
var dict = br.ReadBits(8);
if (dict < 4 || dict > 6)
throw new InvalidDataException("Invalid dictionary size");
// output state
ushort next = 0; // index of next write location in out[]
var first = true; // true to check distances (for first 4K)
var outBuffer = new byte[MAXWIN]; // output buffer and sliding window
var ms = new MemoryStream();
// decode literals and length/distance pairs
do
{
// length/distance pair
if (br.ReadBits(1) == 1)
{
// Length
var symbol = Decode(lencode, br);
var len = lengthbase[symbol] + br.ReadBits(extra[symbol]);
// Magic number for "done"
if (len == 519)
{
for (var i = 0; i < next; i++)
ms.WriteByte(outBuffer[i]);
break;
}
// Distance
symbol = len == 2 ? 2 : dict;
var dist = Decode(distcode, br) << symbol;
dist += br.ReadBits(symbol);
dist++;
if (first && dist > next)
throw new InvalidDataException("Attempt to jump before data");
// copy length bytes from distance bytes back
do
{
var dest = next;
var source = dest - dist;
var copy = MAXWIN;
if (next < dist)
{
source += copy;
copy = dist;
}
copy -= next;
if (copy > len)
copy = len;
len -= copy;
next += (ushort)copy;
// copy with old-fashioned memcpy semantics
// in case of overlapping ranges. this is NOT
// the same as Array.Copy()
while (copy-- > 0)
outBuffer[dest++] = outBuffer[source++];
// Flush window to outstream
if (next == MAXWIN)
{
for (var i = 0; i < next; i++)
ms.WriteByte(outBuffer[i]);
next = 0;
first = false;
}
} while (len != 0);
}
else
{
// literal value
var symbol = encodedLiterals ? Decode(litcode, br) : br.ReadBits(8);
outBuffer[next++] = (byte)symbol;
if (next == MAXWIN)
{
for (var i = 0; i < next; i++)
ms.WriteByte(outBuffer[i]);
next = 0;
first = false;
}
}
} while (true);
return ms.ToArray();
}
// Decode a code using huffman table h.
static int Decode(Huffman h, BitReader br)
{
var code = 0; // len bits being decoded
var first = 0; // first code of length len
var index = 0; // index of first code of length len in symbol table
short next = 1;
while (true)
{
code |= br.ReadBits(1) ^ 1; // invert code
int count = h.Count[next++];
if (code < first + count)
return h.Symbol[index + (code - first)];
index += count;
first += count;
first <<= 1;
code <<= 1;
}
}
}
class BitReader
{
readonly byte[] src;
int offset = 0;
int bitBuffer = 0;
int bitCount = 0;
public BitReader(byte[] src)
{
this.src = src;
}
public int ReadBits(int count)
{
var ret = 0;
var filled = 0;
while (filled < count)
{
if (bitCount == 0)
{
bitBuffer = src[offset++];
bitCount = 8;
}
ret |= (bitBuffer & 1) << filled;
bitBuffer >>= 1;
bitCount--;
filled++;
}
return ret;
}
}
/*
* Given a list of repeated code lengths rep[0..n-1], where each byte is a
* count (high four bits + 1) and a code length (low four bits), generate the
* list of code lengths. This compaction reduces the size of the object code.
* Then given the list of code lengths length[0..n-1] representing a canonical
* Huffman code for n symbols, construct the tables required to decode those
* codes. Those tables are the number of codes of each length, and the symbols
* sorted by length, retaining their original order within each length.
*/
class Huffman
{
public short[] Count; // number of symbols of each length
public short[] Symbol; // canonically ordered symbols
public Huffman(byte[] rep, int n, short symbolCount)
{
var length = new short[256]; // code lengths
var s = 0; // current symbol
// convert compact repeat counts into symbol bit length list
foreach (var code in rep)
{
var num = (code >> 4) + 1; // Number of codes (top four bits plus 1)
var len = (byte)(code & 15); // Code length (low four bits)
do
length[s++] = len;
while (--num > 0);
}
n = s;
// count number of codes of each length
Count = new short[Blast.MAXBITS + 1];
for (var i = 0; i < n; i++)
Count[length[i]]++;
// no codes!
if (Count[0] == n)
return;
// check for an over-subscribed or incomplete set of lengths
var left = 1; // one possible code of zero length
for (var len = 1; len <= Blast.MAXBITS; len++)
{
left <<= 1; // one more bit, double codes left
left -= Count[len]; // deduct count from possible codes
if (left < 0)
throw new InvalidDataException("over subscribed code set");
}
// generate offsets into symbol table for each length for sorting
var offs = new short[Blast.MAXBITS + 1];
for (var len = 1; len < Blast.MAXBITS; len++)
offs[len + 1] = (short)(offs[len] + Count[len]);
// put symbols in table sorted by length, by symbol order within each length
Symbol = new short[symbolCount];
for (short i = 0; i < n; i++)
if (length[i] != 0)
Symbol[offs[length[i]]++] = i;
}
}
}

View File

@@ -1,33 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
namespace OpenRA.FileFormats
{
public static class Format2
{
public static void DecodeInto(byte[] src, byte[] dest, int destIndex)
{
var r = new FastByteReader(src);
while (!r.Done())
{
var cmd = r.ReadByte();
if (cmd == 0)
{
var count = r.ReadByte();
while (count-- > 0)
dest[destIndex++] = 0;
}
else
dest[destIndex++] = cmd;
}
}
}
}

View File

@@ -1,78 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
namespace OpenRA.FileFormats
{
public static class Format40
{
public static int DecodeInto(byte[] src, byte[] dest, int srcOffset)
{
var ctx = new FastByteReader(src, srcOffset);
var destIndex = 0;
while (true)
{
var i = ctx.ReadByte();
if ((i & 0x80) == 0)
{
var count = i & 0x7F;
if (count == 0)
{
// case 6
count = ctx.ReadByte();
var value = ctx.ReadByte();
for (var end = destIndex + count; destIndex < end; destIndex++)
dest[destIndex] ^= value;
}
else
{
// case 5
for (var end = destIndex + count; destIndex < end; destIndex++)
dest[destIndex] ^= ctx.ReadByte();
}
}
else
{
var count = i & 0x7F;
if (count == 0)
{
count = ctx.ReadWord();
if (count == 0)
return destIndex;
if ((count & 0x8000) == 0)
{
// case 2
destIndex += count & 0x7FFF;
}
else if ((count & 0x4000) == 0)
{
// case 3
for (var end = destIndex + (count & 0x3FFF); destIndex < end; destIndex++)
dest[destIndex] ^= ctx.ReadByte();
}
else
{
// case 4
var value = ctx.ReadByte();
for (var end = destIndex + (count & 0x3FFF); destIndex < end; destIndex++)
dest[destIndex] ^= value;
}
}
else
{
// case 1
destIndex += count;
}
}
}
}
}
}

View File

@@ -1,206 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.IO;
namespace OpenRA.FileFormats
{
class FastByteReader
{
readonly byte[] src;
int offset;
public FastByteReader(byte[] src, int offset = 0)
{
this.src = src;
this.offset = offset;
}
public bool Done() { return offset >= src.Length; }
public byte ReadByte() { return src[offset++]; }
public int ReadWord()
{
var x = ReadByte();
return x | (ReadByte() << 8);
}
public void CopyTo(byte[] dest, int offset, int count)
{
Array.Copy(src, this.offset, dest, offset, count);
this.offset += count;
}
public int Remaining() { return src.Length - offset; }
}
public static class Format80
{
static void ReplicatePrevious(byte[] dest, int destIndex, int srcIndex, int count)
{
if (srcIndex > destIndex)
throw new NotImplementedException("srcIndex > destIndex {0} {1}".F(srcIndex, destIndex));
if (destIndex - srcIndex == 1)
{
for (var i = 0; i < count; i++)
dest[destIndex + i] = dest[destIndex - 1];
}
else
{
for (var i = 0; i < count; i++)
dest[destIndex + i] = dest[srcIndex + i];
}
}
public static int DecodeInto(byte[] src, byte[] dest, int srcOffset = 0, bool reverse = false)
{
var ctx = new FastByteReader(src, srcOffset);
var destIndex = 0;
while (true)
{
var i = ctx.ReadByte();
if ((i & 0x80) == 0)
{
// case 2
var secondByte = ctx.ReadByte();
var count = ((i & 0x70) >> 4) + 3;
var rpos = ((i & 0xf) << 8) + secondByte;
if (destIndex + count > dest.Length)
return destIndex;
ReplicatePrevious(dest, destIndex, destIndex - rpos, count);
destIndex += count;
}
else if ((i & 0x40) == 0)
{
// case 1
var count = i & 0x3F;
if (count == 0)
return destIndex;
ctx.CopyTo(dest, destIndex, count);
destIndex += count;
}
else
{
var count3 = i & 0x3F;
if (count3 == 0x3E)
{
// case 4
var count = ctx.ReadWord();
var color = ctx.ReadByte();
for (var end = destIndex + count; destIndex < end; destIndex++)
dest[destIndex] = color;
}
else if (count3 == 0x3F)
{
// case 5
var count = ctx.ReadWord();
var srcIndex = reverse ? destIndex - ctx.ReadWord() : ctx.ReadWord();
if (srcIndex >= destIndex)
throw new NotImplementedException("srcIndex >= destIndex {0} {1}".F(srcIndex, destIndex));
for (var end = destIndex + count; destIndex < end; destIndex++)
dest[destIndex] = dest[srcIndex++];
}
else
{
// case 3
var count = count3 + 3;
var srcIndex = reverse ? destIndex - ctx.ReadWord() : ctx.ReadWord();
if (srcIndex >= destIndex)
throw new NotImplementedException("srcIndex >= destIndex {0} {1}".F(srcIndex, destIndex));
for (var end = destIndex + count; destIndex < end; destIndex++)
dest[destIndex] = dest[srcIndex++];
}
}
}
}
static int CountSame(byte[] src, int offset, int maxCount)
{
maxCount = Math.Min(src.Length - offset, maxCount);
if (maxCount <= 0)
return 0;
var first = src[offset++];
var count = 1;
while (count < maxCount && src[offset++] == first)
count++;
return count;
}
static void WriteCopyBlocks(byte[] src, int offset, int count, MemoryStream output)
{
while (count > 0)
{
var writeNow = Math.Min(count, 0x3F);
output.WriteByte((byte)(0x80 | writeNow));
output.Write(src, offset, writeNow);
count -= writeNow;
offset += writeNow;
}
}
// Quick and dirty Format80 encoder version 2
// Uses raw copy and RLE compression
public static byte[] Encode(byte[] src)
{
using (var ms = new MemoryStream())
{
var offset = 0;
var left = src.Length;
var blockStart = 0;
while (offset < left)
{
var repeatCount = CountSame(src, offset, 0xFFFF);
if (repeatCount >= 4)
{
// Write what we haven't written up to now
WriteCopyBlocks(src, blockStart, offset - blockStart, ms);
// Command 4: Repeat byte n times
ms.WriteByte(0xFE);
// Low byte
ms.WriteByte((byte)(repeatCount & 0xFF));
// High byte
ms.WriteByte((byte)(repeatCount >> 8));
// Value to repeat
ms.WriteByte(src[offset]);
offset += repeatCount;
blockStart = offset;
}
else
offset++;
}
// Write what we haven't written up to now
WriteCopyBlocks(src, blockStart, offset - blockStart, ms);
// Write terminator
ms.WriteByte(0x80);
return ms.ToArray();
}
}
}
}

View File

@@ -1,55 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System.IO;
namespace OpenRA.FileFormats
{
public class HvaReader
{
public readonly uint FrameCount;
public readonly uint LimbCount;
public readonly float[] Transforms;
public HvaReader(Stream s)
{
// Index swaps for transposing a matrix
var ids = new byte[] { 0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14 };
s.Seek(16, SeekOrigin.Begin);
FrameCount = s.ReadUInt32();
LimbCount = s.ReadUInt32();
// Skip limb names
s.Seek(16 * LimbCount, SeekOrigin.Current);
Transforms = new float[16 * FrameCount * LimbCount];
for (var j = 0; j < FrameCount; j++)
for (var i = 0; i < LimbCount; i++)
{
// Convert to column-major matrices and add the final matrix row
var c = 16 * (LimbCount * j + i);
Transforms[c + 3] = 0;
Transforms[c + 7] = 0;
Transforms[c + 11] = 0;
Transforms[c + 15] = 1;
for (var k = 0; k < 12; k++)
Transforms[c + ids[k]] = s.ReadFloat();
}
}
public static HvaReader Load(string filename)
{
using (var s = File.OpenRead(filename))
return new HvaReader(s);
}
}
}

View File

@@ -1,44 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System.Collections.Generic;
using System.IO;
using OpenRA.FileSystem;
namespace OpenRA.FileFormats
{
public class IdxReader
{
public readonly int SoundCount;
public List<IdxEntry> Entries;
public IdxReader(Stream s)
{
s.Seek(0, SeekOrigin.Begin);
var id = s.ReadASCII(4);
if (id != "GABA")
throw new InvalidDataException("Unable to load Idx file, did not find magic id, found {0} instead".F(id));
var two = s.ReadInt32();
if (two != 2)
throw new InvalidDataException("Unable to load Idx file, did not find magic number 2, found {0} instead".F(two));
SoundCount = s.ReadInt32();
Entries = new List<IdxEntry>();
for (var i = 0; i < SoundCount; i++)
Entries.Add(new IdxEntry(s));
}
}
}

View File

@@ -1,99 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.IO;
namespace OpenRA.FileFormats
{
struct ImaAdpcmChunk
{
public int CompressedSize;
public int OutputSize;
public static ImaAdpcmChunk Read(Stream s)
{
ImaAdpcmChunk c;
c.CompressedSize = s.ReadUInt16();
c.OutputSize = s.ReadUInt16();
if (s.ReadUInt32() != 0xdeaf)
throw new InvalidDataException("Chunk header is bogus");
return c;
}
}
public static class ImaAdpcmLoader
{
static readonly int[] IndexAdjust = { -1, -1, -1, -1, 2, 4, 6, 8 };
static readonly int[] StepTable =
{
7, 8, 9, 10, 11, 12, 13, 14, 16,
17, 19, 21, 23, 25, 28, 31, 34, 37,
41, 45, 50, 55, 60, 66, 73, 80, 88,
97, 107, 118, 130, 143, 157, 173, 190, 209,
230, 253, 279, 307, 337, 371, 408, 449, 494,
544, 598, 658, 724, 796, 876, 963, 1060, 1166,
1282, 1411, 1552, 1707, 1878, 2066, 2272, 2499, 2749,
3024, 3327, 3660, 4026, 4428, 4871, 5358, 5894, 6484,
7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, 15289,
16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767
};
static short DecodeImaAdpcmSample(byte b, ref int index, ref int current)
{
var sb = (b & 8) != 0;
b &= 7;
var delta = (StepTable[index] * b) / 4 + StepTable[index] / 8;
if (sb) delta = -delta;
current += delta;
if (current > short.MaxValue) current = short.MaxValue;
if (current < short.MinValue) current = short.MinValue;
index += IndexAdjust[b];
if (index < 0) index = 0;
if (index > 88) index = 88;
return (short)current;
}
public static byte[] LoadImaAdpcmSound(byte[] raw, ref int index)
{
var currentSample = 0;
return LoadImaAdpcmSound(raw, ref index, ref currentSample);
}
public static byte[] LoadImaAdpcmSound(byte[] raw, ref int index, ref int currentSample)
{
var s = new MemoryStream(raw);
var dataSize = raw.Length;
var outputSize = raw.Length * 4;
var output = new byte[outputSize];
var offset = 0;
while (dataSize-- > 0)
{
var b = s.ReadUInt8();
var t = DecodeImaAdpcmSample(b, ref index, ref currentSample);
output[offset++] = (byte)t;
output[offset++] = (byte)(t >> 8);
t = DecodeImaAdpcmSample((byte)(b >> 4), ref index, ref currentSample);
output[offset++] = (byte)t;
output[offset++] = (byte)(t >> 8);
}
return output;
}
}
}

View File

@@ -0,0 +1,379 @@
#region Copyright & License Information
/*
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using ICSharpCode.SharpZipLib.Checksum;
using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
using OpenRA.Graphics;
using OpenRA.Primitives;
namespace OpenRA.FileFormats
{
public class Png
{
static readonly byte[] Signature = { 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a };
public int Width { get; }
public int Height { get; }
public Color[] Palette { get; }
public byte[] Data { get; }
public SpriteFrameType Type { get; }
public Dictionary<string, string> EmbeddedData = new Dictionary<string, string>();
public int PixelStride => Type == SpriteFrameType.Indexed8 ? 1 : Type == SpriteFrameType.Rgb24 ? 3 : 4;
public Png(Stream s)
{
if (!Verify(s))
throw new InvalidDataException("PNG Signature is bogus");
s.Position += 8;
var headerParsed = false;
var data = new List<byte>();
Type = SpriteFrameType.Rgba32;
while (true)
{
var length = IPAddress.NetworkToHostOrder(s.ReadInt32());
var type = Encoding.UTF8.GetString(s.ReadBytes(4));
var content = s.ReadBytes(length);
/*var crc = */s.ReadInt32();
if (!headerParsed && type != "IHDR")
throw new InvalidDataException("Invalid PNG file - header does not appear first.");
using (var ms = new MemoryStream(content))
{
switch (type)
{
case "IHDR":
{
if (headerParsed)
throw new InvalidDataException("Invalid PNG file - duplicate header.");
Width = IPAddress.NetworkToHostOrder(ms.ReadInt32());
Height = IPAddress.NetworkToHostOrder(ms.ReadInt32());
var bitDepth = ms.ReadUInt8();
var colorType = (PngColorType)ms.ReadByte();
if (IsPaletted(bitDepth, colorType))
Type = SpriteFrameType.Indexed8;
else if (colorType == PngColorType.Color)
Type = SpriteFrameType.Rgb24;
Data = new byte[Width * Height * PixelStride];
var compression = ms.ReadByte();
/*var filter = */ms.ReadByte();
var interlace = ms.ReadByte();
if (compression != 0)
throw new InvalidDataException("Compression method not supported");
if (interlace != 0)
throw new InvalidDataException("Interlacing not supported");
headerParsed = true;
break;
}
case "PLTE":
{
Palette = new Color[256];
for (var i = 0; i < length / 3; i++)
{
var r = ms.ReadByte(); var g = ms.ReadByte(); var b = ms.ReadByte();
Palette[i] = Color.FromArgb(r, g, b);
}
break;
}
case "tRNS":
{
if (Palette == null)
throw new InvalidDataException("Non-Palette indexed PNG are not supported.");
for (var i = 0; i < length; i++)
Palette[i] = Color.FromArgb(ms.ReadByte(), Palette[i]);
break;
}
case "IDAT":
{
data.AddRange(content);
break;
}
case "tEXt":
{
var key = ms.ReadASCIIZ();
EmbeddedData.Add(key, ms.ReadASCII(length - key.Length - 1));
break;
}
case "IEND":
{
using (var ns = new MemoryStream(data.ToArray()))
{
using (var ds = new InflaterInputStream(ns))
{
var pxStride = PixelStride;
var rowStride = Width * pxStride;
var prevLine = new byte[rowStride];
for (var y = 0; y < Height; y++)
{
var filter = (PngFilter)ds.ReadByte();
var line = ds.ReadBytes(rowStride);
for (var i = 0; i < rowStride; i++)
line[i] = i < pxStride
? UnapplyFilter(filter, line[i], 0, prevLine[i], 0)
: UnapplyFilter(filter, line[i], line[i - pxStride], prevLine[i], prevLine[i - pxStride]);
Array.Copy(line, 0, Data, y * rowStride, rowStride);
prevLine = line;
}
}
}
if (Type == SpriteFrameType.Indexed8 && Palette == null)
throw new InvalidDataException("Non-Palette indexed PNG are not supported.");
return;
}
}
}
}
}
public Png(byte[] data, SpriteFrameType type, int width, int height, Color[] palette = null,
Dictionary<string, string> embeddedData = null)
{
var expectLength = width * height;
if (palette == null)
expectLength *= 4;
if (data.Length != expectLength)
throw new InvalidDataException("Input data does not match expected length");
Type = type;
Width = width;
Height = height;
switch (type)
{
case SpriteFrameType.Indexed8:
case SpriteFrameType.Rgba32:
case SpriteFrameType.Rgb24:
{
// Data is already in a compatible format
Data = data;
if (type == SpriteFrameType.Indexed8)
Palette = palette;
break;
}
case SpriteFrameType.Bgra32:
case SpriteFrameType.Bgr24:
{
// Convert to big endian
Data = new byte[data.Length];
var stride = PixelStride;
for (var i = 0; i < width * height; i++)
{
Data[stride * i] = data[stride * i + 2];
Data[stride * i + 1] = data[stride * i + 1];
Data[stride * i + 2] = data[stride * i + 0];
if (type == SpriteFrameType.Bgra32)
Data[stride * i + 3] = data[stride * i + 3];
}
break;
}
default:
throw new InvalidDataException($"Unhandled SpriteFrameType {type}");
}
if (embeddedData != null)
EmbeddedData = embeddedData;
}
public static bool Verify(Stream s)
{
var pos = s.Position;
var isPng = Signature.Aggregate(true, (current, t) => current && s.ReadUInt8() == t);
s.Position = pos;
return isPng;
}
static byte UnapplyFilter(PngFilter f, byte x, byte a, byte b, byte c)
{
switch (f)
{
case PngFilter.None: return x;
case PngFilter.Sub: return (byte)(x + a);
case PngFilter.Up: return (byte)(x + b);
case PngFilter.Average: return (byte)(x + (a + b) / 2);
case PngFilter.Paeth: return (byte)(x + Paeth(a, b, c));
default:
throw new InvalidOperationException("Unsupported Filter");
}
}
static byte Paeth(byte a, byte b, byte c)
{
var p = a + b - c;
var pa = Math.Abs(p - a);
var pb = Math.Abs(p - b);
var pc = Math.Abs(p - c);
return (pa <= pb && pa <= pc) ? a :
(pb <= pc) ? b : c;
}
[Flags]
enum PngColorType { Indexed = 1, Color = 2, Alpha = 4 }
enum PngFilter { None, Sub, Up, Average, Paeth }
static bool IsPaletted(byte bitDepth, PngColorType colorType)
{
if (bitDepth == 8 && colorType == (PngColorType.Indexed | PngColorType.Color))
return true;
if (bitDepth == 8 && colorType == (PngColorType.Color | PngColorType.Alpha))
return false;
if (bitDepth == 8 && colorType == PngColorType.Color)
return false;
throw new InvalidDataException("Unknown pixel format");
}
void WritePngChunk(Stream output, string type, Stream input)
{
input.Position = 0;
var typeBytes = Encoding.ASCII.GetBytes(type);
output.Write(IPAddress.HostToNetworkOrder((int)input.Length));
output.WriteArray(typeBytes);
var data = input.ReadAllBytes();
output.WriteArray(data);
var crc32 = new Crc32();
crc32.Update(typeBytes);
crc32.Update(data);
output.Write(IPAddress.NetworkToHostOrder((int)crc32.Value));
}
public byte[] Save()
{
using (var output = new MemoryStream())
{
output.WriteArray(Signature);
using (var header = new MemoryStream())
{
header.Write(IPAddress.HostToNetworkOrder(Width));
header.Write(IPAddress.HostToNetworkOrder(Height));
header.WriteByte(8); // Bit depth
var colorType = Type == SpriteFrameType.Indexed8 ? PngColorType.Indexed | PngColorType.Color :
Type == SpriteFrameType.Rgb24 ? PngColorType.Color : PngColorType.Color | PngColorType.Alpha;
header.WriteByte((byte)colorType);
header.WriteByte(0); // Compression
header.WriteByte(0); // Filter
header.WriteByte(0); // Interlacing
WritePngChunk(output, "IHDR", header);
}
var alphaPalette = false;
if (Palette != null)
{
using (var palette = new MemoryStream())
{
foreach (var c in Palette)
{
palette.WriteByte(c.R);
palette.WriteByte(c.G);
palette.WriteByte(c.B);
alphaPalette |= c.A > 0;
}
WritePngChunk(output, "PLTE", palette);
}
}
if (alphaPalette)
{
using (var alpha = new MemoryStream())
{
foreach (var c in Palette)
alpha.WriteByte(c.A);
WritePngChunk(output, "tRNS", alpha);
}
}
using (var data = new MemoryStream())
{
using (var compressed = new DeflaterOutputStream(data))
{
var rowStride = Width * PixelStride;
for (var y = 0; y < Height; y++)
{
// Write uncompressed scanlines for simplicity
compressed.WriteByte(0);
compressed.Write(Data, y * rowStride, rowStride);
}
compressed.Flush();
compressed.Finish();
WritePngChunk(output, "IDAT", data);
}
}
foreach (var kv in EmbeddedData)
{
using (var text = new MemoryStream())
{
text.WriteArray(Encoding.ASCII.GetBytes(kv.Key + (char)0 + kv.Value));
WritePngChunk(output, "tEXt", text);
}
}
WritePngChunk(output, "IEND", new MemoryStream());
return output.ToArray();
}
}
public void Save(string path)
{
File.WriteAllBytes(path, Save());
}
}
}

View File

@@ -1,193 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.IO.Compression;
using System.Net;
using System.Runtime.InteropServices;
using System.Text;
namespace OpenRA.FileFormats
{
public static class PngLoader
{
public static Bitmap Load(string filename)
{
using (var s = File.OpenRead(filename))
return Load(s);
}
public static Bitmap Load(Stream s)
{
using (var br = new BinaryReader(s))
{
var signature = new byte[] { 137, 80, 78, 71, 13, 10, 26, 10 };
foreach (var b in signature)
if (br.ReadByte() != b)
throw new InvalidDataException("PNG Signature is bogus");
Bitmap bitmap = null;
Color[] palette = null;
var data = new List<byte>();
for (;;)
{
var length = IPAddress.NetworkToHostOrder(br.ReadInt32());
var type = Encoding.UTF8.GetString(br.ReadBytes(4));
var content = br.ReadBytes(length);
/*var crc = */br.ReadInt32();
using (var ms = new MemoryStream(content))
using (var cr = new BinaryReader(ms))
switch (type)
{
case "IHDR":
{
var width = IPAddress.NetworkToHostOrder(cr.ReadInt32());
var height = IPAddress.NetworkToHostOrder(cr.ReadInt32());
var bitDepth = cr.ReadByte();
var colorType = (PngColorType)cr.ReadByte();
var compression = cr.ReadByte();
/*var filter = */cr.ReadByte();
var interlace = cr.ReadByte();
if (compression != 0) throw new InvalidDataException("Compression method not supported");
if (interlace != 0) throw new InvalidDataException("Interlacing not supported");
bitmap = new Bitmap(width, height, MakePixelFormat(bitDepth, colorType));
}
break;
case "PLTE":
{
palette = new Color[256];
for (var i = 0; i < 256; i++)
{
var r = cr.ReadByte(); var g = cr.ReadByte(); var b = cr.ReadByte();
palette[i] = Color.FromArgb(r, g, b);
}
}
break;
case "tRNS":
{
if (palette == null)
throw new InvalidDataException("Non-Palette indexed PNG are not supported.");
for (var i = 0; i < length; i++)
palette[i] = Color.FromArgb(cr.ReadByte(), palette[i]);
}
break;
case "IDAT":
{
data.AddRange(content);
}
break;
case "IEND":
{
if (bitmap == null)
throw new InvalidDataException("Image header not found.");
var bits = bitmap.LockBits(bitmap.Bounds(),
ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed);
using (var ns = new MemoryStream(data.ToArray()))
{
// 'zlib' flags bytes; confuses the DeflateStream.
/*var flags = (byte)*/ns.ReadByte();
/*var moreFlags = (byte)*/ns.ReadByte();
using (var ds = new DeflateStream(ns, CompressionMode.Decompress))
using (var dr = new BinaryReader(ds))
{
var prevLine = new byte[bitmap.Width]; // all zero
for (var y = 0; y < bitmap.Height; y++)
{
var filter = (PngFilter)dr.ReadByte();
var line = dr.ReadBytes(bitmap.Width);
for (var i = 0; i < bitmap.Width; i++)
line[i] = i > 0
? UnapplyFilter(filter, line[i], line[i - 1], prevLine[i], prevLine[i - 1])
: UnapplyFilter(filter, line[i], 0, prevLine[i], 0);
Marshal.Copy(line, 0, new IntPtr(bits.Scan0.ToInt64() + y * bits.Stride), line.Length);
prevLine = line;
}
}
}
bitmap.UnlockBits(bits);
if (palette == null)
throw new InvalidDataException("Non-Palette indexed PNG are not supported.");
using (var temp = new Bitmap(1, 1, PixelFormat.Format8bppIndexed))
{
var cp = temp.Palette;
for (var i = 0; i < 256; i++)
cp.Entries[i] = palette[i]; // finalize the palette.
bitmap.Palette = cp;
return bitmap;
}
}
}
}
}
}
static byte UnapplyFilter(PngFilter f, byte x, byte a, byte b, byte c)
{
switch (f)
{
case PngFilter.None: return x;
case PngFilter.Sub: return (byte)(x + a);
case PngFilter.Up: return (byte)(x + b);
case PngFilter.Average: return (byte)(x + (a + b) / 2);
case PngFilter.Paeth: return (byte)(x + Paeth(a, b, c));
default:
throw new InvalidOperationException("Unsupported Filter");
}
}
static byte Paeth(byte a, byte b, byte c)
{
var p = a + b - c;
var pa = Math.Abs(p - a);
var pb = Math.Abs(p - b);
var pc = Math.Abs(p - c);
return (pa <= pb && pa <= pc) ? a :
(pb <= pc) ? b : c;
}
[Flags]
enum PngColorType { Indexed = 1, Color = 2, Alpha = 4 }
enum PngFilter { None, Sub, Up, Average, Paeth }
static PixelFormat MakePixelFormat(byte bitDepth, PngColorType colorType)
{
if (bitDepth == 8 && colorType == (PngColorType.Indexed | PngColorType.Color))
return PixelFormat.Format8bppIndexed;
throw new InvalidDataException("Unknown pixelformat");
}
}
}

View File

@@ -1,10 +1,11 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
@@ -27,7 +28,7 @@ namespace OpenRA.FileFormats
public ReplayMetadata(GameInformation info)
{
if (info == null)
throw new ArgumentNullException("info");
throw new ArgumentNullException(nameof(info));
GameInfo = info;
}
@@ -43,7 +44,7 @@ namespace OpenRA.FileFormats
// Read version
var version = fs.ReadInt32();
if (version != MetaVersion)
throw new NotSupportedException("Metadata version {0} is not supported".F(version));
throw new NotSupportedException($"Metadata version {version} is not supported");
// Read game info (max 100K limit as a safeguard against corrupted files)
var data = fs.ReadString(Encoding.UTF8, 1024 * 100);
@@ -78,41 +79,27 @@ namespace OpenRA.FileFormats
public static ReplayMetadata Read(string path)
{
using (var fs = new FileStream(path, FileMode.Open))
return Read(fs, path);
}
static ReplayMetadata Read(FileStream fs, string path)
{
if (!fs.CanSeek)
return null;
if (fs.Length < 20)
return null;
try
{
fs.Seek(-(4 + 4), SeekOrigin.End);
var dataLength = fs.ReadInt32();
if (fs.ReadInt32() == MetaEndMarker)
using (var fs = new FileStream(path, FileMode.Open))
{
// go back by (end marker + length storage + data + version + start marker) bytes
fs.Seek(-(4 + 4 + dataLength + 4 + 4), SeekOrigin.Current);
try
if (!fs.CanSeek)
return null;
if (fs.Length < 20)
return null;
fs.Seek(-(4 + 4), SeekOrigin.End);
var dataLength = fs.ReadInt32();
if (fs.ReadInt32() == MetaEndMarker)
{
// Go back by (end marker + length storage + data + version + start marker) bytes
fs.Seek(-(4 + 4 + dataLength + 4 + 4), SeekOrigin.Current);
return new ReplayMetadata(fs, path);
}
catch (InvalidOperationException ex)
{
Log.Write("debug", ex.ToString());
}
catch (NotSupportedException ex)
{
Log.Write("debug", ex.ToString());
}
}
}
catch (IOException ex)
catch (Exception ex)
{
Log.Write("debug", ex.ToString());
}

View File

@@ -1,532 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.IO;
namespace OpenRA.FileFormats
{
public class VqaReader
{
public readonly ushort Frames;
public readonly byte Framerate;
public readonly ushort Width;
public readonly ushort Height;
Stream stream;
int currentFrame;
ushort numColors;
ushort blockWidth;
ushort blockHeight;
byte chunkBufferParts;
int2 blocks;
uint[] offsets;
uint[] palette;
uint videoFlags; // if 0x10 is set the video is a 16 bit hq video (ts and later)
int sampleRate;
int sampleBits;
int audioChannels;
// Stores a list of subpixels, referenced by the VPTZ chunk
byte[] cbf;
byte[] cbp;
byte[] cbfBuffer;
// Buffer for loading file subchunks, the maximum chunk size of a file is not defined
// and the header definition for the size of the biggest chunks (color data) isn't accurate.
// But 256k is large enough for all TS videos(< 200k).
byte[] fileBuffer = new byte[256000];
int maxCbfzSize = 256000;
int vtprSize = 0;
int currentChunkBuffer = 0;
int chunkBufferOffset = 0;
// Top half contains block info, bottom half contains references to cbf array
byte[] origData;
// Final frame output
uint[,] frameData;
byte[] audioData; // audio for this frame: 22050Hz 16bit mono pcm, uncompressed.
bool hasAudio;
public byte[] AudioData { get { return audioData; } }
public int CurrentFrame { get { return currentFrame; } }
public int SampleRate { get { return sampleRate; } }
public int SampleBits { get { return sampleBits; } }
public int AudioChannels { get { return audioChannels; } }
public bool HasAudio { get { return hasAudio; } }
public VqaReader(Stream stream)
{
this.stream = stream;
// Decode FORM chunk
if (stream.ReadASCII(4) != "FORM")
throw new InvalidDataException("Invalid vqa (invalid FORM section)");
/*var length = */stream.ReadUInt32();
if (stream.ReadASCII(8) != "WVQAVQHD")
throw new InvalidDataException("Invalid vqa (not WVQAVQHD)");
/*var length2 = */stream.ReadUInt32();
/*var version = */stream.ReadUInt16();
videoFlags = stream.ReadUInt16();
Frames = stream.ReadUInt16();
Width = stream.ReadUInt16();
Height = stream.ReadUInt16();
blockWidth = stream.ReadUInt8();
blockHeight = stream.ReadUInt8();
Framerate = stream.ReadUInt8();
chunkBufferParts = stream.ReadUInt8();
blocks = new int2(Width / blockWidth, Height / blockHeight);
numColors = stream.ReadUInt16();
/*var maxBlocks = */stream.ReadUInt16();
/*var unknown1 = */stream.ReadUInt16();
/*var unknown2 = */stream.ReadUInt32();
// Audio
sampleRate = stream.ReadUInt16();
audioChannels = stream.ReadByte();
sampleBits = stream.ReadByte();
/*var unknown3 =*/stream.ReadUInt32();
/*var unknown4 =*/stream.ReadUInt16();
/*maxCbfzSize =*/stream.ReadUInt32(); // Unreliable
/*var unknown5 =*/stream.ReadUInt32();
var frameSize = Exts.NextPowerOf2(Math.Max(Width, Height));
if (IsHqVqa)
{
cbfBuffer = new byte[maxCbfzSize];
cbf = new byte[maxCbfzSize * 3];
origData = new byte[maxCbfzSize];
}
else
{
cbfBuffer = new byte[Width * Height];
cbf = new byte[Width * Height];
cbp = new byte[Width * Height];
origData = new byte[2 * blocks.X * blocks.Y];
}
palette = new uint[numColors];
frameData = new uint[frameSize, frameSize];
var type = stream.ReadASCII(4);
while (type != "FINF")
{
// Sub type is a file tag
if (type[3] == 'F')
{
var jmp = int2.Swap(stream.ReadUInt32());
stream.Seek(jmp, SeekOrigin.Current);
type = stream.ReadASCII(4);
}
else
throw new NotSupportedException("Vqa uses unknown Subtype: {0}".F(type));
}
/*var length = */stream.ReadUInt16();
/*var unknown4 = */stream.ReadUInt16();
// Frame offsets
offsets = new uint[Frames];
for (var i = 0; i < Frames; i++)
{
offsets[i] = stream.ReadUInt32();
if (offsets[i] > 0x40000000)
offsets[i] -= 0x40000000;
offsets[i] <<= 1;
}
CollectAudioData();
Reset();
}
public void Reset()
{
currentFrame = chunkBufferOffset = currentChunkBuffer = 0;
LoadFrame();
}
void CollectAudioData()
{
var audio1 = new MemoryStream(); // left channel / mono
var audio2 = new MemoryStream(); // right channel
var adpcmIndex = 0;
var compressed = false;
for (var i = 0; i < Frames; i++)
{
stream.Seek(offsets[i], SeekOrigin.Begin);
var end = (i < Frames - 1) ? offsets[i + 1] : stream.Length;
while (stream.Position < end)
{
var type = stream.ReadASCII(4);
if (type == "SN2J")
{
var jmp = int2.Swap(stream.ReadUInt32());
stream.Seek(jmp, SeekOrigin.Current);
type = stream.ReadASCII(4);
}
var length = int2.Swap(stream.ReadUInt32());
switch (type)
{
case "SND0":
case "SND2":
if (audioChannels == 0)
throw new NotSupportedException();
else if (audioChannels == 1)
{
var rawAudio = stream.ReadBytes((int)length);
audio1.Write(rawAudio);
}
else
{
var rawAudio = stream.ReadBytes((int)length / 2);
audio1.Write(rawAudio);
rawAudio = stream.ReadBytes((int)length / 2);
audio2.Write(rawAudio);
if (length % 2 != 0)
stream.ReadBytes(2);
}
compressed = type == "SND2";
break;
default:
if (length + stream.Position > stream.Length)
throw new NotSupportedException("Vqa uses unknown Subtype: {0}".F(type));
stream.ReadBytes((int)length);
break;
}
// Chunks are aligned on even bytes; advance by a byte if the next one is null
if (stream.Peek() == 0) stream.ReadByte();
}
}
if (audioChannels == 1)
audioData = compressed ? AudLoader.LoadSound(audio1.ToArray(), ref adpcmIndex) : audio1.ToArray();
else
{
byte[] leftData, rightData;
if (!compressed)
{
leftData = audio1.ToArray();
rightData = audio2.ToArray();
}
else
{
adpcmIndex = 0;
leftData = AudLoader.LoadSound(audio1.ToArray(), ref adpcmIndex);
adpcmIndex = 0;
rightData = AudLoader.LoadSound(audio2.ToArray(), ref adpcmIndex);
}
audioData = new byte[rightData.Length + leftData.Length];
var rightIndex = 0;
var leftIndex = 0;
for (var i = 0; i < audioData.Length;)
{
audioData[i++] = leftData[leftIndex++];
audioData[i++] = leftData[leftIndex++];
audioData[i++] = rightData[rightIndex++];
audioData[i++] = rightData[rightIndex++];
}
}
hasAudio = audioData.Length > 0;
}
public void AdvanceFrame()
{
currentFrame++;
LoadFrame();
}
void LoadFrame()
{
if (currentFrame >= Frames)
return;
// Seek to the start of the frame
stream.Seek(offsets[currentFrame], SeekOrigin.Begin);
var end = (currentFrame < Frames - 1) ? offsets[currentFrame + 1] : stream.Length;
while (stream.Position < end)
{
var type = stream.ReadASCII(4);
var length = 0U;
if (type == "SN2J")
{
var jmp = int2.Swap(stream.ReadUInt32());
stream.Seek(jmp, SeekOrigin.Current);
type = stream.ReadASCII(4);
if (type == "SND2")
{
length = int2.Swap(stream.ReadUInt32());
stream.Seek(length, SeekOrigin.Current);
type = stream.ReadASCII(4);
}
else
throw new NotSupportedException();
}
length = int2.Swap(stream.ReadUInt32());
switch (type)
{
case "VQFR":
DecodeVQFR(stream);
break;
case "\0VQF":
stream.ReadByte();
DecodeVQFR(stream);
break;
case "VQFL":
DecodeVQFR(stream, "VQFL");
break;
default:
// Don't parse sound here.
stream.ReadBytes((int)length);
break;
}
// Chunks are aligned on even bytes; advance by a byte if the next one is null
if (stream.Peek() == 0) stream.ReadByte();
}
}
// VQA Frame
public void DecodeVQFR(Stream s, string parentType = "VQFR")
{
while (true)
{
// Chunks are aligned on even bytes; may be padded with a single null
if (s.Peek() == 0) s.ReadByte();
var type = s.ReadASCII(4);
var subchunkLength = (int)int2.Swap(s.ReadUInt32());
switch (type)
{
// Full frame-modifier
case "CBFZ":
var decodeMode = s.Peek() == 0;
s.ReadBytes(fileBuffer, 0, subchunkLength);
Array.Clear(cbf, 0, cbf.Length);
Array.Clear(cbfBuffer, 0, cbfBuffer.Length);
var decodeCount = 0;
decodeCount = Format80.DecodeInto(fileBuffer, cbfBuffer, decodeMode ? 1 : 0, decodeMode);
if ((videoFlags & 0x10) == 16)
{
var p = 0;
for (var i = 0; i < decodeCount; i += 2)
{
var packed = cbfBuffer[i + 1] << 8 | cbfBuffer[i];
/* 15 bit 0
0rrrrrgg gggbbbbb
HI byte LO byte*/
cbf[p++] = (byte)((packed & 0x7C00) >> 7);
cbf[p++] = (byte)((packed & 0x3E0) >> 2);
cbf[p++] = (byte)((packed & 0x1f) << 3);
}
}
else
{
cbf = cbfBuffer;
}
if (parentType == "VQFL")
return;
break;
case "CBF0":
cbf = s.ReadBytes(subchunkLength);
break;
// frame-modifier chunk
case "CBP0":
case "CBPZ":
// Partial buffer is full; dump and recreate
if (currentChunkBuffer == chunkBufferParts)
{
if (type == "CBP0")
cbf = (byte[])cbp.Clone();
else
Format80.DecodeInto(cbp, cbf);
chunkBufferOffset = currentChunkBuffer = 0;
}
var bytes = s.ReadBytes(subchunkLength);
bytes.CopyTo(cbp, chunkBufferOffset);
chunkBufferOffset += subchunkLength;
currentChunkBuffer++;
break;
// Palette
case "CPL0":
for (var i = 0; i < numColors; i++)
{
var r = (byte)(s.ReadUInt8() << 2);
var g = (byte)(s.ReadUInt8() << 2);
var b = (byte)(s.ReadUInt8() << 2);
palette[i] = (uint)((255 << 24) | (r << 16) | (g << 8) | b);
}
break;
// Frame data
case "VPTZ":
Format80.DecodeInto(s.ReadBytes(subchunkLength), origData);
// This is the last subchunk
return;
case "VPRZ":
Array.Clear(origData, 0, origData.Length);
s.ReadBytes(fileBuffer, 0, subchunkLength);
if (fileBuffer[0] != 0)
vtprSize = Format80.DecodeInto(fileBuffer, origData);
else
Format80.DecodeInto(fileBuffer, origData, 1, true);
return;
case "VPTR":
Array.Clear(origData, 0, origData.Length);
s.ReadBytes(origData, 0, subchunkLength);
vtprSize = subchunkLength;
return;
default:
throw new InvalidDataException("Unknown sub-chunk {0}".F(type));
}
}
}
int cachedFrame = -1;
void DecodeFrameData()
{
cachedFrame = currentFrame;
if (IsHqVqa)
{
/* The VP?? chunks of the video file contains an array of instructions for
* how the blocks of the finished frame will be filled with color data blocks
* contained in the CBF? chunks.
*/
var p = 0;
for (var y = 0; y < blocks.Y;)
{
for (var x = 0; x < blocks.X;)
{
if (y >= blocks.Y)
break;
// The first 3 bits of the short determine the type of instruction with the rest being one or two parameters.
var val = (int)origData[p++];
val |= origData[p++] << 8;
var para_A = val & 0x1fff;
var para_B1 = val & 0xFF;
var para_B2 = (((val / 256) & 0x1f) + 1) * 2;
switch (val >> 13)
{
case 0:
x += para_A;
break;
case 1:
WriteBlock(para_B1, para_B2, ref x, ref y);
break;
case 2:
WriteBlock(para_B1, 1, ref x, ref y);
for (var i = 0; i < para_B2; i++)
WriteBlock(origData[p++], 1, ref x, ref y);
break;
case 3:
WriteBlock(para_A, 1, ref x, ref y);
break;
case 5:
WriteBlock(para_A, origData[p++], ref x, ref y);
break;
default:
throw new NotSupportedException();
}
}
y++;
}
if (p != vtprSize)
throw new IndexOutOfRangeException();
}
else
{
for (var y = 0; y < blocks.Y; y++)
{
for (var x = 0; x < blocks.X; x++)
{
var px = origData[x + y * blocks.X];
var mod = origData[x + (y + blocks.Y) * blocks.X];
for (var j = 0; j < blockHeight; j++)
{
for (var i = 0; i < blockWidth; i++)
{
var cbfi = (mod * 256 + px) * 8 + j * blockWidth + i;
var color = (mod == 0x0f) ? px : cbf[cbfi];
frameData[y * blockHeight + j, x * blockWidth + i] = palette[color];
}
}
}
}
}
}
public uint[,] FrameData
{
get
{
if (cachedFrame != currentFrame)
DecodeFrameData();
return frameData;
}
}
bool IsHqVqa { get { return (videoFlags & 0x10) == 16; } }
void WriteBlock(int blockNumber, int count, ref int x, ref int y)
{
for (var i = 0; i < count; i++)
{
var frameX = x * blockWidth;
var frameY = y * blockHeight;
var offset = blockNumber * blockHeight * blockWidth * 3;
for (var by = 0; by < blockHeight; by++)
for (var bx = 0; bx < blockWidth; bx++)
{
var p = (bx + by * blockWidth) * 3;
frameData[frameY + by, frameX + bx] = (uint)(0xFF << 24 | cbf[offset + p] << 16 | cbf[offset + p + 1] << 8 | cbf[offset + p + 2]);
}
x++;
if (x >= blocks.X)
{
x = 0;
y++;
if (y >= blocks.Y && i != count - 1)
throw new IndexOutOfRangeException();
}
}
}
}
}

View File

@@ -1,180 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.IO;
namespace OpenRA.FileFormats
{
public class WavLoader
{
public readonly int FileSize;
public readonly string Format;
public readonly int FmtChunkSize;
public readonly int AudioFormat;
public readonly int Channels;
public readonly int SampleRate;
public readonly int ByteRate;
public readonly int BlockAlign;
public readonly int BitsPerSample;
public readonly int UncompressedSize;
public readonly int DataSize;
public readonly byte[] RawOutput;
public enum WaveType { Pcm = 0x1, ImaAdpcm = 0x11 }
public static WaveType Type { get; private set; }
public WavLoader(Stream s)
{
while (s.Position < s.Length)
{
if ((s.Position & 1) == 1)
s.ReadByte(); // Alignment
var type = s.ReadASCII(4);
switch (type)
{
case "RIFF":
FileSize = s.ReadInt32();
Format = s.ReadASCII(4);
if (Format != "WAVE")
throw new NotSupportedException("Not a canonical WAVE file.");
break;
case "fmt ":
FmtChunkSize = s.ReadInt32();
AudioFormat = s.ReadInt16();
Type = (WaveType)AudioFormat;
if (Type != WaveType.Pcm && Type != WaveType.ImaAdpcm)
throw new NotSupportedException("Compression type is not supported.");
Channels = s.ReadInt16();
SampleRate = s.ReadInt32();
ByteRate = s.ReadInt32();
BlockAlign = s.ReadInt16();
BitsPerSample = s.ReadInt16();
s.ReadBytes(FmtChunkSize - 16);
break;
case "fact":
{
var chunkSize = s.ReadInt32();
UncompressedSize = s.ReadInt32();
s.ReadBytes(chunkSize - 4);
}
break;
case "data":
DataSize = s.ReadInt32();
RawOutput = s.ReadBytes(DataSize);
break;
default:
// Ignore unknown chunks
{
var chunkSize = s.ReadInt32();
s.ReadBytes(chunkSize);
}
break;
}
}
if (Type == WaveType.ImaAdpcm)
{
RawOutput = DecodeImaAdpcmData();
BitsPerSample = 16;
}
}
public static float WaveLength(Stream s)
{
s.Position = 12;
var fmt = s.ReadASCII(4);
if (fmt != "fmt ")
return 0;
s.Position = 22;
var channels = s.ReadInt16();
var sampleRate = s.ReadInt32();
s.Position = 34;
var bitsPerSample = s.ReadInt16();
var length = s.Length * 8;
return length / (channels * sampleRate * bitsPerSample);
}
public byte[] DecodeImaAdpcmData()
{
var s = new MemoryStream(RawOutput);
var numBlocks = DataSize / BlockAlign;
var blockDataSize = BlockAlign - (Channels * 4);
var outputSize = UncompressedSize * Channels * 2;
var outOffset = 0;
var output = new byte[outputSize];
var predictor = new int[Channels];
var index = new int[Channels];
// Decode each block of IMA ADPCM data in RawOutput
for (var block = 0; block < numBlocks; block++)
{
// Each block starts with a initial state per-channel
for (var c = 0; c < Channels; c++)
{
predictor[c] = s.ReadInt16();
index[c] = s.ReadUInt8();
/* unknown/reserved */ s.ReadUInt8();
// Output first sample from input
output[outOffset++] = (byte)predictor[c];
output[outOffset++] = (byte)(predictor[c] >> 8);
if (outOffset >= outputSize)
return output;
}
// Decode and output remaining data in this block
var blockOffset = 0;
while (blockOffset < blockDataSize)
{
for (var c = 0; c < Channels; c++)
{
// Decode 4 bytes (to 16 bytes of output) per channel
var chunk = s.ReadBytes(4);
var decoded = ImaAdpcmLoader.LoadImaAdpcmSound(chunk, ref index[c], ref predictor[c]);
// Interleave output, one sample per channel
var outOffsetChannel = outOffset + (2 * c);
for (var i = 0; i < decoded.Length; i += 2)
{
var outOffsetSample = outOffsetChannel + i;
if (outOffsetSample >= outputSize)
return output;
output[outOffsetSample] = decoded[i];
output[outOffsetSample + 1] = decoded[i + 1];
outOffsetChannel += 2 * (Channels - 1);
}
blockOffset += 4;
}
outOffset += 16 * Channels;
}
}
return output;
}
}
}

View File

@@ -1,44 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System.Collections.Generic;
using System.IO;
namespace OpenRA.FileFormats
{
public class XccGlobalDatabase
{
public readonly string[] Entries;
public XccGlobalDatabase(Stream s)
{
var entries = new List<string>();
var reader = new BinaryReader(s);
while (reader.PeekChar() > -1)
{
var count = reader.ReadInt32();
for (var i = 0; i < count; i++)
{
var chars = new List<char>();
char c;
// Read filename
while ((c = reader.ReadChar()) != 0)
chars.Add(c);
entries.Add(new string(chars.ToArray()));
// Skip comment
while ((c = reader.ReadChar()) != 0) { }
}
}
Entries = entries.ToArray();
}
}
}

View File

@@ -1,67 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace OpenRA.FileFormats
{
public class XccLocalDatabase
{
public readonly string[] Entries;
public XccLocalDatabase(Stream s)
{
// Skip unnecessary header data
s.Seek(48, SeekOrigin.Begin);
var reader = new BinaryReader(s);
var count = reader.ReadInt32();
Entries = new string[count];
for (var i = 0; i < count; i++)
{
var chars = new List<char>();
char c;
while ((c = reader.ReadChar()) != 0)
chars.Add(c);
Entries[i] = new string(chars.ToArray());
}
}
public XccLocalDatabase(IEnumerable<string> filenames)
{
Entries = filenames.ToArray();
}
public byte[] Data()
{
var data = new MemoryStream();
using (var writer = new BinaryWriter(data))
{
writer.Write(Encoding.ASCII.GetBytes("XCC by Olaf van der Spek"));
writer.Write(new byte[] { 0x1A, 0x04, 0x17, 0x27, 0x10, 0x19, 0x80, 0x00 });
writer.Write((int)(Entries.Aggregate(Entries.Length, (a, b) => a + b.Length) + 52)); // Size
writer.Write((int)0); // Type
writer.Write((int)0); // Version
writer.Write((int)0); // Game/Format (0 == TD)
writer.Write((int)Entries.Length); // Entries
foreach (var e in Entries)
{
writer.Write(Encoding.ASCII.GetBytes(e));
writer.Write((byte)0);
}
}
return data.ToArray();
}
}
}

View File

@@ -1,187 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using OpenRA.FileFormats;
using OpenRA.Primitives;
namespace OpenRA.FileSystem
{
public sealed class BagFile : IFolder
{
static readonly uint[] Nothing = { };
readonly string bagFilename;
readonly Stream s;
readonly int bagFilePriority;
readonly Dictionary<uint, IdxEntry> index;
public BagFile(string filename, int priority)
{
bagFilename = filename;
bagFilePriority = priority;
// A bag file is always accompanied with an .idx counterpart
// For example: audio.bag requires the audio.idx file
var indexFilename = Path.ChangeExtension(filename, ".idx");
// Build the index and dispose the stream, it is no longer needed after this
List<IdxEntry> entries;
using (var indexStream = GlobalFileSystem.Open(indexFilename))
entries = new IdxReader(indexStream).Entries;
index = entries.ToDictionaryWithConflictLog(x => x.Hash,
"{0} (bag format)".F(filename),
null, x => "(offs={0}, len={1})".F(x.Offset, x.Length));
s = GlobalFileSystem.Open(filename);
}
public int Priority { get { return 1000 + bagFilePriority; } }
public string Name { get { return bagFilename; } }
public Stream GetContent(uint hash)
{
IdxEntry entry;
if (!index.TryGetValue(hash, out entry))
return null;
s.Seek(entry.Offset, SeekOrigin.Begin);
var waveHeaderMemoryStream = new MemoryStream();
var channels = (entry.Flags & 1) > 0 ? 2 : 1;
if ((entry.Flags & 2) > 0)
{
// PCM
waveHeaderMemoryStream.Write(Encoding.ASCII.GetBytes("RIFF"));
waveHeaderMemoryStream.Write(BitConverter.GetBytes(entry.Length + 36));
waveHeaderMemoryStream.Write(Encoding.ASCII.GetBytes("WAVE"));
waveHeaderMemoryStream.Write(Encoding.ASCII.GetBytes("fmt "));
waveHeaderMemoryStream.Write(BitConverter.GetBytes(16));
waveHeaderMemoryStream.Write(BitConverter.GetBytes((short)WavLoader.WaveType.Pcm));
waveHeaderMemoryStream.Write(BitConverter.GetBytes((short)channels));
waveHeaderMemoryStream.Write(BitConverter.GetBytes(entry.SampleRate));
waveHeaderMemoryStream.Write(BitConverter.GetBytes(2 * channels * entry.SampleRate));
waveHeaderMemoryStream.Write(BitConverter.GetBytes((short)(2 * channels)));
waveHeaderMemoryStream.Write(BitConverter.GetBytes((short)16));
waveHeaderMemoryStream.Write(Encoding.ASCII.GetBytes("data"));
waveHeaderMemoryStream.Write(BitConverter.GetBytes(entry.Length));
}
if ((entry.Flags & 8) > 0)
{
// IMA ADPCM
var samplesPerChunk = (2 * (entry.ChunkSize - 4)) + 1;
var bytesPerSec = (int)Math.Floor(((double)(2 * entry.ChunkSize) / samplesPerChunk) * ((double)entry.SampleRate / 2));
var chunkSize = entry.ChunkSize > entry.Length ? entry.Length : entry.ChunkSize;
waveHeaderMemoryStream.Write(Encoding.ASCII.GetBytes("RIFF"));
waveHeaderMemoryStream.Write(BitConverter.GetBytes(entry.Length + 52));
waveHeaderMemoryStream.Write(Encoding.ASCII.GetBytes("WAVE"));
waveHeaderMemoryStream.Write(Encoding.ASCII.GetBytes("fmt "));
waveHeaderMemoryStream.Write(BitConverter.GetBytes(20));
waveHeaderMemoryStream.Write(BitConverter.GetBytes((short)WavLoader.WaveType.ImaAdpcm));
waveHeaderMemoryStream.Write(BitConverter.GetBytes((short)channels));
waveHeaderMemoryStream.Write(BitConverter.GetBytes(entry.SampleRate));
waveHeaderMemoryStream.Write(BitConverter.GetBytes(bytesPerSec));
waveHeaderMemoryStream.Write(BitConverter.GetBytes((short)chunkSize));
waveHeaderMemoryStream.Write(BitConverter.GetBytes((short)4));
waveHeaderMemoryStream.Write(BitConverter.GetBytes((short)2));
waveHeaderMemoryStream.Write(BitConverter.GetBytes((short)samplesPerChunk));
waveHeaderMemoryStream.Write(Encoding.ASCII.GetBytes("fact"));
waveHeaderMemoryStream.Write(BitConverter.GetBytes(4));
waveHeaderMemoryStream.Write(BitConverter.GetBytes(4 * entry.Length));
waveHeaderMemoryStream.Write(Encoding.ASCII.GetBytes("data"));
waveHeaderMemoryStream.Write(BitConverter.GetBytes(entry.Length));
}
waveHeaderMemoryStream.Seek(0, SeekOrigin.Begin);
// Construct a merged stream
var mergedStream = new MergedStream(waveHeaderMemoryStream, s);
mergedStream.SetLength(waveHeaderMemoryStream.Length + entry.Length);
return mergedStream;
}
uint? FindMatchingHash(string filename)
{
var hash = IdxEntry.HashFilename(filename, PackageHashType.CRC32);
if (index.ContainsKey(hash))
return hash;
// Maybe we were given a raw hash?
uint raw;
if (!uint.TryParse(filename, NumberStyles.AllowHexSpecifier, CultureInfo.InvariantCulture, out raw))
return null;
if ("{0:X}".F(raw) == filename && index.ContainsKey(raw))
return raw;
return null;
}
public Stream GetContent(string filename)
{
var hash = FindMatchingHash(filename);
return hash.HasValue ? GetContent(hash.Value) : null;
}
public bool Exists(string filename)
{
return FindMatchingHash(filename).HasValue;
}
public IEnumerable<uint> ClassicHashes()
{
return Nothing;
}
public IEnumerable<uint> CrcHashes()
{
return index.Keys;
}
public IEnumerable<string> AllFileNames()
{
var lookup = new Dictionary<uint, string>();
if (GlobalFileSystem.Exists("global mix database.dat"))
{
var db = new XccGlobalDatabase(GlobalFileSystem.Open("global mix database.dat"));
foreach (var e in db.Entries)
{
var hash = IdxEntry.HashFilename(e, PackageHashType.CRC32);
if (!lookup.ContainsKey(hash))
lookup.Add(hash, e);
}
}
return index.Keys.Select(k => lookup.ContainsKey(k) ? lookup[k] : "{0:X}".F(k));
}
public void Write(Dictionary<string, byte[]> contents)
{
GlobalFileSystem.Unmount(this);
throw new NotImplementedException("Updating bag files unsupported");
}
public void Dispose()
{
s.Dispose();
}
}
}

View File

@@ -1,124 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace OpenRA.FileSystem
{
public sealed class BigFile : IFolder
{
public string Name { get; private set; }
public int Priority { get; private set; }
readonly Dictionary<string, Entry> entries = new Dictionary<string, Entry>();
readonly Stream s;
public BigFile(string filename, int priority)
{
Name = filename;
Priority = priority;
s = GlobalFileSystem.Open(filename);
try
{
if (s.ReadASCII(4) != "BIGF")
throw new InvalidDataException("Header is not BIGF");
// Total archive size.
s.ReadUInt32();
var entryCount = s.ReadUInt32();
if (BitConverter.IsLittleEndian)
entryCount = int2.Swap(entryCount);
// First entry offset? This is apparently bogus for EA's .big files
// and we don't have to try seeking there since the entries typically start next in EA's .big files.
s.ReadUInt32();
for (var i = 0; i < entryCount; i++)
{
var entry = new Entry(s);
entries.Add(entry.Path, entry);
}
}
catch
{
Dispose();
throw;
}
}
class Entry
{
readonly Stream s;
readonly uint offset;
readonly uint size;
public readonly string Path;
public Entry(Stream s)
{
this.s = s;
offset = s.ReadUInt32();
size = s.ReadUInt32();
if (BitConverter.IsLittleEndian)
{
offset = int2.Swap(offset);
size = int2.Swap(size);
}
Path = s.ReadASCIIZ();
}
public Stream GetData()
{
s.Position = offset;
return new MemoryStream(s.ReadBytes((int)size));
}
}
public Stream GetContent(string filename)
{
return entries[filename].GetData();
}
public bool Exists(string filename)
{
return entries.ContainsKey(filename);
}
public IEnumerable<uint> ClassicHashes()
{
return entries.Keys.Select(filename => PackageEntry.HashFilename(filename, PackageHashType.Classic));
}
public IEnumerable<uint> CrcHashes()
{
return Enumerable.Empty<uint>();
}
public IEnumerable<string> AllFileNames()
{
return entries.Keys;
}
public void Write(Dictionary<string, byte[]> contents)
{
throw new NotImplementedException();
}
public void Dispose()
{
s.Dispose();
}
}
}

View File

@@ -1,107 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.IO;
namespace OpenRA.FileSystem
{
public sealed class D2kSoundResources : IFolder
{
readonly Stream s;
readonly string filename;
readonly List<string> filenames;
readonly int priority;
readonly Dictionary<uint, PackageEntry> index = new Dictionary<uint, PackageEntry>();
public D2kSoundResources(string filename, int priority)
{
this.filename = filename;
this.priority = priority;
s = GlobalFileSystem.Open(filename);
try
{
filenames = new List<string>();
var headerLength = s.ReadUInt32();
while (s.Position < headerLength + 4)
{
var name = s.ReadASCIIZ();
var offset = s.ReadUInt32();
var length = s.ReadUInt32();
var hash = PackageEntry.HashFilename(name, PackageHashType.Classic);
if (!index.ContainsKey(hash))
index.Add(hash, new PackageEntry(hash, offset, length));
filenames.Add(name);
}
}
catch
{
Dispose();
throw;
}
}
public Stream GetContent(uint hash)
{
PackageEntry e;
if (!index.TryGetValue(hash, out e))
return null;
s.Seek(e.Offset, SeekOrigin.Begin);
return new MemoryStream(s.ReadBytes((int)e.Length));
}
public Stream GetContent(string filename)
{
return GetContent(PackageEntry.HashFilename(filename, PackageHashType.Classic));
}
public bool Exists(string filename)
{
return index.ContainsKey(PackageEntry.HashFilename(filename, PackageHashType.Classic));
}
public IEnumerable<string> AllFileNames()
{
return filenames;
}
public string Name { get { return filename; } }
public int Priority { get { return 1000 + priority; } }
public IEnumerable<uint> ClassicHashes()
{
return index.Keys;
}
public IEnumerable<uint> CrcHashes()
{
yield break;
}
public void Write(Dictionary<string, byte[]> contents)
{
throw new NotImplementedException("Cannot save Dune 2000 Sound Resources.");
}
public void Dispose()
{
s.Dispose();
}
}
}

View File

@@ -0,0 +1,330 @@
#region Copyright & License Information
/*
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using OpenRA.Primitives;
namespace OpenRA.FileSystem
{
public interface IReadOnlyFileSystem
{
Stream Open(string filename);
bool TryGetPackageContaining(string path, out IReadOnlyPackage package, out string filename);
bool TryOpen(string filename, out Stream s);
bool Exists(string filename);
bool IsExternalModFile(string filename);
}
public class FileSystem : IReadOnlyFileSystem
{
public IEnumerable<IReadOnlyPackage> MountedPackages => mountedPackages.Keys;
readonly Dictionary<IReadOnlyPackage, int> mountedPackages = new Dictionary<IReadOnlyPackage, int>();
readonly Dictionary<string, IReadOnlyPackage> explicitMounts = new Dictionary<string, IReadOnlyPackage>();
readonly string modID;
// Mod packages that should not be disposed
readonly List<IReadOnlyPackage> modPackages = new List<IReadOnlyPackage>();
readonly IReadOnlyDictionary<string, Manifest> installedMods;
readonly IPackageLoader[] packageLoaders;
Cache<string, List<IReadOnlyPackage>> fileIndex = new Cache<string, List<IReadOnlyPackage>>(_ => new List<IReadOnlyPackage>());
public FileSystem(string modID, IReadOnlyDictionary<string, Manifest> installedMods, IPackageLoader[] packageLoaders)
{
this.modID = modID;
this.installedMods = installedMods;
this.packageLoaders = packageLoaders
.Append(new ZipFileLoader())
.ToArray();
}
public bool TryParsePackage(Stream stream, string filename, out IReadOnlyPackage package)
{
package = null;
foreach (var packageLoader in packageLoaders)
if (packageLoader.TryParsePackage(stream, filename, this, out package))
return true;
return false;
}
public IReadOnlyPackage OpenPackage(string filename)
{
// Raw directories are the easiest and one of the most common cases, so try these first
var resolvedPath = Platform.ResolvePath(filename);
if (!resolvedPath.Contains('|') && Directory.Exists(resolvedPath))
return new Folder(resolvedPath);
// Children of another package require special handling
if (TryGetPackageContaining(filename, out var parent, out var subPath))
return parent.OpenPackage(subPath, this);
// Try and open it normally
var stream = Open(filename);
if (TryParsePackage(stream, filename, out var package))
return package;
// No package loaders took ownership of the stream, so clean it up
stream.Dispose();
return null;
}
public void Mount(string name, string explicitName = null)
{
var optional = name.StartsWith("~", StringComparison.Ordinal);
if (optional)
name = name.Substring(1);
try
{
IReadOnlyPackage package;
if (name.StartsWith("$", StringComparison.Ordinal))
{
name = name.Substring(1);
if (!installedMods.TryGetValue(name, out var mod))
throw new InvalidOperationException($"Could not load mod '{name}'. Available mods: {installedMods.Keys.JoinWith(", ")}");
package = mod.Package;
modPackages.Add(package);
}
else
{
package = OpenPackage(name);
if (package == null)
throw new InvalidOperationException($"Could not open package '{name}', file not found or its format is not supported.");
}
Mount(package, explicitName);
}
catch
{
if (!optional)
throw;
}
}
public void Mount(IReadOnlyPackage package, string explicitName = null)
{
if (mountedPackages.TryGetValue(package, out var mountCount))
{
// Package is already mounted
// Increment the mount count and bump up the file loading priority
mountedPackages[package] = mountCount + 1;
foreach (var filename in package.Contents)
{
fileIndex[filename].Remove(package);
fileIndex[filename].Add(package);
}
}
else
{
// Mounting the package for the first time
mountedPackages.Add(package, 1);
if (explicitName != null)
explicitMounts.Add(explicitName, package);
foreach (var filename in package.Contents)
fileIndex[filename].Add(package);
}
}
public bool Unmount(IReadOnlyPackage package)
{
if (!mountedPackages.TryGetValue(package, out var mountCount))
return false;
if (--mountCount <= 0)
{
foreach (var packagesForFile in fileIndex.Values)
packagesForFile.RemoveAll(p => p == package);
mountedPackages.Remove(package);
var explicitKeys = explicitMounts.Where(kv => kv.Value == package)
.Select(kv => kv.Key)
.ToList();
foreach (var key in explicitKeys)
explicitMounts.Remove(key);
// Mod packages aren't owned by us, so we shouldn't dispose them
if (modPackages.Contains(package))
modPackages.Remove(package);
else
package.Dispose();
}
else
mountedPackages[package] = mountCount;
return true;
}
public void UnmountAll()
{
foreach (var package in mountedPackages.Keys)
if (!modPackages.Contains(package))
package.Dispose();
mountedPackages.Clear();
explicitMounts.Clear();
modPackages.Clear();
fileIndex = new Cache<string, List<IReadOnlyPackage>>(_ => new List<IReadOnlyPackage>());
}
public void LoadFromManifest(Manifest manifest)
{
UnmountAll();
foreach (var kv in manifest.Packages)
Mount(kv.Key, kv.Value);
}
Stream GetFromCache(string filename)
{
var package = fileIndex[filename]
.LastOrDefault(x => x.Contains(filename));
return package?.GetStream(filename);
}
public Stream Open(string filename)
{
if (!TryOpen(filename, out var s))
throw new FileNotFoundException($"File not found: {filename}", filename);
return s;
}
public bool TryGetPackageContaining(string path, out IReadOnlyPackage package, out string filename)
{
var explicitSplit = path.IndexOf('|');
if (explicitSplit > 0 && explicitMounts.TryGetValue(path.Substring(0, explicitSplit), out package))
{
filename = path.Substring(explicitSplit + 1);
return true;
}
package = fileIndex[path].LastOrDefault(x => x.Contains(path));
filename = path;
return package != null;
}
public bool TryOpen(string filename, out Stream s)
{
var explicitSplit = filename.IndexOf('|');
if (explicitSplit > 0)
{
if (explicitMounts.TryGetValue(filename.Substring(0, explicitSplit), out var explicitPackage))
{
s = explicitPackage.GetStream(filename.Substring(explicitSplit + 1));
if (s != null)
return true;
}
}
s = GetFromCache(filename);
if (s != null)
return true;
// The file should be in an explicit package (but we couldn't find it)
// Thus don't try to find it using the filename (which contains the invalid '|' char)
// This can be removed once the TODO below is resolved
if (explicitSplit > 0)
return false;
// Ask each package individually
// TODO: This fallback can be removed once the filesystem cleanups are complete
var package = mountedPackages.Keys.LastOrDefault(x => x.Contains(filename));
if (package != null)
{
s = package.GetStream(filename);
return s != null;
}
s = null;
return false;
}
public bool Exists(string filename)
{
var explicitSplit = filename.IndexOf('|');
if (explicitSplit > 0)
if (explicitMounts.TryGetValue(filename.Substring(0, explicitSplit), out var explicitPackage))
if (explicitPackage.Contains(filename.Substring(explicitSplit + 1)))
return true;
return fileIndex.ContainsKey(filename);
}
/// <summary>
/// Returns true if the given filename references an external mod via an explicit mount
/// </summary>
public bool IsExternalModFile(string filename)
{
var explicitSplit = filename.IndexOf('|');
if (explicitSplit < 0)
return false;
if (!explicitMounts.TryGetValue(filename.Substring(0, explicitSplit), out var explicitPackage))
return false;
if (installedMods[modID].Package == explicitPackage)
return false;
return modPackages.Contains(explicitPackage);
}
/// <summary>
/// Resolves a filesystem for an assembly, accounting for explicit and mod mounts.
/// Assemblies must exist in the native OS file system (not inside an OpenRA-defined package).
/// </summary>
public static string ResolveAssemblyPath(string path, Manifest manifest, InstalledMods installedMods)
{
var explicitSplit = path.IndexOf('|');
if (explicitSplit > 0 && !path.StartsWith("^"))
{
var parent = path.Substring(0, explicitSplit);
var filename = path.Substring(explicitSplit + 1);
var parentPath = manifest.Packages.FirstOrDefault(kv => kv.Value == parent).Key;
if (parentPath == null)
return null;
if (parentPath.StartsWith("$", StringComparison.Ordinal))
{
if (!installedMods.TryGetValue(parentPath.Substring(1), out var mod))
return null;
if (!(mod.Package is Folder))
return null;
path = Path.Combine(mod.Package.Name, filename);
}
else
path = Path.Combine(parentPath, filename);
}
var resolvedPath = Platform.ResolvePath(path);
return File.Exists(resolvedPath) ? resolvedPath : null;
}
public string GetPrefix(IReadOnlyPackage package)
{
return explicitMounts.ContainsValue(package) ? explicitMounts.First(f => f.Value == package).Key : null;
}
}
}

View File

@@ -1,82 +1,106 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace OpenRA.FileSystem
{
public sealed class Folder : IFolder
public sealed class Folder : IReadWritePackage
{
readonly string path;
readonly int priority;
// Create a new folder package
public Folder(string path, int priority, Dictionary<string, byte[]> contents)
public Folder(string path)
{
this.path = path;
this.priority = priority;
if (Directory.Exists(path))
Directory.Delete(path, true);
Write(contents);
}
public Folder(string path, int priority)
{
this.path = path;
this.priority = priority;
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
}
public Stream GetContent(string filename)
public string Name => path;
public IEnumerable<string> Contents
{
get
{
// Order may vary on different file systems and it matters for hashing.
return Directory.GetFiles(path, "*", SearchOption.TopDirectoryOnly)
.Concat(Directory.GetDirectories(path))
.Select(Path.GetFileName)
.OrderBy(f => f);
}
}
public Stream GetStream(string filename)
{
try { return File.OpenRead(Path.Combine(path, filename)); }
catch { return null; }
}
public IEnumerable<uint> ClassicHashes()
public bool Contains(string filename)
{
foreach (var filename in Directory.GetFiles(path, "*", SearchOption.TopDirectoryOnly))
yield return PackageEntry.HashFilename(Path.GetFileName(filename), PackageHashType.Classic);
var combined = Path.Combine(path, filename);
return combined.StartsWith(path, StringComparison.Ordinal) && File.Exists(combined);
}
public IEnumerable<uint> CrcHashes()
public IReadOnlyPackage OpenPackage(string filename, FileSystem context)
{
yield break;
var resolvedPath = Platform.ResolvePath(Path.Combine(Name, filename));
if (Directory.Exists(resolvedPath))
return new Folder(resolvedPath);
// Zip files loaded from Folders (and *only* from Folders) can be read-write
if (ZipFileLoader.TryParseReadWritePackage(resolvedPath, out var readWritePackage))
return readWritePackage;
// Other package types can be loaded normally
var s = GetStream(filename);
if (s == null)
return null;
if (context.TryParsePackage(s, filename, out var package))
return package;
s.Dispose();
return null;
}
public IEnumerable<string> AllFileNames()
public void Update(string filename, byte[] contents)
{
foreach (var filename in Directory.GetFiles(path, "*", SearchOption.TopDirectoryOnly))
yield return Path.GetFileName(filename);
// HACK: ZipFiles can't be loaded as read-write from a stream, so we are
// forced to bypass the parent package and load them with their full path
// in FileSystem.OpenPackage. Their internal name therefore contains the
// full parent path too. We need to be careful to not add a second path
// prefix to these hacked packages.
var filePath = filename.StartsWith(path) ? filename : Path.Combine(path, filename);
Directory.CreateDirectory(Path.GetDirectoryName(filePath));
using (var s = File.Create(filePath))
s.Write(contents, 0, contents.Length);
}
public bool Exists(string filename)
public void Delete(string filename)
{
return File.Exists(Path.Combine(path, filename));
}
public int Priority { get { return priority; } }
public string Name { get { return path; } }
public void Write(Dictionary<string, byte[]> contents)
{
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
foreach (var file in contents)
using (var dataStream = File.Create(Path.Combine(path, file.Key)))
using (var writer = new BinaryWriter(dataStream))
writer.Write(file.Value);
// HACK: ZipFiles can't be loaded as read-write from a stream, so we are
// forced to bypass the parent package and load them with their full path
// in FileSystem.OpenPackage. Their internal name therefore contains the
// full parent path too. We need to be careful to not add a second path
// prefix to these hacked packages.
var filePath = filename.StartsWith(path) ? filename : Path.Combine(path, filename);
if (Directory.Exists(filePath))
Directory.Delete(filePath, true);
else if (File.Exists(filePath))
File.Delete(filePath);
}
public void Dispose() { }

View File

@@ -1,273 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using OpenRA.Primitives;
namespace OpenRA.FileSystem
{
public interface IFolder : IDisposable
{
Stream GetContent(string filename);
bool Exists(string filename);
IEnumerable<uint> ClassicHashes();
IEnumerable<uint> CrcHashes();
IEnumerable<string> AllFileNames();
void Write(Dictionary<string, byte[]> contents);
int Priority { get; }
string Name { get; }
}
public static class GlobalFileSystem
{
public static List<IFolder> MountedFolders = new List<IFolder>();
static Cache<uint, List<IFolder>> classicHashIndex = new Cache<uint, List<IFolder>>(_ => new List<IFolder>());
static Cache<uint, List<IFolder>> crcHashIndex = new Cache<uint, List<IFolder>>(_ => new List<IFolder>());
public static List<string> FolderPaths = new List<string>();
static void MountInner(IFolder folder)
{
MountedFolders.Add(folder);
foreach (var hash in folder.ClassicHashes())
{
var l = classicHashIndex[hash];
if (!l.Contains(folder))
l.Add(folder);
}
foreach (var hash in folder.CrcHashes())
{
var l = crcHashIndex[hash];
if (!l.Contains(folder))
l.Add(folder);
}
}
static int order = 0;
public static IFolder CreatePackage(string filename, int order, Dictionary<string, byte[]> content)
{
if (filename.EndsWith(".mix", StringComparison.InvariantCultureIgnoreCase))
return new MixFile(filename, order, content);
if (filename.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase))
return new ZipFile(filename, order, content);
if (filename.EndsWith(".oramap", StringComparison.InvariantCultureIgnoreCase))
return new ZipFile(filename, order, content);
if (filename.EndsWith(".RS", StringComparison.InvariantCultureIgnoreCase))
throw new NotImplementedException("The creation of .RS archives is unimplemented");
if (filename.EndsWith(".Z", StringComparison.InvariantCultureIgnoreCase))
throw new NotImplementedException("The creation of .Z archives is unimplemented");
if (filename.EndsWith(".PAK", StringComparison.InvariantCultureIgnoreCase))
throw new NotImplementedException("The creation of .PAK archives is unimplemented");
if (filename.EndsWith(".big", StringComparison.InvariantCultureIgnoreCase))
throw new NotImplementedException("The creation of .big archives is unimplemented");
if (filename.EndsWith(".cab", StringComparison.InvariantCultureIgnoreCase))
throw new NotImplementedException("The creation of .cab archives is unimplemented");
return new Folder(filename, order, content);
}
public static IFolder OpenPackage(string filename, string annotation, int order)
{
if (filename.EndsWith(".mix", StringComparison.InvariantCultureIgnoreCase))
{
var type = string.IsNullOrEmpty(annotation)
? PackageHashType.Classic
: FieldLoader.GetValue<PackageHashType>("(value)", annotation);
return new MixFile(filename, type, order);
}
if (filename.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase))
return new ZipFile(filename, order);
if (filename.EndsWith(".oramap", StringComparison.InvariantCultureIgnoreCase))
return new ZipFile(filename, order);
if (filename.EndsWith(".RS", StringComparison.InvariantCultureIgnoreCase))
return new D2kSoundResources(filename, order);
if (filename.EndsWith(".Z", StringComparison.InvariantCultureIgnoreCase))
return new InstallShieldPackage(filename, order);
if (filename.EndsWith(".PAK", StringComparison.InvariantCultureIgnoreCase))
return new PakFile(filename, order);
if (filename.EndsWith(".big", StringComparison.InvariantCultureIgnoreCase))
return new BigFile(filename, order);
if (filename.EndsWith(".bag", StringComparison.InvariantCultureIgnoreCase))
return new BagFile(filename, order);
if (filename.EndsWith(".hdr", StringComparison.InvariantCultureIgnoreCase))
return new InstallShieldCABExtractor(filename, order);
return new Folder(filename, order);
}
public static void Mount(string name, string annotation = null)
{
var optional = name.StartsWith("~");
if (optional)
name = name.Substring(1);
name = Platform.ResolvePath(name);
FolderPaths.Add(name);
Action a = () => MountInner(OpenPackage(name, annotation, order++));
if (optional)
try { a(); }
catch { }
else
a();
}
public static void UnmountAll()
{
foreach (var folder in MountedFolders)
folder.Dispose();
MountedFolders.Clear();
FolderPaths.Clear();
classicHashIndex = new Cache<uint, List<IFolder>>(_ => new List<IFolder>());
crcHashIndex = new Cache<uint, List<IFolder>>(_ => new List<IFolder>());
}
public static bool Unmount(IFolder mount)
{
if (MountedFolders.Contains(mount))
mount.Dispose();
return MountedFolders.RemoveAll(f => f == mount) > 0;
}
public static void Mount(IFolder mount)
{
if (!MountedFolders.Contains(mount)) MountedFolders.Add(mount);
}
public static void LoadFromManifest(Manifest manifest)
{
UnmountAll();
foreach (var dir in manifest.Folders)
Mount(dir);
foreach (var pkg in manifest.Packages)
Mount(pkg.Key, pkg.Value);
}
static Stream GetFromCache(PackageHashType type, string filename)
{
var index = type == PackageHashType.CRC32 ? crcHashIndex : classicHashIndex;
var folder = index[PackageEntry.HashFilename(filename, type)]
.Where(x => x.Exists(filename))
.MinByOrDefault(x => x.Priority);
if (folder != null)
return folder.GetContent(filename);
return null;
}
public static Stream Open(string filename)
{
Stream s;
if (!TryOpen(filename, out s))
throw new FileNotFoundException("File not found: {0}".F(filename), filename);
return s;
}
public static bool TryOpen(string name, out Stream s)
{
var filename = name;
var foldername = string.Empty;
// Used for faction specific packages; rule out false positive on Windows C:\ drive notation
var explicitFolder = name.Contains(':') && !Directory.Exists(Path.GetDirectoryName(name));
if (explicitFolder)
{
var divide = name.Split(':');
foldername = divide.First();
filename = divide.Last();
}
// Check the cache for a quick lookup if the folder name is unknown
// TODO: This disables caching for explicit folder requests
if (filename.IndexOfAny(new char[] { '/', '\\' }) == -1 && !explicitFolder)
{
s = GetFromCache(PackageHashType.Classic, filename);
if (s != null)
return true;
s = GetFromCache(PackageHashType.CRC32, filename);
if (s != null)
return true;
}
// Ask each package individually
IFolder folder;
if (explicitFolder && !string.IsNullOrEmpty(foldername))
folder = MountedFolders.Where(x => x.Name == foldername).MaxByOrDefault(x => x.Priority);
else
folder = MountedFolders.Where(x => x.Exists(filename)).MaxByOrDefault(x => x.Priority);
if (folder != null)
{
s = folder.GetContent(filename);
return true;
}
s = null;
return false;
}
public static bool Exists(string name)
{
var explicitFolder = name.Contains(':') && !Directory.Exists(Path.GetDirectoryName(name));
if (explicitFolder)
{
var divide = name.Split(':');
var foldername = divide.First();
var filename = divide.Last();
return MountedFolders.Where(n => n.Name == foldername).Any(f => f.Exists(filename));
}
else
return MountedFolders.Any(f => f.Exists(name));
}
static Dictionary<string, Assembly> assemblyCache = new Dictionary<string, Assembly>();
public static Assembly ResolveAssembly(object sender, ResolveEventArgs e)
{
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
if (assembly.FullName == e.Name)
return assembly;
var frags = e.Name.Split(',');
var filename = frags[0] + ".dll";
Assembly a;
if (assemblyCache.TryGetValue(filename, out a))
return a;
if (Exists(filename))
using (var s = Open(filename))
{
var buf = s.ReadBytes((int)s.Length);
a = Assembly.Load(buf);
assemblyCache.Add(filename, a);
return a;
}
return null;
}
}
}

View File

@@ -0,0 +1,42 @@
#region Copyright & License Information
/*
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.IO;
namespace OpenRA.FileSystem
{
public interface IPackageLoader
{
/// <summary>
/// Attempt to parse a stream as this type of package.
/// If successful, the loader is expected to take ownership of `s` and dispose it once done.
/// If unsuccessful, the loader is expected to return the stream position to where it started.
/// </summary>
bool TryParsePackage(Stream s, string filename, FileSystem context, out IReadOnlyPackage package);
}
public interface IReadOnlyPackage : IDisposable
{
string Name { get; }
IEnumerable<string> Contents { get; }
Stream GetStream(string filename);
bool Contains(string filename);
IReadOnlyPackage OpenPackage(string filename, FileSystem context);
}
public interface IReadWritePackage : IReadOnlyPackage
{
void Update(string filename, byte[] contents);
void Delete(string filename);
}
}

View File

@@ -1,94 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System.Collections.Generic;
using System.IO;
namespace OpenRA.FileSystem
{
public class IdxEntry
{
public const string DefaultExtension = "wav";
public readonly uint Hash;
public readonly string Name;
public readonly string Extension;
public readonly uint Offset;
public readonly uint Length;
public readonly uint SampleRate;
public readonly uint Flags;
public readonly uint ChunkSize;
public IdxEntry(uint hash, uint offset, uint length, uint sampleRate, uint flags, uint chuckSize)
{
Hash = hash;
Offset = offset;
Length = length;
SampleRate = sampleRate;
Flags = flags;
ChunkSize = chuckSize;
}
public IdxEntry(Stream s)
{
var asciiname = s.ReadASCII(16);
var pos = asciiname.IndexOf('\0');
if (pos != 0)
asciiname = asciiname.Substring(0, pos);
Name = asciiname;
Extension = DefaultExtension;
Offset = s.ReadUInt32();
Length = s.ReadUInt32();
SampleRate = s.ReadUInt32();
Flags = s.ReadUInt32();
ChunkSize = s.ReadUInt32();
Hash = HashFilename(string.Concat(Name, ".", Extension), PackageHashType.CRC32);
}
public void Write(BinaryWriter w)
{
w.Write(Name.PadRight(16, '\0'));
w.Write(Offset);
w.Write(Length);
w.Write(SampleRate);
w.Write(Flags);
w.Write(ChunkSize);
}
public override string ToString()
{
string filename;
if (names.TryGetValue(Hash, out filename))
return "{0} - offset 0x{1:x8} - length 0x{2:x8}".F(filename, Offset, Length);
else
return "0x{0:x8} - offset 0x{1:x8} - length 0x{2:x8}".F(Hash, Offset, Length);
}
public static uint HashFilename(string name, PackageHashType type)
{
return PackageEntry.HashFilename(name, type);
}
static Dictionary<uint, string> names = new Dictionary<uint, string>();
public static void AddStandardName(string s)
{
// RA1 and TD
var hash = HashFilename(s, PackageHashType.Classic);
names.Add(hash, s);
// TS
var crcHash = HashFilename(s, PackageHashType.CRC32);
names.Add(crcHash, s);
}
}
}

View File

@@ -1,526 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using ICSharpCode.SharpZipLib.Zip.Compression;
using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
namespace OpenRA.FileSystem
{
public class InstallShieldCABExtractor : IDisposable, IFolder
{
const uint FileSplit = 0x1;
const uint FileObfuscated = 0x2;
const uint FileCompressed = 0x4;
const uint FileInvalid = 0x8;
const uint LinkPrev = 0x1;
const uint LinkNext = 0x2;
const uint MaxFileGroupCount = 71;
#region Nested Structs
struct FileGroup
{
public readonly string Name;
public readonly uint FirstFile;
public readonly uint LastFile;
public FileGroup(Stream reader, long offset)
{
var nameOffset = reader.ReadUInt32();
/* unknown */ reader.ReadBytes(18);
FirstFile = reader.ReadUInt32();
LastFile = reader.ReadUInt32();
reader.Seek(offset + (long)nameOffset, SeekOrigin.Begin);
Name = reader.ReadASCIIZ();
}
}
struct VolumeHeader
{
public readonly uint DataOffset;
public readonly uint DataOffsetHigh;
public readonly uint FirstFileIndex;
public readonly uint LastFileIndex;
public readonly uint FirstFileOffset;
public readonly uint FirstFileOffsetHigh;
public readonly uint FirstFileSizeExpanded;
public readonly uint FirstFileSizeExpandedHigh;
public readonly uint FirstFileSizeCompressed;
public readonly uint FirstFileSizeCompressedHigh;
public readonly uint LastFileOffset;
public readonly uint LastFileOffsetHigh;
public readonly uint LastFileSizeExpanded;
public readonly uint LastFileSizeExpandedHigh;
public readonly uint LastFileSizeCompressed;
public readonly uint LastFileSizeCompressedHigh;
public VolumeHeader(Stream reader)
{
DataOffset = reader.ReadUInt32();
DataOffsetHigh = reader.ReadUInt32();
FirstFileIndex = reader.ReadUInt32();
LastFileIndex = reader.ReadUInt32();
FirstFileOffset = reader.ReadUInt32();
FirstFileOffsetHigh = reader.ReadUInt32();
FirstFileSizeExpanded = reader.ReadUInt32();
FirstFileSizeExpandedHigh = reader.ReadUInt32();
FirstFileSizeCompressed = reader.ReadUInt32();
FirstFileSizeCompressedHigh = reader.ReadUInt32();
LastFileOffset = reader.ReadUInt32();
LastFileOffsetHigh = reader.ReadUInt32();
LastFileSizeExpanded = reader.ReadUInt32();
LastFileSizeExpandedHigh = reader.ReadUInt32();
LastFileSizeCompressed = reader.ReadUInt32();
LastFileSizeCompressedHigh = reader.ReadUInt32();
}
}
struct CommonHeader
{
public const long Size = 16;
public readonly uint Version;
public readonly uint VolumeInfo;
public readonly long CabDescriptorOffset;
public readonly uint CabDescriptorSize;
public CommonHeader(Stream reader)
{
Version = reader.ReadUInt32();
VolumeInfo = reader.ReadUInt32();
CabDescriptorOffset = (long)reader.ReadUInt32();
CabDescriptorSize = reader.ReadUInt32();
}
}
struct CabDescriptor
{
public readonly long FileTableOffset;
public readonly uint FileTableSize;
public readonly uint FileTableSize2;
public readonly uint DirectoryCount;
public readonly uint FileCount;
public readonly long FileTableOffset2;
public CabDescriptor(Stream reader, CommonHeader commonHeader)
{
reader.Seek(commonHeader.CabDescriptorOffset + 12, SeekOrigin.Begin);
FileTableOffset = (long)reader.ReadUInt32();
/* unknown */ reader.ReadUInt32();
FileTableSize = reader.ReadUInt32();
FileTableSize2 = reader.ReadUInt32();
DirectoryCount = reader.ReadUInt32();
/* unknown */ reader.ReadBytes(8);
FileCount = reader.ReadUInt32();
FileTableOffset2 = (long)reader.ReadUInt32();
}
}
struct FileDescriptor
{
public readonly ushort Flags;
public readonly uint ExpandedSize;
public readonly uint CompressedSize;
public readonly uint DataOffset;
public readonly byte[] MD5;
public readonly uint NameOffset;
public readonly ushort DirectoryIndex;
public readonly uint LinkToPrevious;
public readonly uint LinkToNext;
public readonly byte LinkFlags;
public readonly ushort Volume;
public readonly string Filename;
public FileDescriptor(Stream reader, long tableOffset)
{
Flags = reader.ReadUInt16();
ExpandedSize = reader.ReadUInt32();
/* unknown */ reader.ReadUInt32();
CompressedSize = reader.ReadUInt32();
/* unknown */ reader.ReadUInt32();
DataOffset = reader.ReadUInt32();
/* unknown */ reader.ReadUInt32();
MD5 = reader.ReadBytes(16);
/* unknown */ reader.ReadBytes(16);
NameOffset = reader.ReadUInt32();
DirectoryIndex = reader.ReadUInt16();
/* unknown */ reader.ReadBytes(12);
LinkToPrevious = reader.ReadUInt32();
LinkToNext = reader.ReadUInt32();
LinkFlags = reader.ReadBytes(1)[0];
Volume = reader.ReadUInt16();
var posSave = reader.Position;
reader.Seek(tableOffset + NameOffset, SeekOrigin.Begin);
Filename = reader.ReadASCIIZ();
reader.Seek(posSave, SeekOrigin.Begin);
}
}
class CabReader : IDisposable
{
readonly FileDescriptor fileDes;
public uint RemainingArchiveStream;
public uint RemainingFileStream;
readonly uint index;
readonly string commonName;
ushort volumeNumber;
Stream cabFile;
public CabReader(FileDescriptor fileDes, uint index, string commonName)
{
this.fileDes = fileDes;
this.index = index;
this.commonName = commonName;
volumeNumber = (ushort)((uint)fileDes.Volume - 1u);
RemainingArchiveStream = 0;
if ((fileDes.Flags & FileCompressed) > 0)
RemainingFileStream = fileDes.CompressedSize;
else
RemainingFileStream = fileDes.ExpandedSize;
cabFile = null;
NextFile();
}
public void CopyTo(Stream dest)
{
if ((fileDes.Flags & FileCompressed) != 0)
{
var inf = new Inflater(true);
var buffer = new byte[165535];
do
{
var bytesToExtract = cabFile.ReadUInt16();
RemainingArchiveStream -= 2u;
RemainingFileStream -= 2u;
inf.SetInput(GetBytes(bytesToExtract));
RemainingFileStream -= bytesToExtract;
while (!inf.IsNeedingInput)
{
var inflated = inf.Inflate(buffer);
dest.Write(buffer, 0, inflated);
}
inf.Reset();
}
while (RemainingFileStream > 0);
}
else
{
do
{
RemainingFileStream -= RemainingArchiveStream;
dest.Write(GetBytes(RemainingArchiveStream), 0, (int)RemainingArchiveStream);
}
while (RemainingFileStream > 0);
}
}
public byte[] GetBytes(uint count)
{
if (count < RemainingArchiveStream)
{
RemainingArchiveStream -= count;
return cabFile.ReadBytes((int)count);
}
else
{
var outArray = new byte[count];
var read = cabFile.Read(outArray, 0, (int)RemainingArchiveStream);
if (RemainingFileStream > RemainingArchiveStream)
{
NextFile();
RemainingArchiveStream -= (uint)cabFile.Read(outArray, read, (int)count - read);
}
return outArray;
}
}
public void Dispose()
{
cabFile.Dispose();
}
public void NextFile()
{
if (cabFile != null)
cabFile.Dispose();
++volumeNumber;
cabFile = GlobalFileSystem.Open("{0}{1}.cab".F(commonName, volumeNumber));
if (cabFile.ReadUInt32() != 0x28635349)
throw new InvalidDataException("Not an Installshield CAB package");
uint fileOffset;
if ((fileDes.Flags & FileSplit) != 0)
{
cabFile.Seek(CommonHeader.Size, SeekOrigin.Current);
var head = new VolumeHeader(cabFile);
if (index == head.LastFileIndex)
{
if ((fileDes.Flags & FileCompressed) != 0)
RemainingArchiveStream = head.LastFileSizeCompressed;
else
RemainingArchiveStream = head.LastFileSizeExpanded;
fileOffset = head.LastFileOffset;
}
else if (index == head.FirstFileIndex)
{
if ((fileDes.Flags & FileCompressed) != 0)
RemainingArchiveStream = head.FirstFileSizeCompressed;
else
RemainingArchiveStream = head.FirstFileSizeExpanded;
fileOffset = head.FirstFileOffset;
}
else
throw new Exception("Cannot Resolve Remaining Stream");
}
else
{
if ((fileDes.Flags & FileCompressed) != 0)
RemainingArchiveStream = fileDes.CompressedSize;
else
RemainingArchiveStream = fileDes.ExpandedSize;
fileOffset = fileDes.DataOffset;
}
cabFile.Seek(fileOffset, SeekOrigin.Begin);
}
}
#endregion
readonly Stream hdrFile;
readonly CommonHeader commonHeader;
readonly CabDescriptor cabDescriptor;
readonly List<uint> directoryTable;
readonly Dictionary<uint, string> directoryNames = new Dictionary<uint, string>();
readonly Dictionary<uint, FileDescriptor> fileDescriptors = new Dictionary<uint, FileDescriptor>();
readonly Dictionary<string, uint> fileLookup = new Dictionary<string, uint>();
int priority;
string commonName;
public int Priority { get { return priority; } }
public string Name { get { return commonName; } }
public InstallShieldCABExtractor(string hdrFilename, int priority = -1)
{
var fileGroups = new List<FileGroup>();
var fileGroupOffsets = new List<uint>();
this.priority = priority;
hdrFile = GlobalFileSystem.Open(hdrFilename);
// Strips archive number AND file extension
commonName = Regex.Replace(hdrFilename, @"\d*\.[^\.]*$", "");
var signature = hdrFile.ReadUInt32();
if (signature != 0x28635349)
throw new InvalidDataException("Not an Installshield CAB package");
commonHeader = new CommonHeader(hdrFile);
cabDescriptor = new CabDescriptor(hdrFile, commonHeader);
/* unknown */ hdrFile.ReadBytes(14);
for (var i = 0U; i < MaxFileGroupCount; ++i)
fileGroupOffsets.Add(hdrFile.ReadUInt32());
hdrFile.Seek(commonHeader.CabDescriptorOffset + cabDescriptor.FileTableOffset, SeekOrigin.Begin);
directoryTable = new List<uint>();
for (var i = 0U; i < cabDescriptor.DirectoryCount; ++i)
directoryTable.Add(hdrFile.ReadUInt32());
foreach (var offset in fileGroupOffsets)
{
var nextOffset = offset;
while (nextOffset != 0)
{
hdrFile.Seek((long)nextOffset + 4 + commonHeader.CabDescriptorOffset, SeekOrigin.Begin);
var descriptorOffset = hdrFile.ReadUInt32();
nextOffset = hdrFile.ReadUInt32();
hdrFile.Seek((long)descriptorOffset + commonHeader.CabDescriptorOffset, SeekOrigin.Begin);
fileGroups.Add(new FileGroup(hdrFile, commonHeader.CabDescriptorOffset));
}
}
hdrFile.Seek(commonHeader.CabDescriptorOffset + cabDescriptor.FileTableOffset + cabDescriptor.FileTableOffset2, SeekOrigin.Begin);
foreach (var fileGroup in fileGroups)
{
for (var index = fileGroup.FirstFile; index <= fileGroup.LastFile; ++index)
{
AddFileDescriptorToList(index);
var fileDescriptor = fileDescriptors[index];
var fullFilePath = "{0}\\{1}\\{2}".F(fileGroup.Name, DirectoryName((uint)fileDescriptor.DirectoryIndex), fileDescriptor.Filename);
fileLookup.Add(fullFilePath, index);
}
}
}
public string DirectoryName(uint index)
{
if (directoryNames.ContainsKey(index))
return directoryNames[index];
hdrFile.Seek(commonHeader.CabDescriptorOffset +
cabDescriptor.FileTableOffset +
directoryTable[(int)index],
SeekOrigin.Begin);
var test = hdrFile.ReadASCIIZ();
return test;
}
public bool Exists(string filename)
{
return fileLookup.ContainsKey(filename);
}
public uint DirectoryCount()
{
return cabDescriptor.DirectoryCount;
}
public string FileName(uint index)
{
if (!fileDescriptors.ContainsKey(index))
AddFileDescriptorToList(index);
return fileDescriptors[index].Filename;
}
void AddFileDescriptorToList(uint index)
{
hdrFile.Seek(commonHeader.CabDescriptorOffset +
cabDescriptor.FileTableOffset +
cabDescriptor.FileTableOffset2 +
index * 0x57,
SeekOrigin.Begin);
var fd = new FileDescriptor(hdrFile,
commonHeader.CabDescriptorOffset + cabDescriptor.FileTableOffset);
fileDescriptors.Add(index, fd);
}
public uint FileCount()
{
return cabDescriptor.FileCount;
}
public void ExtractFile(uint index, string fileName)
{
using (var destfile = File.Open(fileName, FileMode.Create))
GetContentById(index, destfile);
}
public void Write(Dictionary<string, byte[]> input)
{
throw new NotImplementedException("Cannot Add Files To Cab");
}
public IEnumerable<uint> ClassicHashes()
{
return fileLookup.Keys.Select(k => PackageEntry.HashFilename(k, PackageHashType.Classic));
}
public Stream GetContentById(uint index)
{
var fileDes = fileDescriptors[index];
if ((fileDes.Flags & FileInvalid) != 0)
throw new Exception("File Invalid");
if ((fileDes.LinkFlags & LinkPrev) != 0)
return GetContentById(fileDes.LinkToPrevious);
if ((fileDes.Flags & FileObfuscated) != 0)
throw new NotImplementedException("Haven't implemented obfustcated files");
var output = new MemoryStream((int)fileDes.ExpandedSize);
using (var reader = new CabReader(fileDes, index, commonName))
reader.CopyTo(output);
if (output.Length != fileDes.ExpandedSize)
throw new Exception("Did not fully extract Expected = {0}, Got = {1}".F(fileDes.ExpandedSize, output.Length));
output.Position = 0;
return output;
}
public void GetContentById(uint index, Stream output)
{
var fileDes = fileDescriptors[index];
if ((fileDes.Flags & FileInvalid) != 0)
throw new Exception("File Invalid");
if ((fileDes.LinkFlags & LinkPrev) != 0)
{
GetContentById(fileDes.LinkToPrevious, output);
return;
}
if ((fileDes.Flags & FileObfuscated) != 0)
throw new NotImplementedException("Haven't implemented obfustcated files");
using (var reader = new CabReader(fileDes, index, commonName))
reader.CopyTo(output);
if (output.Length != fileDes.ExpandedSize)
throw new Exception("Did not fully extract Expected = {0}, Got = {1}".F(fileDes.ExpandedSize, output.Length));
}
public Stream GetContent(string fileName)
{
return GetContentById(fileLookup[fileName]);
}
public IEnumerable<uint> CrcHashes()
{
yield break;
}
public IEnumerable<string> AllFileNames()
{
return fileLookup.Keys;
}
public void Dispose()
{
hdrFile.Dispose();
}
}
}

View File

@@ -1,158 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.IO;
using OpenRA.FileFormats;
namespace OpenRA.FileSystem
{
public sealed class InstallShieldPackage : IFolder
{
readonly Dictionary<uint, PackageEntry> index = new Dictionary<uint, PackageEntry>();
readonly List<string> filenames;
readonly Stream s;
readonly long dataStart = 255;
readonly int priority;
readonly string filename;
public InstallShieldPackage(string filename, int priority)
{
this.filename = filename;
this.priority = priority;
filenames = new List<string>();
s = GlobalFileSystem.Open(filename);
try
{
// Parse package header
var reader = new BinaryReader(s);
var signature = reader.ReadUInt32();
if (signature != 0x8C655D13)
throw new InvalidDataException("Not an Installshield package");
reader.ReadBytes(8);
/*var FileCount = */reader.ReadUInt16();
reader.ReadBytes(4);
/*var ArchiveSize = */reader.ReadUInt32();
reader.ReadBytes(19);
var tocAddress = reader.ReadInt32();
reader.ReadBytes(4);
var dirCount = reader.ReadUInt16();
// Parse the directory list
s.Seek(tocAddress, SeekOrigin.Begin);
var tocReader = new BinaryReader(s);
var fileCountInDirs = new List<uint>();
// Parse directories
for (var i = 0; i < dirCount; i++)
fileCountInDirs.Add(ParseDirectory(tocReader));
// Parse files
foreach (var fileCount in fileCountInDirs)
for (var i = 0; i < fileCount; i++)
ParseFile(reader);
}
catch
{
Dispose();
throw;
}
}
static uint ParseDirectory(BinaryReader reader)
{
// Parse directory header
var fileCount = reader.ReadUInt16();
var chunkSize = reader.ReadUInt16();
var nameLength = reader.ReadUInt16();
reader.ReadChars(nameLength); // var DirName = new String(reader.ReadChars(NameLength));
// Skip to the end of the chunk
reader.ReadBytes(chunkSize - nameLength - 6);
return fileCount;
}
uint accumulatedData = 0;
void ParseFile(BinaryReader reader)
{
reader.ReadBytes(7);
var compressedSize = reader.ReadUInt32();
reader.ReadBytes(12);
var chunkSize = reader.ReadUInt16();
reader.ReadBytes(4);
var nameLength = reader.ReadByte();
var fileName = new string(reader.ReadChars(nameLength));
var hash = PackageEntry.HashFilename(fileName, PackageHashType.Classic);
if (!index.ContainsKey(hash))
index.Add(hash, new PackageEntry(hash, accumulatedData, compressedSize));
filenames.Add(fileName);
accumulatedData += compressedSize;
// Skip to the end of the chunk
reader.ReadBytes(chunkSize - nameLength - 30);
}
public Stream GetContent(uint hash)
{
PackageEntry e;
if (!index.TryGetValue(hash, out e))
return null;
s.Seek(dataStart + e.Offset, SeekOrigin.Begin);
var data = s.ReadBytes((int)e.Length);
return new MemoryStream(Blast.Decompress(data));
}
public Stream GetContent(string filename)
{
return GetContent(PackageEntry.HashFilename(filename, PackageHashType.Classic));
}
public IEnumerable<uint> ClassicHashes()
{
return index.Keys;
}
public IEnumerable<uint> CrcHashes()
{
yield break;
}
public IEnumerable<string> AllFileNames()
{
return filenames;
}
public bool Exists(string filename)
{
return index.ContainsKey(PackageEntry.HashFilename(filename, PackageHashType.Classic));
}
public int Priority { get { return 2000 + priority; } }
public string Name { get { return filename; } }
public void Write(Dictionary<string, byte[]> contents)
{
throw new NotImplementedException("Cannot save InstallShieldPackages.");
}
public void Dispose()
{
s.Dispose();
}
}
}

View File

@@ -1,290 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using OpenRA.FileFormats;
namespace OpenRA.FileSystem
{
public sealed class MixFile : IFolder
{
readonly Dictionary<uint, PackageEntry> index;
readonly long dataStart;
readonly Stream s;
readonly int priority;
readonly string filename;
readonly PackageHashType type;
// Save a mix to disk with the given contents
public MixFile(string filename, int priority, Dictionary<string, byte[]> contents)
{
this.filename = filename;
this.priority = priority;
this.type = PackageHashType.Classic;
if (File.Exists(filename))
File.Delete(filename);
s = File.Create(filename);
try
{
index = new Dictionary<uint, PackageEntry>();
contents.Add("local mix database.dat", new XccLocalDatabase(contents.Keys.Append("local mix database.dat")).Data());
Write(contents);
}
catch
{
Dispose();
throw;
}
}
public MixFile(string filename, PackageHashType type, int priority)
{
this.filename = filename;
this.priority = priority;
this.type = type;
s = GlobalFileSystem.Open(filename);
try
{
// Detect format type
var isCncMix = s.ReadUInt16() != 0;
// The C&C mix format doesn't contain any flags or encryption
var isEncrypted = false;
if (!isCncMix)
isEncrypted = (s.ReadUInt16() & 0x2) != 0;
List<PackageEntry> entries;
if (isEncrypted)
{
long unused;
entries = ParseHeader(DecryptHeader(s, 4, out dataStart), 0, out unused);
}
else
entries = ParseHeader(s, isCncMix ? 0 : 4, out dataStart);
index = entries.ToDictionaryWithConflictLog(x => x.Hash,
"{0} ({1} format, Encrypted: {2}, DataStart: {3})".F(filename, isCncMix ? "C&C" : "RA/TS/RA2", isEncrypted, dataStart),
null, x => "(offs={0}, len={1})".F(x.Offset, x.Length));
}
catch (Exception)
{
Dispose();
throw;
}
}
static List<PackageEntry> ParseHeader(Stream s, long offset, out long headerEnd)
{
s.Seek(offset, SeekOrigin.Begin);
var numFiles = s.ReadUInt16();
/*uint dataSize = */s.ReadUInt32();
var items = new List<PackageEntry>();
for (var i = 0; i < numFiles; i++)
items.Add(new PackageEntry(s));
headerEnd = offset + 6 + numFiles * PackageEntry.Size;
return items;
}
static MemoryStream DecryptHeader(Stream s, long offset, out long headerEnd)
{
s.Seek(offset, SeekOrigin.Begin);
// Decrypt blowfish key
var keyblock = s.ReadBytes(80);
var blowfishKey = new BlowfishKeyProvider().DecryptKey(keyblock);
var fish = new Blowfish(blowfishKey);
// Decrypt first block to work out the header length
var ms = Decrypt(ReadBlocks(s, offset + 80, 1), fish);
var numFiles = ms.ReadUInt16();
// Decrypt the full header - round bytes up to a full block
var blockCount = (13 + numFiles * PackageEntry.Size) / 8;
headerEnd = offset + 80 + blockCount * 8;
return Decrypt(ReadBlocks(s, offset + 80, blockCount), fish);
}
static MemoryStream Decrypt(uint[] h, Blowfish fish)
{
var decrypted = fish.Decrypt(h);
var ms = new MemoryStream();
var writer = new BinaryWriter(ms);
foreach (var t in decrypted)
writer.Write(t);
writer.Flush();
ms.Seek(0, SeekOrigin.Begin);
return ms;
}
static uint[] ReadBlocks(Stream s, long offset, int count)
{
if (offset < 0)
throw new ArgumentOutOfRangeException("offset", "Non-negative number required.");
if (count < 0)
throw new ArgumentOutOfRangeException("count", "Non-negative number required.");
if (offset + (count * 2) > s.Length)
throw new ArgumentException("Bytes to read {0} and offset {1} greater than stream length {2}.".F(count * 2, offset, s.Length));
s.Seek(offset, SeekOrigin.Begin);
// A block is a single encryption unit (represented as two 32-bit integers)
var ret = new uint[2 * count];
for (var i = 0; i < ret.Length; i++)
ret[i] = s.ReadUInt32();
return ret;
}
uint? FindMatchingHash(string filename)
{
var hash = PackageEntry.HashFilename(filename, type);
if (index.ContainsKey(hash))
return hash;
// Maybe we were given a raw hash?
uint raw;
if (!uint.TryParse(filename, NumberStyles.AllowHexSpecifier, CultureInfo.InvariantCulture, out raw))
return null;
if ("{0:X}".F(raw) == filename && index.ContainsKey(raw))
return raw;
return null;
}
public Stream GetContent(uint hash)
{
PackageEntry e;
if (!index.TryGetValue(hash, out e))
return null;
s.Seek(dataStart + e.Offset, SeekOrigin.Begin);
var data = s.ReadBytes((int)e.Length);
return new MemoryStream(data);
}
public Stream GetContent(string filename)
{
var hash = FindMatchingHash(filename);
return hash.HasValue ? GetContent(hash.Value) : null;
}
static readonly uint[] Nothing = { };
public IEnumerable<uint> ClassicHashes()
{
if (type == PackageHashType.Classic)
return index.Keys;
return Nothing;
}
public IEnumerable<uint> CrcHashes()
{
if (type == PackageHashType.CRC32)
return index.Keys;
return Nothing;
}
public IEnumerable<string> AllFileNames()
{
var lookup = new Dictionary<uint, string>();
if (Exists("local mix database.dat"))
{
var db = new XccLocalDatabase(GetContent("local mix database.dat"));
foreach (var e in db.Entries)
{
var hash = PackageEntry.HashFilename(e, type);
if (!lookup.ContainsKey(hash))
lookup.Add(hash, e);
}
}
if (GlobalFileSystem.Exists("global mix database.dat"))
{
var db = new XccGlobalDatabase(GlobalFileSystem.Open("global mix database.dat"));
foreach (var e in db.Entries)
{
var hash = PackageEntry.HashFilename(e, type);
if (!lookup.ContainsKey(hash))
lookup.Add(hash, e);
}
}
return index.Keys.Select(k => lookup.ContainsKey(k) ? lookup[k] : "{0:X}".F(k));
}
public bool Exists(string filename)
{
return FindMatchingHash(filename).HasValue;
}
public int Priority { get { return 1000 + priority; } }
public string Name { get { return filename; } }
public void Write(Dictionary<string, byte[]> contents)
{
// Cannot modify existing mixfile - rename existing file and
// create a new one with original content plus modifications
GlobalFileSystem.Unmount(this);
// TODO: Add existing data to the contents list
if (index.Count > 0)
throw new NotImplementedException("Updating mix files unfinished");
// Construct a list of entries for the file header
uint dataSize = 0;
var items = new List<PackageEntry>();
foreach (var kv in contents)
{
var length = (uint)kv.Value.Length;
var hash = PackageEntry.HashFilename(Path.GetFileName(kv.Key), type);
items.Add(new PackageEntry(hash, dataSize, length));
dataSize += length;
}
// Write the new file
s.Seek(0, SeekOrigin.Begin);
using (var writer = new BinaryWriter(s))
{
// Write file header
writer.Write((ushort)items.Count);
writer.Write(dataSize);
foreach (var item in items)
item.Write(writer);
writer.Flush();
// Copy file data
foreach (var file in contents)
s.Write(file.Value);
}
}
public void Dispose()
{
s.Dispose();
}
}
}

View File

@@ -1,110 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using OpenRA.FileFormats;
namespace OpenRA.FileSystem
{
public enum PackageHashType { Classic, CRC32 }
public class PackageEntry
{
public const int Size = 12;
public readonly uint Hash;
public readonly uint Offset;
public readonly uint Length;
public PackageEntry(uint hash, uint offset, uint length)
{
Hash = hash;
Offset = offset;
Length = length;
}
public PackageEntry(Stream s)
{
Hash = s.ReadUInt32();
Offset = s.ReadUInt32();
Length = s.ReadUInt32();
}
public void Write(BinaryWriter w)
{
w.Write(Hash);
w.Write(Offset);
w.Write(Length);
}
public override string ToString()
{
string filename;
if (names.TryGetValue(Hash, out filename))
return "{0} - offset 0x{1:x8} - length 0x{2:x8}".F(filename, Offset, Length);
else
return "0x{0:x8} - offset 0x{1:x8} - length 0x{2:x8}".F(Hash, Offset, Length);
}
public static uint HashFilename(string name, PackageHashType type)
{
switch (type)
{
case PackageHashType.Classic:
{
name = name.ToUpperInvariant();
if (name.Length % 4 != 0)
name = name.PadRight(name.Length + (4 - name.Length % 4), '\0');
using (var ms = new MemoryStream(Encoding.ASCII.GetBytes(name)))
{
var len = name.Length >> 2;
uint result = 0;
while (len-- != 0)
result = ((result << 1) | (result >> 31)) + ms.ReadUInt32();
return result;
}
}
case PackageHashType.CRC32:
{
name = name.ToUpperInvariant();
var l = name.Length;
var a = l >> 2;
if ((l & 3) != 0)
{
name += (char)(l - (a << 2));
var i = 3 - (l & 3);
while (i-- != 0)
name += name[a << 2];
}
return CRC32.Calculate(Encoding.ASCII.GetBytes(name));
}
default: throw new NotImplementedException("Unknown hash type `{0}`".F(type));
}
}
static Dictionary<uint, string> names = new Dictionary<uint, string>();
public static void AddStandardName(string s)
{
var hash = HashFilename(s, PackageHashType.Classic); // RA1 and TD
names.Add(hash, s);
var crcHash = HashFilename(s, PackageHashType.CRC32); // TS
names.Add(crcHash, s);
}
}
}

View File

@@ -1,109 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.IO;
namespace OpenRA.FileSystem
{
struct Entry
{
public uint Offset;
public uint Length;
public string Filename;
}
public sealed class PakFile : IFolder
{
readonly string filename;
readonly int priority;
readonly Dictionary<string, Entry> index;
readonly Stream stream;
public PakFile(string filename, int priority)
{
this.filename = filename;
this.priority = priority;
index = new Dictionary<string, Entry>();
stream = GlobalFileSystem.Open(filename);
try
{
index = new Dictionary<string, Entry>();
var offset = stream.ReadUInt32();
while (offset != 0)
{
var file = stream.ReadASCIIZ();
var next = stream.ReadUInt32();
var length = (next == 0 ? (uint)stream.Length : next) - offset;
// Ignore duplicate files
if (index.ContainsKey(file))
continue;
index.Add(file, new Entry { Offset = offset, Length = length, Filename = file });
offset = next;
}
}
catch
{
Dispose();
throw;
}
}
public Stream GetContent(string filename)
{
Entry entry;
if (!index.TryGetValue(filename, out entry))
return null;
stream.Seek(entry.Offset, SeekOrigin.Begin);
var data = stream.ReadBytes((int)entry.Length);
return new MemoryStream(data);
}
public IEnumerable<uint> ClassicHashes()
{
foreach (var filename in index.Keys)
yield return PackageEntry.HashFilename(filename, PackageHashType.Classic);
}
public IEnumerable<uint> CrcHashes()
{
yield break;
}
public IEnumerable<string> AllFileNames()
{
foreach (var filename in index.Keys)
yield return filename;
}
public bool Exists(string filename)
{
return index.ContainsKey(filename);
}
public void Write(Dictionary<string, byte[]> contents)
{
throw new NotImplementedException("Cannot save Pak archives.");
}
public int Priority { get { return 1000 + priority; } }
public string Name { get { return filename; } }
public void Dispose()
{
stream.Dispose();
}
}
}

View File

@@ -1,134 +1,237 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Linq;
using ICSharpCode.SharpZipLib.Zip;
using SZipFile = ICSharpCode.SharpZipLib.Zip.ZipFile;
namespace OpenRA.FileSystem
{
public sealed class ZipFile : IFolder
public class ZipFileLoader : IPackageLoader
{
readonly string filename;
readonly int priority;
SZipFile pkg;
static readonly string[] Extensions = { ".zip", ".oramap" };
static ZipFile()
class ReadOnlyZipFile : IReadOnlyPackage
{
ZipConstants.DefaultCodePage = Encoding.Default.CodePage;
}
public string Name { get; protected set; }
protected ZipFile pkg;
public ZipFile(string filename, int priority)
{
this.filename = filename;
this.priority = priority;
try
// Dummy constructor for use with ReadWriteZipFile
protected ReadOnlyZipFile() { }
public ReadOnlyZipFile(Stream s, string filename)
{
// pull the file into memory, dont keep it open.
pkg = new SZipFile(new MemoryStream(File.ReadAllBytes(filename)));
Name = filename;
pkg = new ZipFile(s);
}
catch (ZipException e)
public Stream GetStream(string filename)
{
Log.Write("debug", "Couldn't load zip file: {0}", e.Message);
var entry = pkg.GetEntry(filename);
if (entry == null)
return null;
using (var z = pkg.GetInputStream(entry))
{
var ms = new MemoryStream((int)entry.Size);
z.CopyTo(ms);
ms.Seek(0, SeekOrigin.Begin);
return ms;
}
}
}
// Create a new zip with the specified contents
public ZipFile(string filename, int priority, Dictionary<string, byte[]> contents)
{
this.priority = priority;
this.filename = filename;
public IEnumerable<string> Contents
{
get
{
foreach (ZipEntry entry in pkg)
if (entry.IsFile)
yield return entry.Name;
}
}
if (File.Exists(filename))
File.Delete(filename);
public bool Contains(string filename)
{
return pkg.GetEntry(filename) != null;
}
pkg = SZipFile.Create(filename);
Write(contents);
}
public void Dispose()
{
pkg?.Close();
}
public Stream GetContent(string filename)
{
var entry = pkg.GetEntry(filename);
if (entry == null)
public IReadOnlyPackage OpenPackage(string filename, FileSystem context)
{
// Directories are stored with a trailing "/" in the index
var entry = pkg.GetEntry(filename) ?? pkg.GetEntry(filename + "/");
if (entry == null)
return null;
if (entry.IsDirectory)
return new ZipFolder(this, filename);
// Other package types can be loaded normally
var s = GetStream(filename);
if (s == null)
return null;
if (context.TryParsePackage(s, filename, out var package))
return package;
s.Dispose();
return null;
using (var z = pkg.GetInputStream(entry))
{
var ms = new MemoryStream();
z.CopyTo(ms);
ms.Seek(0, SeekOrigin.Begin);
return ms;
}
}
public IEnumerable<uint> ClassicHashes()
sealed class ReadWriteZipFile : ReadOnlyZipFile, IReadWritePackage
{
foreach (ZipEntry entry in pkg)
yield return PackageEntry.HashFilename(entry.Name, PackageHashType.Classic);
readonly MemoryStream pkgStream = new MemoryStream();
public ReadWriteZipFile(string filename, bool create = false)
{
// SharpZipLib breaks when asked to update archives loaded from outside streams or files
// We can work around this by creating a clean in-memory-only file, cutting all outside references
if (!create)
{
using (var copy = new MemoryStream(File.ReadAllBytes(filename)))
{
pkgStream.Capacity = (int)copy.Length;
copy.CopyTo(pkgStream);
}
}
pkgStream.Position = 0;
pkg = new ZipFile(pkgStream);
Name = filename;
}
void Commit()
{
var pos = pkgStream.Position;
pkgStream.Position = 0;
File.WriteAllBytes(Name, pkgStream.ReadBytes((int)pkgStream.Length));
pkgStream.Position = pos;
}
public void Update(string filename, byte[] contents)
{
pkg.BeginUpdate();
pkg.Add(new StaticStreamDataSource(new MemoryStream(contents)), filename);
pkg.CommitUpdate();
Commit();
}
public void Delete(string filename)
{
pkg.BeginUpdate();
pkg.Delete(filename);
pkg.CommitUpdate();
Commit();
}
}
public IEnumerable<uint> CrcHashes()
sealed class ZipFolder : IReadOnlyPackage
{
yield break;
public string Name => path;
public ReadOnlyZipFile Parent { get; }
readonly string path;
public ZipFolder(ReadOnlyZipFile parent, string path)
{
if (path.EndsWith("/", StringComparison.Ordinal))
path = path.Substring(0, path.Length - 1);
Parent = parent;
this.path = path;
}
public Stream GetStream(string filename)
{
// Zip files use '/' as a path separator
return Parent.GetStream(path + '/' + filename);
}
public IEnumerable<string> Contents
{
get
{
foreach (var entry in Parent.Contents)
{
if (entry.StartsWith(path, StringComparison.Ordinal) && entry != path)
{
var filename = entry.Substring(path.Length + 1);
var dirLevels = filename.Split('/').Count(c => !string.IsNullOrEmpty(c));
if (dirLevels == 1)
yield return filename;
}
}
}
}
public bool Contains(string filename)
{
return Parent.Contains(path + '/' + filename);
}
public IReadOnlyPackage OpenPackage(string filename, FileSystem context)
{
return Parent.OpenPackage(path + '/' + filename, context);
}
public void Dispose() { /* nothing to do */ }
}
public IEnumerable<string> AllFileNames()
class StaticStreamDataSource : IStaticDataSource
{
foreach (ZipEntry entry in pkg)
yield return entry.Name;
readonly Stream s;
public StaticStreamDataSource(Stream s)
{
this.s = s;
}
public Stream GetSource()
{
return s;
}
}
public bool Exists(string filename)
public bool TryParsePackage(Stream s, string filename, FileSystem context, out IReadOnlyPackage package)
{
return pkg.GetEntry(filename) != null;
if (!Extensions.Any(e => filename.EndsWith(e, StringComparison.InvariantCultureIgnoreCase)))
{
package = null;
return false;
}
package = new ReadOnlyZipFile(s, filename);
return true;
}
public int Priority { get { return 500 + priority; } }
public string Name { get { return filename; } }
public void Write(Dictionary<string, byte[]> contents)
public static bool TryParseReadWritePackage(string filename, out IReadWritePackage package)
{
// TODO: Clear existing content?
pkg.Close();
pkg = SZipFile.Create(filename);
pkg.BeginUpdate();
if (!Extensions.Any(e => filename.EndsWith(e, StringComparison.InvariantCultureIgnoreCase)))
{
package = null;
return false;
}
foreach (var kvp in contents)
pkg.Add(new StaticMemoryDataSource(kvp.Value), kvp.Key);
pkg.CommitUpdate();
pkg.Close();
pkg = new SZipFile(new MemoryStream(File.ReadAllBytes(filename)));
package = new ReadWriteZipFile(filename);
return true;
}
public void Dispose()
public static IReadWritePackage Create(string filename)
{
if (pkg != null)
pkg.Close();
}
}
class StaticMemoryDataSource : IStaticDataSource
{
byte[] data;
public StaticMemoryDataSource(byte[] data)
{
this.data = data;
}
public Stream GetSource()
{
return new MemoryStream(data);
return new ReadWriteZipFile(filename, true);
}
}
}

37
OpenRA.Game/Fonts.cs Normal file
View File

@@ -0,0 +1,37 @@
#region Copyright & License Information
/*
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System.Collections.Generic;
namespace OpenRA
{
public class FontData
{
public readonly string Font;
public readonly int Size;
public readonly int Ascender;
}
public class Fonts : IGlobalModData
{
[FieldLoader.LoadUsing(nameof(LoadFonts))]
public readonly Dictionary<string, FontData> FontList;
static object LoadFonts(MiniYaml y)
{
var ret = new Dictionary<string, FontData>();
foreach (var node in y.Nodes)
ret.Add(node.Key, FieldLoader.Load<FontData>(node.Value));
return ret;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,18 +1,19 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Linq;
using OpenRA.Graphics;
using OpenRA.Network;
using OpenRA.Primitives;
namespace OpenRA
{
@@ -23,21 +24,24 @@ namespace OpenRA
public string MapUid;
public string MapTitle;
public int FinalGameTick;
/// <summary>Game start timestamp (when the recoding started).</summary>
public DateTime StartTimeUtc;
// Game end timestamp (when the recoding stopped).
/// <summary>Game end timestamp (when the recoding stopped).</summary>
public DateTime EndTimeUtc;
// Gets the game's duration, from the time the game started until the
// replay recording stopped.
public TimeSpan Duration { get { return EndTimeUtc > StartTimeUtc ? EndTimeUtc - StartTimeUtc : TimeSpan.Zero; } }
public IList<Player> Players { get; private set; }
public MapPreview MapPreview { get { return Game.ModData.MapCache[MapUid]; } }
public IEnumerable<Player> HumanPlayers { get { return Players.Where(p => p.IsHuman); } }
public bool IsSinglePlayer { get { return HumanPlayers.Count() == 1; } }
/// <summary>Gets the game's duration, from the time the game started until the replay recording stopped.</summary>
public TimeSpan Duration => EndTimeUtc > StartTimeUtc ? EndTimeUtc - StartTimeUtc : TimeSpan.Zero;
Dictionary<OpenRA.Player, Player> playersByRuntime;
public IList<Player> Players { get; }
public HashSet<int> DisabledSpawnPoints = new HashSet<int>();
public MapPreview MapPreview => Game.ModData.MapCache[MapUid];
public IEnumerable<Player> HumanPlayers { get { return Players.Where(p => p.IsHuman); } }
public bool IsSinglePlayer => HumanPlayers.Count() == 1;
readonly Dictionary<OpenRA.Player, Player> playersByRuntime;
public GameInformation()
{
@@ -70,33 +74,34 @@ namespace OpenRA
return info;
}
catch (InvalidOperationException)
catch (YamlException)
{
Log.Write("debug", "GameInformation deserialized invalid MiniYaml:\n{0}".F(data));
Log.Write("debug", $"GameInformation deserialized invalid MiniYaml:\n{data}");
throw;
}
}
public string Serialize()
{
var nodes = new List<MiniYamlNode>();
nodes.Add(new MiniYamlNode("Root", FieldSaver.Save(this)));
var nodes = new List<MiniYamlNode>
{
new MiniYamlNode("Root", FieldSaver.Save(this))
};
for (var i = 0; i < Players.Count; i++)
nodes.Add(new MiniYamlNode("Player@{0}".F(i), FieldSaver.Save(Players[i])));
nodes.Add(new MiniYamlNode($"Player@{i}", FieldSaver.Save(Players[i])));
return nodes.WriteToString();
}
// Adds the player information at start-up.
/// <summary>Adds the player information at start-up.</summary>
public void AddPlayer(OpenRA.Player runtimePlayer, Session lobbyInfo)
{
if (runtimePlayer == null)
throw new ArgumentNullException("runtimePlayer");
throw new ArgumentNullException(nameof(runtimePlayer));
if (lobbyInfo == null)
throw new ArgumentNullException("lobbyInfo");
throw new ArgumentNullException(nameof(lobbyInfo));
// We don't care about spectators and map players
if (runtimePlayer.NonCombatant || !runtimePlayer.Playable)
@@ -115,61 +120,79 @@ namespace OpenRA
IsBot = runtimePlayer.IsBot,
FactionName = runtimePlayer.Faction.Name,
FactionId = runtimePlayer.Faction.InternalName,
DisplayFactionName = runtimePlayer.DisplayFaction.Name,
DisplayFactionId = runtimePlayer.DisplayFaction.InternalName,
Color = runtimePlayer.Color,
Team = client.Team,
Handicap = client.Handicap,
SpawnPoint = runtimePlayer.SpawnPoint,
IsRandomFaction = runtimePlayer.Faction.InternalName != client.Race,
IsRandomSpawnPoint = runtimePlayer.SpawnPoint != client.SpawnPoint
IsRandomFaction = runtimePlayer.Faction.InternalName != client.Faction,
IsRandomSpawnPoint = runtimePlayer.DisplaySpawnPoint == 0,
Fingerprint = client.Fingerprint
};
playersByRuntime.Add(runtimePlayer, player);
Players.Add(player);
}
// Gets the player information for the specified runtime player instance.
/// <summary>Gets the player information for the specified runtime player instance.</summary>
public Player GetPlayer(OpenRA.Player runtimePlayer)
{
Player player;
playersByRuntime.TryGetValue(runtimePlayer, out player);
playersByRuntime.TryGetValue(runtimePlayer, out var player);
return player;
}
public class Player
{
// Start-up information
#region Start-up information
public int ClientIndex;
// The player name, not guaranteed to be unique.
/// <summary>The player name, not guaranteed to be unique.</summary>
public string Name;
public bool IsHuman;
public bool IsBot;
// The faction name (aka Country)
/// <summary>The faction's display name.</summary>
public string FactionName;
// The faction id (aka Country, aka Race)
/// <summary>The faction ID, a.k.a. the faction's internal name.</summary>
public string FactionId;
public HSLColor Color;
public Color Color;
// The team id on start-up, or 0 if the player is not part of the team.
/// <summary>The faction (including Random, etc.) that was selected in the lobby.</summary>
public string DisplayFactionName;
public string DisplayFactionId;
/// <summary>The team ID on start-up, or 0 if the player is not part of a team.</summary>
public int Team;
public int SpawnPoint;
public int Handicap;
// True if the faction was chosen at random; otherwise, false
/// <summary>True if the faction was chosen at random; otherwise, false.</summary>
public bool IsRandomFaction;
// True if the spawn point was chosen at random; otherwise, false.</summary>
/// <summary>True if the spawn point was chosen at random; otherwise, false.</summary>
public bool IsRandomSpawnPoint;
// Information gathered at a later stage
/// <summary>Player authentication fingerprint for the OpenRA forum.</summary>
public string Fingerprint;
// The game outcome for this player
#endregion
#region
/// <summary>The game outcome for this player.</summary>
public WinState Outcome;
// The time when this player won or lost the game
/// <summary>The time when this player won or lost the game.</summary>
public DateTime OutcomeTimestampUtc;
/// <summary>The frame at which this player disconnected.</summary>
public int DisconnectFrame;
#endregion
}
}
}

View File

@@ -1,10 +1,11 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
@@ -21,90 +22,74 @@ namespace OpenRA
/// </summary>
public class ActorInfo
{
public const string AbstractActorPrefix = "^";
public const char TraitInstanceSeparator = '@';
/// <summary>
/// The actor name can be anything, but the sprites used in the Render*: traits default to this one.
/// If you add an ^ in front of the name, the engine will recognize this as a collection of traits
/// that can be inherited by others (using Inherits:) and not a real unit.
/// You can remove inherited traits by adding a - infront of them as in -TraitName: to inherit everything, but this trait.
/// You can remove inherited traits by adding a - in front of them as in -TraitName: to inherit everything, but this trait.
/// </summary>
public readonly string Name;
public readonly TypeDictionary Traits = new TypeDictionary();
List<ITraitInfo> constructOrderCache = null;
readonly TypeDictionary traits = new TypeDictionary();
List<TraitInfo> constructOrderCache = null;
public ActorInfo(string name, MiniYaml node, Dictionary<string, MiniYaml> allUnits)
public ActorInfo(ObjectCreator creator, string name, MiniYaml node)
{
try
{
var allParents = new HashSet<string>();
var abstractActorType = name.StartsWith("^");
// Guard against circular inheritance
allParents.Add(name);
var mergedNode = MergeWithParents(node, allUnits, allParents).ToDictionary();
Name = name;
foreach (var t in mergedNode)
foreach (var t in node.Nodes)
{
if (t.Key[0] == '-')
throw new YamlException("Bogus trait removal: " + t.Key);
if (t.Key != "Inherits" && !t.Key.StartsWith("Inherits@"))
try
{
Traits.Add(LoadTraitInfo(t.Key.Split('@')[0], t.Value));
}
catch (FieldLoader.MissingFieldsException e)
{
if (!abstractActorType)
throw new YamlException(e.Message);
}
try
{
// HACK: The linter does not want to crash when a trait doesn't exist but only print an error instead
// LoadTraitInfo will only return null to signal us to abort here if the linter is running
var trait = LoadTraitInfo(creator, t.Key, t.Value);
if (trait != null)
traits.Add(trait);
}
catch (FieldLoader.MissingFieldsException e)
{
throw new YamlException(e.Message);
}
}
traits.TrimExcess();
}
catch (YamlException e)
{
throw new YamlException("Actor type {0}: {1}".F(name, e.Message));
throw new YamlException($"Actor type {name}: {e.Message}");
}
}
static Dictionary<string, MiniYaml> GetParents(MiniYaml node, Dictionary<string, MiniYaml> allUnits)
public ActorInfo(string name, params TraitInfo[] traitInfos)
{
return node.Nodes.Where(n => n.Key == "Inherits" || n.Key.StartsWith("Inherits@"))
.ToDictionary(n => n.Value.Value, n =>
{
MiniYaml i;
if (!allUnits.TryGetValue(n.Value.Value, out i))
throw new YamlException(
"Bogus inheritance -- parent type {0} does not exist".F(n.Value.Value));
return i;
});
Name = name;
foreach (var t in traitInfos)
traits.Add(t);
traits.TrimExcess();
}
static MiniYaml MergeWithParents(MiniYaml node, Dictionary<string, MiniYaml> allUnits, HashSet<string> allParents)
{
var parents = GetParents(node, allUnits);
foreach (var kv in parents)
{
if (!allParents.Add(kv.Key))
throw new YamlException(
"Bogus inheritance -- duplicate inheritance of {0}.".F(kv.Key));
node = MiniYaml.MergeStrict(node, MergeWithParents(kv.Value, allUnits, allParents));
}
return node;
}
static ITraitInfo LoadTraitInfo(string traitName, MiniYaml my)
static TraitInfo LoadTraitInfo(ObjectCreator creator, string traitName, MiniYaml my)
{
if (!string.IsNullOrEmpty(my.Value))
throw new YamlException("Junk value `{0}` on trait node {1}"
.F(my.Value, traitName));
var info = Game.CreateObject<ITraitInfo>(traitName + "Info");
throw new YamlException($"Junk value `{my.Value}` on trait node {traitName}");
// HACK: The linter does not want to crash when a trait doesn't exist but only print an error instead
// ObjectCreator will only return null to signal us to abort here if the linter is running
var traitInstance = traitName.Split(TraitInstanceSeparator);
var info = creator.CreateObject<TraitInfo>(traitInstance[0] + "Info");
if (info == null)
return null;
try
{
if (traitInstance.Length > 1)
info.GetType().GetField(nameof(info.InstanceName)).SetValue(info, traitInstance[1]);
FieldLoader.Load(info, my);
}
catch (FieldLoader.MissingFieldsException e)
@@ -116,25 +101,34 @@ namespace OpenRA
return info;
}
public IEnumerable<ITraitInfo> TraitsInConstructOrder()
public IEnumerable<TraitInfo> TraitsInConstructOrder()
{
if (constructOrderCache != null)
return constructOrderCache;
var source = Traits.WithInterface<ITraitInfo>().Select(i => new
var source = traits.WithInterface<TraitInfo>().Select(i => new
{
Trait = i,
Type = i.GetType(),
Dependencies = PrerequisitesOf(i).ToList()
Dependencies = PrerequisitesOf(i).ToList(),
OptionalDependencies = OptionalPrerequisitesOf(i).ToList()
}).ToList();
var resolved = source.Where(s => !s.Dependencies.Any()).ToList();
var resolved = source.Where(s => s.Dependencies.Count == 0 && s.OptionalDependencies.Count == 0).ToList();
var unresolved = source.Except(resolved);
var testResolve = new Func<Type, Type, bool>((a, b) => a == b || a.IsAssignableFrom(b));
var more = unresolved.Where(u => u.Dependencies.All(d => resolved.Exists(r => testResolve(d, r.Type))));
// Re-evaluate the vars above until sorted
// This query detects which unresolved traits can be immediately resolved as all their direct dependencies are met.
var more = unresolved.Where(u =>
u.Dependencies.All(d => // To be resolvable, all dependencies must be satisfied according to the following conditions:
resolved.Exists(r => testResolve(d, r.Type)) && // There must exist a resolved trait that meets the dependency.
!unresolved.Any(u1 => testResolve(d, u1.Type))) && // All matching traits that meet this dependency must be resolved first.
u.OptionalDependencies.All(d => // To be resolvable, all optional dependencies must be satisfied according to the following condition:
!unresolved.Any(u1 => testResolve(d, u1.Type)))); // All matching traits that meet this optional dependencies must be resolved first.
// Continue resolving traits as long as possible.
// Each time we resolve some traits, this means dependencies for other traits may then be possible to satisfy in the next pass.
while (more.Any())
resolved.AddRange(more);
@@ -151,17 +145,19 @@ namespace OpenRA
foreach (var u in unresolved)
{
var deps = u.Dependencies.Where(d => !resolved.Exists(r => r.Type == d));
exceptionString += u.Type + ": { " + string.Join(", ", deps) + " }\r\n";
var optDeps = u.OptionalDependencies.Where(d => !resolved.Exists(r => r.Type == d));
var allDeps = string.Join(", ", deps.Select(o => o.ToString()).Concat(optDeps.Select(o => $"[{o}]")));
exceptionString += $"{u.Type}: {{ {allDeps} }}\r\n";
}
throw new Exception(exceptionString);
throw new YamlException(exceptionString);
}
constructOrderCache = resolved.Select(r => r.Trait).ToList();
return constructOrderCache;
}
static IEnumerable<Type> PrerequisitesOf(ITraitInfo info)
public static IEnumerable<Type> PrerequisitesOf(TraitInfo info)
{
return info
.GetType()
@@ -170,18 +166,27 @@ namespace OpenRA
.Select(t => t.GetGenericArguments()[0]);
}
public IEnumerable<Pair<string, Type>> GetInitKeys()
public static IEnumerable<Type> OptionalPrerequisitesOf(TraitInfo info)
{
var inits = Traits.WithInterface<ITraitInfo>().SelectMany(
t => t.GetType().GetInterfaces()
.Where(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(UsesInit<>))
.Select(i => i.GetGenericArguments()[0])).ToList();
return info
.GetType()
.GetInterfaces()
.Where(t => t.IsGenericType && t.GetGenericTypeDefinition() == typeof(NotBefore<>))
.Select(t => t.GetGenericArguments()[0]);
}
inits.Add(typeof(OwnerInit)); /* not exposed by a trait; this is used by the Actor itself */
public bool HasTraitInfo<T>() where T : ITraitInfoInterface { return traits.Contains<T>(); }
public T TraitInfo<T>() where T : ITraitInfoInterface { return traits.Get<T>(); }
public T TraitInfoOrDefault<T>() where T : ITraitInfoInterface { return traits.GetOrDefault<T>(); }
public IEnumerable<T> TraitInfos<T>() where T : ITraitInfoInterface { return traits.WithInterface<T>(); }
return inits.Select(
i => Pair.New(
i.Name.Replace("Init", ""), i));
public BitSet<TargetableType> GetAllTargetTypes()
{
// PERF: Avoid LINQ.
var targetTypes = default(BitSet<TargetableType>);
foreach (var targetable in TraitInfos<ITargetableInfo>())
targetTypes = targetTypes.Union(targetable.GetTargetTypes());
return targetTypes;
}
}
}

View File

@@ -1,14 +1,14 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using OpenRA.FileFormats;
using OpenRA.FileSystem;
namespace OpenRA.GameRules
@@ -18,6 +18,7 @@ namespace OpenRA.GameRules
public readonly string Filename;
public readonly string Title;
public readonly bool Hidden;
public readonly float VolumeModifier = 1f;
public int Length { get; private set; } // seconds
public bool Exists { get; private set; }
@@ -30,34 +31,34 @@ namespace OpenRA.GameRules
if (nd.ContainsKey("Hidden"))
bool.TryParse(nd["Hidden"].Value, out Hidden);
if (nd.ContainsKey("VolumeModifier"))
VolumeModifier = FieldLoader.GetValue<float>("VolumeModifier", nd["VolumeModifier"].Value);
var ext = nd.ContainsKey("Extension") ? nd["Extension"].Value : "aud";
Filename = (nd.ContainsKey("Filename") ? nd["Filename"].Value : key) + "." + ext;
if (!GlobalFileSystem.Exists(Filename))
return;
Exists = true;
using (var s = GlobalFileSystem.Open(Filename))
{
if (Filename.ToLowerInvariant().EndsWith("wav"))
Length = (int)WavLoader.WaveLength(s);
else
Length = (int)AudLoader.SoundLength(s);
}
}
public void Reload()
public void Load(IReadOnlyFileSystem fileSystem)
{
if (!GlobalFileSystem.Exists(Filename))
if (!fileSystem.TryOpen(Filename, out var stream))
return;
Exists = true;
using (var s = GlobalFileSystem.Open(Filename))
try
{
if (Filename.ToLowerInvariant().EndsWith("wav"))
Length = (int)WavLoader.WaveLength(s);
else
Length = (int)AudLoader.SoundLength(s);
Exists = true;
foreach (var loader in Game.ModData.SoundLoaders)
{
if (loader.TryParseSound(stream, out var soundFormat))
{
Length = (int)soundFormat.LengthInSeconds;
soundFormat.Dispose();
break;
}
}
}
finally
{
stream.Dispose();
}
}
}

View File

@@ -1,48 +1,289 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using OpenRA.FileSystem;
using OpenRA.GameRules;
using OpenRA.Graphics;
using OpenRA.Traits;
namespace OpenRA
{
public class Ruleset
{
public readonly IReadOnlyDictionary<string, ActorInfo> Actors;
public readonly ActorInfoDictionary Actors;
public readonly IReadOnlyDictionary<string, WeaponInfo> Weapons;
public readonly IReadOnlyDictionary<string, SoundInfo> Voices;
public readonly IReadOnlyDictionary<string, SoundInfo> Notifications;
public readonly IReadOnlyDictionary<string, MusicInfo> Music;
public readonly IReadOnlyDictionary<string, TileSet> TileSets;
public readonly IReadOnlyDictionary<string, SequenceProvider> Sequences;
public readonly ITerrainInfo TerrainInfo;
public readonly SequenceProvider Sequences;
public readonly IReadOnlyDictionary<string, MiniYamlNode> ModelSequences;
public Ruleset(
IDictionary<string, ActorInfo> actors,
IDictionary<string, WeaponInfo> weapons,
IDictionary<string, SoundInfo> voices,
IDictionary<string, SoundInfo> notifications,
IDictionary<string, MusicInfo> music,
IDictionary<string, TileSet> tileSets,
IDictionary<string, SequenceProvider> sequences)
IReadOnlyDictionary<string, ActorInfo> actors,
IReadOnlyDictionary<string, WeaponInfo> weapons,
IReadOnlyDictionary<string, SoundInfo> voices,
IReadOnlyDictionary<string, SoundInfo> notifications,
IReadOnlyDictionary<string, MusicInfo> music,
ITerrainInfo terrainInfo,
SequenceProvider sequences,
IReadOnlyDictionary<string, MiniYamlNode> modelSequences)
{
Actors = new ReadOnlyDictionary<string, ActorInfo>(actors);
Weapons = new ReadOnlyDictionary<string, WeaponInfo>(weapons);
Voices = new ReadOnlyDictionary<string, SoundInfo>(voices);
Notifications = new ReadOnlyDictionary<string, SoundInfo>(notifications);
Music = new ReadOnlyDictionary<string, MusicInfo>(music);
TileSets = new ReadOnlyDictionary<string, TileSet>(tileSets);
Sequences = new ReadOnlyDictionary<string, SequenceProvider>(sequences);
Actors = new ActorInfoDictionary(actors);
Weapons = weapons;
Voices = voices;
Notifications = notifications;
Music = music;
TerrainInfo = terrainInfo;
Sequences = sequences;
ModelSequences = modelSequences;
foreach (var a in Actors.Values)
{
foreach (var t in a.TraitInfos<IRulesetLoaded>())
{
try
{
t.RulesetLoaded(this, a);
}
catch (YamlException e)
{
throw new YamlException($"Actor type {a.Name}: {e.Message}");
}
}
}
foreach (var weapon in Weapons)
{
if (weapon.Value.Projectile is IRulesetLoaded<WeaponInfo> projectileLoaded)
{
try
{
projectileLoaded.RulesetLoaded(this, weapon.Value);
}
catch (YamlException e)
{
throw new YamlException($"Projectile type {weapon.Key}: {e.Message}");
}
}
foreach (var warhead in weapon.Value.Warheads)
{
if (warhead is IRulesetLoaded<WeaponInfo> cacher)
{
try
{
cacher.RulesetLoaded(this, weapon.Value);
}
catch (YamlException e)
{
throw new YamlException($"Weapon type {weapon.Key}: {e.Message}");
}
}
}
}
}
public IEnumerable<KeyValuePair<string, MusicInfo>> InstalledMusic { get { return Music.Where(m => m.Value.Exists); } }
static IReadOnlyDictionary<string, T> MergeOrDefault<T>(string name,
IReadOnlyFileSystem fileSystem,
IEnumerable<string> files,
MiniYaml additional,
IReadOnlyDictionary<string, T> defaults,
Func<MiniYamlNode, T> makeObject,
Func<MiniYamlNode, bool> filterNode = null)
{
if (additional == null && defaults != null)
return defaults;
IEnumerable<MiniYamlNode> yamlNodes = MiniYaml.Load(fileSystem, files, additional);
// Optionally, the caller can filter out elements from the loaded set of nodes. Default behavior is unfiltered.
if (filterNode != null)
yamlNodes = yamlNodes.Where(k => !filterNode(k));
return yamlNodes.ToDictionaryWithConflictLog(k => k.Key.ToLowerInvariant(), makeObject, "LoadFromManifest<" + name + ">");
}
public static Ruleset LoadDefaults(ModData modData)
{
var m = modData.Manifest;
var fs = modData.DefaultFileSystem;
Ruleset ruleset = null;
Action f = () =>
{
var actors = MergeOrDefault("Manifest,Rules", fs, m.Rules, null, null,
k => new ActorInfo(modData.ObjectCreator, k.Key.ToLowerInvariant(), k.Value),
filterNode: n => n.Key.StartsWith(ActorInfo.AbstractActorPrefix, StringComparison.Ordinal));
var weapons = MergeOrDefault("Manifest,Weapons", fs, m.Weapons, null, null,
k => new WeaponInfo(k.Value));
var voices = MergeOrDefault("Manifest,Voices", fs, m.Voices, null, null,
k => new SoundInfo(k.Value));
var notifications = MergeOrDefault("Manifest,Notifications", fs, m.Notifications, null, null,
k => new SoundInfo(k.Value));
var music = MergeOrDefault("Manifest,Music", fs, m.Music, null, null,
k => new MusicInfo(k.Key, k.Value));
var modelSequences = MergeOrDefault("Manifest,ModelSequences", fs, m.ModelSequences, null, null,
k => k);
// The default ruleset does not include a preferred tileset or sequence set
ruleset = new Ruleset(actors, weapons, voices, notifications, music, null, null, modelSequences);
};
if (modData.IsOnMainThread)
{
modData.HandleLoadingProgress();
var loader = new Task(f);
loader.Start();
// Animate the loadscreen while we wait
while (!loader.Wait(40))
modData.HandleLoadingProgress();
}
else
f();
return ruleset;
}
public static Ruleset LoadDefaultsForTileSet(ModData modData, string tileSet)
{
var dr = modData.DefaultRules;
var terrainInfo = modData.DefaultTerrainInfo[tileSet];
var sequences = modData.DefaultSequences[tileSet];
return new Ruleset(dr.Actors, dr.Weapons, dr.Voices, dr.Notifications, dr.Music, terrainInfo, sequences, dr.ModelSequences);
}
public static Ruleset Load(ModData modData, IReadOnlyFileSystem fileSystem, string tileSet,
MiniYaml mapRules, MiniYaml mapWeapons, MiniYaml mapVoices, MiniYaml mapNotifications,
MiniYaml mapMusic, MiniYaml mapSequences, MiniYaml mapModelSequences)
{
var m = modData.Manifest;
var dr = modData.DefaultRules;
Ruleset ruleset = null;
Action f = () =>
{
var actors = MergeOrDefault("Rules", fileSystem, m.Rules, mapRules, dr.Actors,
k => new ActorInfo(modData.ObjectCreator, k.Key.ToLowerInvariant(), k.Value),
filterNode: n => n.Key.StartsWith(ActorInfo.AbstractActorPrefix, StringComparison.Ordinal));
var weapons = MergeOrDefault("Weapons", fileSystem, m.Weapons, mapWeapons, dr.Weapons,
k => new WeaponInfo(k.Value));
var voices = MergeOrDefault("Voices", fileSystem, m.Voices, mapVoices, dr.Voices,
k => new SoundInfo(k.Value));
var notifications = MergeOrDefault("Notifications", fileSystem, m.Notifications, mapNotifications, dr.Notifications,
k => new SoundInfo(k.Value));
var music = MergeOrDefault("Music", fileSystem, m.Music, mapMusic, dr.Music,
k => new MusicInfo(k.Key, k.Value));
// TODO: Add support for merging custom terrain modifications
var terrainInfo = modData.DefaultTerrainInfo[tileSet];
// TODO: Top-level dictionary should be moved into the Ruleset instead of in its own object
var sequences = mapSequences == null ? modData.DefaultSequences[tileSet] :
new SequenceProvider(fileSystem, modData, tileSet, mapSequences);
var modelSequences = dr.ModelSequences;
if (mapModelSequences != null)
modelSequences = MergeOrDefault("ModelSequences", fileSystem, m.ModelSequences, mapModelSequences, dr.ModelSequences,
k => k);
ruleset = new Ruleset(actors, weapons, voices, notifications, music, terrainInfo, sequences, modelSequences);
};
if (modData.IsOnMainThread)
{
modData.HandleLoadingProgress();
var loader = new Task(f);
loader.Start();
// Animate the loadscreen while we wait
while (!loader.Wait(40))
modData.HandleLoadingProgress();
}
else
f();
return ruleset;
}
static bool AnyCustomYaml(MiniYaml yaml)
{
return yaml != null && (yaml.Value != null || yaml.Nodes.Count > 0);
}
static bool AnyFlaggedTraits(ModData modData, List<MiniYamlNode> actors)
{
foreach (var actorNode in actors)
{
foreach (var traitNode in actorNode.Value.Nodes)
{
try
{
var traitName = traitNode.Key.Split('@')[0];
var traitType = modData.ObjectCreator.FindType(traitName + "Info");
if (traitType != null && traitType.GetInterface(nameof(ILobbyCustomRulesIgnore)) == null)
return true;
}
catch (Exception ex)
{
Log.Write("debug", "Error in AnyFlaggedTraits\r\n" + ex.ToString());
}
}
}
return false;
}
public static bool DefinesUnsafeCustomRules(ModData modData, IReadOnlyFileSystem fileSystem,
MiniYaml mapRules, MiniYaml mapWeapons, MiniYaml mapVoices, MiniYaml mapNotifications, MiniYaml mapSequences)
{
// Maps that define any weapon, voice, notification, or sequence overrides are always flagged
if (AnyCustomYaml(mapWeapons) || AnyCustomYaml(mapVoices) || AnyCustomYaml(mapNotifications) || AnyCustomYaml(mapSequences))
return true;
// Any trait overrides that aren't explicitly whitelisted are flagged
if (mapRules != null)
{
if (AnyFlaggedTraits(modData, mapRules.Nodes))
return true;
if (mapRules.Value != null)
{
var mapFiles = FieldLoader.GetValue<string[]>("value", mapRules.Value);
foreach (var f in mapFiles)
if (AnyFlaggedTraits(modData, MiniYaml.FromStream(fileSystem.Open(f), f)))
return true;
}
}
return false;
}
}
}

View File

@@ -1,159 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Linq;
using OpenRA.GameRules;
using OpenRA.Graphics;
using OpenRA.Support;
namespace OpenRA
{
public sealed class RulesetCache : IDisposable
{
static readonly List<MiniYamlNode> NoMapRules = new List<MiniYamlNode>();
readonly ModData modData;
readonly Dictionary<string, ActorInfo> actorCache = new Dictionary<string, ActorInfo>();
readonly Dictionary<string, WeaponInfo> weaponCache = new Dictionary<string, WeaponInfo>();
readonly Dictionary<string, SoundInfo> voiceCache = new Dictionary<string, SoundInfo>();
readonly Dictionary<string, SoundInfo> notificationCache = new Dictionary<string, SoundInfo>();
readonly Dictionary<string, MusicInfo> musicCache = new Dictionary<string, MusicInfo>();
readonly Dictionary<string, TileSet> tileSetCache = new Dictionary<string, TileSet>();
readonly Dictionary<string, SequenceCache> sequenceCaches = new Dictionary<string, SequenceCache>();
public event EventHandler LoadingProgress;
void RaiseProgress()
{
if (LoadingProgress != null)
LoadingProgress(this, new EventArgs());
}
public RulesetCache(ModData modData)
{
this.modData = modData;
}
/// <summary>
/// Cache and return the Ruleset for a given map.
/// If a map isn't specified then return the default mod Ruleset.
/// </summary>
public Ruleset Load(Map map = null)
{
var m = modData.Manifest;
Dictionary<string, ActorInfo> actors;
Dictionary<string, WeaponInfo> weapons;
Dictionary<string, SoundInfo> voices;
Dictionary<string, SoundInfo> notifications;
Dictionary<string, MusicInfo> music;
Dictionary<string, TileSet> tileSets;
using (new PerfTimer("Actors"))
actors = LoadYamlRules(actorCache, m.Rules,
map != null ? map.RuleDefinitions : NoMapRules,
(k, y) => new ActorInfo(k.Key.ToLowerInvariant(), k.Value, y));
using (new PerfTimer("Weapons"))
weapons = LoadYamlRules(weaponCache, m.Weapons,
map != null ? map.WeaponDefinitions : NoMapRules,
(k, _) => new WeaponInfo(k.Key.ToLowerInvariant(), k.Value));
using (new PerfTimer("Voices"))
voices = LoadYamlRules(voiceCache, m.Voices,
map != null ? map.VoiceDefinitions : NoMapRules,
(k, _) => new SoundInfo(k.Value));
using (new PerfTimer("Notifications"))
notifications = LoadYamlRules(notificationCache, m.Notifications,
map != null ? map.NotificationDefinitions : NoMapRules,
(k, _) => new SoundInfo(k.Value));
using (new PerfTimer("Music"))
music = LoadYamlRules(musicCache, m.Music,
NoMapRules,
(k, _) => new MusicInfo(k.Key, k.Value));
using (new PerfTimer("TileSets"))
tileSets = LoadTileSets(tileSetCache, sequenceCaches, m.TileSets);
var sequences = sequenceCaches.ToDictionary(kvp => kvp.Key, kvp => new SequenceProvider(kvp.Value, map));
return new Ruleset(actors, weapons, voices, notifications, music, tileSets, sequences);
}
Dictionary<string, T> LoadYamlRules<T>(
Dictionary<string, T> itemCache,
string[] files, List<MiniYamlNode> nodes,
Func<MiniYamlNode, Dictionary<string, MiniYaml>, T> f)
{
RaiseProgress();
var inputKey = string.Concat(string.Join("|", files), "|", nodes.WriteToString());
var mergedNodes = files
.Select(s => MiniYaml.FromFile(s))
.Aggregate(nodes, MiniYaml.MergeLiberal);
Func<MiniYamlNode, Dictionary<string, MiniYaml>, T> wrap = (wkv, wyy) =>
{
var key = inputKey + wkv.Value.ToLines(wkv.Key).JoinWith("|");
T t;
if (itemCache.TryGetValue(key, out t))
return t;
t = f(wkv, wyy);
itemCache.Add(key, t);
RaiseProgress();
return t;
};
var yy = mergedNodes.ToDictionary(x => x.Key, x => x.Value);
var itemSet = mergedNodes.ToDictionaryWithConflictLog(kv => kv.Key.ToLowerInvariant(), kv => wrap(kv, yy), "LoadYamlRules", null, null);
RaiseProgress();
return itemSet;
}
Dictionary<string, TileSet> LoadTileSets(Dictionary<string, TileSet> itemCache, Dictionary<string, SequenceCache> sequenceCaches, string[] files)
{
var items = new Dictionary<string, TileSet>();
foreach (var file in files)
{
TileSet t;
if (itemCache.TryGetValue(file, out t))
items.Add(t.Id, t);
else
{
t = new TileSet(modData, file);
itemCache.Add(file, t);
// every time we load a tile set, we create a sequence cache for it
var sc = new SequenceCache(modData, t);
sequenceCaches.Add(t.Id, sc);
items.Add(t.Id, t);
}
}
return items;
}
public void Dispose()
{
foreach (var cache in sequenceCaches.Values)
cache.Dispose();
sequenceCaches.Clear();
}
}
}

View File

@@ -1,10 +1,11 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
@@ -16,22 +17,14 @@ namespace OpenRA.GameRules
{
public class SoundInfo
{
[FieldLoader.Ignore] public readonly Dictionary<string, string[]> Variants;
[FieldLoader.Ignore] public readonly Dictionary<string, string[]> Prefixes;
[FieldLoader.Ignore] public readonly Dictionary<string, string[]> Voices;
[FieldLoader.Ignore] public readonly Dictionary<string, string[]> Notifications;
public readonly Dictionary<string, string[]> Variants = new Dictionary<string, string[]>();
public readonly Dictionary<string, string[]> Prefixes = new Dictionary<string, string[]>();
public readonly Dictionary<string, string[]> Voices = new Dictionary<string, string[]>();
public readonly Dictionary<string, string[]> Notifications = new Dictionary<string, string[]>();
public readonly string DefaultVariant = ".aud";
public readonly string DefaultPrefix = "";
public readonly string[] DisableVariants = { };
public readonly string[] DisablePrefixes = { };
static Dictionary<string, string[]> Load(MiniYaml y, string name)
{
var nd = y.ToDictionary();
return nd.ContainsKey(name)
? nd[name].ToDictionary(my => FieldLoader.GetValue<string[]>("(value)", my.Value))
: new Dictionary<string, string[]>();
}
public readonly HashSet<string> DisableVariants = new HashSet<string>();
public readonly HashSet<string> DisablePrefixes = new HashSet<string>();
public readonly Lazy<Dictionary<string, SoundPool>> VoicePools;
public readonly Lazy<Dictionary<string, SoundPool>> NotificationsPools;
@@ -39,23 +32,49 @@ namespace OpenRA.GameRules
public SoundInfo(MiniYaml y)
{
FieldLoader.Load(this, y);
Variants = Load(y, "Variants");
Prefixes = Load(y, "Prefixes");
Voices = Load(y, "Voices");
Notifications = Load(y, "Notifications");
VoicePools = Exts.Lazy(() => Voices.ToDictionary(a => a.Key, a => new SoundPool(a.Value)));
NotificationsPools = Exts.Lazy(() => Notifications.ToDictionary(a => a.Key, a => new SoundPool(a.Value)));
VoicePools = Exts.Lazy(() => Voices.ToDictionary(a => a.Key, a => new SoundPool(1f, SoundPool.DefaultInterruptType, a.Value)));
NotificationsPools = Exts.Lazy(() => ParseSoundPool(y, "Notifications"));
}
static Dictionary<string, SoundPool> ParseSoundPool(MiniYaml y, string key)
{
var ret = new Dictionary<string, SoundPool>();
var classifiction = y.Nodes.First(x => x.Key == key);
foreach (var t in classifiction.Value.Nodes)
{
var volumeModifier = 1f;
var volumeModifierNode = t.Value.Nodes.FirstOrDefault(x => x.Key == nameof(SoundPool.VolumeModifier));
if (volumeModifierNode != null)
volumeModifier = FieldLoader.GetValue<float>(volumeModifierNode.Key, volumeModifierNode.Value.Value);
var interruptType = SoundPool.DefaultInterruptType;
var interruptTypeNode = t.Value.Nodes.FirstOrDefault(x => x.Key == nameof(SoundPool.InterruptType));
if (interruptTypeNode != null)
interruptType = FieldLoader.GetValue<SoundPool.InterruptType>(interruptTypeNode.Key, interruptTypeNode.Value.Value);
var names = FieldLoader.GetValue<string[]>(t.Key, t.Value.Value);
var sp = new SoundPool(volumeModifier, interruptType, names);
ret.Add(t.Key, sp);
}
return ret;
}
}
public class SoundPool
{
public enum InterruptType { DoNotPlay, Interrupt, Overlap }
public const InterruptType DefaultInterruptType = InterruptType.DoNotPlay;
public readonly float VolumeModifier;
public readonly InterruptType Type;
readonly string[] clips;
readonly List<string> liveclips = new List<string>();
public SoundPool(params string[] clips)
public SoundPool(float volumeModifier, InterruptType interruptType, params string[] clips)
{
VolumeModifier = volumeModifier;
Type = interruptType;
this.clips = clips;
}
@@ -64,8 +83,9 @@ namespace OpenRA.GameRules
if (liveclips.Count == 0)
liveclips.AddRange(clips);
// Avoid crashing if there's no clips at all
if (liveclips.Count == 0)
return null; /* avoid crashing if there's no clips at all */
return null;
var i = Game.CosmeticRandom.Next(liveclips.Count);
var s = liveclips[i];

View File

@@ -1,10 +1,11 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
@@ -12,6 +13,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using OpenRA.Effects;
using OpenRA.Primitives;
using OpenRA.Traits;
namespace OpenRA.GameRules
@@ -21,65 +23,132 @@ namespace OpenRA.GameRules
public WeaponInfo Weapon;
public int[] DamageModifiers;
public int[] InaccuracyModifiers;
public int Facing;
public int[] RangeModifiers;
public WAngle Facing;
public Func<WAngle> CurrentMuzzleFacing;
public WPos Source;
public Func<WPos> CurrentSource;
public Actor SourceActor;
public WPos PassiveTarget;
public Target GuidedTarget;
}
public interface IProjectileInfo { IEffect Create(ProjectileArgs args); }
public class WarheadArgs
{
public WeaponInfo Weapon;
public int[] DamageModifiers = Array.Empty<int>();
public WPos? Source;
public WRot ImpactOrientation;
public WPos ImpactPosition;
public Actor SourceActor;
public Target WeaponTarget;
public WarheadArgs(ProjectileArgs args)
{
Weapon = args.Weapon;
DamageModifiers = args.DamageModifiers;
ImpactPosition = args.PassiveTarget;
Source = args.Source;
SourceActor = args.SourceActor;
WeaponTarget = args.GuidedTarget;
}
// For places that only want to update some of the fields (usually DamageModifiers)
public WarheadArgs(WarheadArgs args)
{
Weapon = args.Weapon;
DamageModifiers = args.DamageModifiers;
Source = args.Source;
SourceActor = args.SourceActor;
WeaponTarget = args.WeaponTarget;
}
// Default empty constructor for callers that want to initialize fields themselves
public WarheadArgs() { }
}
public interface IProjectile : IEffect { }
public interface IProjectileInfo { IProjectile Create(ProjectileArgs args); }
public sealed class WeaponInfo
{
[Desc("The maximum range the weapon can fire.")]
public readonly WDist Range = WDist.Zero;
[Desc("The sound played when the weapon is fired.")]
[Desc("First burst is aimed at this offset relative to target position.")]
public readonly WVec FirstBurstTargetOffset = WVec.Zero;
[Desc("Each burst after the first lands by this offset away from the previous burst.")]
public readonly WVec FollowingBurstTargetOffset = WVec.Zero;
[Desc("The sound played each time the weapon is fired.")]
public readonly string[] Report = null;
[Desc("Sound played only on first burst in a salvo.")]
public readonly string[] StartBurstReport = null;
[Desc("The sound played when the weapon is reloaded.")]
public readonly string[] AfterFireSound = null;
[Desc("Delay in ticks to play reloading sound.")]
public readonly int AfterFireSoundDelay = 0;
[Desc("Delay in ticks between reloading ammo magazines.")]
public readonly int ReloadDelay = 1;
[Desc("Number of shots in a single ammo magazine.")]
public readonly int Burst = 1;
public readonly bool Charges = false;
[Desc("What types of targets are affected.")]
public readonly string[] ValidTargets = { "Ground", "Water" };
public readonly BitSet<TargetableType> ValidTargets = new BitSet<TargetableType>("Ground", "Water");
[Desc("What types of targets are unaffected.", "Overrules ValidTargets.")]
public readonly string[] InvalidTargets = { };
public readonly BitSet<TargetableType> InvalidTargets;
[Desc("Delay in ticks between firing shots from the same ammo magazine.")]
public readonly int BurstDelay = 5;
static readonly BitSet<TargetableType> TargetTypeAir = new BitSet<TargetableType>("Air");
[Desc("If weapon is not directly targeting an actor and targeted position is above this altitude,",
"the weapon will ignore terrain target types and only check TargetTypeAir for validity.")]
public readonly WDist AirThreshold = new WDist(128);
[Desc("Delay in ticks between firing shots from the same ammo magazine. If one entry, it will be used for all bursts.",
"If multiple entries, their number needs to match Burst - 1.")]
public readonly int[] BurstDelays = { 5 };
[Desc("The minimum range the weapon can fire.")]
public readonly WDist MinRange = WDist.Zero;
[FieldLoader.LoadUsing("LoadProjectile")]
[Desc("Does this weapon aim at the target's center regardless of other targetable offsets?")]
public readonly bool TargetActorCenter = false;
[FieldLoader.LoadUsing(nameof(LoadProjectile))]
public readonly IProjectileInfo Projectile;
[FieldLoader.LoadUsing("LoadWarheads")]
[FieldLoader.LoadUsing(nameof(LoadWarheads))]
public readonly List<IWarhead> Warheads = new List<IWarhead>();
readonly HashSet<string> validTargetSet;
readonly HashSet<string> invalidTargetSet;
/// <summary>
/// This constructor is used solely for documentation generation!
/// </summary>
public WeaponInfo() { }
public WeaponInfo(string name, MiniYaml content)
public WeaponInfo(MiniYaml content)
{
// Resolve any weapon-level yaml inheritance or removals
// HACK: The "Defaults" sequence syntax prevents us from doing this generally during yaml parsing
content.Nodes = MiniYaml.Merge(new[] { content.Nodes });
FieldLoader.Load(this, content);
validTargetSet = new HashSet<string>(ValidTargets);
invalidTargetSet = new HashSet<string>(InvalidTargets);
}
static object LoadProjectile(MiniYaml yaml)
{
MiniYaml proj;
if (!yaml.ToDictionary().TryGetValue("Projectile", out proj))
if (!yaml.ToDictionary().TryGetValue("Projectile", out var proj))
return null;
var ret = Game.CreateObject<IProjectileInfo>(proj.Value + "Info");
if (ret == null)
return null;
FieldLoader.Load(ret, proj);
return ret;
}
@@ -90,6 +159,9 @@ namespace OpenRA.GameRules
foreach (var node in yaml.Nodes.Where(n => n.Key.StartsWith("Warhead")))
{
var ret = Game.CreateObject<IWarhead>(node.Value.Value + "Warhead");
if (ret == null)
continue;
FieldLoader.Load(ret, node.Value);
retList.Add(ret);
}
@@ -97,13 +169,13 @@ namespace OpenRA.GameRules
return retList;
}
public bool IsValidTarget(IEnumerable<string> targetTypes)
public bool IsValidTarget(BitSet<TargetableType> targetTypes)
{
return validTargetSet.Overlaps(targetTypes) && !invalidTargetSet.Overlaps(targetTypes);
return ValidTargets.Overlaps(targetTypes) && !InvalidTargets.Overlaps(targetTypes);
}
/// <summary>Checks if the weapon is valid against (can target) the target.</summary>
public bool IsValidAgainst(Target target, World world, Actor firedBy)
public bool IsValidAgainst(in Target target, World world, Actor firedBy)
{
if (target.Type == TargetType.Actor)
return IsValidAgainst(target.Actor, firedBy);
@@ -113,6 +185,10 @@ namespace OpenRA.GameRules
if (target.Type == TargetType.Terrain)
{
var dat = world.Map.DistanceAboveTerrain(target.CenterPosition);
if (dat > AirThreshold)
return IsValidTarget(TargetTypeAir);
var cell = world.Map.CellContaining(target.CenterPosition);
if (!world.Map.Contains(cell))
return false;
@@ -130,21 +206,23 @@ namespace OpenRA.GameRules
/// <summary>Checks if the weapon is valid against (can target) the actor.</summary>
public bool IsValidAgainst(Actor victim, Actor firedBy)
{
var targetable = victim.TraitOrDefault<ITargetable>();
if (targetable == null || !IsValidTarget(targetable.TargetTypes))
var targetTypes = victim.GetEnabledTargetTypes();
if (!IsValidTarget(targetTypes))
return false;
if (!Warheads.Any(w => w.IsValidAgainst(victim, firedBy)))
return false;
// PERF: Avoid LINQ.
foreach (var warhead in Warheads)
if (warhead.IsValidAgainst(victim, firedBy))
return true;
return true;
return false;
}
/// <summary>Checks if the weapon is valid against (can target) the frozen actor.</summary>
public bool IsValidAgainst(FrozenActor victim, Actor firedBy)
{
var targetable = victim.Info.Traits.GetOrDefault<ITargetableInfo>();
if (targetable == null || !IsValidTarget(targetable.GetTargetTypes()))
if (!IsValidTarget(victim.TargetTypes))
return false;
if (!Warheads.Any(w => w.IsValidAgainst(victim, firedBy)))
@@ -154,18 +232,37 @@ namespace OpenRA.GameRules
}
/// <summary>Applies all the weapon's warheads to the target.</summary>
public void Impact(Target target, Actor firedBy, IEnumerable<int> damageModifiers)
public void Impact(in Target target, WarheadArgs args)
{
var world = args.SourceActor.World;
foreach (var warhead in Warheads)
{
var wh = warhead; // force the closure to bind to the current warhead
Action a = () => wh.DoImpact(target, firedBy, damageModifiers);
if (wh.Delay > 0)
firedBy.World.AddFrameEndTask(w => w.Add(new DelayedAction(wh.Delay, a)));
if (warhead.Delay > 0)
{
// Lambdas can't use 'in' variables, so capture a copy for later
var delayedTarget = target;
world.AddFrameEndTask(w => w.Add(new DelayedImpact(warhead.Delay, warhead, delayedTarget, args)));
}
else
a();
warhead.DoImpact(target, args);
}
}
/// <summary>Applies all the weapon's warheads to the target. Only use for projectile-less, special-case impacts.</summary>
public void Impact(in Target target, Actor firedBy)
{
// The impact will happen immediately at target.CenterPosition.
var args = new WarheadArgs
{
Weapon = this,
SourceActor = firedBy,
WeaponTarget = target
};
if (firedBy.OccupiesSpace != null)
args.Source = firedBy.CenterPosition;
Impact(target, args);
}
}
}

60
OpenRA.Game/GameSpeed.cs Normal file
View File

@@ -0,0 +1,60 @@
#region Copyright & License Information
/*
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System.Collections.Generic;
using System.Linq;
namespace OpenRA
{
public class GameSpeed
{
[FieldLoader.Require]
public readonly string Name;
[FieldLoader.Require]
public readonly int Timestep;
[FieldLoader.Require]
public readonly int OrderLatency;
}
public class GameSpeeds : IGlobalModData
{
[FieldLoader.Require]
public readonly string DefaultSpeed;
[FieldLoader.LoadUsing(nameof(LoadSpeeds))]
public readonly Dictionary<string, GameSpeed> Speeds;
static object LoadSpeeds(MiniYaml y)
{
var ret = new Dictionary<string, GameSpeed>();
var speedsNode = y.Nodes.FirstOrDefault(n => n.Key == "Speeds");
if (speedsNode == null)
throw new YamlException("Error parsing GameSpeeds: Missing Speeds node!");
foreach (var node in speedsNode.Value.Nodes)
{
try
{
ret.Add(node.Key, FieldLoader.Load<GameSpeed>(node.Value));
}
catch (FieldLoader.MissingFieldsException e)
{
var label = e.Missing.Length > 1 ? "Required properties missing" : "Required property missing";
throw new YamlException($"Error parsing GameSpeed {node.Key}: {label}: {e.Missing.JoinWith(", ")}");
}
}
return ret;
}
}
}

View File

@@ -1,74 +1,111 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Linq;
using OpenRA.Primitives;
using OpenRA.Support;
namespace OpenRA.Graphics
{
public class Animation
{
readonly int defaultTick = 40; // 25 fps == 40 ms
public ISpriteSequence CurrentSequence { get; private set; }
public bool IsDecoration = false;
public Func<bool> Paused;
readonly Func<int> facingFunc;
int frame = 0;
bool backwards = false;
string name;
bool tickAlways;
public string Name { get { return name; } }
public string Name { get; private set; }
public bool IsDecoration { get; set; }
readonly SequenceProvider sequenceProvider;
readonly Func<WAngle> facingFunc;
readonly Func<bool> paused;
int frame;
bool backwards;
bool tickAlways;
int timeUntilNextFrame;
Action tickFunc = () => { };
public Animation(World world, string name)
: this(world, name, () => 0) { }
: this(world, name, () => WAngle.Zero) { }
public Animation(World world, string name, Func<int> facingFunc)
: this(world.Map.SequenceProvider, name, facingFunc) { }
public Animation(World world, string name, Func<WAngle> facingFunc)
: this(world, name, facingFunc, null) { }
public Animation(SequenceProvider sequenceProvider, string name, Func<int> facingFunc)
public Animation(World world, string name, Func<bool> paused)
: this(world, name, () => WAngle.Zero, paused) { }
public Animation(World world, string name, Func<WAngle> facingFunc, Func<bool> paused)
{
this.sequenceProvider = sequenceProvider;
this.name = name.ToLowerInvariant();
this.tickFunc = () => { };
sequenceProvider = world.Map.Rules.Sequences;
Name = name.ToLowerInvariant();
this.facingFunc = facingFunc;
this.paused = paused;
}
public int CurrentFrame { get { return backwards ? CurrentSequence.Start + CurrentSequence.Length - frame - 1 : frame; } }
public Sprite Image { get { return CurrentSequence.GetSprite(CurrentFrame, facingFunc()); } }
public int CurrentFrame => backwards ? CurrentSequence.Length - frame - 1 : frame;
public IEnumerable<IRenderable> Render(WPos pos, WVec offset, int zOffset, PaletteReference palette, float scale)
public Sprite Image => CurrentSequence.GetSprite(CurrentFrame, facingFunc());
public IRenderable[] Render(WPos pos, in WVec offset, int zOffset, PaletteReference palette)
{
var imageRenderable = new SpriteRenderable(Image, pos, offset, CurrentSequence.ZOffset + zOffset, palette, scale, IsDecoration);
var tintModifiers = CurrentSequence.IgnoreWorldTint ? TintModifiers.IgnoreWorldTint : TintModifiers.None;
var alpha = CurrentSequence.GetAlpha(CurrentFrame);
var (image, rotation) = CurrentSequence.GetSpriteWithRotation(CurrentFrame, facingFunc());
var imageRenderable = new SpriteRenderable(image, pos, offset, CurrentSequence.ZOffset + zOffset, palette, CurrentSequence.Scale, alpha, float3.Ones, tintModifiers, IsDecoration,
rotation);
if (CurrentSequence.ShadowStart >= 0)
{
var shadow = CurrentSequence.GetShadow(CurrentFrame, facingFunc());
var shadowRenderable = new SpriteRenderable(shadow, pos, offset, CurrentSequence.ShadowZOffset + zOffset, palette, scale, true);
var shadowRenderable = new SpriteRenderable(shadow, pos, offset, CurrentSequence.ShadowZOffset + zOffset, palette, CurrentSequence.Scale, 1f, float3.Ones, tintModifiers,
true, rotation);
return new IRenderable[] { shadowRenderable, imageRenderable };
}
return new IRenderable[] { imageRenderable };
}
public IEnumerable<IRenderable> Render(WPos pos, PaletteReference palette)
public IRenderable[] RenderUI(WorldRenderer wr, int2 pos, in WVec offset, int zOffset, PaletteReference palette, float scale = 1f, float rotation = 0f)
{
return Render(pos, WVec.Zero, 0, palette, 1f);
scale *= CurrentSequence.Scale;
var screenOffset = (scale * wr.ScreenVectorComponents(offset)).XY.ToInt2();
var imagePos = pos + screenOffset - new int2((int)(scale * Image.Size.X / 2), (int)(scale * Image.Size.Y / 2));
var alpha = CurrentSequence.GetAlpha(CurrentFrame);
var imageRenderable = new UISpriteRenderable(Image, WPos.Zero + offset, imagePos, CurrentSequence.ZOffset + zOffset, palette, scale, alpha, rotation);
if (CurrentSequence.ShadowStart >= 0)
{
var shadow = CurrentSequence.GetShadow(CurrentFrame, facingFunc());
var shadowPos = pos - new int2((int)(scale * shadow.Size.X / 2), (int)(scale * shadow.Size.Y / 2));
var shadowRenderable = new UISpriteRenderable(shadow, WPos.Zero + offset, shadowPos, CurrentSequence.ShadowZOffset + zOffset, palette, scale, 1f, rotation);
return new IRenderable[] { shadowRenderable, imageRenderable };
}
return new IRenderable[] { imageRenderable };
}
public Rectangle ScreenBounds(WorldRenderer wr, WPos pos, in WVec offset)
{
var scale = CurrentSequence.Scale;
var xy = wr.ScreenPxPosition(pos) + wr.ScreenPxOffset(offset);
var cb = CurrentSequence.Bounds;
return Rectangle.FromLTRB(
xy.X + (int)(cb.Left * scale),
xy.Y + (int)(cb.Top * scale),
xy.X + (int)(cb.Right * scale),
xy.Y + (int)(cb.Bottom * scale));
}
public IRenderable[] Render(WPos pos, PaletteReference palette)
{
return Render(pos, WVec.Zero, 0, palette);
}
public void Play(string sequenceName)
@@ -76,12 +113,23 @@ namespace OpenRA.Graphics
PlayThen(sequenceName, null);
}
int CurrentSequenceTickOrDefault()
{
const int DefaultTick = 40; // 25 fps == 40 ms
return CurrentSequence?.Tick ?? DefaultTick;
}
void PlaySequence(string sequenceName)
{
CurrentSequence = GetSequence(sequenceName);
timeUntilNextFrame = CurrentSequenceTickOrDefault();
}
public void PlayRepeating(string sequenceName)
{
backwards = false;
tickAlways = false;
CurrentSequence = sequenceProvider.GetSequence(name, sequenceName);
timeUntilNextFrame = CurrentSequence != null ? CurrentSequence.Tick : defaultTick;
PlaySequence(sequenceName);
frame = 0;
tickFunc = () =>
@@ -97,9 +145,8 @@ namespace OpenRA.Graphics
if (!HasSequence(sequenceName))
return false;
CurrentSequence = sequenceProvider.GetSequence(name, sequenceName);
var tick = CurrentSequence != null ? CurrentSequence.Tick : defaultTick;
timeUntilNextFrame = Math.Min(tick, timeUntilNextFrame);
CurrentSequence = GetSequence(sequenceName);
timeUntilNextFrame = Math.Min(CurrentSequenceTickOrDefault(), timeUntilNextFrame);
frame %= CurrentSequence.Length;
return true;
}
@@ -108,8 +155,7 @@ namespace OpenRA.Graphics
{
backwards = false;
tickAlways = false;
CurrentSequence = sequenceProvider.GetSequence(name, sequenceName);
timeUntilNextFrame = CurrentSequence != null ? CurrentSequence.Tick : defaultTick;
PlaySequence(sequenceName);
frame = 0;
tickFunc = () =>
@@ -119,7 +165,7 @@ namespace OpenRA.Graphics
{
frame = CurrentSequence.Length - 1;
tickFunc = () => { };
if (after != null) after();
after?.Invoke();
}
};
}
@@ -134,8 +180,7 @@ namespace OpenRA.Graphics
{
backwards = false;
tickAlways = true;
CurrentSequence = sequenceProvider.GetSequence(name, sequenceName);
timeUntilNextFrame = CurrentSequence != null ? CurrentSequence.Tick : defaultTick;
PlaySequence(sequenceName);
frame = func();
tickFunc = () => frame = func();
@@ -144,8 +189,7 @@ namespace OpenRA.Graphics
public void PlayFetchDirection(string sequenceName, Func<int> direction)
{
tickAlways = false;
CurrentSequence = sequenceProvider.GetSequence(name, sequenceName);
timeUntilNextFrame = CurrentSequence != null ? CurrentSequence.Tick : defaultTick;
PlaySequence(sequenceName);
frame = 0;
tickFunc = () =>
@@ -159,17 +203,12 @@ namespace OpenRA.Graphics
};
}
int timeUntilNextFrame;
Action tickFunc;
public void Tick()
{
if (Paused == null || !Paused())
if (paused == null || !paused())
Tick(40); // tick one frame
}
public bool HasSequence(string seq) { return sequenceProvider.HasSequence(name, seq); }
public void Tick(int t)
{
if (tickAlways)
@@ -180,7 +219,7 @@ namespace OpenRA.Graphics
while (timeUntilNextFrame <= 0)
{
tickFunc();
timeUntilNextFrame += CurrentSequence != null ? CurrentSequence.Tick : defaultTick;
timeUntilNextFrame += CurrentSequenceTickOrDefault();
}
}
}
@@ -189,17 +228,19 @@ namespace OpenRA.Graphics
{
newImage = newImage.ToLowerInvariant();
if (name != newImage)
if (Name != newImage)
{
name = newImage.ToLowerInvariant();
Name = newImage;
if (!ReplaceAnim(CurrentSequence.Name))
ReplaceAnim(newAnimIfMissing);
}
}
public bool HasSequence(string seq) { return sequenceProvider.HasSequence(Name, seq); }
public ISpriteSequence GetSequence(string sequenceName)
{
return sequenceProvider.GetSequence(name, sequenceName);
return sequenceProvider.GetSequence(Name, sequenceName);
}
public string GetRandomExistingSequence(string[] sequences, MersenneTwister random)

View File

@@ -1,15 +1,16 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using OpenRA.Primitives;
namespace OpenRA.Graphics
{
@@ -18,36 +19,42 @@ namespace OpenRA.Graphics
public readonly Animation Animation;
public readonly Func<WVec> OffsetFunc;
public readonly Func<bool> DisableFunc;
public readonly Func<bool> Paused;
public readonly Func<WPos, int> ZOffset;
public AnimationWithOffset(Animation a, Func<WVec> offset, Func<bool> disable)
: this(a, offset, disable, () => false, null) { }
: this(a, offset, disable, null) { }
public AnimationWithOffset(Animation a, Func<WVec> offset, Func<bool> disable, int zOffset)
: this(a, offset, disable, () => false, _ => zOffset) { }
: this(a, offset, disable, _ => zOffset) { }
public AnimationWithOffset(Animation a, Func<WVec> offset, Func<bool> disable, Func<bool> pause, Func<WPos, int> zOffset)
public AnimationWithOffset(Animation a, Func<WVec> offset, Func<bool> disable, Func<WPos, int> zOffset)
{
this.Animation = a;
this.Animation.Paused = pause;
this.OffsetFunc = offset;
this.DisableFunc = disable;
this.ZOffset = zOffset;
Animation = a;
OffsetFunc = offset;
DisableFunc = disable;
ZOffset = zOffset;
}
public IEnumerable<IRenderable> Render(Actor self, WorldRenderer wr, PaletteReference pal, float scale)
public IRenderable[] Render(Actor self, PaletteReference pal)
{
var center = self.CenterPosition;
var offset = OffsetFunc != null ? OffsetFunc() : WVec.Zero;
var offset = OffsetFunc?.Invoke() ?? WVec.Zero;
var z = (ZOffset != null) ? ZOffset(center + offset) : 0;
return Animation.Render(center, offset, z, pal, scale);
var z = ZOffset?.Invoke(center + offset) ?? 0;
return Animation.Render(center, offset, z, pal);
}
public Rectangle ScreenBounds(Actor self, WorldRenderer wr)
{
var center = self.CenterPosition;
var offset = OffsetFunc?.Invoke() ?? WVec.Zero;
return Animation.ScreenBounds(wr, center, offset);
}
public static implicit operator AnimationWithOffset(Animation a)
{
return new AnimationWithOffset(a, null, null, null, null);
return new AnimationWithOffset(a, null, null, null);
}
}
}
}

View File

@@ -1,126 +1,300 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Linq;
using OpenRA.FileSystem;
using OpenRA.Primitives;
namespace OpenRA.Graphics
{
[Flags]
public enum PanelSides
{
Left = 1,
Top = 2,
Right = 4,
Bottom = 8,
Center = 16,
Edges = Left | Top | Right | Bottom,
All = Edges | Center,
}
public static class PanelSidesExts
{
public static bool HasSide(this PanelSides self, PanelSides m)
{
// PERF: Enum.HasFlag is slower and requires allocations.
return (self & m) == m;
}
}
public static class ChromeProvider
{
struct Collection
public class Collection
{
public string Src;
public Dictionary<string, MappedImage> Regions;
public readonly string Image = null;
public readonly string Image2x = null;
public readonly string Image3x = null;
public readonly int[] PanelRegion = null;
public readonly PanelSides PanelSides = PanelSides.All;
public readonly Dictionary<string, Rectangle> Regions = new Dictionary<string, Rectangle>();
}
public static IReadOnlyDictionary<string, Collection> Collections => collections;
static Dictionary<string, Collection> collections;
static Dictionary<string, Sheet> cachedSheets;
static Dictionary<string, (Sheet Sheet, int Density)> cachedSheets;
static Dictionary<string, Dictionary<string, Sprite>> cachedSprites;
static Dictionary<string, Sprite[]> cachedPanelSprites;
static Dictionary<Collection, (Sheet Sheet, int)> cachedCollectionSheets;
public static void Initialize(IEnumerable<string> chromeFiles)
static IReadOnlyFileSystem fileSystem;
static float dpiScale = 1;
public static void Initialize(ModData modData)
{
Deinitialize();
collections = new Dictionary<string, Collection>();
cachedSheets = new Dictionary<string, Sheet>();
cachedSprites = new Dictionary<string, Dictionary<string, Sprite>>();
// Load higher resolution images if available on HiDPI displays
if (Game.Renderer != null)
dpiScale = Game.Renderer.WindowScale;
var chrome = chromeFiles.Select(s => MiniYaml.FromFile(s)).Aggregate(MiniYaml.MergeLiberal);
fileSystem = modData.DefaultFileSystem;
collections = new Dictionary<string, Collection>();
cachedSheets = new Dictionary<string, (Sheet, int)>();
cachedSprites = new Dictionary<string, Dictionary<string, Sprite>>();
cachedPanelSprites = new Dictionary<string, Sprite[]>();
cachedCollectionSheets = new Dictionary<Collection, (Sheet, int)>();
var chrome = MiniYaml.Merge(modData.Manifest.Chrome
.Select(s => MiniYaml.FromStream(fileSystem.Open(s), s)));
foreach (var c in chrome)
LoadCollection(c.Key, c.Value);
if (!c.Key.StartsWith("^", StringComparison.Ordinal))
LoadCollection(c.Key, c.Value);
}
public static void Deinitialize()
{
if (cachedSheets != null)
foreach (var sheet in cachedSheets.Values)
sheet.Dispose();
sheet.Sheet.Dispose();
collections = null;
cachedSheets = null;
cachedSprites = null;
}
public static void Save(string file)
{
var root = new List<MiniYamlNode>();
foreach (var kv in collections)
root.Add(new MiniYamlNode(kv.Key, SaveCollection(kv.Value)));
root.WriteToFile(file);
}
static MiniYaml SaveCollection(Collection collection)
{
var root = new List<MiniYamlNode>();
foreach (var kv in collection.Regions)
root.Add(new MiniYamlNode(kv.Key, kv.Value.Save(collection.Src)));
return new MiniYaml(collection.Src, root);
cachedPanelSprites = null;
cachedCollectionSheets = null;
}
static void LoadCollection(string name, MiniYaml yaml)
{
if (Game.ModData.LoadScreen != null)
Game.ModData.LoadScreen.Display();
var collection = new Collection()
{
Src = yaml.Value,
Regions = yaml.Nodes.ToDictionary(n => n.Key, n => new MappedImage(yaml.Value, n.Value))
};
collections.Add(name, collection);
collections.Add(name, FieldLoader.Load<Collection>(yaml));
}
static (Sheet Sheet, int Density) SheetForCollection(Collection c)
{
// Outer cache avoids recalculating image names
if (!cachedCollectionSheets.TryGetValue(c, out (Sheet, int) sheetDensity))
{
var image = c.Image;
var density = 1;
if (dpiScale > 2 && !string.IsNullOrEmpty(c.Image3x))
{
image = c.Image3x;
density = 3;
}
else if (dpiScale > 1 && !string.IsNullOrEmpty(c.Image2x))
{
image = c.Image2x;
density = 2;
}
// Inner cache makes sure we share sheets between collections
if (!cachedSheets.TryGetValue(image, out sheetDensity))
{
Sheet sheet;
using (var stream = fileSystem.Open(image))
sheet = new Sheet(SheetType.BGRA, stream);
sheet.GetTexture().ScaleFilter = TextureScaleFilter.Linear;
sheetDensity = (sheet, density);
cachedSheets.Add(image, sheetDensity);
}
cachedCollectionSheets.Add(c, sheetDensity);
}
return sheetDensity;
}
public static Sprite GetImage(string collectionName, string imageName)
{
var image = TryGetImage(collectionName, imageName);
if (image == null)
throw new ArgumentException($"Sprite `{collectionName}/{imageName}` was not found.");
return image;
}
public static Sprite TryGetImage(string collectionName, string imageName)
{
if (string.IsNullOrEmpty(collectionName))
return null;
// Cached sprite
Dictionary<string, Sprite> cachedCollection;
Sprite sprite;
if (cachedSprites.TryGetValue(collectionName, out cachedCollection) && cachedCollection.TryGetValue(imageName, out sprite))
if (cachedSprites.TryGetValue(collectionName, out var cachedCollection) && cachedCollection.TryGetValue(imageName, out var sprite))
return sprite;
Collection collection;
if (!collections.TryGetValue(collectionName, out collection))
{
Log.Write("debug", "Could not find collection '{0}'", collectionName);
return null;
}
MappedImage mi;
if (!collection.Regions.TryGetValue(imageName, out mi))
if (!collections.TryGetValue(collectionName, out var collection))
return null;
// Cached sheet
Sheet sheet;
if (cachedSheets.ContainsKey(mi.Src))
sheet = cachedSheets[mi.Src];
else
{
sheet = new Sheet(mi.Src);
cachedSheets.Add(mi.Src, sheet);
}
if (!collection.Regions.TryGetValue(imageName, out var mi))
return null;
// Cache the sprite
var sheetDensity = SheetForCollection(collection);
if (cachedCollection == null)
{
cachedCollection = new Dictionary<string, Sprite>();
cachedSprites.Add(collectionName, cachedCollection);
}
var image = mi.GetImage(sheet);
var image = new Sprite(sheetDensity.Sheet, sheetDensity.Density * mi, TextureChannel.RGBA, 1f / sheetDensity.Density);
cachedCollection.Add(imageName, image);
return image;
}
public static Sprite[] GetPanelImages(string collectionName)
{
var panel = TryGetPanelImages(collectionName);
if (panel == null)
throw new ArgumentException($"Panel `{collectionName}` was not found.");
return panel;
}
public static Sprite[] TryGetPanelImages(string collectionName)
{
if (string.IsNullOrEmpty(collectionName))
return null;
// Cached sprite
if (cachedPanelSprites.TryGetValue(collectionName, out var cachedSprites))
return cachedSprites;
if (!collections.TryGetValue(collectionName, out var collection))
return null;
Sprite[] sprites;
if (collection.PanelRegion != null)
{
if (collection.PanelRegion.Length != 8)
{
Log.Write("debug", $"Collection '{collectionName}' does not define a valid PanelRegion");
return null;
}
// Cache the sprites
var sheetDensity = SheetForCollection(collection);
var pr = collection.PanelRegion;
var ps = collection.PanelSides;
var sides = new (PanelSides PanelSides, Rectangle Bounds)[]
{
(PanelSides.Top | PanelSides.Left, new Rectangle(pr[0], pr[1], pr[2], pr[3])),
(PanelSides.Top, new Rectangle(pr[0] + pr[2], pr[1], pr[4], pr[3])),
(PanelSides.Top | PanelSides.Right, new Rectangle(pr[0] + pr[2] + pr[4], pr[1], pr[6], pr[3])),
(PanelSides.Left, new Rectangle(pr[0], pr[1] + pr[3], pr[2], pr[5])),
(PanelSides.Center, new Rectangle(pr[0] + pr[2], pr[1] + pr[3], pr[4], pr[5])),
(PanelSides.Right, new Rectangle(pr[0] + pr[2] + pr[4], pr[1] + pr[3], pr[6], pr[5])),
(PanelSides.Bottom | PanelSides.Left, new Rectangle(pr[0], pr[1] + pr[3] + pr[5], pr[2], pr[7])),
(PanelSides.Bottom, new Rectangle(pr[0] + pr[2], pr[1] + pr[3] + pr[5], pr[4], pr[7])),
(PanelSides.Bottom | PanelSides.Right, new Rectangle(pr[0] + pr[2] + pr[4], pr[1] + pr[3] + pr[5], pr[6], pr[7]))
};
sprites = sides.Select(x => ps.HasSide(x.PanelSides) ? new Sprite(sheetDensity.Sheet, sheetDensity.Density * x.Bounds, TextureChannel.RGBA, 1f / sheetDensity.Density) : null)
.ToArray();
}
else
{
// PERF: We don't need to search for images if there are no definitions.
// PERF: It's more efficient to send an empty array rather than an array of 9 nulls.
if (!collection.Regions.Any())
return Array.Empty<Sprite>();
// Support manual definitions for unusual dialog layouts
sprites = new[]
{
TryGetImage(collectionName, "corner-tl"),
TryGetImage(collectionName, "border-t"),
TryGetImage(collectionName, "corner-tr"),
TryGetImage(collectionName, "border-l"),
TryGetImage(collectionName, "background"),
TryGetImage(collectionName, "border-r"),
TryGetImage(collectionName, "corner-bl"),
TryGetImage(collectionName, "border-b"),
TryGetImage(collectionName, "corner-br")
};
}
cachedPanelSprites.Add(collectionName, sprites);
return sprites;
}
public static Size GetMinimumPanelSize(string collectionName)
{
if (string.IsNullOrEmpty(collectionName))
return new Size(0, 0);
if (!collections.TryGetValue(collectionName, out var collection))
{
Log.Write("debug", "Could not find collection '{0}'", collectionName);
return new Size(0, 0);
}
if (collection.PanelRegion == null || collection.PanelRegion.Length != 8)
{
Log.Write("debug", "Collection '{0}' does not define a valid PanelRegion", collectionName);
return new Size(0, 0);
}
var pr = collection.PanelRegion;
return new Size(pr[2] + pr[6], pr[3] + pr[7]);
}
public static void SetDPIScale(float scale)
{
if (dpiScale == scale)
return;
dpiScale = scale;
// Clear the sprite caches so the new artwork can be loaded
// Sheets are not cleared: we assume that the extra memory overhead
// of having the same sheet in memory in multiple DPIs is better than
// the overhead of having to dispose and reload everything.
// Changing the DPI scale is rare, but if it does happen then there
// is a reasonable chance that it may happen again this session.
cachedSprites.Clear();
cachedPanelSprites.Clear();
cachedCollectionSheets.Clear();
}
}
}

View File

@@ -0,0 +1,294 @@
#region Copyright & License Information
/*
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using OpenRA.Primitives;
namespace OpenRA.Graphics
{
public sealed class CursorManager
{
class Cursor
{
public string Name;
public int2 PaddedSize;
public Rectangle Bounds;
public int Length;
public Sprite[] Sprites;
public IHardwareCursor[] Cursors;
}
readonly Dictionary<string, Cursor> cursors = new Dictionary<string, Cursor>();
readonly SheetBuilder sheetBuilder;
readonly GraphicSettings graphicSettings;
Cursor cursor;
bool isLocked = false;
int2 lockedPosition;
readonly bool hardwareCursorsDisabled = false;
bool hardwareCursorsDoubled = false;
public CursorManager(CursorProvider cursorProvider)
{
hardwareCursorsDisabled = Game.Settings.Graphics.DisableHardwareCursors;
graphicSettings = Game.Settings.Graphics;
sheetBuilder = new SheetBuilder(SheetType.BGRA);
foreach (var kv in cursorProvider.Cursors)
{
var frames = kv.Value.Frames;
var palette = !string.IsNullOrEmpty(kv.Value.Palette) ? cursorProvider.Palettes[kv.Value.Palette] : null;
var c = new Cursor
{
Name = kv.Key,
Bounds = Rectangle.FromLTRB(0, 0, 1, 1),
Length = 0,
Sprites = new Sprite[frames.Length],
Cursors = new IHardwareCursor[frames.Length]
};
// Hardware cursors have a number of odd platform-specific bugs/limitations.
// Reduce the number of edge cases by padding the individual frames such that:
// - the hotspot is inside the frame bounds (enforced by SDL)
// - all frames within a sequence have the same size (needed for macOS 10.15)
// - the frame size is a multiple of 8 (needed for Windows)
foreach (var f in frames)
{
// Hotspot is specified relative to the center of the frame
var hotspot = f.Offset.ToInt2() - kv.Value.Hotspot - new int2(f.Size) / 2;
// Resolve indexed data to real colours
var data = f.Data;
var type = f.Type;
if (type == SpriteFrameType.Indexed8)
{
data = ConvertIndexedToBgra(kv.Key, f, palette);
type = SpriteFrameType.Bgra32;
}
c.Sprites[c.Length++] = sheetBuilder.Add(data, type, f.Size, 0, hotspot);
// Bounds relative to the hotspot
c.Bounds = Rectangle.Union(c.Bounds, new Rectangle(hotspot, f.Size));
}
// Pad bottom-right edge to make the frame size a multiple of 8
c.PaddedSize = 8 * new int2((c.Bounds.Width + 7) / 8, (c.Bounds.Height + 7) / 8);
cursors.Add(kv.Key, c);
}
CreateOrUpdateHardwareCursors();
foreach (var s in sheetBuilder.AllSheets)
s.ReleaseBuffer();
Update();
}
void CreateOrUpdateHardwareCursors()
{
if (hardwareCursorsDisabled)
return;
// Dispose any existing cursors to avoid leaking native resources
ClearHardwareCursors();
foreach (var kv in cursors)
{
var template = kv.Value;
for (var i = 0; i < template.Sprites.Length; i++)
{
if (template.Cursors[i] != null)
template.Cursors[i].Dispose();
// Calculate the padding to position the frame within sequenceBounds
var paddingTL = -(template.Bounds.Location - template.Sprites[i].Offset.XY.ToInt2());
var paddingBR = template.PaddedSize - new int2(template.Sprites[i].Bounds.Size) - paddingTL;
var hardwareCursor = CreateHardwareCursor(kv.Key, template.Sprites[i], paddingTL, paddingBR, -template.Bounds.Location);
if (hardwareCursor != null)
template.Cursors[i] = hardwareCursor;
else
{
Log.Write("debug", $"Failed to initialize hardware cursor for {template.Name}.");
Console.WriteLine($"Failed to initialize hardware cursor for {template.Name}.");
}
}
}
hardwareCursorsDoubled = graphicSettings.CursorDouble;
}
public void SetCursor(string cursorName)
{
if ((cursorName == null && cursor == null) || (cursor != null && cursorName == cursor.Name))
return;
if (cursorName == null || !cursors.TryGetValue(cursorName, out cursor))
cursor = null;
Update();
}
int frame;
int ticks;
public void Tick()
{
if (hardwareCursorsDoubled != graphicSettings.CursorDouble)
{
CreateOrUpdateHardwareCursors();
Update();
}
if (cursor == null || cursor.Cursors.Length == 1)
return;
if (++ticks > 2)
{
ticks -= 2;
frame++;
Update();
}
}
void Update()
{
if (cursor != null && frame >= cursor.Cursors.Length)
frame %= cursor.Cursors.Length;
var hardwareCursor = cursor?.Cursors[frame];
if (hardwareCursor == null || isLocked)
Game.Renderer.Window.SetHardwareCursor(null);
else
Game.Renderer.Window.SetHardwareCursor(hardwareCursor);
}
public void Render(Renderer renderer)
{
// Cursor is hidden
if (cursor == null)
return;
// Hardware cursor is enabled
if (!isLocked && cursor.Cursors[frame % cursor.Length] != null)
return;
// Render cursor in software
var doubleCursor = graphicSettings.CursorDouble;
var cursorSprite = cursor.Sprites[frame % cursor.Length];
var cursorScale = doubleCursor ? 2 : 1;
// Cursor is rendered in native window coordinates
// Apply same scaling rules as hardware cursors
if (Game.Renderer.NativeWindowScale > 1.5f)
cursorScale *= 2;
var mousePos = isLocked ? lockedPosition : Viewport.LastMousePos;
renderer.RgbaSpriteRenderer.DrawSprite(cursorSprite,
mousePos,
cursorScale / Game.Renderer.WindowScale);
}
public void Lock()
{
lockedPosition = Viewport.LastMousePos;
Game.Renderer.Window.SetRelativeMouseMode(true);
isLocked = true;
Update();
}
public void Unlock()
{
Game.Renderer.Window.SetRelativeMouseMode(false);
isLocked = false;
Update();
}
public static byte[] ConvertIndexedToBgra(string name, ISpriteFrame frame, ImmutablePalette palette)
{
if (frame.Type != SpriteFrameType.Indexed8)
throw new ArgumentException("ConvertIndexedToBgra requires input frames to be indexed.", nameof(frame));
// All palettes must be explicitly referenced, even if they are embedded in the sprite.
if (palette == null)
throw new InvalidOperationException($"Cursor sequence `{name}` attempted to load an indexed sprite but does not define Palette");
var width = frame.Size.Width;
var height = frame.Size.Height;
var data = new byte[4 * width * height];
unsafe
{
// Cast the data to an int array so we can copy the src data directly
fixed (byte* bd = &data[0])
{
var rgba = (uint*)bd;
for (var j = 0; j < height; j++)
for (var i = 0; i < width; i++)
rgba[j * width + i] = palette[frame.Data[j * width + i]];
}
}
return data;
}
IHardwareCursor CreateHardwareCursor(string name, Sprite data, int2 paddingTL, int2 paddingBR, int2 hotspot)
{
var size = data.Bounds.Size;
var srcStride = data.Sheet.Size.Width;
var srcData = data.Sheet.GetData();
var newWidth = paddingTL.X + size.Width + paddingBR.X;
var newHeight = paddingTL.Y + size.Height + paddingBR.Y;
var rgbaData = new byte[4 * newWidth * newHeight];
for (var j = 0; j < size.Height; j++)
{
for (var i = 0; i < size.Width; i++)
{
var src = 4 * ((j + data.Bounds.Top) * srcStride + data.Bounds.Left + i);
var dest = 4 * ((j + paddingTL.Y) * newWidth + i + paddingTL.X);
Array.Copy(srcData, src, rgbaData, dest, 4);
}
}
return Game.Renderer.Window.CreateHardwareCursor(name, new Size(newWidth, newHeight), rgbaData, hotspot, graphicSettings.CursorDouble);
}
void ClearHardwareCursors()
{
foreach (var c in cursors.Values)
{
for (var i = 0; i < c.Cursors.Length; i++)
{
if (c.Cursors[i] != null)
{
c.Cursors[i].Dispose();
c.Cursors[i] = null;
}
}
}
}
public void Dispose()
{
ClearHardwareCursors();
cursors.Clear();
sheetBuilder.Dispose();
}
}
}

View File

@@ -1,19 +1,18 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using OpenRA.FileSystem;
using OpenRA.Primitives;
using OpenRA.Traits;
namespace OpenRA.Graphics
{
@@ -24,35 +23,32 @@ namespace OpenRA.Graphics
public CursorProvider(ModData modData)
{
var sequenceFiles = modData.Manifest.Cursors;
var sequences = new MiniYaml(null, sequenceFiles.Select(s => MiniYaml.FromFile(s)).Aggregate(MiniYaml.MergeLiberal));
var shadowIndex = new int[] { };
var fileSystem = modData.DefaultFileSystem;
var sequenceYaml = MiniYaml.Merge(modData.Manifest.Cursors.Select(
s => MiniYaml.FromStream(fileSystem.Open(s), s)));
var nodesDict = sequences.ToDictionary();
if (nodesDict.ContainsKey("ShadowIndex"))
{
Array.Resize(ref shadowIndex, shadowIndex.Length + 1);
Exts.TryParseIntegerInvariant(nodesDict["ShadowIndex"].Value,
out shadowIndex[shadowIndex.Length - 1]);
}
var nodesDict = new MiniYaml(null, sequenceYaml).ToDictionary();
var palettes = new Dictionary<string, ImmutablePalette>();
foreach (var p in nodesDict["Palettes"].Nodes)
palettes.Add(p.Key, new ImmutablePalette(GlobalFileSystem.Open(p.Value.Value), shadowIndex));
// Overwrite previous definitions if there are duplicates
var pals = new Dictionary<string, IProvidesCursorPaletteInfo>();
foreach (var p in modData.DefaultRules.Actors[SystemActors.World].TraitInfos<IProvidesCursorPaletteInfo>())
if (p.Palette != null)
pals[p.Palette] = p;
Palettes = palettes.AsReadOnly();
Palettes = nodesDict["Cursors"].Nodes.Select(n => n.Value.Value)
.Where(p => p != null)
.Distinct()
.ToDictionary(p => p, p => pals[p].ReadPalette(modData.DefaultFileSystem));
var frameCache = new FrameCache(modData.SpriteLoaders);
var frameCache = new FrameCache(fileSystem, modData.SpriteLoaders);
var cursors = new Dictionary<string, CursorSequence>();
foreach (var s in nodesDict["Cursors"].Nodes)
foreach (var sequence in s.Value.Nodes)
cursors.Add(sequence.Key, new CursorSequence(frameCache, sequence.Key, s.Key, s.Value.Value, sequence.Value));
Cursors = cursors.AsReadOnly();
Cursors = cursors;
}
public static bool CursorViewportZoomed { get { return Game.Settings.Graphics.CursorDouble && Game.Settings.Graphics.PixelDouble; } }
public bool HasCursorSequence(string cursor)
{
return Cursors.ContainsKey(cursor);
@@ -63,7 +59,7 @@ namespace OpenRA.Graphics
try { return Cursors[cursor]; }
catch (KeyNotFoundException)
{
throw new InvalidOperationException("Cursor does not have a sequence `{0}`".F(cursor));
throw new InvalidOperationException($"Cursor does not have a sequence `{cursor}`");
}
}
}

View File

@@ -1,10 +1,11 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
@@ -30,8 +31,10 @@ namespace OpenRA.Graphics
Palette = palette;
Name = name;
Frames = cache[cursorSrc].Skip(Start).ToArray();
if ((d.ContainsKey("Length") && d["Length"].Value == "*") || (d.ContainsKey("End") && d["End"].Value == "*"))
Length = Frames.Length - Start;
Length = Frames.Length;
else if (d.ContainsKey("Length"))
Length = Exts.ParseIntegerInvariant(d["Length"].Value);
else if (d.ContainsKey("End"))
@@ -39,22 +42,17 @@ namespace OpenRA.Graphics
else
Length = 1;
Frames = cache[cursorSrc]
.Skip(Start)
.Take(Length)
.ToArray();
Frames = Frames.Take(Length).ToArray();
if (d.ContainsKey("X"))
{
int x;
Exts.TryParseIntegerInvariant(d["X"].Value, out x);
Exts.TryParseIntegerInvariant(d["X"].Value, out var x);
Hotspot = Hotspot.WithX(x);
}
if (d.ContainsKey("Y"))
{
int y;
Exts.TryParseIntegerInvariant(d["Y"].Value, out y);
Exts.TryParseIntegerInvariant(d["Y"].Value, out var y);
Hotspot = Hotspot.WithY(y);
}
}

View File

@@ -1,107 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System.Drawing;
using OpenRA.Scripting;
namespace OpenRA.Graphics
{
public struct HSLColor : IScriptBindable
{
public readonly byte H;
public readonly byte S;
public readonly byte L;
public readonly Color RGB;
public static HSLColor FromHSV(float h, float s, float v)
{
var ll = 0.5f * (2 - s) * v;
var ss = (ll >= 1 || v <= 0) ? 0 : 0.5f * s * v / (ll <= 0.5f ? ll : 1 - ll);
return new HSLColor((byte)(255 * h), (byte)(255 * ss), (byte)(255 * ll));
}
public static HSLColor FromRGB(int r, int g, int b)
{
var c = Color.FromArgb(r, g, b);
var h = (byte)((c.GetHue() / 360.0f) * 255);
var s = (byte)(c.GetSaturation() * 255);
var l = (byte)(c.GetBrightness() * 255);
return new HSLColor(h, s, l);
}
public static Color RGBFromHSL(float h, float s, float l)
{
// Convert from HSL to RGB
var q = (l < 0.5f) ? l * (1 + s) : l + s - (l * s);
var p = 2 * l - q;
float[] trgb = { h + 1 / 3.0f, h, h - 1 / 3.0f };
float[] rgb = { 0, 0, 0 };
for (var k = 0; k < 3; k++)
{
while (trgb[k] < 0) trgb[k] += 1.0f;
while (trgb[k] > 1) trgb[k] -= 1.0f;
}
for (var k = 0; k < 3; k++)
{
if (trgb[k] < 1 / 6.0f)
rgb[k] = p + ((q - p) * 6 * trgb[k]);
else if (trgb[k] >= 1 / 6.0f && trgb[k] < 0.5)
rgb[k] = q;
else if (trgb[k] >= 0.5f && trgb[k] < 2.0f / 3)
rgb[k] = p + ((q - p) * 6 * (2.0f / 3 - trgb[k]));
else
rgb[k] = p;
}
return Color.FromArgb((int)(rgb[0] * 255), (int)(rgb[1] * 255), (int)(rgb[2] * 255));
}
public static bool operator ==(HSLColor me, HSLColor other)
{
return me.H == other.H && me.S == other.S && me.L == other.L;
}
public static bool operator !=(HSLColor me, HSLColor other) { return !(me == other); }
public HSLColor(byte h, byte s, byte l)
{
H = h;
S = s;
L = l;
RGB = RGBFromHSL(H / 255f, S / 255f, L / 255f);
}
public void ToHSV(out float h, out float s, out float v)
{
var ll = 2 * L / 255f;
var ss = S / 255f * ((ll <= 1) ? ll : 2 - ll);
h = H / 255f;
s = (2 * ss) / (ll + ss);
v = (ll + ss) / 2;
}
public override string ToString()
{
return "{0},{1},{2}".F(H, S, L);
}
public override int GetHashCode() { return H.GetHashCode() ^ S.GetHashCode() ^ L.GetHashCode(); }
public override bool Equals(object obj)
{
var o = obj as HSLColor?;
return o != null && o == this;
}
}
}

View File

@@ -1,138 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using OpenRA.Graphics;
using OpenRA.Primitives;
namespace OpenRA.Graphics
{
public class HardwareCursor : ICursor
{
readonly Dictionary<string, IHardwareCursor[]> hardwareCursors = new Dictionary<string, IHardwareCursor[]>();
readonly CursorProvider cursorProvider;
CursorSequence cursor;
public HardwareCursor(CursorProvider cursorProvider)
{
this.cursorProvider = cursorProvider;
foreach (var kv in cursorProvider.Cursors)
{
var palette = cursorProvider.Palettes[kv.Value.Palette];
var hc = kv.Value.Frames
.Select(f => CreateCursor(f, palette, kv.Key, kv.Value))
.ToArray();
hardwareCursors.Add(kv.Key, hc);
}
Update();
}
IHardwareCursor CreateCursor(ISpriteFrame f, ImmutablePalette palette, string name, CursorSequence sequence)
{
var hotspot = sequence.Hotspot - f.Offset.ToInt2() + new int2(f.Size) / 2;
// Expand the frame if required to include the hotspot
var frameWidth = f.Size.Width;
var dataWidth = f.Size.Width;
var dataX = 0;
if (hotspot.X < 0)
{
dataX = -hotspot.X;
dataWidth += dataX;
hotspot = hotspot.WithX(0);
}
else if (hotspot.X >= frameWidth)
dataWidth = hotspot.X + 1;
var frameHeight = f.Size.Height;
var dataHeight = f.Size.Height;
var dataY = 0;
if (hotspot.Y < 0)
{
dataY = -hotspot.Y;
dataHeight += dataY;
hotspot = hotspot.WithY(0);
}
else if (hotspot.Y >= frameHeight)
dataHeight = hotspot.Y + 1;
var data = new byte[4 * dataWidth * dataHeight];
for (var j = 0; j < frameHeight; j++)
{
for (var i = 0; i < frameWidth; i++)
{
var bytes = BitConverter.GetBytes(palette[f.Data[j * frameWidth + i]]);
var start = 4 * ((j + dataY) * dataWidth + dataX + i);
for (var k = 0; k < 4; k++)
data[start + k] = bytes[k];
}
}
return Game.Renderer.Device.CreateHardwareCursor(name, new Size(dataWidth, dataHeight), data, hotspot);
}
public void SetCursor(string cursorName)
{
if ((cursorName == null && cursor == null) || (cursor != null && cursorName == cursor.Name))
return;
if (cursorName == null || !cursorProvider.Cursors.TryGetValue(cursorName, out cursor))
cursor = null;
Update();
}
int frame;
int ticks;
public void Tick()
{
if (cursor == null || cursor.Length == 1)
return;
if (++ticks > 2)
{
ticks -= 2;
frame++;
Update();
}
}
void Update()
{
if (cursor == null)
Game.Renderer.Device.SetHardwareCursor(null);
else
{
if (frame >= cursor.Length)
frame = frame % cursor.Length;
Game.Renderer.Device.SetHardwareCursor(hardwareCursors[cursor.Name][frame]);
}
}
public void Render(Renderer renderer) { }
public void Dispose()
{
foreach (var cursors in hardwareCursors)
foreach (var cursor in cursors.Value)
cursor.Dispose();
hardwareCursors.Clear();
}
}
}

View File

@@ -1,10 +1,11 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
@@ -16,76 +17,94 @@ namespace OpenRA.Graphics
{
public sealed class HardwarePalette : IDisposable
{
public ITexture Texture { get; private set; }
public ITexture Texture { get; }
public ITexture ColorShifts { get; }
public int Height { get; private set; }
readonly Dictionary<string, ImmutablePalette> palettes = new Dictionary<string, ImmutablePalette>();
readonly Dictionary<string, MutablePalette> modifiablePalettes = new Dictionary<string, MutablePalette>();
readonly IReadOnlyDictionary<string, MutablePalette> readOnlyModifiablePalettes;
readonly Dictionary<string, MutablePalette> mutablePalettes = new Dictionary<string, MutablePalette>();
readonly Dictionary<string, int> indices = new Dictionary<string, int>();
byte[] buffer = new byte[0];
byte[] buffer = Array.Empty<byte>();
float[] colorShiftBuffer = Array.Empty<float>();
public HardwarePalette()
{
Texture = Game.Renderer.Device.CreateTexture();
readOnlyModifiablePalettes = modifiablePalettes.AsReadOnly();
Texture = Game.Renderer.Context.CreateTexture();
ColorShifts = Game.Renderer.Context.CreateTexture();
}
public bool Contains(string name)
{
return modifiablePalettes.ContainsKey(name) || palettes.ContainsKey(name);
return mutablePalettes.ContainsKey(name) || palettes.ContainsKey(name);
}
public IPalette GetPalette(string name)
{
MutablePalette mutable;
if (modifiablePalettes.TryGetValue(name, out mutable))
if (mutablePalettes.TryGetValue(name, out var mutable))
return mutable.AsReadOnly();
ImmutablePalette immutable;
if (palettes.TryGetValue(name, out immutable))
if (palettes.TryGetValue(name, out var immutable))
return immutable;
throw new InvalidOperationException("Palette `{0}` does not exist".F(name));
throw new InvalidOperationException($"Palette `{name}` does not exist");
}
public int GetPaletteIndex(string name)
{
int ret;
if (!indices.TryGetValue(name, out ret))
throw new InvalidOperationException("Palette `{0}` does not exist".F(name));
if (!indices.TryGetValue(name, out var ret))
throw new InvalidOperationException($"Palette `{name}` does not exist");
return ret;
}
public void AddPalette(string name, ImmutablePalette p, bool allowModifiers)
{
if (palettes.ContainsKey(name))
throw new InvalidOperationException("Palette {0} has already been defined".F(name));
throw new InvalidOperationException($"Palette {name} has already been defined");
int index = palettes.Count;
// PERF: the first row in the palette textures is reserved as a placeholder for non-indexed sprites
// that do not have a color-shift applied. This provides a quick shortcut to avoid querying the
// color-shift texture for every pixel only to find that most are not shifted.
var index = palettes.Count + 1;
indices.Add(name, index);
palettes.Add(name, p);
if (palettes.Count > Height)
if (index >= Height)
{
Height = Exts.NextPowerOf2(palettes.Count);
Height = Exts.NextPowerOf2(index + 1);
Array.Resize(ref buffer, Height * Palette.Size * 4);
Array.Resize(ref colorShiftBuffer, Height * 4);
}
if (allowModifiers)
modifiablePalettes.Add(name, new MutablePalette(p));
mutablePalettes.Add(name, new MutablePalette(p));
else
CopyPaletteToBuffer(index, p);
}
public void ReplacePalette(string name, IPalette p)
{
if (modifiablePalettes.ContainsKey(name))
CopyPaletteToBuffer(indices[name], modifiablePalettes[name] = new MutablePalette(p));
if (mutablePalettes.ContainsKey(name))
CopyPaletteToBuffer(indices[name], mutablePalettes[name] = new MutablePalette(p));
else if (palettes.ContainsKey(name))
CopyPaletteToBuffer(indices[name], palettes[name] = new ImmutablePalette(p));
else
throw new InvalidOperationException("Palette `{0}` does not exist".F(name));
throw new InvalidOperationException($"Palette `{name}` does not exist");
CopyBufferToTexture();
}
public void SetColorShift(string name, float hueOffset, float satOffset, float minHue, float maxHue)
{
var index = GetPaletteIndex(name);
colorShiftBuffer[4 * index + 0] = hueOffset;
colorShiftBuffer[4 * index + 1] = satOffset;
colorShiftBuffer[4 * index + 2] = minHue;
colorShiftBuffer[4 * index + 3] = maxHue;
}
public bool HasColorShift(string name)
{
var index = GetPaletteIndex(name);
return colorShiftBuffer[4 * index + 2] != 0 || colorShiftBuffer[4 * index + 3] != 0;
}
public void Initialize()
{
CopyModifiablePalettesToBuffer();
@@ -99,26 +118,27 @@ namespace OpenRA.Graphics
void CopyModifiablePalettesToBuffer()
{
foreach (var kvp in modifiablePalettes)
foreach (var kvp in mutablePalettes)
CopyPaletteToBuffer(indices[kvp.Key], kvp.Value);
}
void CopyBufferToTexture()
{
Texture.SetData(buffer, Palette.Size, Height);
ColorShifts.SetFloatData(colorShiftBuffer, 1, Height);
}
public void ApplyModifiers(IEnumerable<IPaletteModifier> paletteMods)
{
foreach (var mod in paletteMods)
mod.AdjustPalette(readOnlyModifiablePalettes);
mod.AdjustPalette(mutablePalettes);
// Update our texture with the changes.
CopyModifiablePalettesToBuffer();
CopyBufferToTexture();
// Reset modified palettes back to their original colors, ready for next time.
foreach (var kvp in modifiablePalettes)
foreach (var kvp in mutablePalettes)
{
var originalPalette = palettes[kvp.Key];
var modifiedPalette = kvp.Value;
@@ -129,6 +149,7 @@ namespace OpenRA.Graphics
public void Dispose()
{
Texture.Dispose();
ColorShifts.Dispose();
}
}
}

View File

@@ -1,138 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.Drawing;
using OpenRA.Graphics;
namespace OpenRA
{
[AttributeUsage(AttributeTargets.Assembly)]
public sealed class RendererAttribute : Attribute
{
public readonly Type Type;
public RendererAttribute(Type graphicsDeviceType)
{
if (!typeof(IDeviceFactory).IsAssignableFrom(graphicsDeviceType))
throw new InvalidOperationException("Incorrect type in RendererAttribute");
Type = graphicsDeviceType;
}
}
public interface IDeviceFactory
{
IGraphicsDevice Create(Size size, WindowMode windowMode);
}
public interface IHardwareCursor : IDisposable { }
public enum BlendMode : byte
{
None,
Alpha,
Additive,
Subtractive,
Multiply,
Multiplicative,
DoubleMultiplicative
}
public interface IGraphicsDevice : IDisposable
{
IVertexBuffer<Vertex> CreateVertexBuffer(int length);
ITexture CreateTexture(Bitmap bitmap);
ITexture CreateTexture();
IFrameBuffer CreateFrameBuffer(Size s);
IShader CreateShader(string name);
Size WindowSize { get; }
void Clear();
void Present();
Bitmap TakeScreenshot();
void PumpInput(IInputHandler inputHandler);
string GetClipboardText();
void DrawPrimitives(PrimitiveType type, int firstVertex, int numVertices);
void SetLineWidth(float width);
void EnableScissor(int left, int top, int width, int height);
void DisableScissor();
void EnableDepthBuffer();
void DisableDepthBuffer();
void SetBlendMode(BlendMode mode);
void GrabWindowMouseFocus();
void ReleaseWindowMouseFocus();
IHardwareCursor CreateHardwareCursor(string name, Size size, byte[] data, int2 hotspot);
void SetHardwareCursor(IHardwareCursor cursor);
}
public interface IVertexBuffer<T> : IDisposable
{
void Bind();
void SetData(T[] vertices, int length);
void SetData(T[] vertices, int start, int length);
void SetData(IntPtr data, int start, int length);
}
public interface IShader
{
void SetVec(string name, float x);
void SetVec(string name, float x, float y);
void SetVec(string name, float[] vec, int length);
void SetTexture(string param, ITexture texture);
void SetMatrix(string param, float[] mtx);
void Render(Action a);
}
public enum TextureScaleFilter { Nearest, Linear }
public interface ITexture : IDisposable
{
void SetData(Bitmap bitmap);
void SetData(uint[,] colors);
void SetData(byte[] colors, int width, int height);
byte[] GetData();
Size Size { get; }
TextureScaleFilter ScaleFilter { get; set; }
}
public interface IFrameBuffer : IDisposable
{
void Bind();
void Unbind();
ITexture Texture { get; }
}
public enum PrimitiveType
{
PointList,
LineList,
TriangleList,
QuadList,
}
public struct Range<T>
{
public readonly T Start, End;
public Range(T start, T end) { Start = start; End = end; }
}
public enum WindowMode
{
Windowed,
Fullscreen,
PseudoFullscreen,
}
}

View File

@@ -1,174 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Drawing;
namespace OpenRA.Graphics
{
public class LineRenderer : Renderer.IBatchRenderer
{
static readonly float2 Offset = new float2(0.5f, 0.5f);
readonly Renderer renderer;
readonly IShader shader;
readonly Action renderAction;
readonly Vertex[] vertices;
int nv = 0;
float lineWidth = 1f;
public LineRenderer(Renderer renderer, IShader shader)
{
this.renderer = renderer;
this.shader = shader;
vertices = new Vertex[renderer.TempBufferSize];
renderAction = () =>
{
renderer.SetLineWidth(LineWidth);
renderer.DrawBatch(vertices, nv, PrimitiveType.LineList);
};
}
public float LineWidth
{
get
{
return lineWidth;
}
set
{
if (LineWidth != value)
Flush();
lineWidth = value;
}
}
public void Flush()
{
if (nv > 0)
{
renderer.Device.SetBlendMode(BlendMode.Alpha);
shader.Render(renderAction);
renderer.Device.SetBlendMode(BlendMode.None);
nv = 0;
}
}
public void DrawRect(float2 tl, float2 br, Color c)
{
var tr = new float2(br.X, tl.Y);
var bl = new float2(tl.X, br.Y);
DrawLine(tl, tr, c);
DrawLine(tl, bl, c);
DrawLine(tr, br, c);
DrawLine(bl, br, c);
}
public void DrawLine(float2 start, float2 end, Color color)
{
renderer.CurrentBatchRenderer = this;
if (nv + 2 > renderer.TempBufferSize)
Flush();
color = Util.PremultiplyAlpha(color);
var r = color.R / 255.0f;
var g = color.G / 255.0f;
var b = color.B / 255.0f;
var a = color.A / 255.0f;
vertices[nv++] = new Vertex(start + Offset, r, g, b, a);
vertices[nv++] = new Vertex(end + Offset, r, g, b, a);
}
public void DrawLine(float2 start, float2 end, Color startColor, Color endColor)
{
renderer.CurrentBatchRenderer = this;
if (nv + 2 > renderer.TempBufferSize)
Flush();
startColor = Util.PremultiplyAlpha(startColor);
var r = startColor.R / 255.0f;
var g = startColor.G / 255.0f;
var b = startColor.B / 255.0f;
var a = startColor.A / 255.0f;
vertices[nv++] = new Vertex(start + Offset, r, g, b, a);
endColor = Util.PremultiplyAlpha(endColor);
r = endColor.R / 255.0f;
g = endColor.G / 255.0f;
b = endColor.B / 255.0f;
a = endColor.A / 255.0f;
vertices[nv++] = new Vertex(end + Offset, r, g, b, a);
}
public void DrawLineStrip(IEnumerable<float2> points, Color color)
{
renderer.CurrentBatchRenderer = this;
color = Util.PremultiplyAlpha(color);
var r = color.R / 255.0f;
var g = color.G / 255.0f;
var b = color.B / 255.0f;
var a = color.A / 255.0f;
var first = true;
var prev = new Vertex();
foreach (var point in points)
{
if (first)
{
first = false;
prev = new Vertex(point + Offset, r, g, b, a);
continue;
}
if (nv + 2 > renderer.TempBufferSize)
Flush();
vertices[nv++] = prev;
prev = new Vertex(point + Offset, r, g, b, a);
vertices[nv++] = prev;
}
}
public void FillRect(RectangleF r, Color color)
{
for (var y = r.Top; y < r.Bottom; y++)
DrawLine(new float2(r.Left, y), new float2(r.Right, y), color);
}
public void FillEllipse(RectangleF r, Color color)
{
var a = (r.Right - r.Left) / 2;
var b = (r.Bottom - r.Top) / 2;
var xc = (r.Right + r.Left) / 2;
var yc = (r.Bottom + r.Top) / 2;
for (var y = r.Top; y <= r.Bottom; y++)
{
var dx = a * (float)Math.Sqrt(1 - (y - yc) * (y - yc) / b / b);
DrawLine(new float2(xc - dx, y), new float2(xc + dx, y), color);
}
}
public void SetViewportParams(Size screen, float zoom, int2 scroll)
{
shader.SetVec("Scroll", scroll.X, scroll.Y);
shader.SetVec("r1", zoom * 2f / screen.Width, -zoom * 2f / screen.Height);
shader.SetVec("r2", -1, 1);
}
}
}

View File

@@ -1,43 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System.Collections.Generic;
using System.Drawing;
namespace OpenRA.Graphics
{
class MappedImage
{
readonly Rectangle rect = Rectangle.Empty;
public readonly string Src;
public MappedImage(string defaultSrc, MiniYaml info)
{
FieldLoader.LoadField(this, "rect", info.Value);
FieldLoader.Load(this, info);
if (Src == null)
Src = defaultSrc;
}
public Sprite GetImage(Sheet s)
{
return new Sprite(s, rect, TextureChannel.Alpha);
}
public MiniYaml Save(string defaultSrc)
{
var root = new List<MiniYamlNode>();
if (defaultSrc != Src)
root.Add(new MiniYamlNode("Src", Src));
return new MiniYaml(FieldSaver.FormatValue(this, this.GetType().GetField("rect")), root);
}
}
}

View File

@@ -1,148 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using OpenRA.Traits;
namespace OpenRA.Graphics
{
public static class Minimap
{
public static Bitmap TerrainBitmap(TileSet tileset, Map map, bool actualSize = false)
{
var isDiamond = map.TileShape == TileShape.Diamond;
var b = map.Bounds;
// Fudge the heightmap offset by adding as much extra as we need / can.
// This tries to correct for our incorrect assumption that MPos == PPos
var heightOffset = Math.Min(map.MaximumTerrainHeight, map.MapSize.Y - b.Bottom);
var width = b.Width;
var height = b.Height + heightOffset;
var bitmapWidth = width;
if (isDiamond)
bitmapWidth = 2 * bitmapWidth - 1;
if (!actualSize)
bitmapWidth = height = Exts.NextPowerOf2(Math.Max(bitmapWidth, height));
var terrain = new Bitmap(bitmapWidth, height);
var bitmapData = terrain.LockBits(terrain.Bounds(),
ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
var mapTiles = map.MapTiles.Value;
unsafe
{
var colors = (int*)bitmapData.Scan0;
var stride = bitmapData.Stride / 4;
for (var y = 0; y < height; y++)
{
for (var x = 0; x < width; x++)
{
var uv = new MPos(x + b.Left, y + b.Top);
var type = tileset.GetTileInfo(mapTiles[uv]);
var leftColor = type != null ? type.LeftColor : Color.Black;
if (isDiamond)
{
// Odd rows are shifted right by 1px
var dx = uv.V & 1;
var rightColor = type != null ? type.RightColor : Color.Black;
if (x + dx > 0)
colors[y * stride + 2 * x + dx - 1] = leftColor.ToArgb();
if (2 * x + dx < stride)
colors[y * stride + 2 * x + dx] = rightColor.ToArgb();
}
else
colors[y * stride + x] = leftColor.ToArgb();
}
}
}
terrain.UnlockBits(bitmapData);
return terrain;
}
// Add the static resources defined in the map; if the map lives
// in a world use AddCustomTerrain instead
static Bitmap AddStaticResources(TileSet tileset, Map map, Ruleset resourceRules, Bitmap terrainBitmap)
{
var terrain = new Bitmap(terrainBitmap);
var isDiamond = map.TileShape == TileShape.Diamond;
var b = map.Bounds;
// Fudge the heightmap offset by adding as much extra as we need / can
// This tries to correct for our incorrect assumption that MPos == PPos
var heightOffset = Math.Min(map.MaximumTerrainHeight, map.MapSize.Y - b.Bottom);
var width = b.Width;
var height = b.Height + heightOffset;
var resources = resourceRules.Actors["world"].Traits.WithInterface<ResourceTypeInfo>()
.ToDictionary(r => r.ResourceType, r => r.TerrainType);
var bitmapData = terrain.LockBits(terrain.Bounds(),
ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
unsafe
{
var colors = (int*)bitmapData.Scan0;
var stride = bitmapData.Stride / 4;
for (var y = 0; y < height; y++)
{
for (var x = 0; x < width; x++)
{
var uv = new MPos(x + b.Left, y + b.Top);
if (map.MapResources.Value[uv].Type == 0)
continue;
string res;
if (!resources.TryGetValue(map.MapResources.Value[uv].Type, out res))
continue;
var color = tileset[tileset.GetTerrainIndex(res)].Color.ToArgb();
if (isDiamond)
{
// Odd rows are shifted right by 1px
var dx = uv.V & 1;
if (x + dx > 0)
colors[y * stride + 2 * x + dx - 1] = color;
if (2 * x + dx < stride)
colors[y * stride + 2 * x + dx] = color;
}
else
colors[y * stride + x] = color;
}
}
}
terrain.UnlockBits(bitmapData);
return terrain;
}
public static Bitmap RenderMapPreview(TileSet tileset, Map map, bool actualSize)
{
return RenderMapPreview(tileset, map, map.Rules, actualSize);
}
public static Bitmap RenderMapPreview(TileSet tileset, Map map, Ruleset resourceRules, bool actualSize)
{
using (var terrain = TerrainBitmap(tileset, map, actualSize))
return AddStaticResources(tileset, map, resourceRules, terrain);
}
}
}

View File

@@ -0,0 +1,95 @@
#region Copyright & License Information
/*
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using OpenRA.FileSystem;
using OpenRA.Primitives;
namespace OpenRA.Graphics
{
public interface IModel
{
uint Frames { get; }
uint Sections { get; }
float[] TransformationMatrix(uint section, uint frame);
float[] Size { get; }
float[] Bounds(uint frame);
ModelRenderData RenderData(uint section);
/// <summary>Returns the smallest rectangle that covers all rotations of all frames in a model</summary>
Rectangle AggregateBounds { get; }
}
public readonly struct ModelRenderData
{
public readonly int Start;
public readonly int Count;
public readonly Sheet Sheet;
public ModelRenderData(int start, int count, Sheet sheet)
{
Start = start;
Count = count;
Sheet = sheet;
}
}
public interface IModelCache : IDisposable
{
IModel GetModel(string model);
IModel GetModelSequence(string model, string sequence);
bool HasModelSequence(string model, string sequence);
IVertexBuffer<Vertex> VertexBuffer { get; }
}
public interface IModelSequenceLoader
{
Action<string> OnMissingModelError { get; set; }
IModelCache CacheModels(IReadOnlyFileSystem fileSystem, ModData modData, IReadOnlyDictionary<string, MiniYamlNode> modelDefinitions);
}
public class PlaceholderModelSequenceLoader : IModelSequenceLoader
{
public Action<string> OnMissingModelError { get; set; }
class PlaceholderModelCache : IModelCache
{
public IVertexBuffer<Vertex> VertexBuffer => throw new NotImplementedException();
public void Dispose() { }
public IModel GetModel(string model)
{
throw new NotImplementedException();
}
public IModel GetModelSequence(string model, string sequence)
{
throw new NotImplementedException();
}
public bool HasModelSequence(string model, string sequence)
{
throw new NotImplementedException();
}
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Usage", "IDE0060:Remove unused parameter", Justification = "Load game API")]
public PlaceholderModelSequenceLoader(ModData modData) { }
public IModelCache CacheModels(IReadOnlyFileSystem fileSystem, ModData modData, IReadOnlyDictionary<string, MiniYamlNode> modelDefinitions)
{
return new PlaceholderModelCache();
}
}
}

View File

@@ -0,0 +1,51 @@
#region Copyright & License Information
/*
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using OpenRA.Primitives;
namespace OpenRA.Graphics
{
public readonly struct ModelAnimation
{
public readonly IModel Model;
public readonly Func<WVec> OffsetFunc;
public readonly Func<WRot> RotationFunc;
public readonly Func<bool> DisableFunc;
public readonly Func<uint> FrameFunc;
public readonly bool ShowShadow;
public ModelAnimation(IModel model, Func<WVec> offset, Func<WRot> rotation, Func<bool> disable, Func<uint> frame, bool showshadow)
{
Model = model;
OffsetFunc = offset;
RotationFunc = rotation;
DisableFunc = disable;
FrameFunc = frame;
ShowShadow = showshadow;
}
public Rectangle ScreenBounds(WPos pos, WorldRenderer wr, float scale)
{
var r = Model.AggregateBounds;
var offset = OffsetFunc != null ? OffsetFunc() : WVec.Zero;
var xy = wr.ScreenPxPosition(pos) + wr.ScreenPxOffset(offset);
return Rectangle.FromLTRB(
xy.X + (int)(r.Left * scale),
xy.Y + (int)(r.Top * scale),
xy.X + (int)(r.Right * scale),
xy.Y + (int)(r.Bottom * scale));
}
public bool IsVisible => DisableFunc == null || !DisableFunc();
}
}

View File

@@ -0,0 +1,377 @@
#region Copyright & License Information
/*
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Linq;
using OpenRA.Primitives;
namespace OpenRA.Graphics
{
public class ModelRenderProxy
{
public readonly Sprite Sprite;
public readonly Sprite ShadowSprite;
public readonly float ShadowDirection;
public readonly float3[] ProjectedShadowBounds;
public ModelRenderProxy(Sprite sprite, Sprite shadowSprite, float3[] projectedShadowBounds, float shadowDirection)
{
Sprite = sprite;
ShadowSprite = shadowSprite;
ProjectedShadowBounds = projectedShadowBounds;
ShadowDirection = shadowDirection;
}
}
public sealed class ModelRenderer : IDisposable
{
// Static constants
static readonly float[] ShadowDiffuse = new float[] { 0, 0, 0 };
static readonly float[] ShadowAmbient = new float[] { 1, 1, 1 };
static readonly float2 SpritePadding = new float2(2, 2);
static readonly float[] ZeroVector = new float[] { 0, 0, 0, 1 };
static readonly float[] ZVector = new float[] { 0, 0, 1, 1 };
static readonly float[] FlipMtx = Util.ScaleMatrix(1, -1, 1);
static readonly float[] ShadowScaleFlipMtx = Util.ScaleMatrix(2, -2, 2);
static readonly float[] GroundNormal = { 0, 0, 1, 1 };
readonly Renderer renderer;
readonly IShader shader;
readonly Dictionary<Sheet, IFrameBuffer> mappedBuffers = new Dictionary<Sheet, IFrameBuffer>();
readonly Stack<KeyValuePair<Sheet, IFrameBuffer>> unmappedBuffers = new Stack<KeyValuePair<Sheet, IFrameBuffer>>();
readonly List<(Sheet Sheet, Action Func)> doRender = new List<(Sheet, Action)>();
SheetBuilder sheetBuilderForFrame;
bool isInFrame;
public ModelRenderer(Renderer renderer, IShader shader)
{
this.renderer = renderer;
this.shader = shader;
}
public void SetPalette(ITexture palette)
{
shader.SetTexture("Palette", palette);
}
public void SetViewportParams()
{
var a = 2f / renderer.SheetSize;
var view = new[]
{
a, 0, 0, 0,
0, -a, 0, 0,
0, 0, -2 * a, 0,
-1, 1, 0, 1
};
shader.SetMatrix("View", view);
}
public ModelRenderProxy RenderAsync(
WorldRenderer wr, IEnumerable<ModelAnimation> models, in WRot camera, float scale,
in WRot groundOrientation, in WRot lightSource, float[] lightAmbientColor, float[] lightDiffuseColor,
PaletteReference color, PaletteReference normals, PaletteReference shadowPalette)
{
if (!isInFrame)
throw new InvalidOperationException("BeginFrame has not been called. You cannot render until a frame has been started.");
// Correct for inverted y-axis
var scaleTransform = Util.ScaleMatrix(scale, scale, scale);
// Correct for bogus light source definition
var lightYaw = Util.MakeFloatMatrix(new WRot(WAngle.Zero, WAngle.Zero, -lightSource.Yaw).AsMatrix());
var lightPitch = Util.MakeFloatMatrix(new WRot(WAngle.Zero, -lightSource.Pitch, WAngle.Zero).AsMatrix());
var ground = Util.MakeFloatMatrix(groundOrientation.AsMatrix());
var shadowTransform = Util.MatrixMultiply(Util.MatrixMultiply(lightPitch, lightYaw), Util.MatrixInverse(ground));
var groundNormal = Util.MatrixVectorMultiply(ground, GroundNormal);
var invShadowTransform = Util.MatrixInverse(shadowTransform);
var cameraTransform = Util.MakeFloatMatrix(camera.AsMatrix());
var invCameraTransform = Util.MatrixInverse(cameraTransform);
if (invCameraTransform == null)
throw new InvalidOperationException("Failed to invert the cameraTransform matrix during RenderAsync.");
// Sprite rectangle
var tl = new float2(float.MaxValue, float.MaxValue);
var br = new float2(float.MinValue, float.MinValue);
// Shadow sprite rectangle
var stl = new float2(float.MaxValue, float.MaxValue);
var sbr = new float2(float.MinValue, float.MinValue);
foreach (var m in models)
{
// Convert screen offset back to world coords
var offsetVec = Util.MatrixVectorMultiply(invCameraTransform, wr.ScreenVector(m.OffsetFunc()));
var offsetTransform = Util.TranslationMatrix(offsetVec[0], offsetVec[1], offsetVec[2]);
var worldTransform = Util.MakeFloatMatrix(m.RotationFunc().AsMatrix());
worldTransform = Util.MatrixMultiply(scaleTransform, worldTransform);
worldTransform = Util.MatrixMultiply(offsetTransform, worldTransform);
var bounds = m.Model.Bounds(m.FrameFunc());
var worldBounds = Util.MatrixAABBMultiply(worldTransform, bounds);
var screenBounds = Util.MatrixAABBMultiply(cameraTransform, worldBounds);
var shadowBounds = Util.MatrixAABBMultiply(shadowTransform, worldBounds);
// Aggregate bounds rects
tl = float2.Min(tl, new float2(screenBounds[0], screenBounds[1]));
br = float2.Max(br, new float2(screenBounds[3], screenBounds[4]));
stl = float2.Min(stl, new float2(shadowBounds[0], shadowBounds[1]));
sbr = float2.Max(sbr, new float2(shadowBounds[3], shadowBounds[4]));
}
// Inflate rects to ensure rendering is within bounds
tl -= SpritePadding;
br += SpritePadding;
stl -= SpritePadding;
sbr += SpritePadding;
// Corners of the shadow quad, in shadow-space
var corners = new float[][]
{
new[] { stl.X, stl.Y, 0, 1 },
new[] { sbr.X, sbr.Y, 0, 1 },
new[] { sbr.X, stl.Y, 0, 1 },
new[] { stl.X, sbr.Y, 0, 1 }
};
var shadowScreenTransform = Util.MatrixMultiply(cameraTransform, invShadowTransform);
var shadowGroundNormal = Util.MatrixVectorMultiply(shadowTransform, groundNormal);
var screenCorners = new float3[4];
for (var j = 0; j < 4; j++)
{
// Project to ground plane
corners[j][2] = -(corners[j][1] * shadowGroundNormal[1] / shadowGroundNormal[2] +
corners[j][0] * shadowGroundNormal[0] / shadowGroundNormal[2]);
// Rotate to camera-space
corners[j] = Util.MatrixVectorMultiply(shadowScreenTransform, corners[j]);
screenCorners[j] = new float3(corners[j][0], corners[j][1], 0);
}
// Shadows are rendered at twice the resolution to reduce artifacts
CalculateSpriteGeometry(tl, br, 1, out var spriteSize, out var spriteOffset);
CalculateSpriteGeometry(stl, sbr, 2, out var shadowSpriteSize, out var shadowSpriteOffset);
if (sheetBuilderForFrame == null)
sheetBuilderForFrame = new SheetBuilder(SheetType.BGRA, AllocateSheet);
var sprite = sheetBuilderForFrame.Allocate(spriteSize, 0, spriteOffset);
var shadowSprite = sheetBuilderForFrame.Allocate(shadowSpriteSize, 0, shadowSpriteOffset);
var sb = sprite.Bounds;
var ssb = shadowSprite.Bounds;
var spriteCenter = new float2(sb.Left + sb.Width / 2, sb.Top + sb.Height / 2);
var shadowCenter = new float2(ssb.Left + ssb.Width / 2, ssb.Top + ssb.Height / 2);
var translateMtx = Util.TranslationMatrix(spriteCenter.X - spriteOffset.X, renderer.SheetSize - (spriteCenter.Y - spriteOffset.Y), 0);
var shadowTranslateMtx = Util.TranslationMatrix(shadowCenter.X - shadowSpriteOffset.X, renderer.SheetSize - (shadowCenter.Y - shadowSpriteOffset.Y), 0);
var correctionTransform = Util.MatrixMultiply(translateMtx, FlipMtx);
var shadowCorrectionTransform = Util.MatrixMultiply(shadowTranslateMtx, ShadowScaleFlipMtx);
doRender.Add((sprite.Sheet, () =>
{
foreach (var m in models)
{
// Convert screen offset to world offset
var offsetVec = Util.MatrixVectorMultiply(invCameraTransform, wr.ScreenVector(m.OffsetFunc()));
var offsetTransform = Util.TranslationMatrix(offsetVec[0], offsetVec[1], offsetVec[2]);
var rotations = Util.MakeFloatMatrix(m.RotationFunc().AsMatrix());
var worldTransform = Util.MatrixMultiply(scaleTransform, rotations);
worldTransform = Util.MatrixMultiply(offsetTransform, worldTransform);
var transform = Util.MatrixMultiply(cameraTransform, worldTransform);
transform = Util.MatrixMultiply(correctionTransform, transform);
var shadow = Util.MatrixMultiply(shadowTransform, worldTransform);
shadow = Util.MatrixMultiply(shadowCorrectionTransform, shadow);
var lightTransform = Util.MatrixMultiply(Util.MatrixInverse(rotations), invShadowTransform);
var frame = m.FrameFunc();
for (uint i = 0; i < m.Model.Sections; i++)
{
var rd = m.Model.RenderData(i);
var t = m.Model.TransformationMatrix(i, frame);
var it = Util.MatrixInverse(t);
if (it == null)
throw new InvalidOperationException($"Failed to invert the transformed matrix of frame {i} during RenderAsync.");
// Transform light vector from shadow -> world -> limb coords
var lightDirection = ExtractRotationVector(Util.MatrixMultiply(it, lightTransform));
Render(rd, wr.World.ModelCache, Util.MatrixMultiply(transform, t), lightDirection,
lightAmbientColor, lightDiffuseColor, color.TextureMidIndex, normals.TextureMidIndex);
// Disable shadow normals by forcing zero diffuse and identity ambient light
if (m.ShowShadow)
Render(rd, wr.World.ModelCache, Util.MatrixMultiply(shadow, t), lightDirection,
ShadowAmbient, ShadowDiffuse, shadowPalette.TextureMidIndex, normals.TextureMidIndex);
}
}
}));
var screenLightVector = Util.MatrixVectorMultiply(invShadowTransform, ZVector);
screenLightVector = Util.MatrixVectorMultiply(cameraTransform, screenLightVector);
return new ModelRenderProxy(sprite, shadowSprite, screenCorners, -screenLightVector[2] / screenLightVector[1]);
}
static void CalculateSpriteGeometry(float2 tl, float2 br, float scale, out Size size, out int2 offset)
{
var width = (int)(scale * (br.X - tl.X));
var height = (int)(scale * (br.Y - tl.Y));
offset = (0.5f * scale * (br + tl)).ToInt2();
// Width and height must be even to avoid rendering glitches
if ((width & 1) == 1)
width += 1;
if ((height & 1) == 1)
height += 1;
size = new Size(width, height);
}
static float[] ExtractRotationVector(float[] mtx)
{
var tVec = Util.MatrixVectorMultiply(mtx, ZVector);
var tOrigin = Util.MatrixVectorMultiply(mtx, ZeroVector);
tVec[0] -= tOrigin[0] * tVec[3] / tOrigin[3];
tVec[1] -= tOrigin[1] * tVec[3] / tOrigin[3];
tVec[2] -= tOrigin[2] * tVec[3] / tOrigin[3];
// Renormalize
var w = (float)Math.Sqrt(tVec[0] * tVec[0] + tVec[1] * tVec[1] + tVec[2] * tVec[2]);
tVec[0] /= w;
tVec[1] /= w;
tVec[2] /= w;
tVec[3] = 1f;
return tVec;
}
void Render(
ModelRenderData renderData,
IModelCache cache,
float[] t, float[] lightDirection,
float[] ambientLight, float[] diffuseLight,
float colorPaletteTextureMidIndex, float normalsPaletteTextureMidIndex)
{
shader.SetTexture("DiffuseTexture", renderData.Sheet.GetTexture());
shader.SetVec("PaletteRows", colorPaletteTextureMidIndex, normalsPaletteTextureMidIndex);
shader.SetMatrix("TransformMatrix", t);
shader.SetVec("LightDirection", lightDirection, 4);
shader.SetVec("AmbientLight", ambientLight, 3);
shader.SetVec("DiffuseLight", diffuseLight, 3);
shader.PrepareRender();
renderer.DrawBatch(cache.VertexBuffer, renderData.Start, renderData.Count, PrimitiveType.TriangleList);
}
public void BeginFrame()
{
if (isInFrame)
throw new InvalidOperationException("BeginFrame has already been called. A new frame cannot be started until EndFrame has been called.");
isInFrame = true;
foreach (var kv in mappedBuffers)
unmappedBuffers.Push(kv);
mappedBuffers.Clear();
}
IFrameBuffer EnableFrameBuffer(Sheet s)
{
var fbo = mappedBuffers[s];
Game.Renderer.Flush();
fbo.Bind();
Game.Renderer.Context.EnableDepthBuffer();
return fbo;
}
void DisableFrameBuffer(IFrameBuffer fbo)
{
Game.Renderer.Flush();
Game.Renderer.Context.DisableDepthBuffer();
fbo.Unbind();
}
public void EndFrame()
{
if (!isInFrame)
throw new InvalidOperationException("BeginFrame has not been called. There is no frame to end.");
isInFrame = false;
sheetBuilderForFrame = null;
if (doRender.Count == 0)
return;
Sheet currentSheet = null;
IFrameBuffer fbo = null;
foreach (var v in doRender)
{
// Change sheet
if (v.Sheet != currentSheet)
{
if (fbo != null)
DisableFrameBuffer(fbo);
currentSheet = v.Sheet;
fbo = EnableFrameBuffer(currentSheet);
}
v.Func();
}
if (fbo != null)
DisableFrameBuffer(fbo);
doRender.Clear();
}
public Sheet AllocateSheet()
{
// Reuse cached fbo
if (unmappedBuffers.Count > 0)
{
var kv = unmappedBuffers.Pop();
mappedBuffers.Add(kv.Key, kv.Value);
return kv.Key;
}
var size = new Size(renderer.SheetSize, renderer.SheetSize);
var framebuffer = renderer.Context.CreateFrameBuffer(size);
var sheet = new Sheet(SheetType.BGRA, framebuffer.Texture);
mappedBuffers.Add(sheet, framebuffer);
return sheet;
}
public void Dispose()
{
foreach (var kvp in mappedBuffers.Concat(unmappedBuffers))
{
kvp.Key.Dispose();
kvp.Value.Dispose();
}
mappedBuffers.Clear();
unmappedBuffers.Clear();
}
}
}

View File

@@ -1,20 +1,18 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Reflection;
using System.Runtime.InteropServices;
using OpenRA.Primitives;
namespace OpenRA.Graphics
{
@@ -35,35 +33,6 @@ namespace OpenRA.Graphics
return Color.FromArgb((int)palette[index]);
}
public static ColorPalette AsSystemPalette(this IPalette palette)
{
ColorPalette pal;
using (var b = new Bitmap(1, 1, PixelFormat.Format8bppIndexed))
pal = b.Palette;
for (var i = 0; i < Size; i++)
pal.Entries[i] = palette.GetColor(i);
// hack around a mono bug -- the palette flags get set wrong.
if (Platform.CurrentPlatform != PlatformType.Windows)
typeof(ColorPalette).GetField("flags",
BindingFlags.Instance | BindingFlags.NonPublic).SetValue(pal, 1);
return pal;
}
public static Bitmap AsBitmap(this IPalette palette)
{
var b = new Bitmap(Size, 1, PixelFormat.Format32bppArgb);
var data = b.LockBits(new Rectangle(0, 0, b.Width, b.Height),
ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
var temp = new uint[Palette.Size];
palette.CopyToArray(temp, 0);
Marshal.Copy((int[])(object)temp, 0, data.Scan0, Size);
b.UnlockBits(data);
return b;
}
public static IPalette AsReadOnly(this IPalette palette)
{
if (palette is ImmutablePalette)
@@ -73,9 +42,10 @@ namespace OpenRA.Graphics
class ReadOnlyPalette : IPalette
{
IPalette palette;
readonly IPalette palette;
public ReadOnlyPalette(IPalette palette) { this.palette = palette; }
public uint this[int index] { get { return palette[index]; } }
public uint this[int index] => palette[index];
public void CopyToArray(Array destination, int destinationOffset)
{
palette.CopyToArray(destination, destinationOffset);
@@ -87,28 +57,25 @@ namespace OpenRA.Graphics
{
readonly uint[] colors = new uint[Palette.Size];
public uint this[int index]
{
get { return colors[index]; }
}
public uint this[int index] => colors[index];
public void CopyToArray(Array destination, int destinationOffset)
{
Buffer.BlockCopy(colors, 0, destination, destinationOffset * 4, Palette.Size * 4);
}
public ImmutablePalette(string filename, int[] remap)
public ImmutablePalette(string filename, int[] remapTransparent, int[] remap)
{
using (var s = File.OpenRead(filename))
LoadFromStream(s, remap);
LoadFromStream(s, remapTransparent, remap);
}
public ImmutablePalette(Stream s, int[] remapShadow)
public ImmutablePalette(Stream s, int[] remapTransparent, int[] remapShadow)
{
LoadFromStream(s, remapShadow);
LoadFromStream(s, remapTransparent, remapShadow);
}
void LoadFromStream(Stream s, int[] remapShadow)
void LoadFromStream(Stream s, int[] remapTransparent, int[] remapShadow)
{
using (var reader = new BinaryReader(s))
for (var i = 0; i < Palette.Size; i++)
@@ -116,10 +83,18 @@ namespace OpenRA.Graphics
var r = (byte)(reader.ReadByte() << 2);
var g = (byte)(reader.ReadByte() << 2);
var b = (byte)(reader.ReadByte() << 2);
// Replicate high bits into the (currently zero) low bits.
r |= (byte)(r >> 6);
g |= (byte)(g >> 6);
b |= (byte)(b >> 6);
colors[i] = (uint)((255 << 24) | (r << 16) | (g << 8) | b);
}
colors[0] = 0; // Convert black background to transparency.
foreach (var i in remapTransparent)
colors[i] = 0;
foreach (var i in remapShadow)
colors[i] = 140u << 24;
}
@@ -133,7 +108,7 @@ namespace OpenRA.Graphics
public ImmutablePalette(IPalette p)
{
for (int i = 0; i < Palette.Size; i++)
for (var i = 0; i < Palette.Size; i++)
colors[i] = p[i];
}
@@ -151,8 +126,8 @@ namespace OpenRA.Graphics
public uint this[int index]
{
get { return colors[index]; }
set { colors[index] = value; }
get => colors[index];
set => colors[index] = value;
}
public void CopyToArray(Array destination, int destinationOffset)

View File

@@ -1,19 +1,14 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2022 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using OpenRA.Traits;
namespace OpenRA.Graphics
{
public sealed class PaletteReference
@@ -23,8 +18,8 @@ namespace OpenRA.Graphics
public readonly string Name;
public IPalette Palette { get; internal set; }
public float TextureIndex { get { return index / hardwarePalette.Height; } }
public float TextureMidIndex { get { return (index + 0.5f) / hardwarePalette.Height; } }
public float TextureIndex => index / hardwarePalette.Height;
public float TextureMidIndex => (index + 0.5f) / hardwarePalette.Height;
public PaletteReference(string name, int index, IPalette palette, HardwarePalette hardwarePalette)
{
@@ -33,5 +28,7 @@ namespace OpenRA.Graphics
this.index = index;
this.hardwarePalette = hardwarePalette;
}
public bool HasColorShift => hardwarePalette.HasColorShift(Name);
}
}

Some files were not shown because too many files have changed in this diff Show More