From f966c229c04f4f2daa8a56fb35b4f886293eb984 Mon Sep 17 00:00:00 2001 From: Hielke Morsink Date: Thu, 9 Sep 2021 18:44:52 +0200 Subject: [PATCH] Refactor out unnecessary Is checks --- src/openrct2/interface/Viewport.cpp | 17 +++++++---------- src/openrct2/interface/Viewport.h | 9 +++++---- src/openrct2/rct2/S6Exporter.h | 3 ++- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index d1ca5556ac..58ac6676dd 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -683,15 +683,12 @@ void viewport_update_smart_sprite_follow(rct_window* window) break; case EntityType::Guest: - case EntityType::Staff: - { - Peep* peep = static_cast(entity); - if (peep->Is()) - viewport_update_smart_guest_follow(window, peep); - else if (peep->Is()) - viewport_update_smart_staff_follow(window, peep); + viewport_update_smart_guest_follow(window, entity->As()); + break; + + case EntityType::Staff: + viewport_update_smart_staff_follow(window, entity->As()); break; - } default: // All other types don't need any "smart" following; steam particle, duck, money effect, etc. window->viewport_focus_sprite.sprite_id = window->viewport_smart_follow_sprite; @@ -700,7 +697,7 @@ void viewport_update_smart_sprite_follow(rct_window* window) } } -viewport_focus viewport_update_smart_guest_follow(rct_window* window, const Peep* peep) +viewport_focus viewport_update_smart_guest_follow(rct_window* window, const Guest* peep) { viewport_focus focus{}; focus.type = VIEWPORT_FOCUS_TYPE_SPRITE; @@ -759,7 +756,7 @@ viewport_focus viewport_update_smart_guest_follow(rct_window* window, const Peep return focus; } -void viewport_update_smart_staff_follow(rct_window* window, const Peep* peep) +void viewport_update_smart_staff_follow(rct_window* window, const Staff* peep) { sprite_focus focus = {}; diff --git a/src/openrct2/interface/Viewport.h b/src/openrct2/interface/Viewport.h index 4c72fed796..09091e511b 100644 --- a/src/openrct2/interface/Viewport.h +++ b/src/openrct2/interface/Viewport.h @@ -20,11 +20,12 @@ struct paint_session; struct RecordedPaintSession; struct paint_struct; struct rct_drawpixelinfo; -struct Peep; struct TileElement; struct rct_window; -union paint_entry; struct EntityBase; +struct Guest; +struct Staff; +union paint_entry; enum { @@ -111,8 +112,8 @@ void viewports_invalidate(int32_t left, int32_t top, int32_t right, int32_t bott void viewport_update_position(rct_window* window); void viewport_update_sprite_follow(rct_window* window); void viewport_update_smart_sprite_follow(rct_window* window); -viewport_focus viewport_update_smart_guest_follow(rct_window* window, const Peep* peep); -void viewport_update_smart_staff_follow(rct_window* window, const Peep* peep); +viewport_focus viewport_update_smart_guest_follow(rct_window* window, const Guest* peep); +void viewport_update_smart_staff_follow(rct_window* window, const Staff* peep); void viewport_update_smart_vehicle_follow(rct_window* window); void viewport_render( rct_drawpixelinfo* dpi, const rct_viewport* viewport, int32_t left, int32_t top, int32_t right, int32_t bottom, diff --git a/src/openrct2/rct2/S6Exporter.h b/src/openrct2/rct2/S6Exporter.h index 9970a7ef3e..b5a69db52d 100644 --- a/src/openrct2/rct2/S6Exporter.h +++ b/src/openrct2/rct2/S6Exporter.h @@ -26,8 +26,9 @@ namespace OpenRCT2 struct Litter; struct ObjectRepositoryItem; struct RCT12SpriteBase; -union rct_sprite; struct EntityBase; +struct Peep; +union rct_sprite; /** * Class to export RollerCoaster Tycoon 2 scenarios (*.SC6) and saved games (*.SV6).