Commit Graph

3883 Commits

Author SHA1 Message Date
Gymnasiast ad2698df0d Move 'should draw path over supports' to tile element 2019-01-20 17:23:27 +01:00
Gymnasiast 1f6d4caf7c Rename some variables 2019-01-20 17:23:27 +01:00
Gymnasiast 2f0b6a9652 Rename FOOTPATH_ENTRY_FLAG_HAS_PATH_BASE_SPRITE 2019-01-20 17:23:27 +01:00
Gymnasiast 73e25399d3 Rename footpathEntry to railingEntry where appropriate 2019-01-20 17:23:27 +01:00
Gymnasiast 9da5b5d513 Rename path_paint_{box,pole}_support parameter 2019-01-20 17:23:27 +01:00
deurklink 5e39147b76 Fix #8584: Ducks spawning function doesnt check tiles 0..63 (original bug) (#8614) 2019-01-20 13:20:01 +01:00
Lars Toenning 7de115263e Fix #8377: Change number of autosaves that are stored (#8440) 2019-01-19 14:31:12 +01:00
Michael Steenbeek 6ef01b3cd3
Name some path drawing variables 2019-01-18 20:35:43 +01:00
Michael Steenbeek b4bef2fe7d
Merge pull request #8560 from richard-fine/directions
Begin cleanup of direction handling
2019-01-18 19:09:39 +01:00
Ted John 92412d4bab Store ride index inside ride struct 2019-01-18 11:46:18 +01:00
ζeh Matt a34422dc26 Fix #8591: Game loop does not run at a consistent tick rate of 40 Hz (#8594)
* Fix #8591: Run game loop at consistent tick rate of 40hz.

* Update distribution/changelog.txt

Co-Authored-By: ZehMatt <m.moninger.h@gmail.com>
2019-01-17 23:22:27 +01:00
deurklink 51fc2fe84a Feature #8583: Add booster pieces for water coaster
Co-Authored-By: deurklink
2019-01-14 22:17:52 +01:00
Michał Janiszewski b27428835c Change http://backtrace.io token
Someone seems to be trying to use up all our backtrace.io quota by
submitting the same bug over and over again which was fixed in
https://github.com/OpenRCT2/OpenRCT2/pull/8533, 17 days ago now.

