1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-17 03:53:07 +01:00

Viewport integrated into gfx_draw_sprite.

This commit is contained in:
Duncan Frost
2014-08-08 19:16:57 +01:00
parent d4a2cebc84
commit b98d4bb508
20 changed files with 135 additions and 132 deletions

View File

@@ -428,7 +428,7 @@ void update_rain_animation()
(rct_drawpixelinfo*)RCT2_ADDRESS_SCREEN_DPI,
RCT2_GLOBAL(RCT2_ADDRESS_PICKEDUP_PEEP_SPRITE, uint32),
RCT2_GLOBAL(RCT2_ADDRESS_PICKEDUP_PEEP_X, sint16),
RCT2_GLOBAL(RCT2_ADDRESS_PICKEDUP_PEEP_Y, sint16)
RCT2_GLOBAL(RCT2_ADDRESS_PICKEDUP_PEEP_Y, sint16), 0
);
}

View File

@@ -189,7 +189,7 @@ void gfx_load_character_widths(){
for (int i = 0; i < 0xE0; ++i){
memset(drawing_surface, 0, sizeof(drawing_surface));
gfx_draw_sprite(&dpi, i + 0x10D5, -1, 0);
gfx_draw_sprite(&dpi, i + 0x10D5, -1, 0, 0);
for (int x = 0; x < 8; ++x){
uint8 val = 0;
@@ -921,11 +921,14 @@ void gfx_draw_sprite_palette_set(rct_drawpixelinfo *dpi, int image_id, int x, in
* image_id (ebx)
* x (cx)
* y (dx)
* dpi (esi)
* (ebp)
*/
void gfx_draw_sprite(rct_drawpixelinfo *dpi, int image_id, int x, int y)
void gfx_draw_sprite(rct_drawpixelinfo *dpi, int image_id, int x, int y, int ebp)
{
int eax = 0, ebx = image_id, ecx = x, edx = y, esi = 0, edi = (int)dpi, ebp = 0;
//RCT2_CALLPROC_X(0x0067A28E, 0, image_id, x, y, 0, (int)dpi, ebp);
//return;
int eax = 0, ebx = image_id, ecx = x, edx = y, esi = 0, edi = (int)dpi;
int image_type = (image_id & 0xE0000000) >> 28;
int image_sub_type = (image_id & 0x1C000000) >> 26;
uint8* palette_pointer = NULL;
@@ -1048,39 +1051,40 @@ void gfx_draw_sprite_palette_set(rct_drawpixelinfo *dpi, int image_id, int x, in
int image_type = (image_id & 0xE0000000) >> 28;
rct_g1_element* g1_source = &(RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[image_element]);
if ( dpi->zoom_level && (g1_source->flags & (1<<4)) ){
rct_drawpixelinfo zoomed_dpi = {
.bits = dpi->bits,
.x = dpi->x >> 1,
.y = dpi->y >> 1,
.height = dpi->height>>1,
.width = dpi->width>>1,
.pitch = (dpi->width+dpi->pitch)-(dpi->width>>1),//In the actual code this is dpi->pitch but that doesn't seem correct.
.zoom_level = dpi->zoom_level - 1
};
gfx_draw_sprite_palette_set(&zoomed_dpi, (image_type << 28) | (image_element - g1_source->zoomed_offset), x >> 1, y >> 1, palette_pointer, unknown_pointer);
return;
}
if ( dpi->zoom_level && (g1_source->flags & (1<<5)) ){
// //Zooming code has been integrated into main code.
if (dpi->zoom_level >= 1){ //These have not been tested
//something to do with zooming
if (dpi->zoom_level == 1){
RCT2_CALLPROC_X(0x0067A28E, 0, image_id, x, y, 0, (int)dpi, 0);
return;
}
if (dpi->zoom_level == 2){
RCT2_CALLPROC_X(0x0067DADA, 0, (int)g1_source, x, y, 0, (int)dpi, 0);
return;
}
RCT2_CALLPROC_X(0x0067FAAE, 0, (int)g1_source, x, y, 0, (int)dpi, 0);
return;
}
//Zooming code has been integrated into main code.
//if (dpi->zoom_level >= 1){ //These have not been tested
// //something to do with zooming
// if (dpi->zoom_level == 1){
// RCT2_CALLPROC_X(0x0067A28E, 0, image_id, x, y, 0, (int)dpi, 0);
// return;
// }
// if (dpi->zoom_level == 2){
// RCT2_CALLPROC_X(0x0067DADA, 0, (int)g1_source, x, y, 0, (int)dpi, 0);
// return;
// }
// RCT2_CALLPROC_X(0x0067FAAE, 0, (int)g1_source, x, y, 0, (int)dpi, 0);
//if ( dpi->zoom_level && (g1_source->flags & (1<<4)) ){
// rct_drawpixelinfo zoomed_dpi = {
// .bits = dpi->bits,
// .x = dpi->x >> 1,
// .y = dpi->y >> 1,
// .height = dpi->height>>1,
// .width = dpi->width>>1,
// .pitch = (dpi->width+dpi->pitch)-(dpi->width>>1),//In the actual code this is dpi->pitch but that doesn't seem correct.
// .zoom_level = dpi->zoom_level - 1
// };
// gfx_draw_sprite_palette_set(&zoomed_dpi, (image_type << 28) | (image_element - g1_source->zoomed_offset), x >> 1, y >> 1, palette_pointer, unknown_pointer);
// return;
//}
//if ( dpi->zoom_level && (g1_source->flags & (1<<5)) ){
// return;
//}
//Its used super often so we will define it to a seperate variable.
int zoom_level = dpi->zoom_level;
//This will be the height of the drawn image
@@ -2219,7 +2223,7 @@ void gfx_draw_string(rct_drawpixelinfo *dpi, char *buffer, int colour, int x, in
eax = ebx & 0x7FFFF;
g1_element = &(RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[eax]);
gfx_draw_sprite(dpi, ebx, max_x, max_y);
gfx_draw_sprite(dpi, ebx, max_x, max_y, 0);
max_x = max_x + g1_element->width;
break;

View File

@@ -70,7 +70,7 @@ void gfx_draw_pixel(rct_drawpixelinfo *dpi, int x, int y, int colour);
void gfx_draw_line(rct_drawpixelinfo *dpi, int x1, int y1, int x2, int y2, int colour);
void gfx_fill_rect(rct_drawpixelinfo *dpi, int left, int top, int right, int bottom, int colour);
void gfx_fill_rect_inset(rct_drawpixelinfo* dpi, short left, short top, short right, short bottom, int colour, short _si);
void gfx_draw_sprite(rct_drawpixelinfo *dpi, int image_id, int x, int y);
void gfx_draw_sprite(rct_drawpixelinfo *dpi, int image_id, int x, int y, int ebp);
void gfx_draw_sprite_palette_set(rct_drawpixelinfo *dpi, int image_id, int x, int y, uint8* palette_pointer, uint8* unknown_pointer);
void gfx_draw_string(rct_drawpixelinfo *dpi, char *buffer, int colour, int x, int y);
void gfx_transpose_palette(int pal, unsigned char product);

View File

@@ -104,10 +104,10 @@ void intro_update()
129);
// Draw the logo
gfx_draw_sprite(screenDPI, SPR_INTRO_INFOGRAMES_00, (screenWidth / 2) - 320 + 69, _tick_counter + 69);
gfx_draw_sprite(screenDPI, SPR_INTRO_INFOGRAMES_10, (screenWidth / 2) - 320 + 319, _tick_counter + 69);
gfx_draw_sprite(screenDPI, SPR_INTRO_INFOGRAMES_01, (screenWidth / 2) - 320 + 69, _tick_counter + 319);
gfx_draw_sprite(screenDPI, SPR_INTRO_INFOGRAMES_11, (screenWidth / 2) - 320 + 319, _tick_counter + 319);
gfx_draw_sprite(screenDPI, SPR_INTRO_INFOGRAMES_00, (screenWidth / 2) - 320 + 69, _tick_counter + 69, 0);
gfx_draw_sprite(screenDPI, SPR_INTRO_INFOGRAMES_10, (screenWidth / 2) - 320 + 319, _tick_counter + 69, 0);
gfx_draw_sprite(screenDPI, SPR_INTRO_INFOGRAMES_01, (screenWidth / 2) - 320 + 69, _tick_counter + 319, 0);
gfx_draw_sprite(screenDPI, SPR_INTRO_INFOGRAMES_11, (screenWidth / 2) - 320 + 319, _tick_counter + 319, 0);
// Check if logo is off the screen .ish
if (_tick_counter > 520) {
@@ -145,8 +145,8 @@ void intro_update()
gfx_clear(screenDPI, 10);
// Draw Chris Sawyer logo
gfx_draw_sprite(screenDPI, SPR_INTRO_CHRIS_SAWYER_00, (screenWidth / 2) - 320 + 70, _tick_counter);
gfx_draw_sprite(screenDPI, SPR_INTRO_CHRIS_SAWYER_10, (screenWidth / 2) - 320 + 320, _tick_counter);
gfx_draw_sprite(screenDPI, SPR_INTRO_CHRIS_SAWYER_00, (screenWidth / 2) - 320 + 70, _tick_counter, 0);
gfx_draw_sprite(screenDPI, SPR_INTRO_CHRIS_SAWYER_10, (screenWidth / 2) - 320 + 320, _tick_counter, 0);
// Check if logo is at 259 pixels
if (_tick_counter == 259) {
@@ -171,12 +171,12 @@ void intro_update()
gfx_clear(screenDPI, 245);
// Draw RollerCoaster Tycoon 2 logo
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_00, (screenWidth / 2) - 320 + 0, 0);
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_10, (screenWidth / 2) - 320 + 220, 0);
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_20, (screenWidth / 2) - 320 + 440, 0);
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_01, (screenWidth / 2) - 320 + 0, 240);
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_11, (screenWidth / 2) - 320 + 220, 240);
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_21, (screenWidth / 2) - 320 + 440, 240);
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_00, (screenWidth / 2) - 320 + 0, 0, 0);
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_10, (screenWidth / 2) - 320 + 220, 0, 0);
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_20, (screenWidth / 2) - 320 + 440, 0, 0);
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_01, (screenWidth / 2) - 320 + 0, 240, 0);
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_11, (screenWidth / 2) - 320 + 220, 240, 0);
gfx_draw_sprite(screenDPI, SPR_INTRO_LOGO_21, (screenWidth / 2) - 320 + 440, 240, 0);
// Set palette thing
gfx_transpose_palette(23224, 0);

