1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-24 23:34:37 +01:00

fix track design mirror and ride name

This commit is contained in:
Ted John
2016-05-01 19:41:48 +01:00
parent 02a979cad5
commit a19e5feadf
6 changed files with 54 additions and 37 deletions

View File

@@ -97,7 +97,7 @@ ride_list_item _window_track_list_item;
static track_design_file_ref *_trackDesigns = NULL;
static size_t _trackDesignsCount = 0;
static uint16 _loadedTrackDesignIndex;
static rct_track_td6 _loadedTrackDesign;
static rct_track_td6 *_loadedTrackDesign;
static uint8 _loadedTrackDesignPreview[4][TRACK_PREVIEW_IMAGE_SIZE];
static void track_list_load_designs(ride_list_item item);
@@ -151,8 +151,8 @@ void window_track_list_open(ride_list_item item)
*/
static void window_track_list_close(rct_window *w)
{
// Dispose loaded track
SafeFree(_loadedTrackDesign.elements);
free(_loadedTrackDesign);
_loadedTrackDesign = NULL;
// Dispose track list
for (size_t i = 0; i < _trackDesignsCount; i++) {
@@ -202,7 +202,7 @@ static void window_track_list_select(rct_window *w, int index)
return;
}
if (_loadedTrackDesignIndex != -1 && _loadedTrackDesign.track_flags & 4) {
if (_loadedTrackDesignIndex != -1 && (_loadedTrackDesign->track_flags & 4)) {
window_error_open(STR_THIS_DESIGN_WILL_BE_BUILT_WITH_AN_ALTERNATIVE_VEHICLE_TYPE, STR_NONE);
}
@@ -384,7 +384,6 @@ static void window_track_list_paint(rct_window *w, rct_drawpixelinfo *dpi)
colour = ColourMapA[w->colours[0]].darkest;
gfx_fill_rect(dpi, x, y, x + 369, y + 216, colour);
rct_track_td6 *td6 = &_loadedTrackDesign;
if (_loadedTrackDesignIndex != trackIndex) {
uint8 *path = _trackDesigns[trackIndex].path;
if (track_list_load_design_for_preview(path)) {
@@ -395,11 +394,12 @@ static void window_track_list_paint(rct_window *w, rct_drawpixelinfo *dpi)
}
}
rct_track_td6 *td6 = _loadedTrackDesign;
if (td6 == NULL) {
return;
}
uint8 *image = _loadedTrackDesignPreview[_currentTrackPieceDirection];
// trackDesign = track_get_info(trackIndex, &image);
// if (trackDesign == NULL) {
// return;
// }
rct_g1_element *substituteElement = &g1Elements[0];
rct_g1_element tmpElement = *substituteElement;
@@ -617,15 +617,20 @@ static void track_list_load_designs(ride_list_item item)
static bool track_list_load_design_for_preview(utf8 *path)
{
// Dispose currently loaded track
SafeFree(_loadedTrackDesign.elements);
track_design_dispose(_loadedTrackDesign);
_loadedTrackDesign = NULL;
if (track_design_open(&_loadedTrackDesign, path)) {
_loadedTrackDesign = calloc(sizeof(rct_track_td6), 1);
if (track_design_open(_loadedTrackDesign, path)) {
// Load in a new preview image, calculate cost variable, calculate var_06
draw_track_preview(&_loadedTrackDesign, (uint8**)_loadedTrackDesignPreview);
draw_track_preview(_loadedTrackDesign, (uint8**)_loadedTrackDesignPreview);
_loadedTrackDesign.cost = gTrackDesignCost;
_loadedTrackDesign.track_flags = RCT2_GLOBAL(0x00F44151, uint8) & 7;
_loadedTrackDesign->cost = gTrackDesignCost;
_loadedTrackDesign->track_flags = RCT2_GLOBAL(0x00F44151, uint8) & 7;
return true;
} else {
track_design_dispose(_loadedTrackDesign);
_loadedTrackDesign = NULL;
}
return false;
}

View File

@@ -16,18 +16,19 @@
#include "../addresses.h"
#include "../audio/audio.h"
#include "../cheats.h"
#include "../game.h"
#include "../input.h"
#include "../interface/themes.h"
#include "../interface/viewport.h"
#include "../interface/widget.h"
#include "../interface/window.h"
#include "../localisation/localisation.h"
#include "../sprites.h"
#include "../ride/track.h"
#include "../ride/track_data.h"
#include "../ride/track_design.h"
#include "../interface/themes.h"
#include "../cheats.h"
#include "../sprites.h"
#include "../util/util.h"
#define TRACK_MINI_PREVIEW_WIDTH 168
#define TRACK_MINI_PREVIEW_HEIGHT 78
@@ -142,7 +143,8 @@ void window_track_place_open(utf8 *tdPath)
_trackDesign = malloc(sizeof(rct_track_td6));
if (!track_design_open(_trackDesign, tdPath)) {
SafeFree(_trackDesign);
track_design_dispose(_trackDesign);
_trackDesign = NULL;
return;
}
@@ -169,6 +171,9 @@ void window_track_place_open(utf8 *tdPath)
_window_track_place_last_x = 0xFFFF;
_currentTrackPieceDirection = (2 - get_current_rotation()) & 3;
window_track_place_draw_mini_preview(_trackDesign);
char *title = (char*)language_get_string(3155);
format_string(title, STR_TRACK_LIST_NAME_FORMAT, &_trackDesign->name);
}
/**
@@ -183,7 +188,8 @@ static void window_track_place_close(rct_window *w)
RCT2_GLOBAL(RCT2_ADDRESS_MAP_SELECTION_FLAGS, uint16) &= ~6;
hide_gridlines();
SafeFree(_window_track_place_mini_preview);
SafeFree(_trackDesign);
track_design_dispose(_trackDesign);
_trackDesign = NULL;
}
/**
@@ -204,7 +210,7 @@ static void window_track_place_mouseup(rct_window *w, int widgetIndex)
window_track_place_draw_mini_preview(_trackDesign);
break;
case WIDX_MIRROR:
track_design_mirror();
track_design_mirror(_trackDesign);
_currentTrackPieceDirection = (0 - _currentTrackPieceDirection) & 3;
window_invalidate(w);
_window_track_place_last_x = 0xFFFF;