mirror of https://github.com/OpenRCT2/OpenRCT2.git
refactor track save, move into own source
This commit is contained in:
parent
77e7313540
commit
1908743c71
|
@ -182,6 +182,7 @@
|
|||
<ClCompile Include="src\ride\track.c" />
|
||||
<ClCompile Include="src\ride\track_data.c" />
|
||||
<ClCompile Include="src\ride\track_design.c" />
|
||||
<ClCompile Include="src\ride\track_design_save.c" />
|
||||
<ClCompile Include="src\ride\track_list.c" />
|
||||
<ClCompile Include="src\ride\track_paint.c" />
|
||||
<ClCompile Include="src\ride\transport\chairlift.c" />
|
||||
|
|
|
@ -337,7 +337,7 @@ void object_list_load()
|
|||
ride_list_item ride_list;
|
||||
ride_list.entry_index = 0xFC;
|
||||
ride_list.type = 0xFC;
|
||||
track_load_list(ride_list);
|
||||
// track_load_list(ride_list);
|
||||
|
||||
object_list_examine();
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -111,26 +111,17 @@ extern rct_track_td6 *gActiveTrackDesign;
|
|||
extern money32 gTrackDesignCost;
|
||||
extern uint8 gTrackDesignPlaceFlags;
|
||||
|
||||
void track_load_list(ride_list_item item);
|
||||
int sub_67726A(const char *path);
|
||||
rct_track_design *track_get_info(int index, uint8** preview);
|
||||
// void track_load_list(ride_list_item item);
|
||||
// rct_track_design *track_get_info(int index, uint8** preview);
|
||||
rct_track_design *temp_track_get_info(char* path, uint8** preview);
|
||||
rct_track_td6* load_track_design(const char *path);
|
||||
int track_rename(const char *text);
|
||||
// int track_rename(const char *text);
|
||||
int track_delete();
|
||||
void track_mirror();
|
||||
void reset_track_list_cache();
|
||||
bool track_design_open(rct_track_td6 *td6, const utf8 *path);
|
||||
void draw_track_preview(rct_track_td6 *td6, uint8** preview);
|
||||
|
||||
int sub_6D01B3(rct_track_td6 *td6, uint8 bl, uint8 rideIndex, int x, int y, int z);
|
||||
int save_track_design(uint8 rideIndex);
|
||||
int install_track(char* source_path, char* dest_name);
|
||||
void window_track_list_format_name(utf8 *dst, const utf8 *src, int colour, bool quotes);
|
||||
|
||||
void track_save_reset_scenery();
|
||||
void track_save_select_nearby_scenery(int rideIndex);
|
||||
void track_save_toggle_map_element(int interactionType, int x, int y, rct_map_element *mapElement);
|
||||
|
||||
void track_design_index_create();
|
||||
size_t track_design_index_get_for_ride(track_design_file_ref **tdRefs, uint8 rideType, const char *entry);
|
||||
|
@ -139,4 +130,12 @@ utf8 *track_design_get_name_from_path(const utf8 *path);
|
|||
void game_command_place_track_design(int* eax, int* ebx, int* ecx, int* edx, int* esi, int* edi, int* ebp);
|
||||
void game_command_place_maze_design(int* eax, int* ebx, int* ecx, int* edx, int* esi, int* edi, int* ebp);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Track design saving
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
void track_design_save_reset_scenery();
|
||||
void track_design_save_select_nearby_scenery(int rideIndex);
|
||||
void track_design_save_toggle_map_element(int interactionType, int x, int y, rct_map_element *mapElement);
|
||||
bool track_design_save(uint8 rideIndex);
|
||||
|
||||
#endif
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1962,7 +1962,7 @@ static void window_editor_object_selection_manage_tracks()
|
|||
RCT2_GLOBAL(0xF44158, uint8) = ride_type;
|
||||
|
||||
ride_list_item item = { ride_type, entry_index };
|
||||
track_load_list(item);
|
||||
// track_load_list(item);
|
||||
window_track_list_open(item);
|
||||
}
|
||||
|
||||
|
|
|
@ -118,7 +118,7 @@ void window_install_track_open(const char* path)
|
|||
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_DESIGN_CACHE, void*) = mem;
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_DESIGN_SCENERY_TOGGLE, uint8) = 0;
|
||||
_currentTrackPieceDirection = 2;
|
||||
reset_track_list_cache();
|
||||
// reset_track_list_cache();
|
||||
|
||||
x = gScreenWidth / 2 - 201;
|
||||
y = max(28, gScreenHeight / 2 - 200);
|
||||
|
@ -170,13 +170,13 @@ static void window_install_track_select(rct_window *w, int index)
|
|||
trackDesignItem = trackDesignList + (index * 128);
|
||||
RCT2_GLOBAL(0x00F4403C, utf8*) = trackDesignItem;
|
||||
|
||||
window_track_list_format_name(
|
||||
(char*)0x009BC313,
|
||||
trackDesignItem,
|
||||
gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER ?
|
||||
0 :
|
||||
FORMAT_WHITE,
|
||||
1);
|
||||
// window_track_list_format_name(
|
||||
// (char*)0x009BC313,
|
||||
// trackDesignItem,
|
||||
// gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER ?
|
||||
// 0 :
|
||||
// FORMAT_WHITE,
|
||||
// 1);
|
||||
|
||||
char track_path[MAX_PATH] = { 0 };
|
||||
substitute_path(track_path, (char*)RCT2_ADDRESS_TRACKS_PATH, trackDesignItem);
|
||||
|
@ -186,16 +186,16 @@ static void window_install_track_select(rct_window *w, int index)
|
|||
return;
|
||||
}
|
||||
|
||||
if (!load_track_design(track_path)) {
|
||||
w->track_list.var_480 = 0xFFFF;
|
||||
window_invalidate(w);
|
||||
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);
|
||||
// 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();
|
||||
|
@ -230,7 +230,7 @@ static void window_install_track_mouseup(rct_window *w, int widgetIndex)
|
|||
break;
|
||||
case WIDX_TOGGLE_SCENERY:
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_DESIGN_SCENERY_TOGGLE, uint8) ^= 1;
|
||||
reset_track_list_cache();
|
||||
// reset_track_list_cache();
|
||||
window_invalidate(w);
|
||||
break;
|
||||
case WIDX_INSTALL:
|
||||
|
@ -244,7 +244,7 @@ static void window_install_track_mouseup(rct_window *w, int widgetIndex)
|
|||
}
|
||||
else{
|
||||
// Copy the track name into the string buffer.
|
||||
window_track_list_format_name(RCT2_ADDRESS(0x009BC677, char), track_dest_name, 0, 0);
|
||||
// window_track_list_format_name(RCT2_ADDRESS(0x009BC677, char), track_dest_name, 0, 0);
|
||||
window_text_input_open(w, WIDX_INSTALL, 3383, 3384, 3165, 0, 255);
|
||||
}
|
||||
break;
|
||||
|
@ -334,7 +334,7 @@ static void window_install_track_paint(rct_window *w, rct_drawpixelinfo *dpi)
|
|||
}
|
||||
|
||||
// Track design name
|
||||
window_track_list_format_name((char*)0x009BC677, (char*)0x009E3504, FORMAT_WINDOW_COLOUR_1, 1);
|
||||
// window_track_list_format_name((char*)0x009BC677, (char*)0x009E3504, FORMAT_WINDOW_COLOUR_1, 1);
|
||||
gfx_draw_string_centred_clipped(dpi, 3165, NULL, 0, x, y, 368);
|
||||
|
||||
// Information
|
||||
|
|
|
@ -842,7 +842,7 @@ static ride_list_item window_new_ride_scroll_get_ride_list_item_at(rct_window *w
|
|||
|
||||
static int get_num_track_designs(ride_list_item item)
|
||||
{
|
||||
track_load_list(item);
|
||||
// track_load_list(item);
|
||||
|
||||
char *trackDesignList = RCT2_ADDRESS(RCT2_ADDRESS_TRACK_LIST, char);
|
||||
int count = 0;
|
||||
|
@ -943,7 +943,7 @@ static void window_new_ride_select(rct_window *w)
|
|||
#endif
|
||||
|
||||
if (allowTrackDesigns && ride_type_has_flag(item.type, RIDE_TYPE_FLAG_HAS_TRACK)) {
|
||||
track_load_list(item);
|
||||
// track_load_list(item);
|
||||
|
||||
char *trackDesignList = RCT2_ADDRESS(RCT2_ADDRESS_TRACK_LIST, char);
|
||||
if (*trackDesignList != 0) {
|
||||
|
|
|
@ -4663,7 +4663,7 @@ static void setup_scenery_selection(rct_window* w){
|
|||
*/
|
||||
static void window_ride_measurements_design_reset()
|
||||
{
|
||||
track_save_reset_scenery();
|
||||
track_design_save_reset_scenery();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -4672,7 +4672,7 @@ static void window_ride_measurements_design_reset()
|
|||
*/
|
||||
static void window_ride_measurements_design_select_nearby_scenery()
|
||||
{
|
||||
track_save_select_nearby_scenery(RCT2_GLOBAL(0x00F64DE8, uint8));
|
||||
track_design_save_select_nearby_scenery(RCT2_GLOBAL(0x00F64DE8, uint8));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -4691,7 +4691,7 @@ static void window_ride_measurements_design_cancel()
|
|||
*/
|
||||
static void window_ride_measurements_design_save(rct_window *w)
|
||||
{
|
||||
if (save_track_design((uint8)w->number) == 0) return;
|
||||
if (track_design_save((uint8)w->number) == 0) return;
|
||||
|
||||
window_ride_measurements_design_cancel();
|
||||
}
|
||||
|
@ -4791,7 +4791,7 @@ static void window_ride_measurements_dropdown(rct_window *w, int widgetIndex, in
|
|||
dropdownIndex = gDropdownHighlightedIndex;
|
||||
|
||||
if (dropdownIndex == 0)
|
||||
save_track_design((uint8)w->number);
|
||||
track_design_save((uint8)w->number);
|
||||
else
|
||||
setup_scenery_selection(w);
|
||||
}
|
||||
|
@ -4823,7 +4823,7 @@ static void window_ride_measurements_tooldown(rct_window *w, int widgetIndex, in
|
|||
case VIEWPORT_INTERACTION_ITEM_LARGE_SCENERY:
|
||||
case VIEWPORT_INTERACTION_ITEM_WALL:
|
||||
case VIEWPORT_INTERACTION_ITEM_FOOTPATH:
|
||||
track_save_toggle_map_element(interactionType, mapX, mapY, mapElement);
|
||||
track_design_save_toggle_map_element(interactionType, mapX, mapY, mapElement);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -123,7 +123,7 @@ void window_track_list_open(ride_list_item item)
|
|||
return;
|
||||
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_DESIGN_CACHE, void*) = mem;
|
||||
reset_track_list_cache();
|
||||
// reset_track_list_cache();
|
||||
|
||||
if (gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER) {
|
||||
x = gScreenWidth / 2 - 300;
|
||||
|
@ -191,21 +191,21 @@ static void window_track_list_select(rct_window *w, int index)
|
|||
return;
|
||||
}
|
||||
|
||||
if (!load_track_design(tdRef->path)) {
|
||||
w->track_list.var_480 = 0xFFFF;
|
||||
window_invalidate(w);
|
||||
return;
|
||||
}
|
||||
// if (!load_track_design(tdRef->path)) {
|
||||
// w->track_list.var_480 = 0xFFFF;
|
||||
// window_invalidate(w);
|
||||
// return;
|
||||
// }
|
||||
|
||||
rct_track_design *trackDesign = track_get_info(index, NULL);
|
||||
if (trackDesign != NULL) {
|
||||
if (trackDesign->track_td6.track_flags & 4) {
|
||||
window_error_open(STR_THIS_DESIGN_WILL_BE_BUILT_WITH_AN_ALTERNATIVE_VEHICLE_TYPE, STR_NONE);
|
||||
}
|
||||
|
||||
window_close(w);
|
||||
window_track_place_open();
|
||||
}
|
||||
// rct_track_design *trackDesign = track_get_info(index, NULL);
|
||||
// if (trackDesign != NULL) {
|
||||
// if (trackDesign->track_td6.track_flags & 4) {
|
||||
// window_error_open(STR_THIS_DESIGN_WILL_BE_BUILT_WITH_AN_ALTERNATIVE_VEHICLE_TYPE, STR_NONE);
|
||||
// }
|
||||
//
|
||||
// window_close(w);
|
||||
// window_track_place_open();
|
||||
// }
|
||||
}
|
||||
|
||||
static int window_track_list_get_list_item_index_from_position(int x, int y)
|
||||
|
@ -261,7 +261,7 @@ static void window_track_list_mouseup(rct_window *w, int widgetIndex)
|
|||
break;
|
||||
case WIDX_TOGGLE_SCENERY:
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_DESIGN_SCENERY_TOGGLE, uint8) ^= 1;
|
||||
reset_track_list_cache();
|
||||
// reset_track_list_cache();
|
||||
window_invalidate(w);
|
||||
break;
|
||||
case WIDX_BACK:
|
||||
|
|
|
@ -217,12 +217,12 @@ static void window_track_manage_textinput(rct_window *w, int widgetIndex, char *
|
|||
if (widgetIndex != WIDX_RENAME || text == NULL)
|
||||
return;
|
||||
|
||||
if (track_rename(text)) {
|
||||
window_close_by_class(WC_TRACK_DELETE_PROMPT);
|
||||
window_close(w);
|
||||
} else {
|
||||
window_error_open(STR_CANT_RENAME_TRACK_DESIGN, gGameCommandErrorText);
|
||||
}
|
||||
// if (track_rename(text)) {
|
||||
// window_close_by_class(WC_TRACK_DELETE_PROMPT);
|
||||
// window_close(w);
|
||||
// } else {
|
||||
// window_error_open(STR_CANT_RENAME_TRACK_DESIGN, gGameCommandErrorText);
|
||||
// }
|
||||
}
|
||||
|
||||
static void window_track_manage_invalidate(rct_window *w)
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
#include "../common.h"
|
||||
#include "../object.h"
|
||||
#include "../world/map.h"
|
||||
|
||||
typedef struct {
|
||||
uint32 flags; // 0x06
|
||||
|
|
Loading…
Reference in New Issue