View File

@@ -47,7 +47,7 @@ struct paint_struct{
uint32 var_1C;
paint_struct* var_20;
paint_struct* var_24;
uint8 var_28;
uint8 sprite_type;
};
/**
@@ -285,8 +285,8 @@ void sub_0x68615B(int ebp){
}
void sub_688485(){
RCT2_CALLPROC_EBPSAFE(0x688485);
return;
//RCT2_CALLPROC_EBPSAFE(0x688485);
//return;
rct_drawpixelinfo* dpi = RCT2_GLOBAL(0x140E9A8, rct_drawpixelinfo*);
paint_struct* ps = RCT2_GLOBAL(0xEE7884, paint_struct*);
paint_struct* previous_ps = ps;
@@ -303,7 +303,7 @@ void sub_688485(){
//push ebp
int ecx = ps->var_14;
int edx = ps->var_16;
if (ps->var_28 == 2){
if (ps->sprite_type == 2){
if (dpi->zoom_level >= 1){
ecx &= 0xFFFE;
edx &= 0xFFFE;
@@ -314,24 +314,24 @@ void sub_688485(){
}
}
int ebx = ps->image_id;
if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_VIEWPORT_FLAGS, uint16) & 0x2){
if (ps->var_28 == 3){
if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_VIEWPORT_FLAGS, uint16) & VIEWPORT_FLAG_SEETHROUGH_RIDES){
if (ps->sprite_type == 3){
if (!(ebx & 0x40000000)){
ebx &= 0x7FFFF;
ebx |= 0x41880000;
}
}
}
if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_VIEWPORT_FLAGS, uint16) & 0x1){
if (ps->var_28 == 9){
if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_VIEWPORT_FLAGS, uint16) & VIEWPORT_FLAG_UNDERGROUND_INSIDE){
if (ps->sprite_type == 9){
if (!(ebx & 0x40000000)){
ebx &= 0x7FFFF;
ebx |= 0x41880000;
}
}
}
if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_VIEWPORT_FLAGS, uint16) & 0x4){
if (ps->var_28 == 10 || ps->var_28 == 12 || ps->var_28 == 9 || ps->var_28 == 5){
if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_VIEWPORT_FLAGS, uint16) & VIEWPORT_FLAG_SEETHROUGH_SCENERY){
if (ps->sprite_type == 10 || ps->sprite_type == 12 || ps->sprite_type == 9 || ps->sprite_type == 5){
if (!(ebx & 0x40000000)){
ebx &= 0x7FFFF;
ebx |= 0x41880000;
@@ -342,7 +342,7 @@ void sub_688485(){
if (!(ps->var_1A & 1)){
//push ebp??
uint32 _ebp = ps->var_04;
gfx_draw_sprite(dpi, ebx, ecx, edx);
gfx_draw_sprite(dpi, ebx, ecx, edx, _ebp);
//pop ebp??
if (ps->var_20 != 0){
ps = ps->var_20;
@@ -386,8 +386,8 @@ void sub_688485(){
ecx += ps->var_14;
edx += ps->var_16;
ebx = *(uint32*)esi;
if (RCT2_GLOBAL(0x141E9E4, uint16) & 0x2){
if (ps->var_28 == 3){
if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_VIEWPORT_FLAGS, uint16) & VIEWPORT_FLAG_SEETHROUGH_RIDES){
if (ps->sprite_type == 3){
if (ebx & 0x40000000){
ebx &= 0x7FFFF;
ebx |= 0x41880000;
@@ -395,8 +395,8 @@ void sub_688485(){
}
}
if (RCT2_GLOBAL(0x141E9E4, uint16) & 0x4){
if (ps->var_28 == 5){
if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_VIEWPORT_FLAGS, uint16) & VIEWPORT_FLAG_SEETHROUGH_SCENERY){
if (ps->sprite_type == 5){
if (ebx & 0x40000000){
ebx &= 0x7FFFF;
ebx |= 0x41880000;
@@ -406,7 +406,7 @@ void sub_688485(){
if (!(*((uint8*)(esi + 0xC)) & 1)){
int _ebp = ps->var_04;
gfx_draw_sprite(dpi, ebx, ecx, edx);
gfx_draw_sprite(dpi, ebx, ecx, edx, _ebp);
//call 67A28E draw_sprite
//pop ebp
//pop esi
@@ -419,8 +419,7 @@ void sub_688485(){
//pop ebp
//jmp 688491 i.e. start of previous loop
}
int a, b, c = ps->var_04;
RCT2_CALLFUNC_X(0x00681DE2, &a, &ebx, &ecx, &edx, &b,(int*) &dpi, &c);
RCT2_CALLPROC_X(0x00681DE2, 0, ebx, ecx, edx, 0, (int)dpi, *(uint32*)(esi + 0x4));
//call 681DE2
//pop ebp
//pop esi

View File

@@ -204,7 +204,7 @@ static void widget_frame_draw(rct_drawpixelinfo *dpi, rct_window *w, int widgetI
// Draw the resize sprite at the bottom right corner
l = w->x + widget->right - 18;
t = w->y + widget->bottom - 18;
gfx_draw_sprite(dpi, SPR_RESIZE | 0x20000000 | (colour << 19), l, t);
gfx_draw_sprite(dpi, SPR_RESIZE | 0x20000000 | (colour << 19), l, t, 0);
}
/**
@@ -241,7 +241,7 @@ static void widget_resize_draw(rct_drawpixelinfo *dpi, rct_window *w, int widget
// Draw the resize sprite at the bottom right corner
l = w->x + widget->right - 18;
t = w->y + widget->bottom - 18;
gfx_draw_sprite(dpi, SPR_RESIZE | 0x20000000 | (colour << 19), l, t);
gfx_draw_sprite(dpi, SPR_RESIZE | 0x20000000 | (colour << 19), l, t, 0);
}
/**
@@ -324,7 +324,7 @@ static void widget_tab_draw(rct_drawpixelinfo *dpi, rct_window *w, int widgetInd
image = widget->image + 2;
// Draw coloured image
gfx_draw_sprite(dpi, image | colour, l, t);
gfx_draw_sprite(dpi, image | colour, l, t, 0);
}
/**
@@ -631,13 +631,13 @@ static void widget_caption_draw(rct_drawpixelinfo *dpi, rct_window *w, int widge
//
if (w->var_4B8 != -1) {
gfx_draw_sprite(dpi, *((char*)(0x013CA742 + w->var_4B8)) << 19, l + 1, t + 1);
gfx_draw_sprite(dpi, *((char*)(0x013CA742 + w->var_4B8)) << 19, l + 1, t + 1, 0);
if (w->width > 638)
gfx_draw_sprite(dpi, *((char*)(0x013CA742 + w->var_4B8)) << 19, l + 1 + 638, t + 1);
gfx_draw_sprite(dpi, *((char*)(0x013CA742 + w->var_4B8)) << 19, l + 1 + 638, t + 1, 0);
if (w->var_4B9 != -1) {
gfx_draw_sprite(dpi, *((char*)(0x013CA742 + w->var_4B9)) << 19, l + 1, t + 1);
gfx_draw_sprite(dpi, *((char*)(0x013CA742 + w->var_4B9)) << 19, l + 1, t + 1, 0);
if (w->width > 638)
gfx_draw_sprite(dpi, *((char*)(0x013CA742 + w->var_4B9)) << 19, l + 1 + 638, t + 1);
gfx_draw_sprite(dpi, *((char*)(0x013CA742 + w->var_4B9)) << 19, l + 1 + 638, t + 1, 0);
}
//
@@ -942,7 +942,7 @@ static void widget_draw_image(rct_drawpixelinfo *dpi, rct_window *w, int widgetI
else
image |= colour << 19;
gfx_draw_sprite(dpi, image, l, t);
gfx_draw_sprite(dpi, image, l, t, 0);
}
}

View File

@@ -200,8 +200,8 @@ static void window_about_paint()
gfx_draw_string_centred(dpi, STR_CREDIT_SPARE_7, x, y, 0, (void*)0x009E2D28);
// Images
gfx_draw_sprite(dpi, SPR_CREDITS_CHRIS_SAWYER_SMALL, w->x + 92, w->y + 40);
gfx_draw_sprite(dpi, SPR_CREDITS_INFOGRAMES, w->x + 50, w->y + 247);
gfx_draw_sprite(dpi, SPR_CREDITS_CHRIS_SAWYER_SMALL, w->x + 92, w->y + 40, 0);
gfx_draw_sprite(dpi, SPR_CREDITS_INFOGRAMES, w->x + 50, w->y + 247, 0);
// Licence
gfx_draw_string_left(dpi, STR_LICENSED_TO_INFOGRAMES_INTERACTIVE_INC, 0, 0, w->x + 157, w->y + 257);

View File

@@ -508,7 +508,7 @@ static void window_cheats_draw_tab_images(rct_drawpixelinfo *dpi, rct_window *w)
sprite_idx = 5261;
if (w->page == WINDOW_CHEATS_PAGE_MONEY)
sprite_idx += (w->frame_no / 2) % 8;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_1].left, w->y + w->widgets[WIDX_TAB_1].top);
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_1].left, w->y + w->widgets[WIDX_TAB_1].top, 0);
}
// Guests tab
@@ -516,13 +516,13 @@ static void window_cheats_draw_tab_images(rct_drawpixelinfo *dpi, rct_window *w)
sprite_idx = 5568;
if (w->page == WINDOW_CHEATS_PAGE_GUESTS)
sprite_idx += (w->frame_no / 3) % 8;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_2].left, w->y + w->widgets[WIDX_TAB_2].top);
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_2].left, w->y + w->widgets[WIDX_TAB_2].top, 0);
}
// Misc tab
if (!(w->disabled_widgets & (1 << WIDX_TAB_3))) {
sprite_idx = SPR_TAB_QUESTION;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_3].left, w->y + w->widgets[WIDX_TAB_3].top);
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_3].left, w->y + w->widgets[WIDX_TAB_3].top, 0);
}
}

View File

@@ -330,7 +330,7 @@ static void window_dropdown_paint()
dpi,
image,
w->x + 2 + (cell_x * _dropdown_item_width),
w->y + 2 + (cell_y * _dropdown_item_height)
w->y + 2 + (cell_y * _dropdown_item_height), 0
);
} else {
// Text item

View File

@@ -687,7 +687,7 @@ static void window_footpath_paint()
// Draw construction image
x = w->x + (window_footpath_widgets[WIDX_CONSTRUCT].left + window_footpath_widgets[WIDX_CONSTRUCT].right) / 2;
y = w->y + window_footpath_widgets[WIDX_CONSTRUCT].bottom - 60;
gfx_draw_sprite(dpi, image, x, y);
gfx_draw_sprite(dpi, image, x, y, 0);
// Draw build this... label
x = w->x + (window_footpath_widgets[WIDX_CONSTRUCT].left + window_footpath_widgets[WIDX_CONSTRUCT].right) / 2;

View File

@@ -474,8 +474,8 @@ static void window_game_bottom_toolbar_draw_park_rating(rct_drawpixelinfo *dpi,
}
// Draw thumbs on the sides
gfx_draw_sprite(dpi, SPR_RATING_LOW, x - 14, y);
gfx_draw_sprite(dpi, SPR_RATING_HIGH, x + 92, y);
gfx_draw_sprite(dpi, SPR_RATING_LOW, x - 14, y, 0);
gfx_draw_sprite(dpi, SPR_RATING_HIGH, x + 92, y, 0);
}
static void window_game_bottom_toolbar_draw_right_panel(rct_drawpixelinfo *dpi, rct_window *w)
@@ -532,13 +532,13 @@ static void window_game_bottom_toolbar_draw_right_panel(rct_drawpixelinfo *dpi,
x += 30;
// Current weather
gfx_draw_sprite(dpi, climate_weather_data[RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_WEATHER, sint8)].sprite_id, x, y);
gfx_draw_sprite(dpi, climate_weather_data[RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_WEATHER, sint8)].sprite_id, x, y, 0);
// Next weather
if (climate_weather_data[RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_WEATHER, sint8)].sprite_id != climate_weather_data[gClimateNextWeather].sprite_id) {
if (RCT2_GLOBAL(RCT2_ADDRESS_CLIMATE_UPDATE_TIMER, sint16) < 960) {
gfx_draw_sprite(dpi, SPR_NEXT_WEATHER, x + 27, y + 5);
gfx_draw_sprite(dpi, climate_weather_data[gClimateNextWeather].sprite_id, x + 40, y);
gfx_draw_sprite(dpi, SPR_NEXT_WEATHER, x + 27, y + 5, 0);
gfx_draw_sprite(dpi, climate_weather_data[gClimateNextWeather].sprite_id, x + 40, y, 0);
}
}
}
@@ -582,7 +582,7 @@ static void window_game_bottom_toolbar_draw_news_item(rct_drawpixelinfo *dpi, rc
y = w->y + window_game_bottom_toolbar_widgets[WIDX_NEWS_SUBJECT].top;
switch (newsItem->type) {
case NEWS_ITEM_RIDE:
gfx_draw_sprite(dpi, SPR_RIDE, x, y);
gfx_draw_sprite(dpi, SPR_RIDE, x, y, 0);
break;
case NEWS_ITEM_PEEP_ON_RIDE:
case NEWS_ITEM_PEEP:
@@ -680,16 +680,16 @@ static void window_game_bottom_toolbar_draw_news_item(rct_drawpixelinfo *dpi, rc
break;
case NEWS_ITEM_MONEY:
gfx_draw_sprite(dpi, SPR_FINANCE, x, y);
gfx_draw_sprite(dpi, SPR_FINANCE, x, y, 0);
case NEWS_ITEM_RESEARCH:
gfx_draw_sprite(dpi, (newsItem->assoc < 0x10000 ? SPR_NEW_RIDE : SPR_SCENERY), x, y);
gfx_draw_sprite(dpi, (newsItem->assoc < 0x10000 ? SPR_NEW_RIDE : SPR_SCENERY), x, y, 0);
break;
case NEWS_ITEM_PEEPS:
gfx_draw_sprite(dpi, SPR_GUESTS, x, y);
gfx_draw_sprite(dpi, SPR_GUESTS, x, y, 0);
case NEWS_ITEM_AWARD:
gfx_draw_sprite(dpi, SPR_AWARD, x, y);
gfx_draw_sprite(dpi, SPR_AWARD, x, y, 0);
case NEWS_ITEM_GRAPH:
gfx_draw_sprite(dpi, SPR_GRAPH, x, y);
gfx_draw_sprite(dpi, SPR_GRAPH, x, y, 0);
break;
}
}

View File

@@ -558,5 +558,5 @@ static void window_game_top_toolbar_paint()
if (widget_is_pressed(w, WIDX_STAFF))
imgId++;
imgId |= (RCT2_GLOBAL(RCT2_ADDRESS_HANDYMAN_COLOUR, uint8) << 19) | 0xA0000000 | (RCT2_GLOBAL(RCT2_ADDRESS_MECHANIC_COLOUR, uint8) << 24);
gfx_draw_sprite(dpi, imgId, x, y);
gfx_draw_sprite(dpi, imgId, x, y, 0);
}

View File

@@ -608,7 +608,7 @@ static void window_guest_list_paint()
dpi,
i,
(window_guest_list_widgets[WIDX_TAB_1].left + window_guest_list_widgets[WIDX_TAB_1].right) / 2 + w->x,
window_guest_list_widgets[WIDX_TAB_1].bottom - 6 + w->y
window_guest_list_widgets[WIDX_TAB_1].bottom - 6 + w->y, 0
);
// Tab 2 image
@@ -617,7 +617,7 @@ static void window_guest_list_paint()
dpi,
5568 + i,
window_guest_list_widgets[WIDX_TAB_2].left + w->x,
window_guest_list_widgets[WIDX_TAB_2].top + w->y
window_guest_list_widgets[WIDX_TAB_2].top + w->y, 0
);
// Filter description
@@ -713,11 +713,11 @@ static void window_guest_list_scrollpaint()
switch (_window_guest_list_selected_view) {
case VIEW_ACTIONS:
// Guest face
gfx_draw_sprite(dpi, get_guest_face_sprite_small(peep), 118, y);
gfx_draw_sprite(dpi, get_guest_face_sprite_small(peep), 118, y, 0);
// Tracking icon
if (peep->flags & PEEP_FLAGS_TRACKING)
gfx_draw_sprite(dpi, 5129, 112, y);
gfx_draw_sprite(dpi, 5129, 112, y, 0);
// Action
@@ -775,7 +775,7 @@ static void window_guest_list_scrollpaint()
// Draw guest faces
numGuests = _window_guest_list_groups_num_guests[i];
for (j = 0; j < 56 && j < numGuests; j++)
gfx_draw_sprite(dpi, _window_guest_list_groups_guest_faces[i * 56 + j] + 5486, j * 8, y + 9);
gfx_draw_sprite(dpi, _window_guest_list_groups_guest_faces[i * 56 + j] + 5486, j * 8, y + 9, 0);
// Draw action
RCT2_GLOBAL(0x013CE952, uint32) = _window_guest_list_groups_argument_1[i];

View File

@@ -427,7 +427,7 @@ static void window_map_paint()
gfx_draw_sprite(dpi, image_id,
w->x + w->widgets[WIDX_PEOPLE_TAB].left,
w->y + w->widgets[WIDX_PEOPLE_TAB].top);
w->y + w->widgets[WIDX_PEOPLE_TAB].top, 0);
// ride/stall tab image (animated)
image_id = SPR_TAB_RIDE_0;
@@ -436,13 +436,13 @@ static void window_map_paint()
gfx_draw_sprite(dpi, image_id,
w->x + w->widgets[WIDX_RIDES_TAB].left,
w->y + w->widgets[WIDX_RIDES_TAB].top);
w->y + w->widgets[WIDX_RIDES_TAB].top, 0);
// people starting position (scenario editor only)
if (w->widgets[WIDX_PEOPLE_STARTING_POSITION].type != 0) {
gfx_draw_sprite(dpi, 0x0B6E0190A,
w->x + w->widgets[WIDX_PEOPLE_STARTING_POSITION].left + 12,
w->y + w->widgets[WIDX_PEOPLE_STARTING_POSITION].top + 18);
w->y + w->widgets[WIDX_PEOPLE_STARTING_POSITION].top + 18, 0);
}
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR)) {
@@ -507,7 +507,7 @@ static void window_map_scrollpaint()
g1_element->y_offset = 0xFFF8;
g1_element->flags = 0;
gfx_draw_sprite(dpi, 0, 0, 0);
gfx_draw_sprite(dpi, 0, 0, 0, 0);
*g1_element = pushed_g1_element;

View File

@@ -385,7 +385,7 @@ static void window_news_scrollpaint()
switch (newsItem->type) {
case NEWS_ITEM_RIDE:
gfx_draw_sprite(dpi, SPR_RIDE, x, yy);
gfx_draw_sprite(dpi, SPR_RIDE, x, yy, 0);
break;
case NEWS_ITEM_PEEP_ON_RIDE:
// TODO
@@ -394,19 +394,19 @@ static void window_news_scrollpaint()
// TODO
break;
case NEWS_ITEM_MONEY:
gfx_draw_sprite(dpi, SPR_FINANCE, x, yy);
gfx_draw_sprite(dpi, SPR_FINANCE, x, yy, 0);
break;
case NEWS_ITEM_RESEARCH:
gfx_draw_sprite(dpi, newsItem->assoc < 0x10000 ? SPR_NEW_RIDE : SPR_SCENERY, x, yy);
gfx_draw_sprite(dpi, newsItem->assoc < 0x10000 ? SPR_NEW_RIDE : SPR_SCENERY, x, yy, 0);
break;
case NEWS_ITEM_PEEPS:
gfx_draw_sprite(dpi, SPR_GUESTS, x, yy);
gfx_draw_sprite(dpi, SPR_GUESTS, x, yy, 0);
break;
case NEWS_ITEM_AWARD:
gfx_draw_sprite(dpi, SPR_AWARD, x, yy);
gfx_draw_sprite(dpi, SPR_AWARD, x, yy, 0);
break;
case NEWS_ITEM_GRAPH:
gfx_draw_sprite(dpi, SPR_GRAPH, x, yy);
gfx_draw_sprite(dpi, SPR_GRAPH, x, yy, 0);
break;
}
}
@@ -423,7 +423,7 @@ static void window_news_scrollpaint()
press = 0x20;
}
gfx_fill_rect_inset(dpi, x, yy, x + 23, yy + 23, w->colours[2], press);
gfx_draw_sprite(dpi, SPR_LOCATE, x, yy);
gfx_draw_sprite(dpi, SPR_LOCATE, x, yy, 0);
}
y += 42;

View File

@@ -1090,7 +1090,7 @@ static void window_park_entrance_paint()
if (w->viewport != NULL) {
window_draw_viewport(dpi, w);
if (w->viewport->flags & VIEWPORT_FLAG_SOUND_ON)
gfx_draw_sprite(dpi, SPR_HEARING_VIEWPORT, w->x + 2, w->y + 2);
gfx_draw_sprite(dpi, SPR_HEARING_VIEWPORT, w->x + 2, w->y + 2, 0);
}
// Draw park closed / open label
@@ -2229,7 +2229,7 @@ static void window_park_awards_paint()
if (award->time == 0)
continue;
gfx_draw_sprite(dpi, SPR_AWARD_MOST_UNTIDY + award->type, x, y);
gfx_draw_sprite(dpi, SPR_AWARD_MOST_UNTIDY + award->type, x, y, 0);
gfx_draw_string_left_wrapped(dpi, NULL, x + 34, y + 6, 180, STR_AWARD_MOST_UNTIDY + award->type, 0);
y += 32;
@@ -2322,16 +2322,16 @@ static void window_park_draw_tab_images(rct_drawpixelinfo *dpi, rct_window *w)
// Entrance tab
if (!(w->disabled_widgets & (1 << WIDX_TAB_1)))
gfx_draw_sprite(dpi, 5200, w->x + w->widgets[WIDX_TAB_1].left, w->y + w->widgets[WIDX_TAB_1].top);
gfx_draw_sprite(dpi, 5200, w->x + w->widgets[WIDX_TAB_1].left, w->y + w->widgets[WIDX_TAB_1].top, 0);
// Rating tab
if (!(w->disabled_widgets & (1 << WIDX_TAB_2))) {
sprite_idx = SPR_TAB_GRAPH_0;
if (w->page == WINDOW_PARK_PAGE_RATING)
sprite_idx += (w->frame_no / 8) % 8;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_2].left, w->y + w->widgets[WIDX_TAB_2].top);
gfx_draw_sprite(dpi, SPR_RATING_HIGH, w->x + w->widgets[WIDX_TAB_2].left + 7, w->y + w->widgets[WIDX_TAB_2].top + 1);
gfx_draw_sprite(dpi, SPR_RATING_LOW, w->x + w->widgets[WIDX_TAB_2].left + 16, w->y + w->widgets[WIDX_TAB_2].top + 12);
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_2].left, w->y + w->widgets[WIDX_TAB_2].top, 0);
gfx_draw_sprite(dpi, SPR_RATING_HIGH, w->x + w->widgets[WIDX_TAB_2].left + 7, w->y + w->widgets[WIDX_TAB_2].top + 1, 0);
gfx_draw_sprite(dpi, SPR_RATING_LOW, w->x + w->widgets[WIDX_TAB_2].left + 16, w->y + w->widgets[WIDX_TAB_2].top + 12, 0);
}
// Guests tab
@@ -2339,7 +2339,7 @@ static void window_park_draw_tab_images(rct_drawpixelinfo *dpi, rct_window *w)
sprite_idx = SPR_TAB_GRAPH_0;
if (w->page == WINDOW_PARK_PAGE_GUESTS)
sprite_idx += (w->frame_no / 8) % 8;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_3].left, w->y + w->widgets[WIDX_TAB_3].top);
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_3].left, w->y + w->widgets[WIDX_TAB_3].top, 0);
sprite_idx = *RCT2_GLOBAL(0x00982708, sint32*) + 1;
if (w->page == WINDOW_PARK_PAGE_GUESTS)
@@ -2350,7 +2350,7 @@ static void window_park_draw_tab_images(rct_drawpixelinfo *dpi, rct_window *w)
dpi,
sprite_idx,
w->x + (w->widgets[WIDX_TAB_3].left + w->widgets[WIDX_TAB_3].right) / 2,
w->y + w->widgets[WIDX_TAB_3].bottom - 9
w->y + w->widgets[WIDX_TAB_3].bottom - 9, 0
);
}
@@ -2359,7 +2359,7 @@ static void window_park_draw_tab_images(rct_drawpixelinfo *dpi, rct_window *w)
sprite_idx = SPR_TAB_ADMISSION_0;
if (w->page == WINDOW_PARK_PAGE_PRICE)
sprite_idx += (w->frame_no / 2) % 8;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_4].left, w->y + w->widgets[WIDX_TAB_4].top);
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_4].left, w->y + w->widgets[WIDX_TAB_4].top, 0);
}
// Statistics tab
@@ -2367,7 +2367,7 @@ static void window_park_draw_tab_images(rct_drawpixelinfo *dpi, rct_window *w)
sprite_idx = SPR_TAB_STATS_0;
if (w->page == WINDOW_PARK_PAGE_STATS)
sprite_idx += (w->frame_no / 4) % 7;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_5].left, w->y + w->widgets[WIDX_TAB_5].top);
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_5].left, w->y + w->widgets[WIDX_TAB_5].top, 0);
}
// Objective tab
@@ -2375,12 +2375,12 @@ static void window_park_draw_tab_images(rct_drawpixelinfo *dpi, rct_window *w)
sprite_idx = SPR_TAB_OBJECTIVE_0;
if (w->page == WINDOW_PARK_PAGE_OBJECTIVE)
sprite_idx += (w->frame_no / 4) % 16;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_6].left, w->y + w->widgets[WIDX_TAB_6].top);
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_6].left, w->y + w->widgets[WIDX_TAB_6].top, 0);
}
// Awards tab
if (!(w->disabled_widgets & (1 << WIDX_TAB_7)))
gfx_draw_sprite(dpi, SPR_TAB_AWARDS, w->x + w->widgets[WIDX_TAB_7].left, w->y + w->widgets[WIDX_TAB_7].top);
gfx_draw_sprite(dpi, SPR_TAB_AWARDS, w->x + w->widgets[WIDX_TAB_7].left, w->y + w->widgets[WIDX_TAB_7].top, 0);
}
static void window_park_graph_draw_months(rct_drawpixelinfo *dpi, uint8 *history, int baseX, int baseY)

View File

@@ -647,19 +647,19 @@ static void window_ride_list_draw_tab_images(rct_drawpixelinfo *dpi, rct_window
sprite_idx = SPR_TAB_RIDE_0;
if (w->page == PAGE_RIDES)
sprite_idx += w->frame_no / 4;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_1].left, w->y + w->widgets[WIDX_TAB_1].top);
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_1].left, w->y + w->widgets[WIDX_TAB_1].top, 0);
// Shops and stalls tab
sprite_idx = SPR_TAB_SHOPS_AND_STALLS_0;
if (w->page == PAGE_SHOPS_AND_STALLS)
sprite_idx += w->frame_no / 4;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_2].left, w->y + w->widgets[WIDX_TAB_2].top);
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_2].left, w->y + w->widgets[WIDX_TAB_2].top, 0);
// Information kiosks and facilities tab
sprite_idx = SPR_TAB_KIOSKS_AND_FACILITIES_0;
if (w->page == PAGE_KIOSKS_AND_FACILITIES)
sprite_idx += (w->frame_no / 4) % 8;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_3].left, w->y + w->widgets[WIDX_TAB_3].top);
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_3].left, w->y + w->widgets[WIDX_TAB_3].top, 0);
}

View File

@@ -613,7 +613,7 @@ void window_staff_paint() {
dpi,
i,
(window_staff_widgets[WIDX_STAFF_HANDYMEN_TAB].left + window_staff_widgets[WIDX_STAFF_HANDYMEN_TAB].right) / 2 + w->x,
window_staff_widgets[WIDX_STAFF_HANDYMEN_TAB].bottom - 6 + w->y
window_staff_widgets[WIDX_STAFF_HANDYMEN_TAB].bottom - 6 + w->y, 0
);
// Handymen tab image
@@ -625,7 +625,7 @@ void window_staff_paint() {
dpi,
i,
(window_staff_widgets[WIDX_STAFF_MECHANICS_TAB].left + window_staff_widgets[WIDX_STAFF_MECHANICS_TAB].right) / 2 + w->x,
window_staff_widgets[WIDX_STAFF_MECHANICS_TAB].bottom - 6 + w->y
window_staff_widgets[WIDX_STAFF_MECHANICS_TAB].bottom - 6 + w->y, 0
);
// Security tab image
@@ -637,7 +637,7 @@ void window_staff_paint() {
dpi,
i,
(window_staff_widgets[WIDX_STAFF_SECURITY_TAB].left + window_staff_widgets[WIDX_STAFF_SECURITY_TAB].right) / 2 + w->x,
window_staff_widgets[WIDX_STAFF_SECURITY_TAB].bottom - 6 + w->y
window_staff_widgets[WIDX_STAFF_SECURITY_TAB].bottom - 6 + w->y, 0
);
rct_drawpixelinfo* sprite_dpi = clip_drawpixelinfo(
@@ -658,7 +658,7 @@ void window_staff_paint() {
sprite_dpi,
i,
0x0F,
0x17
0x17, 0
);
rct2_free(sprite_dpi);
}
@@ -739,7 +739,7 @@ void window_staff_scrollpaint()
// True if a patrol path is set for the worker
if (RCT2_ADDRESS(0x013CA672, uint8)[peep->var_C5] & 2) {
gfx_draw_sprite(dpi, 0x13FD, 110, y - 1);
gfx_draw_sprite(dpi, 0x13FD, 110, y - 1, 0);
}
staffOrderIcon_x = 0x7D;
@@ -749,14 +749,14 @@ void window_staff_scrollpaint()
while (staffOrders != 0) {
if (staffOrders & 1) {
gfx_draw_sprite(dpi, staffOrderSprite, staffOrderIcon_x, y - 1);
gfx_draw_sprite(dpi, staffOrderSprite, staffOrderIcon_x, y - 1, 0);
}
staffOrders = staffOrders >> 1;
staffOrderIcon_x += 9;
staffOrderSprite++;
}
} else {
gfx_draw_sprite(dpi, peep->sprite_type - 4 + 0x13FE, staffOrderIcon_x, y - 1);
gfx_draw_sprite(dpi, peep->sprite_type - 4 + 0x13FE, staffOrderIcon_x, y - 1, 0);
}
}

View File

@@ -112,7 +112,7 @@ static void window_title_logo_paint()
#endif
gfx_draw_sprite(dpi, SPR_MENU_LOGO, w->x, w->y);
gfx_draw_sprite(dpi, SPR_MENU_LOGO, w->x, w->y, 0);
x = 0;
y = 105;

View File

@@ -386,7 +386,7 @@ static void window_scenarioselect_paint()
// Draw SixFlags image
if (scenario->flags & SCENARIO_FLAGS_SIXFLAGS)
gfx_draw_sprite(dpi, SPR_SIX_FLAGS, w->x + w->width - 55, w->y + w->height - 75);
gfx_draw_sprite(dpi, SPR_SIX_FLAGS, w->x + w->width - 55, w->y + w->height - 75, 0);
// Scenario name
x = w->x + window_scenarioselect_widgets[WIDX_SCENARIOLIST].right + 4;
@@ -466,7 +466,7 @@ static void window_scenarioselect_scrollpaint()
// Check if scenario is completed
if (scenario->flags & SCENARIO_FLAGS_COMPLETED) {
// Draw completion tick
gfx_draw_sprite(dpi, 0x5A9F, 395, y + 1);
gfx_draw_sprite(dpi, 0x5A9F, 395, y + 1, 0);
// Draw completion score
strcpy((char*)0x009BC677, scenario->completed_by);