/** * * rct2: 0x006CFB82 */ static void window_track_list_select(rct_window *w, int index) { utf8 *trackDesignItem, *trackDesignList = RCT2_ADDRESS(RCT2_ADDRESS_TRACK_LIST, utf8); rct_track_design *trackDesign; w->track_list.var_480 = index; audio_play_sound_panned(SOUND_CLICK_1, w->x + (w->width / 2), 0, 0, 0); if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_TRACK_MANAGER) && index == 0) { window_close(w); ride_construct_new(_window_track_list_item); return; } if (RCT2_GLOBAL(0x00F44153, uint8) != 0) RCT2_GLOBAL(RCT2_ADDRESS_TRACK_DESIGN_SCENERY_TOGGLE, uint8) = 1; if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_TRACK_MANAGER)) index--; trackDesignItem = trackDesignList + (index * 128); RCT2_GLOBAL(0x00F4403C, utf8*) = trackDesignItem; window_track_list_format_name( (char*)0x009BC313, trackDesignItem, RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_TRACK_MANAGER ? 0 : FORMAT_WHITE, 1); char track_path[MAX_PATH] = { 0 }; substitute_path(track_path, (char*)RCT2_ADDRESS_TRACKS_PATH, trackDesignItem); if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_TRACK_MANAGER) { window_track_manage_open(); return; } if (!load_track_design(track_path)) { w->track_list.var_480 = 0xFFFF; window_invalidate(w); return; } trackDesign = track_get_info(index, NULL); if (trackDesign == NULL) return; if (trackDesign->track_td6.track_flags & 4) window_error_open(STR_THIS_DESIGN_WILL_BE_BUILT_WITH_AN_ALTERNATIVE_VEHICLE_TYPE, -1); window_close(w); window_track_place_open(); }
/** * * rct2: 0x006CFB82 */ static void window_track_list_select(rct_window *w, int index) { uint8 *trackDesignItem, *trackDesignList = (uint8*)0x00F441EC; rct_track_design *trackDesign; w->track_list.var_480 = index; sound_play_panned(SOUND_CLICK_1, w->x + (w->width / 2), 0, 0, 0); if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_TRACK_MANAGER & 8) && index == 0) { window_close(w); ride_construct_new(_window_track_list_item); return; } if (RCT2_GLOBAL(0x00F44153, uint8) != 0) RCT2_GLOBAL(0x00F44152, uint8) = 1; if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_TRACK_MANAGER & 8)) index--; trackDesignItem = trackDesignList + (index * 128);; RCT2_GLOBAL(0x00F4403C, uint8*) = trackDesignItem; window_track_list_format_name( (char*)0x009BC313, trackDesignItem, RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_TRACK_MANAGER & 8 ? 0 : FORMAT_WHITE ); subsitute_path((char*)0x0141EF68, (char*)RCT2_ADDRESS_TRACKS_PATH, trackDesignItem); if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_TRACK_MANAGER & 8) { window_track_manage_open(); return; } if (!RCT2_CALLPROC_X(0x0067726A, 0, 0, 0, 0, 0, 0, 0)) { w->track_list.var_480 = 0xFFFF; window_invalidate(w); return; } trackDesign = track_get_info(index, NULL); if (trackDesign->var_06 & 4) window_error_open(STR_THIS_DESIGN_WILL_BE_BUILT_WITH_AN_ALTERNATIVE_VEHICLE_TYPE, -1); window_close(w); window_track_place_open(); }
/** * * rct2: 0x006CFB82 */ static void window_track_list_select(rct_window *w, sint32 index) { w->track_list.var_480 = index; // Displays a message if the ride can't load, fix #4080 if (_loadedTrackDesign == NULL) { window_error_open(STR_CANT_BUILD_PARK_ENTRANCE_HERE, STR_TRACK_LOAD_FAILED_ERROR); return; } audio_play_sound(SOUND_CLICK_1, 0, w->x + (w->width / 2)); if (!(gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER)) { if (index == 0) { window_close(w); ride_construct_new(_window_track_list_item); return; } index--; } rct_track_td6 *td6 = _loadedTrackDesign; if (td6 != NULL && (td6->track_flags & TRACK_DESIGN_FLAG_SCENERY_UNAVAILABLE)) { gTrackDesignSceneryToggle = true; } track_design_file_ref *tdRef = &_trackDesigns[index]; if (gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER) { window_track_manage_open(tdRef); } else { if (_loadedTrackDesignIndex != TRACK_DESIGN_INDEX_UNLOADED && (_loadedTrackDesign->track_flags & TRACK_DESIGN_FLAG_VEHICLE_UNAVAILABLE)) { window_error_open(STR_THIS_DESIGN_WILL_BE_BUILT_WITH_AN_ALTERNATIVE_VEHICLE_TYPE, STR_NONE); } window_track_place_open(tdRef); } }