/* rct2: 0x006C6E14 */ void window_construction_mouseup(){ short widgetIndex; rct_window *w; window_widget_get_registers(w, widgetIndex); RCT2_CALLPROC_X(0x6C6A77, 0, 0, 0, 0, 0, 0, 0); switch (widgetIndex){ case WIDX_CLOSE: window_close(w); break; case 27: RCT2_CALLPROC_X(0x6C9296, 0, 0, 0, widgetIndex, (int)w, 0, 0); break; case 26: RCT2_CALLPROC_X(0x6C93B8, 0, 0, 0, widgetIndex, (int)w, 0, 0); break; case 23: RCT2_CALLPROC_X(0x6C9F72, 0, 0, 0, widgetIndex, (int)w, 0, 0); break; case WIDX_DEMOLISH: window_construction_mouseup_demolish(w); break; case 32: RCT2_CALLPROC_X(0x6C78AA, 0, 0, 0, widgetIndex, (int)w, 0, 0); break; case 29: RCT2_CALLPROC_X(0x6C7802, 0, 0, 0, widgetIndex, (int)w, 0, 0); break; case 30: RCT2_CALLPROC_X(0x6C7866, 0, 0, 0, widgetIndex, (int)w, 0, 0); break; } }
/** * * rct2: 0x006CFA31 */ static void window_track_list_mouseup() { rct_window *w; short widgetIndex; window_widget_get_registers(w, 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; } }
static void window_text_input_mouseup(){ short widgetIndex; rct_window *w; rct_window *calling_w; window_widget_get_registers(w, widgetIndex); calling_w = window_find_by_number(calling_class, calling_number); switch (widgetIndex){ case WIDX_CANCEL: case WIDX_CLOSE: platform_stop_text_input(); // Pass back the text that has been entered. // ecx when zero means text input failed if (calling_w != NULL) window_event_textinput_call(calling_w, calling_widget, NULL); window_close(w); break; case WIDX_OKAY: platform_stop_text_input(); // Pass back the text that has been entered. // ecx when none zero means text input success if (calling_w != NULL) window_event_textinput_call(calling_w, calling_widget, text_input); window_close(w); } }
/** * * rct2: 0x006E3AE0 */ static void window_shortcut_change_mouseup(){ short widgetIndex; rct_window *w; window_widget_get_registers(w, widgetIndex); switch (widgetIndex){ case WIDX_CLOSE: window_close(w); } }
static void window_title_options_mouseup() { short widgetIndex; rct_window *w; window_widget_get_registers(w, widgetIndex); if (RCT2_GLOBAL(RCT2_ADDRESS_RUN_INTRO_TICK_PART, uint8) != 0) return; if (widgetIndex == 0) window_options_open(); }
static void window_tile_inspector_mouseup() { short widgetIndex; rct_window *w; window_widget_get_registers(w, widgetIndex); switch (widgetIndex) { case WIDX_CLOSE: window_close(w); break; } }
/** * * rct2: 0x00664064 */ static void window_land_mouseup() { int limit; short widgetIndex; rct_window *w; window_widget_get_registers(w, widgetIndex); switch (widgetIndex) { case WIDX_CLOSE: window_close(w); break; case WIDX_DECREMENT: // Decrement land tool size RCT2_GLOBAL(RCT2_ADDRESS_LAND_TOOL_SIZE, sint16)--; // FEATURE: minimum size is always 0 limit = 0; // limit = (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2 ? 0 : 1); if (RCT2_GLOBAL(RCT2_ADDRESS_LAND_TOOL_SIZE, sint16) < limit) RCT2_GLOBAL(RCT2_ADDRESS_LAND_TOOL_SIZE, sint16) = limit; // Invalidate the window window_invalidate(w); break; case WIDX_INCREMENT: // Increment land tool size RCT2_GLOBAL(RCT2_ADDRESS_LAND_TOOL_SIZE, sint16)++; // FEATURE: maximum size is 64 limit = 64; // limit = (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2 ? 7 : 5); if (RCT2_GLOBAL(RCT2_ADDRESS_LAND_TOOL_SIZE, sint16) > limit) RCT2_GLOBAL(RCT2_ADDRESS_LAND_TOOL_SIZE, sint16) = limit; // Invalidate the window window_invalidate(w); break; case WIDX_PAINTMODE: LandPaintMode ^= 1; window_invalidate(w); break; case WIDX_PREVIEW: window_land_inputsize(w); break; } }
/** * * rct2: 0x006A7E92 */ static void window_footpath_mouseup() { short widgetIndex; rct_window *w; window_widget_get_registers(w, widgetIndex); switch (widgetIndex) { case WIDX_CLOSE: window_close(w); break; case WIDX_CONSTRUCT: window_footpath_construct(); break; case WIDX_REMOVE: window_footpath_remove(); break; case WIDX_CONSTRUCT_ON_LAND: if (RCT2_GLOBAL(RCT2_ADDRESS_PATH_CONSTRUCTION_MODE, uint8) == PATH_CONSTRUCTION_MODE_LAND) break; _window_footpath_cost = 0x80000000; tool_cancel(); RCT2_CALLPROC_EBPSAFE(0x006A7831); RCT2_CALLPROC_EBPSAFE(0x0068AB1B); RCT2_GLOBAL(RCT2_ADDRESS_MAP_SELECTION_FLAGS, uint16) &= ~2; RCT2_GLOBAL(RCT2_ADDRESS_PATH_CONSTRUCTION_MODE, uint8) = PATH_CONSTRUCTION_MODE_LAND; tool_set(w, WIDX_CONSTRUCT_ON_LAND, 17); RCT2_GLOBAL(0x009DE518, uint32) |= (1 << 6); RCT2_GLOBAL(RCT2_ADDRESS_PATH_ERROR_OCCURED, uint8) = 0; RCT2_CALLPROC_EBPSAFE(0x006A855C); break; case WIDX_CONSTRUCT_BRIDGE_OR_TUNNEL: if (RCT2_GLOBAL(RCT2_ADDRESS_PATH_CONSTRUCTION_MODE, uint8) == PATH_CONSTRUCTION_MODE_BRIDGE_OR_TUNNEL) break; _window_footpath_cost = 0x80000000; tool_cancel(); RCT2_CALLPROC_EBPSAFE(0x006A7831); RCT2_CALLPROC_EBPSAFE(0x0068AB1B); RCT2_GLOBAL(RCT2_ADDRESS_MAP_SELECTION_FLAGS, uint16) &= ~2; RCT2_GLOBAL(RCT2_ADDRESS_PATH_CONSTRUCTION_MODE, uint8) = PATH_CONSTRUCTION_MODE_BRIDGE_OR_TUNNEL; tool_set(w, WIDX_CONSTRUCT_BRIDGE_OR_TUNNEL, 12); RCT2_GLOBAL(0x009DE518, uint32) |= (1 << 6); RCT2_GLOBAL(RCT2_ADDRESS_PATH_ERROR_OCCURED, uint8) = 0; RCT2_CALLPROC_EBPSAFE(0x006A855C); break; } }
/** * * rct2: 0x006B4933 */ static void window_ride_demolish_mouseup(){ short widgetIndex; rct_window *w; window_widget_get_registers(w, widgetIndex); switch (widgetIndex){ case WIDX_DEMOLISH: RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_STRING_ID, rct_string_id) = STR_CANT_DEMOLISH_RIDE; game_do_command(0, 1, 0, w->number, GAME_COMMAND_7, 0, 0); break; case WIDX_CANCEL: case WIDX_CLOSE: window_close(w); } }
/** * * rct2: 0x0066C957 */ static void window_editor_top_toolbar_mouseup() { short widgetIndex; rct_window *w, *mainWindow; window_widget_get_registers(w, widgetIndex); switch (widgetIndex) { case WIDX_ZOOM_IN: if ((mainWindow = window_get_main()) != NULL) window_zoom_in(mainWindow); break; case WIDX_ZOOM_OUT: if ((mainWindow = window_get_main()) != NULL) window_zoom_out(mainWindow); break; case WIDX_ROTATE: if ((mainWindow = window_get_main()) != NULL) window_rotate_camera(mainWindow); break; case WIDX_SCENERY: if (!tool_set(w, WIDX_SCENERY, 0)) { RCT2_GLOBAL(0x009DE518, uint32) |= (1 << 6); window_scenery_open(); } break; case WIDX_PATH: toggle_footpath_window(); break; case WIDX_LAND: toggle_land_window(w, WIDX_LAND); break; case WIDX_CLEAR_SCENERY: toggle_clear_scenery_window(w, WIDX_CLEAR_SCENERY); break; case WIDX_WATER: toggle_water_window(w, WIDX_WATER); break; case WIDX_MAP: window_map_open(); break; case WIDX_CONSTRUCT_RIDE: window_new_ride_open(); break; } }
/** * * rct2: 0x006C0B40 */ static void window_staff_fire_mouseup(){ short widgetIndex; rct_window *w; window_widget_get_registers(w, widgetIndex); rct_peep* peep = &g_sprite_list[w->number].peep; switch (widgetIndex){ case WIDX_YES: game_do_command(peep->x, 1, peep->y, w->number, GAME_COMMAND_FIRE_STAFF_MEMBER, 0, 0); break; case WIDX_CANCEL: case WIDX_CLOSE: window_close(w); } }
/** * * rct2: 0x0066D4D5 */ static void window_about_mouseup() { short widgetIndex; rct_window *w; window_widget_get_registers(w, widgetIndex); switch (widgetIndex) { case WIDX_CLOSE: window_close(w); break; case WIDX_MUSIC_CREDITS: window_music_credits_open(); break; case WIDX_PUBLISHER_CREDITS: window_publisher_credits_open(); break; } }
/* rct2: 0x6ba4d6*/ static void window_banner_mouseup() { short widgetIndex; rct_window *w; window_widget_get_registers(w, widgetIndex); rct_banner* banner = &gBanners[w->number]; int x = banner->x << 5; int y = banner->y << 5; rct_map_element* map_element = TILE_MAP_ELEMENT_POINTER(((y << 8) | x) >> 5); while (1){ if (((map_element->type & MAP_ELEMENT_TYPE_MASK) == MAP_ELEMENT_TYPE_BANNER) && (map_element->properties.banner.index == w->number)) break; map_element++; } switch (widgetIndex) { case WIDX_CLOSE: window_close(w); break; case WIDX_BANNER_DEMOLISH: game_do_command(x, 1, y, map_element->base_height | (map_element->properties.banner.position << 8), GAME_COMMAND_51, 0, 0); break; case WIDX_BANNER_TEXT: window_text_input_open(w, WIDX_BANNER_TEXT, 2982, 2983, gBanners[w->number].string_idx, 0); break; case WIDX_BANNER_NO_ENTRY: RCT2_CALLPROC_EBPSAFE(0x006EE3C3); banner->flags ^= BANNER_FLAG_NO_ENTRY; window_invalidate(w); map_element->properties.banner.flags = 0xFF; if (banner->flags & BANNER_FLAG_NO_ENTRY){ map_element->properties.banner.flags &= ~(1 << map_element->properties.banner.position); } break; } }
/** * * rct2: 0x006D3823 */ static void window_track_delete_prompt_mouseup() { rct_window *w; short widgetIndex; window_widget_get_registers(w, widgetIndex); switch (widgetIndex) { case WIDX_CLOSE: case WIDX_PROMPT_CANCEL: window_close(w); break; case WIDX_PROMPT_DELETE: window_close(w); if (track_delete()) window_close_by_class(WC_MANAGE_TRACK_DESIGN); else window_error_open(STR_CANT_DELETE_TRACK_DESIGN, RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16)); break; } }
/** * * rct2: 0x0068E185 */ static void window_clear_scenery_mouseup() { rct_window *w; int limit; short widgetIndex; window_widget_get_registers(w, widgetIndex); switch (widgetIndex) { case WIDX_CLOSE: window_close(w); break; case WIDX_DECREMENT: // Decrement land tool size RCT2_GLOBAL(RCT2_ADDRESS_LAND_TOOL_SIZE, sint16)--; limit = 1; if (RCT2_GLOBAL(RCT2_ADDRESS_LAND_TOOL_SIZE, sint16) < limit) RCT2_GLOBAL(RCT2_ADDRESS_LAND_TOOL_SIZE, sint16) = limit; // Invalidate the window window_invalidate(w); break; case WIDX_INCREMENT: // Increment land tool size RCT2_GLOBAL(RCT2_ADDRESS_LAND_TOOL_SIZE, sint16)++; // FEATURE: maximum size is always 7 limit = 7; // limit = (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2 ? 7 : 5); if (RCT2_GLOBAL(RCT2_ADDRESS_LAND_TOOL_SIZE, sint16) > limit) RCT2_GLOBAL(RCT2_ADDRESS_LAND_TOOL_SIZE, sint16) = limit; // Invalidate the window window_invalidate(w); break; } }
/** * * rct2: 0x006D3523 */ static void window_track_manage_mouseup() { uint8 *trackDesignList = (uint8*)0x00F441EC; rct_window *w, *trackDesignListWindow; short widgetIndex; window_widget_get_registers(w, widgetIndex); switch (widgetIndex) { case WIDX_CLOSE: window_close(w); break; case WIDX_RENAME: trackDesignListWindow = window_find_by_class(WC_TRACK_DESIGN_LIST); if (trackDesignListWindow != NULL) { strcpy((char*)0x009BC677, (char*)trackDesignList[trackDesignListWindow->track_list.var_482 * 128]); window_show_textinput(w, widgetIndex, 3350, 3351, 3165); } break; case WIDX_DELETE: window_track_delete_prompt_open(); break; } }
/** * * rct2: 0x006AAFAB */ static void window_editor_object_selection_mouseup() { rct_window *w; short widgetIndex; window_widget_get_registers(w, widgetIndex); switch (widgetIndex) { case WIDX_CLOSE: if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_EDITOR) { game_do_command(0, 1, 0, 0, GAME_COMMAND_LOAD_OR_QUIT, 1, 0); } else { // Used for in-game object selection cheat window_close(w); } break; case WIDX_TAB_1: case WIDX_TAB_2: case WIDX_TAB_3: case WIDX_TAB_4: case WIDX_TAB_5: case WIDX_TAB_6: case WIDX_TAB_7: case WIDX_TAB_8: case WIDX_TAB_9: case WIDX_TAB_10: case WIDX_TAB_11: window_editor_object_set_page(w, widgetIndex - WIDX_TAB_1); break; case WIDX_FILTER_RIDE_TAB_ALL: _filter_flags |= 0x7E0; filter_update_counts(); w->selected_list_item = -1; w->var_494 = 0xFFFFFFFF; w->scrolls[0].v_top = 0; object_free_scenario_text(); window_invalidate(w); break; case WIDX_FILTER_RIDE_TAB_TRANSPORT: case WIDX_FILTER_RIDE_TAB_GENTLE: case WIDX_FILTER_RIDE_TAB_COASTER: case WIDX_FILTER_RIDE_TAB_THRILL: case WIDX_FILTER_RIDE_TAB_WATER: case WIDX_FILTER_RIDE_TAB_STALL: _filter_flags &= ~0x7E0; _filter_flags |= (1 << (widgetIndex - WIDX_FILTER_RIDE_TAB_TRANSPORT + 5)); filter_update_counts(); w->selected_list_item = -1; w->var_494 = 0xFFFFFFFF; w->scrolls[0].v_top = 0; object_free_scenario_text(); window_invalidate(w); break; case WIDX_DROPDOWN1: w->list_information_type ^= 1; window_invalidate(w); break; case WIDX_DROPDOWN2: if (w->selected_list_item != -1) { w->selected_list_item = -1; object_free_scenario_text(); } window_invalidate(w); window_loadsave_open(LOADSAVETYPE_LOAD | LOADSAVETYPE_TRACK, NULL); break; case WIDX_FILTER_STRING_BUTTON: //window_text_input_open(w, widgetIndex, 5275, 5276, 1170, (uint32)_filter_string, 40); window_start_textbox(w, widgetIndex, 1170, (uint32)_filter_string, 40); break; case WIDX_FILTER_CLEAR_BUTTON: memset(_filter_string, 0, sizeof(_filter_string)); w->scrolls->v_top = 0; window_invalidate(w); break; } }
/** * * rct2: 0x0066DDF2 */ static void window_save_prompt_mouseup() { short widgetIndex; rct_window *w; short prompt_mode; window_widget_get_registers(w, widgetIndex); prompt_mode = RCT2_GLOBAL(RCT2_ADDRESS_SAVE_PROMPT_MODE, uint16); if (prompt_mode == PM_QUIT) { switch (widgetIndex) { case WQIDX_OK: rct2_finish(); break; case WQIDX_CLOSE: case WQIDX_CANCEL: window_close(w); break; } return; } else { switch (widgetIndex) { case WIDX_SAVE: if (!save_game()) { // user pressed cancel window_close(w); return; } break; case WIDX_DONT_SAVE: break; case WIDX_CLOSE: case WIDX_CANCEL: window_close(w); return; } } if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0D) { game_load_or_quit_no_save_prompt(); return; } if (RCT2_GLOBAL(RCT2_ADDRESS_ON_TUTORIAL, uint8) != 0) { if (RCT2_GLOBAL(RCT2_ADDRESS_ON_TUTORIAL, uint8) != 1) { RCT2_CALLPROC_EBPSAFE(0x0066EE54); game_load_or_quit_no_save_prompt(); return; } else { tutorial_stop(); game_load_or_quit_no_save_prompt(); return; } } if (RCT2_GLOBAL(0x009DEA66, uint16) < 3840) { game_load_or_quit_no_save_prompt(); return; } }