mirror of https://github.com/OpenRCT2/OpenRCT2.git
Added start of new function
This commit is contained in:
parent
21dd6f227d
commit
f3da25622a
|
@ -266,8 +266,45 @@ void sub_689174(sint16* x, sint16* y, sint16 *z, uint8 curr_rotation){
|
||||||
*z = height;
|
*z = height;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This function also needs edx, ebp
|
||||||
|
void sub_6E7FF3(rct_window* w, rct_viewport* viewport, int x, int y){
|
||||||
|
int zoom = 1 << viewport->zoom;
|
||||||
|
if (w >= RCT2_GLOBAL(RCT2_ADDRESS_NEW_WINDOW_PTR, rct_window*)){
|
||||||
|
if (viewport != w->viewport){
|
||||||
|
if ((viewport->x + viewport->width > w->x) &&
|
||||||
|
(w->x + w->width > viewport->x) &&
|
||||||
|
(viewport->y + viewport->height > w->y) &&
|
||||||
|
(w->y + w->height > viewport->y)){
|
||||||
|
if (viewport->x < w->x){
|
||||||
|
rct_viewport viewport_bkup;
|
||||||
|
memcpy(&viewport_bkup, viewport, sizeof(rct_viewport));
|
||||||
|
|
||||||
|
viewport->width = w->x - viewport->x;
|
||||||
|
viewport->view_width = (w->x - viewport->x) * zoom;
|
||||||
|
|
||||||
|
sub_6E7FF3(w, viewport, x, y);
|
||||||
|
|
||||||
|
viewport->x += viewport->width;
|
||||||
|
viewport->view_x += viewport->width*zoom;
|
||||||
|
viewport->view_width = (viewport_bkup.width - viewport->width) * zoom;
|
||||||
|
viewport->width = viewport_bkup.width - viewport->width;
|
||||||
|
|
||||||
|
sub_6E7FF3(w, viewport, x, y);
|
||||||
|
|
||||||
|
memcpy(viewport, &viewport_bkup, sizeof(rct_viewport));
|
||||||
|
return;
|
||||||
|
}//x6E80C4
|
||||||
|
}//0x6E824a
|
||||||
|
} // 0x6e824a
|
||||||
|
}//x6e8255
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void sub_6E7F34(rct_window* w, rct_viewport* viewport){
|
void sub_6E7F34(rct_window* w, rct_viewport* viewport){
|
||||||
//RCT2_CALLPROC_X(0x6E7F34, 0, 0, 0, 0, (int)viewport, (int)w, 0);
|
//RCT2_CALLPROC_X(0x6E7F34, 0, 0, 0, 0, (int)viewport, (int)w, 0);
|
||||||
|
rct_window* orignal_w = w;
|
||||||
|
int left = 0, right = 0, top = 0, bottom = 0;
|
||||||
|
|
||||||
for (; w < RCT2_GLOBAL(RCT2_ADDRESS_NEW_WINDOW_PTR, rct_window*); w++){
|
for (; w < RCT2_GLOBAL(RCT2_ADDRESS_NEW_WINDOW_PTR, rct_window*); w++){
|
||||||
if (!w->flags&WF_TRANSPARENT) continue;
|
if (!w->flags&WF_TRANSPARENT) continue;
|
||||||
if (w->viewport == viewport) continue;
|
if (w->viewport == viewport) continue;
|
||||||
|
@ -278,10 +315,10 @@ void sub_6E7F34(rct_window* w, rct_viewport* viewport){
|
||||||
if (viewport->y + viewport->height <= w->y)continue;
|
if (viewport->y + viewport->height <= w->y)continue;
|
||||||
if (w->y + w->height <= viewport->y) continue;
|
if (w->y + w->height <= viewport->y) continue;
|
||||||
|
|
||||||
int left = w->x;
|
left = w->x;
|
||||||
int right = w->x + w->width;
|
right = w->x + w->width;
|
||||||
int top = w->y;
|
top = w->y;
|
||||||
int bottom = w->y + w->height;
|
bottom = w->y + w->height;
|
||||||
|
|
||||||
if (left >= viewport->x)left = viewport->x;
|
if (left >= viewport->x)left = viewport->x;
|
||||||
if (right >= viewport->x + viewport->width) right = viewport->x + viewport->width;
|
if (right >= viewport->x + viewport->width) right = viewport->x + viewport->width;
|
||||||
|
@ -295,7 +332,8 @@ void sub_6E7F34(rct_window* w, rct_viewport* viewport){
|
||||||
gfx_redraw_screen_rect(left, top, right, bottom);
|
gfx_redraw_screen_rect(left, top, right, bottom);
|
||||||
}
|
}
|
||||||
|
|
||||||
RCT2_CALLPROC_X(0x6E7FF3, 0, 0, 0, 0, viewport, w, 0);
|
w = orignal_w;
|
||||||
|
RCT2_CALLPROC_X(0x6E7FF3, 0, 0, 0, right, viewport, w, bottom);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_6E7DE1(sint16 x, sint16 y, rct_window* w, rct_viewport* viewport){
|
void sub_6E7DE1(sint16 x, sint16 y, rct_window* w, rct_viewport* viewport){
|
||||||
|
|
Loading…
Reference in New Issue