Merge branch 'c_based_mouse_down' of https://github.com/duncanspumpkin/OpenRCT2 into duncanspumpkin-c_based_mouse_down

This commit is contained in:
IntelOrca 2014-05-28 22:58:16 +01:00
commit d1c0ab28f2
13 changed files with 58 additions and 233 deletions

View File

@ -654,6 +654,36 @@ static void input_mouseover_widget_flatbutton_invalidate()
widget_invalidate(RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WINDOWCLASS, rct_windowclass), RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WINDOWNUMBER, rct_windownumber), RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WIDGETINDEX, rct_windownumber));
}
static void RCT2_CALLPROC_WE_MOUSE_DOWN(int address, int widgetIndex, rct_window*w, rct_widget* widget )
{
#ifdef _MSC_VER
__asm {
push address
push widget
push w
push widgetIndex
mov edi, widget
mov edx, widgetIndex
mov esi, w
call[esp + 12]
add esp, 16
}
#else
__asm__("\
push %[address]\n\
mov edx, widgetIndex \n\
mov edi, widget
mov eax, %[w] \n\
push edx \n\
push eax \n\
push edi \n\
mov esi, %[w] \n\
call [esp+12] \n\
add esp, 16 \n\
" :[address] "+m" (address), [w] "+m" (w) : : "eax", "esi");
#endif
}
/**
*
* rct2: 0x006E95F9
@ -803,7 +833,7 @@ static void input_leftmousedown(int x, int y, rct_window *w, int widgetIndex)
RCT2_GLOBAL(0x009DE528, uint16) = 1;
widget_invalidate(windowClass, windowNumber, widgetIndex);
RCT2_CALLPROC_X(w->event_handlers[WE_MOUSE_DOWN], 0, 0, 0, widgetIndex, (int)w, (int)widget, 0);
RCT2_CALLPROC_WE_MOUSE_DOWN(w->event_handlers[WE_MOUSE_DOWN], widgetIndex, w, widget);
break;
}
}

View File

@ -31,7 +31,7 @@ typedef struct {
short width; // 0x08
short height; // 0x0A
short pitch; // 0x0C note: this is actually (pitch - width)
char pad_0E; // 0x0E
uint8 zoom_level; // 0x0E
char var_0F; // 0x0F
} rct_drawpixelinfo;

View File

@ -55,7 +55,7 @@ rct_widget window_banner_widgets[] = {
static void window_banner_emptysub() { }
static void window_banner_mouseup();
static void window_banner_mousedown();
static void window_banner_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_banner_dropdown();
static void window_banner_textinput();
static void window_banner_invalidate();
@ -182,12 +182,12 @@ static void window_banner_mouseup()
}
}
static void window_banner_mousedown()
static void window_banner_mousedown(int widgetIndex, rct_window*w, rct_widget* widget)
{
short widgetIndex;
//short widgetIndex;
#ifdef _MSC_VER
__asm mov widgetIndex, dx
//__asm mov widgetIndex, dx
#else
__asm__ ( "mov %[widgetIndex], dx " : [widgetIndex] "+m" (widgetIndex) );
#endif

View File

@ -111,7 +111,7 @@ static rct_widget window_footpath_widgets[] = {
static void window_footpath_emptysub() { }
static void window_footpath_close();
static void window_footpath_mouseup();
static void window_footpath_mousedown();
static void window_footpath_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_footpath_dropdown();
static void window_footpath_update(rct_window *w);
static void window_footpath_toolupdate();
@ -307,31 +307,8 @@ static void window_footpath_mouseup()
*
* rct2: 0x006A7EC5
*/
static void window_footpath_mousedown()
static void window_footpath_mousedown(int widgetIndex, rct_window*w, rct_widget* widget)
{
short widgetIndex;
rct_window *w;
rct_widget *widget;
#ifdef _MSC_VER
__asm mov widgetIndex, dx
#else
__asm__ ( "mov %[widgetIndex], dx " : [widgetIndex] "+m" (widgetIndex) );
#endif
#ifdef _MSC_VER
__asm mov w, esi
#else
__asm__ ( "mov %[w], esi " : [w] "+m" (w) );
#endif
#ifdef _MSC_VER
__asm mov widget, edi
#else
__asm__ ( "mov %[widget], edi " : [widget] "+m" (widget) );
#endif
switch (widgetIndex) {
case WIDX_FOOTPATH_TYPE:
window_footpath_show_footpath_types_dialog(w, widget, 0);

View File

@ -78,7 +78,7 @@ static rct_widget window_game_top_toolbar_widgets[] = {
static void window_game_top_toolbar_emptysub() { }
static void window_game_top_toolbar_mouseup();
static void window_game_top_toolbar_mousedown();
static void window_game_top_toolbar_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_game_top_toolbar_dropdown();
static void window_game_top_toolbar_invalidate();
static void window_game_top_toolbar_paint();
@ -259,32 +259,10 @@ static void window_game_top_toolbar_mouseup()
*
* rct2: 0x0066CA3B
*/
static void window_game_top_toolbar_mousedown()
static void window_game_top_toolbar_mousedown(int widgetIndex, rct_window*w, rct_widget* widget)
{
short widgetIndex;
rct_window *w;
rct_widget *widget;
rct_viewport *mainViewport;
#ifdef _MSC_VER
__asm mov widgetIndex, dx
#else
__asm__ ( "mov %[widgetIndex], dx " : [widgetIndex] "+m" (widgetIndex) );
#endif
#ifdef _MSC_VER
__asm mov w, esi
#else
__asm__ ( "mov %[w], esi " : [w] "+m" (w) );
#endif
#ifdef _MSC_VER
__asm mov widget, edi
#else
__asm__ ( "mov %[widget], edi " : [widget] "+m" (widget) );
#endif
if (widgetIndex == WIDX_FILE_MENU) {
gDropdownItemsFormat[0] = 882;
gDropdownItemsFormat[1] = 883;

View File

@ -73,7 +73,7 @@ static rct_widget window_guest_list_widgets[] = {
static void window_guest_list_emptysub() { }
static void window_guest_list_mouseup();
static void window_guest_list_resize();
static void window_guest_list_mousedown();
static void window_guest_list_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_guest_list_dropdown();
static void window_guest_list_update(rct_window *w);
static void window_guest_list_scrollgetsize();
@ -241,32 +241,9 @@ static void window_guest_list_resize()
*
* rct2: 0x00699AC4
*/
static void window_guest_list_mousedown()
static void window_guest_list_mousedown(int widgetIndex, rct_window*w, rct_widget* widget)
{
int i;
short widgetIndex;
rct_window *w;
rct_widget *widget;
#ifdef _MSC_VER
__asm mov widgetIndex, dx
#else
__asm__ ( "mov %[widgetIndex], dx " : [widgetIndex] "+m" (widgetIndex) );
#endif
#ifdef _MSC_VER
__asm mov w, esi
#else
__asm__ ( "mov %[w], esi " : [w] "+m" (w) );
#endif
#ifdef _MSC_VER
__asm mov widget, edi
#else
__asm__ ( "mov %[widget], edi " : [widget] "+m" (widget) );
#endif
switch (widgetIndex) {
case WIDX_TAB_1:
case WIDX_TAB_2:

View File

@ -52,7 +52,7 @@ static rct_widget window_land_widgets[] = {
static void window_land_emptysub() { }
static void window_land_close();
static void window_land_mouseup();
static void window_land_mousedown();
static void window_land_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_land_dropdown();
static void window_land_update(rct_window *w);
static void window_land_invalidate();
@ -217,31 +217,9 @@ static void window_land_mouseup()
*
* rct2: 0x0066407B
*/
static void window_land_mousedown()
static void window_land_mousedown(int widgetIndex, rct_window*w, rct_widget* widget)
{
int i;
short widgetIndex;
rct_window *w;
rct_widget *widget;
#ifdef _MSC_VER
__asm mov widgetIndex, dx
#else
__asm__ ( "mov %[widgetIndex], dx " : [widgetIndex] "+m" (widgetIndex) );
#endif
#ifdef _MSC_VER
__asm mov w, esi
#else
__asm__ ( "mov %[w], esi " : [w] "+m" (w) );
#endif
#ifdef _MSC_VER
__asm mov widget, edi
#else
__asm__ ( "mov %[widget], edi " : [widget] "+m" (widget) );
#endif
switch (widgetIndex) {
case WIDX_FLOOR:

View File

@ -77,7 +77,7 @@ static rct_widget window_map_widgets[] = {
static void window_map_emptysub() { }
static void window_map_close();
static void window_map_mouseup();
static void window_map_mousedown();
static void window_map_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_map_update(rct_window *w);
static void window_map_scrollgetsize();
static void window_map_scrollmousedown();
@ -228,7 +228,7 @@ static void window_map_mouseup()
*
* rct2: 0x0068D040
*/
static void window_map_mousedown()
static void window_map_mousedown(int widgetIndex, rct_window*w, rct_widget* widget)
{
RCT2_CALLPROC_EBPSAFE(0x0068D040);
}

View File

@ -105,7 +105,7 @@ static rct_widget window_options_widgets[] = {
static void window_options_emptysub() { }
static void window_options_mouseup();
static void window_options_mousedown();
static void window_options_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_options_dropdown();
static void window_options_update(rct_window *w);
static void window_options_paint();
@ -290,25 +290,9 @@ static void window_options_mouseup()
*
* rct2: 0x006BB01B
*/
static void window_options_mousedown()
static void window_options_mousedown(int widgetIndex, rct_window*w, rct_widget* widget)
{
int num_items, i;
short widgetIndex;
rct_window *w;
rct_widget *widget;
#ifdef _MSC_VER
__asm mov widgetIndex, dx
#else
__asm__ ( "mov %[widgetIndex], dx " : [widgetIndex] "+m" (widgetIndex) );
#endif
#ifdef _MSC_VER
__asm mov w, esi
#else
__asm__ ( "mov %[w], esi " : [w] "+m" (w) );
#endif
widget = &w->widgets[widgetIndex - 1];

View File

@ -218,7 +218,7 @@ static void window_park_emptysub() { }
static void window_park_entrance_close();
static void window_park_entrance_mouseup();
static void window_park_entrance_resize();
static void window_park_entrance_mousedown();
static void window_park_entrance_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_park_entrance_dropdown();
static void window_park_entrance_update(rct_window *w);
static void window_park_entrance_toolupdate();
@ -243,7 +243,7 @@ static void window_park_guests_paint();
static void window_park_price_mouseup();
static void window_park_price_resize();
static void window_park_price_mousedown();
static void window_park_price_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_park_price_update(rct_window *w);
static void window_park_price_invalidate();
static void window_park_price_paint();
@ -731,31 +731,8 @@ static void window_park_entrance_resize()
*
* rct2: 0x006681BF
*/
static void window_park_entrance_mousedown()
static void window_park_entrance_mousedown(int widgetIndex, rct_window*w, rct_widget* widget)
{
short widgetIndex;
rct_window *w;
rct_widget *widget;
#ifdef _MSC_VER
__asm mov widgetIndex, dx
#else
__asm__ ( "mov %[widgetIndex], dx " : [widgetIndex] "+m" (widgetIndex) );
#endif
#ifdef _MSC_VER
__asm mov w, esi
#else
__asm__ ( "mov %[w], esi " : [w] "+m" (w) );
#endif
#ifdef _MSC_VER
__asm mov widget, edi
#else
__asm__ ( "mov %[widget], edi " : [widget] "+m" (widget) );
#endif
if (widgetIndex == WIDX_OPEN_OR_CLOSE) {
gDropdownItemsFormat[0] = 1142;
gDropdownItemsFormat[1] = 1142;
@ -1617,24 +1594,9 @@ static void window_park_price_resize()
*
* rct2: 0x0066902C
*/
static void window_park_price_mousedown()
static void window_park_price_mousedown(int widgetIndex, rct_window*w, rct_widget* widget)
{
int newFee;
short widgetIndex;
rct_window *w;
#ifdef _MSC_VER
__asm mov widgetIndex, dx
#else
__asm__ ( "mov %[widgetIndex], dx " : [widgetIndex] "+m" (widgetIndex) );
#endif
#ifdef _MSC_VER
__asm mov w, esi
#else
__asm__ ( "mov %[w], esi " : [w] "+m" (w) );
#endif
switch (widgetIndex) {
case WIDX_CLOSE:

View File

@ -68,7 +68,7 @@ static rct_widget window_ride_list_widgets[] = {
static void window_ride_list_emptysub() { }
static void window_ride_list_mouseup();
static void window_ride_list_resize();
static void window_ride_list_mousedown();
static void window_ride_list_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_ride_list_dropdown();
static void window_ride_list_update(rct_window *w);
static void window_ride_list_scrollgetsize();
@ -248,31 +248,9 @@ static void window_ride_list_resize()
*
* rct2: 0x006B3532
*/
static void window_ride_list_mousedown()
static void window_ride_list_mousedown(int widgetIndex, rct_window*w, rct_widget* widget)
{
int numItems, i;
short widgetIndex;
rct_window *w;
rct_widget *widget;
#ifdef _MSC_VER
__asm mov widgetIndex, dx
#else
__asm__ ( "mov %[widgetIndex], dx " : [widgetIndex] "+m" (widgetIndex) );
#endif
#ifdef _MSC_VER
__asm mov w, esi
#else
__asm__ ( "mov %[w], esi " : [w] "+m" (w) );
#endif
#ifdef _MSC_VER
__asm mov widget, edi
#else
__asm__ ( "mov %[widget], edi " : [widget] "+m" (widget) );
#endif
if (widgetIndex == WIDX_OPEN_CLOSE_ALL) {
gDropdownItemsFormat[0] = STR_CLOSE_ALL;

View File

@ -45,7 +45,7 @@ static rct_widget window_title_menu_widgets[] = {
static void window_title_menu_emptysub() { }
static void window_title_menu_mouseup();
static void window_title_menu_mousedown();
static void window_title_menu_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_title_menu_dropdown();
static void window_title_menu_unknown17();
static void window_title_menu_paint();
@ -122,31 +122,8 @@ static void window_title_menu_mouseup()
}
}
static void window_title_menu_mousedown()
static void window_title_menu_mousedown(int widgetIndex, rct_window*w, rct_widget* widget)
{
short widgetIndex;
rct_window *w;
rct_widget *widget;
#ifdef _MSC_VER
__asm mov widgetIndex, dx
#else
__asm__ ( "mov %[widgetIndex], dx " : [widgetIndex] "+m" (widgetIndex) );
#endif
#ifdef _MSC_VER
__asm mov w, esi
#else
__asm__ ( "mov %[w], esi " : [w] "+m" (w) );
#endif
#ifdef _MSC_VER
__asm mov widget, edi
#else
__asm__ ( "mov %[widget], edi " : [widget] "+m" (widget) );
#endif
if (widgetIndex == WIDX_SHOW_TUTORIAL) {
gDropdownItemsFormat[0] = STR_TUTORIAL_BEGINNERS;
gDropdownItemsFormat[1] = STR_TUTORIAL_CUSTOM_RIDES;

View File

@ -59,7 +59,7 @@ static void window_scenarioselect_init_tabs();
static void window_scenarioselect_emptysub() { }
static void window_scenarioselect_mouseup();
static void window_scenarioselect_mousedown();
static void window_scenarioselect_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_scenarioselect_scrollgetsize();
static void window_scenarioselect_scrollmousedown();
static void window_scenarioselect_scrollmouseover();
@ -190,24 +190,8 @@ static void window_scenarioselect_mouseup()
window_close(w);
}
static void window_scenarioselect_mousedown()
static void window_scenarioselect_mousedown(int widgetIndex, rct_window*w, rct_widget* widget)
{
short widgetIndex;
rct_window *w;
#ifdef _MSC_VER
__asm mov widgetIndex, dx
#else
__asm__ ( "mov %[widgetIndex], dx " : [widgetIndex] "+m" (widgetIndex) );
#endif
#ifdef _MSC_VER
__asm mov w, esi
#else
__asm__ ( "mov %[w], esi " : [w] "+m" (w) );
#endif
if (widgetIndex >= WIDX_TAB1 && widgetIndex <= WIDX_TAB5) {
w->selected_tab = widgetIndex - 4;
w->var_494 = 0;