mirror of https://github.com/OpenRCT2/OpenRCT2.git
Merge pull request #1482 from duncanspumpkin/sub_6847BA
Implemented set_vehicle_type_image_max_sizes
This commit is contained in:
commit
96c61dcba5
21
src/object.c
21
src/object.c
|
@ -623,27 +623,12 @@ int paint_ride_entry(int flags, int ebx, int ecx, int edx, rct_drawpixelinfo* dp
|
|||
// 0x6DEB0D
|
||||
|
||||
if (!(rideVehicleEntry->var_12 & 0x400)){
|
||||
int ecx = cur_vehicle_images_offset - rideVehicleEntry->base_image_id;
|
||||
int num_images = cur_vehicle_images_offset - rideVehicleEntry->base_image_id;
|
||||
if (rideVehicleEntry->var_12 & 0x2000){
|
||||
ecx *= 2;
|
||||
num_images *= 2;
|
||||
}
|
||||
|
||||
int bl, bh, eax = 0;
|
||||
{
|
||||
int ebx = rideVehicleEntry->base_image_id;
|
||||
int edx = 0, esi = 0, ebp = 0, edi = 0;
|
||||
RCT2_CALLFUNC_X(0x6847BA, &eax, &ebx, &ecx, &edx, &esi, &ebp, &edi);
|
||||
bl = ebx & 0xFF;
|
||||
bh = (ebx >> 8) & 0xFF;
|
||||
}
|
||||
|
||||
if (rideVehicleEntry->var_12 & 0x2000){
|
||||
bl += 16;
|
||||
}
|
||||
|
||||
rideVehicleEntry->var_0E = eax & 0xFF;
|
||||
rideVehicleEntry->var_0F = bl;
|
||||
rideVehicleEntry->var_10 = bh;
|
||||
set_vehicle_type_image_max_sizes(rideVehicleEntry, num_images);
|
||||
}
|
||||
|
||||
uint8 no_positions = *peep_loading_positions++;
|
||||
|
|
|
@ -4508,3 +4508,86 @@ void ride_all_has_any_track_elements(bool *rideIndexArray)
|
|||
rideIndexArray[it.element->properties.track.ride_index] = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* rct2: 0x006847BA */
|
||||
void set_vehicle_type_image_max_sizes(rct_ride_type_vehicle* vehicle_type, int num_images){
|
||||
char bitmap[200][200] = { 0 };
|
||||
|
||||
rct_drawpixelinfo dpi = {
|
||||
.bits = (char*)bitmap,
|
||||
.x = -100,
|
||||
.y = -100,
|
||||
.width = 200,
|
||||
.height = 200,
|
||||
.pitch = 0,
|
||||
.zoom_level = 0
|
||||
};
|
||||
|
||||
for (int i = 0; i < num_images; ++i){
|
||||
gfx_draw_sprite(&dpi, vehicle_type->base_image_id + i, 0, 0, 0);
|
||||
}
|
||||
int al = -1;
|
||||
for (int i = 99; i != 0; --i){
|
||||
for (int j = 0; j < 200; j++){
|
||||
if (bitmap[j][100 - i] != 0){
|
||||
al = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (al != -1)
|
||||
break;
|
||||
|
||||
for (int j = 0; j < 200; j++){
|
||||
if (bitmap[j][100 + i] != 0){
|
||||
al = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (al != -1)
|
||||
break;
|
||||
}
|
||||
|
||||
al++;
|
||||
int bl = -1;
|
||||
|
||||
for (int i = 99; i != 0; --i){
|
||||
for (int j = 0; j < 200; j++){
|
||||
if (bitmap[100 - i][j] != 0){
|
||||
bl = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (bl != -1)
|
||||
break;
|
||||
}
|
||||
bl++;
|
||||
|
||||
int bh = -1;
|
||||
|
||||
for (int i = 99; i != 0; --i){
|
||||
for (int j = 0; j < 200; j++){
|
||||
if (bitmap[100 + i][j] != 0){
|
||||
bh = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (bh != -1)
|
||||
break;
|
||||
}
|
||||
bh++;
|
||||
|
||||
// Moved from object paint
|
||||
|
||||
if (vehicle_type->var_12 & 0x2000){
|
||||
bl += 16;
|
||||
}
|
||||
|
||||
vehicle_type->var_0E = al;
|
||||
vehicle_type->var_0F = bl;
|
||||
vehicle_type->var_10 = bh;
|
||||
}
|
|
@ -826,6 +826,7 @@ void game_command_demolish_ride(int *eax, int *ebx, int *ecx, int *edx, int *esi
|
|||
void game_command_set_ride_appearance(int *eax, int *ebx, int *ecx, int *edx, int *esi, int *edi, int *ebp);
|
||||
void game_command_set_ride_price(int *eax, int *ebx, int *ecx, int *edx, int *esi, int *edi, int *ebp);
|
||||
void ride_clear_for_construction(int rideIndex);
|
||||
void set_vehicle_type_image_max_sizes(rct_ride_type_vehicle* vehicle_type, int num_images);
|
||||
|
||||
int get_var_10E_unk_1(rct_ride* ride);
|
||||
int get_var_10E_unk_2(rct_ride* ride);
|
||||
|
|
Loading…
Reference in New Issue