Skip to content

Introduce peep flags for fixed position and animation#22210

Merged
AaronVanGeffen merged 7 commits into
OpenRCT2:developfrom
AaronVanGeffen:peep-refactor
Jul 6, 2024
Merged

Introduce peep flags for fixed position and animation#22210
AaronVanGeffen merged 7 commits into
OpenRCT2:developfrom
AaronVanGeffen:peep-refactor

Conversation

@AaronVanGeffen

@AaronVanGeffen AaronVanGeffen commented Jun 29, 2024

Copy link
Copy Markdown
Member

Following up on #22099.

To do:

  • Add script interface for new flags
  • Fine-tune split of static animation/position flags
  • Discuss terminology (static/stationary? frozen/fixed?)
  • Prevent assigning Energy below kPeepMinEnergy
  • Prevent having PEEP_FLAGS_ANIMATION_FROZEN set while PEEP_FLAGS_POSITION_STATIC is not
  • Increase park format version (indicating new energy flags available)
  • Change staff with Energy == 0 to use these flags instead on import, iff park version below N
  • Increment network version (incompatible peep behaviour)
  • Increment plugin API version
  • Add changelog entry

@AaronVanGeffen AaronVanGeffen requested a review from Basssiiie June 29, 2024 12:49

@Basssiiie Basssiiie left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work! Very exciting features for the PeepEditor and I'm very glad you found some time for this. 😄

Comment thread src/openrct2/scripting/bindings/entity/ScPeep.hpp Outdated
Comment thread src/openrct2/scripting/bindings/entity/ScPeep.hpp Outdated
Comment thread src/openrct2/scripting/bindings/entity/ScPeep.hpp Outdated
@AaronVanGeffen AaronVanGeffen force-pushed the peep-refactor branch 2 times, most recently from 2d59a7a to ba5a04c Compare July 2, 2024 16:58
@AaronVanGeffen AaronVanGeffen marked this pull request as ready for review July 3, 2024 21:11
@AaronVanGeffen

AaronVanGeffen commented Jul 3, 2024

Copy link
Copy Markdown
Member Author

This is now ready for review.

After some discussion in the team chat, we've decided not to apply the flags to existing staff whose energy has been set to 0. Their behaviour will not be affected, as there are no plans to disentangle staff movement from their energy, at least not right now. It will be more future proof to rely on the flags introduced in this PR in the future, though.

Plug-ins, like the Peep Editor, should still check for .getEnergy() === 0 to detect staff/peeps that were frozen in the 'old' way. It might be best to transparently transition them from the old, energy-based method to the new, flags-based, method, e.g.:

if (staff.getEnergy() === 0)
{
    staff.setEnergy(32); // kMinStaffEnergy
    staff.setFlag("positionFrozen");
    staff.setFlag("animationFrozen");
}

Note that, as a precautionary measure, saves created as of this PR will not be compatible with earlier versions of OpenRCT2. The flags introduced in this PR do not exist in earlier versions, leading to behavioural changes for peeps that use these flags. For this reason, park, network, and script API versions are all incremented.

@AaronVanGeffen AaronVanGeffen added this to the v0.4.12 milestone Jul 3, 2024
@AaronVanGeffen AaronVanGeffen added the changelog This issue/PR deserves a changelog entry. label Jul 3, 2024

@Manticore-007 Manticore-007 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm using this build to implement the new freeze flags to the Peep Editor. It works like a charm, and I am véry happy with it. I also built in the check when a staff member is frozen by staff.energy === 0, so it will convert to the new method.

@AaronVanGeffen AaronVanGeffen changed the title Introduce peep flags for static position and animation Introduce peep flags for fixed position and animation Jul 5, 2024
@Manticore-007

Copy link
Copy Markdown

As discussed on Discord; the game expects a number instead of a string/type (?) for the direction of the peep. You gave the remark to make it an enum.

@AaronVanGeffen AaronVanGeffen requested a review from Basssiiie July 5, 2024 21:50
Comment thread src/openrct2/park/ParkFile.h
Comment thread src/openrct2/entity/Peep.cpp
Comment thread distribution/openrct2.d.ts Outdated
@Basssiiie

Copy link
Copy Markdown
Member

I've tested it as well with the plugin Aaron sent me and found no issues in the implementation. So apart from my other comment, it looks good to me! 😀

