mirror of https://github.com/OpenRCT2/OpenRCT2.git
Compare commits
17 Commits
16b3f1ae9c
...
447eb781c2
Author | SHA1 | Date |
---|---|---|
rohan4412 | 447eb781c2 | |
Harry Hopkinson | 9266a6f0d3 | |
Michael Steenbeek | 03926c46d0 | |
Michael Steenbeek | e6207ee1b3 | |
Aaron van Geffen | 56cbc0eb8a | |
Aaron van Geffen | 255e89ec37 | |
Aaron van Geffen | 49b75e6606 | |
rohan4412 | 1f0f94188b | |
rohan4412 | 6876c4d0cb | |
rohan4412 | 09b2704819 | |
rohan4412 | 7747e8ba6a | |
rohan4412 | 075852e8c1 | |
rohan4412 | d766c0e78c | |
rohan4412 | 1cab852e07 | |
rohan4412 | c7086ee8b3 | |
rohan4412 | fedf9a6d99 | |
rohan4412 | 0e3cc7696f |
|
@ -64,9 +64,9 @@ set(TITLE_SEQUENCE_VERSION "0.4.6")
|
|||
set(TITLE_SEQUENCE_URL "https://github.com/OpenRCT2/title-sequences/releases/download/v${TITLE_SEQUENCE_VERSION}/title-sequences.zip")
|
||||
set(TITLE_SEQUENCE_SHA1 "80fefc6ebbabc42a6f4703412daa5c62f661420d")
|
||||
|
||||
set(OBJECTS_VERSION "1.4.3")
|
||||
set(OBJECTS_VERSION "1.4.4")
|
||||
set(OBJECTS_URL "https://github.com/OpenRCT2/objects/releases/download/v${OBJECTS_VERSION}/objects.zip")
|
||||
set(OBJECTS_SHA1 "ac78210ef46465c0f51bbffd6fe21845092af48e")
|
||||
set(OBJECTS_SHA1 "4e9b5d7f85a07b90ec57fe37517e04b19ee0395c")
|
||||
|
||||
set(OPENSFX_VERSION "1.0.5")
|
||||
set(OPENSFX_URL "https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v${OPENSFX_VERSION}/opensound.zip")
|
||||
|
|
|
@ -11,6 +11,8 @@
|
|||
- Fix: [#21696] Fullscreen window option not correctly applied on macOS.
|
||||
- Fix: [#21787] Map generator heightmap should respect increased height limits.
|
||||
- Fix: [#21829] When creating a new scenario, the default name contains formatting codes.
|
||||
- Fix: [objects#324] Cannot build Colosseum inside a turn or helix.
|
||||
- Fix: [objects#325] Sloped castle walls are vertically offset by one pixel (original bug).
|
||||
|
||||
0.4.10 (2024-04-02)
|
||||
------------------------------------------------------------------------
|
||||
|
|
|
@ -45,8 +45,8 @@
|
|||
<LibsSha1 Condition="'$(Platform)'=='Win32'">f3636b530110c7592deab23ca0d0c1916fc7e44c</LibsSha1>
|
||||
<TitleSequencesUrl>https://github.com/OpenRCT2/title-sequences/releases/download/v0.4.6/title-sequences.zip</TitleSequencesUrl>
|
||||
<TitleSequencesSha1>80fefc6ebbabc42a6f4703412daa5c62f661420d</TitleSequencesSha1>
|
||||
<ObjectsUrl>https://github.com/OpenRCT2/objects/releases/download/v1.4.3/objects.zip</ObjectsUrl>
|
||||
<ObjectsSha1>ac78210ef46465c0f51bbffd6fe21845092af48e</ObjectsSha1>
|
||||
<ObjectsUrl>https://github.com/OpenRCT2/objects/releases/download/v1.4.4/objects.zip</ObjectsUrl>
|
||||
<ObjectsSha1>4e9b5d7f85a07b90ec57fe37517e04b19ee0395c</ObjectsSha1>
|
||||
<OpenSFXUrl>https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v1.0.5/opensound.zip</OpenSFXUrl>
|
||||
<OpenSFXSha1>b1b1f1b241d2cbff63a1889c4dc5a09bdf769bfb</OpenSFXSha1>
|
||||
<OpenMSXUrl>https://github.com/OpenRCT2/OpenMusic/releases/download/v1.5/openmusic.zip</OpenMSXUrl>
|
||||
|
|
|
@ -41,8 +41,8 @@
|
|||
#include <openrct2/interface/InteractiveConsole.h>
|
||||
#include <openrct2/localisation/StringIds.h>
|
||||
#include <openrct2/platform/Platform.h>
|
||||
#include <openrct2/scenes/title/TitleSequencePlayer.h>
|
||||
#include <openrct2/scripting/ScriptEngine.h>
|
||||
#include <openrct2/title/TitleSequencePlayer.h>
|
||||
#include <openrct2/ui/UiContext.h>
|
||||
#include <openrct2/ui/WindowManager.h>
|
||||
#include <openrct2/world/Location.hpp>
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
# include <algorithm>
|
||||
# include <cmath>
|
||||
# include <openrct2-ui/interface/Window.h>
|
||||
# include <openrct2/Intro.h>
|
||||
# include <openrct2/config/Config.h>
|
||||
# include <openrct2/core/Console.hpp>
|
||||
# include <openrct2/drawing/Drawing.h>
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
#include <openrct2/ride/Track.h>
|
||||
#include <openrct2/ride/TrackPaint.h>
|
||||
#include <openrct2/scenario/Scenario.h>
|
||||
#include <openrct2/title/TitleScreen.h>
|
||||
#include <openrct2/scenes/title/TitleScene.h>
|
||||
#include <openrct2/util/Util.h>
|
||||
#include <openrct2/windows/Intent.h>
|
||||
#include <openrct2/windows/TileInspectorGlobals.h>
|
||||
|
|
|
@ -21,11 +21,11 @@
|
|||
# include <openrct2/entity/EntityRegistry.h>
|
||||
# include <openrct2/object/ObjectManager.h>
|
||||
# include <openrct2/scenario/Scenario.h>
|
||||
# include <openrct2/scenes/title/TitleScene.h>
|
||||
# include <openrct2/scenes/title/TitleSequence.h>
|
||||
# include <openrct2/scenes/title/TitleSequenceManager.h>
|
||||
# include <openrct2/scenes/title/TitleSequencePlayer.h>
|
||||
# include <openrct2/scripting/ScriptEngine.h>
|
||||
# include <openrct2/title/TitleScreen.h>
|
||||
# include <openrct2/title/TitleSequence.h>
|
||||
# include <openrct2/title/TitleSequenceManager.h>
|
||||
# include <openrct2/title/TitleSequencePlayer.h>
|
||||
# include <type_traits>
|
||||
# include <variant>
|
||||
|
||||
|
|
|
@ -30,10 +30,10 @@
|
|||
#include <openrct2/object/ObjectManager.h>
|
||||
#include <openrct2/scenario/ScenarioRepository.h>
|
||||
#include <openrct2/scenario/ScenarioSources.h>
|
||||
#include <openrct2/title/TitleScreen.h>
|
||||
#include <openrct2/title/TitleSequence.h>
|
||||
#include <openrct2/title/TitleSequenceManager.h>
|
||||
#include <openrct2/title/TitleSequencePlayer.h>
|
||||
#include <openrct2/scenes/title/TitleScene.h>
|
||||
#include <openrct2/scenes/title/TitleSequence.h>
|
||||
#include <openrct2/scenes/title/TitleSequenceManager.h>
|
||||
#include <openrct2/scenes/title/TitleSequencePlayer.h>
|
||||
#include <openrct2/ui/UiContext.h>
|
||||
#include <openrct2/ui/WindowManager.h>
|
||||
#include <openrct2/windows/Intent.h>
|
||||
|
|
|
@ -35,8 +35,8 @@
|
|||
#include <openrct2/platform/Platform.h>
|
||||
#include <openrct2/ride/RideData.h>
|
||||
#include <openrct2/scenario/Scenario.h>
|
||||
#include <openrct2/scenes/title/TitleScene.h>
|
||||
#include <openrct2/sprites.h>
|
||||
#include <openrct2/title/TitleScreen.h>
|
||||
#include <openrct2/util/Util.h>
|
||||
#include <openrct2/windows/Intent.h>
|
||||
#include <string>
|
||||
|
@ -368,7 +368,9 @@ static std::vector<Widget> _window_editor_object_selection_widgets = {
|
|||
{
|
||||
GameNotifyMapChange();
|
||||
GameUnloadScripts();
|
||||
TitleLoad();
|
||||
|
||||
auto* context = OpenRCT2::GetContext();
|
||||
context->SetActiveScene(context->GetTitleScene());
|
||||
}
|
||||
break;
|
||||
case WIDX_FILTER_RIDE_TAB_ALL:
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
#include <openrct2/rct2/T6Exporter.h>
|
||||
#include <openrct2/ride/TrackDesign.h>
|
||||
#include <openrct2/scenario/Scenario.h>
|
||||
#include <openrct2/title/TitleScreen.h>
|
||||
#include <openrct2/scenes/title/TitleScene.h>
|
||||
#include <openrct2/ui/UiContext.h>
|
||||
#include <openrct2/util/Util.h>
|
||||
#include <openrct2/windows/Intent.h>
|
||||
|
@ -354,7 +354,9 @@ static Widget window_loadsave_widgets[] =
|
|||
{
|
||||
WindowCloseByClass(WindowClass::Loadsave);
|
||||
InvokeCallback(MODAL_RESULT_OK, pathBuffer);
|
||||
TitleLoad();
|
||||
|
||||
auto* context = OpenRCT2::GetContext();
|
||||
context->SetActiveScene(context->GetTitleScene());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -40,9 +40,9 @@
|
|||
#include <openrct2/platform/Platform.h>
|
||||
#include <openrct2/ride/RideAudio.h>
|
||||
#include <openrct2/scenario/Scenario.h>
|
||||
#include <openrct2/scenes/title/TitleScene.h>
|
||||
#include <openrct2/scenes/title/TitleSequenceManager.h>
|
||||
#include <openrct2/sprites.h>
|
||||
#include <openrct2/title/TitleScreen.h>
|
||||
#include <openrct2/title/TitleSequenceManager.h>
|
||||
#include <openrct2/ui/UiContext.h>
|
||||
#include <openrct2/util/Util.h>
|
||||
|
||||
|
@ -251,28 +251,26 @@ static Widget window_options_display_widgets[] = {
|
|||
MakeWidget ({ 11, 206}, {280, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_DISABLE_SCREENSAVER, STR_DISABLE_SCREENSAVER_TIP ), // Disable screensaver
|
||||
kWidgetsEnd,
|
||||
};
|
||||
|
||||
constexpr int32_t kFrameRenderingStart = 53;
|
||||
constexpr int32_t kFrameEffectStart = 163;
|
||||
static Widget window_options_rendering_widgets[] = {
|
||||
MAIN_OPTIONS_WIDGETS,
|
||||
#define FRAME_RENDERING_START 53
|
||||
MakeWidget({ 5, FRAME_RENDERING_START + 0}, {300, 108}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_RENDERING_GROUP ), // Rendering group
|
||||
MakeWidget({ 10, FRAME_RENDERING_START + 15}, {281, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_TILE_SMOOTHING, STR_TILE_SMOOTHING_TIP ), // Landscape smoothing
|
||||
MakeWidget({ 10, FRAME_RENDERING_START + 30}, {281, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_GRIDLINES, STR_GRIDLINES_TIP ), // Gridlines
|
||||
MakeWidget({ 10, FRAME_RENDERING_START + 45}, {281, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_UPPERCASE_BANNERS, STR_UPPERCASE_BANNERS_TIP ), // Uppercase banners
|
||||
MakeWidget({ 10, FRAME_RENDERING_START + 60}, {281, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_SHOW_GUEST_PURCHASES, STR_SHOW_GUEST_PURCHASES_TIP ), // Guest purchases
|
||||
MakeWidget({ 10, FRAME_RENDERING_START + 75}, {281, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_TRANSPARENT_SCREENSHOT, STR_TRANSPARENT_SCREENSHOT_TIP), // Transparent screenshot
|
||||
MakeWidget({ 10, FRAME_RENDERING_START + 90}, {281, 12}, WindowWidgetType::Label, WindowColour::Secondary, STR_VIRTUAL_FLOOR_STYLE, STR_VIRTUAL_FLOOR_STYLE_TIP ), // Virtual floor
|
||||
MakeWidget({155, FRAME_RENDERING_START + 90}, {145, 12}, WindowWidgetType::DropdownMenu, WindowColour::Secondary, STR_NONE, STR_VIRTUAL_FLOOR_STYLE_TIP ), // Virtual floor dropdown
|
||||
MakeWidget({288, FRAME_RENDERING_START + 91}, { 11, 10}, WindowWidgetType::Button, WindowColour::Secondary, STR_DROPDOWN_GLYPH, STR_VIRTUAL_FLOOR_STYLE_TIP ), // Virtual floor dropdown
|
||||
#undef FRAME_RENDERING_START
|
||||
#define FRAME_EFFECTS_START 163
|
||||
MakeWidget({ 5, FRAME_EFFECTS_START + 0}, {300, 94}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_EFFECTS_GROUP ), // Rendering group
|
||||
MakeWidget({10, FRAME_EFFECTS_START + 15}, {281, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_CYCLE_DAY_NIGHT, STR_CYCLE_DAY_NIGHT_TIP ), // Cycle day-night
|
||||
MakeWidget({25, FRAME_EFFECTS_START + 30}, {266, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_ENABLE_LIGHTING_EFFECTS, STR_ENABLE_LIGHTING_EFFECTS_TIP ), // Enable light fx
|
||||
MakeWidget({40, FRAME_EFFECTS_START + 45}, {251, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_ENABLE_LIGHTING_VEHICLES, STR_ENABLE_LIGHTING_VEHICLES_TIP), // Enable light fx for vehicles
|
||||
MakeWidget({10, FRAME_EFFECTS_START + 60}, {281, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_RENDER_WEATHER_EFFECTS, STR_RENDER_WEATHER_EFFECTS_TIP ), // Render weather effects
|
||||
MakeWidget({25, FRAME_EFFECTS_START + 75}, {266, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_DISABLE_LIGHTNING_EFFECT, STR_DISABLE_LIGHTNING_EFFECT_TIP), // Disable lightning effect
|
||||
#undef FRAME_EFFECTS_START
|
||||
MakeWidget({ 5, kFrameRenderingStart + 0}, {300, 108}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_RENDERING_GROUP ), // Rendering group
|
||||
MakeWidget({ 10, kFrameRenderingStart + 15}, {281, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_TILE_SMOOTHING, STR_TILE_SMOOTHING_TIP ), // Landscape smoothing
|
||||
MakeWidget({ 10, kFrameRenderingStart + 30}, {281, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_GRIDLINES, STR_GRIDLINES_TIP ), // Gridlines
|
||||
MakeWidget({ 10, kFrameRenderingStart + 45}, {281, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_UPPERCASE_BANNERS, STR_UPPERCASE_BANNERS_TIP ), // Uppercase banners
|
||||
MakeWidget({ 10, kFrameRenderingStart + 60}, {281, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_SHOW_GUEST_PURCHASES, STR_SHOW_GUEST_PURCHASES_TIP ), // Guest purchases
|
||||
MakeWidget({ 10, kFrameRenderingStart + 75}, {281, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_TRANSPARENT_SCREENSHOT, STR_TRANSPARENT_SCREENSHOT_TIP), // Transparent screenshot
|
||||
MakeWidget({ 10, kFrameRenderingStart + 90}, {281, 12}, WindowWidgetType::Label, WindowColour::Secondary, STR_VIRTUAL_FLOOR_STYLE, STR_VIRTUAL_FLOOR_STYLE_TIP ), // Virtual floor
|
||||
MakeWidget({155, kFrameRenderingStart + 90}, {145, 12}, WindowWidgetType::DropdownMenu, WindowColour::Secondary, STR_NONE, STR_VIRTUAL_FLOOR_STYLE_TIP ), // Virtual floor dropdown
|
||||
MakeWidget({288, kFrameRenderingStart + 91}, { 11, 10}, WindowWidgetType::Button, WindowColour::Secondary, STR_DROPDOWN_GLYPH, STR_VIRTUAL_FLOOR_STYLE_TIP ), // Virtual floor dropdown
|
||||
|
||||
MakeWidget({ 5, kFrameEffectStart + 0}, {300, 94}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_EFFECTS_GROUP ), // Rendering group
|
||||
MakeWidget({10, kFrameEffectStart + 15}, {281, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_CYCLE_DAY_NIGHT, STR_CYCLE_DAY_NIGHT_TIP ), // Cycle day-night
|
||||
MakeWidget({25, kFrameEffectStart + 30}, {266, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_ENABLE_LIGHTING_EFFECTS, STR_ENABLE_LIGHTING_EFFECTS_TIP ), // Enable light fx
|
||||
MakeWidget({40, kFrameEffectStart + 45}, {251, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_ENABLE_LIGHTING_VEHICLES, STR_ENABLE_LIGHTING_VEHICLES_TIP), // Enable light fx for vehicles
|
||||
MakeWidget({10, kFrameEffectStart + 60}, {281, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_RENDER_WEATHER_EFFECTS, STR_RENDER_WEATHER_EFFECTS_TIP ), // Render weather effects
|
||||
MakeWidget({25, kFrameEffectStart + 75}, {266, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_DISABLE_LIGHTNING_EFFECT, STR_DISABLE_LIGHTNING_EFFECT_TIP), // Disable lightning effect
|
||||
kWidgetsEnd,
|
||||
};
|
||||
|
||||
|
@ -315,48 +313,46 @@ static Widget window_options_audio_widgets[] = {
|
|||
MakeWidget({155, 98}, {145, 13}, WindowWidgetType::Scroll, WindowColour::Secondary, SCROLL_HORIZONTAL ), // Music volume
|
||||
kWidgetsEnd,
|
||||
};
|
||||
|
||||
constexpr int32_t kControlsGroupStart = 53;
|
||||
constexpr int32_t kThemesGroupStart = 163;
|
||||
constexpr int32_t kToolbarGroupStart = 215;
|
||||
static Widget window_options_controls_and_interface_widgets[] = {
|
||||
MAIN_OPTIONS_WIDGETS,
|
||||
#define CONTROLS_GROUP_START 53
|
||||
MakeWidget({ 5, CONTROLS_GROUP_START + 0}, {300,107}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_CONTROLS_GROUP ), // Controls group
|
||||
MakeWidget({ 10, CONTROLS_GROUP_START + 13}, {290, 14}, WindowWidgetType::Checkbox, WindowColour::Tertiary , STR_SCREEN_EDGE_SCROLLING, STR_SCREEN_EDGE_SCROLLING_TIP ), // Edge scrolling
|
||||
MakeWidget({ 10, CONTROLS_GROUP_START + 30}, {290, 12}, WindowWidgetType::Checkbox, WindowColour::Tertiary , STR_TRAP_MOUSE, STR_TRAP_MOUSE_TIP ), // Trap mouse
|
||||
MakeWidget({ 10, CONTROLS_GROUP_START + 45}, {290, 12}, WindowWidgetType::Checkbox, WindowColour::Tertiary , STR_INVERT_RIGHT_MOUSE_DRAG, STR_INVERT_RIGHT_MOUSE_DRAG_TIP ), // Invert right mouse dragging
|
||||
MakeWidget({ 10, CONTROLS_GROUP_START + 60}, {290, 12}, WindowWidgetType::Checkbox, WindowColour::Tertiary , STR_ZOOM_TO_CURSOR, STR_ZOOM_TO_CURSOR_TIP ), // Zoom to cursor
|
||||
MakeWidget({ 10, CONTROLS_GROUP_START + 75}, {290, 12}, WindowWidgetType::Checkbox, WindowColour::Tertiary, STR_WINDOW_BUTTONS_ON_THE_LEFT, STR_WINDOW_BUTTONS_ON_THE_LEFT_TIP), // Window buttons on the left
|
||||
MakeWidget({155, CONTROLS_GROUP_START + 90}, {145, 13}, WindowWidgetType::Button, WindowColour::Secondary, STR_HOTKEY, STR_HOTKEY_TIP ), // Set hotkeys buttons
|
||||
#undef CONTROLS_GROUP_START
|
||||
#define THEMES_GROUP_START 163
|
||||
MakeWidget({ 5, THEMES_GROUP_START + 0}, {300, 48}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_THEMES_GROUP ), // Themes group
|
||||
MakeWidget({ 10, THEMES_GROUP_START + 14}, {145, 12}, WindowWidgetType::Label, WindowColour::Secondary, STR_THEMES_LABEL_CURRENT_THEME, STR_CURRENT_THEME_TIP ), // Themes
|
||||
MakeWidget({155, THEMES_GROUP_START + 14}, {145, 12}, WindowWidgetType::DropdownMenu, WindowColour::Secondary, STR_STRING ),
|
||||
MakeWidget({288, THEMES_GROUP_START + 15}, { 11, 10}, WindowWidgetType::Button, WindowColour::Secondary, STR_DROPDOWN_GLYPH, STR_CURRENT_THEME_TIP ),
|
||||
MakeWidget({155, THEMES_GROUP_START + 30}, {145, 13}, WindowWidgetType::Button, WindowColour::Secondary, STR_EDIT_THEMES_BUTTON, STR_EDIT_THEMES_BUTTON_TIP), // Themes button
|
||||
#undef THEMES_GROUP_START
|
||||
#define TOOLBAR_GROUP_START 215
|
||||
MakeWidget({ 5, TOOLBAR_GROUP_START + 0}, {300, 92}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_TOOLBAR_BUTTONS_GROUP ), // Toolbar buttons group
|
||||
MakeWidget({ 10, TOOLBAR_GROUP_START + 14}, {280, 12}, WindowWidgetType::Label, WindowColour::Secondary, STR_SHOW_TOOLBAR_BUTTONS_FOR ),
|
||||
MakeWidget({ 24, TOOLBAR_GROUP_START + 31}, {122, 12}, WindowWidgetType::Checkbox, WindowColour::Tertiary , STR_FINANCES_BUTTON_ON_TOOLBAR, STR_FINANCES_BUTTON_ON_TOOLBAR_TIP ), // Finances
|
||||
MakeWidget({ 24, TOOLBAR_GROUP_START + 46}, {122, 12}, WindowWidgetType::Checkbox, WindowColour::Tertiary , STR_RESEARCH_BUTTON_ON_TOOLBAR, STR_RESEARCH_BUTTON_ON_TOOLBAR_TIP ), // Research
|
||||
MakeWidget({155, TOOLBAR_GROUP_START + 31}, {145, 12}, WindowWidgetType::Checkbox, WindowColour::Tertiary , STR_CHEATS_BUTTON_ON_TOOLBAR, STR_CHEATS_BUTTON_ON_TOOLBAR_TIP ), // Cheats
|
||||
MakeWidget({155, TOOLBAR_GROUP_START + 46}, {145, 12}, WindowWidgetType::Checkbox, WindowColour::Tertiary , STR_SHOW_RECENT_MESSAGES_ON_TOOLBAR, STR_SHOW_RECENT_MESSAGES_ON_TOOLBAR_TIP), // Recent messages
|
||||
MakeWidget({ 24, TOOLBAR_GROUP_START + 61}, {162, 12}, WindowWidgetType::Checkbox, WindowColour::Tertiary , STR_MUTE_BUTTON_ON_TOOLBAR, STR_MUTE_BUTTON_ON_TOOLBAR_TIP ), // Mute
|
||||
MakeWidget({155, TOOLBAR_GROUP_START + 61}, {145, 12}, WindowWidgetType::Checkbox, WindowColour::Tertiary , STR_CHAT_BUTTON_ON_TOOLBAR, STR_CHAT_BUTTON_ON_TOOLBAR_TIP ), // Chat
|
||||
MakeWidget({ 24, TOOLBAR_GROUP_START + 76}, {122, 12}, WindowWidgetType::Checkbox, WindowColour::Tertiary , STR_ZOOM_BUTTON_ON_TOOLBAR, STR_ZOOM_BUTTON_ON_TOOLBAR_TIP ), // Zoom
|
||||
MakeWidget({ 5, kControlsGroupStart + 0}, {300,107}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_CONTROLS_GROUP ), // Controls group
|
||||
MakeWidget({ 10, kControlsGroupStart + 13}, {290, 14}, WindowWidgetType::Checkbox, WindowColour::Tertiary , STR_SCREEN_EDGE_SCROLLING, STR_SCREEN_EDGE_SCROLLING_TIP ), // Edge scrolling
|
||||
MakeWidget({ 10, kControlsGroupStart + 30}, {290, 12}, WindowWidgetType::Checkbox, WindowColour::Tertiary , STR_TRAP_MOUSE, STR_TRAP_MOUSE_TIP ), // Trap mouse
|
||||
MakeWidget({ 10, kControlsGroupStart + 45}, {290, 12}, WindowWidgetType::Checkbox, WindowColour::Tertiary , STR_INVERT_RIGHT_MOUSE_DRAG, STR_INVERT_RIGHT_MOUSE_DRAG_TIP ), // Invert right mouse dragging
|
||||
MakeWidget({ 10, kControlsGroupStart + 60}, {290, 12}, WindowWidgetType::Checkbox, WindowColour::Tertiary , STR_ZOOM_TO_CURSOR, STR_ZOOM_TO_CURSOR_TIP ), // Zoom to cursor
|
||||
MakeWidget({ 10, kControlsGroupStart + 75}, {290, 12}, WindowWidgetType::Checkbox, WindowColour::Tertiary, STR_WINDOW_BUTTONS_ON_THE_LEFT, STR_WINDOW_BUTTONS_ON_THE_LEFT_TIP), // Window buttons on the left
|
||||
MakeWidget({155, kControlsGroupStart + 90}, {145, 13}, WindowWidgetType::Button, WindowColour::Secondary, STR_HOTKEY, STR_HOTKEY_TIP ), // Set hotkeys buttons
|
||||
|
||||
MakeWidget({ 5, kThemesGroupStart + 0}, {300, 48}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_THEMES_GROUP ), // Themes group
|
||||
MakeWidget({ 10, kThemesGroupStart + 14}, {145, 12}, WindowWidgetType::Label, WindowColour::Secondary, STR_THEMES_LABEL_CURRENT_THEME, STR_CURRENT_THEME_TIP ), // Themes
|
||||
MakeWidget({155, kThemesGroupStart + 14}, {145, 12}, WindowWidgetType::DropdownMenu, WindowColour::Secondary, STR_STRING ),
|
||||
MakeWidget({288, kThemesGroupStart + 15}, { 11, 10}, WindowWidgetType::Button, WindowColour::Secondary, STR_DROPDOWN_GLYPH, STR_CURRENT_THEME_TIP ),
|
||||
MakeWidget({155, kThemesGroupStart + 30}, {145, 13}, WindowWidgetType::Button, WindowColour::Secondary, STR_EDIT_THEMES_BUTTON, STR_EDIT_THEMES_BUTTON_TIP), // Themes button
|
||||
|
||||
MakeWidget({ 5, kToolbarGroupStart + 0}, {300, 92}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_TOOLBAR_BUTTONS_GROUP ), // Toolbar buttons group
|
||||
MakeWidget({ 10, kToolbarGroupStart + 14}, {280, 12}, WindowWidgetType::Label, WindowColour::Secondary, STR_SHOW_TOOLBAR_BUTTONS_FOR ),
|
||||
MakeWidget({ 24, kToolbarGroupStart + 31}, {122, 12}, WindowWidgetType::Checkbox, WindowColour::Tertiary , STR_FINANCES_BUTTON_ON_TOOLBAR, STR_FINANCES_BUTTON_ON_TOOLBAR_TIP ), // Finances
|
||||
MakeWidget({ 24, kToolbarGroupStart + 46}, {122, 12}, WindowWidgetType::Checkbox, WindowColour::Tertiary , STR_RESEARCH_BUTTON_ON_TOOLBAR, STR_RESEARCH_BUTTON_ON_TOOLBAR_TIP ), // Research
|
||||
MakeWidget({155, kToolbarGroupStart + 31}, {145, 12}, WindowWidgetType::Checkbox, WindowColour::Tertiary , STR_CHEATS_BUTTON_ON_TOOLBAR, STR_CHEATS_BUTTON_ON_TOOLBAR_TIP ), // Cheats
|
||||
MakeWidget({155, kToolbarGroupStart + 46}, {145, 12}, WindowWidgetType::Checkbox, WindowColour::Tertiary , STR_SHOW_RECENT_MESSAGES_ON_TOOLBAR, STR_SHOW_RECENT_MESSAGES_ON_TOOLBAR_TIP), // Recent messages
|
||||
MakeWidget({ 24, kToolbarGroupStart + 61}, {162, 12}, WindowWidgetType::Checkbox, WindowColour::Tertiary , STR_MUTE_BUTTON_ON_TOOLBAR, STR_MUTE_BUTTON_ON_TOOLBAR_TIP ), // Mute
|
||||
MakeWidget({155, kToolbarGroupStart + 61}, {145, 12}, WindowWidgetType::Checkbox, WindowColour::Tertiary , STR_CHAT_BUTTON_ON_TOOLBAR, STR_CHAT_BUTTON_ON_TOOLBAR_TIP ), // Chat
|
||||
MakeWidget({ 24, kToolbarGroupStart + 76}, {122, 12}, WindowWidgetType::Checkbox, WindowColour::Tertiary , STR_ZOOM_BUTTON_ON_TOOLBAR, STR_ZOOM_BUTTON_ON_TOOLBAR_TIP ), // Zoom
|
||||
kWidgetsEnd,
|
||||
#undef TOOLBAR_GROUP_START
|
||||
};
|
||||
|
||||
#define TITLE_SEQUENCE_START 53
|
||||
#define SCENARIO_START (TITLE_SEQUENCE_START + 35)
|
||||
constexpr int32_t kTitleSequenceStart = 53;
|
||||
#define SCENARIO_START (kTitleSequenceStart + 35)
|
||||
#define SCENARIO_OPTIONS_START (SCENARIO_START + 55)
|
||||
#define TWEAKS_START (SCENARIO_OPTIONS_START + 39)
|
||||
|
||||
static Widget window_options_misc_widgets[] = {
|
||||
MAIN_OPTIONS_WIDGETS,
|
||||
MakeWidget( { 5, TITLE_SEQUENCE_START + 0}, {300, 31}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_OPTIONS_TITLE_SEQUENCE ),
|
||||
MakeDropdownWidgets({ 10, TITLE_SEQUENCE_START + 15}, {290, 12}, WindowWidgetType::DropdownMenu, WindowColour::Secondary, STR_STRINGID, STR_TITLE_SEQUENCE_TIP), // Title sequence dropdown
|
||||
MakeWidget( { 5, kTitleSequenceStart + 0}, {300, 31}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_OPTIONS_TITLE_SEQUENCE ),
|
||||
MakeDropdownWidgets({ 10, kTitleSequenceStart + 15}, {290, 12}, WindowWidgetType::DropdownMenu, WindowColour::Secondary, STR_STRINGID, STR_TITLE_SEQUENCE_TIP), // Title sequence dropdown
|
||||
|
||||
MakeWidget({ 5, SCENARIO_START + 0}, {300, 51}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_OPTIONS_SCENARIO_SELECTION ),
|
||||
MakeWidget({ 10, SCENARIO_START + 16}, {165, 12}, WindowWidgetType::Label, WindowColour::Secondary, STR_OPTIONS_SCENARIO_GROUPING, STR_SCENARIO_GROUPING_TIP ),
|
||||
|
@ -380,7 +376,6 @@ static Widget window_options_misc_widgets[] = {
|
|||
#undef TWEAKS_START
|
||||
#undef SCENARIO_OPTIONS_START
|
||||
#undef SCENARIO_START
|
||||
#undef TITLE_SEQUENCE_START
|
||||
|
||||
static Widget window_options_advanced_widgets[] = {
|
||||
MAIN_OPTIONS_WIDGETS,
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
#include <openrct2-ui/interface/Widget.h>
|
||||
#include <openrct2-ui/windows/Window.h>
|
||||
#include <openrct2/Context.h>
|
||||
#include <openrct2/Intro.h>
|
||||
#include <openrct2/config/Config.h>
|
||||
#include <openrct2/localisation/Localisation.h>
|
||||
#include <openrct2/sprites.h>
|
||||
|
@ -38,9 +37,6 @@ static Widget _titleExitWidgets[] = {
|
|||
|
||||
void OnMouseUp(WidgetIndex widgetIndex) override
|
||||
{
|
||||
if (gIntroState != IntroState::None)
|
||||
return;
|
||||
|
||||
switch (widgetIndex)
|
||||
{
|
||||
case WIDX_EXIT:
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
#include <openrct2-ui/interface/Widget.h>
|
||||
#include <openrct2-ui/windows/Window.h>
|
||||
#include <openrct2/Context.h>
|
||||
#include <openrct2/Intro.h>
|
||||
#include <openrct2/config/Config.h>
|
||||
#include <openrct2/localisation/Localisation.h>
|
||||
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
#include "GameState.h"
|
||||
#include "GameStateSnapshots.h"
|
||||
#include "Input.h"
|
||||
#include "Intro.h"
|
||||
#include "OpenRCT2.h"
|
||||
#include "ParkImporter.h"
|
||||
#include "PlatformEnvironment.h"
|
||||
|
@ -66,10 +65,12 @@
|
|||
#include "ride/TrackDesignRepository.h"
|
||||
#include "scenario/Scenario.h"
|
||||
#include "scenario/ScenarioRepository.h"
|
||||
#include "scenes/game/GameScene.h"
|
||||
#include "scenes/intro/IntroScene.h"
|
||||
#include "scenes/title/TitleScene.h"
|
||||
#include "scenes/title/TitleSequenceManager.h"
|
||||
#include "scripting/HookEngine.h"
|
||||
#include "scripting/ScriptEngine.h"
|
||||
#include "title/TitleScreen.h"
|
||||
#include "title/TitleSequenceManager.h"
|
||||
#include "ui/UiContext.h"
|
||||
#include "ui/WindowManager.h"
|
||||
#include "util/Util.h"
|
||||
|
@ -122,8 +123,11 @@ namespace OpenRCT2
|
|||
NetworkBase _network;
|
||||
#endif
|
||||
|
||||
// Game states
|
||||
std::unique_ptr<TitleScreen> _titleScreen;
|
||||
// Scenes
|
||||
std::unique_ptr<IntroScene> _introScene;
|
||||
std::unique_ptr<TitleScene> _titleScene;
|
||||
std::unique_ptr<GameScene> _gameScene;
|
||||
IScene* _activeScene = nullptr;
|
||||
|
||||
DrawingEngine _drawingEngineType = DrawingEngine::Software;
|
||||
std::unique_ptr<IDrawingEngine> _drawingEngine;
|
||||
|
@ -171,7 +175,9 @@ namespace OpenRCT2
|
|||
#ifndef DISABLE_NETWORK
|
||||
, _network(*this)
|
||||
#endif
|
||||
, _titleScreen(std::make_unique<TitleScreen>())
|
||||
, _introScene(std::make_unique<IntroScene>(*this))
|
||||
, _titleScene(std::make_unique<TitleScene>(*this))
|
||||
, _gameScene(std::make_unique<GameScene>(*this))
|
||||
, _painter(std::make_unique<Painter>(uiContext))
|
||||
{
|
||||
// Can't have more than one context currently.
|
||||
|
@ -305,6 +311,47 @@ namespace OpenRCT2
|
|||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
IScene* GetLoadingScene() override
|
||||
{
|
||||
// TODO: Implement me.
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
IScene* GetIntroScene() override
|
||||
{
|
||||
return _introScene.get();
|
||||
}
|
||||
|
||||
IScene* GetTitleScene() override
|
||||
{
|
||||
return _titleScene.get();
|
||||
}
|
||||
|
||||
IScene* GetGameScene() override
|
||||
{
|
||||
return _gameScene.get();
|
||||
}
|
||||
|
||||
IScene* GetEditorScene() override
|
||||
{
|
||||
// TODO: Implement me.
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
IScene* GetActiveScene() override
|
||||
{
|
||||
return _activeScene;
|
||||
}
|
||||
|
||||
void SetActiveScene(IScene* screen) override
|
||||
{
|
||||
if (_activeScene != nullptr)
|
||||
_activeScene->Stop();
|
||||
_activeScene = screen;
|
||||
if (_activeScene)
|
||||
_activeScene->Load();
|
||||
}
|
||||
|
||||
void WriteLine(const std::string& s) override
|
||||
{
|
||||
_stdInOutConsole.WriteLine(s);
|
||||
|
@ -592,7 +639,7 @@ namespace OpenRCT2
|
|||
Console::Error::WriteLine(e.what());
|
||||
if (loadTitleScreenOnFail)
|
||||
{
|
||||
TitleLoad();
|
||||
SetActiveScene(GetTitleScene());
|
||||
}
|
||||
auto windowManager = _uiContext->GetWindowManager();
|
||||
windowManager->ShowError(STR_FAILED_TO_LOAD_FILE_CONTAINS_INVALID_DATA, STR_NONE, {});
|
||||
|
@ -728,7 +775,7 @@ namespace OpenRCT2
|
|||
// If loading the SV6 or SV4 failed return to the title screen if requested.
|
||||
if (loadTitleScreenFirstOnFail)
|
||||
{
|
||||
TitleLoad();
|
||||
SetActiveScene(GetTitleScene());
|
||||
}
|
||||
// The path needs to be duplicated as it's a const here
|
||||
// which the window function doesn't like
|
||||
|
@ -747,7 +794,7 @@ namespace OpenRCT2
|
|||
// If loading the SV6 or SV4 failed return to the title screen if requested.
|
||||
if (loadTitleScreenFirstOnFail)
|
||||
{
|
||||
TitleLoad();
|
||||
SetActiveScene(GetTitleScene());
|
||||
}
|
||||
auto windowManager = _uiContext->GetWindowManager();
|
||||
windowManager->ShowError(STR_FILE_CONTAINS_UNSUPPORTED_RIDE_TYPES, STR_NONE, {});
|
||||
|
@ -758,7 +805,7 @@ namespace OpenRCT2
|
|||
|
||||
if (loadTitleScreenFirstOnFail)
|
||||
{
|
||||
TitleLoad();
|
||||
SetActiveScene(GetTitleScene());
|
||||
}
|
||||
auto windowManager = _uiContext->GetWindowManager();
|
||||
Formatter ft;
|
||||
|
@ -789,7 +836,7 @@ namespace OpenRCT2
|
|||
// If loading the SV6 or SV4 failed return to the title screen if requested.
|
||||
if (loadTitleScreenFirstOnFail)
|
||||
{
|
||||
TitleLoad();
|
||||
SetActiveScene(GetTitleScene());
|
||||
}
|
||||
Console::Error::WriteLine(e.what());
|
||||
}
|
||||
|
@ -871,7 +918,6 @@ namespace OpenRCT2
|
|||
});
|
||||
}
|
||||
|
||||
gIntroState = IntroState::None;
|
||||
if (gOpenRCT2Headless)
|
||||
{
|
||||
// NONE or OPEN are the only allowed actions for headless mode
|
||||
|
@ -891,11 +937,10 @@ namespace OpenRCT2
|
|||
switch (gOpenRCT2StartupAction)
|
||||
{
|
||||
case StartupAction::Intro:
|
||||
gIntroState = IntroState::PublisherBegin;
|
||||
TitleLoad();
|
||||
SetActiveScene(GetIntroScene());
|
||||
break;
|
||||
case StartupAction::Title:
|
||||
TitleLoad();
|
||||
SetActiveScene(GetTitleScene());
|
||||
break;
|
||||
case StartupAction::Open:
|
||||
{
|
||||
|
@ -908,7 +953,7 @@ namespace OpenRCT2
|
|||
auto data = DownloadPark(gOpenRCT2StartupActionPath);
|
||||
if (data.empty())
|
||||
{
|
||||
TitleLoad();
|
||||
SetActiveScene(GetTitleScene());
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -916,7 +961,7 @@ namespace OpenRCT2
|
|||
if (!LoadParkFromStream(&ms, gOpenRCT2StartupActionPath, true))
|
||||
{
|
||||
Console::Error::WriteLine("Failed to load '%s'", gOpenRCT2StartupActionPath);
|
||||
TitleLoad();
|
||||
SetActiveScene(GetTitleScene());
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
@ -934,12 +979,12 @@ namespace OpenRCT2
|
|||
{
|
||||
Console::Error::WriteLine("Failed to load '%s'", gOpenRCT2StartupActionPath);
|
||||
Console::Error::WriteLine("%s", ex.what());
|
||||
TitleLoad();
|
||||
SetActiveScene(GetTitleScene());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
gScreenFlags = SCREEN_FLAGS_PLAYING;
|
||||
SetActiveScene(GetGameScene());
|
||||
|
||||
#ifndef DISABLE_NETWORK
|
||||
if (gNetworkStart == NETWORK_MODE_SERVER)
|
||||
|
@ -979,7 +1024,7 @@ namespace OpenRCT2
|
|||
}
|
||||
else if (!Editor::LoadLandscape(gOpenRCT2StartupActionPath))
|
||||
{
|
||||
TitleLoad();
|
||||
SetActiveScene(GetTitleScene());
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
@ -1183,18 +1228,8 @@ namespace OpenRCT2
|
|||
|
||||
DateUpdateRealTimeOfDay();
|
||||
|
||||
if (gIntroState != IntroState::None)
|
||||
{
|
||||
IntroUpdate();
|
||||
}
|
||||
else if ((gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) && !gOpenRCT2Headless)
|
||||
{
|
||||
_titleScreen->Tick();
|
||||
}
|
||||
else
|
||||
{
|
||||
gameStateTick();
|
||||
}
|
||||
if (_activeScene)
|
||||
_activeScene->Tick();
|
||||
|
||||
#ifdef __ENABLE_DISCORD__
|
||||
if (_discordService != nullptr)
|
||||
|
|
|
@ -84,6 +84,7 @@ namespace OpenRCT2
|
|||
|
||||
struct IPlatformEnvironment;
|
||||
struct IReplayManager;
|
||||
struct IScene;
|
||||
|
||||
namespace Audio
|
||||
{
|
||||
|
@ -142,6 +143,16 @@ namespace OpenRCT2
|
|||
#ifndef DISABLE_NETWORK
|
||||
virtual NetworkBase& GetNetwork() abstract;
|
||||
#endif
|
||||
|
||||
virtual IScene* GetLoadingScene() abstract;
|
||||
virtual IScene* GetIntroScene() abstract;
|
||||
virtual IScene* GetTitleScene() abstract;
|
||||
virtual IScene* GetGameScene() abstract;
|
||||
virtual IScene* GetEditorScene() abstract;
|
||||
|
||||
virtual IScene* GetActiveScene() abstract;
|
||||
virtual void SetActiveScene(IScene* screen) abstract;
|
||||
|
||||
virtual int32_t RunOpenRCT2(int argc, const char** argv) abstract;
|
||||
|
||||
virtual bool Initialise() abstract;
|
||||
|
|
|
@ -53,8 +53,8 @@
|
|||
#include "ride/TrackDesign.h"
|
||||
#include "ride/Vehicle.h"
|
||||
#include "scenario/Scenario.h"
|
||||
#include "scenes/title/TitleScene.h"
|
||||
#include "scripting/ScriptEngine.h"
|
||||
#include "title/TitleScreen.h"
|
||||
#include "ui/UiContext.h"
|
||||
#include "ui/WindowManager.h"
|
||||
#include "util/SawyerCoding.h"
|
||||
|
@ -511,11 +511,13 @@ void GameFixSaveVars()
|
|||
|
||||
void GameLoadInit()
|
||||
{
|
||||
IGameStateSnapshots* snapshots = GetContext()->GetGameStateSnapshots();
|
||||
auto* context = GetContext();
|
||||
|
||||
IGameStateSnapshots* snapshots = context->GetGameStateSnapshots();
|
||||
snapshots->Reset();
|
||||
|
||||
gScreenFlags = SCREEN_FLAGS_PLAYING;
|
||||
OpenRCT2::Audio::StopAll();
|
||||
context->SetActiveScene(context->GetGameScene());
|
||||
|
||||
if (!gLoadKeepWindowsOpen)
|
||||
{
|
||||
ViewportInitAll();
|
||||
|
@ -527,7 +529,7 @@ void GameLoadInit()
|
|||
WindowUnfollowSprite(*mainWindow);
|
||||
}
|
||||
|
||||
auto windowManager = GetContext()->GetUiContext()->GetWindowManager();
|
||||
auto windowManager = context->GetUiContext()->GetWindowManager();
|
||||
auto& gameState = GetGameState();
|
||||
windowManager->SetMainView(gameState.SavedView, gameState.SavedViewZoom, gameState.SavedViewRotation);
|
||||
|
||||
|
@ -553,7 +555,6 @@ void GameLoadInit()
|
|||
ContextBroadcastIntent(&intent);
|
||||
}
|
||||
|
||||
OpenRCT2::Audio::StopTitleMusic();
|
||||
gGameSpeed = 1;
|
||||
}
|
||||
|
||||
|
@ -841,7 +842,9 @@ void GameLoadOrQuitNoSavePrompt()
|
|||
gFirstTimeSaving = true;
|
||||
GameNotifyMapChange();
|
||||
GameUnloadScripts();
|
||||
TitleLoad();
|
||||
|
||||
auto* context = OpenRCT2::GetContext();
|
||||
context->SetActiveScene(context->GetTitleScene());
|
||||
break;
|
||||
}
|
||||
case PromptMode::SaveBeforeNewGame:
|
||||
|
|
|
@ -34,9 +34,9 @@
|
|||
#include "profiling/Profiling.h"
|
||||
#include "ride/Vehicle.h"
|
||||
#include "scenario/Scenario.h"
|
||||
#include "scenes/title/TitleScene.h"
|
||||
#include "scenes/title/TitleSequencePlayer.h"
|
||||
#include "scripting/ScriptEngine.h"
|
||||
#include "title/TitleScreen.h"
|
||||
#include "title/TitleSequencePlayer.h"
|
||||
#include "ui/UiContext.h"
|
||||
#include "windows/Intent.h"
|
||||
#include "world/Climate.h"
|
||||
|
|
|
@ -1,303 +0,0 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
*
|
||||
* OpenRCT2 is licensed under the GNU General Public License version 3.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "Intro.h"
|
||||
|
||||
#include "Context.h"
|
||||
#include "audio/AudioChannel.h"
|
||||
#include "audio/AudioMixer.h"
|
||||
#include "audio/audio.h"
|
||||
#include "drawing/Drawing.h"
|
||||
#include "sprites.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
using namespace OpenRCT2::Audio;
|
||||
|
||||
static constexpr PaletteIndex kBackgroundColourDark = PALETTE_INDEX_10;
|
||||
static constexpr PaletteIndex kBackgroundColourLogo = PALETTE_INDEX_245;
|
||||
static constexpr PaletteIndex kBorderColourPublisher = PALETTE_INDEX_129;
|
||||
|
||||
constexpr int32_t PALETTE_G1_IDX_DEVELOPER = 23217;
|
||||
constexpr int32_t PALETTE_G1_IDX_LOGO = 23224;
|
||||
|
||||
IntroState gIntroState;
|
||||
|
||||
// Used mainly for timing but also for Y coordinate and fading.
|
||||
static int32_t _introStateCounter;
|
||||
|
||||
static std::shared_ptr<IAudioChannel> _soundChannel = nullptr;
|
||||
static bool _chainLiftFinished;
|
||||
|
||||
static void ScreenIntroProcessMouseInput();
|
||||
static void ScreenIntroProcessKeyboardInput();
|
||||
static void ScreenIntroSkipPart();
|
||||
static void ScreenIntroDrawLogo(DrawPixelInfo& dpi);
|
||||
|
||||
// rct2: 0x0068E966
|
||||
void IntroUpdate()
|
||||
{
|
||||
ScreenIntroProcessMouseInput();
|
||||
ScreenIntroProcessKeyboardInput();
|
||||
|
||||
switch (gIntroState)
|
||||
{
|
||||
case IntroState::Disclaimer1:
|
||||
case IntroState::Disclaimer2:
|
||||
// Originally used for the disclaimer text
|
||||
gIntroState = IntroState::PublisherBegin;
|
||||
[[fallthrough]];
|
||||
case IntroState::PublisherBegin:
|
||||
LoadPalette();
|
||||
|
||||
// Set the Y for the Infogrames logo
|
||||
_introStateCounter = -580;
|
||||
|
||||
// Play the chain lift sound
|
||||
_soundChannel = CreateAudioChannel(SoundId::LiftBM, true);
|
||||
_chainLiftFinished = false;
|
||||
gIntroState = IntroState::PublisherScroll;
|
||||
break;
|
||||
case IntroState::PublisherScroll:
|
||||
// Move the Infogrames logo down
|
||||
_introStateCounter += 5;
|
||||
|
||||
// Check if logo is off the screen...ish
|
||||
if (_introStateCounter > ContextGetHeight() - 120)
|
||||
{
|
||||
_introStateCounter = -116;
|
||||
gIntroState = IntroState::DeveloperBegin;
|
||||
}
|
||||
|
||||
break;
|
||||
case IntroState::DeveloperBegin:
|
||||
// Set the Y for the Chris Sawyer logo
|
||||
_introStateCounter = -116;
|
||||
|
||||
gIntroState = IntroState::DeveloperScroll;
|
||||
break;
|
||||
case IntroState::DeveloperScroll:
|
||||
_introStateCounter += 5;
|
||||
|
||||
// Check if logo is almost scrolled to the bottom
|
||||
if (!_chainLiftFinished && _introStateCounter >= ContextGetHeight() + 40 - 421)
|
||||
{
|
||||
_chainLiftFinished = true;
|
||||
|
||||
// Stop the chain lift sound
|
||||
if (_soundChannel != nullptr)
|
||||
{
|
||||
_soundChannel->Stop();
|
||||
_soundChannel = nullptr;
|
||||
}
|
||||
|
||||
// Play the track friction sound
|
||||
_soundChannel = CreateAudioChannel(SoundId::TrackFrictionBM, true, kMixerVolumeMax, 0.25f, 0.75);
|
||||
}
|
||||
|
||||
// Check if logo is off the screen...ish
|
||||
if (_introStateCounter >= ContextGetHeight() + 40)
|
||||
{
|
||||
// Stop the track friction sound
|
||||
if (_soundChannel != nullptr)
|
||||
{
|
||||
_soundChannel->Stop();
|
||||
_soundChannel = nullptr;
|
||||
}
|
||||
|
||||
// Play long peep scream sound
|
||||
_soundChannel = CreateAudioChannel(SoundId::Scream1);
|
||||
|
||||
gIntroState = IntroState::LogoFadeIn;
|
||||
_introStateCounter = 0;
|
||||
}
|
||||
break;
|
||||
case IntroState::LogoFadeIn:
|
||||
// Fade in, add 4 / 256 to fading
|
||||
_introStateCounter += 0x400;
|
||||
if (_introStateCounter > 0xFF00)
|
||||
{
|
||||
gIntroState = IntroState::LogoWait;
|
||||
_introStateCounter = 0;
|
||||
}
|
||||
break;
|
||||
case IntroState::LogoWait:
|
||||
// Wait 80 game ticks
|
||||
_introStateCounter++;
|
||||
if (_introStateCounter >= 80)
|
||||
{
|
||||
// Set fading to 256
|
||||
_introStateCounter = 0xFF00;
|
||||
|
||||
gIntroState = IntroState::LogoFadeOut;
|
||||
}
|
||||
break;
|
||||
case IntroState::LogoFadeOut:
|
||||
// Fade out, subtract 4 / 256 from fading
|
||||
_introStateCounter -= 0x400;
|
||||
if (_introStateCounter < 0)
|
||||
{
|
||||
gIntroState = IntroState::Clear;
|
||||
}
|
||||
break;
|
||||
case IntroState::Clear:
|
||||
// Stop any playing sound
|
||||
if (_soundChannel != nullptr)
|
||||
{
|
||||
_soundChannel->Stop();
|
||||
_soundChannel = nullptr;
|
||||
}
|
||||
|
||||
// Move to next part
|
||||
gIntroState = IntroState::Finish;
|
||||
_introStateCounter = 0;
|
||||
break;
|
||||
case IntroState::Finish:
|
||||
gIntroState = IntroState::None;
|
||||
LoadPalette();
|
||||
OpenRCT2::Audio::PlayTitleMusic();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void IntroDraw(DrawPixelInfo& dpi)
|
||||
{
|
||||
int32_t screenWidth = ContextGetWidth();
|
||||
|
||||
switch (gIntroState)
|
||||
{
|
||||
case IntroState::Disclaimer1:
|
||||
case IntroState::Disclaimer2:
|
||||
break;
|
||||
case IntroState::PublisherBegin:
|
||||
GfxClear(dpi, kBackgroundColourDark);
|
||||
break;
|
||||
case IntroState::PublisherScroll:
|
||||
GfxClear(dpi, kBackgroundColourDark);
|
||||
|
||||
// Draw a white rectangle for the logo background (gives a bit of white margin)
|
||||
GfxFillRect(
|
||||
dpi,
|
||||
{ { (screenWidth / 2) - 320 + 50, _introStateCounter + 50 },
|
||||
{ (screenWidth / 2) - 320 + 50 + 540, _introStateCounter + 50 + 425 } },
|
||||
kBorderColourPublisher);
|
||||
|
||||
// Draw Infogrames logo
|
||||
GfxDrawSprite(dpi, ImageId(SPR_INTRO_INFOGRAMES_00), { (screenWidth / 2) - 320 + 69, _introStateCounter + 69 });
|
||||
GfxDrawSprite(dpi, ImageId(SPR_INTRO_INFOGRAMES_10), { (screenWidth / 2) - 320 + 319, _introStateCounter + 69 });
|
||||
GfxDrawSprite(dpi, ImageId(SPR_INTRO_INFOGRAMES_01), { (screenWidth / 2) - 320 + 69, _introStateCounter + 319 });
|
||||
GfxDrawSprite(dpi, ImageId(SPR_INTRO_INFOGRAMES_11), { (screenWidth / 2) - 320 + 319, _introStateCounter + 319 });
|
||||
break;
|
||||
case IntroState::DeveloperBegin:
|
||||
GfxClear(dpi, kBackgroundColourDark);
|
||||
GfxTransposePalette(PALETTE_G1_IDX_DEVELOPER, 255);
|
||||
break;
|
||||
case IntroState::DeveloperScroll:
|
||||
GfxClear(dpi, kBackgroundColourDark);
|
||||
|
||||
// Draw Chris Sawyer logo
|
||||
GfxDrawSprite(dpi, ImageId(SPR_INTRO_CHRIS_SAWYER_00), { (screenWidth / 2) - 320 + 70, _introStateCounter });
|
||||
GfxDrawSprite(dpi, ImageId(SPR_INTRO_CHRIS_SAWYER_10), { (screenWidth / 2) - 320 + 320, _introStateCounter });
|
||||
break;
|
||||
case IntroState::LogoFadeIn:
|
||||
if (_introStateCounter <= 0xFF00)
|
||||
{
|
||||
GfxTransposePalette(PALETTE_G1_IDX_LOGO, (_introStateCounter >> 8) & 0xFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
GfxTransposePalette(PALETTE_G1_IDX_LOGO, 255);
|
||||
}
|
||||
ScreenIntroDrawLogo(dpi);
|
||||
break;
|
||||
case IntroState::LogoWait:
|
||||
ScreenIntroDrawLogo(dpi);
|
||||
break;
|
||||
case IntroState::LogoFadeOut:
|
||||
if (_introStateCounter >= 0)
|
||||
{
|
||||
GfxTransposePalette(PALETTE_G1_IDX_LOGO, (_introStateCounter >> 8) & 0xFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
GfxTransposePalette(PALETTE_G1_IDX_LOGO, 0);
|
||||
}
|
||||
ScreenIntroDrawLogo(dpi);
|
||||
break;
|
||||
case IntroState::Clear:
|
||||
GfxClear(dpi, kBackgroundColourDark);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void ScreenIntroProcessMouseInput()
|
||||
{
|
||||
if (ContextGetCursorState()->any == CURSOR_PRESSED)
|
||||
{
|
||||
ScreenIntroSkipPart();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006E3AEC
|
||||
*/
|
||||
static void ScreenIntroProcessKeyboardInput()
|
||||
{
|
||||
const uint8_t* keys = ContextGetKeysState();
|
||||
for (int i = 0; i < 256; i++)
|
||||
{
|
||||
if (keys[i] != 0)
|
||||
{
|
||||
ScreenIntroSkipPart();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void ScreenIntroSkipPart()
|
||||
{
|
||||
switch (gIntroState)
|
||||
{
|
||||
case IntroState::None:
|
||||
break;
|
||||
case IntroState::Disclaimer2:
|
||||
gIntroState = IntroState::PublisherBegin;
|
||||
break;
|
||||
default:
|
||||
gIntroState = IntroState::Clear;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void ScreenIntroDrawLogo(DrawPixelInfo& dpi)
|
||||
{
|
||||
int32_t screenWidth = ContextGetWidth();
|
||||
int32_t imageWidth = 640;
|
||||
int32_t imageX = (screenWidth - imageWidth) / 2;
|
||||
|
||||
DrawingEngineInvalidateImage(SPR_INTRO_LOGO_00);
|
||||
DrawingEngineInvalidateImage(SPR_INTRO_LOGO_10);
|
||||
DrawingEngineInvalidateImage(SPR_INTRO_LOGO_20);
|
||||
DrawingEngineInvalidateImage(SPR_INTRO_LOGO_01);
|
||||
DrawingEngineInvalidateImage(SPR_INTRO_LOGO_11);
|
||||
DrawingEngineInvalidateImage(SPR_INTRO_LOGO_21);
|
||||
|
||||
GfxClear(dpi, kBackgroundColourLogo);
|
||||
GfxDrawSprite(dpi, ImageId(SPR_INTRO_LOGO_00), { imageX + 0, 0 });
|
||||
GfxDrawSprite(dpi, ImageId(SPR_INTRO_LOGO_10), { imageX + 220, 0 });
|
||||
GfxDrawSprite(dpi, ImageId(SPR_INTRO_LOGO_20), { imageX + 440, 0 });
|
||||
GfxDrawSprite(dpi, ImageId(SPR_INTRO_LOGO_01), { imageX + 0, 240 });
|
||||
GfxDrawSprite(dpi, ImageId(SPR_INTRO_LOGO_11), { imageX + 220, 240 });
|
||||
GfxDrawSprite(dpi, ImageId(SPR_INTRO_LOGO_21), { imageX + 440, 240 });
|
||||
}
|
|
@ -10,7 +10,6 @@
|
|||
#include "audio.h"
|
||||
|
||||
#include "../Context.h"
|
||||
#include "../Intro.h"
|
||||
#include "../OpenRCT2.h"
|
||||
#include "../PlatformEnvironment.h"
|
||||
#include "../config/Config.h"
|
||||
|
@ -26,6 +25,7 @@
|
|||
#include "../object/ObjectManager.h"
|
||||
#include "../ride/Ride.h"
|
||||
#include "../ride/RideAudio.h"
|
||||
#include "../scenes/intro/IntroScene.h"
|
||||
#include "../ui/UiContext.h"
|
||||
#include "../util/Util.h"
|
||||
#include "../world/Climate.h"
|
||||
|
@ -294,7 +294,7 @@ namespace OpenRCT2::Audio
|
|||
|
||||
void PlayTitleMusic()
|
||||
{
|
||||
if (gGameSoundsOff || !(gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) || gIntroState != IntroState::None)
|
||||
if (gGameSoundsOff || !(gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) || IntroIsPlaying())
|
||||
{
|
||||
StopTitleMusic();
|
||||
return;
|
||||
|
|
|
@ -510,7 +510,7 @@ constexpr uint8_t kPaletteTotalOffsets = 192;
|
|||
#define INSET_RECT_F_60 (INSET_RECT_FLAG_BORDER_INSET | INSET_RECT_FLAG_FILL_DONT_LIGHTEN)
|
||||
#define INSET_RECT_F_E0 (INSET_RECT_FLAG_BORDER_INSET | INSET_RECT_FLAG_FILL_DONT_LIGHTEN | INSET_RECT_FLAG_FILL_MID_LIGHT)
|
||||
|
||||
#define MAX_SCROLLING_TEXT_MODES 38
|
||||
constexpr int8_t kMaxScrollingTextModes = 38;
|
||||
|
||||
extern GamePalette gPalette;
|
||||
extern uint8_t gGamePalette[256 * 4];
|
||||
|
|
|
@ -1382,7 +1382,7 @@ static constexpr int16_t _scrollpos37[] = {
|
|||
-1,
|
||||
};
|
||||
|
||||
static constexpr const int16_t* _scrollPositions[MAX_SCROLLING_TEXT_MODES] = {
|
||||
static constexpr const int16_t* _scrollPositions[kMaxScrollingTextModes] = {
|
||||
_scrollpos0,
|
||||
_scrollpos1,
|
||||
_scrollpos2,
|
||||
|
@ -1438,7 +1438,7 @@ ImageId ScrollingTextSetup(
|
|||
{
|
||||
std::scoped_lock<std::mutex> lock(_scrollingTextMutex);
|
||||
|
||||
assert(scrollingMode < MAX_SCROLLING_TEXT_MODES);
|
||||
assert(scrollingMode < kMaxScrollingTextModes);
|
||||
|
||||
if (session.DPI.zoom_level > ZoomLevel{ 0 })
|
||||
return ImageId(SPR_SCROLLING_TEXT_DEFAULT);
|
||||
|
|
|
@ -10,12 +10,12 @@
|
|||
#include "X8DrawingEngine.h"
|
||||
|
||||
#include "../Context.h"
|
||||
#include "../Intro.h"
|
||||
#include "../config/Config.h"
|
||||
#include "../core/Numerics.hpp"
|
||||
#include "../interface/Screenshot.h"
|
||||
#include "../interface/Viewport.h"
|
||||
#include "../interface/Window.h"
|
||||
#include "../scenes/intro/IntroScene.h"
|
||||
#include "../ui/UiContext.h"
|
||||
#include "../util/Util.h"
|
||||
#include "Drawing.h"
|
||||
|
@ -184,7 +184,7 @@ void X8DrawingEngine::Invalidate(int32_t left, int32_t top, int32_t right, int32
|
|||
|
||||
void X8DrawingEngine::BeginDraw()
|
||||
{
|
||||
if (gIntroState == IntroState::None)
|
||||
if (!IntroIsPlaying())
|
||||
{
|
||||
// HACK we need to re-configure the bits if light fx has been enabled / disabled
|
||||
if (_lastLightFXenabled != (gConfigGeneral.EnableLightFx != 0))
|
||||
|
@ -837,4 +837,4 @@ void X8DrawingContext::DrawTTFBitmap(
|
|||
else
|
||||
DrawTTFBitmapInternal<false>(dpi, fgColor, surface, x, y, 0);
|
||||
#endif // NO_TTF
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
#include "../Context.h"
|
||||
#include "../Game.h"
|
||||
#include "../GameState.h"
|
||||
#include "../Intro.h"
|
||||
#include "../OpenRCT2.h"
|
||||
#include "../PlatformEnvironment.h"
|
||||
#include "../actions/CheatSetAction.h"
|
||||
|
@ -490,7 +489,6 @@ int32_t CommandLineForScreenshot(const char** argv, int32_t argc, ScreenshotOpti
|
|||
throw std::runtime_error("Failed to load park.");
|
||||
}
|
||||
|
||||
gIntroState = IntroState::None;
|
||||
gScreenFlags = SCREEN_FLAGS_PLAYING;
|
||||
|
||||
Viewport viewport{};
|
||||
|
|
|
@ -275,7 +275,6 @@
|
|||
<ClInclude Include="interface\WindowClasses.h" />
|
||||
<ClInclude Include="interface\Window_internal.h" />
|
||||
<ClInclude Include="interface\ZoomLevel.h" />
|
||||
<ClInclude Include="Intro.h" />
|
||||
<ClInclude Include="Limits.h" />
|
||||
<ClInclude Include="localisation\ConversionTables.h" />
|
||||
<ClInclude Include="localisation\Currency.h" />
|
||||
|
@ -511,6 +510,23 @@
|
|||
<ClInclude Include="scenario\Scenario.h" />
|
||||
<ClInclude Include="scenario\ScenarioRepository.h" />
|
||||
<ClInclude Include="scenario\ScenarioSources.h" />
|
||||
<ClInclude Include="scenes\Scene.h" />
|
||||
<ClInclude Include="scenes\intro\IntroScene.h" />
|
||||
<ClInclude Include="scenes\game\GameScene.h" />
|
||||
<ClInclude Include="scenes\title\Command\End.h" />
|
||||
<ClInclude Include="scenes\title\Command\FollowEntity.h" />
|
||||
<ClInclude Include="scenes\title\Command\LoadPark.h" />
|
||||
<ClInclude Include="scenes\title\Command\LoadScenario.h" />
|
||||
<ClInclude Include="scenes\title\Command\Restart.h" />
|
||||
<ClInclude Include="scenes\title\Command\RotateView.h" />
|
||||
<ClInclude Include="scenes\title\Command\SetLocation.h" />
|
||||
<ClInclude Include="scenes\title\Command\SetSpeed.h" />
|
||||
<ClInclude Include="scenes\title\Command\SetZoom.h" />
|
||||
<ClInclude Include="scenes\title\Command\Wait.h" />
|
||||
<ClInclude Include="scenes\title\TitleScene.h" />
|
||||
<ClInclude Include="scenes\title\TitleSequence.h" />
|
||||
<ClInclude Include="scenes\title\TitleSequenceManager.h" />
|
||||
<ClInclude Include="scenes\title\TitleSequencePlayer.h" />
|
||||
<ClInclude Include="scripting\bindings\entity\ScGuest.hpp" />
|
||||
<ClInclude Include="scripting\bindings\entity\ScLitter.hpp" />
|
||||
<ClInclude Include="scripting\bindings\entity\ScPeep.hpp" />
|
||||
|
@ -551,20 +567,6 @@
|
|||
<ClInclude Include="scripting\bindings\world\ScTile.hpp" />
|
||||
<ClInclude Include="sprites.h" />
|
||||
<ClInclude Include="System.hpp" />
|
||||
<ClInclude Include="title\Command\End.h" />
|
||||
<ClInclude Include="title\Command\FollowEntity.h" />
|
||||
<ClInclude Include="title\Command\LoadPark.h" />
|
||||
<ClInclude Include="title\Command\LoadScenario.h" />
|
||||
<ClInclude Include="title\Command\Restart.h" />
|
||||
<ClInclude Include="title\Command\RotateView.h" />
|
||||
<ClInclude Include="title\Command\SetLocation.h" />
|
||||
<ClInclude Include="title\Command\SetSpeed.h" />
|
||||
<ClInclude Include="title\Command\SetZoom.h" />
|
||||
<ClInclude Include="title\Command\Wait.h" />
|
||||
<ClInclude Include="title\TitleScreen.h" />
|
||||
<ClInclude Include="title\TitleSequence.h" />
|
||||
<ClInclude Include="title\TitleSequenceManager.h" />
|
||||
<ClInclude Include="title\TitleSequencePlayer.h" />
|
||||
<ClInclude Include="TrackImporter.h" />
|
||||
<ClInclude Include="ui\UiContext.h" />
|
||||
<ClInclude Include="ui\WindowManager.h" />
|
||||
|
@ -791,7 +793,6 @@
|
|||
<ClCompile Include="interface\Window.cpp" />
|
||||
<ClCompile Include="interface\Window_internal.cpp" />
|
||||
<ClCompile Include="interface\ZoomLevel.cpp" />
|
||||
<ClCompile Include="Intro.cpp" />
|
||||
<ClCompile Include="localisation\ConversionTables.cpp" />
|
||||
<ClCompile Include="localisation\Convert.cpp" />
|
||||
<ClCompile Include="localisation\Currency.cpp" />
|
||||
|
@ -999,6 +1000,22 @@
|
|||
<ClCompile Include="scenario\Scenario.cpp" />
|
||||
<ClCompile Include="scenario\ScenarioRepository.cpp" />
|
||||
<ClCompile Include="scenario\ScenarioSources.cpp" />
|
||||
<ClCompile Include="scenes\Scene.cpp" />
|
||||
<ClCompile Include="scenes\game\GameScene.cpp" />
|
||||
<ClCompile Include="scenes\intro\IntroScene.cpp" />
|
||||
<ClCompile Include="scenes\title\Command\End.cpp" />
|
||||
<ClCompile Include="scenes\title\Command\FollowEntity.cpp" />
|
||||
<ClCompile Include="scenes\title\Command\LoadPark.cpp" />
|
||||
<ClCompile Include="scenes\title\Command\LoadScenario.cpp" />
|
||||
<ClCompile Include="scenes\title\Command\Restart.cpp" />
|
||||
<ClCompile Include="scenes\title\Command\RotateView.cpp" />
|
||||
<ClCompile Include="scenes\title\Command\SetLocation.cpp" />
|
||||
<ClCompile Include="scenes\title\Command\SetSpeed.cpp" />
|
||||
<ClCompile Include="scenes\title\Command\SetZoom.cpp" />
|
||||
<ClCompile Include="scenes\title\Command\Wait.cpp" />
|
||||
<ClCompile Include="scenes\title\TitleScene.cpp" />
|
||||
<ClCompile Include="scenes\title\TitleSequence.cpp" />
|
||||
<ClCompile Include="scenes\title\TitleSequenceManager.cpp" />
|
||||
<ClCompile Include="scripting\bindings\entity\ScGuest.cpp" />
|
||||
<ClCompile Include="scripting\bindings\entity\ScLitter.cpp" />
|
||||
<ClCompile Include="scripting\bindings\entity\ScStaff.cpp" />
|
||||
|
@ -1020,19 +1037,6 @@
|
|||
<ClCompile Include="scripting\HookEngine.cpp" />
|
||||
<ClCompile Include="scripting\Plugin.cpp" />
|
||||
<ClCompile Include="scripting\ScriptEngine.cpp" />
|
||||
<ClCompile Include="title\Command\End.cpp" />
|
||||
<ClCompile Include="title\Command\FollowEntity.cpp" />
|
||||
<ClCompile Include="title\Command\LoadPark.cpp" />
|
||||
<ClCompile Include="title\Command\LoadScenario.cpp" />
|
||||
<ClCompile Include="title\Command\Restart.cpp" />
|
||||
<ClCompile Include="title\Command\RotateView.cpp" />
|
||||
<ClCompile Include="title\Command\SetLocation.cpp" />
|
||||
<ClCompile Include="title\Command\SetSpeed.cpp" />
|
||||
<ClCompile Include="title\Command\SetZoom.cpp" />
|
||||
<ClCompile Include="title\Command\Wait.cpp" />
|
||||
<ClCompile Include="title\TitleScreen.cpp" />
|
||||
<ClCompile Include="title\TitleSequence.cpp" />
|
||||
<ClCompile Include="title\TitleSequenceManager.cpp" />
|
||||
<ClCompile Include="TrackImporter.cpp" />
|
||||
<ClCompile Include="ui\DummyUiContext.cpp" />
|
||||
<ClCompile Include="ui\DummyWindowManager.cpp" />
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
|
||||
#include "../Game.h"
|
||||
#include "../GameState.h"
|
||||
#include "../Intro.h"
|
||||
#include "../OpenRCT2.h"
|
||||
#include "../ReplayManager.h"
|
||||
#include "../config/Config.h"
|
||||
|
@ -24,7 +23,8 @@
|
|||
#include "../localisation/Language.h"
|
||||
#include "../paint/Paint.h"
|
||||
#include "../profiling/Profiling.h"
|
||||
#include "../title/TitleScreen.h"
|
||||
#include "../scenes/intro/IntroScene.h"
|
||||
#include "../scenes/title/TitleScene.h"
|
||||
#include "../ui/UiContext.h"
|
||||
#include "../world/TileInspector.h"
|
||||
|
||||
|
@ -43,7 +43,8 @@ void Painter::Paint(IDrawingEngine& de)
|
|||
PROFILED_FUNCTION();
|
||||
|
||||
auto dpi = de.GetDrawingPixelInfo();
|
||||
if (gIntroState != IntroState::None)
|
||||
|
||||
if (IntroIsPlaying())
|
||||
{
|
||||
IntroDraw(*dpi);
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ static void PaintBannerScrollingText(
|
|||
return;
|
||||
|
||||
auto scrollingMode = bannerEntry.scrolling_mode + (direction & 3);
|
||||
if (scrollingMode >= MAX_SCROLLING_TEXT_MODES)
|
||||
if (scrollingMode >= kMaxScrollingTextModes)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -164,7 +164,7 @@ static void PaintWallScrollingText(
|
|||
return;
|
||||
|
||||
scrollingMode = wallEntry.scrolling_mode + ((direction + 1) & 3);
|
||||
if (scrollingMode >= MAX_SCROLLING_TEXT_MODES)
|
||||
if (scrollingMode >= kMaxScrollingTextModes)
|
||||
return;
|
||||
|
||||
auto banner = wallElement.GetBanner();
|
||||
|
|
|
@ -1625,19 +1625,12 @@ constexpr CoordsXY defaultRightQuarterTurn3TilesBoundLengths[4][3] = {
|
|||
},
|
||||
};
|
||||
|
||||
static constexpr int8_t right_quarter_turn_3_tiles_sprite_map[] = {
|
||||
0,
|
||||
-1,
|
||||
1,
|
||||
2,
|
||||
};
|
||||
|
||||
void TrackPaintUtilRightQuarterTurn3TilesPaint(
|
||||
PaintSession& session, int8_t thickness, int16_t height, Direction direction, uint8_t trackSequence,
|
||||
const ImageId colourFlags, const uint32_t sprites[4][3], const CoordsXY offsets[4][3], const CoordsXY boundsLengths[4][3],
|
||||
const CoordsXYZ boundsOffsets[4][3])
|
||||
{
|
||||
int32_t index = right_quarter_turn_3_tiles_sprite_map[trackSequence];
|
||||
int32_t index = kRightQuarterTurn3TilesSpriteMap[trackSequence];
|
||||
if (index < 0)
|
||||
{
|
||||
return;
|
||||
|
@ -1665,7 +1658,7 @@ void TrackPaintUtilRightQuarterTurn3TilesPaint2WithHeightOffset(
|
|||
PaintSession& session, int8_t thickness, int16_t height, Direction direction, uint8_t trackSequence,
|
||||
const ImageId colourFlags, const uint32_t sprites[4][3], int32_t heightOffset)
|
||||
{
|
||||
int8_t sprite = right_quarter_turn_3_tiles_sprite_map[trackSequence];
|
||||
int8_t sprite = kRightQuarterTurn3TilesSpriteMap[trackSequence];
|
||||
if (sprite < 0)
|
||||
{
|
||||
return;
|
||||
|
@ -1753,7 +1746,7 @@ void TrackPaintUtilRightQuarterTurn3TilesPaint3(
|
|||
PaintSession& session, int16_t height, Direction direction, uint8_t trackSequence, const ImageId colourFlags,
|
||||
const SpriteBb sprites[4][3])
|
||||
{
|
||||
int8_t sprite = right_quarter_turn_3_tiles_sprite_map[trackSequence];
|
||||
int8_t sprite = kRightQuarterTurn3TilesSpriteMap[trackSequence];
|
||||
if (sprite < 0)
|
||||
{
|
||||
return;
|
||||
|
@ -1770,7 +1763,7 @@ void TrackPaintUtilRightQuarterTurn3TilesPaint4(
|
|||
PaintSession& session, int16_t height, Direction direction, uint8_t trackSequence, const ImageId colourFlags,
|
||||
const SpriteBb sprites[4][3])
|
||||
{
|
||||
int8_t sprite = right_quarter_turn_3_tiles_sprite_map[trackSequence];
|
||||
int8_t sprite = kRightQuarterTurn3TilesSpriteMap[trackSequence];
|
||||
if (sprite < 0)
|
||||
{
|
||||
return;
|
||||
|
|
|
@ -258,6 +258,8 @@ extern const CoordsXY defaultRightQuarterTurn3TilesOffsets[4][3];
|
|||
extern const CoordsXYZ defaultRightQuarterTurn3TilesBoundOffsets[4][3];
|
||||
extern const CoordsXY defaultRightQuarterTurn3TilesBoundLengths[4][3];
|
||||
|
||||
constexpr int8_t kRightQuarterTurn3TilesSpriteMap[] = { 0, -1, 1, 2 };
|
||||
|
||||
extern const CoordsXY defaultRightHelixUpSmallQuarterBoundLengths[4][3][2];
|
||||
extern const CoordsXYZ defaultRightHelixUpSmallQuarterBoundOffsets[4][3][2];
|
||||
|
||||
|
|
|
@ -1392,9 +1392,7 @@ static void PaintMiniatureRailwayTrackRightQuarterTurn3Tiles(
|
|||
miniature_railway_right_quarter_turn_3_tile_track_floor, nullptr, defaultRightQuarterTurn3TilesBoundLengths,
|
||||
miniature_railway_right_quarter_turn_3_tile_bound_offsets);
|
||||
|
||||
static constexpr int8_t _right_quarter_turn_3_tiles_sprite_map[] = { 0, -1, 1, 2 };
|
||||
|
||||
int32_t index = _right_quarter_turn_3_tiles_sprite_map[trackSequence];
|
||||
int32_t index = kRightQuarterTurn3TilesSpriteMap[trackSequence];
|
||||
|
||||
auto imageId = session.TrackColours.WithIndex(
|
||||
miniature_railway_track_pieces_flat_quarter_turn_3_tiles[direction][index]);
|
||||
|
|
|
@ -7,29 +7,24 @@
|
|||
* OpenRCT2 is licensed under the GNU General Public License version 3.
|
||||
*****************************************************************************/
|
||||
|
||||
#pragma once
|
||||
#include "Scene.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "../Context.h"
|
||||
#include "../GameState.h"
|
||||
|
||||
struct DrawPixelInfo;
|
||||
using namespace OpenRCT2;
|
||||
|
||||
enum class IntroState : uint8_t
|
||||
Scene::Scene(IContext& context)
|
||||
: _context(context)
|
||||
{
|
||||
None,
|
||||
PublisherBegin,
|
||||
PublisherScroll,
|
||||
DeveloperBegin,
|
||||
DeveloperScroll,
|
||||
LogoFadeIn,
|
||||
LogoWait,
|
||||
LogoFadeOut,
|
||||
Disclaimer1,
|
||||
Disclaimer2,
|
||||
Clear = 254,
|
||||
Finish = 255,
|
||||
};
|
||||
}
|
||||
|
||||
extern IntroState gIntroState;
|
||||
IContext& Scene::GetContext()
|
||||
{
|
||||
return _context;
|
||||
}
|
||||
|
||||
void IntroUpdate();
|
||||
void IntroDraw(DrawPixelInfo& dpi);
|
||||
GameState_t& Scene::GetGameState()
|
||||
{
|
||||
return OpenRCT2::GetGameState();
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
*
|
||||
* OpenRCT2 is licensed under the GNU General Public License version 3.
|
||||
*****************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../common.h"
|
||||
|
||||
namespace OpenRCT2
|
||||
{
|
||||
struct GameState_t;
|
||||
struct IContext;
|
||||
|
||||
struct IScene
|
||||
{
|
||||
public:
|
||||
virtual ~IScene() = default;
|
||||
|
||||
virtual GameState_t& GetGameState() = 0;
|
||||
virtual IContext& GetContext() = 0;
|
||||
|
||||
virtual void Load() = 0;
|
||||
virtual void Tick() = 0;
|
||||
virtual void Stop() = 0;
|
||||
};
|
||||
|
||||
class Scene : public IScene
|
||||
{
|
||||
public:
|
||||
Scene(IContext& context);
|
||||
|
||||
GameState_t& GetGameState() override;
|
||||
IContext& GetContext() override;
|
||||
|
||||
protected:
|
||||
IContext& _context;
|
||||
};
|
||||
|
||||
} // namespace OpenRCT2
|
|
@ -0,0 +1,37 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2019 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
*
|
||||
* OpenRCT2 is licensed under the GNU General Public License version 3.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "GameScene.h"
|
||||
|
||||
#include "../../Context.h"
|
||||
#include "../../Game.h"
|
||||
#include "../../GameState.h"
|
||||
#include "../../OpenRCT2.h"
|
||||
#include "../../audio/audio.h"
|
||||
|
||||
using namespace OpenRCT2;
|
||||
|
||||
void GameScene::Load()
|
||||
{
|
||||
LOG_VERBOSE("GameScene::Load()");
|
||||
|
||||
gScreenFlags = SCREEN_FLAGS_PLAYING;
|
||||
|
||||
LOG_VERBOSE("GameScene::Load() finished");
|
||||
}
|
||||
|
||||
void GameScene::Tick()
|
||||
{
|
||||
gameStateTick();
|
||||
}
|
||||
|
||||
void GameScene::Stop()
|
||||
{
|
||||
Audio::StopAll();
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2019 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
*
|
||||
* OpenRCT2 is licensed under the GNU General Public License version 3.
|
||||
*****************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../../common.h"
|
||||
#include "../Scene.h"
|
||||
|
||||
namespace OpenRCT2
|
||||
{
|
||||
class GameScene final : public Scene
|
||||
{
|
||||
public:
|
||||
using Scene::Scene;
|
||||
|
||||
void Load() override;
|
||||
void Tick() override;
|
||||
void Stop() override;
|
||||
};
|
||||
} // namespace OpenRCT2
|
|
@ -0,0 +1,326 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
*
|
||||
* OpenRCT2 is licensed under the GNU General Public License version 3.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "IntroScene.h"
|
||||
|
||||
#include "../../Context.h"
|
||||
#include "../../audio/AudioChannel.h"
|
||||
#include "../../audio/AudioMixer.h"
|
||||
#include "../../audio/audio.h"
|
||||
#include "../../drawing/Drawing.h"
|
||||
#include "../../sprites.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
using OpenRCT2::Audio::SoundId;
|
||||
|
||||
namespace OpenRCT2
|
||||
{
|
||||
static constexpr PaletteIndex kBackgroundColourDark = PALETTE_INDEX_10;
|
||||
static constexpr PaletteIndex kBackgroundColourLogo = PALETTE_INDEX_245;
|
||||
static constexpr PaletteIndex kBorderColourPublisher = PALETTE_INDEX_129;
|
||||
|
||||
constexpr int32_t PALETTE_G1_IDX_DEVELOPER = 23217;
|
||||
constexpr int32_t PALETTE_G1_IDX_LOGO = 23224;
|
||||
|
||||
static IntroState _introState;
|
||||
|
||||
// Used mainly for timing but also for Y coordinate and fading.
|
||||
static int32_t _introStateCounter;
|
||||
|
||||
static std::shared_ptr<Audio::IAudioChannel> _soundChannel = nullptr;
|
||||
static bool _chainLiftFinished;
|
||||
|
||||
bool IntroIsPlaying()
|
||||
{
|
||||
return _introState != IntroState::None;
|
||||
}
|
||||
|
||||
void IntroScene::Load()
|
||||
{
|
||||
_introState = IntroState::PublisherBegin;
|
||||
}
|
||||
|
||||
void IntroScene::Stop()
|
||||
{
|
||||
_introState = IntroState::None;
|
||||
LoadPalette();
|
||||
}
|
||||
|
||||
static void ScreenIntroProcessMouseInput();
|
||||
static void ScreenIntroProcessKeyboardInput();
|
||||
static void ScreenIntroSkipPart();
|
||||
static void ScreenIntroDrawLogo(DrawPixelInfo& dpi);
|
||||
|
||||
// rct2: 0x0068E966
|
||||
void IntroScene::Tick()
|
||||
{
|
||||
ScreenIntroProcessMouseInput();
|
||||
ScreenIntroProcessKeyboardInput();
|
||||
|
||||
switch (_introState)
|
||||
{
|
||||
case IntroState::Disclaimer1:
|
||||
case IntroState::Disclaimer2:
|
||||
// Originally used for the disclaimer text
|
||||
_introState = IntroState::PublisherBegin;
|
||||
[[fallthrough]];
|
||||
case IntroState::PublisherBegin:
|
||||
LoadPalette();
|
||||
|
||||
// Set the Y for the Infogrames logo
|
||||
_introStateCounter = -580;
|
||||
|
||||
// Play the chain lift sound
|
||||
_soundChannel = Audio::CreateAudioChannel(SoundId::LiftBM, true);
|
||||
_chainLiftFinished = false;
|
||||
_introState = IntroState::PublisherScroll;
|
||||
break;
|
||||
case IntroState::PublisherScroll:
|
||||
// Move the Infogrames logo down
|
||||
_introStateCounter += 5;
|
||||
|
||||
// Check if logo is off the screen...ish
|
||||
if (_introStateCounter > ContextGetHeight() - 120)
|
||||
{
|
||||
_introStateCounter = -116;
|
||||
_introState = IntroState::DeveloperBegin;
|
||||
}
|
||||
|
||||
break;
|
||||
case IntroState::DeveloperBegin:
|
||||
// Set the Y for the Chris Sawyer logo
|
||||
_introStateCounter = -116;
|
||||
|
||||
_introState = IntroState::DeveloperScroll;
|
||||
break;
|
||||
case IntroState::DeveloperScroll:
|
||||
_introStateCounter += 5;
|
||||
|
||||
// Check if logo is almost scrolled to the bottom
|
||||
if (!_chainLiftFinished && _introStateCounter >= ContextGetHeight() + 40 - 421)
|
||||
{
|
||||
_chainLiftFinished = true;
|
||||
|
||||
// Stop the chain lift sound
|
||||
if (_soundChannel != nullptr)
|
||||
{
|
||||
_soundChannel->Stop();
|
||||
_soundChannel = nullptr;
|
||||
}
|
||||
|
||||
// Play the track friction sound
|
||||
_soundChannel = Audio::CreateAudioChannel(
|
||||
SoundId::TrackFrictionBM, true, Audio::kMixerVolumeMax, 0.25f, 0.75);
|
||||
}
|
||||
|
||||
// Check if logo is off the screen...ish
|
||||
if (_introStateCounter >= ContextGetHeight() + 40)
|
||||
{
|
||||
// Stop the track friction sound
|
||||
if (_soundChannel != nullptr)
|
||||
{
|
||||
_soundChannel->Stop();
|
||||
_soundChannel = nullptr;
|
||||
}
|
||||
|
||||
// Play long peep scream sound
|
||||
_soundChannel = Audio::CreateAudioChannel(SoundId::Scream1);
|
||||
|
||||
_introState = IntroState::LogoFadeIn;
|
||||
_introStateCounter = 0;
|
||||
}
|
||||
break;
|
||||
case IntroState::LogoFadeIn:
|
||||
// Fade in, add 4 / 256 to fading
|
||||
_introStateCounter += 0x400;
|
||||
if (_introStateCounter > 0xFF00)
|
||||
{
|
||||
_introState = IntroState::LogoWait;
|
||||
_introStateCounter = 0;
|
||||
}
|
||||
break;
|
||||
case IntroState::LogoWait:
|
||||
// Wait 80 game ticks
|
||||
_introStateCounter++;
|
||||
if (_introStateCounter >= 80)
|
||||
{
|
||||
// Set fading to 256
|
||||
_introStateCounter = 0xFF00;
|
||||
|
||||
_introState = IntroState::LogoFadeOut;
|
||||
}
|
||||
break;
|
||||
case IntroState::LogoFadeOut:
|
||||
// Fade out, subtract 4 / 256 from fading
|
||||
_introStateCounter -= 0x400;
|
||||
if (_introStateCounter < 0)
|
||||
{
|
||||
_introState = IntroState::Clear;
|
||||
}
|
||||
break;
|
||||
case IntroState::Clear:
|
||||
// Stop any playing sound
|
||||
if (_soundChannel != nullptr)
|
||||
{
|
||||
_soundChannel->Stop();
|
||||
_soundChannel = nullptr;
|
||||
}
|
||||
|
||||
// Move to next part
|
||||
_introState = IntroState::Finish;
|
||||
_introStateCounter = 0;
|
||||
break;
|
||||
case IntroState::Finish:
|
||||
{
|
||||
auto& context = GetContext();
|
||||
context.SetActiveScene(context.GetTitleScene());
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void IntroDraw(DrawPixelInfo& dpi)
|
||||
{
|
||||
int32_t screenWidth = ContextGetWidth();
|
||||
|
||||
switch (_introState)
|
||||
{
|
||||
case IntroState::Disclaimer1:
|
||||
case IntroState::Disclaimer2:
|
||||
break;
|
||||
case IntroState::PublisherBegin:
|
||||
GfxClear(dpi, kBackgroundColourDark);
|
||||
break;
|
||||
case IntroState::PublisherScroll:
|
||||
GfxClear(dpi, kBackgroundColourDark);
|
||||
|
||||
// Draw a white rectangle for the logo background (gives a bit of white margin)
|
||||
GfxFillRect(
|
||||
dpi,
|
||||
{ { (screenWidth / 2) - 320 + 50, _introStateCounter + 50 },
|
||||
{ (screenWidth / 2) - 320 + 50 + 540, _introStateCounter + 50 + 425 } },
|
||||
kBorderColourPublisher);
|
||||
|
||||
// Draw Infogrames logo
|
||||
GfxDrawSprite(dpi, ImageId(SPR_INTRO_INFOGRAMES_00), { (screenWidth / 2) - 320 + 69, _introStateCounter + 69 });
|
||||
GfxDrawSprite(
|
||||
dpi, ImageId(SPR_INTRO_INFOGRAMES_10), { (screenWidth / 2) - 320 + 319, _introStateCounter + 69 });
|
||||
GfxDrawSprite(
|
||||
dpi, ImageId(SPR_INTRO_INFOGRAMES_01), { (screenWidth / 2) - 320 + 69, _introStateCounter + 319 });
|
||||
GfxDrawSprite(
|
||||
dpi, ImageId(SPR_INTRO_INFOGRAMES_11), { (screenWidth / 2) - 320 + 319, _introStateCounter + 319 });
|
||||
break;
|
||||
case IntroState::DeveloperBegin:
|
||||
GfxClear(dpi, kBackgroundColourDark);
|
||||
GfxTransposePalette(PALETTE_G1_IDX_DEVELOPER, 255);
|
||||
break;
|
||||
case IntroState::DeveloperScroll:
|
||||
GfxClear(dpi, kBackgroundColourDark);
|
||||
|
||||
// Draw Chris Sawyer logo
|
||||
GfxDrawSprite(dpi, ImageId(SPR_INTRO_CHRIS_SAWYER_00), { (screenWidth / 2) - 320 + 70, _introStateCounter });
|
||||
GfxDrawSprite(dpi, ImageId(SPR_INTRO_CHRIS_SAWYER_10), { (screenWidth / 2) - 320 + 320, _introStateCounter });
|
||||
break;
|
||||
case IntroState::LogoFadeIn:
|
||||
if (_introStateCounter <= 0xFF00)
|
||||
{
|
||||
GfxTransposePalette(PALETTE_G1_IDX_LOGO, (_introStateCounter >> 8) & 0xFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
GfxTransposePalette(PALETTE_G1_IDX_LOGO, 255);
|
||||
}
|
||||
ScreenIntroDrawLogo(dpi);
|
||||
break;
|
||||
case IntroState::LogoWait:
|
||||
ScreenIntroDrawLogo(dpi);
|
||||
break;
|
||||
case IntroState::LogoFadeOut:
|
||||
if (_introStateCounter >= 0)
|
||||
{
|
||||
GfxTransposePalette(PALETTE_G1_IDX_LOGO, (_introStateCounter >> 8) & 0xFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
GfxTransposePalette(PALETTE_G1_IDX_LOGO, 0);
|
||||
}
|
||||
ScreenIntroDrawLogo(dpi);
|
||||
break;
|
||||
case IntroState::Clear:
|
||||
GfxClear(dpi, kBackgroundColourDark);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void ScreenIntroProcessMouseInput()
|
||||
{
|
||||
if (ContextGetCursorState()->any == CURSOR_PRESSED)
|
||||
{
|
||||
ScreenIntroSkipPart();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006E3AEC
|
||||
*/
|
||||
static void ScreenIntroProcessKeyboardInput()
|
||||
{
|
||||
const uint8_t* keys = ContextGetKeysState();
|
||||
for (int i = 0; i < 256; i++)
|
||||
{
|
||||
if (keys[i] != 0)
|
||||
{
|
||||
ScreenIntroSkipPart();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void ScreenIntroSkipPart()
|
||||
{
|
||||
switch (_introState)
|
||||
{
|
||||
case IntroState::None:
|
||||
break;
|
||||
case IntroState::Disclaimer2:
|
||||
_introState = IntroState::PublisherBegin;
|
||||
break;
|
||||
default:
|
||||
_introState = IntroState::Clear;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void ScreenIntroDrawLogo(DrawPixelInfo& dpi)
|
||||
{
|
||||
int32_t screenWidth = ContextGetWidth();
|
||||
int32_t imageWidth = 640;
|
||||
int32_t imageX = (screenWidth - imageWidth) / 2;
|
||||
|
||||
DrawingEngineInvalidateImage(SPR_INTRO_LOGO_00);
|
||||
DrawingEngineInvalidateImage(SPR_INTRO_LOGO_10);
|
||||
DrawingEngineInvalidateImage(SPR_INTRO_LOGO_20);
|
||||
DrawingEngineInvalidateImage(SPR_INTRO_LOGO_01);
|
||||
DrawingEngineInvalidateImage(SPR_INTRO_LOGO_11);
|
||||
DrawingEngineInvalidateImage(SPR_INTRO_LOGO_21);
|
||||
|
||||
GfxClear(dpi, kBackgroundColourLogo);
|
||||
GfxDrawSprite(dpi, ImageId(SPR_INTRO_LOGO_00), { imageX + 0, 0 });
|
||||
GfxDrawSprite(dpi, ImageId(SPR_INTRO_LOGO_10), { imageX + 220, 0 });
|
||||
GfxDrawSprite(dpi, ImageId(SPR_INTRO_LOGO_20), { imageX + 440, 0 });
|
||||
GfxDrawSprite(dpi, ImageId(SPR_INTRO_LOGO_01), { imageX + 0, 240 });
|
||||
GfxDrawSprite(dpi, ImageId(SPR_INTRO_LOGO_11), { imageX + 220, 240 });
|
||||
GfxDrawSprite(dpi, ImageId(SPR_INTRO_LOGO_21), { imageX + 440, 240 });
|
||||
}
|
||||
} // namespace OpenRCT2
|
|
@ -0,0 +1,48 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
*
|
||||
* OpenRCT2 is licensed under the GNU General Public License version 3.
|
||||
*****************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../../common.h"
|
||||
#include "../Scene.h"
|
||||
|
||||
struct DrawPixelInfo;
|
||||
|
||||
namespace OpenRCT2
|
||||
{
|
||||
enum class IntroState : uint8_t
|
||||
{
|
||||
None,
|
||||
PublisherBegin,
|
||||
PublisherScroll,
|
||||
DeveloperBegin,
|
||||
DeveloperScroll,
|
||||
LogoFadeIn,
|
||||
LogoWait,
|
||||
LogoFadeOut,
|
||||
Disclaimer1,
|
||||
Disclaimer2,
|
||||
Clear = 254,
|
||||
Finish = 255,
|
||||
};
|
||||
|
||||
class IntroScene final : public Scene
|
||||
{
|
||||
public:
|
||||
using Scene::Scene;
|
||||
|
||||
void Load() override;
|
||||
void Tick() override;
|
||||
void Stop() override;
|
||||
};
|
||||
|
||||
bool IntroIsPlaying();
|
||||
void IntroUpdate();
|
||||
void IntroDraw(DrawPixelInfo& dpi);
|
||||
} // namespace OpenRCT2
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
#include "FollowEntity.h"
|
||||
|
||||
#include "../../interface/Window.h"
|
||||
#include "../../../interface/Window.h"
|
||||
|
||||
namespace OpenRCT2::Title
|
||||
{
|
|
@ -9,9 +9,9 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "../../Identifiers.h"
|
||||
#include "../../core/String.hpp"
|
||||
#include "../../localisation/Localisation.h"
|
||||
#include "../../../Identifiers.h"
|
||||
#include "../../../core/String.hpp"
|
||||
#include "../../../localisation/Localisation.h"
|
||||
|
||||
#include <cstdint>
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "../../core/String.hpp"
|
||||
#include "../../../core/String.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
|
|
@ -9,8 +9,8 @@
|
|||
|
||||
#include "RotateView.h"
|
||||
|
||||
#include "../../interface/Viewport.h"
|
||||
#include "../../interface/Window.h"
|
||||
#include "../../../interface/Viewport.h"
|
||||
#include "../../../interface/Window.h"
|
||||
|
||||
namespace OpenRCT2::Title
|
||||
{
|
|
@ -9,10 +9,10 @@
|
|||
|
||||
#include "SetLocation.h"
|
||||
|
||||
#include "../../OpenRCT2.h"
|
||||
#include "../../interface/Window.h"
|
||||
#include "../../interface/Window_internal.h"
|
||||
#include "../../world/Map.h"
|
||||
#include "../../../OpenRCT2.h"
|
||||
#include "../../../interface/Window.h"
|
||||
#include "../../../interface/Window_internal.h"
|
||||
#include "../../../world/Map.h"
|
||||
|
||||
namespace OpenRCT2::Title
|
||||
{
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
#include "SetSpeed.h"
|
||||
|
||||
#include "../../Game.h"
|
||||
#include "../../../Game.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
|
@ -9,8 +9,8 @@
|
|||
|
||||
#include "SetZoom.h"
|
||||
|
||||
#include "../../interface/Window.h"
|
||||
#include "../../interface/ZoomLevel.h"
|
||||
#include "../../../interface/Window.h"
|
||||
#include "../../../interface/ZoomLevel.h"
|
||||
|
||||
namespace OpenRCT2::Title
|
||||
{
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
#include "Wait.h"
|
||||
|
||||
#include "../../Context.h"
|
||||
#include "../../../Context.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
|
@ -7,28 +7,28 @@
|
|||
* OpenRCT2 is licensed under the GNU General Public License version 3.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "TitleScreen.h"
|
||||
#include "TitleScene.h"
|
||||
|
||||
#include "../Context.h"
|
||||
#include "../Game.h"
|
||||
#include "../GameState.h"
|
||||
#include "../Input.h"
|
||||
#include "../OpenRCT2.h"
|
||||
#include "../Version.h"
|
||||
#include "../audio/audio.h"
|
||||
#include "../config/Config.h"
|
||||
#include "../core/Console.hpp"
|
||||
#include "../drawing/Drawing.h"
|
||||
#include "../interface/Screenshot.h"
|
||||
#include "../interface/Viewport.h"
|
||||
#include "../interface/Window.h"
|
||||
#include "../localisation/Localisation.h"
|
||||
#include "../network/NetworkBase.h"
|
||||
#include "../network/network.h"
|
||||
#include "../scenario/Scenario.h"
|
||||
#include "../scenario/ScenarioRepository.h"
|
||||
#include "../ui/UiContext.h"
|
||||
#include "../util/Util.h"
|
||||
#include "../../Context.h"
|
||||
#include "../../Game.h"
|
||||
#include "../../GameState.h"
|
||||
#include "../../Input.h"
|
||||
#include "../../OpenRCT2.h"
|
||||
#include "../../Version.h"
|
||||
#include "../../audio/audio.h"
|
||||
#include "../../config/Config.h"
|
||||
#include "../../core/Console.hpp"
|
||||
#include "../../drawing/Drawing.h"
|
||||
#include "../../interface/Screenshot.h"
|
||||
#include "../../interface/Viewport.h"
|
||||
#include "../../interface/Window.h"
|
||||
#include "../../localisation/Localisation.h"
|
||||
#include "../../network/NetworkBase.h"
|
||||
#include "../../network/network.h"
|
||||
#include "../../scenario/Scenario.h"
|
||||
#include "../../scenario/ScenarioRepository.h"
|
||||
#include "../../ui/UiContext.h"
|
||||
#include "../../util/Util.h"
|
||||
#include "TitleSequence.h"
|
||||
#include "TitleSequenceManager.h"
|
||||
#include "TitleSequencePlayer.h"
|
||||
|
@ -37,29 +37,18 @@ using namespace OpenRCT2;
|
|||
|
||||
// TODO Remove when no longer required.
|
||||
bool gPreviewingTitleSequenceInGame;
|
||||
static TitleScreen* _singleton = nullptr;
|
||||
|
||||
TitleScreen::TitleScreen()
|
||||
{
|
||||
_singleton = this;
|
||||
}
|
||||
|
||||
TitleScreen::~TitleScreen()
|
||||
{
|
||||
_singleton = nullptr;
|
||||
}
|
||||
|
||||
ITitleSequencePlayer* TitleScreen::GetSequencePlayer()
|
||||
ITitleSequencePlayer* TitleScene::GetSequencePlayer()
|
||||
{
|
||||
return _sequencePlayer;
|
||||
}
|
||||
|
||||
size_t TitleScreen::GetCurrentSequence()
|
||||
size_t TitleScene::GetCurrentSequence()
|
||||
{
|
||||
return _currentSequence;
|
||||
}
|
||||
|
||||
bool TitleScreen::PreviewSequence(size_t value)
|
||||
bool TitleScene::PreviewSequence(size_t value)
|
||||
{
|
||||
_currentSequence = value;
|
||||
_previewingSequence = TryLoadSequence(true);
|
||||
|
@ -81,7 +70,7 @@ bool TitleScreen::PreviewSequence(size_t value)
|
|||
return _previewingSequence;
|
||||
}
|
||||
|
||||
void TitleScreen::StopPreviewingSequence()
|
||||
void TitleScene::StopPreviewingSequence()
|
||||
{
|
||||
if (_previewingSequence)
|
||||
{
|
||||
|
@ -96,24 +85,24 @@ void TitleScreen::StopPreviewingSequence()
|
|||
}
|
||||
}
|
||||
|
||||
bool TitleScreen::IsPreviewingSequence()
|
||||
bool TitleScene::IsPreviewingSequence()
|
||||
{
|
||||
return _previewingSequence;
|
||||
}
|
||||
|
||||
bool TitleScreen::ShouldHideVersionInfo()
|
||||
bool TitleScene::ShouldHideVersionInfo()
|
||||
{
|
||||
return _hideVersionInfo;
|
||||
}
|
||||
|
||||
void TitleScreen::SetHideVersionInfo(bool value)
|
||||
void TitleScene::SetHideVersionInfo(bool value)
|
||||
{
|
||||
_hideVersionInfo = value;
|
||||
}
|
||||
|
||||
void TitleScreen::Load()
|
||||
void TitleScene::Load()
|
||||
{
|
||||
LOG_VERBOSE("TitleScreen::Load()");
|
||||
LOG_VERBOSE("TitleScene::Load()");
|
||||
|
||||
if (GameIsPaused())
|
||||
{
|
||||
|
@ -125,9 +114,8 @@ void TitleScreen::Load()
|
|||
gCurrentLoadedPath.clear();
|
||||
|
||||
#ifndef DISABLE_NETWORK
|
||||
GetContext()->GetNetwork().Close();
|
||||
GetContext().GetNetwork().Close();
|
||||
#endif
|
||||
OpenRCT2::Audio::StopAll();
|
||||
gameStateInitAll(GetGameState(), DEFAULT_MAP_SIZE);
|
||||
ViewportInitAll();
|
||||
ContextOpenWindow(WindowClass::MainWindow);
|
||||
|
@ -150,10 +138,10 @@ void TitleScreen::Load()
|
|||
_sequencePlayer->Update();
|
||||
}
|
||||
|
||||
LOG_VERBOSE("TitleScreen::Load() finished");
|
||||
LOG_VERBOSE("TitleScene::Load() finished");
|
||||
}
|
||||
|
||||
void TitleScreen::Tick()
|
||||
void TitleScene::Tick()
|
||||
{
|
||||
gInUpdateCode = true;
|
||||
|
||||
|
@ -188,7 +176,12 @@ void TitleScreen::Tick()
|
|||
gInUpdateCode = false;
|
||||
}
|
||||
|
||||
void TitleScreen::ChangePresetSequence(size_t preset)
|
||||
void TitleScene::Stop()
|
||||
{
|
||||
Audio::StopAll();
|
||||
}
|
||||
|
||||
void TitleScene::ChangePresetSequence(size_t preset)
|
||||
{
|
||||
size_t count = TitleSequenceManager::GetCount();
|
||||
if (preset >= count)
|
||||
|
@ -208,7 +201,7 @@ void TitleScreen::ChangePresetSequence(size_t preset)
|
|||
* Creates the windows shown on the title screen; New game, load game,
|
||||
* tutorial, toolbox and exit.
|
||||
*/
|
||||
void TitleScreen::CreateWindows()
|
||||
void TitleScene::CreateWindows()
|
||||
{
|
||||
ContextOpenWindow(WindowClass::TitleMenu);
|
||||
ContextOpenWindow(WindowClass::TitleExit);
|
||||
|
@ -218,11 +211,11 @@ void TitleScreen::CreateWindows()
|
|||
_hideVersionInfo = false;
|
||||
}
|
||||
|
||||
void TitleScreen::TitleInitialise()
|
||||
void TitleScene::TitleInitialise()
|
||||
{
|
||||
if (_sequencePlayer == nullptr)
|
||||
{
|
||||
_sequencePlayer = GetContext()->GetUiContext()->GetTitleSequencePlayer();
|
||||
_sequencePlayer = GetContext().GetUiContext()->GetTitleSequencePlayer();
|
||||
}
|
||||
if (gConfigInterface.RandomTitleSequence)
|
||||
{
|
||||
|
@ -298,13 +291,13 @@ void TitleScreen::TitleInitialise()
|
|||
ChangePresetSequence(static_cast<int32_t>(seqId));
|
||||
}
|
||||
|
||||
bool TitleScreen::TryLoadSequence(bool loadPreview)
|
||||
bool TitleScene::TryLoadSequence(bool loadPreview)
|
||||
{
|
||||
if (_loadedTitleSequenceId != _currentSequence || loadPreview)
|
||||
{
|
||||
if (_sequencePlayer == nullptr)
|
||||
{
|
||||
_sequencePlayer = GetContext()->GetUiContext()->GetTitleSequencePlayer();
|
||||
_sequencePlayer = GetContext().GetUiContext()->GetTitleSequencePlayer();
|
||||
}
|
||||
|
||||
size_t numSequences = TitleSequenceManager::GetCount();
|
||||
|
@ -343,55 +336,55 @@ bool TitleScreen::TryLoadSequence(bool loadPreview)
|
|||
return true;
|
||||
}
|
||||
|
||||
void TitleLoad()
|
||||
{
|
||||
if (_singleton != nullptr)
|
||||
{
|
||||
_singleton->Load();
|
||||
}
|
||||
}
|
||||
|
||||
void TitleCreateWindows()
|
||||
{
|
||||
if (_singleton != nullptr)
|
||||
auto* context = OpenRCT2::GetContext();
|
||||
auto* titleScene = static_cast<TitleScene*>(context->GetTitleScene());
|
||||
if (titleScene != nullptr)
|
||||
{
|
||||
_singleton->CreateWindows();
|
||||
titleScene->CreateWindows();
|
||||
}
|
||||
}
|
||||
|
||||
void* TitleGetSequencePlayer()
|
||||
{
|
||||
void* result = nullptr;
|
||||
if (_singleton != nullptr)
|
||||
auto* context = OpenRCT2::GetContext();
|
||||
auto* titleScene = static_cast<TitleScene*>(context->GetTitleScene());
|
||||
if (titleScene != nullptr)
|
||||
{
|
||||
result = _singleton->GetSequencePlayer();
|
||||
return titleScene->GetSequencePlayer();
|
||||
}
|
||||
return result;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void TitleSequenceChangePreset(size_t preset)
|
||||
{
|
||||
if (_singleton != nullptr)
|
||||
auto* context = OpenRCT2::GetContext();
|
||||
auto* titleScene = static_cast<TitleScene*>(context->GetTitleScene());
|
||||
if (titleScene != nullptr)
|
||||
{
|
||||
_singleton->ChangePresetSequence(preset);
|
||||
titleScene->ChangePresetSequence(preset);
|
||||
}
|
||||
}
|
||||
|
||||
bool TitleShouldHideVersionInfo()
|
||||
{
|
||||
bool result = false;
|
||||
if (_singleton != nullptr)
|
||||
auto* context = OpenRCT2::GetContext();
|
||||
auto* titleScene = static_cast<TitleScene*>(context->GetTitleScene());
|
||||
if (titleScene != nullptr)
|
||||
{
|
||||
result = _singleton->ShouldHideVersionInfo();
|
||||
return titleScene->ShouldHideVersionInfo();
|
||||
}
|
||||
return result;
|
||||
return false;
|
||||
}
|
||||
|
||||
void TitleSetHideVersionInfo(bool value)
|
||||
{
|
||||
if (_singleton != nullptr)
|
||||
auto* context = OpenRCT2::GetContext();
|
||||
auto* titleScene = static_cast<TitleScene*>(context->GetTitleScene());
|
||||
if (titleScene != nullptr)
|
||||
{
|
||||
_singleton->SetHideVersionInfo(value);
|
||||
titleScene->SetHideVersionInfo(value);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -402,36 +395,43 @@ size_t TitleGetConfigSequence()
|
|||
|
||||
size_t TitleGetCurrentSequence()
|
||||
{
|
||||
size_t result = 0;
|
||||
if (_singleton != nullptr)
|
||||
auto* context = OpenRCT2::GetContext();
|
||||
auto* titleScene = static_cast<TitleScene*>(context->GetTitleScene());
|
||||
if (titleScene != nullptr)
|
||||
{
|
||||
result = _singleton->GetCurrentSequence();
|
||||
return titleScene->GetCurrentSequence();
|
||||
}
|
||||
return result;
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool TitlePreviewSequence(size_t value)
|
||||
{
|
||||
if (_singleton != nullptr)
|
||||
auto* context = OpenRCT2::GetContext();
|
||||
auto* titleScene = static_cast<TitleScene*>(context->GetTitleScene());
|
||||
if (titleScene != nullptr)
|
||||
{
|
||||
return _singleton->PreviewSequence(value);
|
||||
return titleScene->PreviewSequence(value);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void TitleStopPreviewingSequence()
|
||||
{
|
||||
if (_singleton != nullptr)
|
||||
auto* context = OpenRCT2::GetContext();
|
||||
auto* titleScene = static_cast<TitleScene*>(context->GetTitleScene());
|
||||
if (titleScene != nullptr)
|
||||
{
|
||||
_singleton->StopPreviewingSequence();
|
||||
titleScene->StopPreviewingSequence();
|
||||
}
|
||||
}
|
||||
|
||||
bool TitleIsPreviewingSequence()
|
||||
{
|
||||
if (_singleton != nullptr)
|
||||
auto* context = OpenRCT2::GetContext();
|
||||
auto* titleScene = static_cast<TitleScene*>(context->GetTitleScene());
|
||||
if (titleScene != nullptr)
|
||||
{
|
||||
return _singleton->IsPreviewingSequence();
|
||||
return titleScene->IsPreviewingSequence();
|
||||
}
|
||||
return false;
|
||||
}
|
|
@ -9,18 +9,18 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "../common.h"
|
||||
#include "../drawing/Drawing.h"
|
||||
#include "../../common.h"
|
||||
#include "../../drawing/Drawing.h"
|
||||
#include "../Scene.h"
|
||||
|
||||
struct ITitleSequencePlayer;
|
||||
|
||||
namespace OpenRCT2
|
||||
{
|
||||
class TitleScreen final
|
||||
class TitleScene final : public Scene
|
||||
{
|
||||
public:
|
||||
TitleScreen();
|
||||
~TitleScreen();
|
||||
using Scene::Scene;
|
||||
|
||||
ITitleSequencePlayer* GetSequencePlayer();
|
||||
size_t GetCurrentSequence();
|
||||
|
@ -30,8 +30,9 @@ namespace OpenRCT2
|
|||
bool ShouldHideVersionInfo();
|
||||
void SetHideVersionInfo(bool value);
|
||||
|
||||
void Load();
|
||||
void Tick();
|
||||
void Load() override;
|
||||
void Tick() override;
|
||||
void Stop() override;
|
||||
void CreateWindows();
|
||||
void ChangePresetSequence(size_t preset);
|
||||
|
||||
|
@ -50,7 +51,6 @@ namespace OpenRCT2
|
|||
// When testing title sequences within a normal game
|
||||
extern bool gPreviewingTitleSequenceInGame;
|
||||
|
||||
void TitleLoad();
|
||||
void TitleCreateWindows();
|
||||
void* TitleGetSequencePlayer();
|
||||
void TitleSequenceChangePreset(size_t preset);
|
|
@ -9,22 +9,22 @@
|
|||
|
||||
#include "TitleSequence.h"
|
||||
|
||||
#include "../common.h"
|
||||
#include "../core/Collections.hpp"
|
||||
#include "../core/Console.hpp"
|
||||
#include "../core/File.h"
|
||||
#include "../core/FileScanner.h"
|
||||
#include "../core/FileStream.h"
|
||||
#include "../core/Guard.hpp"
|
||||
#include "../core/Memory.hpp"
|
||||
#include "../core/MemoryStream.h"
|
||||
#include "../core/Path.hpp"
|
||||
#include "../core/String.hpp"
|
||||
#include "../core/StringBuilder.h"
|
||||
#include "../core/Zip.h"
|
||||
#include "../scenario/ScenarioRepository.h"
|
||||
#include "../scenario/ScenarioSources.h"
|
||||
#include "../util/Util.h"
|
||||
#include "../../common.h"
|
||||
#include "../../core/Collections.hpp"
|
||||
#include "../../core/Console.hpp"
|
||||
#include "../../core/File.h"
|
||||
#include "../../core/FileScanner.h"
|
||||
#include "../../core/FileStream.h"
|
||||
#include "../../core/Guard.hpp"
|
||||
#include "../../core/Memory.hpp"
|
||||
#include "../../core/MemoryStream.h"
|
||||
#include "../../core/Path.hpp"
|
||||
#include "../../core/String.hpp"
|
||||
#include "../../core/StringBuilder.h"
|
||||
#include "../../core/Zip.h"
|
||||
#include "../../scenario/ScenarioRepository.h"
|
||||
#include "../../scenario/ScenarioSources.h"
|
||||
#include "../../util/Util.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <array>
|
|
@ -9,8 +9,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "../common.h"
|
||||
#include "../openrct2/core/IStream.hpp"
|
||||
#include "../../common.h"
|
||||
#include "../../core/IStream.hpp"
|
||||
#include "Command/End.h"
|
||||
#include "Command/FollowEntity.h"
|
||||
#include "Command/LoadPark.h"
|
|
@ -9,17 +9,17 @@
|
|||
|
||||
#include "TitleSequenceManager.h"
|
||||
|
||||
#include "../Context.h"
|
||||
#include "../OpenRCT2.h"
|
||||
#include "../PlatformEnvironment.h"
|
||||
#include "../core/Collections.hpp"
|
||||
#include "../core/File.h"
|
||||
#include "../core/FileScanner.h"
|
||||
#include "../core/Memory.hpp"
|
||||
#include "../core/Path.hpp"
|
||||
#include "../core/String.hpp"
|
||||
#include "../localisation/Localisation.h"
|
||||
#include "../platform/Platform.h"
|
||||
#include "../../Context.h"
|
||||
#include "../../OpenRCT2.h"
|
||||
#include "../../PlatformEnvironment.h"
|
||||
#include "../../core/Collections.hpp"
|
||||
#include "../../core/File.h"
|
||||
#include "../../core/FileScanner.h"
|
||||
#include "../../core/Memory.hpp"
|
||||
#include "../../core/Path.hpp"
|
||||
#include "../../core/String.hpp"
|
||||
#include "../../localisation/Localisation.h"
|
||||
#include "../../platform/Platform.h"
|
||||
#include "TitleSequence.h"
|
||||
|
||||
#include <algorithm>
|
|
@ -8,8 +8,8 @@
|
|||
*****************************************************************************/
|
||||
|
||||
#pragma once
|
||||
#include "../common.h"
|
||||
#include "../core/String.hpp"
|
||||
#include "../../common.h"
|
||||
#include "../../core/String.hpp"
|
||||
|
||||
#include <limits>
|
||||
#include <string>
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "../common.h"
|
||||
#include "../../common.h"
|
||||
|
||||
struct ITitleSequencePlayer
|
||||
{
|
|
@ -15,7 +15,7 @@
|
|||
#include "../interface/Window.h"
|
||||
#include "../localisation/Localisation.h"
|
||||
#include "../platform/Platform.h"
|
||||
#include "../title/TitleScreen.h"
|
||||
#include "../scenes/title/TitleScene.h"
|
||||
#include "zlib.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
|
Loading…
Reference in New Issue