Changed struct for last time

This commit is contained in:
Duncan Frost 2014-08-23 08:30:31 +01:00
parent 5795165ced
commit 810590e754
7 changed files with 45 additions and 48 deletions

View File

@ -395,11 +395,11 @@ rct_window *window_create(int x, int y, int width, int height, uint32 *event_han
w->disabled_widgets = 0;
w->pressed_widgets = 0;
w->var_020 = 0;
w->focus.coordinate.var_480 = 0;
w->focus.coordinate.viewport_target_x = 0;
w->focus.coordinate.viewport_target_y = 0;
w->focus.coordinate.viewport_target_z = 0;
w->focus.coordinate.viewport_target_rotation = 0;
w->viewport_focus_coordinates.var_480 = 0;
w->viewport_focus_coordinates.x = 0;
w->viewport_focus_coordinates.y = 0;
w->viewport_focus_coordinates.z = 0;
w->viewport_focus_coordinates.rotation = 0;
w->page = 0;
w->var_48C = 0;
w->frame_no = 0;
@ -896,18 +896,18 @@ void window_scroll_to_viewport(rct_window *w)
int x, y, z;
rct_window *mainWindow;
// In original checked to make sure x and y were not -1 as well.
if (w->viewport == NULL || w->focus.coordinate.viewport_target_y == -1)
if (w->viewport == NULL || w->viewport_focus_coordinates.y == -1)
return;
if (w->focus.sprite.type & VIEWPORT_FOCUS_TYPE_SPRITE) {
rct_sprite *sprite = &(g_sprite_list[w->focus.sprite.viewport_target_sprite_id]);
if (w->viewport_focus_sprite.type & VIEWPORT_FOCUS_TYPE_SPRITE) {
rct_sprite *sprite = &(g_sprite_list[w->viewport_focus_sprite.sprite_id]);
x = sprite->unknown.x;
y = sprite->unknown.y;
z = sprite->unknown.z;
} else {
x = w->focus.coordinate.viewport_target_x;
y = w->focus.coordinate.viewport_target_y & VIEWPORT_FOCUS_Y_MASK;
z = w->focus.coordinate.viewport_target_z;
x = w->viewport_focus_coordinates.x;
y = w->viewport_focus_coordinates.y & VIEWPORT_FOCUS_Y_MASK;
z = w->viewport_focus_coordinates.z;
}
mainWindow = window_get_main();

View File

@ -93,20 +93,24 @@ typedef struct {
sint16 v_thumb_bottom; // 0x10
} rct_scroll;
// Type is viewport_target_y & 0x8000 == 0
/**
* Viewport focus structure.
* size: 0xA
* Use sprite.type to work out type.
*/
typedef struct{
sint16 var_480;
sint16 viewport_target_x; //0x482
sint16 viewport_target_y; //0x484 & VIEWPORT_FOCUS_Y_MASK
sint16 viewport_target_z; //0x486
uint8 viewport_target_rotation;//0x488
sint16 x; //0x482
sint16 y; //0x484 & VIEWPORT_FOCUS_Y_MASK
sint16 z; //0x486
uint8 rotation;//0x488
uint8 pad_489;
} coordinate_focus;
// Type is viewport_target_sprite_id & 0x80000000 != 0
typedef struct{
sint16 var_480;
uint16 viewport_target_sprite_id; //0x482
uint16 sprite_id; //0x482
uint8 pad_484;
uint8 type; //0x485 & VIEWPORT_FOCUS_TYPE_MASK
uint32 pad_486;
@ -119,14 +123,6 @@ enum{
};
#define VIEWPORT_FOCUS_Y_MASK 0x3FFF;
/**
* Viewport focus structure.
* size: 0xA
*/
typedef union{
sprite_focus sprite;
coordinate_focus coordinate;
} viewport_focus;
typedef struct{
sint16 campaign_type;
@ -188,7 +184,8 @@ typedef struct rct_window {
sint16 pad_47C;
sint16 pad_47E;
union{
viewport_focus focus;
coordinate_focus viewport_focus_coordinates;
sprite_focus viewport_focus_sprite;
campaign_variables campaign;
new_ride_variables new_ride;
news_variables news;

View File

@ -319,7 +319,7 @@ static void window_news_scrollpaint()
// Item text
char sz[400];// = (char*)0x09B5F2C;
char* args[1];
args[0] = &sz;
args[0] = (char*)&sz;
sprintf(sz, "%c%c%s", newsItem->colour, FORMAT_SMALLFONT, newsItem->text);
gfx_draw_string_left_wrapped(dpi, args, 2, y + 10, 325, 1170, 14);

View File

@ -593,7 +593,7 @@ rct_window *window_park_open()
w->enabled_widgets = window_park_page_enabled_widgets[WINDOW_PARK_PAGE_ENTRANCE];
w->number = 0;
w->page = WINDOW_PARK_PAGE_ENTRANCE;
w->focus.coordinate.viewport_target_y = 0;
w->viewport_focus_coordinates.y = 0;
w->frame_no = 0;
w->list_information_type = -1;
w->var_48C = -1;
@ -619,8 +619,8 @@ void window_park_entrance_open()
window = window_bring_to_front_by_id(WC_PARK_INFORMATION, 0);
if (window == NULL) {
window = window_park_open();
window->focus.coordinate.viewport_target_y = -1;
window->focus.coordinate.viewport_target_x = -1;
window->viewport_focus_coordinates.y = -1;
window->viewport_focus_coordinates.x = -1;
}
window->page = WINDOW_PARK_PAGE_ENTRANCE;
@ -1021,11 +1021,11 @@ static void window_park_init_viewport(rct_window *w)
// Call invalidate event
RCT2_CALLPROC_X(w->event_handlers[WE_INVALIDATE], 0, 0, 0, 0, (int)w, 0, 0);
w->focus.coordinate.viewport_target_x = x;
w->focus.coordinate.viewport_target_y = y;
w->focus.sprite.type |= VIEWPORT_FOCUS_TYPE_COORDINATE;
w->focus.coordinate.viewport_target_z = z;
w->focus.coordinate.viewport_target_rotation = r;
w->viewport_focus_coordinates.x = x;
w->viewport_focus_coordinates.y = y;
w->viewport_focus_sprite.type |= VIEWPORT_FOCUS_TYPE_COORDINATE;
w->viewport_focus_coordinates.z = z;
w->viewport_focus_coordinates.rotation = r;
if (zr != 0xFFFF) {
// Create viewport
@ -1041,7 +1041,7 @@ static void window_park_init_viewport(rct_window *w)
x,
y,
z,
w->focus.sprite.type & VIEWPORT_FOCUS_TYPE_MASK,
w->viewport_focus_sprite.type & VIEWPORT_FOCUS_TYPE_MASK,
-1
);
w->flags |= (1 << 2);
@ -1069,8 +1069,8 @@ void window_park_rating_open()
window = window_bring_to_front_by_id(WC_PARK_INFORMATION, 0);
if (window == NULL) {
window = window_park_open();
window->focus.coordinate.viewport_target_x = -1;
window->focus.coordinate.viewport_target_y = -1;
window->viewport_focus_coordinates.x = -1;
window->viewport_focus_coordinates.y = -1;
}
if (RCT2_GLOBAL(0x009DE518, uint32) & (1 << 3))
@ -1203,8 +1203,8 @@ void window_park_guests_open()
window = window_bring_to_front_by_id(WC_PARK_INFORMATION, 0);
if (window == NULL) {
window = window_park_open();
window->focus.coordinate.viewport_target_x = -1;
window->focus.coordinate.viewport_target_y = -1;
window->viewport_focus_coordinates.x = -1;
window->viewport_focus_coordinates.y = -1;
}
if (RCT2_GLOBAL(0x009DE518, uint32) & (1 << 3))
@ -1609,8 +1609,8 @@ void window_park_objective_open()
window = window_bring_to_front_by_id(WC_PARK_INFORMATION, 0);
if (window == NULL) {
window = window_park_open();
window->focus.coordinate.viewport_target_x = -1;
window->focus.coordinate.viewport_target_y = -1;
window->viewport_focus_coordinates.x = -1;
window->viewport_focus_coordinates.y = -1;
}
if (RCT2_GLOBAL(0x009DE518, uint32) & (1 << 3))
@ -1772,8 +1772,8 @@ void window_park_awards_open()
window = window_bring_to_front_by_id(WC_PARK_INFORMATION, 0);
if (window == NULL) {
window = window_park_open();
window->focus.coordinate.viewport_target_x = -1;
window->focus.coordinate.viewport_target_y = -1;
window->viewport_focus_coordinates.x = -1;
window->viewport_focus_coordinates.y = -1;
}
if (RCT2_GLOBAL(0x009DE518, uint32) & (1 << 3))

View File

@ -204,7 +204,7 @@ void window_peep_open(rct_peep* peep){
window->enabled_widgets = window_peep_page_enabled_widgets[0];
window->number = peep->sprite_index;
window->page = 0;
window->focus.coordinate.viewport_target_y = 0;
window->viewport_focus_coordinates.y = 0;
window->frame_no = 0;
window->list_information_type = 0;
window->var_492 = 0;
@ -220,7 +220,7 @@ void window_peep_open(rct_peep* peep){
window->colours[0] = 1;
window->colours[1] = 15;
window->colours[2] = 15;
window->focus.coordinate.viewport_target_y = -1;
window->viewport_focus_coordinates.y = -1;
}
window->page = 0;

View File

@ -186,7 +186,7 @@ rct_window* sub_6BEF1B(rct_peep* peep)
w->enabled_widgets = RCT2_GLOBAL(0x9929B0, uint32);
w->number = peep->sprite_index;
w->page = 0;
w->focus.coordinate.viewport_target_y = 0;
w->viewport_focus_coordinates.y = 0;
w->frame_no = 0;
RCT2_GLOBAL((int*)w + 0x496, uint16) = 0; // missing, var_494 should perhaps be uint16?

View File

@ -128,7 +128,7 @@ void window_scenarioselect_open()
window->colours[0] = 1;
window->colours[1] = 26;
window->colours[2] = 26;
window->focus.coordinate.var_480 = -1;
window->viewport_focus_coordinates.var_480 = -1;
window->var_494 = 0;
window_scenarioselect_init_tabs();