mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-18 20:43:04 +01:00
Merge branch 'fix/intro' into develop
This commit is contained in:
@@ -7,8 +7,7 @@
|
||||
<LocalDebuggerCommand>$(TargetDir)\openrct2.exe</LocalDebuggerCommand>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
<LocalDebuggerWorkingDirectory>$(TargetDir)</LocalDebuggerWorkingDirectory>
|
||||
<LocalDebuggerCommandArguments>
|
||||
</LocalDebuggerCommandArguments>
|
||||
<LocalDebuggerCommandArguments>intro</LocalDebuggerCommandArguments>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LocalDebuggerWorkingDirectory>$(TargetDir)</LocalDebuggerWorkingDirectory>
|
||||
|
||||
@@ -81,8 +81,6 @@
|
||||
|
||||
#define RCT2_ADDRESS_VIEWPORT_ZOOM 0x009AC126
|
||||
|
||||
#define RCT2_ADDRESS_RUN_INTRO_TICK_PART 0x009AC319
|
||||
|
||||
// 0 = none, 255 = load file, 254 = anything else
|
||||
#define RCT2_ADDRESS_ERROR_TYPE 0x009AC31B
|
||||
#define RCT2_ADDRESS_ERROR_STRING_ID 0x009AC31C
|
||||
@@ -545,6 +543,8 @@
|
||||
#define RCT2_ADDRESS_RAIN_PATTERN 0x009AC010
|
||||
#define RCT2_ADDRESS_LIGHTNING_ACTIVE 0x009AC068
|
||||
|
||||
#define RCT2_ADDRESS_RUN_INTRO_TICK_PART 0x009AC319
|
||||
|
||||
#define RCT2_ADDRESS_TOOL_WINDOWNUMBER 0x009DE542
|
||||
#define RCT2_ADDRESS_TOOL_WINDOWCLASS 0x009DE544
|
||||
#define RCT2_ADDRESS_CURRENT_TOOL 0x009DE545
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include "../drawing/drawing.h"
|
||||
#include "../game.h"
|
||||
#include "../image_io.h"
|
||||
#include "../intro.h"
|
||||
#include "../localisation/localisation.h"
|
||||
#include "../openrct2.h"
|
||||
#include "../platform/platform.h"
|
||||
@@ -301,7 +302,7 @@ int cmdline_for_screenshot(const char **argv, int argc)
|
||||
if (openrct2_initialise()) {
|
||||
rct2_open_file(inputPath);
|
||||
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_RUN_INTRO_TICK_PART, uint8) = 0;
|
||||
gIntroState = INTRO_STATE_NONE;
|
||||
gScreenFlags = SCREEN_FLAGS_PLAYING;
|
||||
|
||||
int mapSize = gMapSize;
|
||||
|
||||
292
src/intro.c
292
src/intro.c
@@ -16,230 +16,186 @@
|
||||
|
||||
#include "addresses.h"
|
||||
#include "audio/audio.h"
|
||||
#include "audio/mixer.h"
|
||||
#include "drawing/drawing.h"
|
||||
#include "intro.h"
|
||||
#include "localisation/localisation.h"
|
||||
#include "platform/platform.h"
|
||||
#include "sprites.h"
|
||||
|
||||
#define BACKROUND_COLOUR_DARK 10
|
||||
#define BACKROUND_COLOUR_LOGO 245
|
||||
#define BORDER_COLOUR_PUBLISHER 129
|
||||
|
||||
#define PALETTE_G1_IDX_DEVELOPER 23217
|
||||
#define PALETTE_G1_IDX_LOGO 23224
|
||||
|
||||
uint8 gIntroState;
|
||||
|
||||
// Used mainly for timing but also for Y coordinate and fading.
|
||||
static int _introStateCounter;
|
||||
|
||||
static void *_soundChannel = NULL;
|
||||
static bool _chainLiftFinished;
|
||||
|
||||
static void screen_intro_process_mouse_input();
|
||||
static void screen_intro_process_keyboard_input();
|
||||
static void screen_intro_skip_part();
|
||||
|
||||
static int _sound_playing_flag = 0; ///< Used to test if a sound is currently playing.
|
||||
static int _tick_counter; ///< Used mainly for timing but also for Y coordinate and fading.
|
||||
static void screen_intro_draw_logo();
|
||||
|
||||
// rct2: 0x0068E966
|
||||
void intro_update()
|
||||
{
|
||||
rct_drawpixelinfo *screenDPI = &gScreenDPI;
|
||||
int screenWidth = gScreenWidth;
|
||||
uint8 (*part) = RCT2_ADDRESS(RCT2_ADDRESS_RUN_INTRO_TICK_PART, uint8);
|
||||
|
||||
screen_intro_process_mouse_input();
|
||||
screen_intro_process_keyboard_input();
|
||||
|
||||
RCT2_GLOBAL(0x009E2C78, int) = 1;
|
||||
switch ((*part)) {
|
||||
// Cases 8 and 9 were used for the disclaimer text. There might be some residual occurences.
|
||||
case 8:
|
||||
case 9:
|
||||
(*part) = 1;
|
||||
case 1:
|
||||
// Clear the screen
|
||||
gfx_clear(screenDPI, 10);
|
||||
switch (gIntroState) {
|
||||
case INTRO_STATE_DISCLAIMER_1:
|
||||
case INTRO_STATE_DISCLAIMER_2:
|
||||
// Originally used for the disclaimer text
|
||||
gIntroState = INTRO_STATE_PUBLISHER_BEGIN;
|
||||
case INTRO_STATE_PUBLISHER_BEGIN:
|
||||
gfx_clear(screenDPI, BACKROUND_COLOUR_DARK);
|
||||
|
||||
// Set the Y for the Infogrammes logo
|
||||
_tick_counter = -580;
|
||||
_introStateCounter = -580;
|
||||
|
||||
// Chain lift sound
|
||||
_sound_playing_flag = 0;
|
||||
/*if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_SOUND_DEVICE, sint32) != -1) {
|
||||
// Prepare and play the sound
|
||||
if (sound_prepare(SOUND_LIFT_7, &_prepared_sound, 0, 1))
|
||||
if (sound_play(&_prepared_sound, 1, 0, 0, 0))
|
||||
_sound_playing_flag = 1;
|
||||
}*/
|
||||
|
||||
// Move to next part
|
||||
(*part)++;
|
||||
// Play the chain lift sound
|
||||
_soundChannel = Mixer_Play_Effect(SOUND_LIFT_7, MIXER_LOOP_INFINITE, SDL_MIX_MAXVOLUME, 0.5f, 1, true);
|
||||
_chainLiftFinished = false;
|
||||
gIntroState++;
|
||||
break;
|
||||
case 2:
|
||||
// Move the Infogrammes logo down by 5 pixels
|
||||
_tick_counter += 5;
|
||||
case INTRO_STATE_PUBLISHER_SCROLL:
|
||||
// Move the Infogrammes logo down
|
||||
_introStateCounter += 5;
|
||||
|
||||
// Clear the screen
|
||||
gfx_clear(screenDPI, 10);
|
||||
gfx_clear(screenDPI, BACKROUND_COLOUR_DARK);
|
||||
|
||||
// Draw a white rectangle for the logo background (gives a bit of white margin)
|
||||
gfx_fill_rect(screenDPI,
|
||||
(screenWidth / 2) - 320 + 50, _tick_counter + 50,
|
||||
(screenWidth / 2) - 320 + 50 + 540, _tick_counter + 50 + 425,
|
||||
129);
|
||||
(screenWidth / 2) - 320 + 50, _introStateCounter + 50,
|
||||
(screenWidth / 2) - 320 + 50 + 540, _introStateCounter + 50 + 425,
|
||||
BORDER_COLOUR_PUBLISHER);
|
||||
|
||||
// Draw the logo
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_INFOGRAMES_00, (screenWidth / 2) - 320 + 69, _tick_counter + 69, 0);
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_INFOGRAMES_10, (screenWidth / 2) - 320 + 319, _tick_counter + 69, 0);
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_INFOGRAMES_01, (screenWidth / 2) - 320 + 69, _tick_counter + 319, 0);
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_INFOGRAMES_11, (screenWidth / 2) - 320 + 319, _tick_counter + 319, 0);
|
||||
// Draw Infogrames logo
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_INFOGRAMES_00, (screenWidth / 2) - 320 + 69, _introStateCounter + 69, 0);
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_INFOGRAMES_10, (screenWidth / 2) - 320 + 319, _introStateCounter + 69, 0);
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_INFOGRAMES_01, (screenWidth / 2) - 320 + 69, _introStateCounter + 319, 0);
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_INFOGRAMES_11, (screenWidth / 2) - 320 + 319, _introStateCounter + 319, 0);
|
||||
|
||||
// Check if logo is off the screen .ish
|
||||
if (_tick_counter > 520) {
|
||||
// Clear the screen
|
||||
gfx_clear(screenDPI, 10);
|
||||
|
||||
_tick_counter = -116;
|
||||
|
||||
// Move to the next part
|
||||
(*part)++;
|
||||
// Check if logo is off the screen...ish
|
||||
if (_introStateCounter > gScreenHeight - 120) {
|
||||
gfx_clear(screenDPI, BACKROUND_COLOUR_DARK);
|
||||
_introStateCounter = -116;
|
||||
gIntroState++;
|
||||
}
|
||||
|
||||
break;
|
||||
case 3:
|
||||
//
|
||||
_tick_counter += 5;
|
||||
|
||||
// Clear the screen
|
||||
gfx_clear(screenDPI, 10);
|
||||
|
||||
// Set some palette thing
|
||||
gfx_transpose_palette(23217, 255);
|
||||
case INTRO_STATE_DEVELOPER_BEGIN:
|
||||
_introStateCounter += 5;
|
||||
gfx_clear(screenDPI, BACKROUND_COLOUR_DARK);
|
||||
gfx_transpose_palette(PALETTE_G1_IDX_DEVELOPER, 255);
|
||||
|
||||
// Set the Y for the Chris Sawyer logo
|
||||
_tick_counter = -116;
|
||||
_introStateCounter = -116;
|
||||
|
||||
// Move to the next part
|
||||
(*part)++;
|
||||
gIntroState++;
|
||||
break;
|
||||
case 4:
|
||||
// Chris Sawyer logo
|
||||
_tick_counter += 5;
|
||||
|
||||
// Clear the screen
|
||||
gfx_clear(screenDPI, 10);
|
||||
case INTRO_STATE_DEVELOPER_SCROLL:
|
||||
_introStateCounter += 5;
|
||||
gfx_clear(screenDPI, BACKROUND_COLOUR_DARK);
|
||||
|
||||
// Draw Chris Sawyer logo
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_CHRIS_SAWYER_00, (screenWidth / 2) - 320 + 70, _tick_counter, 0);
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_CHRIS_SAWYER_10, (screenWidth / 2) - 320 + 320, _tick_counter, 0);
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_CHRIS_SAWYER_00, (screenWidth / 2) - 320 + 70, _introStateCounter, 0);
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_CHRIS_SAWYER_10, (screenWidth / 2) - 320 + 320, _introStateCounter, 0);
|
||||
|
||||
// Check if logo is almost scrolled to the bottom
|
||||
if (!_chainLiftFinished && _introStateCounter >= gScreenHeight + 40 - 421) {
|
||||
_chainLiftFinished = true;
|
||||
|
||||
// Check if logo is at 259 pixels
|
||||
if (_tick_counter == 259) {
|
||||
// Stop the chain lift sound
|
||||
if (_sound_playing_flag == 1) {
|
||||
//sound_stop(&_prepared_sound);
|
||||
_sound_playing_flag = 0;
|
||||
if (_soundChannel != NULL) {
|
||||
Mixer_Stop_Channel(_soundChannel);
|
||||
_soundChannel = NULL;
|
||||
}
|
||||
|
||||
// Play the track friction sound
|
||||
/*if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_SOUND_DEVICE, sint32) != -1) {
|
||||
// Prepare and play the sound
|
||||
if (sound_prepare(SOUND_TRACK_FRICTION_3, &_prepared_sound, 1, 1))
|
||||
if (sound_play(&_prepared_sound, 1, -800, 0, 0x3A98))
|
||||
_sound_playing_flag = 1;
|
||||
}*/
|
||||
_soundChannel = Mixer_Play_Effect(SOUND_TRACK_FRICTION_3, MIXER_LOOP_INFINITE, SDL_MIX_MAXVOLUME, 0.25f, 0.75, true);
|
||||
}
|
||||
|
||||
// Check if logo is off the screen .ish
|
||||
if (_tick_counter >= 680) {
|
||||
// Clear the screen
|
||||
gfx_clear(screenDPI, 245);
|
||||
// Check if logo is off the screen...ish
|
||||
if (_introStateCounter >= gScreenHeight + 40) {
|
||||
gfx_transpose_palette(PALETTE_G1_IDX_LOGO, 0);
|
||||
|
||||
// Draw RollerCoaster Tycoon 2 logo
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_00, (screenWidth / 2) - 320 + 0, 0, 0);
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_10, (screenWidth / 2) - 320 + 220, 0, 0);
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_20, (screenWidth / 2) - 320 + 440, 0, 0);
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_01, (screenWidth / 2) - 320 + 0, 240, 0);
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_11, (screenWidth / 2) - 320 + 220, 240, 0);
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_21, (screenWidth / 2) - 320 + 440, 240, 0);
|
||||
|
||||
// Set palette thing
|
||||
gfx_transpose_palette(23224, 0);
|
||||
screen_intro_draw_logo();
|
||||
|
||||
// Stop the track friction sound
|
||||
if (_sound_playing_flag == 1) {
|
||||
//sound_stop(&_prepared_sound);
|
||||
_sound_playing_flag = 0;
|
||||
if (_soundChannel != NULL) {
|
||||
Mixer_Stop_Channel(_soundChannel);
|
||||
_soundChannel = NULL;
|
||||
}
|
||||
|
||||
// Play long peep scream sound
|
||||
/*if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_SOUND_DEVICE, sint32) != -1)
|
||||
if (sound_prepare(SOUND_SCREAM_1, &_prepared_sound, 0, 1))
|
||||
if (sound_play(&_prepared_sound, 0, 0, 0, 0))
|
||||
_sound_playing_flag = 1;*/
|
||||
_soundChannel = Mixer_Play_Effect(SOUND_SCREAM_1, MIXER_LOOP_NONE, SDL_MIX_MAXVOLUME, 0.5f, 1, true);
|
||||
|
||||
// Move to the next part
|
||||
(*part)++;
|
||||
|
||||
// Set the current fade to 0
|
||||
_tick_counter = 0;
|
||||
gIntroState++;
|
||||
_introStateCounter = 0;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
case INTRO_STATE_LOGO_FADE_IN:
|
||||
// Fade in, add 4 / 256 to fading
|
||||
_tick_counter += 0x000400;
|
||||
if (_tick_counter <= 0x00FF00) {
|
||||
// Set palette thing
|
||||
gfx_transpose_palette(23224, (_tick_counter >> 8) & 0xFF);
|
||||
}
|
||||
else {
|
||||
// Set palette thing
|
||||
gfx_transpose_palette(23224, 255);
|
||||
|
||||
// Move to next part
|
||||
(*part)++;
|
||||
|
||||
// Set the fade to 0
|
||||
_tick_counter = 0;
|
||||
_introStateCounter += 0x400;
|
||||
if (_introStateCounter <= 0xFF00) {
|
||||
gfx_transpose_palette(PALETTE_G1_IDX_LOGO, (_introStateCounter >> 8) & 0xFF);
|
||||
} else {
|
||||
gfx_transpose_palette(PALETTE_G1_IDX_LOGO, 255);
|
||||
gIntroState++;
|
||||
_introStateCounter = 0;
|
||||
}
|
||||
screen_intro_draw_logo();
|
||||
break;
|
||||
case 6:
|
||||
case INTRO_STATE_LOGO_WAIT:
|
||||
// Wait 80 game ticks
|
||||
_tick_counter++;
|
||||
if (_tick_counter >= 80) {
|
||||
_introStateCounter++;
|
||||
if (_introStateCounter >= 80) {
|
||||
// Set fading to 256
|
||||
_tick_counter = 0x00FF00;
|
||||
_introStateCounter = 0xFF00;
|
||||
|
||||
// Move to next part
|
||||
(*part)++;
|
||||
gIntroState++;
|
||||
}
|
||||
screen_intro_draw_logo();
|
||||
break;
|
||||
case 7:
|
||||
case INTRO_STATE_LOGO_FADE_OUT:
|
||||
// Fade out, subtract 4 / 256 from fading
|
||||
_tick_counter -= 0x000400;
|
||||
if (_tick_counter >= 0) {
|
||||
_introStateCounter -= 0x400;
|
||||
if (_introStateCounter >= 0) {
|
||||
// Do palette thing
|
||||
gfx_transpose_palette(23224, (_tick_counter >> 8) & 0xFF);
|
||||
}
|
||||
else {
|
||||
// Do palette thing
|
||||
gfx_transpose_palette(23224, 0);
|
||||
|
||||
// Finish the intro sequence
|
||||
(*part) = 254;
|
||||
gfx_transpose_palette(PALETTE_G1_IDX_LOGO, (_introStateCounter >> 8) & 0xFF);
|
||||
} else {
|
||||
gfx_transpose_palette(PALETTE_G1_IDX_LOGO, 0);
|
||||
gIntroState = INTRO_STATE_CLEAR;
|
||||
}
|
||||
screen_intro_draw_logo();
|
||||
break;
|
||||
case 254:
|
||||
// Clear the screen
|
||||
gfx_clear(screenDPI, 10);
|
||||
case INTRO_STATE_CLEAR:
|
||||
gfx_clear(screenDPI, BACKROUND_COLOUR_DARK);
|
||||
|
||||
// Stop any playing sound
|
||||
if (_sound_playing_flag == 1) {
|
||||
//sound_stop(&_prepared_sound);
|
||||
_sound_playing_flag = 0;
|
||||
if (_soundChannel != NULL) {
|
||||
Mixer_Stop_Channel(_soundChannel);
|
||||
_soundChannel = NULL;
|
||||
}
|
||||
|
||||
// Move to next part
|
||||
(*part)++;
|
||||
_tick_counter = 0;
|
||||
gIntroState++;
|
||||
_introStateCounter = 0;
|
||||
break;
|
||||
case 255:
|
||||
// Finish the intro sequence
|
||||
(*part) = 0;
|
||||
|
||||
// Change palette
|
||||
case INTRO_STATE_FINISH:
|
||||
gIntroState = INTRO_STATE_NONE;
|
||||
load_palette();
|
||||
|
||||
RCT2_GLOBAL(0x009E2C78, sint32) = 0;
|
||||
gfx_invalidate_screen();
|
||||
break;
|
||||
}
|
||||
@@ -247,8 +203,9 @@ void intro_update()
|
||||
|
||||
static void screen_intro_process_mouse_input()
|
||||
{
|
||||
if (gCursorState.any == CURSOR_PRESSED)
|
||||
if (gCursorState.any == CURSOR_PRESSED) {
|
||||
screen_intro_skip_part();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -257,22 +214,37 @@ static void screen_intro_process_mouse_input()
|
||||
*/
|
||||
static void screen_intro_process_keyboard_input()
|
||||
{
|
||||
if (gLastKeyPressed != 0)
|
||||
if (gLastKeyPressed != 0) {
|
||||
screen_intro_skip_part();
|
||||
}
|
||||
}
|
||||
|
||||
static void screen_intro_skip_part()
|
||||
{
|
||||
uint8 (*part) = RCT2_ADDRESS(RCT2_ADDRESS_RUN_INTRO_TICK_PART, uint8);
|
||||
|
||||
switch ((*part)) {
|
||||
case 0:
|
||||
switch (gIntroState) {
|
||||
case INTRO_STATE_NONE:
|
||||
break;
|
||||
case 9:
|
||||
(*part) = 1;
|
||||
case INTRO_STATE_DISCLAIMER_2:
|
||||
gIntroState = INTRO_STATE_PUBLISHER_BEGIN;
|
||||
break;
|
||||
default:
|
||||
(*part) = 254;
|
||||
gIntroState = INTRO_STATE_CLEAR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void screen_intro_draw_logo()
|
||||
{
|
||||
rct_drawpixelinfo *screenDPI = &gScreenDPI;
|
||||
sint32 screenWidth = gScreenWidth;
|
||||
sint32 imageWidth = 640;
|
||||
sint32 imageX = (screenWidth - imageWidth) / 2;
|
||||
|
||||
gfx_clear(screenDPI, BACKROUND_COLOUR_LOGO);
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_00, imageX + 0, 0, 0);
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_10, imageX + 220, 0, 0);
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_20, imageX + 440, 0, 0);
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_01, imageX + 0, 240, 0);
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_11, imageX + 220, 240, 0);
|
||||
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_21, imageX + 440, 240, 0);
|
||||
}
|
||||
|
||||
17
src/intro.h
17
src/intro.h
@@ -17,6 +17,23 @@
|
||||
#ifndef _INTRO_H_
|
||||
#define _INTRO_H_
|
||||
|
||||
enum INTRO_STATE {
|
||||
INTRO_STATE_NONE,
|
||||
INTRO_STATE_PUBLISHER_BEGIN,
|
||||
INTRO_STATE_PUBLISHER_SCROLL,
|
||||
INTRO_STATE_DEVELOPER_BEGIN,
|
||||
INTRO_STATE_DEVELOPER_SCROLL,
|
||||
INTRO_STATE_LOGO_FADE_IN,
|
||||
INTRO_STATE_LOGO_WAIT,
|
||||
INTRO_STATE_LOGO_FADE_OUT,
|
||||
INTRO_STATE_DISCLAIMER_1,
|
||||
INTRO_STATE_DISCLAIMER_2,
|
||||
INTRO_STATE_CLEAR = 254,
|
||||
INTRO_STATE_FINISH = 255,
|
||||
};
|
||||
|
||||
extern uint8 gIntroState;
|
||||
|
||||
void intro_update();
|
||||
|
||||
#endif
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include "interface/themes.h"
|
||||
#include "interface/window.h"
|
||||
#include "interface/viewport.h"
|
||||
#include "intro.h"
|
||||
#include "localisation/localisation.h"
|
||||
#include "network/http.h"
|
||||
#include "network/network.h"
|
||||
@@ -264,13 +265,13 @@ bool openrct2_initialise()
|
||||
void openrct2_launch()
|
||||
{
|
||||
if (openrct2_initialise()) {
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_RUN_INTRO_TICK_PART, uint8) = 0;
|
||||
gIntroState = INTRO_STATE_NONE;
|
||||
if((gOpenRCT2StartupAction == STARTUP_ACTION_TITLE) && gConfigGeneral.play_intro)
|
||||
gOpenRCT2StartupAction = STARTUP_ACTION_INTRO;
|
||||
|
||||
switch (gOpenRCT2StartupAction) {
|
||||
case STARTUP_ACTION_INTRO:
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_RUN_INTRO_TICK_PART, uint8) = 1;
|
||||
gIntroState = INTRO_STATE_PUBLISHER_BEGIN;
|
||||
break;
|
||||
case STARTUP_ACTION_TITLE:
|
||||
gScreenFlags = SCREEN_FLAGS_TITLE_DEMO;
|
||||
|
||||
18
src/rct2.c
18
src/rct2.c
@@ -276,6 +276,10 @@ int rct2_startup_checks()
|
||||
|
||||
void rct2_draw()
|
||||
{
|
||||
if (gIntroState != INTRO_STATE_NONE) {
|
||||
return;
|
||||
}
|
||||
|
||||
redraw_rain();
|
||||
window_update_all();
|
||||
gfx_invalidate_pickedup_peep();
|
||||
@@ -286,13 +290,8 @@ void rct2_draw()
|
||||
chat_draw();
|
||||
console_draw(&gScreenDPI);
|
||||
|
||||
if (RCT2_GLOBAL(RCT2_ADDRESS_RUN_INTRO_TICK_PART, uint8) != 0) {
|
||||
//intro
|
||||
} else if (gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) {
|
||||
//title
|
||||
if (gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) {
|
||||
DrawOpenRCT2(0, gScreenHeight - 20);
|
||||
} else {
|
||||
//game
|
||||
}
|
||||
|
||||
if (gConfigGeneral.show_fps) {
|
||||
@@ -455,12 +454,13 @@ void rct2_update()
|
||||
|
||||
// check_cmdline_arg();
|
||||
// Screens
|
||||
if (RCT2_GLOBAL(RCT2_ADDRESS_RUN_INTRO_TICK_PART, uint8) != 0)
|
||||
if (gIntroState != INTRO_STATE_NONE) {
|
||||
intro_update();
|
||||
else if ((gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) && !gOpenRCT2Headless)
|
||||
} else if ((gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) && !gOpenRCT2Headless) {
|
||||
title_update();
|
||||
else
|
||||
} else {
|
||||
game_update();
|
||||
}
|
||||
|
||||
//stop_completed_sounds(); // removes other sounds that are no longer playing in directsound
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "../interface/widget.h"
|
||||
#include "../interface/window.h"
|
||||
#include "../interface/themes.h"
|
||||
#include "../intro.h"
|
||||
|
||||
static rct_widget window_title_exit_widgets[] = {
|
||||
{ WWT_IMGBTN, 2, 0, 39, 0, 63, SPR_MENU_EXIT, STR_EXIT },
|
||||
@@ -89,7 +90,7 @@ void window_title_exit_open()
|
||||
*/
|
||||
static void window_title_exit_mouseup(rct_window *w, int widgetIndex)
|
||||
{
|
||||
if (RCT2_GLOBAL(RCT2_ADDRESS_RUN_INTRO_TICK_PART, uint8) != 0)
|
||||
if (gIntroState != INTRO_STATE_NONE)
|
||||
return;
|
||||
|
||||
if (widgetIndex == 0)
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "../addresses.h"
|
||||
#include "../config.h"
|
||||
#include "../game.h"
|
||||
#include "../intro.h"
|
||||
#include "../localisation/localisation.h"
|
||||
#include "../interface/widget.h"
|
||||
#include "../interface/window.h"
|
||||
@@ -83,7 +84,7 @@ void window_title_options_open()
|
||||
|
||||
static void window_title_options_mouseup(rct_window *w, int widgetIndex)
|
||||
{
|
||||
if (RCT2_GLOBAL(RCT2_ADDRESS_RUN_INTRO_TICK_PART, uint8) != 0)
|
||||
if (gIntroState != INTRO_STATE_NONE)
|
||||
return;
|
||||
|
||||
if (widgetIndex == 0)
|
||||
|
||||
Reference in New Issue
Block a user