1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-06 06:32:56 +01:00

change scenario select to callback mechanism

This commit is contained in:
IntelOrca
2016-02-10 18:44:00 +00:00
parent 6d384fa2e5
commit 934bf28cc1
4 changed files with 32 additions and 13 deletions

View File

@@ -498,6 +498,7 @@ enum {
};
typedef void (*modal_callback)(int result);
typedef void (*scenarioselect_callback)(const utf8 *path);
extern bool gLoadSaveTitleSequenceSave;
extern modal_callback gLoadSaveCallback;
@@ -585,7 +586,7 @@ void window_title_exit_open();
void window_title_options_open();
void window_title_logo_open();
void window_news_open();
void window_scenarioselect_open();
void window_scenarioselect_open(scenarioselect_callback callback);
void window_track_list_open(ride_list_item item);
void window_clear_scenery_open();
void window_land_open();

View File

@@ -28,6 +28,7 @@
#include "../interface/window.h"
#include "../localisation/localisation.h"
#include "../sprites.h"
#include "../title.h"
#include "dropdown.h"
enum {
@@ -131,11 +132,18 @@ void window_title_menu_open()
window_init_scroll_widgets(window);
}
static void window_title_menu_scenarioselect_callback(const utf8 *path)
{
if (!scenario_load_and_play_from_path(path)) {
title_load();
}
}
static void window_title_menu_mouseup(rct_window *w, int widgetIndex)
{
switch (widgetIndex) {
case WIDX_START_NEW_GAME:
window_scenarioselect_open();
window_scenarioselect_open(window_title_menu_scenarioselect_callback);
break;
case WIDX_CONTINUE_SAVED_GAME:
game_do_command(0, 1, 0, 0, GAME_COMMAND_LOAD_OR_QUIT, 0, 0);

View File

@@ -135,16 +135,20 @@ static void initialise_list_items(rct_window *w);
static bool is_scenario_visible(rct_window *w, scenario_index_entry *scenario);
static bool is_locking_enabled(rct_window *w);
static scenarioselect_callback _callback;
/**
*
* rct2: 0x006781B5
*/
void window_scenarioselect_open()
void window_scenarioselect_open(scenarioselect_callback callback)
{
rct_window* window;
int windowWidth;
int windowHeight = 334;
_callback = callback;
if (window_bring_to_front_by_class(WC_SCENARIO_SELECT) != NULL)
return;
@@ -275,9 +279,7 @@ static void window_scenarioselect_scrollmousedown(rct_window *w, int scrollIndex
y -= 24;
if (y < 0 && !listItem->scenario.is_locked) {
audio_play_sound_panned(SOUND_CLICK_1, w->width / 2 + w->x, 0, 0, 0);
if (!scenario_load_and_play_from_path(listItem->scenario.scenario->path)) {
title_load();
}
_callback(listItem->scenario.scenario->path);
}
break;
}

View File

@@ -19,27 +19,28 @@
*****************************************************************************/
#include "../addresses.h"
#include "../audio/audio.h"
#include "../cheats.h"
#include "../config.h"
#include "../editor.h"
#include "../game.h"
#include "../input.h"
#include "../sprites.h"
#include "../audio/audio.h"
#include "../interface/console.h"
#include "../interface/screenshot.h"
#include "../interface/themes.h"
#include "../interface/viewport.h"
#include "../interface/widget.h"
#include "../interface/window.h"
#include "../interface/viewport.h"
#include "../localisation/localisation.h"
#include "../network/network.h"
#include "../network/twitch.h"
#include "../scenario.h"
#include "../title.h"
#include "../sprites.h"
#include "../util/util.h"
#include "../world/scenery.h"
#include "../world/banner.h"
#include "../world/scenery.h"
#include "dropdown.h"
#include "../interface/themes.h"
#include "../interface/console.h"
enum {
WIDX_PAUSE,
@@ -498,6 +499,13 @@ static void window_top_toolbar_mousedown(int widgetIndex, rct_window*w, rct_widg
}
}
static void window_top_toolbar_scenarioselect_callback(const utf8 *path)
{
if (!scenario_load_and_play_from_path(path)) {
title_load();
}
}
/**
*
* rct2: 0x0066C9EA
@@ -521,7 +529,7 @@ static void window_top_toolbar_dropdown(rct_window *w, int widgetIndex, int drop
switch (dropdownIndex) {
case DDIDX_NEW_GAME:
window_scenarioselect_open();
window_scenarioselect_open(window_top_toolbar_scenarioselect_callback);
break;
case DDIDX_LOAD_GAME:
game_do_command(0, 1, 0, 0, GAME_COMMAND_LOAD_OR_QUIT, 0, 0);