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:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user