@AaronVanGeffen AaronVanGeffen merged commit 447bb86 into OpenRCT2:develop Jul 6, 2024
@AaronVanGeffen AaronVanGeffen deleted the peep-refactor branch July 6, 2024 14:08
janisozaur added a commit that referenced this pull request Jul 7, 2024
- Feature: [#622] Add option to align the top toolbar buttons horizontally centred (off by default).
- Feature: [#20263] Ability to increase the size of the map in the (0, 0) direction.
- Feature: [#21714] [Plugin] Costume assignment is now tailored to each staff type.
- Feature: [#21853] Enlarged UI mode.
- Feature: [#21893, #22065] On launch, the game now indicates what system is being initialised.
- Feature: [#21913] [Plugin] Allow precise and safe control of peep animations.
- Feature: [#22046] [Plugin] Add interface for crashed vehicle particle.
- Feature: [#22085] [Plugin] The result of actions that create banners now includes the bannerIndex.
- Feature: [#22087] [Plugin] Expose guests’ favourite rides to the plugin API.
- Feature: [#22090] [Plugin] Allow writing of paused state in non-networked settings.
- Feature: [#22140] Add option to automatically close dropdown menus if Enlarged UI is enabled.
- Feature: [#22150] [Plugin] Expose monthly expenditure history to the plugin API.
- Feature: [#22210] [Plugin] Peeps can now be made stationary or completely frozen.
- Feature: [#22210] [Plugin] The direction in which a peep is facing can now be manipulated.
- Improved: [#19870] Allow using new colours in UI themes.
- Improved: [#21774] The Alpine Coaster now supports using the alternative colour schemes.
- Improved: [#21853] Dropdowns now automatically use multiple columns if they are too tall for the screen.
- Improved: [#21981] Rendering performance of the map window has been improved considerably.
- Improved: [#21981] The map window now defaults to showing as much of the map as fits the screen.
- Improved: [#21983] Taking a screenshot now shows a message again, closing when taking another.
- Improved: [#22026] The options window now stays centred when window scaling is changed.
- Improved: [#22060] [Plugin] The scroll wheel can now be used to modify spinner widget values in custom/script windows.
- Improved: [#22065] Joining a network game now indicates progress using coaster trains.
- Improved: [#22075] [Plugin] Plugins can now use G1 Icons.
- Improved: [#22084] The game now temporarily pauses while the load/save window is open.
- Improved: [#22217] See-through items are ignored again in viewport/pointer interaction.
- Improved: [objects#238] Add preview image for invisible queue.
- Improved: [objects#329] Add RCT1AA lay-down coaster trains (for import only).
- Change: [#7248] Small mini-maps are now centred in the map window.
- Change: [#20240] Heavy snow and blizzards now make guests buy and use umbrellas.
- Change: [#21043] The new music styles are no longer added to old parks automatically.
- Change: [#21214] Wacky Worlds and Time Twister’s scenario names now match their park names.
- Change: [#21991] UI themes JSON now use colour names and a translucency bool, instead of a number (old themes still work).
- Change: [#22057] Reorder Time Twister’s scenarios and adjust their difficulty classification.
- Change: [#22173] Patrol path selection is visible over existing patrol paths.
- Change: [#22196] Make track navigation buttons holdable.
- Change: [#22227] [Plugin] Ride prices are now constrained for plugins as well.
- Fix: [#13234] Vehicle weight sometimes wrong after using Remove All Guests cheat.
- Fix: [#13294] Map corners are cut off in some directions (original bug).
- Fix: [#14630] Non-ASCII thousands and decimal separators not processed correctly.
- Fix: [#21496] Some RCT1 scenery is hidden after saving and reloading.
- Fix: [#21533] Support glitches on Hybrid Coaster.
- Fix: [#21974] No reason specified when attempting to place benches, lamps, or bins on path with no unconnected edges (original bug).
- Fix: [#21987] [Plugin] API cannot handle negative removal prices.
- Fix: [#22008] Uninverted Lay-down roller coaster uses the wrong support type.
- Fix: [#22012] [Plugin] Images on ImgButton widgets cannot be updated.
- Fix: [#22121] Some news items in the “Recent Messages” window have the wrong text colour.
- Fix: [#22152] [Plugin] Negative signed integers are truncated.
- Fix: [#22161] Using arrow keys in textboxes crashes the game.
- Fix: [#22174] Cheats are reset when starting a server.
- Fix: [#22185] Intensity and nausea are incorrectly sorted in the rides list after ratings invalidation.
- Fix: [#22226] Red traffic light shows incorrect sprite when pressed.
- Fix: [objects#323] Incorrect wall boundaries on large WW/TT scenery objects.
- Fix: [objects#331] Incorrect hover car capacity string.
- Fix: [objects#334] Incorrect school bus capacity string.
- Fix: [objects#337] Swan Boats use an incorrect third remap colour (original bug).
CorySanin added a commit to CorySanin/OpenRCT2 that referenced this pull request Feb 3, 2025
Release v0.4.12

- Feature: [OpenRCT2#622] Add option to align the top toolbar buttons horizontally centred (off by default).
- Feature: [OpenRCT2#20263] Ability to increase the size of the map in the (0, 0) direction.
- Feature: [OpenRCT2#21714] [Plugin] Costume assignment is now tailored to each staff type.
- Feature: [OpenRCT2#21853] Enlarged UI mode.
- Feature: [OpenRCT2#21893, OpenRCT2#22065] On launch, the game now indicates what system is being initialised.
- Feature: [OpenRCT2#21913] [Plugin] Allow precise and safe control of peep animations.
- Feature: [OpenRCT2#22046] [Plugin] Add interface for crashed vehicle particle.
- Feature: [OpenRCT2#22085] [Plugin] The result of actions that create banners now includes the bannerIndex.
- Feature: [OpenRCT2#22087] [Plugin] Expose guests’ favourite rides to the plugin API.
- Feature: [OpenRCT2#22090] [Plugin] Allow writing of paused state in non-networked settings.
- Feature: [OpenRCT2#22140] Add option to automatically close dropdown menus if Enlarged UI is enabled.
- Feature: [OpenRCT2#22150] [Plugin] Expose monthly expenditure history to the plugin API.
- Feature: [OpenRCT2#22210] [Plugin] Peeps can now be made stationary or completely frozen.
- Feature: [OpenRCT2#22210] [Plugin] The direction in which a peep is facing can now be manipulated.
- Improved: [OpenRCT2#19870] Allow using new colours in UI themes.
- Improved: [OpenRCT2#21774] The Alpine Coaster now supports using the alternative colour schemes.
- Improved: [OpenRCT2#21853] Dropdowns now automatically use multiple columns if they are too tall for the screen.
- Improved: [OpenRCT2#21981] Rendering performance of the map window has been improved considerably.
- Improved: [OpenRCT2#21981] The map window now defaults to showing as much of the map as fits the screen.
- Improved: [OpenRCT2#21983] Taking a screenshot now shows a message again, closing when taking another.
- Improved: [OpenRCT2#22026] The options window now stays centred when window scaling is changed.
- Improved: [OpenRCT2#22060] [Plugin] The scroll wheel can now be used to modify spinner widget values in custom/script windows.
- Improved: [OpenRCT2#22065] Joining a network game now indicates progress using coaster trains.
- Improved: [OpenRCT2#22075] [Plugin] Plugins can now use G1 Icons.
- Improved: [OpenRCT2#22084] The game now temporarily pauses while the load/save window is open.
- Improved: [OpenRCT2#22217] See-through items are ignored again in viewport/pointer interaction.
- Improved: [objects#238] Add preview image for invisible queue.
- Improved: [objects#329] Add RCT1AA lay-down coaster trains (for import only).
- Change: [OpenRCT2#7248] Small mini-maps are now centred in the map window.
- Change: [OpenRCT2#20240] Heavy snow and blizzards now make guests buy and use umbrellas.
- Change: [OpenRCT2#21043] The new music styles are no longer added to old parks automatically.
- Change: [OpenRCT2#21214] Wacky Worlds and Time Twister’s scenario names now match their park names.
- Change: [OpenRCT2#21991] UI themes JSON now use colour names and a translucency bool, instead of a number (old themes still work).
- Change: [OpenRCT2#22057] Reorder Time Twister’s scenarios and adjust their difficulty classification.
- Change: [OpenRCT2#22173] Patrol path selection is visible over existing patrol paths.
- Change: [OpenRCT2#22196] Make track navigation buttons holdable.
- Change: [OpenRCT2#22227] [Plugin] Ride prices are now constrained for plugins as well.
- Fix: [OpenRCT2#13234] Vehicle weight sometimes wrong after using Remove All Guests cheat.
- Fix: [OpenRCT2#13294] Map corners are cut off in some directions (original bug).
- Fix: [OpenRCT2#14630] Non-ASCII thousands and decimal separators not processed correctly.
- Fix: [OpenRCT2#21496] Some RCT1 scenery is hidden after saving and reloading.
- Fix: [OpenRCT2#21533] Support glitches on Hybrid Coaster.
- Fix: [OpenRCT2#21974] No reason specified when attempting to place benches, lamps, or bins on path with no unconnected edges (original bug).
- Fix: [OpenRCT2#21987] [Plugin] API cannot handle negative removal prices.
- Fix: [OpenRCT2#22008] Uninverted Lay-down roller coaster uses the wrong support type.
- Fix: [OpenRCT2#22012] [Plugin] Images on ImgButton widgets cannot be updated.
- Fix: [OpenRCT2#22121] Some news items in the “Recent Messages” window have the wrong text colour.
- Fix: [OpenRCT2#22152] [Plugin] Negative signed integers are truncated.
- Fix: [OpenRCT2#22161] Using arrow keys in textboxes crashes the game.
- Fix: [OpenRCT2#22174] Cheats are reset when starting a server.
- Fix: [OpenRCT2#22185] Intensity and nausea are incorrectly sorted in the rides list after ratings invalidation.
- Fix: [OpenRCT2#22226] Red traffic light shows incorrect sprite when pressed.
- Fix: [objects#323] Incorrect wall boundaries on large WW/TT scenery objects.
- Fix: [objects#331] Incorrect hover car capacity string.
- Fix: [objects#334] Incorrect school bus capacity string.
- Fix: [objects#337] Swan Boats use an incorrect third remap colour (original bug).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog This issue/PR deserves a changelog entry.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants