refactor track save, move into own source

This commit is contained in:
Ted John 2016-04-28 22:57:04 +01:00
parent 77e7313540
commit 1908743c71
12 changed files with 1720 additions and 2017 deletions

View File

@ -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" />

View File

@ -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

View File

@ -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

1224
src/ride/track_design_save.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -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);
}

View File

@ -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

View File

@ -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) {

View File

@ -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;
}
}

View File

@ -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:

View File

@ -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)

View File

@ -19,6 +19,7 @@
#include "../common.h"
#include "../object.h"
#include "../world/map.h"
typedef struct {
uint32 flags; // 0x06