Example #1
0
/**
 *
 *  rct2: 0x006CFA31
 */
static void window_track_list_mouseup(rct_window *w, int widgetIndex)
{
	switch (widgetIndex) {
	case WIDX_CLOSE:
		window_close(w);
		if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_TRACK_MANAGER) {
			window_close_by_number(WC_MANAGE_TRACK_DESIGN, w->number);
			window_close_by_number(WC_TRACK_DELETE_PROMPT, w->number);
			trackmanager_load();
		}
		break;
	case WIDX_ROTATE:
		RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8)++;
		RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8) %= 4;
		window_invalidate(w);
		break;
	case WIDX_TOGGLE_SCENERY:
		RCT2_GLOBAL(RCT2_ADDRESS_TRACK_DESIGN_SCENERY_TOGGLE, uint8) ^= 1;
		reset_track_list_cache();
		window_invalidate(w);
		break;
	case WIDX_BACK:
		window_close(w);
		if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_TRACK_MANAGER) {
			window_close_by_number(WC_MANAGE_TRACK_DESIGN, w->number);
			window_close_by_number(WC_TRACK_DELETE_PROMPT, w->number);
			trackmanager_load();
		} else {
			window_new_ride_open();
		}
		break;
	}
}
Example #2
0
/**
 *
 *  rct2: 0x006CFD76
 */
static void window_track_list_close(rct_window *w)
{
    // Dispose track design and preview
    track_design_dispose(_loadedTrackDesign);
    _loadedTrackDesign = NULL;
    SafeFree(_trackDesignPreviewPixels);

    // Dispose track list
    for (size_t i = 0; i < _trackDesignsCount; i++) {
        free(_trackDesigns[i].name);
        free(_trackDesigns[i].path);
    }
    SafeFree(_trackDesigns);
    _trackDesignsCount = 0;

    // If gScreenAge is zero, we're already in the process
    // of loading the track manager, so we shouldn't try
    // to do it again. Otherwise, this window will get
    // another close signal from the track manager load function,
    // try to load the track manager again, and an infinite loop will result.
    if ((gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER) && gScreenAge != 0){
        window_close_by_number(WC_MANAGE_TRACK_DESIGN, w->number);
        window_close_by_number(WC_TRACK_DELETE_PROMPT, w->number);
        trackmanager_load();
    }
}
/**
*
*  rct2: 0x0066FA38
*/
void window_editor_top_toolbar_dropdown() {
	short widgetIndex, dropdownIndex;
	rct_window* w;

	window_dropdown_get_registers(w, widgetIndex, dropdownIndex);

	if (widgetIndex == WIDX_FILE_MENU) {
		if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & (SCREEN_FLAGS_TRACK_DESIGNER | SCREEN_FLAGS_TRACK_MANAGER)) {
			if (dropdownIndex == DDIDX_TD_ABOUT) {
				window_about_open();
			} else if (dropdownIndex == DDIDX_TD_OPTIONS) {
				window_options_open();
			} else if (dropdownIndex == DDIDX_TD_SCREENSHOT) {
				RCT2_GLOBAL(RCT2_ADDRESS_SCREENSHOT_COUNTDOWN, sint8) = 10;
			} else if (dropdownIndex == DDIDX_TD_QUIT_GAME) {
				window_close_by_number(WC_47, w->number);
				window_close_by_number(WC_48, w->number);
				game_do_command(0, 1, 0, 0, GAME_COMMAND_LOAD_OR_QUIT, 1, 0);
			}
		} else {
			if (dropdownIndex == DDIDX_SE_LOAD_LANDSCAPE) {
				game_do_command(0, 1, 0, 0, GAME_COMMAND_LOAD_OR_QUIT, 0, 0);
			} else if (dropdownIndex == DDIDX_SE_SAVE_LANDSCAPE) {
				RCT2_CALLPROC(0x0066FE2A);
			} else if (dropdownIndex == DDIDX_SE_ABOUT) {
				window_about_open();
			} else if (dropdownIndex == DDIDX_SE_OPTIONS) {
				window_options_open();
			} else if (dropdownIndex == DDIDX_SE_SCREENSHOT) {
				RCT2_GLOBAL(RCT2_ADDRESS_SCREENSHOT_COUNTDOWN, sint8) = 10;
			} else if (dropdownIndex == DDIDX_SE_QUIT_GAME) {
				window_close_by_number(WC_47, w->number);
				window_close_by_number(WC_48, w->number);
				game_do_command(0, 1, 0, 0, GAME_COMMAND_LOAD_OR_QUIT, 1, 0);
			}
		}
	} else if (widgetIndex == WIDX_VIEW_MENU) {
		top_toolbar_view_menu_dropdown(dropdownIndex);
	}
}