diff --git a/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp b/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp index b762f293ec..11fe0029c8 100644 --- a/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp @@ -221,10 +221,10 @@ void TextureCache::GeneratePaletteTexture() GLint y = PaletteToY(static_cast(i)); auto g1Index = GetPaletteG1Index(i); - if (g1Index) + if (g1Index.has_value()) { - auto element = gfx_get_g1_element(*g1Index); - gfx_draw_sprite_software(&dpi, ImageId(*g1Index), { -element->x_offset, y - element->y_offset }); + auto element = gfx_get_g1_element(g1Index.value()); + gfx_draw_sprite_software(&dpi, ImageId(g1Index.value()), { -element->x_offset, y - element->y_offset }); } } diff --git a/src/openrct2-ui/input/ShortcutInput.cpp b/src/openrct2-ui/input/ShortcutInput.cpp index 0e22095bba..c1a4c0f1a8 100644 --- a/src/openrct2-ui/input/ShortcutInput.cpp +++ b/src/openrct2-ui/input/ShortcutInput.cpp @@ -152,11 +152,11 @@ ShortcutInput::ShortcutInput(std::string_view value) else { auto number = String::Parse(rem); - if (number) + if (number.has_value()) { Kind = InputDeviceKind::JoyButton; Modifiers = modifiers; - Button = *number - 1; + Button = number.value() - 1; } } } diff --git a/src/openrct2-ui/input/ShortcutManager.cpp b/src/openrct2-ui/input/ShortcutManager.cpp index d729ea8b30..86b0dc9750 100644 --- a/src/openrct2-ui/input/ShortcutManager.cpp +++ b/src/openrct2-ui/input/ShortcutManager.cpp @@ -167,10 +167,10 @@ void ShortcutManager::ProcessEvent(const InputEvent& e) if (shortcut != nullptr && shortcut->IsSuitableInputEvent(e)) { auto shortcutInput = ShortcutInput::FromInputEvent(e); - if (shortcutInput) + if (shortcutInput.has_value()) { shortcut->Current.clear(); - shortcut->Current.push_back(std::move(*shortcutInput)); + shortcut->Current.push_back(std::move(shortcutInput.value())); } _pendingShortcutChange.clear(); window_close_by_class(WC_CHANGE_KEYBOARD_SHORTCUT); @@ -273,9 +273,9 @@ void ShortcutManager::LoadLegacyBindings(const fs::path& path) { shortcut->Current.clear(); auto input = ConvertLegacyBinding(value); - if (input) + if (input.has_value()) { - shortcut->Current.push_back(std::move(*input)); + shortcut->Current.push_back(std::move(input.value())); } } } diff --git a/src/openrct2-ui/windows/GameBottomToolbar.cpp b/src/openrct2-ui/windows/GameBottomToolbar.cpp index 26e35e8d90..06b6aa9275 100644 --- a/src/openrct2-ui/windows/GameBottomToolbar.cpp +++ b/src/openrct2-ui/windows/GameBottomToolbar.cpp @@ -174,12 +174,12 @@ static void window_game_bottom_toolbar_mouseup(rct_window* w, rct_widgetindex wi auto subjectLoc = News::GetSubjectLocation(newsItem->Type, newsItem->Assoc); - if (subjectLoc == std::nullopt) + if (!subjectLoc.has_value()) break; rct_window* mainWindow = window_get_main(); if (mainWindow != nullptr) - window_scroll_to_location(mainWindow, *subjectLoc); + window_scroll_to_location(mainWindow, subjectLoc.value()); } break; case WIDX_RIGHT_OUTSET: @@ -315,7 +315,7 @@ static void window_game_bottom_toolbar_invalidate(rct_window* w) // Find out if the news item is no longer valid auto subjectLoc = News::GetSubjectLocation(newsItem->Type, newsItem->Assoc); - if (subjectLoc == std::nullopt) + if (!subjectLoc.has_value()) w->disabled_widgets |= (1ULL << WIDX_NEWS_LOCATE); if (!(newsItem->TypeHasSubject())) diff --git a/src/openrct2-ui/windows/LandRights.cpp b/src/openrct2-ui/windows/LandRights.cpp index 2f61248a42..4a2d99326b 100644 --- a/src/openrct2-ui/windows/LandRights.cpp +++ b/src/openrct2-ui/windows/LandRights.cpp @@ -286,7 +286,7 @@ static void window_land_rights_tool_update_land_rights(const ScreenCoordsXY& scr auto mapTile = screen_get_map_xy(screenCoords, nullptr); - if (!mapTile) + if (!mapTile.has_value()) { if (_landRightsCost != MONEY32_UNDEFINED) { diff --git a/src/openrct2-ui/windows/Map.cpp b/src/openrct2-ui/windows/Map.cpp index dd8d141f48..a13f3f3bb9 100644 --- a/src/openrct2-ui/windows/Map.cpp +++ b/src/openrct2-ui/windows/Map.cpp @@ -1187,7 +1187,7 @@ static void window_map_set_land_rights_tool_update(const ScreenCoordsXY& screenC map_invalidate_selection_rect(); gMapSelectFlags &= ~MAP_SELECT_FLAG_ENABLE; auto mapCoords = screen_get_map_xy(screenCoords, &viewport); - if (!mapCoords) + if (!mapCoords.has_value()) return; gMapSelectFlags |= MAP_SELECT_FLAG_ENABLE; diff --git a/src/openrct2-ui/windows/News.cpp b/src/openrct2-ui/windows/News.cpp index 2fa7db71f9..ade37acd2f 100644 --- a/src/openrct2-ui/windows/News.cpp +++ b/src/openrct2-ui/windows/News.cpp @@ -110,9 +110,9 @@ public: { static rct_window* _mainWindow; auto subjectLoc = News::GetSubjectLocation(newsItem.Type, newsItem.Assoc); - if (subjectLoc != std::nullopt && (_mainWindow = window_get_main()) != nullptr) + if (subjectLoc.has_value() && (_mainWindow = window_get_main()) != nullptr) { - window_scroll_to_location(_mainWindow, *subjectLoc); + window_scroll_to_location(_mainWindow, subjectLoc.value()); } } } diff --git a/src/openrct2-ui/windows/Player.cpp b/src/openrct2-ui/windows/Player.cpp index 4e10af0025..bbbff05b0b 100644 --- a/src/openrct2-ui/windows/Player.cpp +++ b/src/openrct2-ui/windows/Player.cpp @@ -610,7 +610,7 @@ static void window_player_update_viewport(rct_window* w, bool scroll) if (coord.x != 0 || coord.y != 0 || coord.z != 0) { auto centreLoc = centre_2d_coordinates(coord, viewport); - if (!centreLoc) + if (!centreLoc.has_value()) { return; } @@ -620,13 +620,13 @@ static void window_player_update_viewport(rct_window* w, bool scroll) scroll = false; } - if (!scroll || w->savedViewPos != centreLoc) + if (!scroll || w->savedViewPos != centreLoc.value()) { w->flags |= WF_SCROLLING_TO_LOCATION; - w->savedViewPos = *centreLoc; + w->savedViewPos = centreLoc.value(); if (!scroll) { - w->viewport->viewPos = *centreLoc; + w->viewport->viewPos = centreLoc.value(); } widget_invalidate(w, WIDX_VIEWPORT); } diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index acab395266..dd6ea8e985 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -5009,9 +5009,9 @@ static std::optional GetMusicStyleOrder(ObjectEntryIndex musicObjectInde // Get the index in the order list auto originalStyleId = musicObj->GetOriginalStyleId(); - if (originalStyleId) + if (originalStyleId.has_value()) { - auto it = std::find(std::begin(MusicStyleOrder), std::end(MusicStyleOrder), *originalStyleId); + auto it = std::find(std::begin(MusicStyleOrder), std::end(MusicStyleOrder), originalStyleId.value()); if (it != std::end(MusicStyleOrder)) { return std::distance(std::begin(MusicStyleOrder), it); @@ -5046,7 +5046,8 @@ static void window_ride_music_mousedown(rct_window* w, rct_widgetindex widgetInd { // Hide custom music if the WAV file does not exist auto originalStyleId = musicObj->GetOriginalStyleId(); - if (originalStyleId == MUSIC_STYLE_CUSTOM_MUSIC_1 || originalStyleId == MUSIC_STYLE_CUSTOM_MUSIC_2) + if (originalStyleId.has_value() + && (originalStyleId == MUSIC_STYLE_CUSTOM_MUSIC_1 || originalStyleId == MUSIC_STYLE_CUSTOM_MUSIC_2)) { auto numTracks = musicObj->GetTrackCount(); if (numTracks != 0) diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 24fdf0f985..b480d393a3 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -1889,7 +1889,7 @@ static void window_ride_construction_mouseup_demolish(rct_window* w) track_type_t type = _currentTrackPieceType; auto newCoords = GetTrackElementOriginAndApplyChanges( { _currentTrackBegin, static_cast(direction & 3) }, type, 0, &tileElement, 0); - if (newCoords == std::nullopt) + if (!newCoords.has_value()) { window_ride_construction_update_active_elements(); return; @@ -1921,7 +1921,7 @@ static void window_ride_construction_mouseup_demolish(rct_window* w) newCoords = GetTrackElementOriginAndApplyChanges( { _currentTrackBegin, static_cast(direction & 3) }, type, 0, &tileElement, 0); - if (newCoords == std::nullopt) + if (!newCoords.has_value()) { window_ride_construction_update_active_elements(); return; @@ -2178,9 +2178,9 @@ static std::optional ride_get_place_position_from_screen_position(Scre { auto mapZ = _trackPlaceCtrlZ; auto mapXYCoords = screen_get_map_xy_with_z(screenCoords, mapZ); - if (mapXYCoords) + if (mapXYCoords.has_value()) { - mapCoords = *mapXYCoords; + mapCoords = mapXYCoords.value(); } else { @@ -2604,7 +2604,7 @@ void UpdateGhostTrackAndArrow() : TRACK_ELEMENT_SET_HIGHLIGHT_FALSE; auto newCoords = GetTrackElementOriginAndApplyChanges( { _currentTrackBegin, static_cast(direction) }, type, 0, nullptr, flags); - if (newCoords == std::nullopt) + if (!newCoords.has_value()) { ride_construction_remove_ghosts(); _rideConstructionState = RideConstructionState::State0; diff --git a/src/openrct2-ui/windows/TileInspector.cpp b/src/openrct2-ui/windows/TileInspector.cpp index 575710c2ea..a128f0d6c4 100644 --- a/src/openrct2-ui/windows/TileInspector.cpp +++ b/src/openrct2-ui/windows/TileInspector.cpp @@ -1232,10 +1232,10 @@ static void window_tile_inspector_tool_update(rct_window* w, rct_widgetindex wid if (clickedElement == nullptr) { auto mouseCoords = screen_pos_to_map_pos(screenCoords, nullptr); - if (mouseCoords) + if (mouseCoords.has_value()) { mouseOnViewport = true; - mapCoords = *mouseCoords; + mapCoords = mouseCoords.value(); } } @@ -1285,12 +1285,12 @@ static void window_tile_inspector_update_selected_tile(rct_window* w, const Scre { auto mouseCoords = screen_pos_to_map_pos(screenCoords, nullptr); - if (!mouseCoords) + if (!mouseCoords.has_value()) { return; } - mapCoords = *mouseCoords; + mapCoords = mouseCoords.value(); // Tile is already selected if (windowTileInspectorTileSelected && mapCoords.x == windowTileInspectorToolMap.x && mapCoords.y == windowTileInspectorToolMap.y) diff --git a/src/openrct2-ui/windows/TopToolbar.cpp b/src/openrct2-ui/windows/TopToolbar.cpp index e2b01cd018..2de7cecde5 100644 --- a/src/openrct2-ui/windows/TopToolbar.cpp +++ b/src/openrct2-ui/windows/TopToolbar.cpp @@ -1267,12 +1267,12 @@ static void sub_6E1F34_small_scenery( if (!gSceneryCtrlPressed) { auto gridCoords = screen_get_map_xy_quadrant(screenPos, &quadrant); - if (!gridCoords) + if (!gridCoords.has_value()) { gridPos.SetNull(); return; } - gridPos = *gridCoords; + gridPos = gridCoords.value(); gSceneryPlaceZ = 0; @@ -1300,12 +1300,12 @@ static void sub_6E1F34_small_scenery( int16_t z = gSceneryCtrlPressZ; auto mapCoords = screen_get_map_xy_quadrant_with_z(screenPos, z, &quadrant); - if (!mapCoords) + if (!mapCoords.has_value()) { gridPos.SetNull(); return; } - gridPos = *mapCoords; + gridPos = mapCoords.value(); // If SHIFT pressed if (gSceneryShiftPressed) @@ -1382,7 +1382,7 @@ static void sub_6E1F34_small_scenery( { int16_t z = gSceneryCtrlPressZ; auto coords = screen_get_map_xy_with_z(screenPos, z); - if (coords) + if (coords.has_value()) { gridPos = *coords; } @@ -1485,12 +1485,12 @@ static void sub_6E1F34_wall( if (!gSceneryCtrlPressed) { auto gridCoords = screen_get_map_xy_side(screenPos, &edge); - if (!gridCoords) + if (!gridCoords.has_value()) { gridPos.SetNull(); return; } - gridPos = *gridCoords; + gridPos = gridCoords.value(); gSceneryPlaceZ = 0; @@ -1517,12 +1517,12 @@ static void sub_6E1F34_wall( { int16_t z = gSceneryCtrlPressZ; auto mapCoords = screen_get_map_xy_side_with_z(screenPos, z, &edge); - if (!mapCoords) + if (!mapCoords.has_value()) { gridPos.SetNull(); return; } - gridPos = *mapCoords; + gridPos = mapCoords.value(); // If SHIFT pressed if (gSceneryShiftPressed) @@ -1608,7 +1608,7 @@ static void sub_6E1F34_large_scenery( { int16_t z = gSceneryCtrlPressZ; auto coords = screen_get_map_xy_with_z(screenPos, z); - if (coords) + if (coords.has_value()) { gridPos = *coords; } @@ -2005,7 +2005,7 @@ static uint8_t top_toolbar_tool_update_land_paint(const ScreenCoordsXY& screenPo auto mapTile = screen_get_map_xy(screenPos, nullptr); - if (!mapTile) + if (!mapTile.has_value()) { if (gClearSceneryCost != MONEY64_UNDEFINED) { @@ -2124,7 +2124,7 @@ static void top_toolbar_tool_update_land(const ScreenCoordsXY& screenPos) screen_pos_to_map_pos(screenPos, &selectionType); mapTile = screen_get_map_xy_side(screenPos, &side); - if (!mapTile) + if (!mapTile.has_value()) { money64 lower_cost = MONEY64_UNDEFINED; money64 raise_cost = MONEY64_UNDEFINED; @@ -2201,7 +2201,7 @@ static void top_toolbar_tool_update_land(const ScreenCoordsXY& screenPos) // Get map coordinates and the side of the tile that is being hovered over mapTile = screen_get_map_xy_side(screenPos, &side); - if (!mapTile) + if (!mapTile.has_value()) { money64 lower_cost = MONEY64_UNDEFINED; money64 raise_cost = MONEY64_UNDEFINED; diff --git a/src/openrct2-ui/windows/ViewClipping.cpp b/src/openrct2-ui/windows/ViewClipping.cpp index 52da8f5083..922b51d1b2 100644 --- a/src/openrct2-ui/windows/ViewClipping.cpp +++ b/src/openrct2-ui/windows/ViewClipping.cpp @@ -303,12 +303,12 @@ static void window_view_clipping_tool_update(rct_window* w, rct_widgetindex widg int32_t direction; auto mapCoords = screen_pos_to_map_pos(screenCoords, &direction); - if (mapCoords) + if (mapCoords.has_value()) { gMapSelectFlags |= MAP_SELECT_FLAG_ENABLE; map_invalidate_tile_full(gMapSelectPositionA); - gMapSelectPositionA = gMapSelectPositionB = *mapCoords; - map_invalidate_tile_full(*mapCoords); + gMapSelectPositionA = gMapSelectPositionB = mapCoords.value(); + map_invalidate_tile_full(mapCoords.value()); gMapSelectType = MAP_SELECT_TYPE_FULL; } } @@ -317,10 +317,10 @@ static void window_view_clipping_tool_down(rct_window* w, rct_widgetindex widget { int32_t direction; auto mapCoords = screen_pos_to_map_pos(screenCoords, &direction); - if (mapCoords) + if (mapCoords.has_value()) { _dragging = true; - _selectionStart = *mapCoords; + _selectionStart = mapCoords.value(); } } diff --git a/src/openrct2/CmdlineSprite.cpp b/src/openrct2/CmdlineSprite.cpp index 1d2459f7ee..2a0234db4a 100644 --- a/src/openrct2/CmdlineSprite.cpp +++ b/src/openrct2/CmdlineSprite.cpp @@ -545,7 +545,7 @@ int32_t cmdline_for_sprite(const char** argv, int32_t argc) } auto importResult = SpriteImageImport(imagePath, x_offset, y_offset, false, false, gSpriteMode); - if (importResult == std::nullopt) + if (!importResult.has_value()) return -1; auto spriteFile = SpriteFile::Open(spriteFilePath); diff --git a/src/openrct2/core/String.cpp b/src/openrct2/core/String.cpp index a1e9ff1370..1df821814f 100644 --- a/src/openrct2/core/String.cpp +++ b/src/openrct2/core/String.cpp @@ -821,7 +821,7 @@ namespace String { return trunc.substr(0, i); } - i += *length; + i += length.value(); } return trunc; diff --git a/src/openrct2/core/Zip.cpp b/src/openrct2/core/Zip.cpp index 0ca6e6e533..10475bab1a 100644 --- a/src/openrct2/core/Zip.cpp +++ b/src/openrct2/core/Zip.cpp @@ -131,12 +131,12 @@ public: { std::vector result; auto index = GetIndexFromPath(path); - if (index) + if (index.has_value()) { - auto dataSize = GetFileSize(*index); + auto dataSize = GetFileSize(index.value()); if (dataSize > 0 && dataSize < SIZE_MAX) { - auto zipFile = zip_fopen_index(_zip, *index, 0); + auto zipFile = zip_fopen_index(_zip, index.value(), 0); if (zipFile != nullptr) { result.resize(static_cast(dataSize)); @@ -155,9 +155,9 @@ public: std::unique_ptr GetFileStream(std::string_view path) const override { auto index = GetIndexFromPath(path); - if (index) + if (index.has_value()) { - return std::make_unique(_zip, *index); + return std::make_unique(_zip, index.value()); } return {}; } @@ -171,9 +171,9 @@ public: auto source = zip_source_buffer(_zip, writeBuffer.data(), writeBuffer.size(), 0); auto index = GetIndexFromPath(path); - if (index) + if (index.has_value()) { - zip_replace(_zip, *index, source); + zip_replace(_zip, index.value(), source); } else { @@ -184,9 +184,9 @@ public: void DeleteFile(std::string_view path) override { auto index = GetIndexFromPath(path); - if (index) + if (index.has_value()) { - zip_delete(_zip, *index); + zip_delete(_zip, index.value()); } else { diff --git a/src/openrct2/drawing/Drawing.Sprite.cpp b/src/openrct2/drawing/Drawing.Sprite.cpp index 786ec46fba..1bb8bfb66d 100644 --- a/src/openrct2/drawing/Drawing.Sprite.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.cpp @@ -378,25 +378,27 @@ static std::optional FASTCALL gfx_draw_sprite_get_palette(ImageId im { paletteMap = PaletteMap(gOtherPalette); auto tertiaryPaletteMap = GetPaletteMapForColour(imageId.GetTertiary()); - if (tertiaryPaletteMap) + if (tertiaryPaletteMap.has_value()) { paletteMap.Copy( - PALETTE_OFFSET_REMAP_TERTIARY, *tertiaryPaletteMap, PALETTE_OFFSET_REMAP_PRIMARY, PALETTE_LENGTH_REMAP); + PALETTE_OFFSET_REMAP_TERTIARY, tertiaryPaletteMap.value(), PALETTE_OFFSET_REMAP_PRIMARY, + PALETTE_LENGTH_REMAP); } } auto primaryPaletteMap = GetPaletteMapForColour(imageId.GetPrimary()); - if (primaryPaletteMap) + if (primaryPaletteMap.has_value()) { paletteMap.Copy( - PALETTE_OFFSET_REMAP_PRIMARY, *primaryPaletteMap, PALETTE_OFFSET_REMAP_PRIMARY, PALETTE_LENGTH_REMAP); + PALETTE_OFFSET_REMAP_PRIMARY, primaryPaletteMap.value(), PALETTE_OFFSET_REMAP_PRIMARY, PALETTE_LENGTH_REMAP); } auto secondaryPaletteMap = GetPaletteMapForColour(imageId.GetSecondary()); - if (secondaryPaletteMap) + if (secondaryPaletteMap.has_value()) { paletteMap.Copy( - PALETTE_OFFSET_REMAP_SECONDARY, *secondaryPaletteMap, PALETTE_OFFSET_REMAP_PRIMARY, PALETTE_LENGTH_REMAP); + PALETTE_OFFSET_REMAP_SECONDARY, secondaryPaletteMap.value(), PALETTE_OFFSET_REMAP_PRIMARY, + PALETTE_LENGTH_REMAP); } return paletteMap; diff --git a/src/openrct2/drawing/Drawing.String.cpp b/src/openrct2/drawing/Drawing.String.cpp index 934c26e62f..78e8915014 100644 --- a/src/openrct2/drawing/Drawing.String.cpp +++ b/src/openrct2/drawing/Drawing.String.cpp @@ -57,7 +57,7 @@ int32_t gfx_get_string_width_new_lined(std::string_view text, FontSpriteBase fon if (token.kind == FormatToken::Newline || token.kind == FormatToken::NewlineSmall) { auto width = gfx_get_string_width(buffer, fontSpriteBase); - if (!maxWidth || maxWidth > width) + if (!maxWidth.has_value() || maxWidth.value() > width) { maxWidth = width; } @@ -68,11 +68,11 @@ int32_t gfx_get_string_width_new_lined(std::string_view text, FontSpriteBase fon buffer.append(token.text); } } - if (!maxWidth) + if (!maxWidth.has_value()) { maxWidth = gfx_get_string_width(buffer, fontSpriteBase); } - return *maxWidth; + return maxWidth.value(); } /** @@ -829,11 +829,11 @@ static void ttf_process_string_literal(rct_drawpixelinfo* dpi, std::string_view auto codepoint = *it; if (ShouldUseSpriteForCodepoint(codepoint)) { - if (ttfRunIndex) + if (ttfRunIndex.has_value()) { // Draw the TTF run - auto len = it.GetIndex() - *ttfRunIndex; - ttf_draw_string_raw_ttf(dpi, text.substr(*ttfRunIndex, len), info); + auto len = it.GetIndex() - ttfRunIndex.value(); + ttf_draw_string_raw_ttf(dpi, text.substr(ttfRunIndex.value(), len), info); ttfRunIndex = std::nullopt; } @@ -842,18 +842,18 @@ static void ttf_process_string_literal(rct_drawpixelinfo* dpi, std::string_view } else { - if (!ttfRunIndex) + if (!ttfRunIndex.has_value()) { ttfRunIndex = it.GetIndex(); } } } - if (ttfRunIndex) + if (ttfRunIndex.has_value()) { // Final TTF run auto len = text.size() - *ttfRunIndex; - ttf_draw_string_raw_ttf(dpi, text.substr(*ttfRunIndex, len), info); + ttf_draw_string_raw_ttf(dpi, text.substr(ttfRunIndex.value(), len), info); } } #endif // NO_TTF diff --git a/src/openrct2/drawing/Drawing.cpp b/src/openrct2/drawing/Drawing.cpp index 0894323ff4..96b51b7f84 100644 --- a/src/openrct2/drawing/Drawing.cpp +++ b/src/openrct2/drawing/Drawing.cpp @@ -750,9 +750,9 @@ std::optional GetPaletteG1Index(colour_t paletteId) std::optional GetPaletteMapForColour(colour_t paletteId) { auto g1Index = GetPaletteG1Index(paletteId); - if (g1Index) + if (g1Index.has_value()) { - auto g1 = gfx_get_g1_element(*g1Index); + auto g1 = gfx_get_g1_element(g1Index.value()); if (g1 != nullptr) { return PaletteMap(g1->offset, g1->height, g1->width); diff --git a/src/openrct2/drawing/X8DrawingEngine.cpp b/src/openrct2/drawing/X8DrawingEngine.cpp index 3afc9e1bb2..9cbbcdcf77 100644 --- a/src/openrct2/drawing/X8DrawingEngine.cpp +++ b/src/openrct2/drawing/X8DrawingEngine.cpp @@ -703,8 +703,9 @@ void X8DrawingContext::FilterRect(FilterPaletteID palette, int32_t left, int32_t // Find colour in colour table? auto paletteMap = GetPaletteMapForColour(EnumValue(palette)); - if (paletteMap) + if (paletteMap.has_value()) { + const auto& paletteEntries = paletteMap.value(); const int32_t scaled_width = width / dpi->zoom_level; const int32_t step = ((dpi->width / dpi->zoom_level) + dpi->pitch); @@ -716,7 +717,7 @@ void X8DrawingContext::FilterRect(FilterPaletteID palette, int32_t left, int32_t for (int32_t j = 0; j < scaled_width; j++) { auto index = *(nextdst + j); - *(nextdst + j) = (*paletteMap)[index]; + *(nextdst + j) = paletteEntries[index]; } } } diff --git a/src/openrct2/interface/Screenshot.cpp b/src/openrct2/interface/Screenshot.cpp index 850a23b84f..972dbc0f49 100644 --- a/src/openrct2/interface/Screenshot.cpp +++ b/src/openrct2/interface/Screenshot.cpp @@ -161,14 +161,14 @@ std::string screenshot_dump_png(rct_drawpixelinfo* dpi) // Get a free screenshot path auto path = screenshot_get_next_path(); - if (path == std::nullopt) + if (!path.has_value()) { return ""; } - if (WriteDpiToFile(path->c_str(), dpi, gPalette)) + if (WriteDpiToFile(path.value(), dpi, gPalette)) { - return *path; + return path.value(); } else { @@ -180,7 +180,7 @@ std::string screenshot_dump_png_32bpp(int32_t width, int32_t height, const void* { auto path = screenshot_get_next_path(); - if (path == std::nullopt) + if (!path.has_value()) { return ""; } @@ -196,8 +196,8 @@ std::string screenshot_dump_png_32bpp(int32_t width, int32_t height, const void* image.Depth = 32; image.Stride = width * 4; image.Pixels = std::vector(pixels8, pixels8 + pixelsLen); - Imaging::WriteToFile(path->c_str(), image, IMAGE_FORMAT::PNG_32); - return *path; + Imaging::WriteToFile(path.value(), image, IMAGE_FORMAT::PNG_32); + return path.value(); } catch (const std::exception& e) { @@ -384,7 +384,7 @@ void screenshot_giant() try { auto path = screenshot_get_next_path(); - if (path == std::nullopt) + if (!path.has_value()) { throw std::runtime_error("Giant screenshot failed, unable to find a suitable destination path."); } @@ -412,7 +412,7 @@ void screenshot_giant() dpi = CreateDPI(viewport); RenderViewport(nullptr, viewport, dpi); - WriteDpiToFile(path->c_str(), &dpi, gPalette); + WriteDpiToFile(path.value(), &dpi, gPalette); // Show user that screenshot saved successfully Formatter ft; @@ -792,7 +792,7 @@ static std::string ResolveFilenameForCapture(const fs::path& filename) void CaptureImage(const CaptureOptions& options) { rct_viewport viewport{}; - if (options.View) + if (options.View.has_value()) { viewport.width = options.View->Width; viewport.height = options.View->Height; diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index 72ded2585a..86f2b4ec10 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -186,7 +186,7 @@ void viewport_create( } auto centreLoc = centre_2d_coordinates(centrePos, viewport); - if (!centreLoc) + if (!centreLoc.has_value()) { log_error("Invalid location for viewport."); return; @@ -597,9 +597,9 @@ void viewport_update_position(rct_window* window) if (at_map_edge) { auto centreLoc = centre_2d_coordinates({ mapCoord, 0 }, viewport); - if (centreLoc) + if (centreLoc.has_value()) { - window->savedViewPos = *centreLoc; + window->savedViewPos = centreLoc.value(); } } @@ -658,7 +658,7 @@ void viewport_update_sprite_follow(rct_window* window) viewport_set_underground_flag(underground, window, window->viewport); auto centreLoc = centre_2d_coordinates({ sprite->x, sprite->y, sprite->z }, window->viewport); - if (centreLoc) + if (centreLoc.has_value()) { window->savedViewPos = *centreLoc; viewport_move(*centreLoc, window, window->viewport); @@ -1080,7 +1080,7 @@ static void viewport_paint_weather_gloom(rct_drawpixelinfo* dpi) std::optional screen_pos_to_map_pos(const ScreenCoordsXY& screenCoords, int32_t* direction) { auto mapCoords = screen_get_map_xy(screenCoords, nullptr); - if (!mapCoords) + if (!mapCoords.has_value()) return std::nullopt; int32_t my_direction; @@ -1613,9 +1613,9 @@ static bool is_sprite_interacted_with(rct_drawpixelinfo* dpi, int32_t imageId, c { index &= 0x1F; } - if (auto pm = GetPaletteMapForColour(index)) + if (auto pm = GetPaletteMapForColour(index); pm.has_value()) { - paletteMap = *pm; + paletteMap = pm.value(); } } else @@ -1865,7 +1865,7 @@ std::optional screen_get_map_xy_with_z(const ScreenCoordsXY& screenCoo std::optional screen_get_map_xy_quadrant(const ScreenCoordsXY& screenCoords, uint8_t* quadrant) { auto mapCoords = screen_get_map_xy(screenCoords, nullptr); - if (!mapCoords) + if (!mapCoords.has_value()) return std::nullopt; *quadrant = map_get_tile_quadrant(*mapCoords); @@ -1879,7 +1879,7 @@ std::optional screen_get_map_xy_quadrant(const ScreenCoordsXY& screenC std::optional screen_get_map_xy_quadrant_with_z(const ScreenCoordsXY& screenCoords, int32_t z, uint8_t* quadrant) { auto mapCoords = screen_get_map_xy_with_z(screenCoords, z); - if (!mapCoords) + if (!mapCoords.has_value()) return std::nullopt; *quadrant = map_get_tile_quadrant(*mapCoords); @@ -1893,7 +1893,7 @@ std::optional screen_get_map_xy_quadrant_with_z(const ScreenCoordsXY& std::optional screen_get_map_xy_side(const ScreenCoordsXY& screenCoords, uint8_t* side) { auto mapCoords = screen_get_map_xy(screenCoords, nullptr); - if (!mapCoords) + if (!mapCoords.has_value()) return std::nullopt; *side = map_get_tile_side(*mapCoords); @@ -1907,7 +1907,7 @@ std::optional screen_get_map_xy_side(const ScreenCoordsXY& screenCoord std::optional screen_get_map_xy_side_with_z(const ScreenCoordsXY& screenCoords, int32_t z, uint8_t* side) { auto mapCoords = screen_get_map_xy_with_z(screenCoords, z); - if (!mapCoords) + if (!mapCoords.has_value()) return std::nullopt; *side = map_get_tile_side(*mapCoords); diff --git a/src/openrct2/interface/Window.cpp b/src/openrct2/interface/Window.cpp index 4e2c6aa70d..82a8f009c8 100644 --- a/src/openrct2/interface/Window.cpp +++ b/src/openrct2/interface/Window.cpp @@ -909,7 +909,7 @@ void window_rotate_camera(rct_window* w, int32_t direction) // other != viewport probably triggers on viewports in ride or guest window? // naoXYCoords is nullopt if middle of viewport is obstructed by another window? - if (!mapXYCoords || other != viewport) + if (!mapXYCoords.has_value() || other != viewport) { auto viewPos = ScreenCoordsXY{ (viewport->view_width >> 1), (viewport->view_height >> 1) } + viewport->viewPos; @@ -926,9 +926,9 @@ void window_rotate_camera(rct_window* w, int32_t direction) auto centreLoc = centre_2d_coordinates(coords, viewport); - if (centreLoc) + if (centreLoc.has_value()) { - w->savedViewPos = *centreLoc; + w->savedViewPos = centreLoc.value(); viewport->viewPos = *centreLoc; } @@ -976,7 +976,7 @@ void window_viewport_centre_tile_around_cursor(rct_window* w, int32_t map_x, int int32_t z = tile_element_height({ map_x, map_y }); auto centreLoc = centre_2d_coordinates({ map_x, map_y, z }, w->viewport); - if (!centreLoc) + if (!centreLoc.has_value()) { log_error("Invalid location."); return; diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index a2cb4da7a2..d2a01bb1ff 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -1416,7 +1416,7 @@ std::vector NetworkBase::save_for_network(const std::vector(data), size); - if (compressed != std::nullopt) + if (compressed.has_value()) { std::string headerString = "open2_sv6_zlib"; header.resize(headerString.size() + 1 + compressed->size()); diff --git a/src/openrct2/object/Object.cpp b/src/openrct2/object/Object.cpp index 7c7fd8a417..80710834e2 100644 --- a/src/openrct2/object/Object.cpp +++ b/src/openrct2/object/Object.cpp @@ -196,9 +196,9 @@ uint64_t ObjectAsset::GetSize() const if (zipArchive != nullptr) { auto index = zipArchive->GetIndexFromPath(_path); - if (index) + if (index.has_value()) { - auto size = zipArchive->GetFileSize(*index); + auto size = zipArchive->GetFileSize(index.value()); return size; } } diff --git a/src/openrct2/object/ObjectManager.cpp b/src/openrct2/object/ObjectManager.cpp index 1651bc3cbf..c823f2f4a9 100644 --- a/src/openrct2/object/ObjectManager.cpp +++ b/src/openrct2/object/ObjectManager.cpp @@ -372,17 +372,17 @@ private: { slot = FindSpareSlot(objectType); } - if (slot) + if (slot.has_value()) { auto* object = GetOrLoadObject(ori); if (object != nullptr) { if (_loadedObjects.size() <= static_cast(*slot)) { - _loadedObjects.resize(*slot + 1); + _loadedObjects.resize(slot.value() + 1); } loadedObject = object; - _loadedObjects[*slot] = object; + _loadedObjects[slot.value()] = object; UpdateSceneryGroupIndexes(); ResetTypeToRideEntryIndexMap(); } diff --git a/src/openrct2/object/SceneryGroupObject.cpp b/src/openrct2/object/SceneryGroupObject.cpp index 166245d8b1..88bf42acbc 100644 --- a/src/openrct2/object/SceneryGroupObject.cpp +++ b/src/openrct2/object/SceneryGroupObject.cpp @@ -85,9 +85,9 @@ void SceneryGroupObject::UpdateEntryIndexes() Guard::Assert(entryIndex != OBJECT_ENTRY_INDEX_NULL, GUARD_LINE); auto sceneryType = ori->ObjectEntry.GetSceneryType(); - if (sceneryType != std::nullopt) + if (sceneryType.has_value()) { - _legacyType.scenery_entries[_legacyType.entry_count] = { *sceneryType, entryIndex }; + _legacyType.scenery_entries[_legacyType.entry_count] = { sceneryType.value(), entryIndex }; _legacyType.entry_count++; } } diff --git a/src/openrct2/peep/Guest.cpp b/src/openrct2/peep/Guest.cpp index 2e3a2da226..4c91c65cd7 100644 --- a/src/openrct2/peep/Guest.cpp +++ b/src/openrct2/peep/Guest.cpp @@ -3411,7 +3411,7 @@ void Guest::UpdateRideAtEntrance() if (DestinationTolerance != 0) { int16_t xy_distance; - if (auto loc = UpdateAction(xy_distance)) + if (auto loc = UpdateAction(xy_distance); loc.has_value()) { int16_t actionZ = z; if (xy_distance < 16) @@ -3419,7 +3419,7 @@ void Guest::UpdateRideAtEntrance() auto entrance = ride_get_entrance_location(ride, CurrentRideStation).ToCoordsXYZ(); actionZ = entrance.z + 2; } - MoveTo({ *loc, actionZ }); + MoveTo({ loc.value(), actionZ }); } else { @@ -3600,7 +3600,7 @@ void Guest::UpdateRideAdvanceThroughEntrance() auto ride_entry = ride->GetRideEntry(); - if (auto loc = UpdateAction(xy_distance)) + if (auto loc = UpdateAction(xy_distance); loc.has_value()) { uint16_t distanceThreshold = 16; if (ride_entry != nullptr) @@ -3626,7 +3626,7 @@ void Guest::UpdateRideAdvanceThroughEntrance() actionZ += ride->GetRideTypeDescriptor().Heights.PlatformHeight; } - MoveTo({ *loc, actionZ }); + MoveTo({ loc.value(), actionZ }); return; } @@ -3978,9 +3978,9 @@ void Guest::UpdateRideFreeVehicleCheck() void Guest::UpdateRideApproachVehicle() { - if (auto loc = UpdateAction()) + if (auto loc = UpdateAction(); loc.has_value()) { - MoveTo({ *loc, z }); + MoveTo({ loc.value(), z }); return; } RideSubState = PeepRideSubState::EnterVehicle; @@ -4310,9 +4310,9 @@ static void peep_update_ride_prepare_for_exit(Peep* peep) */ void Guest::UpdateRideApproachExit() { - if (auto loc = UpdateAction()) + if (auto loc = UpdateAction(); loc.has_value()) { - MoveTo({ *loc, z }); + MoveTo({ loc.value(), z }); return; } @@ -4331,19 +4331,19 @@ void Guest::UpdateRideInExit() int16_t xy_distance; - if (auto loc = UpdateAction(xy_distance)) + if (auto loc = UpdateAction(xy_distance); loc.has_value()) { if (xy_distance >= 16) { int16_t actionZ = ride->stations[CurrentRideStation].GetBaseZ(); actionZ += ride->GetRideTypeDescriptor().Heights.PlatformHeight; - MoveTo({ *loc, actionZ }); + MoveTo({ loc.value(), actionZ }); return; } SwitchToSpecialSprite(0); - MoveTo({ *loc, z }); + MoveTo({ loc.value(), z }); } if (ride->lifecycle_flags & RIDE_LIFECYCLE_ON_RIDE_PHOTO) @@ -4370,7 +4370,7 @@ void Guest::UpdateRideApproachVehicleWaypoints() int16_t xy_distance; uint8_t waypoint = Var37 & 3; - if (auto loc = UpdateAction(xy_distance)) + if (auto loc = UpdateAction(xy_distance); loc.has_value()) { int16_t actionZ; // Motion simulators have steps this moves the peeps up the steps @@ -4394,7 +4394,7 @@ void Guest::UpdateRideApproachVehicleWaypoints() { actionZ = z; } - MoveTo({ *loc, actionZ }); + MoveTo({ loc.value(), actionZ }); return; } @@ -4448,7 +4448,7 @@ void Guest::UpdateRideApproachExitWaypoints() int16_t xy_distance; - if (auto loc = UpdateAction(xy_distance)) + if (auto loc = UpdateAction(xy_distance); loc.has_value()) { int16_t actionZ; if (ride->type == RIDE_TYPE_MOTION_SIMULATOR) @@ -4467,7 +4467,7 @@ void Guest::UpdateRideApproachExitWaypoints() { actionZ = z; } - MoveTo({ *loc, actionZ }); + MoveTo({ loc.value(), actionZ }); return; } @@ -4543,9 +4543,9 @@ void Guest::UpdateRideApproachSpiralSlide() if (ride == nullptr) return; - if (auto loc = UpdateAction()) + if (auto loc = UpdateAction(); loc.has_value()) { - MoveTo({ *loc, z }); + MoveTo({ loc.value(), z }); return; } @@ -4676,9 +4676,9 @@ void Guest::UpdateRideOnSpiralSlide() } } - if (auto loc = UpdateAction()) + if (auto loc = UpdateAction(); loc.has_value()) { - MoveTo({ *loc, z }); + MoveTo({ loc.value(), z }); return; } @@ -4702,9 +4702,9 @@ void Guest::UpdateRideLeaveSpiralSlide() { // Iterates through the spiral slide waypoints until it reaches // waypoint 0. Then it readies to leave the ride by the entrance. - if (auto loc = UpdateAction()) + if (auto loc = UpdateAction(); loc.has_value()) { - MoveTo({ *loc, z }); + MoveTo({ loc.value(), z }); return; } @@ -4775,9 +4775,9 @@ static constexpr const uint8_t _MazeCurrentDirectionToOpenHedge[][4] = { */ void Guest::UpdateRideMazePathfinding() { - if (auto loc = UpdateAction()) + if (auto loc = UpdateAction(); loc.has_value()) { - MoveTo({ *loc, z }); + MoveTo({ loc.value(), z }); return; } @@ -4897,9 +4897,9 @@ void Guest::UpdateRideMazePathfinding() break; } - if (auto loc = UpdateAction()) + if (auto loc = UpdateAction(); loc.has_value()) { - MoveTo({ *loc, z }); + MoveTo({ loc.value(), z }); return; } } @@ -4912,11 +4912,11 @@ void Guest::UpdateRideLeaveExit() { auto ride = get_ride(CurrentRide); - if (auto loc = UpdateAction()) + if (auto loc = UpdateAction(); loc.has_value()) { if (ride != nullptr) { - MoveTo({ *loc, ride->stations[CurrentRideStation].GetBaseZ() }); + MoveTo({ loc.value(), ride->stations[CurrentRideStation].GetBaseZ() }); } return; } @@ -4961,9 +4961,9 @@ void Guest::UpdateRideLeaveExit() */ void Guest::UpdateRideShopApproach() { - if (auto loc = UpdateAction()) + if (auto loc = UpdateAction(); loc.has_value()) { - MoveTo({ *loc, z }); + MoveTo({ loc.value(), z }); return; } @@ -5027,9 +5027,9 @@ void Guest::UpdateRideShopInteract() */ void Guest::UpdateRideShopLeave() { - if (auto loc = UpdateAction()) + if (auto loc = UpdateAction(); loc.has_value()) { - MoveTo({ *loc, z }); + MoveTo({ loc.value(), z }); if ((x & 0xFFE0) != NextLoc.x) return; @@ -5577,9 +5577,9 @@ void Guest::UpdateEnteringPark() } return; } - if (auto loc = UpdateAction()) + if (auto loc = UpdateAction(); loc.has_value()) { - MoveTo({ *loc, z }); + MoveTo({ loc.value(), z }); return; } SetState(PeepState::Falling); @@ -5608,9 +5608,9 @@ void Guest::UpdateLeavingPark() return; } - if (auto loc = UpdateAction()) + if (auto loc = UpdateAction(); loc.has_value()) { - MoveTo({ *loc, z }); + MoveTo({ loc.value(), z }); return; } diff --git a/src/openrct2/peep/Peep.cpp b/src/openrct2/peep/Peep.cpp index 7b1d0e5b3e..1ab1132cb0 100644 --- a/src/openrct2/peep/Peep.cpp +++ b/src/openrct2/peep/Peep.cpp @@ -2297,7 +2297,7 @@ void Peep::PerformNextAction(uint8_t& pathing_result, TileElement*& tile_result) } std::optional loc; - if (!(loc = UpdateAction())) + if (loc = UpdateAction(); !loc.has_value()) { pathing_result |= PATHING_DESTINATION_REACHED; uint8_t result = 0; @@ -2315,7 +2315,7 @@ void Peep::PerformNextAction(uint8_t& pathing_result, TileElement*& tile_result) if (result != 0) return; - if (!(loc = UpdateAction())) + if (loc = UpdateAction(); !loc.has_value()) return; } diff --git a/src/openrct2/peep/Staff.cpp b/src/openrct2/peep/Staff.cpp index 3cf1d8dafe..cbc6e23b91 100644 --- a/src/openrct2/peep/Staff.cpp +++ b/src/openrct2/peep/Staff.cpp @@ -1150,10 +1150,10 @@ void Staff::UpdateMowing() while (true) { - if (auto loc = UpdateAction()) + if (auto loc = UpdateAction(); loc.has_value()) { int16_t checkZ = tile_element_height(*loc); - MoveTo({ *loc, checkZ }); + MoveTo({ loc.value(), checkZ }); return; } @@ -1348,10 +1348,10 @@ void Staff::UpdateSweeping() StaffLitterSwept++; WindowInvalidateFlags |= PEEP_INVALIDATE_STAFF_STATS; } - if (auto loc = UpdateAction()) + if (auto loc = UpdateAction(); loc.has_value()) { int16_t actionZ = GetZOnSlope((*loc).x, (*loc).y); - MoveTo({ *loc, actionZ }); + MoveTo({ loc.value(), actionZ }); return; } @@ -1453,7 +1453,7 @@ void Staff::UpdateHeadingToInspect() } int16_t delta_y = abs(GetLocation().y - GetDestination().y); - if (auto loc = UpdateAction()) + if (auto loc = UpdateAction(); loc.has_value()) { int32_t newZ = ride->stations[CurrentRideStation].GetBaseZ(); @@ -1462,7 +1462,7 @@ void Staff::UpdateHeadingToInspect() newZ += ride->GetRideTypeDescriptor().Heights.PlatformHeight; } - MoveTo({ *loc, newZ }); + MoveTo({ loc.value(), newZ }); return; } @@ -1562,7 +1562,7 @@ void Staff::UpdateAnswering() } int16_t delta_y = abs(y - GetDestination().y); - if (auto loc = UpdateAction()) + if (auto loc = UpdateAction(); loc.has_value()) { int32_t newZ = ride->stations[CurrentRideStation].GetBaseZ(); @@ -1571,7 +1571,7 @@ void Staff::UpdateAnswering() newZ += ride->GetRideTypeDescriptor().Heights.PlatformHeight; } - MoveTo({ *loc, newZ }); + MoveTo({ loc.value(), newZ }); return; } @@ -2155,9 +2155,9 @@ bool Staff::UpdateFixingMoveToBrokenDownVehicle(bool firstRun, const Ride* ride) SetDestination(destination, 2); } - if (auto loc = UpdateAction()) + if (auto loc = UpdateAction(); loc.has_value()) { - MoveTo({ *loc, z }); + MoveTo({ loc.value(), z }); return false; } @@ -2305,9 +2305,9 @@ bool Staff::UpdateFixingMoveToStationEnd(bool firstRun, const Ride* ride) SetDestination(stationPos, 2); } - if (auto loc = UpdateAction()) + if (auto loc = UpdateAction(); loc.has_value()) { - MoveTo({ *loc, z }); + MoveTo({ loc.value(), z }); return false; } @@ -2411,9 +2411,9 @@ bool Staff::UpdateFixingMoveToStationStart(bool firstRun, const Ride* ride) SetDestination(destination, 2); } - if (auto loc = UpdateAction()) + if (auto loc = UpdateAction(); loc.has_value()) { - MoveTo({ *loc, z }); + MoveTo({ loc.value(), z }); return false; } @@ -2524,9 +2524,9 @@ bool Staff::UpdateFixingMoveToStationExit(bool firstRun, const Ride* ride) SetDestination(stationPosition, 2); } - if (auto loc = UpdateAction()) + if (auto loc = UpdateAction(); loc.has_value()) { - MoveTo({ *loc, z }); + MoveTo({ loc.value(), z }); return false; } else @@ -2608,7 +2608,7 @@ bool Staff::UpdateFixingLeaveByEntranceExit(bool firstRun, const Ride* ride) } int16_t xy_distance; - if (auto loc = UpdateAction(xy_distance)) + if (auto loc = UpdateAction(xy_distance); loc.has_value()) { uint16_t stationHeight = ride->stations[CurrentRideStation].GetBaseZ(); @@ -2617,7 +2617,7 @@ bool Staff::UpdateFixingLeaveByEntranceExit(bool firstRun, const Ride* ride) stationHeight += ride->GetRideTypeDescriptor().Heights.PlatformHeight; } - MoveTo({ *loc, stationHeight }); + MoveTo({ loc.value(), stationHeight }); return false; } SetState(PeepState::Falling); diff --git a/src/openrct2/platform/Crash.cpp b/src/openrct2/platform/Crash.cpp index c1768fece5..69076260b0 100644 --- a/src/openrct2/platform/Crash.cpp +++ b/src/openrct2/platform/Crash.cpp @@ -85,9 +85,9 @@ static bool UploadMinidump(const std::map& files, in } auto assertMsg = Guard::GetLastAssertMessage(); - if (assertMsg) + if (assertMsg.has_value()) { - parameters[L"assert_failure"] = String::ToWideChar(*assertMsg); + parameters[L"assert_failure"] = String::ToWideChar(assertMsg.value()); } int timeout = 10000; diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index bd9def7a5c..af331393da 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -869,9 +869,9 @@ namespace RCT1 { // Original RCT had no music settings, take default style auto style = GetStyleFromMusicIdentifier(GetRideTypeDescriptor(dst->type).DefaultMusic); - if (style) + if (style.has_value()) { - dst->music = *style; + dst->music = style.value(); } // Only merry-go-round and dodgems had music and used diff --git a/src/openrct2/rct2/S6Exporter.cpp b/src/openrct2/rct2/S6Exporter.cpp index 8952fc624f..7a51974b18 100644 --- a/src/openrct2/rct2/S6Exporter.cpp +++ b/src/openrct2/rct2/S6Exporter.cpp @@ -612,9 +612,9 @@ void S6Exporter::ExportParkName() { auto& park = OpenRCT2::GetContext()->GetGameState()->GetPark(); auto stringId = AllocateUserString(park.Name); - if (stringId != std::nullopt) + if (stringId.has_value()) { - _s6.park_name = *stringId; + _s6.park_name = stringId.value(); _s6.park_name_args = 0; } else @@ -672,9 +672,9 @@ void S6Exporter::ExportRide(rct2_ride* dst, const Ride* src) { // Custom name, allocate user string for ride auto stringId = AllocateUserString(src->custom_name); - if (stringId != std::nullopt) + if (stringId.has_value()) { - dst->name = *stringId; + dst->name = stringId.value(); dst->name_arguments = 0; useDefaultName = false; } @@ -1426,9 +1426,9 @@ void S6Exporter::ExportEntityPeep(RCT2SpritePeep* dst, const Peep* src) if (src->Name != nullptr) { auto stringId = AllocateUserString(src->Name); - if (stringId != std::nullopt) + if (stringId.has_value()) { - dst->name_string_idx = *stringId; + dst->name_string_idx = stringId.value(); generateName = false; } else @@ -1718,9 +1718,9 @@ void S6Exporter::ExportBanner(RCT12Banner& dst, const Banner& src) bannerText.append(src.text); auto stringId = AllocateUserString(bannerText); - if (stringId != std::nullopt) + if (stringId.has_value()) { - dst.string_idx = *stringId; + dst.string_idx = stringId.value(); } if (src.flags & BANNER_FLAG_LINKED_TO_RIDE) diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 9975a6b51e..698d455d41 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -2868,8 +2868,8 @@ static void ride_set_boat_hire_return_point(Ride* ride, CoordsXYE* startElement) trackType = trackBeginEnd.begin_element->AsTrack()->GetTrackType(); auto newCoords = GetTrackElementOriginAndApplyChanges( { trackCoords, static_cast(direction) }, trackType, 0, &returnPos.element, 0); - returnPos = newCoords == std::nullopt ? CoordsXYE{ trackCoords, returnPos.element } - : CoordsXYE{ *newCoords, returnPos.element }; + returnPos = !newCoords.has_value() ? CoordsXYE{ trackCoords, returnPos.element } + : CoordsXYE{ *newCoords, returnPos.element }; }; trackType = returnPos.element->AsTrack()->GetTrackType(); @@ -4855,7 +4855,7 @@ static std::optional ride_get_smallest_station_length(Ride* ride) { if (!station.Start.IsNull()) { - if (!result.has_value() || station.Length < *result) + if (!result.has_value() || station.Length < result.value()) { result = station.Length; } @@ -4968,7 +4968,7 @@ void Ride::UpdateMaxVehicles() if (!stationNumTiles.has_value()) return; - auto stationLength = (*stationNumTiles * 0x44180) - 0x16B2A; + auto stationLength = (stationNumTiles.value() * 0x44180) - 0x16B2A; int32_t maxMass = GetRideTypeDescriptor().MaxMass << 8; int32_t maxCarsPerTrain = 1; for (int32_t numCars = rideEntry->max_cars_in_train; numCars > 0; numCars--) diff --git a/src/openrct2/ride/RideConstruction.cpp b/src/openrct2/ride/RideConstruction.cpp index 722bea5ecc..b48053cc75 100644 --- a/src/openrct2/ride/RideConstruction.cpp +++ b/src/openrct2/ride/RideConstruction.cpp @@ -752,7 +752,7 @@ void ride_select_next_section() TileElement* tileElement; auto newCoords = GetTrackElementOriginAndApplyChanges( { _currentTrackBegin, static_cast(direction & 3) }, type, 0, &tileElement, 0); - if (newCoords == std::nullopt) + if (!newCoords.has_value()) { _rideConstructionState = RideConstructionState::State0; window_ride_construction_update_active_elements(); @@ -1037,12 +1037,12 @@ bool ride_modify(CoordsXYE* input) auto direction = tileElement.element->GetDirection(); auto type = tileElement.element->AsTrack()->GetTrackType(); auto newCoords = GetTrackElementOriginAndApplyChanges({ tileCoords, direction }, type, 0, nullptr, 0); - if (newCoords == std::nullopt) + if (!newCoords.has_value()) return false; _currentRideIndex = rideIndex; _rideConstructionState = RideConstructionState::Selected; - _currentTrackBegin = *newCoords; + _currentTrackBegin = newCoords.value(); _currentTrackPieceDirection = direction; _currentTrackPieceType = type; _currentTrackSelectionFlags = 0; @@ -1281,7 +1281,7 @@ CoordsXYZD ride_get_entrance_or_exit_position_from_screen_position(const ScreenC auto stationBaseZ = ride->stations[gRideEntranceExitPlaceStationIndex].GetBaseZ(); auto coordsAtHeight = screen_get_map_xy_with_z(screenCoords, stationBaseZ); - if (!coordsAtHeight) + if (!coordsAtHeight.has_value()) { entranceExitCoords.SetNull(); return entranceExitCoords; diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index 3cbc658e65..9e80677c12 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -179,7 +179,7 @@ rct_string_id TrackDesign::CreateTrackDesignTrack(const Ride& ride) auto newCoords = GetTrackElementOriginAndApplyChanges( { trackElement, z, direction }, trackType, 0, &trackElement.element, 0); - if (newCoords == std::nullopt) + if (!newCoords.has_value()) { return STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY; } @@ -236,7 +236,7 @@ rct_string_id TrackDesign::CreateTrackDesignTrack(const Ride& ride) newCoords = GetTrackElementOriginAndApplyChanges( { trackElement, z, direction }, trackType, 0, &trackElement.element, 0); - if (newCoords == std::nullopt) + if (!newCoords.has_value()) { break; } diff --git a/src/openrct2/ride/TrackDesignSave.cpp b/src/openrct2/ride/TrackDesignSave.cpp index a345852212..eba7b9031a 100644 --- a/src/openrct2/ride/TrackDesignSave.cpp +++ b/src/openrct2/ride/TrackDesignSave.cpp @@ -246,7 +246,7 @@ static void track_design_save_add_large_scenery(const CoordsXY& loc, LargeScener auto sceneryOrigin = map_large_scenery_get_origin( { loc.x, loc.y, z << 3, static_cast(direction) }, sequence, nullptr); - if (!sceneryOrigin) + if (!sceneryOrigin.has_value()) { return; } diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index a13689a586..9551f0847f 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -2340,7 +2340,7 @@ void Vehicle::UpdateWaitingForPassengers() } auto trainIndex = ride_get_train_index_from_vehicle(curRide, sprite_index); - if (!trainIndex) + if (!trainIndex.has_value()) { return; } @@ -2348,7 +2348,7 @@ void Vehicle::UpdateWaitingForPassengers() if (curRide->stations[current_station].TrainAtStation != RideStation::NO_TRAIN) return; - curRide->stations[current_station].TrainAtStation = *trainIndex; + curRide->stations[current_station].TrainAtStation = trainIndex.value(); sub_state = 1; time_waiting = 0; @@ -3607,12 +3607,12 @@ void Vehicle::UpdateCollisionSetup() { auto frontVehicle = GetHead(); auto trainIndex = ride_get_train_index_from_vehicle(curRide, frontVehicle->sprite_index); - if (!trainIndex) + if (!trainIndex.has_value()) { return; } - curRide->Crash(*trainIndex); + curRide->Crash(trainIndex.value()); if (curRide->status != RideStatus::Closed) { @@ -5382,12 +5382,12 @@ void Vehicle::CrashOnLand() { auto frontVehicle = GetHead(); auto trainIndex = ride_get_train_index_from_vehicle(curRide, frontVehicle->sprite_index); - if (!trainIndex) + if (!trainIndex.has_value()) { return; } - curRide->Crash(*trainIndex); + curRide->Crash(trainIndex.value()); if (curRide->status != RideStatus::Closed) { @@ -5448,12 +5448,12 @@ void Vehicle::CrashOnWater() { auto frontVehicle = GetHead(); auto trainIndex = ride_get_train_index_from_vehicle(curRide, frontVehicle->sprite_index); - if (!trainIndex) + if (!trainIndex.has_value()) { return; } - curRide->Crash(*trainIndex); + curRide->Crash(trainIndex.value()); if (curRide->status != RideStatus::Closed) { diff --git a/src/openrct2/world/MoneyEffect.cpp b/src/openrct2/world/MoneyEffect.cpp index 90aed63694..9bfe2b68c7 100644 --- a/src/openrct2/world/MoneyEffect.cpp +++ b/src/openrct2/world/MoneyEffect.cpp @@ -83,10 +83,10 @@ void MoneyEffect::Create(money64 value, const CoordsXYZ& loc) rct_viewport* mainViewport = window_get_viewport(mainWindow); auto mapPositionXY = screen_get_map_xy( { mainViewport->pos.x + (mainViewport->width / 2), mainViewport->pos.y + (mainViewport->height / 2) }, nullptr); - if (!mapPositionXY) + if (!mapPositionXY.has_value()) return; - offsetLoc = { *mapPositionXY, tile_element_height(*mapPositionXY) }; + offsetLoc = { mapPositionXY.value(), tile_element_height(*mapPositionXY) }; } offsetLoc.z += 10; CreateAt(-value, offsetLoc, false);