Commit Graph

499 Commits

Author SHA1 Message Date
Ted John a863c7ae50 Remove rest of FOR_ALL_RIDES instances 2019-08-04 16:44:17 +01:00
Ted John 414b53b56d Remove ride classifications 2019-08-04 16:43:50 +01:00
Ted John a3fe00f0a3 Refactor ride list to a manager with iterator 2019-08-04 16:43:50 +01:00
Ted John 3f8890afde Fix remaining errors and a few bugs 2019-07-29 19:18:16 +01:00
Ted John 6f0298deb3 Refactor ride measurement storage 2019-06-09 11:55:41 +02:00
Gymnasiast f0f09c7f6b Fix tests 2019-05-28 16:50:08 +01:00
Tom Lankhorst ed353faccf Implement replace_if condition lambda
Fix include typo and CS
2019-05-11 13:54:16 +01:00
Tom Lankhorst 744f2225ed Write platform tests 2019-05-11 13:54:16 +01:00
Gymnasiast 17ddd451db Fix tests, fix formatting 2019-05-07 20:04:07 +02:00
NexGenration e6c88a05db Make peep generate a static member function 2019-05-07 19:34:50 +02:00
Michael Steenbeek 5a906b2378
Port more functions to Ride struct (#9119) 2019-04-20 22:22:39 +02:00
Michael Steenbeek 42a1a8704d
Use empty() for vectors; clean up bool comparisons (#9118) 2019-04-20 20:39:47 +02:00
Matt 37c3809744 Implement partial multicore rendering 2019-03-31 15:50:55 +02:00
Duncan 9c4430736d
Use get track element (#8884)
* Use get_track_element and change its return type

* Make things work

* Use helper functions where possible
2019-03-16 11:21:36 +00:00
Matt 15838861cd Add load and save test. 2019-03-02 13:11:08 +01:00
Ted John cdec457abd Refactor peep struct 2019-02-28 20:28:58 +01:00
duncanspumpkin 9d78bb0d4e Fix compile and formating 2019-02-27 10:54:08 +00:00
duncanspumpkin eb9ecea92e Add IsGhost to the testpaint calls 2019-02-26 08:50:04 +00:00
Matt c631177877 [ci skip] Add bpb.sv6 to the replays with 7000 ticks. 2019-02-16 09:09:51 +01:00
Michał Janiszewski 5e74f7487d
Merge pull request #8700 from janisozaur/icc-fixes
Icc fixes
2019-02-10 12:21:33 +01:00
ζeh Matt 20989ae4d8
Merge pull request #8675 from tomlankhorst/compress-replays
.sv6r version 2: introducing compression
2019-02-10 11:01:26 +01:00
Michał Janiszewski 5faf2d393b Fix ride_type_has_flag signature for testpaint 2019-02-10 00:32:46 +01:00
Michał Janiszewski 2f16ad164d
Merge pull request #8671 from tomlankhorst/cmake-link-with-platform
Link targets with platform specific libs
2019-02-07 23:40:46 +01:00
Matt 598ea08529 Update copyright. 2019-02-07 18:50:58 +01:00
Matt 49a6ae7894 Add CircularBuffer test. 2019-02-07 18:50:58 +01:00
Tom Lankhorst 756b52186e
Normalised and upgraded all replays 2019-02-06 10:24:10 +01:00
Tom Lankhorst 94758bccf6
Link with platform libraries 2019-02-05 20:17:14 +01:00
Michał Janiszewski 6bdbe248fd
Merge pull request #8641 from tomlankhorst/use-lto
Detect availability of LTO, apply when available
2019-02-04 00:06:37 +01:00
Tom Lankhorst ce6e08c633
Introduce SET_CHECK_CXX_FLAGS 2019-02-03 23:32:51 +01:00
Tom Lankhorst 6a42a95495
Refactor random engine
Introduce RotateEngine and Rct2Engine, FixedSeedSequence and Rct2Seed.
Adhere respectively to requirements `RandomNumberEngine` and `SeedSequence`.
Can be used with C++11 adaptors and distributions in <random>.
2019-02-01 14:32:04 +01:00
Tom Lankhorst 22fac20907 Include ICU include dirs in testpaint (#8622)
`testpaint` uses ICU headers, so add the ICU_INCLUDE_DIR to the target.
2019-01-23 14:30:49 +01:00
Gymnasiast 74a3674e86 Replace more hardcoded instances of RIDE_ID_NULL 2019-01-12 12:38:23 +01:00
Ted John 8701286772
Use new ride_id_t typedef (#8561) 2019-01-12 10:11:55 +00:00
Matt b01c93ba4c Normalise replays. 2019-01-07 09:04:51 +01:00
Michael Steenbeek 31298bd772
Merge pull request #8543 from IntelOrca/refactor-ride
Refactor ride structure
2019-01-02 22:38:20 +01:00
Michał Janiszewski 37535f4642 Release ImageImporter'd buffer after the test is done 2019-01-02 20:14:28 +01:00
Richard Fine cec457fbf1 Reformat 2019-01-02 14:12:51 +00:00
Richard Fine 315ea057fe Verify that peeps stay on paths
As per PR recommendation, confirm that a peep is still on the footpath for every step of the pathfinding tests.
2019-01-02 14:12:51 +00:00
Richard Fine bb4e79ddda Rework tests to use ride entrances as path targets
It turns out that trying to just give a peep a pathfinding goal and then let them loose doesn't work, because every time they reach a junction, the pathfinder has them walk 'aimlessly' instead of pursuing their target. That's why we were seeing some very large step counts in previous tests - they were (eventually) walking onto the target square, but only after lots of wandering around in circles.

This commit reworks the test data to contain an actual ride for each test scenario, where the peep will path to the tile in front of the ride entrance. A nice side benefit of this is that the ride names must match the test names, so you can now tell from looking at the rides in the test data which one is used for which test instance.

The 'yellow marker' tiles for goal positions are also removed here, as we're deriving goal positions from the ride entrances instead.
2019-01-02 14:12:51 +00:00
Richard Fine c8c1abd10a Reformat 2019-01-02 14:12:51 +00:00
Richard Fine a20c8d61be Call core_init instead of bitcount_init 2019-01-02 14:12:51 +00:00
Richard Fine 280a0c61e4 Rename maxSteps to expectedSteps
To make it a little clearer what the parameter is for, rename FindPath::maxSteps to FindPath::expectedSteps, and extend the comment to describe what happens in negative test scenarios.
2019-01-02 14:12:51 +00:00
Richard Fine 357ee293f3 Remove default value for SimplePathfindingScenario steps
Remove the default value as it's more consistent to just always have the test case specify it explicitly.
2019-01-02 14:12:51 +00:00
Richard Fine 49e46f8940 Replace GetSurfaceStyleAtLocation with map_get_surface_element_at
There exists a helper function map_get_surface_element_at which already searches a tile's element list for the surface element, so we can just use that.
2019-01-02 14:12:51 +00:00
Michał Janiszewski f4685f7b94 Add Pathfinding test to CMake 2019-01-02 14:12:51 +00:00
Richard Fine 8fb81a2d89 Initial data-driven tests for pathfinder behaviour
Introduce some basic scenario-style tests for the pathfinding AI. There
are two tests:

* Test that a peep can get from a given start position to a given end
  position, and that it takes them an expected number of ticks to do so.
  Also test that they did not walk on any 'forbidden' tiles in the process,
  e.g. tiles that are completely the wrong direction from the goal etc.

* Test that a peep can *not* get from a given start position to a given
  end position after a given number of ticks.

Each test is parametric, and instantiated for multiple different
start/end positions within the provided test park. If we find a new
situation that needs a test, it should just be a matter of building
that situation in the saved game and then adding a line to the code to
set it up.

Indicating 'forbidden' tiles is done using terrain surface type IDs:
tiles that the pathfinder should never send the peep into should be
painted with the red neon surface type (index 8). This means we have
no way to forbid some path elements on a tile while allowing others,
but we don't need that right now.

Similarly, to help ensure that the test data and code are kept in
sync, the tests also require that peep start tiles are painted with
the green neon surface type (index 11) and that goal tiles are
painted with the yellow neon surface type (index 9).
2019-01-02 14:12:08 +00:00
Matt 045e72e863 Add more replays to test. 2019-01-02 08:30:33 +01:00
Matt 8615690891 Fix timestamp not being stored. 2019-01-02 05:36:31 +01:00
Ted John 37f76d1687 Move station fields into new station struct 2019-01-01 02:26:14 +00:00
Matt 8721bef807 Fix TileElementWantsFootpathConnection test not releasing context. 2018-12-30 12:24:41 +01:00