From 7d265000b4d9f07f17b5f27eb1eca16084ccd830 Mon Sep 17 00:00:00 2001 From: hexdec Date: Sat, 23 Aug 2014 17:18:23 +0200 Subject: [PATCH 1/8] Added WIDX_PICKUP. --- src/window_staff_peep.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/window_staff_peep.c b/src/window_staff_peep.c index 032d969a59..3d9637ca2a 100644 --- a/src/window_staff_peep.c +++ b/src/window_staff_peep.c @@ -45,6 +45,7 @@ enum WINDOW_STAFF_PEEP_WIDGET_IDX { WIDX_TAB_4, WIDX_VIEWPORT, WIDX_BTM_LABEL, + WIDX_PICKUP, WIDX_PATROL, WIDX_RENAME, WIDX_LOCATE, @@ -117,11 +118,11 @@ uint32 window_staff_peep_page_enabled_widgets[] = { (1 << WIDX_TAB_1) | (1 << WIDX_TAB_2) | (1 << WIDX_TAB_3) | + (1 << WIDX_PICKUP) | (1 << WIDX_PATROL) | (1 << WIDX_RENAME) | (1 << WIDX_LOCATE) | - (1 << WIDX_FIRE) | - (1 << 14) + (1 << WIDX_FIRE) }; From 3a2f66731a2a746699f56c3e57b3981124bac7dc Mon Sep 17 00:00:00 2001 From: hexdec Date: Sat, 23 Aug 2014 17:18:56 +0200 Subject: [PATCH 2/8] Added window_staff_peep_close and window_staff_peep_mouse_up. --- src/window_staff_peep.c | 68 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 66 insertions(+), 2 deletions(-) diff --git a/src/window_staff_peep.c b/src/window_staff_peep.c index 3d9637ca2a..3614b99bc4 100644 --- a/src/window_staff_peep.c +++ b/src/window_staff_peep.c @@ -77,10 +77,13 @@ rct_widget *window_staff_peep_page_widgets[] = { window_staff_peep_overview_widgets }; +void window_staff_peep_close(); +void window_staff_peep_mouse_up(); + // 0x992AEC static void* window_staff_peep_overview_events[] = { - (void*)0x6BDFF8, - (void*)0x6BDF55, + window_staff_peep_close, + window_staff_peep_mouse_up, (void*)0x6BE558, (void*)0x6BDF98, (void*)0x6BDFA3, @@ -242,4 +245,65 @@ void window_staff_peep_open(rct_peep* peep) if (g_sprite_list[w->number].peep.state == PEEP_STATE_PICKED) { RCT2_CALLPROC_X(w->event_handlers[WE_MOUSE_UP], 0, 0, 0, 10, (int)w, 0, 0); } +} + +/** + * Same as window_peep_close. + * rct2: 0x006BDFF8 + */ +void window_staff_peep_close() +{ + rct_window* w; + + window_get_register(w); + + if (RCT2_GLOBAL(0x9DE518, uint32) & (1 << 3)){ + if (w->classification == RCT2_GLOBAL(RCT2_ADDRESS_TOOL_WINDOWCLASS, rct_windowclass) && + w->number == RCT2_GLOBAL(RCT2_ADDRESS_TOOL_WINDOWNUMBER, rct_windownumber)) + tool_cancel(); + } +} + +/** rct2: 0x6C0A77 */ +void window_staff_peep_fire(rct_window* w) +{ + RCT2_CALLPROC_X(0x6C0A77, 0, 0, 0, 0, (int)w, 0, 0); +} + +/** rct2: 0x006BDF55 */ +void window_staff_peep_mouse_up() +{ + short widgetIndex; + rct_window* w; + window_widget_get_registers(w, widgetIndex); + + switch (widgetIndex) { + + case WIDX_CLOSE: + window_close(w); + break; + case WIDX_TAB_1: + case WIDX_TAB_2: + case WIDX_TAB_3: +#ifdef _MSC_VER + __asm mov esi, w + __asm mov dx, widgetIndex +#else + +#endif + RCT2_CALLPROC_EBPSAFE(0x6BE023); + break; + case WIDX_LOCATE: // 0xD + window_scroll_to_viewport(w); + break; + case WIDX_PICKUP: // 0xA + // 0x6BE236 + break; + case WIDX_FIRE: // 0xE + window_staff_peep_fire(w); + break; + case WIDX_RENAME: // 0xC + // 6BE4BC + break; + } } \ No newline at end of file From ab2564b8738ea9b35021ee0c160a1d0b9c435cc9 Mon Sep 17 00:00:00 2001 From: hexdec Date: Sat, 23 Aug 2014 19:49:19 +0200 Subject: [PATCH 3/8] Added window_staff_set_page. --- src/window_staff_peep.c | 60 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 53 insertions(+), 7 deletions(-) diff --git a/src/window_staff_peep.c b/src/window_staff_peep.c index 3614b99bc4..11f13e1769 100644 --- a/src/window_staff_peep.c +++ b/src/window_staff_peep.c @@ -24,6 +24,7 @@ #include "string_ids.h" #include "sprite.h" #include "sprites.h" +#include "viewport.h" #include "widget.h" #include "window.h" #include "window_dropdown.h" @@ -270,6 +271,57 @@ void window_staff_peep_fire(rct_window* w) RCT2_CALLPROC_X(0x6C0A77, 0, 0, 0, 0, (int)w, 0, 0); } +/** + * Mostly similar to window_peep_set_page. + * rct2: 0x006BE023 + */ +void window_staff_peep_set_page(rct_window* w, int page) +{ + // loc_6BE023 + if (RCT2_GLOBAL(0x9DE518,uint32) & (1 << 3)) + { + if(w->number == RCT2_GLOBAL(RCT2_ADDRESS_TOOL_WINDOWNUMBER, rct_windownumber) && + w->classification == RCT2_GLOBAL(RCT2_ADDRESS_TOOL_WINDOWCLASS, rct_windowclass)) + tool_cancel(); + + } + // loc_6BE04D + int listen = 0; + if (page == WINDOW_STAFF_PEEP_OVERVIEW && w->page == WINDOW_STAFF_PEEP_OVERVIEW && w->viewport){ + if (!(w->viewport->flags & VIEWPORT_FLAG_SOUND_ON)) + listen = 1; + } + + // loc_6BE079 + w->page = page; + w->frame_no = 0; + + rct_viewport* viewport = w->viewport; + w->viewport = 0; + if (viewport){ + viewport->width = 0; + } + + // loc_6BE09B + page = 0; // FOR NOW!! + w->enabled_widgets = window_staff_peep_page_enabled_widgets[page]; + w->var_020 = RCT2_ADDRESS(0x9929BC, uint32)[page]; + w->event_handlers = window_staff_peep_page_events[page]; + w->pressed_widgets = 0; + w->widgets = window_staff_peep_page_widgets[page]; + + sub_6BED21(w, &g_sprite_list[w->number].peep); + window_invalidate(w); + + RCT2_CALLPROC_X(w->event_handlers[WE_RESIZE], 0, 0, 0, 0, (int)w, 0, 0); + RCT2_CALLPROC_X(w->event_handlers[WE_INVALIDATE], 0, 0, 0, 0, (int)w, 0, 0); + + window_init_scroll_widgets(w); + window_invalidate(w); + + if (listen && w->viewport) w->viewport->flags |= VIEWPORT_FLAG_SOUND_ON; +} + /** rct2: 0x006BDF55 */ void window_staff_peep_mouse_up() { @@ -285,13 +337,7 @@ void window_staff_peep_mouse_up() case WIDX_TAB_1: case WIDX_TAB_2: case WIDX_TAB_3: -#ifdef _MSC_VER - __asm mov esi, w - __asm mov dx, widgetIndex -#else - -#endif - RCT2_CALLPROC_EBPSAFE(0x6BE023); + window_staff_peep_set_page(w, widgetIndex - WIDX_TAB_1); break; case WIDX_LOCATE: // 0xD window_scroll_to_viewport(w); From d74b8c6de9f7c8c49972df4e6047b5534e986cf6 Mon Sep 17 00:00:00 2001 From: hexdec Date: Sat, 23 Aug 2014 19:53:52 +0200 Subject: [PATCH 4/8] Added window_staff_peep_page_events for all tabs. --- src/window_staff_peep.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/window_staff_peep.c b/src/window_staff_peep.c index 11f13e1769..23bf3f8fdd 100644 --- a/src/window_staff_peep.c +++ b/src/window_staff_peep.c @@ -114,7 +114,9 @@ static void* window_staff_peep_overview_events[] = { }; void* window_staff_peep_page_events[] = { - window_staff_peep_overview_events + window_staff_peep_overview_events, + 0x992B5C, + 0x992BCC }; uint32 window_staff_peep_page_enabled_widgets[] = { @@ -126,7 +128,17 @@ uint32 window_staff_peep_page_enabled_widgets[] = { (1 << WIDX_PATROL) | (1 << WIDX_RENAME) | (1 << WIDX_LOCATE) | - (1 << WIDX_FIRE) + (1 << WIDX_FIRE), + + (1 << WIDX_CLOSE) | + (1 << WIDX_TAB_1) | + (1 << WIDX_TAB_2) | + (1 << WIDX_TAB_3), + + (1 << WIDX_CLOSE) | + (1 << WIDX_TAB_1) | + (1 << WIDX_TAB_2) | + (1 << WIDX_TAB_3) }; @@ -303,7 +315,6 @@ void window_staff_peep_set_page(rct_window* w, int page) } // loc_6BE09B - page = 0; // FOR NOW!! w->enabled_widgets = window_staff_peep_page_enabled_widgets[page]; w->var_020 = RCT2_ADDRESS(0x9929BC, uint32)[page]; w->event_handlers = window_staff_peep_page_events[page]; From 7eff50b8191d92cfa315ad3378f5ddaa9cd5761a Mon Sep 17 00:00:00 2001 From: hexdec Date: Sat, 23 Aug 2014 19:59:10 +0200 Subject: [PATCH 5/8] Moved window_create into window_open and renamed sub_6BED21 to window_staff_peep_disable_widgets to follow the same pattern as window_peep. --- src/window_staff_peep.c | 74 +++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 47 deletions(-) diff --git a/src/window_staff_peep.c b/src/window_staff_peep.c index 23bf3f8fdd..112ccd081a 100644 --- a/src/window_staff_peep.c +++ b/src/window_staff_peep.c @@ -144,10 +144,12 @@ uint32 window_staff_peep_page_enabled_widgets[] = { /** * rct2: 0x006BED21 -* +* Disable the staff pickup if not in pickup state. */ -void sub_6BED21(rct_window* w, rct_peep* peep) +void window_staff_peep_disable_widgets(rct_window* w) { + rct_peep* peep = &g_sprite_list[w->number].peep; + int eax = 0 | 0x80; if (peep->staff_type == 2) { @@ -190,40 +192,6 @@ void sub_6BED21(rct_window* w, rct_peep* peep) w->disabled_widgets = eax; } -/** -* Create the window for a specific peep. -* -* rct2: 0x006BEF1B -*/ -rct_window* sub_6BEF1B(rct_peep* peep) -{ - rct_window* w = window_create_auto_pos(190, 180, (uint32*)window_staff_peep_overview_events, WC_PEEP, (uint16)0x400); - - w->widgets = RCT2_GLOBAL(0x9AF81C, rct_widget*); - w->enabled_widgets = RCT2_GLOBAL(0x9929B0, uint32); - w->number = peep->sprite_index; - w->page = 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? - - sub_6BED21(w, peep); - - w->min_width = 190; - w->min_height = 180; - w->max_width = 500; - w->max_height = 450; - - w->flags = 1 << 8; - - w->colours[0] = 1; - w->colours[1] = 4; - w->colours[2] = 4; - - return w; -} - /** * * rct2: 0x006BEE98 @@ -231,17 +199,30 @@ rct_window* sub_6BEF1B(rct_peep* peep) void window_staff_peep_open(rct_peep* peep) { rct_window* w = window_bring_to_front_by_id(WC_PEEP, peep->sprite_index); - if (!w) { - //int eax, ebx, ecx, edx, esi, edi; + if (w == NULL) { + w = window_create_auto_pos(190, 180, (uint32*)window_staff_peep_overview_events, WC_PEEP, (uint16)0x400); - //eax = peep->sprite_index; - //ecx = WC_PEEP; - //edx = peep->sprite_index; + w->widgets = RCT2_GLOBAL(0x9AF81C, rct_widget*); + w->enabled_widgets = RCT2_GLOBAL(0x9929B0, uint32); + w->number = peep->sprite_index; + w->page = 0; + w->viewport_focus_coordinates.y = 0; + w->frame_no = 0; - //RCT2_CALLFUNC_X(0x006BEF1B, &eax, &ebx, &ecx, &edx, &esi, &edi, (int*)peep); - //w = (rct_window*)esi; + RCT2_GLOBAL((int*)w + 0x496, uint16) = 0; // missing, var_494 should perhaps be uint16? - w = sub_6BEF1B(peep); + window_staff_peep_disable_widgets(w); + + w->min_width = 190; + w->min_height = 180; + w->max_width = 500; + w->max_height = 450; + + w->flags = 1 << 8; + + w->colours[0] = 1; + w->colours[1] = 4; + w->colours[2] = 4; } w->page = 0; window_invalidate(w); @@ -251,8 +232,7 @@ void window_staff_peep_open(rct_peep* peep) w->var_020 = RCT2_GLOBAL(0x9929BC, uint32); w->event_handlers = window_staff_peep_page_events[0]; w->pressed_widgets = 0; - //RCT2_CALLPROC_X(0x006BED21, 0, 0, 0, 0, (int)w, 0, 0); - sub_6BED21(w, peep); + window_staff_peep_disable_widgets(w); window_init_scroll_widgets(w); RCT2_CALLPROC_X(0x006BEDA3, 0, 0, 0, 0, (int)w, 0, 0); if (g_sprite_list[w->number].peep.state == PEEP_STATE_PICKED) { @@ -321,7 +301,7 @@ void window_staff_peep_set_page(rct_window* w, int page) w->pressed_widgets = 0; w->widgets = window_staff_peep_page_widgets[page]; - sub_6BED21(w, &g_sprite_list[w->number].peep); + window_staff_peep_disable_widgets(w); window_invalidate(w); RCT2_CALLPROC_X(w->event_handlers[WE_RESIZE], 0, 0, 0, 0, (int)w, 0, 0); From e4ef47d63b2b84555591ef15d57fdb1159705835 Mon Sep 17 00:00:00 2001 From: hexdec Date: Sat, 23 Aug 2014 20:30:17 +0200 Subject: [PATCH 6/8] Added missing addresses. --- src/window_staff_peep.c | 112 ++++++++++++++++++++-------------------- 1 file changed, 57 insertions(+), 55 deletions(-) diff --git a/src/window_staff_peep.c b/src/window_staff_peep.c index 112ccd081a..40e7ff96ca 100644 --- a/src/window_staff_peep.c +++ b/src/window_staff_peep.c @@ -75,9 +75,14 @@ rct_widget window_staff_peep_overview_widgets[] = { }; rct_widget *window_staff_peep_page_widgets[] = { - window_staff_peep_overview_widgets + window_staff_peep_overview_widgets, + (rct_widget *)0x9AF910, + (rct_widget *)0x9AF9F4 }; +void window_staff_peep_set_page(rct_window* w, int page); +void window_staff_peep_disable_widgets(rct_window* w); + void window_staff_peep_close(); void window_staff_peep_mouse_up(); @@ -115,8 +120,8 @@ static void* window_staff_peep_overview_events[] = { void* window_staff_peep_page_events[] = { window_staff_peep_overview_events, - 0x992B5C, - 0x992BCC + (void*)0x992B5C, + (void*)0x992BCC }; uint32 window_staff_peep_page_enabled_widgets[] = { @@ -141,6 +146,53 @@ uint32 window_staff_peep_page_enabled_widgets[] = { (1 << WIDX_TAB_3) }; +/** +* +* rct2: 0x006BEE98 +*/ +void window_staff_peep_open(rct_peep* peep) +{ + rct_window* w = window_bring_to_front_by_id(WC_PEEP, peep->sprite_index); + if (w == NULL) { + w = window_create_auto_pos(190, 180, (uint32*)window_staff_peep_overview_events, WC_PEEP, (uint16)0x400); + + w->widgets = RCT2_GLOBAL(0x9AF81C, rct_widget*); + w->enabled_widgets = RCT2_GLOBAL(0x9929B0, uint32); + w->number = peep->sprite_index; + w->page = 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? + + window_staff_peep_disable_widgets(w); + + w->min_width = 190; + w->min_height = 180; + w->max_width = 500; + w->max_height = 450; + + w->flags = 1 << 8; + + w->colours[0] = 1; + w->colours[1] = 4; + w->colours[2] = 4; + } + w->page = 0; + window_invalidate(w); + + w->widgets = window_staff_peep_overview_widgets; + w->enabled_widgets = window_staff_peep_page_enabled_widgets[0]; + w->var_020 = RCT2_GLOBAL(0x9929BC, uint32); + w->event_handlers = window_staff_peep_page_events[0]; + w->pressed_widgets = 0; + window_staff_peep_disable_widgets(w); + window_init_scroll_widgets(w); + RCT2_CALLPROC_X(0x006BEDA3, 0, 0, 0, 0, (int)w, 0, 0); + if (g_sprite_list[w->number].peep.state == PEEP_STATE_PICKED) { + RCT2_CALLPROC_X(w->event_handlers[WE_MOUSE_UP], 0, 0, 0, 10, (int)w, 0, 0); + } +} /** * rct2: 0x006BED21 @@ -192,54 +244,6 @@ void window_staff_peep_disable_widgets(rct_window* w) w->disabled_widgets = eax; } -/** -* -* rct2: 0x006BEE98 -*/ -void window_staff_peep_open(rct_peep* peep) -{ - rct_window* w = window_bring_to_front_by_id(WC_PEEP, peep->sprite_index); - if (w == NULL) { - w = window_create_auto_pos(190, 180, (uint32*)window_staff_peep_overview_events, WC_PEEP, (uint16)0x400); - - w->widgets = RCT2_GLOBAL(0x9AF81C, rct_widget*); - w->enabled_widgets = RCT2_GLOBAL(0x9929B0, uint32); - w->number = peep->sprite_index; - w->page = 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? - - window_staff_peep_disable_widgets(w); - - w->min_width = 190; - w->min_height = 180; - w->max_width = 500; - w->max_height = 450; - - w->flags = 1 << 8; - - w->colours[0] = 1; - w->colours[1] = 4; - w->colours[2] = 4; - } - w->page = 0; - window_invalidate(w); - - w->widgets = window_staff_peep_overview_widgets; - w->enabled_widgets = window_staff_peep_page_enabled_widgets[0]; - w->var_020 = RCT2_GLOBAL(0x9929BC, uint32); - w->event_handlers = window_staff_peep_page_events[0]; - w->pressed_widgets = 0; - window_staff_peep_disable_widgets(w); - window_init_scroll_widgets(w); - RCT2_CALLPROC_X(0x006BEDA3, 0, 0, 0, 0, (int)w, 0, 0); - if (g_sprite_list[w->number].peep.state == PEEP_STATE_PICKED) { - RCT2_CALLPROC_X(w->event_handlers[WE_MOUSE_UP], 0, 0, 0, 10, (int)w, 0, 0); - } -} - /** * Same as window_peep_close. * rct2: 0x006BDFF8 @@ -269,7 +273,6 @@ void window_staff_peep_fire(rct_window* w) */ void window_staff_peep_set_page(rct_window* w, int page) { - // loc_6BE023 if (RCT2_GLOBAL(0x9DE518,uint32) & (1 << 3)) { if(w->number == RCT2_GLOBAL(RCT2_ADDRESS_TOOL_WINDOWNUMBER, rct_windownumber) && @@ -277,14 +280,14 @@ void window_staff_peep_set_page(rct_window* w, int page) tool_cancel(); } - // loc_6BE04D + int listen = 0; if (page == WINDOW_STAFF_PEEP_OVERVIEW && w->page == WINDOW_STAFF_PEEP_OVERVIEW && w->viewport){ if (!(w->viewport->flags & VIEWPORT_FLAG_SOUND_ON)) listen = 1; } - // loc_6BE079 + w->page = page; w->frame_no = 0; @@ -294,7 +297,6 @@ void window_staff_peep_set_page(rct_window* w, int page) viewport->width = 0; } - // loc_6BE09B w->enabled_widgets = window_staff_peep_page_enabled_widgets[page]; w->var_020 = RCT2_ADDRESS(0x9929BC, uint32)[page]; w->event_handlers = window_staff_peep_page_events[page]; From d9e2b39b302ba9609c6b0bd4fa073b6ade392346 Mon Sep 17 00:00:00 2001 From: hexdec Date: Sat, 23 Aug 2014 22:24:27 +0200 Subject: [PATCH 7/8] Added rename code for guests and staff. --- src/window_peep.c | 2 ++ src/window_staff_peep.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/window_peep.c b/src/window_peep.c index 2c55d29ce9..0d18c9ed43 100644 --- a/src/window_peep.c +++ b/src/window_peep.c @@ -325,6 +325,7 @@ void window_peep_overview_mouse_up(){ short widgetIndex; rct_window* w; window_widget_get_registers(w, widgetIndex); + rct_peep* peep = GET_PEEP(w->number); switch(widgetIndex){ case WIDX_CLOSE: @@ -343,6 +344,7 @@ void window_peep_overview_mouse_up(){ break; case WIDX_RENAME: //696e4d + window_show_textinput(w, (int)widgetIndex, 0x5AC, 0x5AD, peep->name_string_idx); break; case WIDX_LOCATE: window_scroll_to_viewport(w); diff --git a/src/window_staff_peep.c b/src/window_staff_peep.c index 40e7ff96ca..c0da9978b4 100644 --- a/src/window_staff_peep.c +++ b/src/window_staff_peep.c @@ -321,6 +321,7 @@ void window_staff_peep_mouse_up() short widgetIndex; rct_window* w; window_widget_get_registers(w, widgetIndex); + rct_peep* peep = GET_PEEP(w->number); switch (widgetIndex) { @@ -343,6 +344,7 @@ void window_staff_peep_mouse_up() break; case WIDX_RENAME: // 0xC // 6BE4BC + window_show_textinput(w, (int)widgetIndex, 0xBA1, 0xBA2, peep->name_string_idx); break; } } \ No newline at end of file From e71711e931b823be179efe17e976bc5c0f06b7c1 Mon Sep 17 00:00:00 2001 From: hexdec Date: Sat, 23 Aug 2014 23:03:22 +0200 Subject: [PATCH 8/8] Added code for Pickup for guests and staff. --- src/window_peep.c | 17 +++++++++++++++++ src/window_staff_peep.c | 13 +++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/window_peep.c b/src/window_peep.c index 0d18c9ed43..f0bc914724 100644 --- a/src/window_peep.c +++ b/src/window_peep.c @@ -341,6 +341,23 @@ void window_peep_overview_mouse_up(){ break; case WIDX_PICKUP: //696ba6 + if (!peep_can_be_picked_up(peep)) { + return; + } + if (tool_set(w, widgetIndex, 7)) { + return; + } + + w->var_48C = peep->sprite_identifier; + + RCT2_CALLPROC_X(0x0069A512, 0, 0, 0, 0, (int)peep, 0, 0); + RCT2_CALLPROC_X(0x006EC473, 0, 0, 0, 0, (int)peep, 0, 0); + + RCT2_CALLPROC_X(0x0069E9D3, 0x8000, 0, peep->y, peep->z, (int)peep, 0, 0); + RCT2_CALLPROC_X(0x0069A409, 0, 0, 0, 0, (int)peep, 0, 0); + peep->state = 9; + peep->pad_2C = 0; + RCT2_CALLPROC_X(0x0069A42F, 0, 0, 0, 0, (int)peep, 0, 0); break; case WIDX_RENAME: //696e4d diff --git a/src/window_staff_peep.c b/src/window_staff_peep.c index c0da9978b4..8131d8bab9 100644 --- a/src/window_staff_peep.c +++ b/src/window_staff_peep.c @@ -338,6 +338,19 @@ void window_staff_peep_mouse_up() break; case WIDX_PICKUP: // 0xA // 0x6BE236 + if (tool_set(w, widgetIndex, 7)) { + return; + } + + w->var_48C = peep->sprite_identifier; + + RCT2_CALLPROC_X(0x0069A512, 0, 0, 0, 0, (int)peep, 0, 0); + RCT2_CALLPROC_X(0x006EC473, 0, 0, 0, 0, (int)peep, 0, 0); + + RCT2_CALLPROC_X(0x0069E9D3, 0x8000, 0, peep->y, peep->z, (int)peep, 0, 0); + RCT2_CALLPROC_X(0x0069A409, 0, 0, 0, 0, (int)peep, 0, 0); + peep->state = 9; + RCT2_CALLPROC_X(0x0069A42F, 0, 0, 0, 0, (int)peep, 0, 0); break; case WIDX_FIRE: // 0xE window_staff_peep_fire(w);