To prevent such behaviour, I've disabled the old token and replaced it
with a new one, causing dumps from old builds to be rejected now and not
counting towards our quota.
2019-01-14 21:18:33 +01:00
Gymnasiast 87f894079b Replace hardcoded occurrences of RIDE_ENTRY_INDEX_NULL 2019-01-12 12:48:35 +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
Michael Steenbeek fdba61002f
Add station index to Tile Inspector 2019-01-08 11:25:12 +01:00
Michał Janiszewski 0d2fd33fd8 Bump network version
Co-Authored-By: ZehMatt <m.moninger.h@gmail.com>
2019-01-07 09:04:51 +01:00
Matt 9f613833ce Rename actions. 2019-01-07 09:04:51 +01:00
IntelOrca b9fd90ffd3 Implement ClearAction. 2019-01-07 09:04:51 +01:00
Matt d7096f71cb Implement SceneryRemoveLargeAction. 2019-01-07 09:04:51 +01:00
Matt b34b09c6bb Implement SceneryRemoveSmallAction. 2019-01-07 09:04:51 +01:00
Richard Fine 3b9dd87caf Make direction_reverse constexpr and pass arg by value
To make totally sure that the compiler understands it can fully compute the value at compile time when dealing with constant inputs, and to make totally sure there are no aliasing problems.
2019-01-06 11:58:28 +00:00
Ted John 0328355f9e Include stdexcept instead of exception (#8559) 2019-01-05 22:12:47 +01:00
Richard Fine b77f1285a4 Reformat 2019-01-05 19:48:12 +00:00
Richard Fine e90e9dd73f Introduce many uses of direction_reverse
Change many of the places doing the ^2 trick to use direction_reverse instead, for improved readability.
2019-01-05 15:41:46 +00:00
Richard Fine fd60654238 Add comments and direction_reverse function
Add a bit of Javadocs, and introduce helper function for reversing directions because the ^2 trick used elsewhere in the codebase is not immediately obvious exactly what it does.
2019-01-05 14:28:24 +00:00
Richard Fine 613c7e9bf3 Introduce 'Direction' typedef
Directions are used quite widely across the codebase, but right now we just use uint8_t for them. Defining a proper type makes the intention clearer.
2019-01-05 13:58:32 +00:00
Hielke Morsink 53ae48ffca
Merge pull request #8550 from janisozaur/fallthroughs
Fix implicit fallthroughs
2019-01-04 23:27:02 +01:00
Hielke Morsink 5ef5e4153d Fix some more implicit and conditional fallthroughs 2019-01-04 22:26:56 +01:00
Michał Janiszewski 8a70b29f64
Fix GCC's warning regarding enum vs non-enum values being compared (#8551) 2019-01-04 21:29:44 +01:00
Michał Janiszewski 7e769ed662 Fix #7536: Android build fails to start (#8554)
This was a regression from #7435 which introduced threads and caused JNI
to misbehave and fail to load our expected classes. Provide a workaround
based on the description in https://stackoverflow.com/a/16302771 which
stores a main thread's class loader and uses that in neighbouring
threads.
2019-01-04 19:48:26 +01:00
ζeh Matt 20496b0390
Merge pull request #8545 from richard-fine/use-enum-types
Use of enum types in Peep code
2019-01-04 10:57:56 +01:00
ζeh Matt 069052c685 Fix replays not working in some cases. (#8552) 2019-01-04 10:45:21 +01:00
Richard Fine a30e154388 Handle all enum values in switches
Add 'default' cases to a few enums that were not otherwise handling all possible enum values. This wasn't a problem before because the variables we were switching on were not actually enum types, but now that they are, Clang is warning us about the non-covered cases.
2019-01-03 12:06:47 +00: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 c5e1abcfb1 Fix implicit fallthroughs 2019-01-02 22:30:57 +01:00
Michał Janiszewski b7d1d49956
Merge pull request #8548 from janisozaur/memleak-20190102
Plug memory leaks
2019-01-02 21:23:09 +01:00
Ted John d979511628 Do code review suggestions 2019-01-02 19:46:13 +00:00
Gymnasiast 7c8144b57d Fix codepoint of interpunct 2019-01-02 20:04:42 +01:00
Michał Janiszewski ca3d9cea91 Add missing free() call in config_release() 2019-01-02 20:02:14 +01:00
Michał Janiszewski 635e46af83 Plug memory leak in ObjectFactory::CreateObjectFromZipFile 2019-01-02 19:57:41 +01:00
Michael Steenbeek b5317ee9e9
Split drawing of path and railing 2019-01-02 19:52:53 +01:00
Richard Fine 3089781883 Reformat 2019-01-02 14:40:17 +00:00
Richard Fine b845304656 Equality operators for TileCoordsXYZ
Introduce operator == and operator != for TileCoordsXYZ, so that we can more easily operate on them in tests.
2019-01-02 14:11:28 +00:00
Richard Fine 60396c6658 Rename enums to modern style
Change various PEEP_ENUM_TYPE names to PeepEnumType names, to match the more modern coding standard.
2019-01-02 14:10:05 +00:00
ζeh Matt a065806b20
Merge pull request #8374 from ZehMatt/replay-feature
Add support to record and replay game commands/actions.
2019-01-02 09:15:10 +01:00
Matt 7955dba9ba Add warning for mismatching network version. 2019-01-02 06:58:36 +01:00
Matt fc4e45562d Use stringstream to log integral values. 2019-01-02 06:39:59 +01:00
Matt 74668c6188 Use correct file path on replay info output. 2019-01-02 05:39:32 +01:00
Matt 8615690891 Fix timestamp not being stored. 2019-01-02 05:36:31 +01:00
Matt 6aee1cba28 Remove deprecated function std::asctime. 2019-01-02 05:35:57 +01:00
Matt 1f20fdf65b Log more replay information to console. 2019-01-02 05:20:10 +01:00
Matt a8254aa292 Add 64 bit serialisation support. 2019-01-02 05:18:36 +01:00
Matt fafd2081e3 Result NewsItem when adding to queue. 2019-01-02 05:03:42 +01:00
Richard Fine 88beb4ee6a Define PEEP_ACTION_SPRITE_TYPE_WATCH_RIDE
Previously untitled "PEEP_ACTION_SPRITE_TYPE_2" is a single-frame animation that guests play when they are standing still and watching a ride.
2019-01-01 23:17:45 +00:00
Richard Fine a5e896f0c3 Use PEEP_ACTION_SPRITE_TYPE in the peep drawing code 2019-01-01 23:07:13 +00:00
Richard Fine 73686e84d6 Define PEEP_ACTION_SPRITE_TYPE_SITTING_IDLE
Previously untitled 'PEEP_ACTION_SPRITE_TYPE7' is actually a single-frame animation for sitting on benches, from looking at the sprite. Makes sense with the way the value is used in the code too.
2019-01-01 23:06:57 +00:00
Richard Fine f3292194f5 Use PEEP_SPRITE_TYPE enum
Use the PEEP_SPRITE_TYPE enum for rct_peep::sprite_type so we get type safety on it.
2019-01-01 22:40:59 +00:00
Richard Fine 88850cdab2 Use PEEP_ACTION_SPRITE_TYPE enum
Use the PEEP_ACTION_SPRITE_TYPE enum for rct_peep::action_sprite_type and ::next_action_sprite_type, as well as other code that deals with action sprite types.
2019-01-01 22:29:26 +00:00
Richard Fine 38cec94d9d Use PEEP_THOUGHT_TYPE enum
Use PEEP_THOUGHT_TYPE for rct_peep_thought::type field, as well as functions that deal with selecting thoughts to add.
2019-01-01 22:18:49 +00:00
Richard Fine b716fd071d Use PEEP_TYPE enum for rct_peep::type field
Use the PEEP_TYPE enum for rct_peep::type so that the compiler/debugger understand what values it should contain.
2019-01-01 22:11:02 +00:00
Richard Fine e1016bf71e Use PEEP_ACTION_EVENTS enum for rct_peep::action field
Use the PEEP_ACTION_EVENTS enum for the rct_peep::action field explicitly, so that we get type safety on it from the compiler and debugger. In the process, force PEEP_ACTION_EVENTS to be of size uint8_t, and use named constants for NONE actions instead of magic numbers in a few places.
2019-01-01 22:06:02 +00:00
Ted John 38f632074b Merge ride track colour arrays into one 2019-01-01 21:25:34 +00:00
Richard Fine 88b86eb0c1 Use PEEP_STATE enum type directly
Explicitly declare the PEEP_STATE enum as being uint8_t width, then use it instead of uint8_t in the rct_peep struct. This has a few benefits:

* It makes it clearer which values we expect to be assigned to that variable. If you hadn't already seen PEEP_STATE existed, it wouldn't be obvious.
* It lets the compiler catch assignment of non-PEEP_STATE values for us
* It lets the debugger show us symbolic constants when looking at a peep, instead of raw values.

The only downside is that we no longer see directly in the rct_peep struct that the field is 1 byte wide, but I think that the benefits outweigh the costs in this case...
2019-01-01 20:49:17 +00:00
Ted John 37f76d1687 Move station fields into new station struct 2019-01-01 02:26:14 +00:00
Ted John 8e6497fc1d Merge vehicle_colours and vehicle_colours_extended 2018-12-31 19:25:07 +00:00
Ted John 153ab15428 Fix #8493: Remove_unused_scenery removes map data
Do not try to remove (unused) terrain surfaces, edges and stations.
2018-12-30 23:40:22 +00:00
Matt 8721bef807 Fix TileElementWantsFootpathConnection test not releasing context. 2018-12-30 12:24:41 +01:00
Matt 38dc762f62 Initialize gCommandPosition with LOCATION_NULL in case its not set. 2018-12-30 00:04:34 +01:00
Matt 19ffc6208f Add version to replay file. 2018-12-30 00:03:20 +01:00
Matt c7ab757a86 Cleanup. 2018-12-29 23:06:15 +01:00
Matt 0ba42d6899 Fix TileElementWantsFootpathConnection test not releasing context. 2018-12-29 22:58:33 +01:00
Matt b0ca9ff7c5 Prevent replay manager from recording nested commands. 2018-12-29 19:23:28 +01:00
Matt bf03de4755 Focus camera on last replay event. 2018-12-29 19:23:28 +01:00
Matt d3a20df682 Fix track designs ignoring ghost/preview flags. 2018-12-29 19:23:28 +01:00
Matt 14695e9b41 Fix game actions with ghost flags being recorded to replays. 2018-12-29 19:23:28 +01:00
Matt d1ee19efd4 Fix track design previews not passing flags down. 2018-12-29 19:23:28 +01:00
Matt 5a8b611b83 Update. 2018-12-29 19:23:28 +01:00
Matt 5cfc06573e Ignore replay test when network is disabled. 2018-12-29 19:23:27 +01:00
Matt ccc3227113 Cleanup. 2018-12-29 19:23:27 +01:00
Matt 040522b708 Fix include. 2018-12-29 19:23:27 +01:00
Matt 017f190a52 Add basic regression tests via the replay system. 2018-12-29 19:23:27 +01:00
Matt 7fa9ce3054 Store state important park parameters in the replay. 2018-12-29 19:23:27 +01:00
Matt df0cc72887 Add normalisation support to remove gaps. 2018-12-29 19:23:27 +01:00
Matt b6c2dca849 Adjust replay notification position. 2018-12-29 19:23:27 +01:00
Matt f6dbf5f1a2 Add std::array serialiser support. 2018-12-29 19:23:27 +01:00
Matt 6e2514cd0d Refactor sprite_checksum, returns rct_sprite_checksum now. 2018-12-29 19:23:27 +01:00
Matt bf8108c2d6 Lock game actions and commands to replay commands if replay is active. 2018-12-29 19:23:27 +01:00
Matt 6e8216d7c7 Add GAME_COMMAND_FLAG_REPLAY 2018-12-29 19:23:27 +01:00
Matt 624427259b Draw text notice if replay system is active. 2018-12-29 19:23:27 +01:00
Matt 3ea8ab4bb3 Cleanup serialization. 2018-12-29 19:23:27 +01:00
Michał Janiszewski d9b91055ca Fix include 2018-12-29 19:23:27 +01:00
Matt b573d5ddaa Add missing virtual destructor. 2018-12-29 19:23:27 +01:00
Matt 000a9694f9 Fix DataSerialiser not accepting temporary values. 2018-12-29 19:23:27 +01:00
Matt a6efef1e81 Add support to record and replay game commands/actions. 2018-12-29 19:23:27 +01:00
Michał Janiszewski 54403aca06 Fix the no-HTTP builds 2018-12-28 22:27:33 +01:00
Michał Janiszewski 5b467ffc68
Fix rendering of text shadows with TTF (#8533)
Only render shadow if it is within the bounds of allocated buffer.
This fixes most if not all crashes seen with rendering TTF. The cause of
the problem is rendering of shadows which is done by taking a solid
rendered text and moving it by one pixel to up, left, right and *down*.
In some cases rendering the shadow in the one-down offset will write
past the allocated surface (see
8d9fcb7f98/src/openrct2/drawing/Drawing.String.cpp (L594))
it can easily happen when trying to render a shadowed text (e.g. map
tooltip) on a peep that's just above the bottom of the viewport.
2018-12-28 11:47:08 -08:00
Matt 727ba2d7d0 Fix #8333: Replace assert with in-game error. 2018-12-23 22:28:59 +01:00
Michał Janiszewski a34957eb41 Add ride type check to rct_peep::ShouldGoOnRide 2018-12-22 15:35:26 +01:00
Michael Steenbeek 2530cd1ac3
Fix #8426: Queue banner left behind after ride demolition 2018-12-22 15:34:17 +01:00
Gymnasiast 958f287bb7 Fix typo, fix nullptr check notation 2018-12-22 15:31:28 +01:00
Michael Steenbeek 65dcdf77ea
Fix #8508: Underground roto-drop is not going up 2018-12-22 11:56:00 +01:00
Tobias 73345b414b Fix #7985: Giant Screenshot ignores 'Map rendering' settings 2018-12-21 21:27:06 +01:00
Michael Steenbeek 764fdf0648
Merge pull request #8491 from ZehMatt/preview-placement-hints
Use different colours for entrance/exit on track design previews.
2018-12-21 20:46:22 +01:00
ζeh Matt b572fffafa
Merge pull request #8457 from ZehMatt/refactor/game-action-name
Automatically expose game action name via macro.
2018-12-20 23:17:49 +01:00
Matt 4dce91e027 Move defines into Colour.h 2018-12-20 22:29:16 +01:00
Matt 4ff2dbd108 Automatically expose game action name via macro. 2018-12-20 22:20:58 +01:00
Michał Janiszewski c0fc5142ac
Merge pull request #8321 from ZehMatt/simulate-cmd
Add "simulate" command.
2018-12-20 22:08:17 +01:00
Ted John 92bb4a5897 Fix #8498: Advertisement campaigns less effective than they used to be
0x8000 was being checked instead of 0xFFFF when importing and exporting peep spawns to and from S4, S6.
2018-12-20 09:25:31 +00:00
ζeh Matt 7568123a9d Fix #8482: Pending player list not being reset. (#8483) 2018-12-19 20:34:41 +01:00
Michael Steenbeek 38b26e0ac4
Fix #8456: Junior booster track piece doesn't connect properly 2018-12-18 22:41:01 +01:00
ζeh Matt 183e508c4d
Merge pull request #8465 from ZehMatt/fix-8464
Fix #8464: Crash on game shutdown.
2018-12-18 00:55:22 +01:00
Michał Janiszewski ea61be5ebe
Prevent logging from using already-freed game command (#8473)
gc variable is held by reference in the scope above, pointing to the
queue's beginning.
2018-12-17 23:56:01 +01:00
Matt 8e2e60b117 Fix #8464: Crash on game shutdown. 2018-12-17 23:51:43 +01:00
ζeh Matt 3cc6e1ab15 Fix #8469: Crash modifying colour on hacked rides. (#8470) 2018-12-17 16:27:45 +01:00
Ted John abbdab9b6d
Merge pull request #8452 from IntelOrca/change-structures
Change a few structures from fixed to C++
2018-12-16 19:01:36 +00:00
Ted John 1d6d734c1c Fix build 2018-12-16 19:01:15 +00:00
Ted John 08b02943d3 Use std::string for scenario name, details etc. 2018-12-16 19:01:14 +00:00
Ted John 4195f0d9c9 Change gPeepSpawns to a vector so we can now have more than 2 2018-12-16 19:00:16 +00:00
Ted John 19a687f2fa Change gParkEntrance to a vector so we can now have more than 4 2018-12-16 19:00:16 +00:00
Michael Steenbeek 59f9476ecd
Change 'entrance style' to 'station style' 2018-12-16 19:38:30 +01:00
Gymnasiast 6031a9bc27 Fix SV4 import error 2018-12-16 12:49:30 +01:00
Gymnasiast 75d094e135 Fix another omission from #8453 2018-12-16 10:10:26 +01:00
ζeh Matt 7d19a5bc77 Refactor memcpy to std::memcpy and memset to std::memset (#8408) 2018-12-15 22:23:31 +01:00
Gymnasiast 748da25f78 Fix omission from #8453 2018-12-15 21:34:14 +01:00
Michael Steenbeek 7d7e8e2638
Merge pull request #8453 from Gymnasiast/fix/8033
Fix #8033: Crash when placing 64th sign
2018-12-15 21:24:09 +01:00
Michael Steenbeek 6d0f0334d7
Merge pull request #8339 from ZehMatt/realtime-ticks
Use real time ticks for UI effects.
2018-12-15 21:00:44 +01:00
Gymnasiast 600d32807d Fix #8033: Crash when placing 64th sign 2018-12-15 20:34:28 +01:00
Gymnasiast 0d775f48ec Clean up scenery ghost flags 2018-12-15 20:31:41 +01:00
ζeh Matt d88a9048f9 Fix #8431: crash when game action logging is enabled. (#8447) 2018-12-15 18:41:55 +00:00
Michael Steenbeek 705fb94f58
Fix #8406: Add 'Entrance style:' label to Ride window 2018-12-15 19:00:37 +01:00
Hielke Morsink f53bf5508b
Merge pull request #8335 from ZehMatt/vehicle-crash-fix
Fix hacked rides with no vehicles crashing the game.
2018-12-14 21:01:59 +01:00
Michael Steenbeek 596f30313b
Merge pull request #8439 from IntelOrca/fix-8433
Fix #8433 and #8434
2018-12-14 20:32:15 +01:00
ζeh Matt a78a6f2a33 Fix #8349: Ride's exit is rendered incorrectly while building it 2018-12-14 20:08:18 +01:00
Ted John fecf4ac3e8 Fix #8434: Crash if curl_easy_init fails 2018-12-14 17:10:50 +00:00
Matt f0bd72732c Fix hacked rides with no vehicles crashing the game. 2018-12-14 00:04:35 +01:00
Ted John ab53c69c3c Use new CanGrow method on surface element which uses object property 2018-12-11 23:31:06 +00:00
Ted John 2da8e18200 Read the canGrow flag from surface objects 2018-12-11 23:00:59 +00:00
Michael Steenbeek cf44ea7e24
Fix #3832: Track piece colour scheme paint not network-safe 2018-12-11 22:17:52 +01:00
Michał Janiszewski 23dc14b286
Improve checks for object files (#8417) 2018-12-11 19:35:27 +01:00
Ted John 7c3401603d Change mallocs to new[] 2018-12-10 21:14:07 +00:00
Ted John e13d6da81f Prevent possible stack overflow if zoom offset is 0 2018-12-10 19:54:54 +00:00
Ted John 85b443fc15 Fix #8411: Save game failed!
Do not try to pack our new object types (stations and surfaces) into saved games.
2018-12-10 15:14:50 +00:00
Ted John cefa4c3935 Fix #8410: Grass is broken
Add zoom images to the very end of the image table so the offsets of the images are not changed.
2018-12-10 11:57:50 +00:00
Ted John ef57f1a403 Fix zoomed out images 2018-12-09 23:30:40 +00:00
Ted John 06f203a7e7 Implement surfaces, edges and stations as objects 2018-12-09 23:30:40 +00:00
roosen5 d9806305b0 Fix #8358: infinite loop when changing vehicle count on stopped ride. (#8375)
The sprite_remove in Sprite.cpp tries to find itself inside the quadrant.
It does not find itself, and because the rest of the code assumes that it will always find it
The normal code tries to set the value of the next_in_quadrant so that whoever points at it, will now point at its next sprite.
But because it didn't find whoever was pointing to it, it would set the pointer to SPRITE_INDEX_NULL to its next sprite.
This would lead to cycles in the linked list

The reason that the sprite was not found is that during the entry of a ride, the position of a peep is set to LOCATION_NULL
Exiting a ride sets it back to whatever the location is of an exit.
However stopping a ride that still has people in it would go wrong, as the people are removed from the ride through ride_remove_peeps

This function was called during the PaintWindows.
The fact that this function is called during the painting is the problem, because of the tweening:
Before painting all the positions are stored (Which would at that point be the LOCATION_NULL), during the painting
the peep would be removed from the ride, setting their location to the enrance/exit
After painting is done all the positions are restored again, so the patched position is forgotten and then it would be
removing a sprite with location LOCATION_NULL and that goes wrong

The fix is to have the window update outside of paint
2018-12-09 20:46:04 +01:00
ζeh Matt 04af3932ac Fix #5684: Refactor player list updates being bound on ticks. (#8399) 2018-12-09 20:39:44 +01:00
ζeh Matt f69c95f907 Fix #8392: prevent crash due to inconsistent player list updating. (#8397) 2018-12-09 10:18:23 +01:00