remove registers from window events and changed to typed signatures

This commit is contained in:
IntelOrca 2015-07-10 01:39:16 +01:00
parent e42a11efa3
commit f906391c9d
68 changed files with 4260 additions and 6590 deletions

View File

@ -956,7 +956,7 @@ void process_mouse_over(int x, int y)
int widgetId;
int cursorId;
int eax, ebx, ecx, edx, esi, edi, ebp;
int ebx, esi, edi, ebp;
cursorId = CURSOR_ARROW;
RCT2_GLOBAL(0x9A9808, sint16) = -1;
@ -988,7 +988,8 @@ void process_mouse_over(int x, int y)
ebx = ebx & 0xFFFFFF00;
edi = cursorId;
esi = (int)subWindow;
RCT2_CALLFUNC_X(subWindow->event_handlers[WE_UNKNOWN_0E], &eax, &ebx, &ecx, &edx, &esi, &edi, &ebp);
// Not sure what this is for, no windows actually implement a handler
// RCT2_CALLFUNC_X(subWindow->event_handlers[WE_UNKNOWN_0E], &eax, &ebx, &ecx, &edx, &esi, &edi, &ebp);
cursorId = edi;
if ((ebx & 0xFF) != 0)
{
@ -1354,10 +1355,9 @@ void game_handle_keyboard_input()
}
else {
w = window_find_by_class(WC_TEXTINPUT);
if (w != NULL){
((void(*)(int, rct_window*))w->event_handlers[WE_TEXT_INPUT])(key, w);
}
else if (!gUsingWidgetTextBox) {
if (w != NULL) {
window_text_input_key(w, key);
} else if (!gUsingWidgetTextBox) {
keyboard_shortcut_handle(key);
}
}

View File

@ -31,6 +31,7 @@
#include "viewport.h"
#include "../localisation/string_ids.h"
#include "../localisation/localisation.h"
#include "../cursors.h"
#define RCT2_FIRST_WINDOW (RCT2_ADDRESS(RCT2_ADDRESS_WINDOW_LIST, rct_window))
#define RCT2_LAST_WINDOW (RCT2_GLOBAL(RCT2_ADDRESS_NEW_WINDOW_PTR, rct_window*) - 1)
@ -352,7 +353,7 @@ static void window_all_wheel_input()
* @param flags (ch)
* @param class (cl)
*/
rct_window *window_create(int x, int y, int width, int height, uint32 *event_handlers, rct_windowclass cls, uint16 flags)
rct_window *window_create(int x, int y, int width, int height, rct_window_event_list *event_handlers, rct_windowclass cls, uint16 flags)
{
rct_window *w;
// Check if there are any window slots left
@ -507,7 +508,7 @@ static bool sub_6EA95D(int x, int y, int width, int height)
* @param flags (ch)
* @param class (cl)
*/
rct_window *window_create_auto_pos(int width, int height, uint32 *event_handlers, rct_windowclass cls, uint16 flags)
rct_window *window_create_auto_pos(int width, int height, rct_window_event_list *event_handlers, rct_windowclass cls, uint16 flags)
{
rct_window *w;
int x, y;
@ -629,7 +630,7 @@ foundSpace:
return window_create(x, y, width, height, event_handlers, cls, flags);
}
rct_window *window_create_centred(int width, int height, uint32 *event_handlers, rct_windowclass cls, uint16 flags)
rct_window *window_create_centred(int width, int height, rct_window_event_list *event_handlers, rct_windowclass cls, uint16 flags)
{
int x, y;
@ -996,6 +997,8 @@ void window_init_scroll_widgets(rct_window *w)
scroll = &w->scrolls[scroll_index];
scroll->flags = 0;
width = 0;
height = 0;
window_get_scroll_size(w, scroll_index, &width, &height);
scroll->h_left = 0;
scroll->h_right = width + 1;
@ -1033,6 +1036,8 @@ void window_update_scroll_widgets(rct_window *w)
continue;
scroll = &w->scrolls[scrollIndex];
width = 0;
height = 0;
window_get_scroll_size(w, scrollIndex, &width, &height);
if (height == 0){
scroll->v_top = 0;
@ -1813,211 +1818,180 @@ void window_guest_list_init_vars_b()
RCT2_GLOBAL(0x00F1AF20, uint16) = 0;
}
static void window_event_call_address(int address, rct_window *w)
void window_event_close_call(rct_window *w)
{
#ifdef _MSC_VER
__asm {
push address
push w
mov esi, w
call[esp + 4]
add esp, 8
}
#else
__asm__ ( "\
push %[address]\n\
mov eax, %[w] \n\
push eax \n\
mov esi, %[w] \n\
call [esp+4] \n\
add esp, 8 \n\
" : [address] "+m" (address), [w] "+m" (w) : : "eax", "esi" );
#endif
if (w->event_handlers->close != NULL)
w->event_handlers->close(w);
}
void window_event_close_call(rct_window* w)
void window_event_mouse_up_call(rct_window *w, int widgetIndex)
{
window_event_call_address(w->event_handlers[WE_CLOSE], w);
if (w->event_handlers->mouse_up != NULL)
w->event_handlers->mouse_up(w, widgetIndex);
}
void window_event_mouse_up_call(rct_window* w, int widgetIndex)
void window_event_resize_call(rct_window *w)
{
RCT2_CALLPROC_X(w->event_handlers[WE_MOUSE_UP], 0, 0, 0, widgetIndex, (int)w, (int)&(w->event_handlers[widgetIndex]), 0);
}
void window_event_resize_call(rct_window* w)
{
window_event_call_address(w->event_handlers[WE_RESIZE], w);
if (w->event_handlers->resize != NULL)
w->event_handlers->resize(w);
}
void window_event_mouse_down_call(rct_window *w, int widgetIndex)
{
int address = w->event_handlers[WE_MOUSE_DOWN];
rct_widget *widget = &w->widgets[widgetIndex];
#ifdef _MSC_VER
__asm {
push ebp
push address
push widget
push w
push widgetIndex
mov edi, widget
mov edx, widgetIndex
mov esi, w
call[esp + 12]
add esp, 16
pop ebp
}
#else
__asm__("\
push ebp \n\
push %[address]\n\
mov edi, %[widget] \n\
mov eax, %[w] \n\
mov edx, %[widgetIndex] \n\
push edi \n\
push eax \n\
push edx \n\
mov esi, %[w] \n\
call [esp+12] \n\
add esp, 16 \n\
pop ebp \n\
" :[address] "+m" (address), [w] "+m" (w), [widget] "+m" (widget), [widgetIndex] "+m" (widgetIndex): : "eax", "esi", "edx", "edi"
);
#endif
if (w->event_handlers->mouse_down != NULL)
w->event_handlers->mouse_down(widgetIndex, w, &w->widgets[widgetIndex]);
}
void window_event_dropdown_call(rct_window* w, int widgetIndex, int dropdownIndex)
void window_event_dropdown_call(rct_window *w, int widgetIndex, int dropdownIndex)
{
RCT2_CALLPROC_X(w->event_handlers[WE_DROPDOWN], dropdownIndex, 0, 0, widgetIndex, (int)w, 0, 0);
if (w->event_handlers->dropdown != NULL)
w->event_handlers->dropdown(w, widgetIndex, dropdownIndex);
}
void window_event_unknown_05_call(rct_window* w)
void window_event_unknown_05_call(rct_window *w)
{
window_event_call_address(w->event_handlers[WE_UNKNOWN_05], w);
if (w->event_handlers->unknown_05 != NULL)
w->event_handlers->unknown_05(w);
}
void window_event_update_call(rct_window *w)
{
window_event_call_address(w->event_handlers[WE_UPDATE], w);
if (w->event_handlers->update != NULL)
w->event_handlers->update(w);
}
void window_event_unknown_07_call(rct_window* w)
void window_event_unknown_07_call(rct_window *w)
{
window_event_call_address(w->event_handlers[WE_UNKNOWN_07], w);
if (w->event_handlers->unknown_07 != NULL)
w->event_handlers->unknown_07(w);
}
void window_event_unknown_08_call(rct_window* w)
void window_event_unknown_08_call(rct_window *w)
{
window_event_call_address(w->event_handlers[WE_UNKNOWN_08], w);
if (w->event_handlers->unknown_08 != NULL)
w->event_handlers->unknown_08(w);
}
void window_event_tool_update_call(rct_window* w, int widgetIndex, int x, int y)
void window_event_tool_update_call(rct_window *w, int widgetIndex, int x, int y)
{
RCT2_CALLPROC_X(w->event_handlers[WE_TOOL_UPDATE], x, y, 0, widgetIndex, (int)w, 0, 0);
if (w->event_handlers->tool_update != NULL)
w->event_handlers->tool_update(w, widgetIndex, x, y);
}
void window_event_tool_down_call(rct_window* w, int widgetIndex, int x, int y)
void window_event_tool_down_call(rct_window *w, int widgetIndex, int x, int y)
{
RCT2_CALLPROC_X(w->event_handlers[WE_TOOL_DOWN], x, y, 0, widgetIndex, (int)w, 0, 0);
if (w->event_handlers->tool_down != NULL)
w->event_handlers->tool_down(w, widgetIndex, x, y);
}
void window_event_tool_drag_call(rct_window* w, int widgetIndex, int x, int y)
void window_event_tool_drag_call(rct_window *w, int widgetIndex, int x, int y)
{
RCT2_CALLPROC_X(w->event_handlers[WE_TOOL_DRAG], x, y, 0, widgetIndex, (int)w, 0, 0);
if (w->event_handlers->tool_drag != NULL)
w->event_handlers->tool_drag(w, widgetIndex, x, y);
}
void window_event_tool_up_call(rct_window* w, int widgetIndex, int x, int y)
void window_event_tool_up_call(rct_window *w, int widgetIndex, int x, int y)
{
RCT2_CALLPROC_X(w->event_handlers[WE_TOOL_UP], x, y, 0, widgetIndex, (int)w, 0, 0);
if (w->event_handlers->tool_up != NULL)
w->event_handlers->tool_up(w, widgetIndex, x, y);
}
void window_event_tool_abort_call(rct_window* w, int widgetIndex)
void window_event_tool_abort_call(rct_window *w, int widgetIndex)
{
RCT2_CALLPROC_X(w->event_handlers[WE_TOOL_ABORT], 0, 0, 0, widgetIndex, (int)w, 0, 0);
if (w->event_handlers->tool_abort != NULL)
w->event_handlers->tool_abort(w, widgetIndex);
}
void window_event_unknown_0E_call(rct_window* w)
void window_event_unknown_0E_call(rct_window *w)
{
window_event_call_address(w->event_handlers[WE_UNKNOWN_0E], w);
if (w->event_handlers->unknown_0E != NULL)
w->event_handlers->unknown_0E(w);
}
int window_get_scroll_size(rct_window *w, int scrollIndex, int *width, int *height)
void window_get_scroll_size(rct_window *w, int scrollIndex, int *width, int *height)
{
rct_widget *widget = window_get_scroll_widget(w, scrollIndex);
int widgetIndex = window_get_widget_index(w, widget);
if (w->event_handlers->get_scroll_size != NULL) {
rct_widget *widget = window_get_scroll_widget(w, scrollIndex);
int widgetIndex = window_get_widget_index(w, widget);
int eax = scrollIndex, ebx = scrollIndex * sizeof(rct_scroll), ecx = 0, edx = 0, esi = (int)w, edi = widgetIndex * sizeof(rct_widget), ebp = 0;
RCT2_CALLFUNC_X(w->event_handlers[WE_SCROLL_GETSIZE], & eax, &ebx, &ecx, &edx, &esi, &edi, &ebp);
*width = ecx;
*height = edx;
return 1;
w->event_handlers->get_scroll_size(w, scrollIndex, width, height);
}
}
void window_event_scroll_mousedown_call(rct_window* w, int scrollIndex, int x, int y)
void window_event_scroll_mousedown_call(rct_window *w, int scrollIndex, int x, int y)
{
RCT2_CALLPROC_X(w->event_handlers[WE_SCROLL_MOUSEDOWN], scrollIndex, 0, x, y, (int)w, (int)window_get_scroll_widget(w, scrollIndex), 0);
if (w->event_handlers->scroll_mousedown != NULL)
w->event_handlers->scroll_mousedown(w, scrollIndex, x, y);
}
void window_event_scroll_mousedrag_call(rct_window* w, int scrollIndex, int x, int y)
void window_event_scroll_mousedrag_call(rct_window *w, int scrollIndex, int x, int y)
{
RCT2_CALLPROC_X(w->event_handlers[WE_SCROLL_MOUSEDRAG], scrollIndex, 0, x, y, (int)w, (int)window_get_scroll_widget(w, scrollIndex), 0);
if (w->event_handlers->scroll_mousedrag != NULL)
w->event_handlers->scroll_mousedrag(w, scrollIndex, x, y);
}
void window_event_scroll_mouseover_call(rct_window* w, int scrollIndex, int x, int y)
void window_event_scroll_mouseover_call(rct_window *w, int scrollIndex, int x, int y)
{
RCT2_CALLPROC_X(w->event_handlers[WE_SCROLL_MOUSEOVER], scrollIndex, 0, x, y, (int)w, (int)window_get_scroll_widget(w, scrollIndex), 0);
if (w->event_handlers->scroll_mouseover != NULL)
w->event_handlers->scroll_mouseover(w, scrollIndex, x, y);
}
void window_event_textinput_call(rct_window *w, int widgetIndex, char *text)
{
RCT2_CALLPROC_X(w->event_handlers[WE_TEXT_INPUT], 0, 0, text != NULL, widgetIndex, (int)w, (int)text, 0);
if (w->event_handlers->text_input != NULL)
w->event_handlers->text_input(w, widgetIndex, text);
}
void window_event_unknown_14_call(rct_window* w)
void window_event_unknown_14_call(rct_window *w)
{
window_event_call_address(w->event_handlers[WE_UNKNOWN_14], w);
if (w->event_handlers->unknown_14 != NULL)
w->event_handlers->unknown_14(w);
}
void window_event_unknown_15_call(rct_window* w, int scrollIndex, int scrollAreaType)
void window_event_unknown_15_call(rct_window *w, int scrollIndex, int scrollAreaType)
{
rct_widget *widget = window_get_scroll_widget(w, scrollIndex);
RCT2_CALLPROC_X(w->event_handlers[WE_UNKNOWN_15], scrollIndex * sizeof(rct_scroll), 0, scrollAreaType, scrollIndex, (int)w, (int)widget, 0);
if (w->event_handlers->unknown_15 != NULL)
w->event_handlers->unknown_15(w, scrollIndex, scrollAreaType);
}
rct_string_id window_event_tooltip_call(rct_window* w, int widgetIndex)
rct_string_id window_event_tooltip_call(rct_window *w, int widgetIndex)
{
int eax = widgetIndex, ebx, ecx, edx, esi = (int)w, edi, ebp;
RCT2_CALLFUNC_X(w->event_handlers[WE_TOOLTIP], &eax, &ebx, &ecx, &edx, &esi, &edi, &ebp);
return eax & 0xFFFF;
rct_string_id result = STR_NONE;
if (w->event_handlers->tooltip != NULL)
w->event_handlers->tooltip(w, widgetIndex, &result);
return result;
}
int window_event_cursor_call(rct_window* w, int widgetIndex, int x, int y)
int window_event_cursor_call(rct_window *w, int widgetIndex, int x, int y)
{
int eax = widgetIndex, ebx = -1, ecx = x, edx = y, esi = (int)w, edi = (int)&w->widgets[widgetIndex], ebp;
RCT2_CALLFUNC_X(w->event_handlers[WE_CURSOR], &eax, &ebx, &ecx, &edx, &esi, &edi, &ebp);
return ebx;
int cursorId = CURSOR_ARROW;
if (w->event_handlers->cursor != NULL)
w->event_handlers->cursor(w, widgetIndex, x, y, &cursorId);
return cursorId;
}
void window_event_moved_call(rct_window* w, int x, int y)
void window_event_moved_call(rct_window *w, int x, int y)
{
RCT2_CALLPROC_X(w->event_handlers[WE_MOVED], 0, 0, x, y, (int)w, 0, 0);
if (w->event_handlers->moved != NULL)
w->event_handlers->moved(w, x, y);
}
void window_event_invalidate_call(rct_window* w)
void window_event_invalidate_call(rct_window *w)
{
RCT2_CALLPROC_X(w->event_handlers[WE_INVALIDATE], 0, 0, 0, 0, (int)w, 0, 0);
if (w->event_handlers->invalidate != NULL)
w->event_handlers->invalidate(w);
}
void window_event_paint_call(rct_window* w, rct_drawpixelinfo *dpi)
void window_event_paint_call(rct_window *w, rct_drawpixelinfo *dpi)
{
RCT2_CALLPROC_X(w->event_handlers[WE_PAINT], 0, 0, 0, 0, (int)w, (int)dpi, 0);
if (w->event_handlers->paint != NULL)
w->event_handlers->paint(w, dpi);
}
void window_event_scroll_paint_call(rct_window* w, rct_drawpixelinfo *dpi, int scrollIndex)
void window_event_scroll_paint_call(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
{
RCT2_CALLPROC_X(w->event_handlers[WE_SCROLL_PAINT], scrollIndex, 0, 0, 0, (int)w, (int)dpi, 0);
if (w->event_handlers->scroll_paint != NULL)
w->event_handlers->scroll_paint(w, dpi, scrollIndex);
}
/**

View File

@ -134,6 +134,36 @@ enum{
};
#define VIEWPORT_FOCUS_Y_MASK 0x3FFF
typedef struct {
void (*close)(struct rct_window*);
void (*mouse_up)(struct rct_window*, int);
void (*resize)(struct rct_window*);
void (*mouse_down)(int, struct rct_window*, rct_widget*);
void (*dropdown)(struct rct_window*, int, int);
void (*unknown_05)(struct rct_window*);
void (*update)(struct rct_window*);
void (*unknown_07)(struct rct_window*);
void (*unknown_08)(struct rct_window*);
void (*tool_update)(struct rct_window*, int, int, int);
void (*tool_down)(struct rct_window*, int, int, int);
void (*tool_drag)(struct rct_window*, int, int, int);
void (*tool_up)(struct rct_window*, int, int, int);
void (*tool_abort)(struct rct_window*, int);
void (*unknown_0E)(struct rct_window*);
void (*get_scroll_size)(struct rct_window*, int, int*, int*);
void (*scroll_mousedown)(struct rct_window*, int, int, int);
void (*scroll_mousedrag)(struct rct_window*, int, int, int);
void (*scroll_mouseover)(struct rct_window*, int, int, int);
void (*text_input)(struct rct_window*, int, char*);
void (*unknown_14)(struct rct_window*);
void (*unknown_15)(struct rct_window*, int, int);
void (*tooltip)(struct rct_window*, int, rct_string_id*);
void (*cursor)(struct rct_window*, int, int, int, int*);
void (*moved)(struct rct_window*, int, int);
void (*invalidate)(struct rct_window*);
void (*paint)(struct rct_window*, rct_drawpixelinfo*);
void (*scroll_paint)(struct rct_window*, rct_drawpixelinfo*, int);
} rct_window_event_list;
typedef struct{
sint16 campaign_type;
@ -192,7 +222,7 @@ typedef struct {
* size: 0x4C0
*/
typedef struct rct_window {
uint32* event_handlers; // 0x000
rct_window_event_list* event_handlers; // 0x000
rct_viewport* viewport; // 0x004
uint64 enabled_widgets; // 0x008
uint64 disabled_widgets; // 0x010
@ -461,9 +491,9 @@ extern ride_list_item _window_track_list_item;
void window_dispatch_update_all();
void window_update_all_viewports();
void window_update_all();
rct_window *window_create(int x, int y, int width, int height, uint32 *event_handlers, rct_windowclass cls, uint16 flags);
rct_window *window_create_auto_pos(int width, int height, uint32 *event_handlers, rct_windowclass cls, uint16 flags);
rct_window *window_create_centred(int width, int height, uint32 *event_handlers, rct_windowclass cls, uint16 flags);
rct_window *window_create(int x, int y, int width, int height, rct_window_event_list *event_handlers, rct_windowclass cls, uint16 flags);
rct_window *window_create_auto_pos(int width, int height, rct_window_event_list *event_handlers, rct_windowclass cls, uint16 flags);
rct_window *window_create_centred(int width, int height, rct_window_event_list *event_handlers, rct_windowclass cls, uint16 flags);
void window_close(rct_window *window);
void window_close_by_class(rct_windowclass cls);
void window_close_by_number(rct_windowclass cls, rct_windownumber number);
@ -502,6 +532,7 @@ void window_zoom_in(rct_window *w);
void window_zoom_out(rct_window *w);
void window_show_textinput(rct_window *w, int widgetIndex, uint16 title, uint16 text, int value);
void window_text_input_key(rct_window* w, int key);
void window_draw(rct_window *w, int left, int top, int right, int bottom);
void window_draw_widgets(rct_window *w, rct_drawpixelinfo *dpi);
@ -631,7 +662,7 @@ void window_event_tool_drag_call(rct_window* w, int widgetIndex, int x, int y);
void window_event_tool_up_call(rct_window* w, int widgetIndex, int x, int y);
void window_event_tool_abort_call(rct_window* w, int widgetIndex);
void window_event_unknown_0E_call(rct_window* w);
int window_get_scroll_size(rct_window *w, int scrollIndex, int *width, int *height);
void window_get_scroll_size(rct_window *w, int scrollIndex, int *width, int *height);
void window_event_scroll_mousedown_call(rct_window* w, int scrollIndex, int x, int y);
void window_event_scroll_mousedrag_call(rct_window* w, int scrollIndex, int x, int y);
void window_event_scroll_mouseover_call(rct_window* w, int scrollIndex, int x, int y);
@ -661,145 +692,4 @@ bool land_tool_is_active();
//Cheat: in-game land ownership editor
void toggle_ingame_land_ownership_editor();
#ifdef _MSC_VER
#define window_get_register(w) \
__asm mov w, esi
#define window_widget_get_registers(w, widgetIndex) \
__asm mov widgetIndex, dx \
__asm mov w, esi
#define window_dropdown_get_registers(w, widgetIndex, dropdownIndex) \
__asm mov dropdownIndex, ax \
__asm mov widgetIndex, dx \
__asm mov w, esi
#define window_text_input_get_registers(w, widgetIndex, result, text) \
__asm mov widgetIndex, dx \
__asm mov result, cl \
__asm mov w, esi \
__asm mov text, edi
#define window_scroll_get_registers(w, i) \
__asm mov i, ax \
__asm mov w, esi
#define window_scrollmouse_get_registers(w, i, x, y) \
__asm mov i, ax \
__asm mov x, cx \
__asm mov y, dx \
__asm mov w, esi
#define window_tool_get_registers(w, widgetIndex, x, y) \
__asm mov x, ax \
__asm mov y, bx \
__asm mov widgetIndex, dx \
__asm mov w, esi
#define window_textinput_get_registers(w, widgetIndex, result, text) \
__asm mov result, cl \
__asm mov widgetIndex, dx \
__asm mov w, esi \
__asm mov text, edi
#define window_paint_get_registers(w, dpi) \
__asm mov w, esi \
__asm mov dpi, edi
#define window_scrollpaint_get_registers(w, dpi, i) \
__asm mov i, ax \
__asm mov w, esi \
__asm mov dpi, edi
#define window_scrollsize_set_registers(width, height) \
__asm mov ecx, width \
__asm mov edx, height
#define window_cursor_get_registers(w, widgetIndex, x, y) \
__asm mov widgetIndex, ax \
__asm mov x, cx \
__asm mov y, dx \
__asm mov w, esi
#define window_cursor_set_registers(cursorId) \
__asm mov ebx, cursorId
#define window_tooltip_get_registers(w, widgetIndex) \
__asm mov widgetIndex, ax \
__asm mov w, esi
#define window_tooltip_set_registers(value) \
__asm mov ax, value
#else
#define window_get_register(w) \
__asm__ ( "mov %["#w"], esi " : [w] "+m" (w) );
#define window_widget_get_registers(w, widgetIndex) \
__asm__ ( "mov %["#widgetIndex"], dx " : [widgetIndex] "+m" (widgetIndex) ); \
__asm__ ( "mov %["#w"], esi " : [w] "+m" (w) );
#define window_dropdown_get_registers(w, widgetIndex, dropdownIndex) \
__asm__ ( "mov %["#dropdownIndex"], ax " : [dropdownIndex] "+m" (dropdownIndex) ); \
__asm__ ( "mov %["#widgetIndex"], dx " : [widgetIndex] "+m" (widgetIndex) ); \
__asm__ ( "mov %["#w"], esi " : [w] "+m" (w) );
#define window_text_input_get_registers(w, widgetIndex, result, text) \
__asm__ ( "mov %[_cl], cl " : [_cl] "+m" (result) ); \
__asm__ ( "mov %[widgetIndex], dx " : [widgetIndex] "+m" (widgetIndex) ); \
__asm__ ( "mov %[w], esi " : [w] "+m" (w) ); \
__asm__ ( "mov %[text], edi " : [text] "+m" (text) );
#define window_scroll_get_registers(w, i) \
__asm__ ( "mov %["#i"], ax " : [i] "+m" (i) ); \
__asm__ ( "mov %["#w"], esi " : [w] "+m" (w) );
#define window_scrollmouse_get_registers(w, i, x, y) \
__asm__ ( "mov %["#i"], ax " : [i] "+m" (i) ); \
__asm__ ( "mov %["#x"], cx " : [x] "+m" (x) ); \
__asm__ ( "mov %["#y"], dx " : [y] "+m" (y) ); \
__asm__ ( "mov %["#w"], esi " : [w] "+m" (w) );
#define window_tool_get_registers(w, widgetIndex, x, y) \
__asm__ ( "mov %["#x"], ax " : [x] "+m" (x) ); \
__asm__ ( "mov %["#y"], bx " : [y] "+m" (y) ); \
__asm__ ( "mov %["#widgetIndex"], dx " : [widgetIndex] "+m" (widgetIndex) ); \
__asm__ ( "mov %["#w"], esi " : [w] "+m" (w) );
#define window_textinput_get_registers(w, widgetIndex, result, text) \
__asm__ ( "mov %[result], cl " : [result] "+m" (result) ); \
__asm__ ( "mov %[widgetIndex], dx " : [widgetIndex] "+m" (widgetIndex) ); \
__asm__ ( "mov %[w], esi " : [w] "+m" (w) ); \
__asm__ ( "mov %[text], edi " : [text] "+m" (text) );
#define window_paint_get_registers(w, dpi) \
__asm__ ( "mov %["#w"], esi " : [w] "+m" (w) ); \
__asm__ ( "mov %["#dpi"], edi " : [dpi] "+m" (dpi) );
#define window_scrollpaint_get_registers(w, dpi, i) \
__asm__ ( "mov %["#i"], ax " : [i] "+m" (i) ); \
__asm__ ( "mov %["#w"], esi " : [w] "+m" (w) ); \
__asm__ ( "mov %["#dpi"], edi " : [dpi] "+m" (dpi) );
#define window_scrollsize_set_registers(width, height) \
__asm__ ( "mov ecx, %[width] " : [width] "+m" (width) ); \
__asm__ ( "mov edx, %[height] " : [height] "+m" (height) );
#define window_cursor_get_registers(w, widgetIndex, x, y) \
__asm__ ( "mov %["#widgetIndex"], ax " : [widgetIndex] "+m" (widgetIndex) ); \
__asm__ ( "mov %["#x"], cx " : [x] "+m" (x) ); \
__asm__ ( "mov %["#y"], dx " : [y] "+m" (y) ); \
__asm__ ( "mov %["#w"], esi " : [w] "+m" (w) );
#define window_cursor_set_registers(cursorId) \
__asm__ ( "mov ebx, %[cursorId] " : [cursorId] "+m" (cursorId) );
#define window_tooltip_get_registers(w, widgetIndex) \
__asm__ ( "mov %["#widgetIndex"], ax " : [widgetIndex] "+m" (widgetIndex) ); \
__asm__ ( "mov %["#w"], esi " : [w] "+m" (w) );
#define window_tooltip_set_registers(value) \
__asm__ ( "mov ax, %["#value"] " : [value] "+m" (value) );
#endif
#endif

View File

@ -186,13 +186,15 @@ bool openrct2_initialise()
title_sequences_set_default();
title_sequences_load_presets();
// Hooks to allow RCT2 to call OpenRCT2 functions instead
addhook(0x006E732D, (int)gfx_set_dirty_blocks, 0, (int[]){ EAX, EBX, EDX, EBP, END }, 0); // remove after all drawing is decompiled
addhook(0x006E7499, (int)gfx_redraw_screen_rect, 0, (int[]){ EAX, EBX, EDX, EBP, END }, 0); // remove when 0x6E7FF3 is decompiled
if (!rct2_init())
return false;
openrct2_copy_original_user_files_over();
addhook(0x006E732D, (int)gfx_set_dirty_blocks, 0, (int[]){EAX, EBX, EDX, EBP, END}, 0); // remove after all drawing is decompiled
Mixer_Init(NULL);
return true;
}

View File

@ -42,39 +42,38 @@ rct_widget window_about_widgets[] = {
{ WIDGETS_END },
};
static void window_about_emptysub() { }
static void window_about_mouseup();
static void window_about_paint();
static void window_about_mouseup(rct_window *w, int widgetIndex);
static void window_about_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void* window_about_events[] = {
window_about_emptysub,
static rct_window_event_list window_about_events = {
NULL,
window_about_mouseup,
window_about_emptysub,
window_about_emptysub,
window_about_emptysub,
window_about_emptysub,
window_about_emptysub,
window_about_emptysub,
window_about_emptysub,
window_about_emptysub,
window_about_emptysub,
window_about_emptysub,
window_about_emptysub,
window_about_emptysub,
window_about_emptysub,
window_about_emptysub,
window_about_emptysub,
window_about_emptysub,
window_about_emptysub,
window_about_emptysub,
window_about_emptysub,
window_about_emptysub,
window_about_emptysub,
window_about_emptysub,
window_about_emptysub,
window_about_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_about_paint,
window_about_emptysub
NULL
};
/**
@ -93,7 +92,7 @@ void window_about_open()
window = window_create_centred(
400,
330,
(uint32*)window_about_events,
&window_about_events,
WC_ABOUT,
0
);
@ -110,13 +109,8 @@ void window_about_open()
*
* rct2: 0x0066D4D5
*/
static void window_about_mouseup()
static void window_about_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -134,13 +128,9 @@ static void window_about_mouseup()
*
* rct2: 0x0066D321
*/
static void window_about_paint()
static void window_about_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
int x, y;
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);

View File

@ -63,44 +63,43 @@ rct_widget window_banner_widgets[] = {
{ WIDGETS_END },
};
static void window_banner_emptysub() { }
static void window_banner_mouseup();
static void window_banner_mouseup(rct_window *w, int widgetIndex);
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();
static void window_banner_paint();
static void window_banner_unknown_14();
static void window_banner_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_banner_textinput(rct_window *w, int widgetIndex, char *text);
static void window_banner_unknown_14(rct_window *w);
static void window_banner_invalidate(rct_window *w);
static void window_banner_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void* window_banner_events[] = {
window_banner_emptysub,
static rct_window_event_list window_banner_events = {
NULL,
window_banner_mouseup,
window_banner_emptysub,
NULL,
window_banner_mousedown,
window_banner_dropdown,
window_banner_emptysub,
window_banner_emptysub,
window_banner_emptysub,
window_banner_emptysub,
window_banner_emptysub,
window_banner_emptysub,
window_banner_emptysub,
window_banner_emptysub,
window_banner_emptysub,
window_banner_emptysub,
window_banner_emptysub,
window_banner_emptysub,
window_banner_emptysub,
window_banner_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_banner_textinput,
window_banner_unknown_14,
window_banner_emptysub,
window_banner_emptysub,
window_banner_emptysub,
window_banner_emptysub,
NULL,
NULL,
NULL,
NULL,
window_banner_invalidate,
window_banner_paint,
window_banner_emptysub
window_banner_paint,
NULL
};
/**
@ -118,7 +117,7 @@ void window_banner_open(rct_windownumber number)
if (w != NULL)
return;
w = window_create_auto_pos(WW, WH, (uint32*)window_banner_events, WC_BANNER, WF_2);
w = window_create_auto_pos(WW, WH, &window_banner_events, WC_BANNER, WF_2);
w->widgets = window_banner_widgets;
w->enabled_widgets =
(1 << WIDX_CLOSE) |
@ -174,13 +173,8 @@ void window_banner_open(rct_windownumber number)
}
/* rct2: 0x6ba4d6*/
static void window_banner_mouseup()
static void window_banner_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
rct_banner* banner = &gBanners[w->number];
int x = banner->x << 5;
int y = banner->y << 5;
@ -251,26 +245,25 @@ static void window_banner_mousedown(int widgetIndex, rct_window*w, rct_widget* w
}
/* rct2: 0x6ba517 */
static void window_banner_dropdown()
{
short widgetIndex, dropdownIndex;
rct_window* w;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
static void window_banner_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
rct_banner* banner = &gBanners[w->number];
switch(widgetIndex){
case WIDX_MAIN_COLOR:
if ( dropdownIndex == 0xFFFF) return;
if (dropdownIndex == -1)
break;
banner->colour = (uint8)dropdownIndex;
window_invalidate(w);
break;
case WIDX_TEXT_COLOR_DROPDOWN_BUTTON:
if ( dropdownIndex == 0xFFFF) return;
if (dropdownIndex == -1)
break;
banner->text_colour = dropdownIndex + 1;
//Can be replaced with a buffer 34 chars wide ( 32 character + 1 colour_format + 1 '\0')
// Can be replaced with a buffer 34 chars wide ( 32 character + 1 colour_format + 1 '\0')
uint8* text_buffer = RCT2_ADDRESS(RCT2_ADDRESS_COMMON_STRING_FORMAT_BUFFER, uint8);
format_string(text_buffer, banner->string_idx, 0);
@ -298,18 +291,9 @@ static void window_banner_dropdown()
}
/* rct2: 0x6ba50c */
static void window_banner_textinput()
static void window_banner_textinput(rct_window *w, int widgetIndex, char *text)
{
short widgetIndex;
rct_window *w;
uint8 result;
uint8* text;
window_text_input_get_registers(w, widgetIndex, result, text);
if (widgetIndex == WIDX_BANNER_TEXT && result) {
if (widgetIndex == WIDX_BANNER_TEXT && text != NULL) {
rct_banner* banner = &gBanners[w->number];
uint8* text_buffer = RCT2_ADDRESS(RCT2_ADDRESS_COMMON_STRING_FORMAT_BUFFER, uint8);
@ -330,11 +314,8 @@ static void window_banner_textinput()
}
/* rct2: 0x006BA44D */
static void window_banner_invalidate()
static void window_banner_invalidate(rct_window *w)
{
rct_window* w;
window_get_register(w);
colour_scheme_update(w);
rct_banner* banner = &gBanners[w->number];
@ -367,13 +348,8 @@ static void window_banner_invalidate()
}
/* rct2:0x006BA4C5 */
static void window_banner_paint()
static void window_banner_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
// Draw viewport
@ -383,11 +359,8 @@ static void window_banner_paint()
}
/* rct2: 0x6BA7B5 */
static void window_banner_unknown_14()
static void window_banner_unknown_14(rct_window *w)
{
rct_window* w;
window_get_register(w);
rct_viewport* view = w->viewport;
w->viewport = 0;

View File

@ -32,41 +32,40 @@ rct_widget window_changelog_widgets[] = {
{ WIDGETS_END },
};
static void window_changelog_emptysub() { }
static void window_changelog_close();
static void window_changelog_mouseup();
static void window_changelog_resize();
static void window_changelog_scrollgetsize();
static void window_changelog_invalidate();
static void window_changelog_paint();
static void window_changelog_scrollpaint();
static void window_changelog_close(rct_window *w);
static void window_changelog_mouseup(rct_window *w, int widgetIndex);
static void window_changelog_resize(rct_window *w);
static void window_changelog_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height);
static void window_changelog_invalidate(rct_window *w);
static void window_changelog_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_changelog_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex);
static void* window_changelog_events[] = {
static rct_window_event_list window_changelog_events = {
window_changelog_close,
window_changelog_mouseup,
window_changelog_resize,
window_changelog_emptysub,
window_changelog_emptysub,
window_changelog_emptysub,
window_changelog_emptysub,
window_changelog_emptysub,
window_changelog_emptysub,
window_changelog_emptysub,
window_changelog_emptysub,
window_changelog_emptysub,
window_changelog_emptysub,
window_changelog_emptysub,
window_changelog_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_changelog_scrollgetsize,
window_changelog_emptysub,
window_changelog_emptysub,
window_changelog_emptysub,
window_changelog_emptysub,
window_changelog_emptysub,
window_changelog_emptysub,
window_changelog_emptysub,
window_changelog_emptysub,
window_changelog_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_changelog_invalidate,
window_changelog_paint,
window_changelog_scrollpaint
@ -98,7 +97,7 @@ rct_window *window_changelog_open()
window = window_create_centred(
screenWidth * 4 / 5,
screenHeight * 4 / 5,
(uint32*)window_changelog_events,
&window_changelog_events,
WC_CHANGELOG,
WF_RESIZABLE
);
@ -116,18 +115,13 @@ rct_window *window_changelog_open()
return window;
}
static void window_changelog_close()
static void window_changelog_close(rct_window *w)
{
window_changelog_dispose_file();
}
static void window_changelog_mouseup()
static void window_changelog_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -135,12 +129,8 @@ static void window_changelog_mouseup()
}
}
static void window_changelog_resize()
static void window_changelog_resize(rct_window *w)
{
rct_window *w;
window_get_register(w);
int screenWidth = RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, uint16);
int screenHeight = RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_HEIGHT, uint16);
@ -159,24 +149,14 @@ static void window_changelog_resize()
}
}
static void window_changelog_scrollgetsize()
static void window_changelog_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height)
{
rct_window *w;
int width, height;
window_get_register(w);
width = _changelogLongestLineWidth + 4;
height = _changelogNumLines * 11;
window_scrollsize_set_registers(width, height);
*width = _changelogLongestLineWidth + 4;
*height = _changelogNumLines * 11;
}
static void window_changelog_invalidate()
static void window_changelog_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
window_changelog_widgets[WIDX_BACKGROUND].right = w->width - 1;
window_changelog_widgets[WIDX_BACKGROUND].bottom = w->height - 1;
window_changelog_widgets[WIDX_TITLE].right = w->width - 2;
@ -188,23 +168,13 @@ static void window_changelog_invalidate()
window_changelog_widgets[WIDX_SCROLL].bottom = w->height - 15;
}
static void window_changelog_paint()
static void window_changelog_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
}
static void window_changelog_scrollpaint()
static void window_changelog_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
uint16 *currentFontFlags = RCT2_ADDRESS(RCT2_ADDRESS_CURRENT_FONT_FLAGS, uint16);
sint16 *currentFontSpriteBase = RCT2_ADDRESS(RCT2_ADDRESS_CURRENT_FONT_SPRITE_BASE, sint16);
*currentFontFlags = 0;

View File

@ -267,148 +267,147 @@ static rct_widget *window_cheats_page_widgets[] = {
window_cheats_rides_widgets,
};
static void window_cheats_emptysub() { }
static void window_cheats_money_mouseup();
static void window_cheats_guests_mouseup();
static void window_cheats_misc_mouseup();
static void window_cheats_rides_mouseup();
static void window_cheats_misc_tool_update();
static void window_cheats_misc_tool_down();
static void window_cheats_money_mouseup(rct_window *w, int widgetIndex);
static void window_cheats_guests_mouseup(rct_window *w, int widgetIndex);
static void window_cheats_misc_mouseup(rct_window *w, int widgetIndex);
static void window_cheats_rides_mouseup(rct_window *w, int widgetIndex);
static void window_cheats_misc_tool_update(rct_window* w, int widgetIndex, int x, int y);
static void window_cheats_misc_tool_down(rct_window* w, int widgetIndex, int x, int y);
static void window_cheats_update(rct_window *w);
static void window_cheats_invalidate();
static void window_cheats_paint();
static void window_cheats_invalidate(rct_window *w);
static void window_cheats_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_cheats_set_page(rct_window *w, int page);
static void* window_cheats_money_events[] = {
window_cheats_emptysub,
static rct_window_event_list window_cheats_money_events = {
NULL,
window_cheats_money_mouseup,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
NULL,
NULL,
NULL,
NULL,
window_cheats_update,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_cheats_invalidate,
window_cheats_paint,
window_cheats_emptysub
NULL
};
static void* window_cheats_guests_events[] = {
window_cheats_emptysub,
static rct_window_event_list window_cheats_guests_events = {
NULL,
window_cheats_guests_mouseup,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
NULL,
NULL,
NULL,
NULL,
window_cheats_update,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_cheats_invalidate,
window_cheats_paint,
window_cheats_emptysub
NULL
};
static void* window_cheats_misc_events[] = {
window_cheats_emptysub,
static rct_window_event_list window_cheats_misc_events = {
NULL,
window_cheats_misc_mouseup,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
NULL,
NULL,
NULL,
NULL,
window_cheats_update,
window_cheats_emptysub,
window_cheats_emptysub,
NULL,
NULL,
window_cheats_misc_tool_update,
window_cheats_misc_tool_down,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_cheats_invalidate,
window_cheats_paint,
window_cheats_emptysub
NULL
};
static void* window_cheats_rides_events[] = {
window_cheats_emptysub,
static rct_window_event_list window_cheats_rides_events = {
NULL,
window_cheats_rides_mouseup,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
NULL,
NULL,
NULL,
NULL,
window_cheats_update,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
window_cheats_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_cheats_invalidate,
window_cheats_paint,
window_cheats_emptysub
NULL
};
static void* window_cheats_page_events[] = {
window_cheats_money_events,
window_cheats_guests_events,
window_cheats_misc_events,
window_cheats_rides_events,
static rct_window_event_list *window_cheats_page_events[] = {
&window_cheats_money_events,
&window_cheats_guests_events,
&window_cheats_misc_events,
&window_cheats_rides_events,
};
static uint64 window_cheats_page_enabled_widgets[] = {
@ -762,7 +761,7 @@ void window_cheats_open()
if (window != NULL)
return;
window = window_create(32, 32, WW, WH, (uint32*)window_cheats_money_events, WC_CHEATS, 0);
window = window_create(32, 32, WW, WH, &window_cheats_money_events, WC_CHEATS, 0);
window->widgets = window_cheats_money_widgets;
window->enabled_widgets = window_cheats_page_enabled_widgets[0];
window_init_scroll_widgets(window);
@ -770,13 +769,8 @@ void window_cheats_open()
park_rating_spinner_value = get_forced_park_rating() >= 0 ? get_forced_park_rating() : 999;
}
static void window_cheats_money_mouseup()
static void window_cheats_money_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -796,13 +790,8 @@ static void window_cheats_money_mouseup()
}
}
static void window_cheats_guests_mouseup()
static void window_cheats_guests_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -885,13 +874,8 @@ static void window_cheats_guests_mouseup()
}
}
static void window_cheats_misc_mouseup()
static void window_cheats_misc_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -987,13 +971,8 @@ static void window_cheats_misc_mouseup()
}
}
static void window_cheats_rides_mouseup()
static void window_cheats_rides_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -1067,12 +1046,10 @@ static void window_cheats_update(rct_window *w)
}
}
static void window_cheats_invalidate()
static void window_cheats_invalidate(rct_window *w)
{
int i;
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
rct_widget *widgets = window_cheats_page_widgets[w->page];
@ -1114,13 +1091,8 @@ static void window_cheats_invalidate()
w->widgets[WIDX_TITLE].image = window_cheats_page_titles[w->page];
}
static void window_cheats_paint()
static void window_cheats_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
window_cheats_draw_tab_images(dpi, w);
@ -1207,15 +1179,10 @@ static void window_cheats_set_page(rct_window *w, int page)
window_invalidate(w);
}
static void window_cheats_misc_tool_update()
static void window_cheats_misc_tool_update(rct_window* w, int widgetIndex, int x, int y)
{
short widgetIndex;
rct_window* w;
short x, y;
window_tool_get_registers(w, widgetIndex, x, y);
if (widgetIndex != WIDX_ZERO_CLEARANCE) return;
if (widgetIndex != WIDX_ZERO_CLEARANCE)
return;
map_invalidate_selection_rect();
@ -1236,15 +1203,10 @@ static void window_cheats_misc_tool_update()
RCT2_GLOBAL(RCT2_ADDRESS_PICKEDUP_PEEP_SPRITE, sint32) = -1;
}
static void window_cheats_misc_tool_down()
static void window_cheats_misc_tool_down(rct_window* w, int widgetIndex, int x, int y)
{
short widgetIndex;
rct_window* w;
short x, y;
window_tool_get_registers(w, widgetIndex, x, y);
if (widgetIndex != WIDX_ZERO_CLEARANCE) return;
if (widgetIndex != WIDX_ZERO_CLEARANCE)
return;
int dest_x, dest_y;
footpath_get_coordinates_from_pos(x, y + 16, &dest_x, &dest_y, NULL, NULL);

View File

@ -55,44 +55,43 @@ rct_widget window_clear_scenery_widgets[] = {
static int window_clear_scenery_should_close();
static void window_clear_scenery_emptysub() { }
static void window_clear_scenery_close();
static void window_clear_scenery_mouseup();
static void window_clear_scenery_close(rct_window *w);
static void window_clear_scenery_mouseup(rct_window *w, int widgetIndex);
static void window_clear_scenery_update(rct_window *w);
static void window_clear_scenery_invalidate();
static void window_clear_scenery_paint();
static void window_clear_scenery_textinput();
static void window_clear_scenery_invalidate(rct_window *w);
static void window_clear_scenery_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_clear_scenery_textinput(rct_window *w, int widgetIndex, char *text);
static void window_clear_scenery_inputsize(rct_window *w);
static void* window_clear_scenery_events[] = {
static rct_window_event_list window_clear_scenery_events = {
window_clear_scenery_close,
window_clear_scenery_mouseup,
window_clear_scenery_emptysub,
window_clear_scenery_emptysub,
window_clear_scenery_emptysub,
window_clear_scenery_emptysub,
NULL,
NULL,
NULL,
NULL,
window_clear_scenery_update,
window_clear_scenery_emptysub,
window_clear_scenery_emptysub,
window_clear_scenery_emptysub,
window_clear_scenery_emptysub,
window_clear_scenery_emptysub,
window_clear_scenery_emptysub,
window_clear_scenery_emptysub,
window_clear_scenery_emptysub,
window_clear_scenery_emptysub,
window_clear_scenery_emptysub,
window_clear_scenery_emptysub,
window_clear_scenery_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_clear_scenery_textinput,
window_clear_scenery_emptysub,
window_clear_scenery_emptysub,
window_clear_scenery_emptysub,
window_clear_scenery_emptysub,
window_clear_scenery_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
window_clear_scenery_invalidate,
window_clear_scenery_paint,
window_clear_scenery_emptysub
NULL
};
/**
@ -107,7 +106,7 @@ void window_clear_scenery_open()
if (window_find_by_class(WC_CLEAR_SCENERY) != NULL)
return;
window = window_create(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, uint16) - 98, 29, 98, 94, (uint32*)window_clear_scenery_events, WC_CLEAR_SCENERY, 0);
window = window_create(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, uint16) - 98, 29, 98, 94, &window_clear_scenery_events, WC_CLEAR_SCENERY, 0);
window->widgets = window_clear_scenery_widgets;
window->enabled_widgets = (1 << WIDX_CLOSE) | (1 << WIDX_INCREMENT) | (1 << WIDX_DECREMENT) | (1 << WIDX_PREVIEW) |
(1 << WIDX_SMALL_SCENERY) | (1 << WIDX_LARGE_SCENERY) | (1 << WIDX_FOOTPATH);
@ -125,7 +124,7 @@ void window_clear_scenery_open()
*
* rct2: 0x006E6B65
*/
static void window_clear_scenery_close()
static void window_clear_scenery_close(rct_window *w)
{
// If the tool wasn't changed, turn tool off
if (!window_clear_scenery_should_close())
@ -136,13 +135,9 @@ static void window_clear_scenery_close()
*
* rct2: 0x0068E185
*/
static void window_clear_scenery_mouseup()
static void window_clear_scenery_mouseup(rct_window *w, int widgetIndex)
{
rct_window *w;
int limit;
short widgetIndex;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
@ -191,18 +186,12 @@ static void window_clear_scenery_mouseup()
}
}
static void window_clear_scenery_textinput()
static void window_clear_scenery_textinput(rct_window *w, int widgetIndex, char *text)
{
uint8 result;
short widgetIndex;
rct_window *w;
char *text;
int size;
char* end;
window_textinput_get_registers(w, widgetIndex, result, text);
if (widgetIndex != WIDX_PREVIEW || !result)
if (widgetIndex != WIDX_PREVIEW || text == NULL)
return;
size = strtol(text, &end, 10);
@ -236,11 +225,8 @@ static void window_clear_scenery_update(rct_window *w)
*
* rct2: 0x0068E115
*/
static void window_clear_scenery_invalidate()
static void window_clear_scenery_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
// Set the preview image button to be pressed down
@ -257,14 +243,10 @@ static void window_clear_scenery_invalidate()
*
* rct2: 0x0068E130
*/
static void window_clear_scenery_paint()
static void window_clear_scenery_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
int x, y;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
// Draw cost amount

View File

@ -42,60 +42,60 @@ enum WINDOW_RIDE_DEMOLISH_WIDGET_IDX {
// 0x009AEBA0
static rct_widget window_ride_demolish_widgets[] = {
{ WWT_FRAME, 0, 0, WW - 1, 0, WH - 1, STR_NONE, STR_NONE },
{ WWT_CAPTION, 0, 1, WW - 2, 1, 14, STR_DEMOLISH_RIDE, STR_WINDOW_TITLE_TIP },
{ WWT_CLOSEBOX, 0, WW - 13, WW - 3, 2, 13, STR_CLOSE_X, STR_CLOSE_WINDOW_TIP },
{ WWT_DROPDOWN_BUTTON, 0, 10, 94, WH - 20, WH - 9, STR_DEMOLISH, STR_NONE },
{ WWT_DROPDOWN_BUTTON, 0, WW - 95, WW - 11, WH - 20, WH - 9, STR_SAVE_PROMPT_CANCEL, STR_NONE },
{ WIDGETS_END }
{ WWT_FRAME, 0, 0, WW - 1, 0, WH - 1, STR_NONE, STR_NONE },
{ WWT_CAPTION, 0, 1, WW - 2, 1, 14, STR_DEMOLISH_RIDE, STR_WINDOW_TITLE_TIP },
{ WWT_CLOSEBOX, 0, WW - 13, WW - 3, 2, 13, STR_CLOSE_X, STR_CLOSE_WINDOW_TIP },
{ WWT_DROPDOWN_BUTTON, 0, 10, 94, WH - 20, WH - 9, STR_DEMOLISH, STR_NONE },
{ WWT_DROPDOWN_BUTTON, 0, WW - 95, WW - 11, WH - 20, WH - 9, STR_SAVE_PROMPT_CANCEL, STR_NONE },
{ WIDGETS_END }
};
static void window_ride_demolish_emptysub(){}
static void window_ride_demolish_mouseup();
static void window_ride_demolish_invalidate();
static void window_ride_demolish_paint();
static void window_ride_demolish_mouseup(rct_window *w, int widgetIndex);
static void window_ride_demolish_invalidate(rct_window *w);
static void window_ride_demolish_paint(rct_window *w, rct_drawpixelinfo *dpi);
//0x0098E2E4
static void* window_ride_demolish_events[] = {
window_ride_demolish_emptysub,
static rct_window_event_list window_ride_demolish_events = {
NULL,
window_ride_demolish_mouseup,
window_ride_demolish_emptysub,
window_ride_demolish_emptysub,
window_ride_demolish_emptysub,
window_ride_demolish_emptysub,
window_ride_demolish_emptysub,
window_ride_demolish_emptysub,
window_ride_demolish_emptysub,
window_ride_demolish_emptysub,
window_ride_demolish_emptysub,
window_ride_demolish_emptysub,
window_ride_demolish_emptysub,
window_ride_demolish_emptysub,
window_ride_demolish_emptysub,
window_ride_demolish_emptysub,
window_ride_demolish_emptysub,
window_ride_demolish_emptysub,
window_ride_demolish_emptysub,
window_ride_demolish_emptysub,
window_ride_demolish_emptysub,
window_ride_demolish_emptysub,
window_ride_demolish_emptysub,
window_ride_demolish_emptysub,
window_ride_demolish_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_ride_demolish_invalidate,
window_ride_demolish_paint,
window_ride_demolish_emptysub
NULL
};
/** Based off of rct2: 0x006B486A */
void window_ride_demolish_prompt_open(int rideIndex){
void window_ride_demolish_prompt_open(int rideIndex)
{
rct_window *w;
w = window_bring_to_front_by_number(WC_DEMOLISH_RIDE_PROMPT, rideIndex);
if (w != NULL)
return;
w = window_create_centred(WW, WH, (uint32*)window_ride_demolish_events, WC_DEMOLISH_RIDE_PROMPT, WF_TRANSPARENT);
w = window_create_centred(WW, WH, &window_ride_demolish_events, WC_DEMOLISH_RIDE_PROMPT, WF_TRANSPARENT);
w->widgets = window_ride_demolish_widgets;
w->enabled_widgets = (1 << WIDX_CLOSE) | (1 << WIDX_CANCEL) | (1 << WIDX_DEMOLISH);
window_init_scroll_widgets(w);
@ -107,13 +107,9 @@ void window_ride_demolish_prompt_open(int rideIndex){
*
* rct2: 0x006B4933
*/
static void window_ride_demolish_mouseup(){
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex){
static void window_ride_demolish_mouseup(rct_window *w, int widgetIndex)
{
switch (widgetIndex) {
case WIDX_DEMOLISH:
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_STRING_ID, rct_string_id) = STR_CANT_DEMOLISH_RIDE;
game_do_command(0, 1, 0, w->number, GAME_COMMAND_DEMOLISH_RIDE, 0, 0);
@ -121,14 +117,12 @@ static void window_ride_demolish_mouseup(){
case WIDX_CANCEL:
case WIDX_CLOSE:
window_close(w);
break;
}
}
static void window_ride_demolish_invalidate()
static void window_ride_demolish_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
}
@ -136,12 +130,8 @@ static void window_ride_demolish_invalidate()
*
* rct2: 0x006B48E5
*/
static void window_ride_demolish_paint(){
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
static void window_ride_demolish_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
window_draw_widgets(w, dpi);
rct_ride* ride = GET_RIDE(w->number);

View File

@ -56,38 +56,37 @@ sint64 gDropdownItemsArgs[64];
uint32 gDropdownItemsChecked;
uint32 *gDropdownItemsDisabled = RCT2_ADDRESS(0x009DED34, uint32);
static void window_dropdown_emptysub() { }
static void window_dropdown_paint();
static void window_dropdown_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void* window_dropdown_events[] = {
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
window_dropdown_emptysub,
static rct_window_event_list window_dropdown_events = {
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_dropdown_paint,
window_dropdown_emptysub
NULL
};
/**
@ -167,7 +166,7 @@ void window_dropdown_show_text_custom_width(int x, int y, int extray, uint8 colo
x, y + extray,
window_dropdown_widgets[WIDX_BACKGROUND].right + 1,
window_dropdown_widgets[WIDX_BACKGROUND].bottom + 1,
(uint32*)window_dropdown_events,
&window_dropdown_events,
WC_DROPDOWN,
0x02
);
@ -245,7 +244,7 @@ void window_dropdown_show_image(int x, int y, int extray, uint8 colour, uint8 fl
x, y + extray,
window_dropdown_widgets[WIDX_BACKGROUND].right + 1,
window_dropdown_widgets[WIDX_BACKGROUND].bottom + 1,
(uint32*)window_dropdown_events,
&window_dropdown_events,
WC_DROPDOWN,
WF_STICK_TO_FRONT
);
@ -274,85 +273,79 @@ void window_dropdown_close()
window_close_by_class(WC_DROPDOWN);
}
static void window_dropdown_paint()
static void window_dropdown_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
int cell_x, cell_y, l, t, r, b, item, image, colour;
window_draw_widgets(w, dpi);
_dropdown_highlighted_index = RCT2_GLOBAL(0x009DEBA2, sint16);
{
int i, cell_x, cell_y, l, t, r, b, item, image, colour;
for (i = 0; i < gDropdownNumItems; i++) {
cell_x = i % _dropdown_num_columns;
cell_y = i / _dropdown_num_columns;
for (int i = 0; i < gDropdownNumItems; i++) {
cell_x = i % _dropdown_num_columns;
cell_y = i / _dropdown_num_columns;
if (gDropdownItemsFormat[i] == DROPDOWN_SEPARATOR) {
if (gDropdownItemsFormat[i] == DROPDOWN_SEPARATOR) {
l = w->x + 2 + (cell_x * _dropdown_item_width);
t = w->y + 2 + (cell_y * _dropdown_item_height);
r = l + _dropdown_item_width - 1;
t += (_dropdown_item_height / 2);
b = t;
if (w->colours[0] & 0x80) {
gfx_fill_rect(dpi, l, t, r, b, (RCT2_ADDRESS(0x009DEDF4, uint8)[w->colours[0]] | 0x02000000) + 1);
gfx_fill_rect(dpi, l, t + 1, r, b + 1, (RCT2_ADDRESS(0x009DEDF4, uint8)[w->colours[0]] | 0x02000000) + 2);
} else {
gfx_fill_rect(dpi, l, t, r, b,
*((char*)(0x00141FC47 + (w->colours[0] * 8))));
gfx_fill_rect(dpi, l, t + 1, r, b + 1,
*((char*)(0x00141FC4B + (w->colours[0] * 8))));
}
} else {
//
if (i == _dropdown_highlighted_index) {
l = w->x + 2 + (cell_x * _dropdown_item_width);
t = w->y + 2 + (cell_y * _dropdown_item_height);
r = l + _dropdown_item_width - 1;
t += (_dropdown_item_height / 2);
b = t;
b = t + _dropdown_item_height - 1;
gfx_fill_rect(dpi, l, t, r, b, 0x2000000 | 0x2F);
}
if (w->colours[0] & 0x80) {
gfx_fill_rect(dpi, l, t, r, b, (RCT2_ADDRESS(0x009DEDF4, uint8)[w->colours[0]] | 0x02000000) + 1);
gfx_fill_rect(dpi, l, t + 1, r, b + 1, (RCT2_ADDRESS(0x009DEDF4, uint8)[w->colours[0]] | 0x02000000) + 2);
} else {
gfx_fill_rect(dpi, l, t, r, b,
*((char*)(0x00141FC47 + (w->colours[0] * 8))));
gfx_fill_rect(dpi, l, t + 1, r, b + 1,
*((char*)(0x00141FC4B + (w->colours[0] * 8))));
}
item = gDropdownItemsFormat[i];
if (item == (uint16)-1 || item == (uint16)-2) {
// Image item
image = *((uint32*)&gDropdownItemsArgs[i]);
if (item == (uint16)-2 && _dropdown_highlighted_index == i)
image++;
gfx_draw_sprite(
dpi,
image,
w->x + 2 + (cell_x * _dropdown_item_width),
w->y + 2 + (cell_y * _dropdown_item_height), 0
);
} else {
//
if (i == _dropdown_highlighted_index) {
l = w->x + 2 + (cell_x * _dropdown_item_width);
t = w->y + 2 + (cell_y * _dropdown_item_height);
r = l + _dropdown_item_width - 1;
b = t + _dropdown_item_height - 1;
gfx_fill_rect(dpi, l, t, r, b, 0x2000000 | 0x2F);
}
// Text item
if (i < 32)
if (gDropdownItemsChecked & (1 << i))
item++;
item = gDropdownItemsFormat[i];
if (item == (uint16)-1 || item == (uint16)-2) {
// Image item
image = *((uint32*)&gDropdownItemsArgs[i]);
if (item == (uint16)-2 && _dropdown_highlighted_index == i)
image++;
gfx_draw_sprite(
dpi,
image,
w->x + 2 + (cell_x * _dropdown_item_width),
w->y + 2 + (cell_y * _dropdown_item_height), 0
);
} else {
// Text item
// Calculate colour
colour = w->colours[0] & 0x7F;
if (i == _dropdown_highlighted_index)
colour = 2;
if (RCT2_GLOBAL(0x009DED34, uint32) & (1 << i))
if (i < 32)
if (gDropdownItemsChecked & (1 << i))
item++;
colour = (w->colours[0] & 0x7F) | 0x40;
// Calculate colour
colour = w->colours[0] & 0x7F;
if (i == _dropdown_highlighted_index)
colour = 2;
if (RCT2_GLOBAL(0x009DED34, uint32) & (1 << i))
if (i < 32)
colour = (w->colours[0] & 0x7F) | 0x40;
// Draw item string
gfx_draw_string_left_clipped(
dpi,
item,
(void*)(&gDropdownItemsArgs[i]), colour,
w->x + 2 + (cell_x * _dropdown_item_width),
w->y + 1 + (cell_y * _dropdown_item_height),
w->width - 5
);
}
// Draw item string
gfx_draw_string_left_clipped(
dpi,
item,
(void*)(&gDropdownItemsArgs[i]), colour,
w->x + 2 + (cell_x * _dropdown_item_width),
w->y + 1 + (cell_y * _dropdown_item_height),
w->width - 5
);
}
}
}

View File

@ -51,11 +51,9 @@ static rct_widget window_editor_bottom_toolbar_widgets[] = {
{ WIDGETS_END },
};
static void window_editor_bottom_toolbar_emptysub() { }
static void window_editor_bottom_toolbar_mouseup();
static void window_editor_bottom_toolbar_invalidate();
static void window_editor_bottom_toolbar_paint();
static void window_editor_bottom_toolbar_mouseup(rct_window *w, int widgetIndex);
static void window_editor_bottom_toolbar_invalidate(rct_window *w);
static void window_editor_bottom_toolbar_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_editor_bottom_toolbar_jump_back_to_object_selection();
static void window_editor_bottom_toolbar_jump_back_to_landscape_editor();
@ -68,57 +66,57 @@ static void window_editor_bottom_toolbar_jump_forward_to_options_selection();
static void window_editor_bottom_toolbar_jump_forward_to_objective_selection();
static void window_editor_bottom_toolbar_jump_forward_to_save_scenario();
static void* window_editor_bottom_toolbar_events[] = {
window_editor_bottom_toolbar_emptysub,
static rct_window_event_list window_editor_bottom_toolbar_events = {
NULL,
window_editor_bottom_toolbar_mouseup, //0x0066f5ae,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_editor_bottom_toolbar_invalidate, //0x0066f1c9,
window_editor_bottom_toolbar_paint, //0x0066f25c,
window_editor_bottom_toolbar_emptysub
NULL
};
static EMPTY_ARGS_VOID_POINTER* previous_button_mouseup_events[] = {
window_editor_bottom_toolbar_emptysub,
static EMPTY_ARGS_VOID_POINTER *previous_button_mouseup_events[] = {
NULL,
window_editor_bottom_toolbar_jump_back_to_object_selection,
window_editor_bottom_toolbar_jump_back_to_landscape_editor,
window_editor_bottom_toolbar_jump_back_to_invention_list_set_up,
window_editor_bottom_toolbar_jump_back_to_options_selection,
window_editor_bottom_toolbar_emptysub,
NULL,
window_editor_bottom_toolbar_jump_back_to_object_selection,
window_editor_bottom_toolbar_emptysub
NULL
};
static EMPTY_ARGS_VOID_POINTER* next_button_mouseup_events[] = {
static EMPTY_ARGS_VOID_POINTER *next_button_mouseup_events[] = {
window_editor_bottom_toolbar_jump_forward_from_object_selection,
window_editor_bottom_toolbar_jump_forward_to_invention_list_set_up,
window_editor_bottom_toolbar_jump_forward_to_options_selection,
window_editor_bottom_toolbar_jump_forward_to_objective_selection,
window_editor_bottom_toolbar_jump_forward_to_save_scenario,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub,
window_editor_bottom_toolbar_emptysub
NULL,
NULL,
NULL
};
/**
@ -131,7 +129,7 @@ void window_editor_bottom_toolbar_open()
window = window_create(0, RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_HEIGHT, uint16) - 32,
RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, uint16), 32,
(uint32*)window_editor_bottom_toolbar_events,
&window_editor_bottom_toolbar_events,
WC_BOTTOM_TOOLBAR, WF_STICK_TO_FRONT | WF_TRANSPARENT | WF_5);
window->widgets = window_editor_bottom_toolbar_widgets;
@ -394,13 +392,8 @@ void window_editor_bottom_toolbar_jump_forward_to_save_scenario()
*
* rct2: 0x0066F5AE
*/
static void window_editor_bottom_toolbar_mouseup()
static void window_editor_bottom_toolbar_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
if (widgetIndex == WIDX_PREVIOUS_STEP_BUTTON) {
if ((RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_TRACK_DESIGNER) ||
RCT2_GLOBAL(0x13573C8, uint16) == 0x2710 && !(RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_18)) {
@ -425,11 +418,8 @@ void hide_next_step_button() {
*
* rct2: 0x0066F1C9
*/
void window_editor_bottom_toolbar_invalidate() {
rct_window* w;
window_get_register(w);
void window_editor_bottom_toolbar_invalidate(rct_window *w)
{
colour_scheme_update_by_class(w, (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) ? WC_EDITOR_SCENARIO_BOTTOM_TOOLBAR : WC_EDITOR_TRACK_BOTTOM_TOOLBAR);
uint16 screenWidth = RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, uint16);
@ -463,12 +453,8 @@ void window_editor_bottom_toolbar_invalidate() {
*
* rct2: 0x0066F25C
*/
void window_editor_bottom_toolbar_paint() {
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
void window_editor_bottom_toolbar_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
bool drawPreviousButton = false;
bool drawNextButton = false;

View File

@ -70,86 +70,84 @@ static rct_widget window_editor_inventions_list_drag_widgets[] = {
#pragma region Events
static void window_editor_inventions_list_emptysub() { }
static void window_editor_inventions_list_close();
static void window_editor_inventions_list_mouseup();
static void window_editor_inventions_list_close(rct_window *w);
static void window_editor_inventions_list_mouseup(rct_window *w, int widgetIndex);
static void window_editor_inventions_list_update(rct_window *w);
static void window_editor_inventions_list_scrollgetheight();
static void window_editor_inventions_list_scrollmousedown();
static void window_editor_inventions_list_scrollmouseover();
static void window_editor_inventions_list_tooltip();
static void window_editor_inventions_list_cursor();
static void window_editor_inventions_list_invalidate();
static void window_editor_inventions_list_paint();
static void window_editor_inventions_list_scrollpaint();
static void window_editor_inventions_list_scrollgetheight(rct_window *w, int scrollIndex, int *width, int *height);
static void window_editor_inventions_list_scrollmousedown(rct_window *w, int scrollIndex, int x, int y);
static void window_editor_inventions_list_scrollmouseover(rct_window *w, int scrollIndex, int x, int y);
static void window_editor_inventions_list_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId);
static void window_editor_inventions_list_cursor(rct_window *w, int widgetIndex, int x, int y, int *cursorId);
static void window_editor_inventions_list_invalidate(rct_window *w);
static void window_editor_inventions_list_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_editor_inventions_list_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex);
static void window_editor_inventions_list_drag_cursor();
static void window_editor_inventions_list_drag_moved();
static void window_editor_inventions_list_drag_paint();
static void window_editor_inventions_list_drag_cursor(rct_window *w, int widgetIndex, int x, int y, int *cursorId);
static void window_editor_inventions_list_drag_moved(rct_window* w, int x, int y);
static void window_editor_inventions_list_drag_paint(rct_window *w, rct_drawpixelinfo *dpi);
// 0x0098177C
static void* window_editor_inventions_list_events[] = {
static rct_window_event_list window_editor_inventions_list_events = {
window_editor_inventions_list_close,
window_editor_inventions_list_mouseup,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
NULL,
NULL,
NULL,
NULL,
window_editor_inventions_list_update,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_editor_inventions_list_scrollgetheight,
window_editor_inventions_list_scrollmousedown,
window_editor_inventions_list_emptysub,
NULL,
window_editor_inventions_list_scrollmouseover,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
NULL,
NULL,
NULL,
window_editor_inventions_list_tooltip,
window_editor_inventions_list_cursor,
window_editor_inventions_list_emptysub,
NULL,
window_editor_inventions_list_invalidate,
window_editor_inventions_list_paint,
window_editor_inventions_list_scrollpaint
};
// 0x009817EC
static void* window_editor_inventions_list_drag_events[] = {
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
window_editor_inventions_list_emptysub,
static rct_window_event_list window_editor_inventions_list_drag_events = {
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_editor_inventions_list_drag_cursor,
window_editor_inventions_list_drag_moved,
window_editor_inventions_list_emptysub,
NULL,
window_editor_inventions_list_drag_paint,
window_editor_inventions_list_emptysub
NULL
};
#pragma endregion
@ -532,7 +530,7 @@ void window_editor_inventions_list_open()
w = window_create_centred(
600,
400,
(uint32*)window_editor_inventions_list_events,
&window_editor_inventions_list_events,
WC_EDITOR_INVENTION_LIST,
WF_2
);
@ -554,7 +552,7 @@ void window_editor_inventions_list_open()
*
* rct2: 0x006853D2
*/
static void window_editor_inventions_list_close()
static void window_editor_inventions_list_close(rct_window *w)
{
sub_685A79();
}
@ -563,13 +561,8 @@ static void window_editor_inventions_list_close()
*
* rct2: 0x0068521B
*/
static void window_editor_inventions_list_mouseup()
static void window_editor_inventions_list_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -615,45 +608,33 @@ static void window_editor_inventions_list_update(rct_window *w)
*
* rct2: 0x00685239
*/
static void window_editor_inventions_list_scrollgetheight()
static void window_editor_inventions_list_scrollgetheight(rct_window *w, int scrollIndex, int *width, int *height)
{
rct_window *w;
short scrollIndex;
rct_research_item *researchItem;
int width, height;
window_scroll_get_registers(w, scrollIndex);
width = 0;
height = 0;
*height = 0;
// Count / skip pre-researched items
for (researchItem = gResearchItems; researchItem->entryIndex != RESEARCHED_ITEMS_SEPARATOR; researchItem++)
height += 10;
*height += 10;
if (scrollIndex == 1) {
researchItem++;
// Count non pre-researched items
height = 0;
*height = 0;
for (; researchItem->entryIndex != RESEARCHED_ITEMS_END; researchItem++)
height += 10;
*height += 10;
}
window_scrollsize_set_registers(width, height);
}
/**
*
* rct2: 0x006852D4
*/
static void window_editor_inventions_list_scrollmousedown()
static void window_editor_inventions_list_scrollmousedown(rct_window *w, int scrollIndex, int x, int y)
{
rct_window *w;
rct_research_item *researchItem;
short scrollIndex, x, y;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
researchItem = window_editor_inventions_list_get_item_from_scroll_y(scrollIndex, y);
if (researchItem == NULL)
@ -670,14 +651,10 @@ static void window_editor_inventions_list_scrollmousedown()
*
* rct2: 0x00685275
*/
static void window_editor_inventions_list_scrollmouseover()
static void window_editor_inventions_list_scrollmouseover(rct_window *w, int scrollIndex, int x, int y)
{
rct_window *w;
short scrollIndex, x, y;
rct_research_item *researchItem;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
researchItem = window_editor_inventions_list_get_item_from_scroll_y(scrollIndex, y);
if (researchItem != WindowHighlightedItem(w)) {
WindowHighlightedItem(w) = researchItem;
@ -689,7 +666,7 @@ static void window_editor_inventions_list_scrollmouseover()
*
* rct2: 0x0068526B
*/
static void window_editor_inventions_list_tooltip()
static void window_editor_inventions_list_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId)
{
RCT2_GLOBAL(0x013CE952, uint16) = 3159;
}
@ -698,22 +675,19 @@ static void window_editor_inventions_list_tooltip()
*
* rct2: 0x00685291
*/
static void window_editor_inventions_list_cursor()
static void window_editor_inventions_list_cursor(rct_window *w, int widgetIndex, int x, int y, int *cursorId)
{
rct_window *w;
rct_research_item *researchItem;
short widgetIndex, x, y;
int scrollIndex, cursorId;
int scrollIndex;
window_cursor_get_registers(w, widgetIndex, x, y);
if (widgetIndex == WIDX_PRE_RESEARCHED_SCROLL) {
switch (widgetIndex) {
case WIDX_PRE_RESEARCHED_SCROLL:
scrollIndex = 0;
} else if (widgetIndex == WIDX_RESEARCH_ORDER_SCROLL) {
break;
case WIDX_RESEARCH_ORDER_SCROLL:
scrollIndex = 1;
} else {
cursorId = -1;
window_cursor_set_registers(cursorId);
break;
default:
return;
}
@ -722,24 +696,18 @@ static void window_editor_inventions_list_cursor()
return;
if (researchItem->entryIndex < (uint32)RESEARCHED_ITEMS_END_2 && research_item_is_always_researched(researchItem)) {
cursorId = -1;
window_cursor_set_registers(cursorId);
return;
}
cursorId = CURSOR_HAND_OPEN;
window_cursor_set_registers(cursorId);
*cursorId = CURSOR_HAND_OPEN;
}
/**
*
* rct2: 0x00685392
*/
static void window_editor_inventions_list_invalidate()
static void window_editor_inventions_list_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
w->pressed_widgets |= 1 << WIDX_PREVIEW;
@ -753,17 +721,13 @@ static void window_editor_inventions_list_invalidate()
*
* rct2: 0x00684EE0
*/
static void window_editor_inventions_list_paint()
static void window_editor_inventions_list_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
rct_widget *widget;
rct_research_item *researchItem;
rct_string_id stringId;
int x, y, width;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
// Tab image
@ -833,11 +797,8 @@ static void window_editor_inventions_list_paint()
*
* rct2: 0x006850BD
*/
static void window_editor_inventions_list_scrollpaint()
static void window_editor_inventions_list_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
{
rct_window *w;
rct_drawpixelinfo *dpi;
short scrollIndex;
uint32 colour;
rct_research_item *researchItem;
int left, top, bottom, itemY, disableItemMovement;
@ -845,8 +806,6 @@ static void window_editor_inventions_list_scrollpaint()
rct_string_id stringId;
char buffer[256], *ptr;
window_scrollpaint_get_registers(w, dpi, scrollIndex);
// Draw background
colour = RCT2_GLOBAL(0x0141FC48 + (w->colours[1] * 8), uint8);
colour = (colour << 24) | (colour << 16) | (colour << 8) | colour;
@ -944,7 +903,7 @@ static void window_editor_inventions_list_drag_open(rct_research_item *researchI
RCT2_GLOBAL(RCT2_ADDRESS_TOOLTIP_CURSOR_Y, uint16) - 7,
stringWidth,
14,
(uint32*)window_editor_inventions_list_drag_events,
&window_editor_inventions_list_drag_events,
WC_EDITOR_INVENTION_LIST_DRAG,
WF_STICK_TO_FRONT | WF_TRANSPARENT | WF_NO_SNAPPING
);
@ -959,14 +918,10 @@ static void window_editor_inventions_list_drag_open(rct_research_item *researchI
*
* rct2: 0x0068549C
*/
static void window_editor_inventions_list_drag_cursor()
static void window_editor_inventions_list_drag_cursor(rct_window *w, int widgetIndex, int x, int y, int *cursorId)
{
rct_window *w, *inventionListWindow;
rct_window *inventionListWindow;
rct_research_item *researchItem;
short widgetIndex, x, y;
int cursorId;
window_cursor_get_registers(w, widgetIndex, x, y);
inventionListWindow = window_find_by_class(WC_EDITOR_INVENTION_LIST);
if (inventionListWindow != NULL) {
@ -977,21 +932,16 @@ static void window_editor_inventions_list_drag_cursor()
}
}
cursorId = CURSOR_HAND_CLOSED;
window_cursor_set_registers(cursorId);
*cursorId = CURSOR_HAND_CLOSED;
}
/**
*
* rct2: 0x00685412
*/
static void window_editor_inventions_list_drag_moved()
static void window_editor_inventions_list_drag_moved(rct_window* w, int x, int y)
{
rct_window *w;
rct_research_item *researchItem;
short x, y, widgetIndex;
window_cursor_get_registers(w, widgetIndex, x, y);
researchItem = get_research_item_at(x, y);
if (researchItem != NULL)
@ -1006,15 +956,11 @@ static void window_editor_inventions_list_drag_moved()
*
* rct2: 0x006853D9
*/
static void window_editor_inventions_list_drag_paint()
static void window_editor_inventions_list_drag_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
rct_string_id stringId;
int x, y;
window_paint_get_registers(w, dpi);
x = w->x;
y = w->y + 2;
stringId = research_item_get_name(_editorInventionsListDraggedItem->entryIndex & 0xFFFFFF);

View File

@ -23,39 +23,37 @@
#include "../interface/widget.h"
#include "../interface/window.h"
static void window_editor_main_emptysub() { }
static void window_editor_main_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_editor_main_paint();
static void* window_editor_main_events[] = {
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
window_editor_main_emptysub,
static rct_window_event_list window_editor_main_events = {
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_editor_main_paint,// 0x0066FC97, //window_editor_main_paint,
window_editor_main_emptysub,
NULL,
};
static rct_widget window_editor_main_widgets[] = {
@ -75,7 +73,7 @@ void window_editor_main_open()
window_editor_main_widgets[0].right = RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, uint16);
window_editor_main_widgets[0].bottom = RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_HEIGHT, uint16);
window = window_create(0, 0, window_editor_main_widgets[0].right, window_editor_main_widgets[0].bottom,
(uint32*)window_editor_main_events, WC_MAIN_WINDOW, WF_STICK_TO_BACK);
&window_editor_main_events, WC_MAIN_WINDOW, WF_STICK_TO_BACK);
window->widgets = window_editor_main_widgets;
viewport_create(window, window->x, window->y, window->width, window->height, 0, 0x0FFF, 0x0FFF, 0, 0x1, -1);
@ -96,11 +94,7 @@ void window_editor_main_open()
* rct2: 0x0066FC97
* This function immediately jumps to 0x00685BE1
*/
static void window_editor_main_paint() {
rct_window* w;
rct_drawpixelinfo* dpi;
window_paint_get_registers(w, dpi);
static void window_editor_main_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
viewport_render(dpi, w->viewport, dpi->x, dpi->y, dpi->x + dpi->width, dpi->y + dpi->height);
}

View File

@ -154,52 +154,50 @@ static rct_widget window_editor_object_selection_widgets[] = {
#pragma region Events
static void window_editor_object_selection_emptysub() { }
static void window_editor_object_selection_close();
static void window_editor_object_selection_mouseup();
static void window_editor_object_selection_resize();
static void window_editor_object_selection_close(rct_window *w);
static void window_editor_object_selection_mouseup(rct_window *w, int widgetIndex);
static void window_editor_object_selection_resize(rct_window *w);
static void window_editor_object_selection_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_editor_object_selection_dropdown();
static void window_editor_object_selection_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_editor_object_selection_update(rct_window *w);
static void window_editor_object_selection_scrollgetsize();
static void window_editor_object_selection_scroll_mousedown();
static void window_editor_object_selection_scroll_mouseover();
static void window_editor_object_selection_tooltip();
static void window_editor_object_selection_invalidate();
static void window_editor_object_selection_paint();
static void window_editor_object_selection_scrollpaint();
static void window_editor_object_selection_textinput();
static void window_editor_object_selection_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height);
static void window_editor_object_selection_scroll_mousedown(rct_window *w, int scrollIndex, int x, int y);
static void window_editor_object_selection_scroll_mouseover(rct_window *w, int scrollIndex, int x, int y);
static void window_editor_object_selection_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId);
static void window_editor_object_selection_invalidate(rct_window *w);
static void window_editor_object_selection_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_editor_object_selection_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex);
static void window_editor_object_selection_textinput(rct_window *w, int widgetIndex, char *text);
static void* window_editor_object_selection_events[] = {
static rct_window_event_list window_editor_object_selection_events = {
window_editor_object_selection_close,
(void*)window_editor_object_selection_mouseup,
(void*)window_editor_object_selection_resize,
(void*)window_editor_object_selection_mousedown,
(void*)window_editor_object_selection_dropdown,
(void*)window_editor_object_selection_emptysub,
(void*)window_editor_object_selection_update,
(void*)window_editor_object_selection_emptysub,
(void*)window_editor_object_selection_emptysub,
(void*)window_editor_object_selection_emptysub,
(void*)window_editor_object_selection_emptysub,
(void*)window_editor_object_selection_emptysub,
(void*)window_editor_object_selection_emptysub,
(void*)window_editor_object_selection_emptysub,
(void*)window_editor_object_selection_emptysub,
(void*)window_editor_object_selection_scrollgetsize,
(void*)window_editor_object_selection_scroll_mousedown,
(void*)window_editor_object_selection_emptysub,
(void*)window_editor_object_selection_scroll_mouseover,
(void*)window_editor_object_selection_textinput,
(void*)window_editor_object_selection_emptysub,
(void*)window_editor_object_selection_emptysub,
(void*)window_editor_object_selection_tooltip,
(void*)window_editor_object_selection_emptysub,
(void*)window_editor_object_selection_emptysub,
(void*)window_editor_object_selection_invalidate,
(void*)window_editor_object_selection_paint,
(void*)window_editor_object_selection_scrollpaint
window_editor_object_selection_mouseup,
window_editor_object_selection_resize,
window_editor_object_selection_mousedown,
window_editor_object_selection_dropdown,
NULL,
window_editor_object_selection_update,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_editor_object_selection_scrollgetsize,
window_editor_object_selection_scroll_mousedown,
NULL,
window_editor_object_selection_scroll_mouseover,
window_editor_object_selection_textinput,
NULL,
NULL,
window_editor_object_selection_tooltip,
NULL,
NULL,
window_editor_object_selection_invalidate,
window_editor_object_selection_paint,
window_editor_object_selection_scrollpaint
};
#pragma endregion
@ -386,7 +384,7 @@ void window_editor_object_selection_open()
window = window_create_centred(
600,
400,
(uint32*)window_editor_object_selection_events,
&window_editor_object_selection_events,
WC_EDITOR_OBJECT_SELECTION,
WF_10 | WF_RESIZABLE
);
@ -735,11 +733,8 @@ void unload_unselected_objects(){
*
* rct2: 0x006AB199
*/
static void window_editor_object_selection_close()
static void window_editor_object_selection_close(rct_window *w)
{
rct_window* w;
window_get_register(w);
//if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_EDITOR))
// return;
@ -770,13 +765,8 @@ static void window_editor_object_selection_close()
*
* rct2: 0x006AAFAB
*/
static void window_editor_object_selection_mouseup()
static void window_editor_object_selection_mouseup(rct_window *w, int widgetIndex)
{
rct_window *w;
short widgetIndex;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_EDITOR) {
@ -877,12 +867,8 @@ static void window_editor_object_selection_mouseup()
}
}
static void window_editor_object_selection_resize()
static void window_editor_object_selection_resize(rct_window *w)
{
rct_window *w;
window_get_register(w);
window_set_resize(w, 600, 400, 1200, 1000);
}
@ -920,16 +906,11 @@ void window_editor_object_selection_mousedown(int widgetIndex, rct_window*w, rct
}
}
static void window_editor_object_selection_dropdown()
static void window_editor_object_selection_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
short dropdownIndex;
short widgetIndex;
rct_window *w;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
if (dropdownIndex == -1)
return;
switch (widgetIndex) {
case WIDX_FILTER_DROPDOWN:
_filter_flags ^= (1 << dropdownIndex);
@ -947,31 +928,17 @@ static void window_editor_object_selection_dropdown()
*
* rct2: 0x006AB031
*/
static void window_editor_object_selection_scrollgetsize()
static void window_editor_object_selection_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height)
{
rct_window *w;
short scrollIndex;
int width, height;
window_scroll_get_registers(w, scrollIndex);
width = 0;
height = _numListItems * 12;
window_scrollsize_set_registers(width, height);
*height = _numListItems * 12;
}
/**
*
* rct2: 0x006AB0B6
*/
static void window_editor_object_selection_scroll_mousedown()
static void window_editor_object_selection_scroll_mousedown(rct_window *w, int scrollIndex, int x, int y)
{
short x, y, scrollIndex;
rct_window *w;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
// Used for in-game object selection cheat to prevent crashing the game
// when windows attempt to draw objects that don't exist any more
window_close_all_except_class(WC_EDITOR_OBJECT_SELECTION);
@ -1025,16 +992,12 @@ static void window_editor_object_selection_scroll_mousedown()
*
* rct2: 0x006AB079
*/
static void window_editor_object_selection_scroll_mouseover()
static void window_editor_object_selection_scroll_mouseover(rct_window *w, int scrollIndex, int x, int y)
{
rct_window *w;
rct_object_entry *installedEntry;
int selectedObject;
short x, y, scrollIndex;
uint8 objectSelectionFlags;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
selectedObject = get_object_from_object_selection(
w->selected_tab & 0xFF, y, &objectSelectionFlags, &installedEntry
);
@ -1057,13 +1020,8 @@ static void window_editor_object_selection_scroll_mouseover()
*
* rct2: 0x006AB058
*/
static void window_editor_object_selection_tooltip()
static void window_editor_object_selection_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId)
{
rct_window *w;
short widgetIndex;
window_scroll_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_TAB_1:
case WIDX_TAB_2:
@ -1089,14 +1047,11 @@ static void window_editor_object_selection_tooltip()
*
* rct2: 0x006AA9FD
*/
static void window_editor_object_selection_invalidate()
static void window_editor_object_selection_invalidate(rct_window *w)
{
int i, x;
rct_window *w;
rct_widget *widget;
window_get_register(w);
colour_scheme_update(w);
// Resize widgets
@ -1226,19 +1181,15 @@ static void window_editor_object_selection_invalidate()
*
* rct2: 0x006AAB56
*/
static void window_editor_object_selection_paint()
static void window_editor_object_selection_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
int i, x, y, width, numSelected, totalSelectable, type;
rct_window *w;
rct_drawpixelinfo *dpi;
rct_widget *widget;
rct_object_entry *highlightedEntry;
rct_string_id stringId;
uint8 *text, source;
char *datName, *name, *stringBuffer;
window_paint_get_registers(w, dpi);
/*if (w->selected_tab == WINDOW_OBJECT_SELECTION_PAGE_RIDE_VEHICLES_ATTRACTIONS) {
gfx_fill_rect_inset(dpi,
w->x + w->widgets[WIDX_FILTER_RIDE_TAB_ALL].left - 1,
@ -1447,14 +1398,9 @@ static void window_editor_object_selection_paint()
*
* rct2: 0x006AADA3
*/
static void window_editor_object_selection_scrollpaint()
static void window_editor_object_selection_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
{
int x, y, i, colour, colour2;
short scrollIndex;
rct_window *w;
rct_drawpixelinfo *dpi;
window_scrollpaint_get_registers(w, dpi, scrollIndex);
bool ridePage = (w->selected_tab == WINDOW_OBJECT_SELECTION_PAGE_RIDE_VEHICLES_ATTRACTIONS);
@ -2020,16 +1966,9 @@ static void window_editor_object_selection_update(rct_window *w)
}
}
static void window_editor_object_selection_textinput()
static void window_editor_object_selection_textinput(rct_window *w, int widgetIndex, char *text)
{
uint8 result;
short widgetIndex;
rct_window *w;
char *text;
window_textinput_get_registers(w, widgetIndex, result, text);
if (widgetIndex != WIDX_FILTER_STRING_BUTTON || !result)
if (widgetIndex != WIDX_FILTER_STRING_BUTTON || text == NULL)
return;
if (strcmp(_filter_string, text) == 0)

View File

@ -114,94 +114,92 @@ static rct_widget *window_editor_objective_options_widgets[] = {
#pragma region Events
static void window_editor_objective_options_emptysub() { }
static void window_editor_objective_options_main_mouseup();
static void window_editor_objective_options_main_resize();
static void window_editor_objective_options_main_mouseup(rct_window *w, int widgetIndex);
static void window_editor_objective_options_main_resize(rct_window *w);
static void window_editor_objective_options_main_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_editor_objective_options_main_dropdown();
static void window_editor_objective_options_main_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_editor_objective_options_main_update(rct_window *w);
static void window_editor_objective_options_main_textinput();
static void window_editor_objective_options_main_invalidate();
static void window_editor_objective_options_main_paint();
static void window_editor_objective_options_main_textinput(rct_window *w, int widgetIndex, char *text);
static void window_editor_objective_options_main_invalidate(rct_window *w);
static void window_editor_objective_options_main_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_editor_objective_options_rides_mouseup();
static void window_editor_objective_options_rides_resize();
static void window_editor_objective_options_rides_mouseup(rct_window *w, int widgetIndex);
static void window_editor_objective_options_rides_resize(rct_window *w);
static void window_editor_objective_options_rides_update(rct_window *w);
static void window_editor_objective_options_rides_scrollgetheight();
static void window_editor_objective_options_rides_scrollmousedown();
static void window_editor_objective_options_rides_scrollmouseover();
static void window_editor_objective_options_rides_invalidate();
static void window_editor_objective_options_rides_paint();
static void window_editor_objective_options_rides_scrollpaint();
static void window_editor_objective_options_rides_scrollgetheight(rct_window *w, int scrollIndex, int *width, int *height);
static void window_editor_objective_options_rides_scrollmousedown(rct_window *w, int scrollIndex, int x, int y);
static void window_editor_objective_options_rides_scrollmouseover(rct_window *w, int scrollIndex, int x, int y);
static void window_editor_objective_options_rides_invalidate(rct_window *w);
static void window_editor_objective_options_rides_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_editor_objective_options_rides_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex);
// 0x009A9DF4
static void* window_objective_options_main_events[] = {
window_editor_objective_options_emptysub,
static rct_window_event_list window_objective_options_main_events = {
NULL,
window_editor_objective_options_main_mouseup,
window_editor_objective_options_main_resize,
window_editor_objective_options_main_mousedown,
window_editor_objective_options_main_dropdown,
window_editor_objective_options_emptysub,
NULL,
window_editor_objective_options_main_update,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_editor_objective_options_main_textinput,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
window_editor_objective_options_main_invalidate,
window_editor_objective_options_main_paint,
window_editor_objective_options_emptysub
NULL
};
// 0x009A9F58
static void* window_objective_options_rides_events[] = {
window_editor_objective_options_emptysub,
static rct_window_event_list window_objective_options_rides_events = {
NULL,
window_editor_objective_options_rides_mouseup,
window_editor_objective_options_rides_resize,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
NULL,
NULL,
NULL,
window_editor_objective_options_rides_update,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_editor_objective_options_rides_scrollgetheight,
window_editor_objective_options_rides_scrollmousedown,
window_editor_objective_options_emptysub,
NULL,
window_editor_objective_options_rides_scrollmouseover,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
window_editor_objective_options_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_editor_objective_options_rides_invalidate,
window_editor_objective_options_rides_paint,
window_editor_objective_options_rides_scrollpaint
};
static void* window_editor_objective_options_page_events[] = {
window_objective_options_main_events,
window_objective_options_rides_events
static rct_window_event_list *window_editor_objective_options_page_events[] = {
&window_objective_options_main_events,
&window_objective_options_rides_events
};
#pragma endregion
@ -260,7 +258,7 @@ void window_editor_objective_options_open()
w = window_create_centred(
450,
228,
(uint32*)window_objective_options_main_events,
&window_objective_options_main_events,
WC_EDTIOR_OBJECTIVE_OPTIONS,
WF_10
);
@ -395,13 +393,9 @@ static void window_editor_objective_options_set_objective(rct_window *w, int obj
*
* rct2: 0x006719CA
*/
static void window_editor_objective_options_main_mouseup()
static void window_editor_objective_options_main_mouseup(rct_window *w, int widgetIndex)
{
rct_s6_info *s6Info = (rct_s6_info*)0x00141F570;
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
@ -434,12 +428,8 @@ static void window_editor_objective_options_main_mouseup()
*
* rct2: 0x00672254
*/
static void window_editor_objective_options_main_resize()
static void window_editor_objective_options_main_resize(rct_window *w)
{
rct_window *w;
window_get_register(w);
window_set_resize(w, 450, 229, 450, 229);
}
@ -719,15 +709,11 @@ static void window_editor_objective_options_main_mousedown(int widgetIndex, rct_
*
* rct2: 0x00671A54
*/
static void window_editor_objective_options_main_dropdown()
static void window_editor_objective_options_main_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
rct_s6_info *s6Info = (rct_s6_info*)0x00141F570;
rct_window *w;
short widgetIndex, dropdownIndex;
uint8 newObjectiveType;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
if (dropdownIndex == -1)
return;
@ -792,17 +778,11 @@ static void window_editor_objective_options_main_update(rct_window *w)
*
* rct2: 0x00671A73
*/
static void window_editor_objective_options_main_textinput()
static void window_editor_objective_options_main_textinput(rct_window *w, int widgetIndex, char *text)
{
rct_s6_info *s6Info = (rct_s6_info*)0x00141F570;
uint8 result;
short widgetIndex;
rct_window *w;
char *text;
window_textinput_get_registers(w, widgetIndex, result, text);
if (!result)
if (text == NULL)
return;
switch (widgetIndex) {
@ -827,13 +807,11 @@ static void window_editor_objective_options_main_textinput()
*
* rct2: 0x0067161C
*/
static void window_editor_objective_options_main_invalidate()
static void window_editor_objective_options_main_invalidate(rct_window *w)
{
rct_window *w;
rct_widget *widgets;
rct_stex_entry *stex;
window_get_register(w);
colour_scheme_update(w);
stex = g_stexEntries[0];
@ -906,18 +884,14 @@ static void window_editor_objective_options_main_invalidate()
*
* rct2: 0x0067161C
*/
static void window_editor_objective_options_main_paint()
static void window_editor_objective_options_main_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_s6_info *s6Info = (rct_s6_info*)0x00141F570;
rct_stex_entry *stex;
rct_window *w;
rct_drawpixelinfo *dpi;
int x, y, width;
rct_string_id stringId;
uint32 arg;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
window_editor_objective_options_draw_tab_images(w, dpi);
@ -1078,13 +1052,9 @@ static void window_editor_objective_options_main_paint()
*
* rct2: 0x006724A4
*/
static void window_editor_objective_options_rides_mouseup()
static void window_editor_objective_options_rides_mouseup(rct_window *w, int widgetIndex)
{
rct_s6_info *s6Info = (rct_s6_info*)0x00141F570;
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
@ -1101,12 +1071,8 @@ static void window_editor_objective_options_rides_mouseup()
*
* rct2: 0x006725A8
*/
static void window_editor_objective_options_rides_resize()
static void window_editor_objective_options_rides_resize(rct_window *w)
{
rct_window *w;
window_get_register(w);
window_set_resize(w, 380, 224, 380, 224);
}
@ -1142,32 +1108,20 @@ static void window_editor_objective_options_rides_update(rct_window *w)
*
* rct2: 0x006724BF
*/
static void window_editor_objective_options_rides_scrollgetheight()
static void window_editor_objective_options_rides_scrollgetheight(rct_window *w, int scrollIndex, int *width, int *height)
{
int width, height;
rct_window *w;
window_get_register(w);
width = 0;
height = w->no_list_items * 12;
window_scrollsize_set_registers(width, height);
*height = w->no_list_items * 12;
}
/**
*
* rct2: 0x006724FC
*/
static void window_editor_objective_options_rides_scrollmousedown()
static void window_editor_objective_options_rides_scrollmousedown(rct_window *w, int scrollIndex, int x, int y)
{
rct_ride *ride;
rct_window *w;
short x, y, scrollIndex;
int i;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
i = y / 12;
if (i < 0 || i >= w->no_list_items)
return;
@ -1181,14 +1135,10 @@ static void window_editor_objective_options_rides_scrollmousedown()
*
* rct2: 0x006724CC
*/
static void window_editor_objective_options_rides_scrollmouseover()
static void window_editor_objective_options_rides_scrollmouseover(rct_window *w, int scrollIndex, int x, int y)
{
rct_window *w;
short x, y, scrollIndex;
int i;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
i = y / 12;
if (i < 0 || i >= w->no_list_items)
return;
@ -1203,12 +1153,10 @@ static void window_editor_objective_options_rides_scrollmouseover()
*
* rct2: 0x006722B5
*/
static void window_editor_objective_options_rides_invalidate()
static void window_editor_objective_options_rides_invalidate(rct_window *w)
{
rct_window *w;
rct_widget *widgets;
window_get_register(w);
colour_scheme_update(w);
widgets = window_editor_objective_options_widgets[w->page];
@ -1229,13 +1177,8 @@ static void window_editor_objective_options_rides_invalidate()
*
* rct2: 0x00672340
*/
static void window_editor_objective_options_rides_paint()
static void window_editor_objective_options_rides_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
window_editor_objective_options_draw_tab_images(w, dpi);
@ -1246,16 +1189,12 @@ static void window_editor_objective_options_rides_paint()
*
* rct2: 0x0067236F
*/
static void window_editor_objective_options_rides_scrollpaint()
static void window_editor_objective_options_rides_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
{
int i, y, colour;
rct_string_id stringId;
rct_window *w;
rct_drawpixelinfo *dpi;
rct_ride *ride;
window_paint_get_registers(w, dpi);
colour = RCT2_GLOBAL(0x0141FC48 + (w->colours[1] * 8), uint8);
gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, colour);

View File

@ -184,130 +184,128 @@ static rct_widget *window_editor_scenario_options_widgets[] = {
#pragma region Events
static void window_editor_scenario_options_emptysub() { }
static void window_editor_scenario_options_financial_mouseup();
static void window_editor_scenario_options_financial_resize();
static void window_editor_scenario_options_financial_mouseup(rct_window *w, int widgetIndex);
static void window_editor_scenario_options_financial_resize(rct_window *w);
static void window_editor_scenario_options_financial_mousedown(int widgetIndex, rct_window *w, rct_widget *widget);
static void window_editor_scenario_options_financial_update(rct_window *w);
static void window_editor_scenario_options_financial_invalidate();
static void window_editor_scenario_options_financial_paint();
static void window_editor_scenario_options_financial_invalidate(rct_window *w);
static void window_editor_scenario_options_financial_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_editor_scenario_options_guests_mouseup();
static void window_editor_scenario_options_guests_resize();
static void window_editor_scenario_options_guests_mouseup(rct_window *w, int widgetIndex);
static void window_editor_scenario_options_guests_resize(rct_window *w);
static void window_editor_scenario_options_guests_mousedown(int widgetIndex, rct_window *w, rct_widget *widget);
static void window_editor_scenario_options_guests_update(rct_window *w);
static void window_editor_scenario_options_guests_invalidate();
static void window_editor_scenario_options_guests_paint();
static void window_editor_scenario_options_guests_invalidate(rct_window *w);
static void window_editor_scenario_options_guests_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_editor_scenario_options_park_mouseup();
static void window_editor_scenario_options_park_resize();
static void window_editor_scenario_options_park_mouseup(rct_window *w, int widgetIndex);
static void window_editor_scenario_options_park_resize(rct_window *w);
static void window_editor_scenario_options_park_mousedown(int widgetIndex, rct_window *w, rct_widget *widget);
static void window_editor_scenario_options_park_dropdown();
static void window_editor_scenario_options_park_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_editor_scenario_options_park_update(rct_window *w);
static void window_editor_scenario_options_park_invalidate();
static void window_editor_scenario_options_park_paint();
static void window_editor_scenario_options_park_invalidate(rct_window *w);
static void window_editor_scenario_options_park_paint(rct_window *w, rct_drawpixelinfo *dpi);
// 0x0097EB60
static void* window_scenario_options_financial_events[] = {
window_editor_scenario_options_emptysub,
static rct_window_event_list window_scenario_options_financial_events = {
NULL,
window_editor_scenario_options_financial_mouseup,
window_editor_scenario_options_financial_resize,
window_editor_scenario_options_financial_mousedown,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
NULL,
NULL,
window_editor_scenario_options_financial_update,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_editor_scenario_options_financial_invalidate,
window_editor_scenario_options_financial_paint,
window_editor_scenario_options_emptysub
NULL
};
// 0x0097EBD0
static void* window_scenario_options_guests_events[] = {
window_editor_scenario_options_emptysub,
static rct_window_event_list window_scenario_options_guests_events = {
NULL,
window_editor_scenario_options_guests_mouseup,
window_editor_scenario_options_guests_resize,
window_editor_scenario_options_guests_mousedown,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
NULL,
NULL,
window_editor_scenario_options_guests_update,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_editor_scenario_options_guests_invalidate,
window_editor_scenario_options_guests_paint,
window_editor_scenario_options_emptysub
NULL
};
// 0x0097EC40
static void* window_scenario_options_park_events[] = {
window_editor_scenario_options_emptysub,
static rct_window_event_list window_scenario_options_park_events = {
NULL,
window_editor_scenario_options_park_mouseup,
window_editor_scenario_options_park_resize,
window_editor_scenario_options_park_mousedown,
window_editor_scenario_options_park_dropdown,
window_editor_scenario_options_emptysub,
NULL,
window_editor_scenario_options_park_update,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
window_editor_scenario_options_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_editor_scenario_options_park_invalidate,
window_editor_scenario_options_park_paint,
window_editor_scenario_options_emptysub
NULL
};
static void* window_editor_scenario_options_page_events[] = {
window_scenario_options_financial_events,
window_scenario_options_guests_events,
window_scenario_options_park_events
static rct_window_event_list *window_editor_scenario_options_page_events[] = {
&window_scenario_options_financial_events,
&window_scenario_options_guests_events,
&window_scenario_options_park_events
};
#pragma endregion
@ -434,13 +432,8 @@ static void window_editor_scenario_options_set_page(rct_window *w, int page)
*
* rct2: 0x0067049D
*/
static void window_editor_scenario_options_financial_mouseup()
static void window_editor_scenario_options_financial_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -476,12 +469,8 @@ static void window_editor_scenario_options_financial_mouseup()
*
* rct2: 0x0067077A
*/
static void window_editor_scenario_options_financial_resize()
static void window_editor_scenario_options_financial_resize(rct_window *w)
{
rct_window *w;
window_get_register(w);
window_set_resize(w, 280, 149, 280, 149);
}
@ -587,13 +576,11 @@ static void window_editor_scenario_options_financial_update(rct_window *w)
*
* rct2: 0x006701CF
*/
static void window_editor_scenario_options_financial_invalidate()
static void window_editor_scenario_options_financial_invalidate(rct_window *w)
{
rct_window *w;
rct_widget *widgets;
int i;
window_get_register(w);
colour_scheme_update(w);
widgets = window_editor_scenario_options_widgets[w->page];
@ -640,14 +627,10 @@ static void window_editor_scenario_options_financial_invalidate()
*
* rct2: 0x00670338
*/
static void window_editor_scenario_options_financial_paint()
static void window_editor_scenario_options_financial_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
int x, y;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
window_editor_scenario_options_draw_tab_images(w, dpi);
@ -700,13 +683,8 @@ static void window_editor_scenario_options_financial_paint()
*
* rct2: 0x00670A62
*/
static void window_editor_scenario_options_guests_mouseup()
static void window_editor_scenario_options_guests_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -731,12 +709,8 @@ static void window_editor_scenario_options_guests_mouseup()
*
* rct2: 0x00670C59
*/
static void window_editor_scenario_options_guests_resize()
static void window_editor_scenario_options_guests_resize(rct_window *w)
{
rct_window *w;
window_get_register(w);
window_set_resize(w, 380, 149, 380, 149);
}
@ -829,12 +803,10 @@ static void window_editor_scenario_options_guests_update(rct_window *w)
*
* rct2: 0x006707DB
*/
static void window_editor_scenario_options_guests_invalidate()
static void window_editor_scenario_options_guests_invalidate(rct_window *w)
{
rct_window *w;
rct_widget *widgets;
window_get_register(w);
colour_scheme_update(w);
widgets = window_editor_scenario_options_widgets[w->page];
@ -877,14 +849,10 @@ static void window_editor_scenario_options_guests_invalidate()
*
* rct2: 0x006708C4
*/
static void window_editor_scenario_options_guests_paint()
static void window_editor_scenario_options_guests_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
int x, y, arg;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
window_editor_scenario_options_draw_tab_images(w, dpi);
@ -943,13 +911,8 @@ static void window_editor_scenario_options_guests_paint()
*
* rct2: 0x00670FD8
*/
static void window_editor_scenario_options_park_mouseup()
static void window_editor_scenario_options_park_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -986,12 +949,8 @@ static void window_editor_scenario_options_park_mouseup()
*
* rct2: 0x00671287
*/
static void window_editor_scenario_options_park_resize()
static void window_editor_scenario_options_park_resize(rct_window *w)
{
rct_window *w;
window_get_register(w);
window_set_resize(w, 400, 183, 400, 183);
}
@ -1079,13 +1038,8 @@ static void window_editor_scenario_options_park_mousedown(int widgetIndex, rct_w
*
* rct2: 0x00671060
*/
static void window_editor_scenario_options_park_dropdown()
static void window_editor_scenario_options_park_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
rct_window *w;
short widgetIndex, dropdownIndex;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
if (widgetIndex == WIDX_PAY_FOR_PARK_OR_RIDES_DROPDOWN && dropdownIndex != -1) {
if(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) {
if (dropdownIndex == 0) {
@ -1132,14 +1086,12 @@ static void window_editor_scenario_options_park_update(rct_window *w)
*
* rct2: 0x00670CBA
*/
static void window_editor_scenario_options_park_invalidate()
static void window_editor_scenario_options_park_invalidate(rct_window *w)
{
rct_window *w;
rct_widget *widgets;
int i;
uint64 pressedWidgets;
window_get_register(w);
colour_scheme_update(w);
widgets = window_editor_scenario_options_widgets[w->page];
@ -1205,15 +1157,11 @@ static void window_editor_scenario_options_park_invalidate()
*
* rct2: 0x00670E5B
*/
static void window_editor_scenario_options_park_paint()
static void window_editor_scenario_options_park_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
int x, y, arg;
rct_string_id stringId;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
window_editor_scenario_options_draw_tab_images(w, dpi);

View File

@ -34,39 +34,38 @@ static rct_widget window_error_widgets[] = {
{ WIDGETS_END }
};
static void window_error_emptysub() { }
static void window_error_unknown5();
static void window_error_paint();
static void window_error_unknown5(rct_window *w);
static void window_error_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void* window_error_events[] = {
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_unknown5,
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_emptysub,
(uint32*)window_error_paint,
(uint32*)window_error_emptysub
static rct_window_event_list window_error_events = {
NULL,
NULL,
NULL,
NULL,
NULL,
window_error_unknown5,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_error_paint,
NULL
};
static char _window_error_text[512];
@ -134,7 +133,7 @@ void window_error_open(rct_string_id title, rct_string_id message)
y = min(y, maxY);
}
w = window_create(x, y, width, height, (uint32*)window_error_events, WC_ERROR, WF_STICK_TO_FRONT | WF_TRANSPARENT | WF_RESIZABLE);
w = window_create(x, y, width, height, &window_error_events, WC_ERROR, WF_STICK_TO_FRONT | WF_TRANSPARENT | WF_RESIZABLE);
w->widgets = window_error_widgets;
w->error.var_480 = 0;
if (!(RCT2_GLOBAL(0x009A8C29, uint8) & 1))
@ -145,12 +144,8 @@ void window_error_open(rct_string_id title, rct_string_id message)
*
* rct2: 0x00667BFE
*/
static void window_error_unknown5()
static void window_error_unknown5(rct_window *w)
{
rct_window *w;
window_get_register(w);
w->error.var_480++;
if (w->error.var_480 >= 8)
window_close(w);
@ -160,14 +155,10 @@ static void window_error_unknown5()
*
* rct2: 0x00667AA3
*/
static void window_error_paint()
static void window_error_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
int t, l, r, b;
window_paint_get_registers(w, dpi);
l = w->x;
t = w->y;
r = w->x + w->width - 1;

View File

@ -202,240 +202,238 @@ static rct_widget *window_finances_page_widgets[] = {
#pragma region Events
static void window_finances_emptysub() { }
static void window_finances_summary_mouseup();
static void window_finances_summary_mouseup(rct_window *w, int widgetIndex);
static void window_finances_summary_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_finances_summary_update(rct_window *w);
static void window_finances_summary_invalidate();
static void window_finances_summary_paint();
static void window_finances_summary_invalidate(rct_window *w);
static void window_finances_summary_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_finances_financial_graph_mouseup();
static void window_finances_financial_graph_mouseup(rct_window *w, int widgetIndex);
static void window_finances_financial_graph_update(rct_window *w);
static void window_finances_financial_graph_invalidate();
static void window_finances_financial_graph_paint();
static void window_finances_financial_graph_invalidate(rct_window *w);
static void window_finances_financial_graph_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_finances_park_value_graph_mouseup();
static void window_finances_park_value_graph_mouseup(rct_window *w, int widgetIndex);
static void window_finances_park_value_graph_update(rct_window *w);
static void window_finances_park_value_graph_invalidate();
static void window_finances_park_value_graph_paint();
static void window_finances_park_value_graph_invalidate(rct_window *w);
static void window_finances_park_value_graph_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_finances_profit_graph_mouseup();
static void window_finances_profit_graph_mouseup(rct_window *w, int widgetIndex);
static void window_finances_profit_graph_update(rct_window *w);
static void window_finances_profit_graph_invalidate();
static void window_finances_profit_graph_paint();
static void window_finances_profit_graph_invalidate(rct_window *w);
static void window_finances_profit_graph_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_finances_marketing_mouseup();
static void window_finances_marketing_mouseup(rct_window *w, int widgetIndex);
static void window_finances_marketing_update(rct_window *w);
static void window_finances_marketing_invalidate();
static void window_finances_marketing_paint();
static void window_finances_marketing_invalidate(rct_window *w);
static void window_finances_marketing_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_finances_research_mouseup();
static void window_finances_research_mouseup(rct_window *w, int widgetIndex);
static void window_finances_research_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_finances_research_dropdown();
static void window_finances_research_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_finances_research_update(rct_window *w);
static void window_finances_research_invalidate();
static void window_finances_research_paint();
static void window_finances_research_invalidate(rct_window *w);
static void window_finances_research_paint(rct_window *w, rct_drawpixelinfo *dpi);
// 0x00988EB8
static void* window_finances_summary_events[] = {
window_finances_emptysub,
static rct_window_event_list window_finances_summary_events = {
NULL,
window_finances_summary_mouseup,
window_finances_emptysub,
NULL,
window_finances_summary_mousedown,
window_finances_emptysub,
window_finances_emptysub,
NULL,
NULL,
window_finances_summary_update,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_finances_summary_invalidate,
window_finances_summary_paint,
window_finances_emptysub
NULL
};
// 0x00988F28
static void* window_finances_financial_graph_events[] = {
window_finances_emptysub,
static rct_window_event_list window_finances_financial_graph_events = {
NULL,
window_finances_financial_graph_mouseup,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
NULL,
NULL,
NULL,
NULL,
window_finances_financial_graph_update,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_finances_financial_graph_invalidate,
window_finances_financial_graph_paint,
window_finances_emptysub
NULL
};
// 0x00988F98
static void* window_finances_value_graph_events[] = {
window_finances_emptysub,
static rct_window_event_list window_finances_value_graph_events = {
NULL,
window_finances_park_value_graph_mouseup,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
NULL,
NULL,
NULL,
NULL,
window_finances_park_value_graph_update,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_finances_park_value_graph_invalidate,
window_finances_park_value_graph_paint,
window_finances_emptysub
NULL
};
// 0x00989008
static void* window_finances_profit_graph_events[] = {
window_finances_emptysub,
static rct_window_event_list window_finances_profit_graph_events = {
NULL,
window_finances_profit_graph_mouseup,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
NULL,
NULL,
NULL,
NULL,
window_finances_profit_graph_update,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_finances_profit_graph_invalidate,
window_finances_profit_graph_paint,
window_finances_emptysub
NULL
};
// 0x00989078
static void* window_finances_marketing_events[] = {
window_finances_emptysub,
static rct_window_event_list window_finances_marketing_events = {
NULL,
window_finances_marketing_mouseup,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
NULL,
NULL,
NULL,
NULL,
window_finances_marketing_update,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_finances_marketing_invalidate,
window_finances_marketing_paint,
window_finances_emptysub
NULL
};
// 0x009890E8
static void* window_finances_research_events[] = {
window_finances_emptysub,
static rct_window_event_list window_finances_research_events = {
NULL,
window_finances_research_mouseup,
window_finances_emptysub,
NULL,
window_finances_research_mousedown,
window_finances_research_dropdown,
window_finances_emptysub,
NULL,
window_finances_research_update,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
window_finances_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_finances_research_invalidate,
window_finances_research_paint,
window_finances_emptysub
NULL
};
static void* window_finances_page_events[] = {
window_finances_summary_events,
window_finances_financial_graph_events,
window_finances_value_graph_events,
window_finances_profit_graph_events,
window_finances_marketing_events,
window_finances_research_events
static rct_window_event_list *window_finances_page_events[] = {
&window_finances_summary_events,
&window_finances_financial_graph_events,
&window_finances_value_graph_events,
&window_finances_profit_graph_events,
&window_finances_marketing_events,
&window_finances_research_events
};
static void window_finances_set_colours();
@ -583,13 +581,8 @@ void window_finances_research_open()
*
* rct2: 0x0069CA99
*/
static void window_finances_summary_mouseup()
static void window_finances_summary_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
if (widgetIndex == WIDX_CLOSE)
window_close(w);
else if (widgetIndex >= WIDX_TAB_1 && widgetIndex <= WIDX_TAB_6)
@ -636,11 +629,8 @@ static void window_finances_summary_update(rct_window *w)
*
* rct2: 0x0069C732
*/
static void window_finances_summary_invalidate()
static void window_finances_summary_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
if (w->widgets != window_finances_page_widgets[WINDOW_FINANCES_PAGE_SUMMARY]) {
@ -656,14 +646,10 @@ static void window_finances_summary_invalidate()
*
* rct2: 0x0069C771
*/
static void window_finances_summary_paint()
static void window_finances_summary_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
int i, j, x, y;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
window_finances_draw_tab_images(dpi, w);
@ -781,13 +767,8 @@ static void window_finances_summary_paint()
*
* rct2: 0x0069CF70
*/
static void window_finances_financial_graph_mouseup()
static void window_finances_financial_graph_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
if (widgetIndex == WIDX_CLOSE)
window_close(w);
else if (widgetIndex >= WIDX_TAB_1 && widgetIndex <= WIDX_TAB_6)
@ -810,11 +791,8 @@ static void window_finances_financial_graph_update(rct_window *w)
*
* rct2: 0x0069CBDB
*/
static void window_finances_financial_graph_invalidate()
static void window_finances_financial_graph_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
if (w->widgets != window_finances_page_widgets[WINDOW_FINANCES_PAGE_FINANCIAL_GRAPH]) {
@ -829,14 +807,10 @@ static void window_finances_financial_graph_invalidate()
*
* rct2: 0x0069CC10
*/
static void window_finances_financial_graph_paint()
static void window_finances_financial_graph_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
int i, x, y, graphLeft, graphTop, graphRight, graphBottom;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
window_finances_draw_tab_images(dpi, w);
@ -903,13 +877,8 @@ static void window_finances_financial_graph_paint()
*
* rct2: 0x0069D338
*/
static void window_finances_park_value_graph_mouseup()
static void window_finances_park_value_graph_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
if (widgetIndex == WIDX_CLOSE)
window_close(w);
else if (widgetIndex >= WIDX_TAB_1 && widgetIndex <= WIDX_TAB_6)
@ -932,11 +901,8 @@ static void window_finances_park_value_graph_update(rct_window *w)
*
* rct2: 0x0069CFC0
*/
static void window_finances_park_value_graph_invalidate()
static void window_finances_park_value_graph_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
if (w->widgets != window_finances_page_widgets[WINDOW_FINANCES_PAGE_VALUE_GRAPH]) {
@ -951,14 +917,10 @@ static void window_finances_park_value_graph_invalidate()
*
* rct2: 0x0069CFF5
*/
static void window_finances_park_value_graph_paint()
static void window_finances_park_value_graph_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
int i, x, y, graphLeft, graphTop, graphRight, graphBottom;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
window_finances_draw_tab_images(dpi, w);
@ -1021,13 +983,8 @@ static void window_finances_park_value_graph_paint()
*
* rct2: 0x0069D715
*/
static void window_finances_profit_graph_mouseup()
static void window_finances_profit_graph_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
if (widgetIndex == WIDX_CLOSE)
window_close(w);
else if (widgetIndex >= WIDX_TAB_1 && widgetIndex <= WIDX_TAB_6)
@ -1050,11 +1007,8 @@ static void window_finances_profit_graph_update(rct_window *w)
*
* rct2: 0x0069D388
*/
static void window_finances_profit_graph_invalidate()
static void window_finances_profit_graph_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
if (w->widgets != window_finances_page_widgets[WINDOW_FINANCES_PAGE_PROFIT_GRAPH]) {
@ -1069,14 +1023,10 @@ static void window_finances_profit_graph_invalidate()
*
* rct2: 0x0069D3BD
*/
static void window_finances_profit_graph_paint()
static void window_finances_profit_graph_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
int i, x, y, graphLeft, graphTop, graphRight, graphBottom;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
window_finances_draw_tab_images(dpi, w);
@ -1139,13 +1089,8 @@ static void window_finances_profit_graph_paint()
*
* rct2: 0x0069D9F9
*/
static void window_finances_marketing_mouseup()
static void window_finances_marketing_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
if (widgetIndex == WIDX_CLOSE)
window_close(w);
else if (widgetIndex >= WIDX_TAB_1 && widgetIndex <= WIDX_TAB_6)
@ -1171,12 +1116,10 @@ static void window_finances_marketing_update(rct_window *w)
*
* rct2: 0x0069D765
*/
static void window_finances_marketing_invalidate()
static void window_finances_marketing_invalidate(rct_window *w)
{
rct_window *w;
int i;
window_get_register(w);
colour_scheme_update(w);
if (w->widgets != window_finances_page_widgets[WINDOW_FINANCES_PAGE_MARKETING]) {
@ -1228,16 +1171,12 @@ static void window_finances_marketing_invalidate()
*
* rct2: 0x0069D834
*/
static void window_finances_marketing_paint()
static void window_finances_marketing_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
int i, x, y;
rct_ride *ride;
rct_string_id shopString, weeksRemainingStringId;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
window_finances_draw_tab_images(dpi, w);
@ -1322,14 +1261,10 @@ static void window_finances_marketing_paint()
*
* rct2: 0x0069DB3F
*/
static void window_finances_research_mouseup()
static void window_finances_research_mouseup(rct_window *w, int widgetIndex)
{
rct_window * w;
short widgetIndex;
int activeResearchTypes;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -1392,14 +1327,8 @@ static void window_finances_research_mousedown(int widgetIndex, rct_window *w, r
*
* rct2: 0x0069DB6D
*/
static void window_finances_research_dropdown()
static void window_finances_research_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
rct_window *w;
short widgetIndex;
short dropdownIndex;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
if (widgetIndex != WIDX_RESEARCH_FUNDING_DROPDOWN_BUTTON || dropdownIndex == -1)
return;
@ -1422,11 +1351,8 @@ static void window_finances_research_update(rct_window *w)
*
* rct2: 0x0069DA64
*/
static void window_finances_research_invalidate()
static void window_finances_research_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
if (w->widgets != window_finances_page_widgets[WINDOW_FINANCES_PAGE_RESEARCH]) {
@ -1471,13 +1397,8 @@ static void window_finances_research_invalidate()
*
* rct2: 0x0069DAF0
*/
static void window_finances_research_paint()
static void window_finances_research_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
window_finances_draw_tab_images(dpi, w);

View File

@ -103,48 +103,47 @@ static rct_widget window_footpath_widgets[] = {
{ WIDGETS_END },
};
static void window_footpath_emptysub() { }
static void window_footpath_close();
static void window_footpath_mouseup();
static void window_footpath_close(rct_window *w);
static void window_footpath_mouseup(rct_window *w, int widgetIndex);
static void window_footpath_mousedown(int widgetIndex, rct_window *w, rct_widget *widget);
static void window_footpath_dropdown();
static void window_footpath_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_footpath_update(rct_window *w);
static void window_footpath_toolupdate();
static void window_footpath_tooldown();
static void window_footpath_tooldrag();
static void window_footpath_toolup();
static void window_footpath_invalidate();
static void window_footpath_paint();
static void window_footpath_toolupdate(rct_window* w, int widgetIndex, int x, int y);
static void window_footpath_tooldown(rct_window* w, int widgetIndex, int x, int y);
static void window_footpath_tooldrag(rct_window* w, int widgetIndex, int x, int y);
static void window_footpath_toolup(rct_window* w, int widgetIndex, int x, int y);
static void window_footpath_invalidate(rct_window *w);
static void window_footpath_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void* window_footpath_events[] = {
static rct_window_event_list window_footpath_events = {
window_footpath_close,
window_footpath_mouseup,
window_footpath_emptysub,
NULL,
window_footpath_mousedown,
window_footpath_dropdown,
window_footpath_emptysub,
NULL,
window_footpath_update,
window_footpath_emptysub,
window_footpath_emptysub,
NULL,
NULL,
window_footpath_toolupdate,
window_footpath_tooldown,
window_footpath_tooldrag,
window_footpath_toolup,
window_footpath_emptysub,
window_footpath_emptysub,
window_footpath_emptysub,
window_footpath_emptysub,
window_footpath_emptysub,
window_footpath_emptysub,
window_footpath_emptysub,
window_footpath_emptysub,
window_footpath_emptysub,
window_footpath_emptysub,
window_footpath_emptysub,
window_footpath_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_footpath_invalidate,
window_footpath_paint,
window_footpath_emptysub
NULL
};
money32 _window_footpath_cost;
@ -182,7 +181,7 @@ void window_footpath_open()
29,
106,
381,
(uint32*)window_footpath_events,
&window_footpath_events,
WC_FOOTPATH,
0
);
@ -226,12 +225,8 @@ void window_footpath_open()
*
* rct2: 0x006A852F
*/
static void window_footpath_close()
static void window_footpath_close(rct_window *w)
{
rct_window *w;
window_get_register(w);
footpath_provisional_update();
viewport_set_visibility(0);
map_invalidate_map_selection_tiles();
@ -244,13 +239,8 @@ static void window_footpath_close()
*
* rct2: 0x006A7E92
*/
static void window_footpath_mouseup()
static void window_footpath_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -335,16 +325,11 @@ static void window_footpath_mousedown(int widgetIndex, rct_window*w, rct_widget*
*
* rct2: 0x006A7F18
*/
static void window_footpath_dropdown()
static void window_footpath_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
int i, j, pathId;
short dropdownIndex;
short widgetIndex;
rct_window *w;
rct_path_type *pathType;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
if (widgetIndex == WIDX_FOOTPATH_TYPE)
RCT2_GLOBAL(RCT2_ADDRESS_SELECTED_PATH_TYPE, uint8) = SELECTED_PATH_TYPE_NORMAL;
else if (widgetIndex == WIDX_QUEUELINE_TYPE)
@ -390,14 +375,8 @@ static void window_footpath_dropdown()
*
* rct2: 0x006A8032
*/
static void window_footpath_toolupdate()
static void window_footpath_toolupdate(rct_window* w, int widgetIndex, int x, int y)
{
short x, y;
short widgetIndex;
rct_window *w;
window_tool_get_registers(w, widgetIndex, x, y);
if (widgetIndex == WIDX_CONSTRUCT_ON_LAND) {
window_footpath_set_provisional_path_at_point(x, y);
} else if (widgetIndex == WIDX_CONSTRUCT_BRIDGE_OR_TUNNEL) {
@ -409,14 +388,8 @@ static void window_footpath_toolupdate()
*
* rct2: 0x006A8047
*/
static void window_footpath_tooldown()
static void window_footpath_tooldown(rct_window* w, int widgetIndex, int x, int y)
{
short x, y;
short widgetIndex;
rct_window *w;
window_tool_get_registers(w, widgetIndex, x, y);
if (widgetIndex == WIDX_CONSTRUCT_ON_LAND)
window_footpath_place_path_at_point(x, y);
else if (widgetIndex == WIDX_CONSTRUCT_BRIDGE_OR_TUNNEL)
@ -427,14 +400,8 @@ static void window_footpath_tooldown()
*
* rct2: 0x006A8067
*/
static void window_footpath_tooldrag()
static void window_footpath_tooldrag(rct_window* w, int widgetIndex, int x, int y)
{
short x, y;
short widgetIndex;
rct_window *w;
window_tool_get_registers(w, widgetIndex, x, y);
if (widgetIndex == WIDX_CONSTRUCT_ON_LAND) {
window_footpath_place_path_at_point(x, y);
}
@ -444,14 +411,8 @@ static void window_footpath_tooldrag()
*
* rct2: 0x006A8066
*/
static void window_footpath_toolup()
static void window_footpath_toolup(rct_window* w, int widgetIndex, int x, int y)
{
short x, y;
short widgetIndex;
rct_window *w;
window_tool_get_registers(w, widgetIndex, x, y);
if (widgetIndex == WIDX_CONSTRUCT_ON_LAND) {
// The function at 0x006A8380 in rct2 is just the following:
RCT2_GLOBAL(RCT2_ADDRESS_PATH_ERROR_OCCURED, uint8) = 0;
@ -524,13 +485,11 @@ static void window_footpath_update(rct_window *w)
*
* rct2: 0x006A7D1C
*/
static void window_footpath_invalidate()
static void window_footpath_invalidate(rct_window *w)
{
int selectedPath;
rct_path_type *pathType;
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
// Press / unpress footpath and queue type buttons
@ -569,14 +528,10 @@ static void window_footpath_invalidate()
*
* rct2: 0x006A7D8B
*/
static void window_footpath_paint()
static void window_footpath_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
int x, y, image, selectedPath;
rct_path_type *pathType;
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);

View File

@ -73,14 +73,13 @@ rct_widget window_game_bottom_toolbar_widgets[] = {
{ WIDGETS_END },
};
static void window_game_bottom_toolbar_emptysub() { }
static void window_game_bottom_toolbar_mouseup();
static void window_game_bottom_toolbar_tooltip();
static void window_game_bottom_toolbar_invalidate();
static void window_game_bottom_toolbar_paint();
static void window_game_bottom_toolbar_mouseup(rct_window *w, int widgetIndex);
static void window_game_bottom_toolbar_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId);
static void window_game_bottom_toolbar_invalidate(rct_window *w);
static void window_game_bottom_toolbar_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_game_bottom_toolbar_update(rct_window* w);
static void window_game_bottom_toolbar_cursor();
static void window_game_bottom_toolbar_unknown05();
static void window_game_bottom_toolbar_cursor(rct_window *w, int widgetIndex, int x, int y, int *cursorId);
static void window_game_bottom_toolbar_unknown05(rct_window *w);
static void window_game_bottom_toolbar_draw_left_panel(rct_drawpixelinfo *dpi, rct_window *w);
static void window_game_bottom_toolbar_draw_park_rating(rct_drawpixelinfo *dpi, rct_window *w, int colour, int x, int y, uint8 factor);
@ -89,35 +88,35 @@ static void window_game_bottom_toolbar_draw_news_item(rct_drawpixelinfo *dpi, rc
static void window_game_bottom_toolbar_draw_tutorial_text(rct_drawpixelinfo *dpi, rct_window *w);
/* rct2: 0x0097BFDC */
static void* window_game_bottom_toolbar_events[] = {
window_game_bottom_toolbar_emptysub,
static rct_window_event_list window_game_bottom_toolbar_events = {
NULL,
window_game_bottom_toolbar_mouseup,
window_game_bottom_toolbar_emptysub,
window_game_bottom_toolbar_emptysub,
window_game_bottom_toolbar_emptysub,
NULL,
NULL,
NULL,
window_game_bottom_toolbar_unknown05,
window_game_bottom_toolbar_update,
window_game_bottom_toolbar_emptysub,
window_game_bottom_toolbar_emptysub,
window_game_bottom_toolbar_emptysub,
window_game_bottom_toolbar_emptysub,
window_game_bottom_toolbar_emptysub,
window_game_bottom_toolbar_emptysub,
window_game_bottom_toolbar_emptysub,
window_game_bottom_toolbar_emptysub,
window_game_bottom_toolbar_emptysub,
window_game_bottom_toolbar_emptysub,
window_game_bottom_toolbar_emptysub,
window_game_bottom_toolbar_emptysub,
window_game_bottom_toolbar_emptysub,
window_game_bottom_toolbar_emptysub,
window_game_bottom_toolbar_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_game_bottom_toolbar_tooltip,
window_game_bottom_toolbar_cursor,
window_game_bottom_toolbar_emptysub,
NULL,
window_game_bottom_toolbar_invalidate,
window_game_bottom_toolbar_paint,
window_game_bottom_toolbar_emptysub
NULL
};
static void window_game_bottom_toolbar_invalidate_dirty_widgets(rct_window *w);
@ -133,7 +132,7 @@ void window_game_bottom_toolbar_open()
window = window_create(
0, RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_HEIGHT, uint16) - 32,
RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, uint16), 32,
(uint32*)window_game_bottom_toolbar_events,
&window_game_bottom_toolbar_events,
WC_BOTTOM_TOOLBAR,
WF_STICK_TO_FRONT | WF_TRANSPARENT | WF_5
);
@ -162,14 +161,11 @@ void window_game_bottom_toolbar_open()
*
* rct2: 0x0066C588
*/
static void window_game_bottom_toolbar_mouseup()
static void window_game_bottom_toolbar_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w, *mainWindow;
rct_window *mainWindow;
rct_news_item *newsItem;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_LEFT_OUTSET:
case WIDX_MONEY:
@ -214,23 +210,17 @@ static void window_game_bottom_toolbar_mouseup()
}
}
static void window_game_bottom_toolbar_tooltip()
static void window_game_bottom_toolbar_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId)
{
int month, day;
short widgetIndex, result;
rct_window *w;
window_tooltip_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_MONEY:
RCT2_GLOBAL(0x013CE952, int) = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_PROFIT, sint32);
RCT2_GLOBAL(0x013CE956, int) = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_PARK_VALUE, sint32);
result = 0;
break;
case WIDX_PARK_RATING:
RCT2_GLOBAL(0x013CE952, short) = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_PARK_RATING, sint16);
result = 0;
break;
case WIDX_DATE:
month = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONTH_YEAR, sint16) & 7;
@ -238,24 +228,19 @@ static void window_game_bottom_toolbar_tooltip()
RCT2_GLOBAL(0x013CE952, short) = STR_DATE_DAY_1 + day;
RCT2_GLOBAL(0x013CE954, short) = STR_MONTH_MARCH + month;
result = 0;
break;
}
window_tooltip_set_registers(result);
}
/**
*
* rct2: 0x0066BBA0
*/
static void window_game_bottom_toolbar_invalidate()
static void window_game_bottom_toolbar_invalidate(rct_window *w)
{
int x;
rct_window *w;
rct_news_item *newsItem;
window_get_register(w);
colour_scheme_update(w);
// Anchor the middle and right panel to the right
@ -343,13 +328,8 @@ void window_game_bottom_toolbar_invalidate_news_item()
*
* rct2: 0x0066BC87
*/
static void window_game_bottom_toolbar_paint()
static void window_game_bottom_toolbar_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
// Draw panel grey backgrounds
gfx_fill_rect(
dpi,
@ -643,13 +623,9 @@ static void window_game_bottom_toolbar_update(rct_window* w){
}
/* rct2: 0x006C644 */
static void window_game_bottom_toolbar_cursor(){
rct_window *w;
short widgetIndex, x, y;
window_cursor_get_registers(w, widgetIndex, x, y);
switch (widgetIndex){
static void window_game_bottom_toolbar_cursor(rct_window *w, int widgetIndex, int x, int y, int *cursorId)
{
switch (widgetIndex) {
case WIDX_MONEY:
case WIDX_GUESTS:
case WIDX_PARK_RATING:
@ -660,11 +636,8 @@ static void window_game_bottom_toolbar_cursor(){
}
/* rct2: 0x0066C6F2 */
static void window_game_bottom_toolbar_unknown05(){
rct_window* w;
window_get_register(w);
static void window_game_bottom_toolbar_unknown05(rct_window *w)
{
window_game_bottom_toolbar_invalidate_dirty_widgets(w);
}

View File

@ -71,8 +71,6 @@ enum WINDOW_GUEST_WIDGET_IDX {
WIDX_RIDE_SCROLL = 10
};
void window_guest_emptysub(){};
rct_widget window_guest_overview_widgets[] = {
{ WWT_FRAME, 0, 0, 191, 0, 156, 0x0FFFFFFFF, STR_NONE }, // Panel / Background
{ WWT_CAPTION, 0, 1, 190, 1, 14, 865, STR_WINDOW_TITLE_TIP }, // Title
@ -179,245 +177,245 @@ void window_guest_set_page(rct_window* w, int page);
void window_guest_disable_widgets(rct_window* w);
void window_guest_viewport_init(rct_window* w);
void window_guest_overview_close();
void window_guest_overview_resize();
void window_guest_overview_mouse_up();
void window_guest_overview_paint();
void window_guest_overview_invalidate();
void window_guest_overview_viewport_init_wrapper();
void window_guest_overview_close(rct_window *w);
void window_guest_overview_resize(rct_window *w);
void window_guest_overview_mouse_up(rct_window *w, int widgetIndex);
void window_guest_overview_paint(rct_window *w, rct_drawpixelinfo *dpi);
void window_guest_overview_invalidate(rct_window *w);
void window_guest_overview_unknown_14(rct_window *w);
void window_guest_overview_update(rct_window* w);
void window_guest_overview_text_input();
void window_guest_overview_tool_update();
void window_guest_overview_tool_down();
void window_guest_overview_tool_abort();
void window_guest_overview_text_input(rct_window *w, int widgetIndex, char *text);
void window_guest_overview_tool_update(rct_window* w, int widgetIndex, int x, int y);
void window_guest_overview_tool_down(rct_window* w, int widgetIndex, int x, int y);
void window_guest_overview_tool_abort(rct_window *w, int widgetIndex);
static void* window_guest_overview_events[] = {
void window_guest_mouse_up(rct_window *w, int widgetIndex);
void window_guest_unknown_05(rct_window *w);
void window_guest_stats_resize(rct_window *w);
void window_guest_stats_update(rct_window *w);
void window_guest_stats_invalidate(rct_window *w);
void window_guest_stats_paint(rct_window *w, rct_drawpixelinfo *dpi);
void window_guest_rides_resize(rct_window *w);
void window_guest_rides_update(rct_window *w);
void window_guest_rides_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId);
void window_guest_rides_scroll_get_size(rct_window *w, int scrollIndex, int *width, int *height);
void window_guest_rides_scroll_mouse_down(rct_window *w, int scrollIndex, int x, int y);
void window_guest_rides_scroll_mouse_over(rct_window *w, int scrollIndex, int x, int y);
void window_guest_rides_invalidate(rct_window *w);
void window_guest_rides_paint(rct_window *w, rct_drawpixelinfo *dpi);
void window_guest_rides_scroll_paint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex);
void window_guest_finance_resize(rct_window *w);
void window_guest_finance_update(rct_window *w);
void window_guest_finance_invalidate(rct_window *w);
void window_guest_finance_paint(rct_window *w, rct_drawpixelinfo *dpi);
void window_guest_thoughts_resize(rct_window *w);
void window_guest_thoughts_update(rct_window *w);
void window_guest_thoughts_invalidate(rct_window *w);
void window_guest_thoughts_paint(rct_window *w, rct_drawpixelinfo *dpi);
void window_guest_inventory_resize(rct_window *w);
void window_guest_inventory_update(rct_window *w);
void window_guest_inventory_invalidate(rct_window *w);
void window_guest_inventory_paint(rct_window *w, rct_drawpixelinfo *dpi);
static rct_window_event_list window_guest_overview_events = {
window_guest_overview_close,
window_guest_overview_mouse_up,
window_guest_overview_resize,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
NULL,
NULL,
NULL,
window_guest_overview_update,
window_guest_emptysub,
window_guest_emptysub,
window_guest_overview_tool_update,//tool_update
window_guest_overview_tool_down,//tool_down
window_guest_emptysub,
window_guest_emptysub,
window_guest_overview_tool_abort,//tool_abort
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_overview_text_input,//text_input
window_guest_overview_viewport_init_wrapper,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_overview_invalidate, //Invalidate
window_guest_overview_paint, //Paint
window_guest_emptysub
NULL,
NULL,
window_guest_overview_tool_update,
window_guest_overview_tool_down,
NULL,
NULL,
window_guest_overview_tool_abort,
NULL,
NULL,
NULL,
NULL,
NULL,
window_guest_overview_text_input,
window_guest_overview_unknown_14,
NULL,
NULL,
NULL,
NULL,
window_guest_overview_invalidate,
window_guest_overview_paint,
NULL
};
void window_guest_mouse_up();
void window_guest_unknown_05();
void window_guest_stats_resize();
void window_guest_stats_update();
void window_guest_stats_invalidate();
void window_guest_stats_paint();
static void* window_guest_stats_events[] = {
window_guest_emptysub,
window_guest_mouse_up, //mouse_up
window_guest_stats_resize, //resize
window_guest_emptysub,
window_guest_emptysub,
static rct_window_event_list window_guest_stats_events = {
NULL,
window_guest_mouse_up,
window_guest_stats_resize,
NULL,
NULL,
window_guest_unknown_05,
window_guest_stats_update,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_stats_invalidate, //invalidate
window_guest_stats_paint, //paint
window_guest_emptysub
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_guest_stats_invalidate,
window_guest_stats_paint,
NULL
};
void window_guest_rides_resize();
void window_guest_rides_update();
void window_guest_rides_tooltip();
void window_guest_rides_scroll_get_size();
void window_guest_rides_scroll_mouse_down();
void window_guest_rides_scroll_mouse_over();
void window_guest_rides_invalidate();
void window_guest_rides_paint();
void window_guest_rides_scroll_paint();
static void* window_guest_rides_events[] = {
window_guest_emptysub,
window_guest_mouse_up, //mouse_up
window_guest_rides_resize, //resize
window_guest_emptysub,
window_guest_emptysub,
static rct_window_event_list window_guest_rides_events = {
NULL,
window_guest_mouse_up,
window_guest_rides_resize,
NULL,
NULL,
window_guest_unknown_05,
window_guest_rides_update,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_rides_scroll_get_size, //scroll_get_size
window_guest_rides_scroll_mouse_down, //scroll_mouse_down
window_guest_emptysub,
window_guest_rides_scroll_mouse_over, //scroll_mouse_over
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_rides_tooltip, //tooltip
window_guest_emptysub,
window_guest_emptysub,
window_guest_rides_invalidate, //invalidate
window_guest_rides_paint, //paint
window_guest_rides_scroll_paint //scroll_paint
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_guest_rides_scroll_get_size,
window_guest_rides_scroll_mouse_down,
NULL,
window_guest_rides_scroll_mouse_over,
NULL,
NULL,
NULL,
window_guest_rides_tooltip,
NULL,
NULL,
window_guest_rides_invalidate,
window_guest_rides_paint,
window_guest_rides_scroll_paint
};
void window_guest_finance_resize();
void window_guest_finance_update();
void window_guest_finance_invalidate();
void window_guest_finance_paint();
static void* window_guest_finance_events[] = {
window_guest_emptysub,
window_guest_mouse_up, //mouse_up
window_guest_finance_resize, //resize
window_guest_emptysub,
window_guest_emptysub,
static rct_window_event_list window_guest_finance_events = {
NULL,
window_guest_mouse_up,
window_guest_finance_resize,
NULL,
NULL,
window_guest_unknown_05,
window_guest_finance_update,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_finance_invalidate, //invalidate
window_guest_finance_paint, //paint
window_guest_emptysub
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_guest_finance_invalidate,
window_guest_finance_paint,
NULL
};
void window_guest_thoughts_resize();
void window_guest_thoughts_update();
void window_guest_thoughts_invalidate();
void window_guest_thoughts_paint();
static void* window_guest_thoughts_events[] = {
window_guest_emptysub,
window_guest_mouse_up, //mouse_up
window_guest_thoughts_resize, //resize
window_guest_emptysub,
window_guest_emptysub,
static rct_window_event_list window_guest_thoughts_events = {
NULL,
window_guest_mouse_up,
window_guest_thoughts_resize,
NULL,
NULL,
window_guest_unknown_05,
window_guest_thoughts_update,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_thoughts_invalidate, //invalidate
window_guest_thoughts_paint, //paint
window_guest_emptysub
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_guest_thoughts_invalidate,
window_guest_thoughts_paint,
NULL
};
void window_guest_inventory_resize();
void window_guest_inventory_update();
void window_guest_inventory_invalidate();
void window_guest_inventory_paint();
static void* window_guest_inventory_events[] = {
window_guest_emptysub,
window_guest_mouse_up, //mouse_up
window_guest_inventory_resize, //resize
window_guest_emptysub,
window_guest_emptysub,
static rct_window_event_list window_guest_inventory_events = {
NULL,
window_guest_mouse_up,
window_guest_inventory_resize,
NULL,
NULL,
window_guest_unknown_05,
window_guest_inventory_update,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_emptysub,
window_guest_inventory_invalidate, //invalidate
window_guest_inventory_paint, //paint
window_guest_emptysub
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_guest_inventory_invalidate,
window_guest_inventory_paint,
NULL
};
//0x981D24
void* window_guest_page_events[] = {
window_guest_overview_events,
window_guest_stats_events,
window_guest_rides_events,
window_guest_finance_events,
window_guest_thoughts_events,
window_guest_inventory_events
static rct_window_event_list *window_guest_page_events[] = {
&window_guest_overview_events,
&window_guest_stats_events,
&window_guest_rides_events,
&window_guest_finance_events,
&window_guest_thoughts_events,
&window_guest_inventory_events
};
void window_guest_set_colours();
@ -493,7 +491,7 @@ void window_guest_open(rct_peep* peep){
window = window_bring_to_front_by_number(WC_PEEP, peep->sprite_index);
if (window == NULL){
window = window_create_auto_pos(192, 157, (uint32*)window_guest_overview_events, WC_PEEP, WF_RESIZABLE);
window = window_create_auto_pos(192, 157, &window_guest_overview_events, WC_PEEP, WF_RESIZABLE);
window->widgets = window_guest_overview_widgets;
window->enabled_widgets = window_guest_page_enabled_widgets[0];
window->number = peep->sprite_index;
@ -552,24 +550,17 @@ void window_guest_disable_widgets(rct_window* w){
}
/* rct2: 0x00696A75 */
void window_guest_overview_close(){
rct_window* w;
window_get_register(w);
void window_guest_overview_close(rct_window *w)
{
if (RCT2_GLOBAL(RCT2_ADDRESS_INPUT_FLAGS, uint32) & INPUT_FLAG_TOOL_ACTIVE){
if (w->classification == RCT2_GLOBAL(RCT2_ADDRESS_TOOL_WINDOWCLASS,rct_windowclass) &&
w->number == RCT2_GLOBAL(RCT2_ADDRESS_TOOL_WINDOWNUMBER,rct_windownumber))
w->number == RCT2_GLOBAL(RCT2_ADDRESS_TOOL_WINDOWNUMBER,rct_windownumber))
tool_cancel();
}
}
/* rct2: 0x00696FBE */
void window_guest_overview_resize(){
rct_window* w;
window_get_register(w);
void window_guest_overview_resize(rct_window *w){
window_guest_disable_widgets(w);
window_event_invalidate_call(w);
@ -596,10 +587,8 @@ void window_guest_overview_resize(){
}
/* rct2: 0x00696A06 */
void window_guest_overview_mouse_up(){
short widgetIndex;
rct_window* w;
window_widget_get_registers(w, widgetIndex);
void window_guest_overview_mouse_up(rct_window *w, int widgetIndex)
{
rct_peep* peep = GET_PEEP(w->number);
switch(widgetIndex){
@ -687,10 +676,8 @@ void window_guest_set_page(rct_window* w, int page){
if (listen && w->viewport) w->viewport->flags |= VIEWPORT_FLAG_SOUND_ON;
}
void window_guest_overview_viewport_init_wrapper(){
rct_window* w;
window_get_register(w);
void window_guest_overview_unknown_14(rct_window *w)
{
window_guest_viewport_init(w);
}
@ -953,12 +940,8 @@ void window_guest_inventory_tab_paint(rct_window* w, rct_drawpixelinfo* dpi){
}
/* rct2: 0x696887 */
void window_guest_overview_paint(){
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
void window_guest_overview_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
window_draw_widgets(w, dpi);
window_guest_overview_tab_paint(w, dpi);
window_guest_stats_tab_paint(w, dpi);
@ -1025,9 +1008,8 @@ void window_guest_overview_paint(){
}
/* rct2: 0x696749*/
void window_guest_overview_invalidate(){
rct_window* w;
window_get_register(w);
void window_guest_overview_invalidate(rct_window *w)
{
colour_scheme_update(w);
if (window_guest_page_widgets[w->page] != w->widgets){
@ -1111,17 +1093,13 @@ void window_guest_overview_update(rct_window* w){
}
/* rct2:0x696A6A */
void window_guest_overview_text_input(){
short widgetIndex;
rct_window *w;
char _cl;
uint32* text;
void window_guest_overview_text_input(rct_window *w, int widgetIndex, char *text)
{
if (widgetIndex != WIDX_RENAME)
return;
window_text_input_get_registers(w, widgetIndex, _cl, text);
if (widgetIndex != WIDX_RENAME)return;
if (!_cl) return;
if (text == NULL)
return;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_STRING_ID, uint16) = 0x5AE;
@ -1131,14 +1109,10 @@ void window_guest_overview_text_input(){
}
/* rct2: 0x696A5F */
void window_guest_overview_tool_update(){
short widgetIndex;
rct_window* w;
short x, y;
window_tool_get_registers(w, widgetIndex, x, y);
if (widgetIndex != WIDX_PICKUP) return;
void window_guest_overview_tool_update(rct_window* w, int widgetIndex, int x, int y)
{
if (widgetIndex != WIDX_PICKUP)
return;
map_invalidate_selection_rect();
@ -1183,14 +1157,10 @@ void window_guest_overview_tool_update(){
}
/* rct2: 0x696A54 */
void window_guest_overview_tool_down(){
short widgetIndex;
rct_window* w;
short x, y;
window_tool_get_registers(w, widgetIndex, x, y);
if (widgetIndex != WIDX_PICKUP) return;
void window_guest_overview_tool_down(rct_window* w, int widgetIndex, int x, int y)
{
if (widgetIndex != WIDX_PICKUP)
return;
int dest_x, dest_y;
rct_map_element *mapElement;
@ -1242,16 +1212,14 @@ void window_guest_overview_tool_down(){
}
/* rct2: 0x696A49 */
void window_guest_overview_tool_abort(){
short widgetIndex;
rct_window* w;
short x, y;
window_tool_get_registers(w, widgetIndex, x, y);
if (widgetIndex != WIDX_PICKUP) return;
void window_guest_overview_tool_abort(rct_window *w, int widgetIndex)
{
if (widgetIndex != WIDX_PICKUP)
return;
rct_peep* peep = GET_PEEP(w->number);
if (peep->state != PEEP_STATE_PICKED) return;
if (peep->state != PEEP_STATE_PICKED)
return;
sprite_move( w->var_48C, peep->y, peep->z + 8, (rct_sprite*)peep);
invalidate_sprite((rct_sprite*)peep);
@ -1273,11 +1241,8 @@ void window_guest_overview_tool_abort(){
/* rct2:0x69744F, 0x697795, 0x697BDD, 0x697E18, 0x698279
* This is a combination of 5 functions that were identical
*/
void window_guest_mouse_up(){
short widgetIndex;
rct_window* w;
window_widget_get_registers(w, widgetIndex);
void window_guest_mouse_up(rct_window *w, int widgetIndex)
{
switch (widgetIndex){
case WIDX_CLOSE:
window_close(w);
@ -1294,28 +1259,22 @@ void window_guest_mouse_up(){
}
/* rct2: 0x697488 */
void window_guest_stats_resize(){
rct_window* w;
window_get_register(w);
void window_guest_stats_resize(rct_window *w)
{
window_set_resize(w, 192, 162, 192, 162);
}
/* rct2: 0x6974ED, 0x00697959, 0x00697C7B, 0x00697ED2, 0x00698333
* This is a combination of 5 functions that were identical
*/
void window_guest_unknown_05(){
rct_window* w;
window_get_register(w);
void window_guest_unknown_05(rct_window *w)
{
widget_invalidate(w, WIDX_TAB_1);
}
/* rct2: 0x69746A */
void window_guest_stats_update(){
rct_window* w;
window_get_register(w);
void window_guest_stats_update(rct_window *w)
{
w->frame_no++;
rct_peep* peep = GET_PEEP(w->number);
peep->var_45 &= ~(1<<1);
@ -1324,9 +1283,8 @@ void window_guest_stats_update(){
}
/* rct2: 0x69707D */
void window_guest_stats_invalidate(){
rct_window* w;
window_get_register(w);
void window_guest_stats_invalidate(rct_window *w)
{
colour_scheme_update(w);
if (w->widgets != window_guest_page_widgets[w->page]) {
@ -1380,12 +1338,8 @@ void window_guest_stats_bars_paint(int value, int x, int y, rct_window *w, rct_d
}
/* rct2: 0x0069711D */
void window_guest_stats_paint(){
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
void window_guest_stats_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
window_draw_widgets(w, dpi);
window_guest_overview_tab_paint(w, dpi);
window_guest_stats_tab_paint(w, dpi);
@ -1536,18 +1490,14 @@ void window_guest_stats_paint(){
}
/* rct2: 0x006978F4 */
void window_guest_rides_resize(){
rct_window* w;
window_get_register(w);
void window_guest_rides_resize(rct_window *w)
{
window_set_resize(w, 192, 128, 500, 400);
}
/* rct2: 0x6977B0 */
void window_guest_rides_update(){
rct_window* w;
window_get_register(w);
void window_guest_rides_update(rct_window *w)
{
w->frame_no++;
widget_invalidate(w, WIDX_TAB_2);
@ -1580,27 +1530,22 @@ void window_guest_rides_update(){
}
/* rct2: 0x697844 */
void window_guest_rides_tooltip(){
void window_guest_rides_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId)
{
RCT2_GLOBAL(0x013CE952, uint16) = STR_LIST;
}
/* rct2: 0x69784E */
void window_guest_rides_scroll_get_size()
void window_guest_rides_scroll_get_size(rct_window *w, int scrollIndex, int *width, int *height)
{
rct_window *w;
int width, height;
window_get_register(w);
width = 0;
height = w->no_list_items * 10;
*height = w->no_list_items * 10;
if (w->selected_list_item != -1){
w->selected_list_item = -1;
window_invalidate(w);
}
int visable_height = height
int visable_height = *height
- window_guest_rides_widgets[WIDX_RIDE_SCROLL].bottom
+ window_guest_rides_widgets[WIDX_RIDE_SCROLL].top
+ 21;
@ -1611,17 +1556,12 @@ void window_guest_rides_scroll_get_size()
w->scrolls[0].v_top = visable_height;
window_invalidate(w);
}
window_scrollsize_set_registers(width, height);
}
/* rct2: 0x006978CC */
void window_guest_rides_scroll_mouse_down(){
void window_guest_rides_scroll_mouse_down(rct_window *w, int scrollIndex, int x, int y)
{
int index;
short x, y, scrollIndex;
rct_window *w;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
index = y / 10;
if (index >= w->no_list_items) return;
@ -1630,12 +1570,9 @@ void window_guest_rides_scroll_mouse_down(){
}
/* rct2: 0x0069789C */
void window_guest_rides_scroll_mouse_over(){
void window_guest_rides_scroll_mouse_over(rct_window *w, int scrollIndex, int x, int y)
{
int index;
short x, y, scrollIndex;
rct_window *w;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
index = y / 10;
if (index >= w->no_list_items)return;
@ -1647,9 +1584,8 @@ void window_guest_rides_scroll_mouse_over(){
}
/* rct2: 0x0069757A */
void window_guest_rides_invalidate(){
rct_window* w;
window_get_register(w);
void window_guest_rides_invalidate(rct_window *w)
{
colour_scheme_update(w);
if (window_guest_page_widgets[w->page] != w->widgets){
@ -1681,12 +1617,8 @@ void window_guest_rides_invalidate(){
}
/* rct2: 0x00697637 */
void window_guest_rides_paint(){
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
void window_guest_rides_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
window_draw_widgets(w, dpi);
window_guest_overview_tab_paint(w, dpi);
window_guest_stats_tab_paint(w, dpi);
@ -1720,12 +1652,8 @@ void window_guest_rides_paint(){
}
/* rct2: 0x006976FC */
void window_guest_rides_scroll_paint(){
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
void window_guest_rides_scroll_paint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
{
// ax
int left = dpi->x;
// bx
@ -1752,18 +1680,14 @@ void window_guest_rides_scroll_paint(){
}
/* rct2: 0x00697C16 */
void window_guest_finance_resize(){
rct_window* w;
window_get_register(w);
void window_guest_finance_resize(rct_window *w)
{
window_set_resize(w, 210, 134, 210, 134);
}
/* rct2: 0x00697BF8 */
void window_guest_finance_update(){
rct_window* w;
window_get_register(w);
void window_guest_finance_update(rct_window *w)
{
w->frame_no++;
widget_invalidate(w, WIDX_TAB_2);
@ -1771,9 +1695,8 @@ void window_guest_finance_update(){
}
/* rct2: 0x00697968 */
void window_guest_finance_invalidate(){
rct_window* w;
window_get_register(w);
void window_guest_finance_invalidate(rct_window *w)
{
colour_scheme_update(w);
if (window_guest_page_widgets[w->page] != w->widgets){
@ -1803,12 +1726,8 @@ void window_guest_finance_invalidate(){
}
/* rct2: 0x00697A08 */
void window_guest_finance_paint(){
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
void window_guest_finance_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
window_draw_widgets(w, dpi);
window_guest_overview_tab_paint(w, dpi);
window_guest_stats_tab_paint(w, dpi);
@ -1886,10 +1805,8 @@ void window_guest_finance_paint(){
}
/* rct2: 0x00697E33 */
void window_guest_thoughts_resize(){
rct_window* w;
window_get_register(w);
void window_guest_thoughts_resize(rct_window *w)
{
rct_peep* peep = GET_PEEP(w->number);
if (peep->var_45 & 1){
peep->var_45 &=~(1 << 0);
@ -1900,10 +1817,8 @@ void window_guest_thoughts_resize(){
}
/* rct2: 0x00697EB4 */
void window_guest_thoughts_update(){
rct_window* w;
window_get_register(w);
void window_guest_thoughts_update(rct_window *w)
{
w->frame_no++;
widget_invalidate(w, WIDX_TAB_2);
@ -1911,9 +1826,8 @@ void window_guest_thoughts_update(){
}
/* rct2: 0x00697C8A */
void window_guest_thoughts_invalidate(){
rct_window* w;
window_get_register(w);
void window_guest_thoughts_invalidate(rct_window *w)
{
colour_scheme_update(w);
if (window_guest_page_widgets[w->page] != w->widgets){
@ -1943,12 +1857,8 @@ void window_guest_thoughts_invalidate(){
}
/* rct2: 0x00697D2A */
void window_guest_thoughts_paint(){
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
void window_guest_thoughts_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
window_draw_widgets(w, dpi);
window_guest_overview_tab_paint(w, dpi);
window_guest_stats_tab_paint(w, dpi);
@ -1989,10 +1899,8 @@ void window_guest_thoughts_paint(){
/* rct2: 0x00698294 */
void window_guest_inventory_resize(){
rct_window* w;
window_get_register(w);
void window_guest_inventory_resize(rct_window *w)
{
rct_peep* peep = GET_PEEP(w->number);
if (peep->var_45 & (1<<3)){
peep->var_45 &= ~(1 << 3);
@ -2003,10 +1911,8 @@ void window_guest_inventory_resize(){
}
/* rct2: 0x00698315 */
void window_guest_inventory_update(){
rct_window* w;
window_get_register(w);
void window_guest_inventory_update(rct_window *w)
{
w->frame_no++;
widget_invalidate(w, WIDX_TAB_2);
@ -2014,9 +1920,8 @@ void window_guest_inventory_update(){
}
/* rct2: 0x00697EE1 */
void window_guest_inventory_invalidate(){
rct_window* w;
window_get_register(w);
void window_guest_inventory_invalidate(rct_window *w)
{
colour_scheme_update(w);
if (window_guest_page_widgets[w->page] != w->widgets){
@ -2046,12 +1951,8 @@ void window_guest_inventory_invalidate(){
}
/* rct2: 0x00697F81 */
void window_guest_inventory_paint(){
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
void window_guest_inventory_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
window_draw_widgets(w, dpi);
window_guest_overview_tab_paint(w, dpi);
window_guest_stats_tab_paint(w, dpi);

View File

@ -72,46 +72,45 @@ static rct_widget window_guest_list_widgets[] = {
{ WIDGETS_END },
};
static void window_guest_list_emptysub() { }
static void window_guest_list_mouseup();
static void window_guest_list_resize();
static void window_guest_list_mouseup(rct_window *w, int widgetIndex);
static void window_guest_list_resize(rct_window *w);
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_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_guest_list_update(rct_window *w);
static void window_guest_list_scrollgetsize();
static void window_guest_list_scrollmousedown();
static void window_guest_list_scrollmouseover();
static void window_guest_list_tooltip();
static void window_guest_list_invalidate();
static void window_guest_list_paint();
static void window_guest_list_scrollpaint();
static void window_guest_list_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height);
static void window_guest_list_scrollmousedown(rct_window *w, int scrollIndex, int x, int y);
static void window_guest_list_scrollmouseover(rct_window *w, int scrollIndex, int x, int y);
static void window_guest_list_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId);
static void window_guest_list_invalidate(rct_window *w);
static void window_guest_list_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_guest_list_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex);
static void* window_guest_list_events[] = {
window_guest_list_emptysub,
static rct_window_event_list window_guest_list_events = {
NULL,
window_guest_list_mouseup,
window_guest_list_resize,
window_guest_list_mousedown,
window_guest_list_dropdown,
window_guest_list_emptysub,
NULL,
window_guest_list_update,
window_guest_list_emptysub,
window_guest_list_emptysub,
window_guest_list_emptysub,
window_guest_list_emptysub,
window_guest_list_emptysub,
window_guest_list_emptysub,
window_guest_list_emptysub,
window_guest_list_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_guest_list_scrollgetsize,
window_guest_list_scrollmousedown,
window_guest_list_emptysub,
NULL,
window_guest_list_scrollmouseover,
window_guest_list_emptysub,
window_guest_list_emptysub,
window_guest_list_emptysub,
NULL,
NULL,
NULL,
window_guest_list_tooltip,
window_guest_list_emptysub,
window_guest_list_emptysub,
NULL,
NULL,
window_guest_list_invalidate,
window_guest_list_paint,
window_guest_list_scrollpaint
@ -148,7 +147,7 @@ void window_guest_list_open()
if (window != NULL)
return;
window = window_create_auto_pos(350, 330, (uint32*)window_guest_list_events, WC_GUEST_LIST, WF_10 | WF_RESIZABLE);
window = window_create_auto_pos(350, 330, &window_guest_list_events, WC_GUEST_LIST, WF_10 | WF_RESIZABLE);
window->widgets = window_guest_list_widgets;
window->enabled_widgets =
(1 << WIDX_CLOSE) |
@ -265,13 +264,8 @@ void window_guest_list_open_with_filter(int type, int index)
*
* rct2: 0x00699AAF
*/
static void window_guest_list_mouseup()
static void window_guest_list_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -286,12 +280,8 @@ static void window_guest_list_mouseup()
*
* rct2: 0x00699EA3
*/
static void window_guest_list_resize()
static void window_guest_list_resize(rct_window *w)
{
rct_window *w;
window_get_register(w);
w->min_width = 350;
w->min_height = 330;
if (w->width < w->min_width) {
@ -373,13 +363,8 @@ static void window_guest_list_mousedown(int widgetIndex, rct_window*w, rct_widge
*
* rct2: 0x00699AE1
*/
static void window_guest_list_dropdown()
static void window_guest_list_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
short dropdownIndex, widgetIndex;
rct_window *w;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
switch (widgetIndex) {
case WIDX_PAGE_DROPDOWN_BUTTON:
if (dropdownIndex == -1)
@ -414,14 +399,11 @@ static void window_guest_list_update(rct_window *w)
*
* rct2: 0x00699C55
*/
static void window_guest_list_scrollgetsize()
static void window_guest_list_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height)
{
int i, y, numGuests, spriteIndex, width, height;
rct_window *w;
int i, y, numGuests, spriteIndex;
rct_peep *peep;
window_get_register(w);
switch (_window_guest_list_selected_tab) {
case PAGE_INDIVIDUAL:
// Count the number of guests
@ -467,25 +449,19 @@ static void window_guest_list_scrollgetsize()
window_invalidate(w);
}
width = 447;
height = y;
window_scrollsize_set_registers(width, height);
*width = 447;
*height = y;
}
/**
*
* rct2: 0x00699D7D
*/
static void window_guest_list_scrollmousedown()
static void window_guest_list_scrollmousedown(rct_window *w, int scrollIndex, int x, int y)
{
int i, spriteIndex;
short x, y, scrollIndex;
rct_window *w;
rct_peep *peep;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
switch (_window_guest_list_selected_tab) {
case PAGE_INDIVIDUAL:
i = y / 10;
@ -525,13 +501,9 @@ static void window_guest_list_scrollmousedown()
*
* rct2: 0x00699D3B
*/
static void window_guest_list_scrollmouseover()
static void window_guest_list_scrollmouseover(rct_window *w, int scrollIndex, int x, int y)
{
int i;
short x, y, scrollIndex;
rct_window *w;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
i = y / (_window_guest_list_selected_tab == PAGE_INDIVIDUAL ? 10 : 21);
i += _window_guest_list_selected_page * 3173;
@ -545,7 +517,7 @@ static void window_guest_list_scrollmouseover()
*
* rct2: 0x00699E4A
*/
static void window_guest_list_tooltip()
static void window_guest_list_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId)
{
RCT2_GLOBAL(0x013CE952, uint16) = STR_LIST;
}
@ -554,11 +526,8 @@ static void window_guest_list_tooltip()
*
* rct2: 0x00699511
*/
static void window_guest_list_invalidate()
static void window_guest_list_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
w->pressed_widgets &= ~(1 << WIDX_TAB_1);
@ -587,13 +556,9 @@ static void window_guest_list_invalidate()
*
* rct2: 0x006995CC
*/
static void window_guest_list_paint()
static void window_guest_list_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
int i, x, y, format;
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
// Widgets
window_draw_widgets(w, dpi);
@ -647,17 +612,13 @@ static void window_guest_list_paint()
*
* rct2: 0x00699701
*/
static void window_guest_list_scrollpaint()
static void window_guest_list_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
{
int spriteIndex, format, numGuests, i, j, y;
rct_window *w;
rct_drawpixelinfo *dpi;
rct_peep *peep;
rct_peep_thought *thought;
uint32 argument_1, argument_2;
window_paint_get_registers(w, dpi);
// Background fill
gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, ((char*)0x0141FC48)[w->colours[1] * 8]);

View File

@ -53,42 +53,41 @@ static rct_widget window_install_track_widgets[] = {
{ WIDGETS_END },
};
static void window_install_track_emptysub() { }
static void window_install_track_close();
static void window_install_track_mouseup();
static void window_install_track_invalidate();
static void window_install_track_paint();
static void window_install_track_text_input();
static void window_install_track_close(rct_window *w);
static void window_install_track_mouseup(rct_window *w, int widgetIndex);
static void window_install_track_invalidate(rct_window *w);
static void window_install_track_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_install_track_text_input(rct_window *w, int widgetIndex, char *text);
static void* window_install_track_events[] = {
(uint32*)window_install_track_close,
(uint32*)window_install_track_mouseup,
(uint32*)window_install_track_emptysub,
(uint32*)window_install_track_emptysub,
(uint32*)window_install_track_emptysub,
(uint32*)window_install_track_emptysub,
(uint32*)window_install_track_emptysub,
(uint32*)window_install_track_emptysub,
(uint32*)window_install_track_emptysub,
(uint32*)window_install_track_emptysub,
(uint32*)window_install_track_emptysub,
(uint32*)window_install_track_emptysub,
(uint32*)window_install_track_emptysub,
(uint32*)window_install_track_emptysub,
(uint32*)window_install_track_emptysub,
(uint32*)window_install_track_emptysub,
(uint32*)window_install_track_emptysub,
(uint32*)window_install_track_emptysub,
(uint32*)window_install_track_emptysub,
(uint32*)window_install_track_text_input,
(uint32*)window_install_track_emptysub,
(uint32*)window_install_track_emptysub,
(uint32*)window_install_track_emptysub,
(uint32*)window_install_track_emptysub,
(uint32*)window_install_track_emptysub,
(uint32*)window_install_track_invalidate,
(uint32*)window_install_track_paint,
(uint32*)window_install_track_emptysub
static rct_window_event_list window_install_track_events = {
window_install_track_close,
window_install_track_mouseup,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_install_track_text_input,
NULL,
NULL,
NULL,
NULL,
NULL,
window_install_track_invalidate,
window_install_track_paint,
NULL
};
ride_list_item _window_install_track_item;
@ -127,7 +126,7 @@ void window_install_track_open(const char* path)
x = RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, uint16) / 2 - 201;
y = max(28, RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_HEIGHT, uint16) / 2 - 200);
w = window_create(x, y, 402, 400, (uint32*)window_install_track_events, WC_INSTALL_TRACK, 0);
w = window_create(x, y, 402, 400, &window_install_track_events, WC_INSTALL_TRACK, 0);
w->widgets = window_install_track_widgets;
w->enabled_widgets = (1 << WIDX_CLOSE) | (1 << WIDX_ROTATE) | (1 << WIDX_TOGGLE_SCENERY) | (1 << WIDX_INSTALL) | (1 << WIDX_CANCEL);
window_init_scroll_widgets(w);
@ -210,7 +209,7 @@ static void window_install_track_select(rct_window *w, int index)
*
* rct2: 0x006D41DC
*/
static void window_install_track_close()
static void window_install_track_close(rct_window *w)
{
free(RCT2_GLOBAL(RCT2_ADDRESS_TRACK_DESIGN_CACHE, void*));
}
@ -219,12 +218,9 @@ static void window_install_track_close()
*
* rct2: 0x006D407A
*/
static void window_install_track_mouseup()
static void window_install_track_mouseup(rct_window *w, int widgetIndex)
{
rct_window *w;
short widgetIndex, result;
window_widget_get_registers(w, widgetIndex);
int result;
switch (widgetIndex) {
case WIDX_CLOSE:
@ -264,10 +260,8 @@ static void window_install_track_mouseup()
*
* rct2: 0x006D3B06
*/
static void window_install_track_invalidate()
static void window_install_track_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
w->pressed_widgets |= 1 << WIDX_TRACK_PREVIEW;
@ -288,10 +282,8 @@ static void window_install_track_invalidate()
*
* rct2: 0x006D3B1F
*/
static void window_install_track_paint()
static void window_install_track_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
rct_widget *widget;
rct_track_design *trackDesign = NULL;
uint8 *image, *trackDesignList = RCT2_ADDRESS(RCT2_ADDRESS_TRACK_LIST, uint8);
@ -300,8 +292,6 @@ static void window_install_track_paint()
int x, y, colour, gForces, airTime;
rct_g1_element tmpElement, *subsituteElement;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
if (w->track_list.var_482 == 0xFFFF)
@ -467,21 +457,14 @@ static void window_install_track_paint()
*
* rct2: 0x006D40A7
*/
static void window_install_track_text_input(){
short widgetIndex;
rct_window *w;
char _cl;
char* text;
window_text_input_get_registers(w, widgetIndex, _cl, text);
if (_cl == 0)
{
static void window_install_track_text_input(rct_window *w, int widgetIndex, char *text)
{
if (text == NULL) {
window_close(w);
return;
}
if (widgetIndex == WIDX_INSTALL){
if (widgetIndex == WIDX_INSTALL) {
char* extension_pointer = track_dest_name;
while (*extension_pointer++ != '.');
--extension_pointer;

View File

@ -53,47 +53,46 @@ static rct_widget window_land_widgets[] = {
{ WIDGETS_END },
};
static void window_land_emptysub() { }
static void window_land_close();
static void window_land_mouseup();
static void window_land_close(rct_window *w);
static void window_land_mouseup(rct_window *w, int widgetIndex);
static void window_land_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_land_dropdown();
static void window_land_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_land_update(rct_window *w);
static void window_land_invalidate();
static void window_land_paint();
static void window_land_textinput();
static void window_land_invalidate(rct_window *w);
static void window_land_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_land_textinput(rct_window *w, int widgetIndex, char *text);
static void window_land_inputsize(rct_window *w);
static void* window_land_events[] = {
static rct_window_event_list window_land_events = {
window_land_close,
window_land_mouseup,
window_land_emptysub,
NULL,
window_land_mousedown,
window_land_dropdown,
window_land_emptysub,
NULL,
window_land_update,
window_land_emptysub,
window_land_emptysub,
window_land_emptysub,
window_land_emptysub,
window_land_emptysub,
window_land_emptysub,
window_land_emptysub,
window_land_emptysub,
window_land_emptysub,
window_land_emptysub,
window_land_emptysub,
window_land_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_land_textinput,
window_land_emptysub,
window_land_emptysub,
window_land_emptysub,
window_land_emptysub,
window_land_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
window_land_invalidate,
window_land_paint,
window_land_emptysub
NULL
};
static char window_land_floor_texture_order[] = {
@ -127,7 +126,7 @@ void window_land_open()
if (window_find_by_class(WC_LAND) != NULL)
return;
window = window_create(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, uint16) - 98, 29, 98, 126, (uint32*)window_land_events, WC_LAND, 0);
window = window_create(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, uint16) - 98, 29, 98, 126, &window_land_events, WC_LAND, 0);
window->widgets = window_land_widgets;
window->enabled_widgets =
(1 << WIDX_CLOSE) |
@ -153,7 +152,7 @@ void window_land_open()
*
* rct2: 0x006640A5
*/
static void window_land_close()
static void window_land_close(rct_window *w)
{
// If the tool wasn't changed, turn tool off
if (land_tool_is_active())
@ -164,13 +163,9 @@ static void window_land_close()
*
* rct2: 0x00664064
*/
static void window_land_mouseup()
static void window_land_mouseup(rct_window *w, int widgetIndex)
{
int limit;
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
@ -267,13 +262,9 @@ static void window_land_mousedown(int widgetIndex, rct_window*w, rct_widget* wid
*
* rct2: 0x00664090
*/
static void window_land_dropdown()
static void window_land_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
int type;
short dropdownIndex, widgetIndex;
rct_window *w;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
switch (widgetIndex) {
case WIDX_FLOOR:
@ -311,18 +302,12 @@ static void window_land_dropdown()
}
}
static void window_land_textinput()
static void window_land_textinput(rct_window *w, int widgetIndex, char *text)
{
uint8 result;
short widgetIndex;
rct_window *w;
char *text;
int size;
char* end;
window_textinput_get_registers(w, widgetIndex, result, text);
if (widgetIndex != WIDX_PREVIEW || !result)
if (widgetIndex != WIDX_PREVIEW || text == NULL)
return;
size = strtol(text, &end, 10);
@ -355,11 +340,8 @@ static void window_land_update(rct_window *w)
*
* rct2: 0x00663F20
*/
static void window_land_invalidate()
static void window_land_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
w->pressed_widgets = (1 << WIDX_PREVIEW);
@ -381,15 +363,11 @@ static void window_land_invalidate()
*
* rct2: 0x00663F7C
*/
static void window_land_paint()
static void window_land_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
int x, y, numTiles;
money32 price;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
x = w->x + (window_land_widgets[WIDX_PREVIEW].left + window_land_widgets[WIDX_PREVIEW].right) / 2;

View File

@ -56,44 +56,43 @@ static rct_widget window_land_rights_widgets[] = {
static int window_land_rights_should_close();
static void window_land_rights_emptysub() { }
static void window_land_rights_close();
static void window_land_rights_mouseup();
static void window_land_rights_update();
static void window_land_rights_invalidate();
static void window_land_rights_paint();
static void window_land_rights_textinput();
static void window_land_rights_close(rct_window *w);
static void window_land_rights_mouseup(rct_window *w, int widgetIndex);
static void window_land_rights_update(rct_window *w);
static void window_land_rights_invalidate(rct_window *w);
static void window_land_rights_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_land_rights_textinput(rct_window *w, int widgetIndex, char *text);
static void window_land_rights_inputsize(rct_window *w);
static void* window_land_rights_events[] = {
static rct_window_event_list window_land_rights_events = {
window_land_rights_close,
window_land_rights_mouseup,
window_land_rights_emptysub,
window_land_rights_emptysub,
window_land_rights_emptysub,
window_land_rights_emptysub,
NULL,
NULL,
NULL,
NULL,
window_land_rights_update,
window_land_rights_emptysub,
window_land_rights_emptysub,
window_land_rights_emptysub,
window_land_rights_emptysub,
window_land_rights_emptysub,
window_land_rights_emptysub,
window_land_rights_emptysub,
window_land_rights_emptysub,
window_land_rights_emptysub,
window_land_rights_emptysub,
window_land_rights_emptysub,
window_land_rights_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_land_rights_textinput,
window_land_rights_emptysub,
window_land_rights_emptysub,
window_land_rights_emptysub,
window_land_rights_emptysub,
window_land_rights_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
window_land_rights_invalidate,
window_land_rights_paint,
window_land_rights_emptysub
NULL
};
void window_land_rights_open()
@ -104,7 +103,7 @@ void window_land_rights_open()
if (window_find_by_class(WC_LAND_RIGHTS) != NULL)
return;
window = window_create(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, uint16) - 98, 29, 98, 94, (uint32*)window_land_rights_events, WC_LAND_RIGHTS, 0);
window = window_create(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, uint16) - 98, 29, 98, 94, &window_land_rights_events, WC_LAND_RIGHTS, 0);
window->widgets = window_land_rights_widgets;
window->enabled_widgets = (1 << WIDX_CLOSE) | (1 << WIDX_DECREMENT) | (1 << WIDX_INCREMENT) | (1 << WIDX_PREVIEW) |
(1 << WIDX_BUY_LAND_RIGHTS) | (1 << WIDX_BUY_CONSTRUCTION_RIGHTS);
@ -120,7 +119,7 @@ void window_land_rights_open()
show_land_rights();
}
static void window_land_rights_close()
static void window_land_rights_close(rct_window *w)
{
//if (LandRightsMode)
// hide_land_rights();
@ -131,13 +130,9 @@ static void window_land_rights_close()
tool_cancel();
}
static void window_land_rights_mouseup()
static void window_land_rights_mouseup(rct_window *w, int widgetIndex)
{
rct_window *w;
int limit;
short widgetIndex;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
@ -187,18 +182,12 @@ static void window_land_rights_mouseup()
}
}
static void window_land_rights_textinput()
static void window_land_rights_textinput(rct_window *w, int widgetIndex, char *text)
{
uint8 result;
short widgetIndex;
rct_window *w;
char *text;
int size;
char* end;
window_textinput_get_registers(w, widgetIndex, result, text);
if (widgetIndex != WIDX_PREVIEW || !result)
if (widgetIndex != WIDX_PREVIEW || text == NULL)
return;
size = strtol(text, &end, 10);
@ -224,11 +213,8 @@ static void window_land_rights_update(rct_window *w)
window_close(w);
}
static void window_land_rights_invalidate()
static void window_land_rights_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
// Set the preview image button to be pressed down
@ -241,14 +227,10 @@ static void window_land_rights_invalidate()
0xFFFFFFFF;
}
static void window_land_rights_paint()
static void window_land_rights_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
int x, y;
window_paint_get_registers(w, dpi);
x = w->x + (window_land_rights_widgets[WIDX_PREVIEW].left + window_land_rights_widgets[WIDX_PREVIEW].right) / 2;
y = w->y + (window_land_rights_widgets[WIDX_PREVIEW].top + window_land_rights_widgets[WIDX_PREVIEW].bottom) / 2;

View File

@ -64,45 +64,44 @@ static rct_widget window_loadsave_widgets[] = {
#pragma region Events
void window_loadsave_emptysub() { }
static void window_loadsave_close();
static void window_loadsave_mouseup();
static void window_loadsave_close(rct_window *w);
static void window_loadsave_mouseup(rct_window *w, int widgetIndex);
static void window_loadsave_update(rct_window *w);
static void window_loadsave_scrollgetsize();
static void window_loadsave_scrollmousedown();
static void window_loadsave_scrollmouseover();
static void window_loadsave_textinput();
static void window_loadsave_tooltip();
static void window_loadsave_invalidate();
static void window_loadsave_paint();
static void window_loadsave_scrollpaint();
static void window_loadsave_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height);
static void window_loadsave_scrollmousedown(rct_window *w, int scrollIndex, int x, int y);
static void window_loadsave_scrollmouseover(rct_window *w, int scrollIndex, int x, int y);
static void window_loadsave_textinput(rct_window *w, int widgetIndex, char *text);
static void window_loadsave_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId);
static void window_loadsave_invalidate(rct_window *w);
static void window_loadsave_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_loadsave_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex);
static void* window_loadsave_events[] = {
static rct_window_event_list window_loadsave_events = {
window_loadsave_close,
window_loadsave_mouseup,
window_loadsave_emptysub,
window_loadsave_emptysub,
window_loadsave_emptysub,
window_loadsave_emptysub,
window_loadsave_emptysub,
window_loadsave_emptysub,
window_loadsave_emptysub,
window_loadsave_emptysub,
window_loadsave_emptysub,
window_loadsave_emptysub,
window_loadsave_emptysub,
window_loadsave_emptysub,
window_loadsave_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_loadsave_scrollgetsize,
window_loadsave_scrollmousedown,
window_loadsave_emptysub,
NULL,
window_loadsave_scrollmouseover,
window_loadsave_textinput,
window_loadsave_emptysub,
window_loadsave_emptysub,
NULL,
NULL,
window_loadsave_tooltip,
window_loadsave_emptysub,
window_loadsave_emptysub,
NULL,
NULL,
window_loadsave_invalidate,
window_loadsave_paint,
window_loadsave_scrollpaint
@ -154,7 +153,7 @@ rct_window *window_loadsave_open(int type, char *defaultName)
w = window_bring_to_front_by_class(WC_LOADSAVE);
if (w == NULL) {
w = window_create_centred(WW, WH, (uint32*)window_loadsave_events, WC_LOADSAVE, WF_STICK_TO_FRONT);
w = window_create_centred(WW, WH, &window_loadsave_events, WC_LOADSAVE, WF_STICK_TO_FRONT);
w->widgets = window_loadsave_widgets;
w->enabled_widgets = (1 << WIDX_CLOSE) | (1 << WIDX_SORT_NAME) | (1 << WIDX_SORT_DATE) | (1 << WIDX_BROWSE);
w->colours[0] = 7;
@ -253,7 +252,7 @@ rct_window *window_loadsave_open(int type, char *defaultName)
return w;
}
static void window_loadsave_close()
static void window_loadsave_close(rct_window *w)
{
if (_listItems != NULL) {
free(_listItems);
@ -263,15 +262,11 @@ static void window_loadsave_close()
window_close_by_class(WC_LOADSAVE_OVERWRITE_PROMPT);
}
static void window_loadsave_mouseup()
static void window_loadsave_mouseup(rct_window *w, int widgetIndex)
{
rct_window *w;
short widgetIndex;
int result;
char filename[MAX_PATH], filter[MAX_PATH];
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex){
case WIDX_CLOSE:
window_close(w);
@ -347,26 +342,14 @@ static int has_extension(char *path, char *extension)
return 1;
}
static void window_loadsave_scrollgetsize()
static void window_loadsave_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height)
{
rct_window *w;
int width, height;
window_get_register(w);
width = 0;
height = w->no_list_items * 10;
window_scrollsize_set_registers(width, height);
*height = w->no_list_items * 10;
}
static void window_loadsave_scrollmousedown()
static void window_loadsave_scrollmousedown(rct_window *w, int scrollIndex, int x, int y)
{
int selectedItem;
short x, y, scrollIndex;
rct_window *w;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
selectedItem = y / 10;
if (selectedItem >= w->no_list_items)
@ -408,13 +391,9 @@ static void window_loadsave_scrollmousedown()
}
}
static void window_loadsave_scrollmouseover()
static void window_loadsave_scrollmouseover(rct_window *w, int scrollIndex, int x, int y)
{
int selectedItem;
short x, y, scrollIndex;
rct_window *w;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
selectedItem = y / 10;
if (selectedItem >= w->no_list_items)
@ -425,17 +404,12 @@ static void window_loadsave_scrollmouseover()
window_invalidate(w);
}
static void window_loadsave_textinput()
static void window_loadsave_textinput(rct_window *w, int widgetIndex, char *text)
{
rct_window *w;
short widgetIndex;
uint8 result;
char *text, path[MAX_PATH];
char path[MAX_PATH];
int i, overwrite;
window_textinput_get_registers(w, widgetIndex, result, text);
if (!result || text[0] == 0)
if (text == NULL || text[0] == 0)
return;
if (gLoadSaveTitleSequenceSave) {
@ -471,26 +445,18 @@ static void window_loadsave_textinput()
window_loadsave_select(w, path);
}
static void window_loadsave_tooltip()
static void window_loadsave_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId)
{
RCT2_GLOBAL(0x013CE952, uint16) = STR_LIST;
}
static void window_loadsave_invalidate()
static void window_loadsave_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
}
static void window_loadsave_paint()
static void window_loadsave_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
if (_shortenedDirectory[0] == '\0')
@ -551,16 +517,12 @@ static void shorten_path(char* path, char* buffer, int available_width){
return;
}
static void window_loadsave_scrollpaint()
static void window_loadsave_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
{
int i, y;
rct_window *w;
rct_drawpixelinfo *dpi;
rct_string_id stringId, templateStringId = 3165;
char *templateString;
window_paint_get_registers(w, dpi);
gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, RCT2_ADDRESS(0x0141FC48,uint8)[w->colours[1] * 8]);
templateString = (char*)language_get_string(templateStringId);
@ -868,40 +830,39 @@ static rct_widget window_overwrite_prompt_widgets[] = {
{ WIDGETS_END }
};
static void window_overwrite_prompt_emptysub(){}
static void window_overwrite_prompt_mouseup();
static void window_overwrite_prompt_invalidate();
static void window_overwrite_prompt_paint();
static void window_overwrite_prompt_mouseup(rct_window *w, int widgetIndex);
static void window_overwrite_prompt_invalidate(rct_window *w);
static void window_overwrite_prompt_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void* window_overwrite_prompt_events[] = {
window_overwrite_prompt_emptysub,
static rct_window_event_list window_overwrite_prompt_events = {
NULL,
window_overwrite_prompt_mouseup,
window_overwrite_prompt_emptysub,
window_overwrite_prompt_emptysub,
window_overwrite_prompt_emptysub,
window_overwrite_prompt_emptysub,
window_overwrite_prompt_emptysub,
window_overwrite_prompt_emptysub,
window_overwrite_prompt_emptysub,
window_overwrite_prompt_emptysub,
window_overwrite_prompt_emptysub,
window_overwrite_prompt_emptysub,
window_overwrite_prompt_emptysub,
window_overwrite_prompt_emptysub,
window_overwrite_prompt_emptysub,
window_overwrite_prompt_emptysub,
window_overwrite_prompt_emptysub,
window_overwrite_prompt_emptysub,
window_overwrite_prompt_emptysub,
window_overwrite_prompt_emptysub,
window_overwrite_prompt_emptysub,
window_overwrite_prompt_emptysub,
window_overwrite_prompt_emptysub,
window_overwrite_prompt_emptysub,
window_overwrite_prompt_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_overwrite_prompt_invalidate,
window_overwrite_prompt_paint,
window_overwrite_prompt_emptysub
NULL
};
static char _window_overwrite_prompt_name[256];
@ -913,7 +874,7 @@ static rct_window *window_overwrite_prompt_open(const char *name, const char *pa
window_close_by_class(WC_LOADSAVE_OVERWRITE_PROMPT);
w = window_create_centred(OVERWRITE_WW, OVERWRITE_WH, (uint32*)window_overwrite_prompt_events, WC_LOADSAVE_OVERWRITE_PROMPT, WF_STICK_TO_FRONT);
w = window_create_centred(OVERWRITE_WW, OVERWRITE_WH, &window_overwrite_prompt_events, WC_LOADSAVE_OVERWRITE_PROMPT, WF_STICK_TO_FRONT);
w->widgets = window_overwrite_prompt_widgets;
w->enabled_widgets = (1 << WIDX_CLOSE) | (1 << WIDX_OVERWRITE_CANCEL) | (1 << WIDX_OVERWRITE_OVERWRITE);
window_init_scroll_widgets(w);
@ -926,14 +887,11 @@ static rct_window *window_overwrite_prompt_open(const char *name, const char *pa
return w;
}
static void window_overwrite_prompt_mouseup()
static void window_overwrite_prompt_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w, *loadsaveWindow;
rct_window *loadsaveWindow;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex){
switch (widgetIndex) {
case WIDX_OVERWRITE_OVERWRITE:
loadsaveWindow = window_find_by_class(WC_LOADSAVE);
if (loadsaveWindow != NULL)
@ -943,24 +901,17 @@ static void window_overwrite_prompt_mouseup()
case WIDX_OVERWRITE_CANCEL:
case WIDX_OVERWRITE_CLOSE:
window_close(w);
break;
}
}
static void window_overwrite_prompt_invalidate()
static void window_overwrite_prompt_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
}
static void window_overwrite_prompt_paint()
static void window_overwrite_prompt_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
rct_string_id templateStringId = 3165;

View File

@ -28,38 +28,37 @@ rct_widget window_main_widgets[] = {
{ WIDGETS_END },
};
void window_main_empty(){}
void window_main_paint();
void window_main_paint(rct_window *w, rct_drawpixelinfo *dpi);
void* window_main_events[] = {
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
window_main_empty,
static rct_window_event_list window_main_events = {
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_main_paint,
window_main_empty
NULL
};
/**
@ -75,7 +74,7 @@ void window_main_open()
window = window_create(
0, 0,
window_main_widgets[0].right, window_main_widgets[0].bottom,
(uint32*)window_main_events,
&window_main_events,
WC_MAIN_WINDOW,
WF_STICK_TO_BACK
);
@ -97,12 +96,7 @@ void window_main_open()
* This function immediately jumps to 0x00685BE1 this is the second function
* decompiled.
*/
void window_main_paint()
void window_main_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window* w;
rct_drawpixelinfo* dpi;
window_paint_get_registers(w, dpi);
viewport_render(dpi, w->viewport, dpi->x, dpi->y, dpi->x + dpi->width, dpi->y + dpi->height);
}

View File

@ -96,50 +96,49 @@ const rct_xy16 MiniMapOffsets[] = {
{ 0 - 8, 256 }
};
static void window_map_emptysub() { }
static void window_map_close();
static void window_map_resize();
static void window_map_mouseup();
static void window_map_close(rct_window *w);
static void window_map_resize(rct_window *w);
static void window_map_mouseup(rct_window *w, int widgetIndex);
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_toolupdate();
static void window_map_tooldown();
static void window_map_tooldrag();
static void window_map_toolabort();
static void window_map_scrollgetsize();
static void window_map_scrollmousedown();
static void window_map_textinput();
static void window_map_tooltip();
static void window_map_invalidate();
static void window_map_paint();
static void window_map_scrollpaint();
static void window_map_toolupdate(rct_window* w, int widgetIndex, int x, int y);
static void window_map_tooldown(rct_window* w, int widgetIndex, int x, int y);
static void window_map_tooldrag(rct_window* w, int widgetIndex, int x, int y);
static void window_map_toolabort(rct_window *w, int widgetIndex);
static void window_map_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height);
static void window_map_scrollmousedown(rct_window *w, int scrollIndex, int x, int y);
static void window_map_textinput(rct_window *w, int widgetIndex, char *text);
static void window_map_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId);
static void window_map_invalidate(rct_window *w);
static void window_map_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_map_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex);
static void* window_map_events[] = {
static rct_window_event_list window_map_events = {
window_map_close,
window_map_mouseup,
window_map_resize,
window_map_mousedown,
window_map_emptysub,
window_map_emptysub,
NULL,
NULL,
window_map_update,
window_map_emptysub,
window_map_emptysub,
NULL,
NULL,
window_map_toolupdate,
window_map_tooldown,
window_map_tooldrag,
window_map_emptysub,
NULL,
window_map_toolabort,
window_map_emptysub,
NULL,
window_map_scrollgetsize,
window_map_scrollmousedown,
window_map_scrollmousedown,
window_map_emptysub,
NULL,
window_map_textinput,
window_map_emptysub,
window_map_emptysub,
NULL,
NULL,
window_map_tooltip,
window_map_emptysub,
window_map_emptysub,
NULL,
NULL,
window_map_invalidate,
window_map_paint,
window_map_scrollpaint
@ -190,7 +189,7 @@ void window_map_open()
return;
RCT2_GLOBAL(RCT2_ADDRESS_MAP_IMAGE_DATA, uint32*) = map_image_data;
w = window_create_auto_pos(245, 259, (uint32*)window_map_events, WC_MAP, WF_10);
w = window_create_auto_pos(245, 259, &window_map_events, WC_MAP, WF_10);
w->widgets = window_map_widgets;
w->enabled_widgets =
(1 << WIDX_CLOSE) |
@ -228,12 +227,8 @@ void window_map_open()
*
* rct2: 0x0068D0F1
*/
static void window_map_close()
static void window_map_close(rct_window *w)
{
rct_window *w;
window_get_register(w);
free(RCT2_GLOBAL(RCT2_ADDRESS_MAP_IMAGE_DATA, uint32*));
if ((RCT2_GLOBAL(RCT2_ADDRESS_INPUT_FLAGS, uint32) & INPUT_FLAG_TOOL_ACTIVE) &&
RCT2_GLOBAL(RCT2_ADDRESS_TOOL_WINDOWCLASS, uint8) == w->classification &&
@ -249,16 +244,11 @@ static void window_map_close()
*
* rct2: 0x0068CFC1
*/
static void window_map_mouseup()
static void window_map_mouseup(rct_window *w, int widgetIndex)
{
rct_window *w;
short widgetIndex;
// Maximum land ownership tool size
int landToolSizeLimit;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -374,12 +364,8 @@ static void window_map_mouseup()
*
* rct2: 0x0068D7DC
*/
static void window_map_resize()
static void window_map_resize(rct_window *w)
{
rct_window *w;
window_get_register(w);
w->flags |= WF_RESIZABLE;
w->min_width = 245;
w->max_width = 800;
@ -445,14 +431,8 @@ static void window_map_update(rct_window *w)
*
* rct2: 0x0068D093
*/
static void window_map_toolupdate()
static void window_map_toolupdate(rct_window* w, int widgetIndex, int x, int y)
{
rct_window *w;
short widgetIndex;
short x, y;
window_tool_get_registers(w, widgetIndex, x, y);
switch (widgetIndex) {
case WIDX_SET_LAND_RIGHTS:
window_map_set_land_rights_tool_update(x, y);
@ -470,14 +450,8 @@ static void window_map_toolupdate()
*
* rct2: 0x0068D074
*/
static void window_map_tooldown()
static void window_map_tooldown(rct_window* w, int widgetIndex, int x, int y)
{
rct_window *w;
short widgetIndex;
short x, y;
window_tool_get_registers(w, widgetIndex, x, y);
switch (widgetIndex) {
case WIDX_BUILD_PARK_ENTRANCE:
window_map_place_park_entrance_tool_down(x, y);
@ -492,14 +466,8 @@ static void window_map_tooldown()
*
* rct2: 0x0068D088
*/
static void window_map_tooldrag()
static void window_map_tooldrag(rct_window* w, int widgetIndex, int x, int y)
{
rct_window *w;
short widgetIndex;
short x, y;
window_tool_get_registers(w, widgetIndex, x, y);
switch (widgetIndex) {
case WIDX_SET_LAND_RIGHTS:
if (RCT2_GLOBAL(RCT2_ADDRESS_MAP_SELECTION_FLAGS, uint16) & (1 << 0)) {
@ -522,14 +490,8 @@ static void window_map_tooldrag()
*
* rct2: 0x0068D055
*/
static void window_map_toolabort()
static void window_map_toolabort(rct_window *w, int widgetIndex)
{
rct_window *w;
short widgetIndex;
short x, y;
window_tool_get_registers(w, widgetIndex, x, y);
switch (widgetIndex) {
case WIDX_SET_LAND_RIGHTS:
window_invalidate(w);
@ -557,28 +519,22 @@ static void window_map_toolabort()
*
* rct2: 0x0068D7CC
*/
static void window_map_scrollgetsize()
static void window_map_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height)
{
int width, height;
window_map_invalidate(w);
window_map_invalidate();
width = 512;
height = 512;
window_scrollsize_set_registers(width, height);
*width = 512;
*height = 512;
}
/**
*
* rct2: 0x0068D726
*/
static void window_map_scrollmousedown()
static void window_map_scrollmousedown(rct_window *w, int scrollIndex, int x, int y)
{
int mapX, mapY, mapZ;
short x, y, scrollIndex;
rct_window *w, *mainWindow;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
rct_window *mainWindow;
map_window_screen_to_map(x, y, &mapX, &mapY);
mapX = clamp(0, mapX, 8191);
@ -647,46 +603,41 @@ static void window_map_scrollmousedown()
}
}
static void window_map_textinput()
static void window_map_textinput(rct_window *w, int widgetIndex, char *text)
{
uint8 result;
short widgetIndex;
rct_window *w;
char *text;
int size;
char* end;
window_textinput_get_registers(w, widgetIndex, result, text);
if (text == NULL)
return;
if (result) {
switch (widgetIndex) {
case WIDX_LAND_TOOL:
size = strtol(text, &end, 10);
if (*end == '\0') {
if (size < 1) size = 1;
if (size > 64) size = 64;
RCT2_GLOBAL(RCT2_ADDRESS_LAND_TOOL_SIZE, sint16) = size;
window_invalidate(w);
}
break;
case WIDX_MAP_SIZE_SPINNER:
size = strtol(text, &end, 10);
if (*end == '\0') {
if (size < 50) size = 50;
if (size > 256) size = 256;
int currentSize = RCT2_GLOBAL(RCT2_ADDRESS_MAP_SIZE, uint16);
while (size < currentSize) {
map_window_decrease_map_size();
currentSize--;
}
while (size > currentSize) {
map_window_increase_map_size();
currentSize++;
}
window_invalidate(w);
}
break;
switch (widgetIndex) {
case WIDX_LAND_TOOL:
size = strtol(text, &end, 10);
if (*end == '\0') {
if (size < 1) size = 1;
if (size > 64) size = 64;
RCT2_GLOBAL(RCT2_ADDRESS_LAND_TOOL_SIZE, sint16) = size;
window_invalidate(w);
}
break;
case WIDX_MAP_SIZE_SPINNER:
size = strtol(text, &end, 10);
if (*end == '\0') {
if (size < 50) size = 50;
if (size > 256) size = 256;
int currentSize = RCT2_GLOBAL(RCT2_ADDRESS_MAP_SIZE, uint16);
while (size < currentSize) {
map_window_decrease_map_size();
currentSize--;
}
while (size > currentSize) {
map_window_increase_map_size();
currentSize++;
}
window_invalidate(w);
}
break;
}
}
@ -694,7 +645,7 @@ static void window_map_textinput()
*
* rct2: 0x0068D140
*/
static void window_map_tooltip()
static void window_map_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId)
{
RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, short) = 3157;
}
@ -703,13 +654,11 @@ static void window_map_tooltip()
*
* rct2: 0x0068CA8F
*/
static void window_map_invalidate()
static void window_map_invalidate(rct_window *w)
{
rct_window *w;
uint64 pressedWidgets;
int i, height;
window_get_register(w);
colour_scheme_update(w);
// Set the pressed widgets
@ -837,14 +786,10 @@ static void window_map_invalidate()
*
* rct2: 0x0068CDA9
*/
static void window_map_paint()
static void window_map_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
int i, x, y;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
window_map_draw_tab_images(w, dpi);
@ -893,14 +838,10 @@ static void window_map_paint()
*
* rct2: 0x0068CF23
*/
static void window_map_scrollpaint()
static void window_map_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
{
rct_window *w;
rct_drawpixelinfo *dpi;
rct_g1_element *g1_element, pushed_g1_element;
window_paint_get_registers(w, dpi);
gfx_clear(dpi, 0x0A0A0A0A);
g1_element = &g1Elements[0];

View File

@ -29,39 +29,38 @@ static rct_widget window_map_tooltip_widgets[] = {
{ WIDGETS_END }
};
static void window_map_tooltip_emptysub() { }
static void window_map_tooltip_update(rct_window *w);
static void window_map_tooltip_paint();
static void window_map_tooltip_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void* window_map_tooltip_events[] = {
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
static rct_window_event_list window_map_tooltip_events = {
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_map_tooltip_update,
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
window_map_tooltip_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_map_tooltip_paint,
window_map_tooltip_emptysub
NULL
};
#define MAP_TOOLTIP_ARGS
@ -122,7 +121,7 @@ static void window_map_tooltip_open()
w = window_find_by_class(WC_MAP_TOOLTIP);
if (w == NULL) {
w = window_create(
x, y, width, height, (uint32*)window_map_tooltip_events, WC_MAP_TOOLTIP, WF_STICK_TO_FRONT | WF_TRANSPARENT | WF_5
x, y, width, height, &window_map_tooltip_events, WC_MAP_TOOLTIP, WF_STICK_TO_FRONT | WF_TRANSPARENT | WF_5
);
w->widgets = window_map_tooltip_widgets;
} else {
@ -147,13 +146,8 @@ static void window_map_tooltip_update(rct_window *w)
*
* rct2: 0x006EE894
*/
static void window_map_tooltip_paint()
static void window_map_tooltip_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
if (RCT2_GLOBAL(RCT2_ADDRESS_MAP_TOOLTIP_ARGS, rct_string_id) == (rct_string_id)STR_NONE)
return;

View File

@ -186,124 +186,124 @@ static rct_widget *window_mapgen_page_widgets[] = {
#pragma region Events
static void window_mapgen_emptysub() { }
static void window_mapgen_base_mouseup();
static void window_mapgen_base_mouseup(rct_window *w, int widgetIndex);
static void window_mapgen_base_mousedown(int widgetIndex, rct_window *w, rct_widget* widget);
static void window_mapgen_base_dropdown();
static void window_mapgen_base_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_mapgen_base_update(rct_window *w);
static void window_mapgen_textinput();
static void window_mapgen_base_invalidate();
static void window_mapgen_base_paint();
static void window_mapgen_random_mouseup();
static void window_mapgen_textinput(rct_window *w, int widgetIndex, char *text);
static void window_mapgen_base_invalidate(rct_window *w);
static void window_mapgen_base_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_mapgen_random_mouseup(rct_window *w, int widgetIndex);
static void window_mapgen_random_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_mapgen_random_update(rct_window *w);
static void window_mapgen_random_invalidate();
static void window_mapgen_random_paint();
static void window_mapgen_simplex_mouseup();
static void window_mapgen_simplex_mousedown(int widgetIndex, rct_window *w, rct_widget* widget);
static void window_mapgen_simplex_dropdown();
static void window_mapgen_simplex_update(rct_window *w);
static void window_mapgen_simplex_invalidate();
static void window_mapgen_simplex_paint();
static void window_mapgen_random_invalidate(rct_window *w);
static void window_mapgen_random_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void* window_mapgen_base_events[] = {
window_mapgen_emptysub,
static void window_mapgen_simplex_mouseup(rct_window *w, int widgetIndex);
static void window_mapgen_simplex_mousedown(int widgetIndex, rct_window *w, rct_widget* widget);
static void window_mapgen_simplex_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_mapgen_simplex_update(rct_window *w);
static void window_mapgen_simplex_invalidate(rct_window *w);
static void window_mapgen_simplex_paint(rct_window *w, rct_drawpixelinfo *dpi);
static rct_window_event_list window_mapgen_base_events = {
NULL,
window_mapgen_base_mouseup,
window_mapgen_emptysub,
NULL,
window_mapgen_base_mousedown,
window_mapgen_base_dropdown,
window_mapgen_emptysub,
NULL,
window_mapgen_base_update,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_mapgen_textinput,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
window_mapgen_base_invalidate,
window_mapgen_base_paint,
window_mapgen_emptysub
NULL
};
static void* window_mapgen_random_events[] = {
window_mapgen_emptysub,
static rct_window_event_list window_mapgen_random_events = {
NULL,
window_mapgen_random_mouseup,
window_mapgen_emptysub,
NULL,
window_mapgen_random_mousedown,
window_mapgen_emptysub,
window_mapgen_emptysub,
NULL,
NULL,
window_mapgen_random_update,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_mapgen_random_invalidate,
window_mapgen_random_paint,
window_mapgen_emptysub
NULL
};
static void* window_mapgen_simplex_events[] = {
window_mapgen_emptysub,
static rct_window_event_list window_mapgen_simplex_events = {
NULL,
window_mapgen_simplex_mouseup,
window_mapgen_emptysub,
NULL,
window_mapgen_simplex_mousedown,
window_mapgen_simplex_dropdown,
window_mapgen_emptysub,
NULL,
window_mapgen_simplex_update,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
window_mapgen_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_mapgen_simplex_invalidate,
window_mapgen_simplex_paint,
window_mapgen_emptysub
NULL
};
static void* window_mapgen_page_events[] = {
window_mapgen_base_events,
window_mapgen_random_events,
window_mapgen_simplex_events
static rct_window_event_list *window_mapgen_page_events[] = {
&window_mapgen_base_events,
&window_mapgen_random_events,
&window_mapgen_simplex_events
};
#pragma endregion
@ -461,14 +461,10 @@ rct_window *window_mapgen_open()
#pragma region Base page
static void window_mapgen_base_mouseup()
static void window_mapgen_base_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
mapgen_settings mapgenSettings;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -572,13 +568,9 @@ static void window_mapgen_base_mousedown(int widgetIndex, rct_window *w, rct_wid
}
}
static void window_mapgen_base_dropdown()
static void window_mapgen_base_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
int type;
short dropdownIndex, widgetIndex;
rct_window *w;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
switch (widgetIndex) {
case WIDX_FLOOR_TEXTURE:
@ -624,20 +616,13 @@ static void window_mapgen_base_update(rct_window *w)
widget_invalidate(w, WIDX_TAB_1);
}
static void window_mapgen_textinput()
static void window_mapgen_textinput(rct_window *w, int widgetIndex, char *text)
{
uint8 result;
short widgetIndex;
rct_window *w;
char *text;
int value;
char* end;
window_textinput_get_registers(w, widgetIndex, result, text);
if (!result) {
if (text == NULL)
return;
}
value = strtol(text, &end, 10);
@ -661,11 +646,8 @@ static void window_mapgen_textinput()
}
static void window_mapgen_base_invalidate()
static void window_mapgen_base_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
if (w->widgets != window_mapgen_page_widgets[WINDOW_MAPGEN_PAGE_BASE]) {
@ -680,13 +662,9 @@ static void window_mapgen_base_invalidate()
window_mapgen_anchor_border_widgets(w);
}
static void window_mapgen_base_paint()
static void window_mapgen_base_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
uint16 arg;
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
window_mapgen_draw_tab_images(dpi, w);
@ -710,14 +688,10 @@ static void window_mapgen_base_paint()
#pragma region Random page
static void window_mapgen_random_mouseup()
static void window_mapgen_random_mouseup(rct_window *w, int widgetIndex)
{
rct_window * w;
short widgetIndex;
mapgen_settings mapgenSettings;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -765,11 +739,8 @@ static void window_mapgen_random_update(rct_window *w)
widget_invalidate(w, WIDX_TAB_2);
}
static void window_mapgen_random_invalidate()
static void window_mapgen_random_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
if (w->widgets != window_mapgen_page_widgets[WINDOW_MAPGEN_PAGE_RANDOM]) {
@ -787,13 +758,8 @@ static void window_mapgen_random_invalidate()
window_mapgen_anchor_border_widgets(w);
}
static void window_mapgen_random_paint()
static void window_mapgen_random_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
window_mapgen_draw_tab_images(dpi, w);
}
@ -802,14 +768,10 @@ static void window_mapgen_random_paint()
#pragma region Simplex page
static void window_mapgen_simplex_mouseup()
static void window_mapgen_simplex_mouseup(rct_window *w, int widgetIndex)
{
rct_window * w;
short widgetIndex;
mapgen_settings mapgenSettings;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -929,13 +891,9 @@ static void window_mapgen_simplex_mousedown(int widgetIndex, rct_window *w, rct_
}
}
static void window_mapgen_simplex_dropdown()
static void window_mapgen_simplex_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
int type;
short dropdownIndex, widgetIndex;
rct_window *w;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
switch (widgetIndex) {
case WIDX_SIMPLEX_FLOOR_TEXTURE:
@ -983,11 +941,8 @@ static void window_mapgen_simplex_update(rct_window *w)
widget_invalidate(w, WIDX_TAB_3);
}
static void window_mapgen_simplex_invalidate()
static void window_mapgen_simplex_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
if (w->widgets != window_mapgen_page_widgets[WINDOW_MAPGEN_PAGE_SIMPLEX]) {
@ -1002,13 +957,9 @@ static void window_mapgen_simplex_invalidate()
window_mapgen_anchor_border_widgets(w);
}
static void window_mapgen_simplex_paint()
static void window_mapgen_simplex_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
uint16 arg;
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
window_mapgen_draw_tab_images(dpi, w);

View File

@ -89,42 +89,46 @@ static rct_widget window_maze_construction_widgets[] = {
#pragma region Events
static void window_maze_construction_emptysub() {}
static void window_maze_construction_close();
static void window_maze_construction_invalidate();
static void window_maze_construction_paint();
static void window_maze_construction_close(rct_window *w);
static void window_maze_construction_mouseup(rct_window *w, int widgetIndex);
static void window_maze_construction_resize(rct_window *w);
static void window_maze_construction_mousedown(int widgetIndex, rct_window *w, rct_widget *widget);
static void window_maze_construction_update(rct_window *w);
static void window_ride_construction_toolupdate(rct_window* w, int widgetIndex, int x, int y);
static void window_ride_construction_tooldown(rct_window* w, int widgetIndex, int x, int y);
static void window_maze_construction_invalidate(rct_window *w);
static void window_maze_construction_paint(rct_window *w, rct_drawpixelinfo *dpi);
// 0x993F6C
static void* window_maze_construction_events[] = {
static rct_window_event_list window_maze_construction_events = {
window_maze_construction_close,
(void*)0x006CD461,
(void*)0x006CD623,
(void*)0x006CD48C,
window_maze_construction_emptysub,
window_maze_construction_emptysub,
(void*)0x006CD767,
window_maze_construction_emptysub,
window_maze_construction_emptysub,
(void*)0x006CD63E,
(void*)0x006CD65D,
window_maze_construction_emptysub,
window_maze_construction_emptysub,
window_maze_construction_emptysub,
window_maze_construction_emptysub,
window_maze_construction_emptysub,
window_maze_construction_emptysub,
window_maze_construction_emptysub,
window_maze_construction_emptysub,
window_maze_construction_emptysub,
window_maze_construction_emptysub,
window_maze_construction_emptysub,
window_maze_construction_emptysub,
window_maze_construction_emptysub,
window_maze_construction_emptysub,
window_maze_construction_mouseup,
window_maze_construction_resize,
window_maze_construction_mousedown,
NULL,
NULL,
window_maze_construction_update,
NULL,
NULL,
window_ride_construction_toolupdate,
window_ride_construction_tooldown,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_maze_construction_invalidate,
window_maze_construction_paint,
window_maze_construction_emptysub
NULL
};
#pragma endregion
@ -135,7 +139,7 @@ static void* window_maze_construction_events[] = {
*/
rct_window *window_maze_construction_open()
{
rct_window *w = window_create(0, 29, 166, 200, (uint32*)window_maze_construction_events, WC_RIDE_CONSTRUCTION, WF_9);
rct_window *w = window_create(0, 29, 166, 200, &window_maze_construction_events, WC_RIDE_CONSTRUCTION, WF_9);
w->widgets = window_maze_construction_widgets;
w->enabled_widgets = 0x6F0001C4;
@ -153,12 +157,8 @@ rct_window *window_maze_construction_open()
*
* rct2: 0x006CD811
*/
static void window_maze_construction_close()
static void window_maze_construction_close(rct_window *w)
{
rct_window *w;
window_get_register(w);
sub_6C9627();
viewport_set_visibility(0);
@ -183,11 +183,65 @@ static void window_maze_construction_close()
}
}
/**
*
* rct2: 0x006CD461
*/
static void window_maze_construction_mouseup(rct_window *w, int widgetIndex)
{
RCT2_CALLPROC_X(0x006CD461, 0, 0, 0, widgetIndex, (int)w, 0, 0);
}
/**
*
* rct2: 0x006CD623
*/
static void window_maze_construction_resize(rct_window *w)
{
RCT2_CALLPROC_X(0x006CD623, 0, 0, 0, 0, (int)w, 0, 0);
}
/**
*
* rct2: 0x006CD48C
*/
static void window_maze_construction_mousedown(int widgetIndex, rct_window *w, rct_widget *widget)
{
RCT2_CALLPROC_X(0x006CD48C, 0, 0, 0, widgetIndex, (int)w, (int)widget, 0);
}
/**
*
* rct2: 0x006CD767
*/
static void window_maze_construction_update(rct_window *w)
{
RCT2_CALLPROC_X(0x006CD767, 0, 0, 0, 0, (int)w, 0, 0);
}
/**
*
* rct2: 0x006CD63E
*/
static void window_ride_construction_toolupdate(rct_window* w, int widgetIndex, int x, int y)
{
RCT2_CALLPROC_X(0x006CD63E, x, y, 0, widgetIndex, (int)w, 0, 0);
}
/**
*
* rct2: 0x006CD65D
*/
static void window_ride_construction_tooldown(rct_window* w, int widgetIndex, int x, int y)
{
RCT2_CALLPROC_X(0x006CD65D, x, y, 0, widgetIndex, (int)w, 0, 0);
}
/**
*
* rct2: 0x006CD435
*/
static void window_maze_construction_invalidate()
static void window_maze_construction_invalidate(rct_window *w)
{
rct_ride *ride = GET_RIDE(_currentRideIndex);
@ -200,13 +254,8 @@ static void window_maze_construction_invalidate()
*
* rct2: 0x006CD45B
*/
static void window_maze_construction_paint()
static void window_maze_construction_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
}

View File

@ -38,39 +38,38 @@ rct_widget window_music_credits_widgets[] = {
{ WIDGETS_END },
};
static void window_music_credits_emptysub() { }
static void window_music_credits_mouseup();
static void window_music_credits_scrollgetsize();
static void window_music_credits_paint();
static void window_music_credits_scrollpaint();
static void window_music_credits_mouseup(rct_window *w, int widgetIndex);
static void window_music_credits_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height);
static void window_music_credits_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_music_credits_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex);
static void* window_music_credits_events[] = {
window_music_credits_emptysub,
static rct_window_event_list window_music_credits_events = {
NULL,
window_music_credits_mouseup,
window_music_credits_emptysub,
window_music_credits_emptysub,
window_music_credits_emptysub,
window_music_credits_emptysub,
window_music_credits_emptysub,
window_music_credits_emptysub,
window_music_credits_emptysub,
window_music_credits_emptysub,
window_music_credits_emptysub,
window_music_credits_emptysub,
window_music_credits_emptysub,
window_music_credits_emptysub,
window_music_credits_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_music_credits_scrollgetsize,
window_music_credits_emptysub,
window_music_credits_emptysub,
window_music_credits_emptysub,
window_music_credits_emptysub,
window_music_credits_emptysub,
window_music_credits_emptysub,
window_music_credits_emptysub,
window_music_credits_emptysub,
window_music_credits_emptysub,
window_music_credits_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_music_credits_paint,
window_music_credits_scrollpaint
};
@ -91,7 +90,7 @@ void window_music_credits_open()
window = window_create_centred(
510,
314,
(uint32*)window_music_credits_events,
&window_music_credits_events,
WC_MUSIC_CREDITS,
0
);
@ -110,13 +109,8 @@ void window_music_credits_open()
*
* rct2: 0x0066DB2C
*/
static void window_music_credits_mouseup()
static void window_music_credits_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -128,26 +122,17 @@ static void window_music_credits_mouseup()
*
* rct2: 0x0066DB37
*/
static void window_music_credits_scrollgetsize()
static void window_music_credits_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height)
{
int width, height;
width = 0;
height = 560;
window_scrollsize_set_registers(width, height);
*height = 560;
}
/**
*
* rct2: 0x0066D7B9
*/
static void window_music_credits_paint()
static void window_music_credits_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
}
@ -155,12 +140,8 @@ static void window_music_credits_paint()
*
* rct2: 0x0066D7BF
*/
static void window_music_credits_scrollpaint()
static void window_music_credits_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
int x = 245;
int y = 2;

View File

@ -61,42 +61,41 @@ static rct_widget window_new_campaign_widgets[] = {
};
static void window_new_campaign_emptysub() { }
static void window_new_campaign_mouseup();
static void window_new_campaign_mouseup(rct_window *w, int widgetIndex);
static void window_new_campaign_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_new_campaign_dropdown();
static void window_new_campaign_invalidate();
static void window_new_campaign_paint();
static void window_new_campaign_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_new_campaign_invalidate(rct_window *w);
static void window_new_campaign_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void* window_new_campaign_events[] = {
window_new_campaign_emptysub,
static rct_window_event_list window_new_campaign_events = {
NULL,
window_new_campaign_mouseup,
window_new_campaign_emptysub,
NULL,
window_new_campaign_mousedown,
window_new_campaign_dropdown,
window_new_campaign_emptysub,
window_new_campaign_emptysub,
window_new_campaign_emptysub,
window_new_campaign_emptysub,
window_new_campaign_emptysub,
window_new_campaign_emptysub,
window_new_campaign_emptysub,
window_new_campaign_emptysub,
window_new_campaign_emptysub,
window_new_campaign_emptysub,
window_new_campaign_emptysub,
window_new_campaign_emptysub,
window_new_campaign_emptysub,
window_new_campaign_emptysub,
window_new_campaign_emptysub,
window_new_campaign_emptysub,
window_new_campaign_emptysub,
window_new_campaign_emptysub,
window_new_campaign_emptysub,
window_new_campaign_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_new_campaign_invalidate,
window_new_campaign_paint,
window_new_campaign_emptysub
NULL
};
uint8 window_new_campaign_rides[MAX_RIDES];
@ -143,7 +142,7 @@ void window_new_campaign_open(sint16 campaignType)
window_close(w);
}
w = window_create_auto_pos(350, 107, (uint32*)window_new_campaign_events, WC_NEW_CAMPAIGN, 0);
w = window_create_auto_pos(350, 107, &window_new_campaign_events, WC_NEW_CAMPAIGN, 0);
w->widgets = window_new_campaign_widgets;
w->enabled_widgets =
(1 << WIDX_CLOSE) |
@ -220,13 +219,8 @@ static void window_new_campaign_get_shop_items()
*
* rct2: 0x0069E50B
*/
static void window_new_campaign_mouseup()
static void window_new_campaign_mouseup(rct_window *w, int widgetIndex)
{
rct_window *w;
short widgetIndex;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -315,13 +309,8 @@ static void window_new_campaign_mousedown(int widgetIndex, rct_window *w, rct_wi
*
* rct2: 0x0069E537
*/
static void window_new_campaign_dropdown()
static void window_new_campaign_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
rct_window *w;
short widgetIndex, dropdownIndex;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
if (widgetIndex != WIDX_RIDE_DROPDOWN_BUTTON)
return;
@ -341,11 +330,8 @@ static void window_new_campaign_dropdown()
*
* rct2: 0x0069E397
*/
static void window_new_campaign_invalidate()
static void window_new_campaign_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
window_new_campaign_widgets[WIDX_RIDE_LABEL].type = WWT_EMPTY;
@ -392,14 +378,10 @@ static void window_new_campaign_invalidate()
*
* rct2: 0x0069E493
*/
static void window_new_campaign_paint()
static void window_new_campaign_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
int x, y;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
x = w->x + 14;

View File

@ -197,46 +197,44 @@ static rct_widget window_new_ride_widgets[] = {
#pragma region Events
static void window_new_ride_emptysub() { }
static void window_new_ride_mouseup();
static void window_new_ride_mouseup(rct_window *w, int widgetIndex);
static void window_new_ride_mousedown(int widgetIndex, rct_window *w, rct_widget *widget);
static void window_new_ride_update(rct_window *w);
static void window_new_ride_scrollgetsize();
static void window_new_ride_scrollmousedown();
static void window_new_ride_scrollmouseover();
static void window_new_ride_tooltip();
static void window_new_ride_invalidate();
static void window_new_ride_paint();
static void window_new_ride_scrollpaint();
static void window_new_ride_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height);
static void window_new_ride_scrollmousedown(rct_window *w, int scrollIndex, int x, int y);
static void window_new_ride_scrollmouseover(rct_window *w, int scrollIndex, int x, int y);
static void window_new_ride_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId);
static void window_new_ride_invalidate(rct_window *w);
static void window_new_ride_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_new_ride_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex);
// 0x0098E354
static void* window_new_ride_events[] = {
window_new_ride_emptysub,
static rct_window_event_list window_new_ride_events = {
NULL,
window_new_ride_mouseup,
window_new_ride_emptysub,
NULL,
window_new_ride_mousedown,
window_new_ride_emptysub,
window_new_ride_emptysub,
NULL,
NULL,
window_new_ride_update,
window_new_ride_emptysub,
window_new_ride_emptysub,
window_new_ride_emptysub,
window_new_ride_emptysub,
window_new_ride_emptysub,
window_new_ride_emptysub,
window_new_ride_emptysub,
window_new_ride_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_new_ride_scrollgetsize,
window_new_ride_scrollmousedown,
window_new_ride_emptysub,
NULL,
window_new_ride_scrollmouseover,
window_new_ride_emptysub,
window_new_ride_emptysub,
window_new_ride_emptysub,
NULL,
NULL,
NULL,
window_new_ride_tooltip,
window_new_ride_emptysub,
window_new_ride_emptysub,
NULL,
NULL,
window_new_ride_invalidate,
window_new_ride_paint,
window_new_ride_scrollpaint
@ -381,7 +379,8 @@ static void window_new_ride_populate_list()
*/
static void window_new_ride_scroll_to_focused_ride(rct_window *w)
{
int scrollWidth, scrollHeight;
int scrollWidth = 0;
int scrollHeight = 0;
window_get_scroll_size(w, 0, &scrollWidth, &scrollHeight);
// Find row index of the focused ride type
@ -422,7 +421,7 @@ rct_window *window_new_ride_open()
window_close_by_class(WC_TRACK_DESIGN_LIST);
window_close_by_class(WC_TRACK_DESIGN_PLACE);
w = window_create_auto_pos(601, 370, (uint32*)window_new_ride_events, WC_CONSTRUCT_RIDE, WF_10);
w = window_create_auto_pos(601, 370, &window_new_ride_events, WC_CONSTRUCT_RIDE, WF_10);
w->widgets = window_new_ride_widgets;
w->enabled_widgets =
(1 << WIDX_CLOSE) |
@ -612,13 +611,8 @@ static void window_new_ride_draw_tab_images(rct_drawpixelinfo *dpi, rct_window *
*
* rct2: 0x006B6B38
*/
static void window_new_ride_mouseup()
static void window_new_ride_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -662,34 +656,26 @@ static void window_new_ride_update(rct_window *w)
*
* rct2: 0x006B6BC9
*/
static void window_new_ride_scrollgetsize()
static void window_new_ride_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height)
{
ride_list_item *listItem = (ride_list_item*)0x00F43523;
int width, height;
int count = 0;
while (listItem->type != 255 || listItem->entry_index != 255) {
count++;
listItem++;
}
width = 0;
height = ((count + 4) / 5) * 116;
window_scrollsize_set_registers(width, height);
*height = ((count + 4) / 5) * 116;
}
/**
*
* rct2: 0x006B6C89
*/
static void window_new_ride_scrollmousedown()
static void window_new_ride_scrollmousedown(rct_window *w, int scrollIndex, int x, int y)
{
short x, y, scrollIndex;
rct_window *w;
ride_list_item item;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
// Made it impossible to click a ride in pause mode. Since the UI now stays responsive in pause mode, always allow clicking a ride.
/*if (RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) != 0)
return;*/
@ -710,14 +696,10 @@ static void window_new_ride_scrollmousedown()
*
* rct2: 0x006B6C51
*/
static void window_new_ride_scrollmouseover()
static void window_new_ride_scrollmouseover(rct_window *w, int scrollIndex, int x, int y)
{
short x, y, scrollIndex;
rct_window *w;
ride_list_item item;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
if (w->new_ride.selected_ride_id != -1)
return;
@ -735,7 +717,7 @@ static void window_new_ride_scrollmouseover()
*
* rct2: 0x006B6BBF
*/
static void window_new_ride_tooltip()
static void window_new_ride_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId)
{
RCT2_GLOBAL(0x013CE952, uint16) = 3159;
}
@ -744,11 +726,8 @@ static void window_new_ride_tooltip()
*
* rct2: 0x006B6819
*/
static void window_new_ride_invalidate()
static void window_new_ride_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
window_new_ride_set_pressed_tab(w);
@ -772,13 +751,8 @@ static void window_new_ride_invalidate()
*
* rct2: 0x006B689B
*/
static void window_new_ride_paint()
static void window_new_ride_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
window_new_ride_draw_tab_images(dpi, w);
@ -795,14 +769,10 @@ static void window_new_ride_paint()
*
* rct2: 0x006B6ABF
*/
static void window_new_ride_scrollpaint()
static void window_new_ride_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
{
rct_window *w;
rct_drawpixelinfo *dpi;
rct_ride_type **rideEntries = (rct_ride_type**)0x009ACFA4;
window_paint_get_registers(w, dpi);
if (_window_new_ride_current_tab == WINDOW_NEW_RIDE_PAGE_RESEARCH)
return;

View File

@ -44,42 +44,41 @@ static rct_widget window_news_widgets[] = {
{ WIDGETS_END },
};
static void window_news_emptysub() { }
static void window_news_mouseup();
static void window_news_mouseup(rct_window *w, int widgetIndex);
static void window_news_update(rct_window *w);
static void window_news_scrollgetsize();
static void window_news_scrollmousedown();
static void window_news_tooltip();
static void window_news_invalidate();
static void window_news_paint();
static void window_news_scrollpaint();
static void window_news_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height);
static void window_news_scrollmousedown(rct_window *w, int scrollIndex, int x, int y);
static void window_news_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId);
static void window_news_invalidate(rct_window *w);
static void window_news_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_news_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex);
static void* window_news_events[] = {
window_news_emptysub,
static rct_window_event_list window_news_events = {
NULL,
window_news_mouseup,
window_news_emptysub,
window_news_emptysub,
window_news_emptysub,
window_news_emptysub,
NULL,
NULL,
NULL,
NULL,
window_news_update,
window_news_emptysub,
window_news_emptysub,
window_news_emptysub,
window_news_emptysub,
window_news_emptysub,
window_news_emptysub,
window_news_emptysub,
window_news_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_news_scrollgetsize,
window_news_scrollmousedown,
window_news_emptysub,
window_news_emptysub,
window_news_emptysub,
window_news_emptysub,
window_news_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
window_news_tooltip,
window_news_emptysub,
window_news_emptysub,
NULL,
NULL,
window_news_invalidate,
window_news_paint,
window_news_scrollpaint
@ -99,7 +98,7 @@ void window_news_open()
window = window_create_auto_pos(
400,
300,
(uint32*)window_news_events,
&window_news_events,
WC_RECENT_NEWS,
0
);
@ -110,9 +109,10 @@ void window_news_open()
}
// sub_66E4BA:
int width, height;
rct_widget *widget;
int width = 0;
int height = 0;
window_get_scroll_size(window, 0, &width, &height);
widget = &window_news_widgets[WIDX_SCROLL];
window->scrolls[0].v_top = max(0, height - (widget->bottom - widget->top - 1));
@ -124,15 +124,13 @@ void window_news_open()
*
* rct2: 0x0066D4D5
*/
static void window_news_mouseup()
static void window_news_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
if (widgetIndex == WIDX_CLOSE)
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
break;
}
}
/**
@ -182,36 +180,29 @@ static void window_news_update(rct_window *w)
*
* rct2: 0x0066EA3C
*/
static void window_news_scrollgetsize()
static void window_news_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height)
{
int i, width, height;
int i;
rct_news_item *newsItems = RCT2_ADDRESS(RCT2_ADDRESS_NEWS_ITEM_LIST, rct_news_item);
width = 0;
height = 0;
*height = 0;
for (i = 11; i < 61; i++) {
if (newsItems[i].type == NEWS_ITEM_NULL)
break;
height += 42;
*height += 42;
}
window_scrollsize_set_registers(width, height);
}
/**
*
* rct2: 0x0066EA5C
*/
static void window_news_scrollmousedown()
static void window_news_scrollmousedown(rct_window *w, int scrollIndex, int x, int y)
{
int i, buttonIndex;
short x, y, scrollIndex;
rct_window *w;
rct_news_item *newsItems;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
buttonIndex = 0;
newsItems = RCT2_ADDRESS(RCT2_ADDRESS_NEWS_ITEM_LIST, rct_news_item);
for (i = 11; i < 61; i++) {
@ -259,7 +250,7 @@ static void window_news_scrollmousedown()
*
* rct2: 0x0066EAAE
*/
static void window_news_tooltip()
static void window_news_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId)
{
RCT2_GLOBAL(0x013CE952, uint16) = 3159;
}
@ -268,21 +259,13 @@ static void window_news_tooltip()
*
* rct2: 0x0066E4E8
*/
static void window_news_paint()
static void window_news_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
}
static void window_news_invalidate()
static void window_news_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
}
@ -290,15 +273,11 @@ static void window_news_invalidate()
*
* rct2: 0x0066E4EE
*/
static void window_news_scrollpaint()
static void window_news_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
{
int i, x, y, yy, press;
rct_window *w;
rct_drawpixelinfo *dpi;
rct_news_item *newsItems, *newsItem, *newsItem2;
window_paint_get_registers(w, dpi);
y = 0;
newsItems = RCT2_ADDRESS(RCT2_ADDRESS_NEWS_ITEM_LIST, rct_news_item);
for (i = 11; i < 61; i++) {

View File

@ -265,46 +265,44 @@ static void window_options_update_height_markers();
#pragma region Events
static void window_options_emptysub() { }
static void window_options_mouseup();
static void window_options_mouseup(rct_window *w, int widgetIndex);
static void window_options_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_options_dropdown();
static void window_options_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_options_update(rct_window *w);
static void window_options_invalidate();
static void window_options_paint();
static void window_options_scrollgetsize();
static void window_options_text_input();
static void window_options_invalidate(rct_window *w);
static void window_options_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_options_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height);
static void window_options_text_input(rct_window *w, int widgetIndex, char *text);
static void* window_options_events[] = {
window_options_emptysub,
static rct_window_event_list window_options_events = {
NULL,
window_options_mouseup,
window_options_emptysub,
NULL,
window_options_mousedown,
window_options_dropdown,
window_options_emptysub,
NULL,
window_options_update,
window_options_emptysub,
window_options_emptysub,
window_options_emptysub,
window_options_emptysub,
window_options_emptysub,
window_options_emptysub,
window_options_emptysub,
window_options_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_options_scrollgetsize,
window_options_emptysub,
window_options_emptysub,
window_options_emptysub,
NULL,
NULL,
NULL,
window_options_text_input,
window_options_emptysub,
window_options_emptysub,
window_options_emptysub,
window_options_emptysub,
window_options_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
window_options_invalidate,
window_options_paint,
window_options_emptysub
NULL
};
#pragma endregion
@ -404,7 +402,7 @@ void window_options_open()
if (w != NULL)
return;
w = window_create_centred(WW, WH, (uint32*)window_options_events, WC_OPTIONS, WF_RESIZABLE);
w = window_create_centred(WW, WH, &window_options_events, WC_OPTIONS, WF_RESIZABLE);
w->widgets = window_options_display_widgets;
w->enabled_widgets = window_options_page_enabled_widgets[WINDOW_OPTIONS_PAGE_DISPLAY];
w->page = WINDOW_OPTIONS_PAGE_DISPLAY;
@ -420,13 +418,8 @@ void window_options_open()
*
* rct2: 0x006BAFCA
*/
static void window_options_mouseup()
static void window_options_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -861,14 +854,8 @@ static void window_options_mousedown(int widgetIndex, rct_window*w, rct_widget*
*
* rct2: 0x006BB076
*/
static void window_options_dropdown()
static void window_options_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
short dropdownIndex;
short widgetIndex;
rct_window *w;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
if (dropdownIndex == -1)
return;
@ -1039,13 +1026,11 @@ static void window_options_dropdown()
*
* rct2: 0x006BAD48
*/
static void window_options_invalidate()
static void window_options_invalidate(rct_window *w)
{
rct_window *w;
rct_widget* widget;
sint32 currentSoundDevice;
window_get_register(w);
colour_scheme_update(w);
if (window_options_page_widgets[w->page] != w->widgets) {
@ -1252,13 +1237,8 @@ static void window_options_update(rct_window *w)
*
* rct2: 0x006BAEB4
*/
static void window_options_paint()
static void window_options_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
window_options_draw_tab_images(dpi, w);
@ -1365,33 +1345,19 @@ static void window_options_update_height_markers()
gfx_invalidate_screen();
}
static void window_options_scrollgetsize()
static void window_options_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height)
{
rct_window *w;
short scrollIndex;
window_scroll_get_registers(w, scrollIndex);
if (w->page == WINDOW_OPTIONS_PAGE_AUDIO) {
int width = 1000;
int height = 0;
window_scrollsize_set_registers(width, height);
*width = 1000;
}
}
static void window_options_text_input(){
short widgetIndex;
rct_window *w;
char _cl;
char* text;
window_text_input_get_registers(w, widgetIndex, _cl, text);
if (_cl == 0)
{
static void window_options_text_input(rct_window *w, int widgetIndex, char *text)
{
if (text == NULL)
return;
}
if (widgetIndex == WIDX_CHANNEL_BUTTON){
if (widgetIndex == WIDX_CHANNEL_BUTTON) {
if (gConfigTwitch.channel != NULL)
free(gConfigTwitch.channel);
gConfigTwitch.channel = _strdup(text);

File diff suppressed because it is too large Load Diff

View File

@ -38,39 +38,38 @@ rct_widget window_publisher_credits_widgets[] = {
{ WIDGETS_END },
};
static void window_publisher_credits_emptysub() { }
static void window_publisher_credits_mouseup();
static void window_publisher_credits_scrollgetsize();
static void window_publisher_credits_paint();
static void window_publisher_credits_scrollpaint();
static void window_publisher_credits_mouseup(rct_window *w, int widgetIndex);
static void window_publisher_credits_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height);
static void window_publisher_credits_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_publisher_credits_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex);
static void* window_publisher_credits_events[] = {
window_publisher_credits_emptysub,
static rct_window_event_list window_publisher_credits_events = {
NULL,
window_publisher_credits_mouseup,
window_publisher_credits_emptysub,
window_publisher_credits_emptysub,
window_publisher_credits_emptysub,
window_publisher_credits_emptysub,
window_publisher_credits_emptysub,
window_publisher_credits_emptysub,
window_publisher_credits_emptysub,
window_publisher_credits_emptysub,
window_publisher_credits_emptysub,
window_publisher_credits_emptysub,
window_publisher_credits_emptysub,
window_publisher_credits_emptysub,
window_publisher_credits_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_publisher_credits_scrollgetsize,
window_publisher_credits_emptysub,
window_publisher_credits_emptysub,
window_publisher_credits_emptysub,
window_publisher_credits_emptysub,
window_publisher_credits_emptysub,
window_publisher_credits_emptysub,
window_publisher_credits_emptysub,
window_publisher_credits_emptysub,
window_publisher_credits_emptysub,
window_publisher_credits_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_publisher_credits_paint,
window_publisher_credits_scrollpaint
};
@ -91,7 +90,7 @@ void window_publisher_credits_open()
window = window_create_centred(
420,
384,
(uint32*)window_publisher_credits_events,
&window_publisher_credits_events,
WC_PUBLISHER_CREDITS,
0
);
@ -110,13 +109,8 @@ void window_publisher_credits_open()
*
* rct2: 0x0066D7A8
*/
static void window_publisher_credits_mouseup()
static void window_publisher_credits_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -128,26 +122,17 @@ static void window_publisher_credits_mouseup()
*
* rct2: 0x0066D7B3
*/
static void window_publisher_credits_scrollgetsize()
static void window_publisher_credits_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height)
{
int width, height;
width = 0;
height = 820;
window_scrollsize_set_registers(width, height);
*height = 820;
}
/**
*
* rct2: 0x0066D5CB
*/
static void window_publisher_credits_paint()
static void window_publisher_credits_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
}
@ -180,12 +165,8 @@ int credits_order[] = {
*
* rct2: 0x0066D5D1
*/
static void window_publisher_credits_scrollpaint()
static void window_publisher_credits_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
int x = 200;
int y = 2;

View File

@ -109,87 +109,85 @@ static rct_widget *window_research_page_widgets[] = {
#pragma region Events
static void window_research_emptysub() { }
static void window_research_development_mouseup();
static void window_research_development_mouseup(rct_window *w, int widgetIndex);
static void window_research_development_update(rct_window *w);
static void window_research_development_invalidate();
static void window_research_development_paint();
static void window_research_development_invalidate(rct_window *w);
static void window_research_development_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_research_funding_mouseup();
static void window_research_funding_mouseup(rct_window *w, int widgetIndex);
static void window_research_funding_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_research_funding_dropdown();
static void window_research_funding_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_research_funding_update(rct_window *w);
static void window_research_funding_invalidate();
static void window_research_funding_paint();
static void window_research_funding_invalidate(rct_window *w);
static void window_research_funding_paint(rct_window *w, rct_drawpixelinfo *dpi);
//
static void* window_research_development_events[] = {
window_research_emptysub,
static rct_window_event_list window_research_development_events = {
NULL,
window_research_development_mouseup,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
NULL,
NULL,
NULL,
NULL,
window_research_development_update,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_research_development_invalidate,
window_research_development_paint,
window_research_emptysub
NULL
};
// 0x009890E8
static void* window_research_funding_events[] = {
window_research_emptysub,
static rct_window_event_list window_research_funding_events = {
NULL,
window_research_funding_mouseup,
window_research_emptysub,
NULL,
window_research_funding_mousedown,
window_research_funding_dropdown,
window_research_emptysub,
NULL,
window_research_funding_update,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
window_research_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_research_funding_invalidate,
window_research_funding_paint,
window_research_emptysub
NULL
};
static void* window_research_page_events[] = {
window_research_development_events,
window_research_funding_events
static rct_window_event_list *window_research_page_events[] = {
&window_research_development_events,
&window_research_funding_events
};
#pragma endregion
@ -261,13 +259,8 @@ void window_research_open()
*
* rct2: 0x006B6B38
*/
static void window_research_development_mouseup()
static void window_research_development_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -298,11 +291,8 @@ static void window_research_development_update(rct_window *w)
*
* rct2: 0x006B6819
*/
static void window_research_development_invalidate()
static void window_research_development_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
if (w->widgets != window_research_page_widgets[WINDOW_RESEARCH_PAGE_DEVELOPMENT]) {
@ -324,13 +314,8 @@ static void window_research_development_invalidate()
*
* rct2: 0x006B689B
*/
static void window_research_development_paint()
static void window_research_development_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
window_research_draw_tab_images(dpi, w);
@ -425,14 +410,10 @@ void window_research_development_page_paint(rct_window *w, rct_drawpixelinfo *dp
*
* rct2: 0x0069DB3F
*/
static void window_research_funding_mouseup()
static void window_research_funding_mouseup(rct_window *w, int widgetIndex)
{
rct_window * w;
short widgetIndex;
int activeResearchTypes;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -491,14 +472,8 @@ static void window_research_funding_mousedown(int widgetIndex, rct_window *w, rc
*
* rct2: 0x0069DB6D
*/
static void window_research_funding_dropdown()
static void window_research_funding_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
rct_window *w;
short widgetIndex;
short dropdownIndex;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
if (widgetIndex != WIDX_RESEARCH_FUNDING_DROPDOWN_BUTTON || dropdownIndex == -1)
return;
@ -522,11 +497,8 @@ static void window_research_funding_update(rct_window *w)
*
* rct2: 0x0069DA64
*/
static void window_research_funding_invalidate()
static void window_research_funding_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
if (w->widgets != window_research_page_widgets[WINDOW_RESEARCH_PAGE_FUNDING]) {
@ -578,13 +550,8 @@ static void window_research_funding_invalidate()
*
* rct2: 0x0069DAF0
*/
static void window_research_funding_paint()
static void window_research_funding_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
window_research_draw_tab_images(dpi, w);

File diff suppressed because it is too large Load Diff

View File

@ -132,49 +132,47 @@ static rct_widget window_ride_construction_widgets[] = {
#pragma region Events
static void window_ride_construction_emptysub() {}
static void window_ride_construction_close();
static void window_ride_construction_mouseup();
static void window_ride_construction_resize();
static void window_ride_construction_close(rct_window *w);
static void window_ride_construction_mouseup(rct_window *w, int widgetIndex);
static void window_ride_construction_resize(rct_window *w);
static void window_ride_construction_mousedown(int widgetIndex, rct_window *w, rct_widget *widget);
static void window_ride_construction_dropdown();
static void window_ride_construction_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_ride_construction_update(rct_window *w);
static void window_ride_construction_toolupdate();
static void window_ride_construction_tooldown();
static void window_ride_construction_invalidate();
static void window_ride_construction_paint();
static void window_ride_construction_toolupdate(rct_window* w, int widgetIndex, int x, int y);
static void window_ride_construction_tooldown(rct_window* w, int widgetIndex, int x, int y);
static void window_ride_construction_invalidate(rct_window *w);
static void window_ride_construction_paint(rct_window *w, rct_drawpixelinfo *dpi);
//0x993EEC
static void* window_ride_construction_events[] = {
static rct_window_event_list window_ride_construction_events = {
window_ride_construction_close,
window_ride_construction_mouseup,
window_ride_construction_resize,
window_ride_construction_mousedown,
window_ride_construction_dropdown,
window_ride_construction_emptysub,
NULL,
window_ride_construction_update,
window_ride_construction_emptysub,
window_ride_construction_emptysub,
NULL,
NULL,
window_ride_construction_toolupdate,
window_ride_construction_tooldown,
window_ride_construction_emptysub,
window_ride_construction_emptysub,
window_ride_construction_emptysub,
window_ride_construction_emptysub,
window_ride_construction_emptysub,
window_ride_construction_emptysub,
window_ride_construction_emptysub,
window_ride_construction_emptysub,
window_ride_construction_emptysub,
window_ride_construction_emptysub,
window_ride_construction_emptysub,
window_ride_construction_emptysub,
window_ride_construction_emptysub,
window_ride_construction_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_ride_construction_invalidate,
window_ride_construction_paint,
window_ride_construction_emptysub
NULL
};
#pragma endregion
@ -507,7 +505,7 @@ rct_window *window_ride_construction_open()
if (ride->type == RIDE_TYPE_MAZE)
return window_maze_construction_open();
w = window_create(0, 29, 166, 394, (uint32*)window_ride_construction_events, WC_RIDE_CONSTRUCTION, WF_9);
w = window_create(0, 29, 166, 394, &window_ride_construction_events, WC_RIDE_CONSTRUCTION, WF_9);
w->widgets = window_ride_construction_widgets;
w->enabled_widgets = 0x67EFFFFFC4;
@ -560,13 +558,10 @@ rct_window *window_ride_construction_open()
*
* rct2: 0x006C845D
*/
static void window_ride_construction_close()
static void window_ride_construction_close(rct_window *w)
{
rct_window *w;
rct_xy_element mapElement;
window_get_register(w);
sub_6C9627();
viewport_set_visibility(0);
@ -596,13 +591,8 @@ static void window_ride_construction_close()
*
* rct2: 0x006C6E14
*/
static void window_ride_construction_mouseup()
static void window_ride_construction_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
window_ride_construction_update_enabled_track_pieces();
switch (widgetIndex){
case WIDX_CLOSE:
@ -636,12 +626,8 @@ static void window_ride_construction_mouseup()
*
* rct2: 0x006C7934
*/
static void window_ride_construction_resize()
static void window_ride_construction_resize(rct_window *w)
{
rct_window *w;
window_get_register(w);
window_ride_construction_update_enabled_track_pieces();
w->enabled_widgets &= ~(1 << WIDX_CONSTRUCT);
if (_rideConstructionState != RIDE_CONSTRUCTION_STATE_PLACE) {
@ -1528,13 +1514,8 @@ static void window_ride_construction_mousedown(int widgetIndex, rct_window *w, r
*
* rct2: 0x006C78CD
*/
static void window_ride_construction_dropdown()
static void window_ride_construction_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
short dropdownIndex, widgetIndex;
rct_window *w;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
if (widgetIndex != WIDX_SPECIAL_TRACK_DROPDOWN)
return;
if (dropdownIndex == -1)
@ -1931,20 +1912,15 @@ static bool ride_get_place_position_from_screen_position(int screenX, int screen
*
* rct2: 0x006C8229
*/
static void window_ride_construction_toolupdate()
static void window_ride_construction_toolupdate(rct_window* w, int widgetIndex, int x, int y)
{
rct_window *w;
short screenX, screenY, widgetIndex;
window_tool_get_registers(w, widgetIndex, screenX, screenY);
switch (widgetIndex) {
case WIDX_CONSTRUCT:
ride_construction_toolupdate_construct(screenX, screenY);
ride_construction_toolupdate_construct(x, y);
break;
case WIDX_ENTRANCE:
case WIDX_EXIT:
ride_construction_toolupdate_entrance_exit(screenX, screenY);
ride_construction_toolupdate_entrance_exit(x, y);
break;
}
}
@ -1953,20 +1929,15 @@ static void window_ride_construction_toolupdate()
*
* rct2: 0x006C8248
*/
static void window_ride_construction_tooldown()
static void window_ride_construction_tooldown(rct_window* w, int widgetIndex, int x, int y)
{
rct_window *w;
short screenX, screenY, widgetIndex;
window_tool_get_registers(w, widgetIndex, screenX, screenY);
switch (widgetIndex) {
case WIDX_CONSTRUCT:
ride_construction_tooldown_construct(screenX, screenY);
ride_construction_tooldown_construct(x, y);
break;
case WIDX_ENTRANCE:
case WIDX_EXIT:
ride_construction_tooldown_entrance_exit(screenX, screenY);
ride_construction_tooldown_entrance_exit(x, y);
break;
}
}
@ -1975,14 +1946,11 @@ static void window_ride_construction_tooldown()
*
* rct2: 0x006C6AD5
*/
static void window_ride_construction_invalidate()
static void window_ride_construction_invalidate(rct_window *w)
{
rct_window *w;
rct_ride *ride;
rct_string_id stringId;
window_get_register(w);
ride = GET_RIDE(_currentRideIndex);
stringId = STR_RIDE_CONSTRUCTION_SPECIAL;
@ -2011,15 +1979,12 @@ static void window_ride_construction_invalidate()
*
* rct2: 0x006C6B86
*/
static void window_ride_construction_paint()
static void window_ride_construction_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi, *clipdpi;
rct_drawpixelinfo *clipdpi;
rct_widget *widget;
int x, y, width, height;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
widget = &window_ride_construction_widgets[WIDX_CONSTRUCT];

View File

@ -71,46 +71,45 @@ static rct_widget window_ride_list_widgets[] = {
{ WIDGETS_END },
};
static void window_ride_list_emptysub() { }
static void window_ride_list_mouseup();
static void window_ride_list_resize();
static void window_ride_list_mouseup(rct_window *w, int widgetIndex);
static void window_ride_list_resize(rct_window *w);
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_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_ride_list_update(rct_window *w);
static void window_ride_list_scrollgetsize();
static void window_ride_list_scrollmousedown();
static void window_ride_list_scrollmouseover();
static void window_ride_list_tooltip();
static void window_ride_list_invalidate();
static void window_ride_list_paint();
static void window_ride_list_scrollpaint();
static void window_ride_list_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height);
static void window_ride_list_scrollmousedown(rct_window *w, int scrollIndex, int x, int y);
static void window_ride_list_scrollmouseover(rct_window *w, int scrollIndex, int x, int y);
static void window_ride_list_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId);
static void window_ride_list_invalidate(rct_window *w);
static void window_ride_list_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_ride_list_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex);
static void* window_ride_list_events[] = {
window_ride_list_emptysub,
static rct_window_event_list window_ride_list_events = {
NULL,
window_ride_list_mouseup,
window_ride_list_resize,
window_ride_list_mousedown,
window_ride_list_dropdown,
window_ride_list_emptysub,
NULL,
window_ride_list_update,
window_ride_list_emptysub,
window_ride_list_emptysub,
window_ride_list_emptysub,
window_ride_list_emptysub,
window_ride_list_emptysub,
window_ride_list_emptysub,
window_ride_list_emptysub,
window_ride_list_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_ride_list_scrollgetsize,
window_ride_list_scrollmousedown,
window_ride_list_emptysub,
NULL,
window_ride_list_scrollmouseover,
window_ride_list_emptysub,
window_ride_list_emptysub,
window_ride_list_emptysub,
NULL,
NULL,
NULL,
window_ride_list_tooltip,
window_ride_list_emptysub,
window_ride_list_emptysub,
NULL,
NULL,
window_ride_list_invalidate,
window_ride_list_paint,
window_ride_list_scrollpaint
@ -146,7 +145,7 @@ void window_ride_list_open()
// Check if window is already open
window = window_bring_to_front_by_class(WC_RIDE_LIST);
if (window == NULL) {
window = window_create_auto_pos(340, 240, (uint32*)window_ride_list_events, WC_RIDE_LIST, WF_10 | WF_RESIZABLE);
window = window_create_auto_pos(340, 240, &window_ride_list_events, WC_RIDE_LIST, WF_10 | WF_RESIZABLE);
window->widgets = window_ride_list_widgets;
window->enabled_widgets =
(1 << WIDX_CLOSE) |
@ -177,13 +176,8 @@ void window_ride_list_open()
*
* rct2: 0x006B3511
*/
static void window_ride_list_mouseup()
static void window_ride_list_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -219,12 +213,8 @@ static void window_ride_list_mouseup()
*
* rct2: 0x006B38A7
*/
static void window_ride_list_resize()
static void window_ride_list_resize(rct_window *w)
{
rct_window *w;
window_get_register(w);
w->min_width = 340;
w->min_height = 124;
if (w->width < w->min_width) {
@ -281,13 +271,8 @@ static void window_ride_list_mousedown(int widgetIndex, rct_window*w, rct_widget
*
* rct2: 0x006B3547
*/
static void window_ride_list_dropdown()
static void window_ride_list_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
short dropdownIndex, widgetIndex;
rct_window *w;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
if (widgetIndex == WIDX_OPEN_CLOSE_ALL) {
if (dropdownIndex == 0)
window_ride_list_close_all(w);
@ -318,42 +303,32 @@ static void window_ride_list_update(rct_window *w)
*
* rct2: 0x006B35A1
*/
static void window_ride_list_scrollgetsize()
static void window_ride_list_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height)
{
int top, width, height;
rct_window *w;
window_get_register(w);
int top;
height = w->no_list_items * 10;
*height = w->no_list_items * 10;
if (w->selected_list_item != -1) {
w->selected_list_item = -1;
window_invalidate(w);
}
top = height - window_ride_list_widgets[WIDX_LIST].bottom + window_ride_list_widgets[WIDX_LIST].top + 21;
top = *height - window_ride_list_widgets[WIDX_LIST].bottom + window_ride_list_widgets[WIDX_LIST].top + 21;
if (top < 0)
top = 0;
if (top < w->scrolls[0].v_top) {
w->scrolls[0].v_top = top;
window_invalidate(w);
}
width = 0;
window_scrollsize_set_registers(width, height);
}
/**
*
* rct2: 0x006B361F
*/
static void window_ride_list_scrollmousedown()
static void window_ride_list_scrollmousedown(rct_window *w, int scrollIndex, int x, int y)
{
int index;
short x, y, scrollIndex;
rct_window *w;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
index = y / 10;
if (index >= w->no_list_items)
@ -367,13 +342,9 @@ static void window_ride_list_scrollmousedown()
*
* rct2: 0x006B35EF
*/
static void window_ride_list_scrollmouseover()
static void window_ride_list_scrollmouseover(rct_window *w, int scrollIndex, int x, int y)
{
int index;
short x, y, scrollIndex;
rct_window *w;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
index = y / 10;
if (index >= w->no_list_items)
@ -387,7 +358,7 @@ static void window_ride_list_scrollmouseover()
*
* rct2: 0x006B3861
*/
static void window_ride_list_tooltip()
static void window_ride_list_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId)
{
RCT2_GLOBAL(0x013CE952, uint16) = STR_LIST;
}
@ -396,13 +367,11 @@ static void window_ride_list_tooltip()
*
* rct2: 0x006B3182
*/
static void window_ride_list_invalidate()
static void window_ride_list_invalidate(rct_window *w)
{
int i;
rct_window *w;
rct_ride *ride;
window_get_register(w);
colour_scheme_update(w);
window_ride_list_widgets[WIDX_CURRENT_INFORMATION_TYPE].image = STR_STATUS + _window_ride_list_information_type;
@ -463,13 +432,8 @@ static void window_ride_list_invalidate()
*
* rct2: 0x006B3235
*/
static void window_ride_list_paint()
static void window_ride_list_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
window_ride_list_draw_tab_images(dpi, w);
}
@ -478,15 +442,11 @@ static void window_ride_list_paint()
*
* rct2: 0x006B3240
*/
static void window_ride_list_scrollpaint()
static void window_ride_list_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
{
int i, y, format, formatSecondary, argument;
rct_window *w;
rct_drawpixelinfo *dpi;
rct_ride *ride;
window_paint_get_registers(w, dpi);
gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width, dpi->y + dpi->height, RCT2_GLOBAL(0x0141FC48 + (w->colours[1] * 8), uint8));
y = 0;

View File

@ -68,41 +68,40 @@ static rct_widget window_quit_prompt_widgets[] = {
{ WIDGETS_END },
};
static void window_save_prompt_emptysub() { }
static void window_save_prompt_close();
static void window_save_prompt_mouseup();
static void window_save_prompt_invalidate();
static void window_save_prompt_paint();
static void window_save_prompt_close(rct_window *w);
static void window_save_prompt_mouseup(rct_window *w, int widgetIndex);
static void window_save_prompt_invalidate(rct_window *w);
static void window_save_prompt_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void* window_save_prompt_events[] = {
static rct_window_event_list window_save_prompt_events = {
window_save_prompt_close,
window_save_prompt_mouseup,
window_save_prompt_emptysub,
window_save_prompt_emptysub,
window_save_prompt_emptysub,
window_save_prompt_emptysub,
window_save_prompt_emptysub,
window_save_prompt_emptysub,
window_save_prompt_emptysub,
window_save_prompt_emptysub,
window_save_prompt_emptysub,
window_save_prompt_emptysub,
window_save_prompt_emptysub,
window_save_prompt_emptysub,
window_save_prompt_emptysub,
window_save_prompt_emptysub,
window_save_prompt_emptysub,
window_save_prompt_emptysub,
window_save_prompt_emptysub,
window_save_prompt_emptysub,
window_save_prompt_emptysub,
window_save_prompt_emptysub,
window_save_prompt_emptysub,
window_save_prompt_emptysub,
window_save_prompt_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_save_prompt_invalidate,
window_save_prompt_paint,
window_save_prompt_emptysub
NULL
};
/**
@ -181,7 +180,7 @@ void window_save_prompt_open()
window = window_create_centred(
width,
height,
(uint32*)window_save_prompt_events,
&window_save_prompt_events,
WC_SAVE_PROMPT,
WF_TRANSPARENT | WF_STICK_TO_FRONT
);
@ -208,7 +207,7 @@ void window_save_prompt_open()
*
* rct2: 0x0066DF17
*/
static void window_save_prompt_close()
static void window_save_prompt_close(rct_window *w)
{
// Unpause the game
RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) &= ~2;
@ -220,13 +219,8 @@ static void window_save_prompt_close()
*
* rct2: 0x0066DDF2
*/
static void window_save_prompt_mouseup()
static void window_save_prompt_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & (SCREEN_FLAGS_TITLE_DEMO | SCREEN_FLAGS_TRACK_DESIGNER | SCREEN_FLAGS_TRACK_MANAGER)) {
switch (widgetIndex) {
case WQIDX_OK:
@ -275,20 +269,12 @@ static void window_save_prompt_mouseup()
}
}
static void window_save_prompt_invalidate()
static void window_save_prompt_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
}
static void window_save_prompt_paint()
static void window_save_prompt_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
}

View File

@ -62,48 +62,47 @@ enum {
WINDOW_SCENERY_TAB_20
};
static void window_scenery_emptysub() { }
static void window_scenery_close();
static void window_scenery_mouseup();
static void window_scenery_resize();
static void window_scenery_close(rct_window *w);
static void window_scenery_mouseup(rct_window *w, int widgetIndex);
static void window_scenery_resize(rct_window *w);
static void window_scenery_mousedown(int widgetIndex, rct_window* w, rct_widget* widget);
static void window_scenery_dropdown();
static void window_scenery_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_scenery_update(rct_window *w);
static void window_scenery_event_07();
static void window_scenery_scrollgetsize();
static void window_scenery_scrollmousedown();
static void window_scenery_scrollmouseover();
static void window_scenery_tooltip();
static void window_scenery_invalidate();
static void window_scenery_paint();
static void window_scenery_scrollpaint();
static void window_scenery_event_07(rct_window *w);
static void window_scenery_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height);
static void window_scenery_scrollmousedown(rct_window *w, int scrollIndex, int x, int y);
static void window_scenery_scrollmouseover(rct_window *w, int scrollIndex, int x, int y);
static void window_scenery_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId);
static void window_scenery_invalidate(rct_window *w);
static void window_scenery_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_scenery_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex);
static void* window_scenery_events[] = {
static rct_window_event_list window_scenery_events = {
window_scenery_close,
window_scenery_mouseup,
window_scenery_resize,
window_scenery_mousedown,
window_scenery_dropdown,
window_scenery_emptysub,
NULL,
window_scenery_update,
window_scenery_event_07,
window_scenery_emptysub,
window_scenery_emptysub,
window_scenery_emptysub,
window_scenery_emptysub,
window_scenery_emptysub,
window_scenery_emptysub,
window_scenery_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_scenery_scrollgetsize,
window_scenery_scrollmousedown,
window_scenery_emptysub,
NULL,
window_scenery_scrollmouseover,
window_scenery_emptysub,
window_scenery_emptysub,
window_scenery_emptysub,
NULL,
NULL,
NULL,
window_scenery_tooltip,
window_scenery_emptysub,
window_scenery_emptysub,
NULL,
NULL,
window_scenery_invalidate,
window_scenery_paint,
window_scenery_scrollpaint,
@ -427,7 +426,7 @@ void window_scenery_open()
0x1D,
WINDOW_SCENERY_WIDTH,
WINDOW_SCENERY_HEIGHT,
(uint32*)window_scenery_events,
&window_scenery_events,
WC_SCENERY,
WF_2
);
@ -503,11 +502,8 @@ bool window_scenery_is_scenery_tool_active() {
*
* rct2: 0x006E1A73
*/
void window_scenery_close() {
rct_window *w;
window_get_register(w);
void window_scenery_close(rct_window *w)
{
scenery_remove_ghost_tool_placement();
hide_gridlines();
viewport_set_visibility(0);
@ -534,13 +530,8 @@ int window_scenery_scrollgetsize_num()
*
* rct2: 0x006BD94C
*/
static void window_scenery_mouseup()
static void window_scenery_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_SCENERY_CLOSE:
window_close(w);
@ -595,12 +586,8 @@ void window_scenery_update_scroll(rct_window *w)
*
* rct2: 0x006E1E48
*/
static void window_scenery_resize()
static void window_scenery_resize(rct_window *w)
{
rct_window *w;
window_get_register(w);
if (w->width < w->min_width) {
window_invalidate(w);
w->width = w->min_width;
@ -661,11 +648,8 @@ static void window_scenery_mousedown(int widgetIndex, rct_window* w, rct_widget*
*
* rct2: 0x006E1A54
*/
static void window_scenery_dropdown() {
rct_window* w;
short widgetIndex, dropdownIndex;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
static void window_scenery_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
if (dropdownIndex == -1)
return;
@ -686,11 +670,8 @@ static void window_scenery_dropdown() {
*
* rct2: 0x006E1B9F
*/
static void window_scenery_event_07() {
rct_window *w;
window_get_register(w);
static void window_scenery_event_07(rct_window *w)
{
if (w->scenery.selected_scenery_id != -1) {
w->scenery.selected_scenery_id = -1;
}
@ -777,14 +758,9 @@ static void window_scenery_update(rct_window *w)
*
* rct2: 0x006E1A91
*/
void window_scenery_scrollgetsize()
void window_scenery_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height)
{
int width, height;
width = 0;
height = window_scenery_scrollgetsize_num();
window_scrollsize_set_registers(width, height);
*height = window_scenery_scrollgetsize_num();
}
short get_scenery_id_by_cursor_pos(short x, short y)
@ -809,13 +785,8 @@ short get_scenery_id_by_cursor_pos(short x, short y)
*
* rct2: 0x006E1C4A
*/
void window_scenery_scrollmousedown()
void window_scenery_scrollmousedown(rct_window *w, int scrollIndex, int x, int y)
{
short x, y, scrollIndex;
rct_window *w;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
short sceneryId = get_scenery_id_by_cursor_pos(x, y);
if (sceneryId == -1)
return;
@ -834,12 +805,8 @@ void window_scenery_scrollmousedown()
*
* rct2: 0x006E1BB8
*/
void window_scenery_scrollmouseover()
void window_scenery_scrollmouseover(rct_window *w, int scrollIndex, int x, int y)
{
short x, y, scrollIndex;
rct_window *w;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
short sceneryId = get_scenery_id_by_cursor_pos(x, y);
if (sceneryId != -1) {
w->scenery.selected_scenery_id = sceneryId;
@ -851,14 +818,9 @@ void window_scenery_scrollmouseover()
*
* rct2: 0x006E1C05
*/
void window_scenery_tooltip()
void window_scenery_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId)
{
rct_window *w;
short widget;
window_scroll_get_registers(w, widget);
switch (widget) {
switch (widgetIndex) {
case WIDX_SCENERY_LIST:
RCT2_GLOBAL(0x013CE952, uint16) = 3159;
break;
@ -882,7 +844,7 @@ void window_scenery_tooltip()
case WIDX_SCENERY_TAB_18:
case WIDX_SCENERY_TAB_19:
case WIDX_SCENERY_TAB_20:
RCT2_GLOBAL(0x013CE952, uint16) = g_scenerySetEntries[widget - WIDX_SCENERY_TAB_1]->name;
RCT2_GLOBAL(0x013CE952, uint16) = g_scenerySetEntries[widgetIndex - WIDX_SCENERY_TAB_1]->name;
break;
}
}
@ -891,11 +853,8 @@ void window_scenery_tooltip()
*
* rct2: 0x006E118B
*/
void window_scenery_invalidate()
void window_scenery_invalidate(rct_window *w)
{
rct_window* w;
window_get_register(w);
colour_scheme_update(w);
uint16 tabIndex = window_scenery_active_tab_index;
@ -1018,13 +977,8 @@ void window_scenery_invalidate()
*
* rct2: 0x006E1462
*/
void window_scenery_paint()
void window_scenery_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
uint16 tabIndex = window_scenery_active_tab_index;
@ -1088,13 +1042,8 @@ void window_scenery_paint()
*
* rct2: 0x006E15ED
*/
void window_scenery_scrollpaint()
void window_scenery_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
gfx_clear(dpi, ((char*)0x0141FC48)[w->colours[1] * 8] * 0x1010101);
uint8 tabIndex = window_scenery_active_tab_index;

View File

@ -42,41 +42,40 @@ static rct_widget window_shortcut_change_widgets[] = {
{ WIDGETS_END }
};
static void window_shortcut_change_emptysub(){}
static void window_shortcut_change_mouseup();
static void window_shortcut_change_invalidate();
static void window_shortcut_change_paint();
static void window_shortcut_change_mouseup(rct_window *w, int widgetIndex);
static void window_shortcut_change_invalidate(rct_window *w);
static void window_shortcut_change_paint(rct_window *w, rct_drawpixelinfo *dpi);
//0x9A3F7C
static void* window_shortcut_change_events[] = {
window_shortcut_change_emptysub,
static rct_window_event_list window_shortcut_change_events = {
NULL,
window_shortcut_change_mouseup,
window_shortcut_change_emptysub,
window_shortcut_change_emptysub,
window_shortcut_change_emptysub,
window_shortcut_change_emptysub,
window_shortcut_change_emptysub,
window_shortcut_change_emptysub,
window_shortcut_change_emptysub,
window_shortcut_change_emptysub,
window_shortcut_change_emptysub,
window_shortcut_change_emptysub,
window_shortcut_change_emptysub,
window_shortcut_change_emptysub,
window_shortcut_change_emptysub,
window_shortcut_change_emptysub,
window_shortcut_change_emptysub,
window_shortcut_change_emptysub,
window_shortcut_change_emptysub,
window_shortcut_change_emptysub,
window_shortcut_change_emptysub,
window_shortcut_change_emptysub,
window_shortcut_change_emptysub,
window_shortcut_change_emptysub,
window_shortcut_change_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_shortcut_change_invalidate,
window_shortcut_change_paint,
window_shortcut_change_emptysub
NULL
};
void window_shortcut_change_open(int selected_key){
@ -84,7 +83,7 @@ void window_shortcut_change_open(int selected_key){
window_close_by_class(WC_CHANGE_KEYBOARD_SHORTCUT);
// Save the item we are selecting for new window
RCT2_GLOBAL(0x9DE511, uint8) = selected_key;
rct_window* w = window_create_auto_pos(WW, WH, (uint32*)window_shortcut_change_events, WC_CHANGE_KEYBOARD_SHORTCUT, 0);
rct_window* w = window_create_auto_pos(WW, WH, &window_shortcut_change_events, WC_CHANGE_KEYBOARD_SHORTCUT, 0);
w->widgets = window_shortcut_change_widgets;
w->enabled_widgets = (1 << 2);
@ -95,23 +94,17 @@ void window_shortcut_change_open(int selected_key){
*
* rct2: 0x006E3AE0
*/
static void window_shortcut_change_mouseup(){
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
static void window_shortcut_change_mouseup(rct_window *w, int widgetIndex)
{
switch (widgetIndex){
case WIDX_CLOSE:
window_close(w);
break;
}
}
static void window_shortcut_change_invalidate()
static void window_shortcut_change_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
}
@ -119,12 +112,8 @@ static void window_shortcut_change_invalidate()
*
* rct2: 0x006E3A9F
*/
static void window_shortcut_change_paint(){
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
static void window_shortcut_change_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
window_draw_widgets(w, dpi);
int x = w->x + 125;

View File

@ -47,42 +47,41 @@ static rct_widget window_shortcut_widgets[] = {
{ WIDGETS_END }
};
void window_shortcut_emptysub() { }
static void window_shortcut_mouseup();
static void window_shortcut_invalidate();
static void window_shortcut_paint();
static void window_shortcut_tooltip();
static void window_shortcut_scrollgetsize();
static void window_shortcut_scrollmousedown();
static void window_shortcut_scrollmouseover();
static void window_shortcut_scrollpaint();
static void window_shortcut_mouseup(rct_window *w, int widgetIndex);
static void window_shortcut_invalidate(rct_window *w);
static void window_shortcut_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_shortcut_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId);
static void window_shortcut_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height);
static void window_shortcut_scrollmousedown(rct_window *w, int scrollIndex, int x, int y);
static void window_shortcut_scrollmouseover(rct_window *w, int scrollIndex, int x, int y);
static void window_shortcut_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex);
static void* window_shortcut_events[] = {
window_shortcut_emptysub,
static rct_window_event_list window_shortcut_events = {
NULL,
window_shortcut_mouseup,
window_shortcut_emptysub,
window_shortcut_emptysub,
window_shortcut_emptysub,
window_shortcut_emptysub,
window_shortcut_emptysub,
window_shortcut_emptysub,
window_shortcut_emptysub,
window_shortcut_emptysub,
window_shortcut_emptysub,
window_shortcut_emptysub,
window_shortcut_emptysub,
window_shortcut_emptysub,
window_shortcut_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_shortcut_scrollgetsize,
window_shortcut_scrollmousedown,
window_shortcut_emptysub,
NULL,
window_shortcut_scrollmouseover,
window_shortcut_emptysub,
window_shortcut_emptysub,
window_shortcut_emptysub,
NULL,
NULL,
NULL,
window_shortcut_tooltip,
window_shortcut_emptysub,
window_shortcut_emptysub,
NULL,
NULL,
window_shortcut_invalidate,
window_shortcut_paint,
window_shortcut_scrollpaint
@ -140,7 +139,7 @@ void window_shortcut_keys_open()
if (w) return;
w = window_create_auto_pos(WW, WH, (uint32*)window_shortcut_events, WC_KEYBOARD_SHORTCUT_LIST, 0);
w = window_create_auto_pos(WW, WH, &window_shortcut_events, WC_KEYBOARD_SHORTCUT_LIST, 0);
w->widgets = window_shortcut_widgets;
w->enabled_widgets = (1 << WIDX_CLOSE) | (1 << WIDX_RESET);
@ -154,13 +153,8 @@ void window_shortcut_keys_open()
*
* rct2: 0x006E39E4
*/
static void window_shortcut_mouseup()
static void window_shortcut_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex){
case WIDX_CLOSE:
window_close(w);
@ -173,11 +167,8 @@ static void window_shortcut_mouseup()
}
}
static void window_shortcut_invalidate()
static void window_shortcut_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
}
@ -185,13 +176,8 @@ static void window_shortcut_invalidate()
*
* rct2: 0x006E38E0
*/
static void window_shortcut_paint()
static void window_shortcut_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
}
@ -199,7 +185,7 @@ static void window_shortcut_paint()
*
* rct2: 0x006E3A0C
*/
static void window_shortcut_tooltip()
static void window_shortcut_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId)
{
RCT2_GLOBAL(0x013CE952, uint16) = STR_LIST;
}
@ -208,30 +194,17 @@ static void window_shortcut_tooltip()
*
* rct2: 0x006E3A07
*/
static void window_shortcut_scrollgetsize()
static void window_shortcut_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height)
{
rct_window *w;
int width, height;
window_get_register(w);
width = 0;
height = w->no_list_items * 10;
window_scrollsize_set_registers(width, height);
*height = w->no_list_items * 10;
}
/**
*
* rct2: 0x006E3A3E
*/
static void window_shortcut_scrollmousedown()
static void window_shortcut_scrollmousedown(rct_window *w, int scrollIndex, int x, int y)
{
short x, y, scrollIndex;
rct_window *w;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
int selected_item = y / 10;
if (selected_item >= w->no_list_items)
return;
@ -243,13 +216,8 @@ static void window_shortcut_scrollmousedown()
*
* rct2: 0x006E3A16
*/
static void window_shortcut_scrollmouseover()
static void window_shortcut_scrollmouseover(rct_window *w, int scrollIndex, int x, int y)
{
short x, y, scrollIndex;
rct_window *w;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
int selected_item = y / 10;
if (selected_item >= w->no_list_items)
return;
@ -263,13 +231,8 @@ static void window_shortcut_scrollmouseover()
*
* rct2: 0x006E38E6
*/
static void window_shortcut_scrollpaint()
static void window_shortcut_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, RCT2_ADDRESS(0x0141FC48,uint8)[w->colours[1] * 8]);
for (int i = 0; i < w->no_list_items; ++i) {

View File

@ -61,81 +61,81 @@ rct_widget window_sign_widgets[] = {
{ WIDGETS_END },
};
static void window_sign_emptysub() { }
static void window_sign_mouseup();
static void window_sign_mouseup(rct_window *w, int widgetIndex);
static void window_sign_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_sign_dropdown();
static void window_sign_textinput();
static void window_sign_invalidate();
static void window_sign_paint();
static void window_sign_unknown_14();
static void window_sign_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_sign_textinput(rct_window *w, int widgetIndex, char *text);
static void window_sign_unknown_14(rct_window *w);
static void window_sign_invalidate(rct_window *w);
static void window_sign_paint(rct_window *w, rct_drawpixelinfo *dpi);
// 0x98E44C
static void* window_sign_events[] = {
window_sign_emptysub,
static rct_window_event_list window_sign_events = {
NULL,
window_sign_mouseup,
window_sign_emptysub,
NULL,
window_sign_mousedown,
window_sign_dropdown,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_sign_textinput,
window_sign_unknown_14,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
NULL,
NULL,
NULL,
NULL,
window_sign_invalidate,
window_sign_paint,
window_sign_emptysub
NULL
};
static void window_sign_small_mouseup();
static void window_sign_small_dropdown();
static void window_sign_small_invalidate();
static void window_sign_small_mouseup(rct_window *w, int widgetIndex);
static void window_sign_small_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_sign_small_invalidate(rct_window *w);
// 0x9A410C
static void* window_sign_small_events[] = {
window_sign_emptysub,
static rct_window_event_list window_sign_small_events = {
NULL,
window_sign_small_mouseup,
window_sign_emptysub,
NULL,
window_sign_mousedown,
window_sign_small_dropdown,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_sign_textinput,
window_sign_unknown_14,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
window_sign_emptysub,
NULL,
NULL,
NULL,
NULL,
window_sign_small_invalidate,
window_sign_paint,
window_sign_emptysub
NULL
};
/**
@ -153,7 +153,7 @@ void window_sign_open(rct_windownumber number)
if (w != NULL)
return;
w = window_create_auto_pos(WW, WH, (uint32*)window_sign_events, WC_BANNER, WF_2);
w = window_create_auto_pos(WW, WH, &window_sign_events, WC_BANNER, WF_2);
w->widgets = window_sign_widgets;
w->enabled_widgets =
(1 << WIDX_CLOSE) |
@ -215,13 +215,8 @@ void window_sign_open(rct_windownumber number)
}
/* rct2: 0x6B9765*/
static void window_sign_mouseup()
static void window_sign_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
rct_banner* banner = &gBanners[w->number];
int x = banner->x << 5;
int y = banner->y << 5;
@ -288,13 +283,8 @@ static void window_sign_mousedown(int widgetIndex, rct_window*w, rct_widget* wid
}
/* rct2: 0x6B979C */
static void window_sign_dropdown()
static void window_sign_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
short widgetIndex, dropdownIndex;
rct_window *w;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
switch (widgetIndex){
case WIDX_MAIN_COLOR:
if (dropdownIndex == -1) return;
@ -326,21 +316,14 @@ static void window_sign_dropdown()
}
/* rct2: 0x6B9791 & 0x6E6171*/
static void window_sign_textinput()
static void window_sign_textinput(rct_window *w, int widgetIndex, char *text)
{
short widgetIndex;
rct_window *w;
uint8 result;
uint8* text;
window_text_input_get_registers(w, widgetIndex, result, text);
rct_banner* banner = &gBanners[w->number];
int x = banner->x << 5;
int y = banner->y << 5;
if (widgetIndex == WIDX_SIGN_TEXT && result) {
if (*text != 0){
if (widgetIndex == WIDX_SIGN_TEXT && text != NULL) {
if (*text != 0) {
rct_string_id string_id = user_string_allocate(128, text);
if (string_id != 0) {
rct_string_id prev_string_id = banner->string_idx;
@ -369,11 +352,8 @@ static void window_sign_textinput()
}
/* rct2: 0x006B96F5 */
static void window_sign_invalidate()
static void window_sign_invalidate(rct_window *w)
{
rct_window* w;
window_get_register(w);
colour_scheme_update(w);
rct_widget* main_colour_btn = &window_sign_widgets[WIDX_MAIN_COLOR];
@ -396,13 +376,8 @@ static void window_sign_invalidate()
}
/* rct2: 0x006B9754 & 0x006E6134 */
static void window_sign_paint()
static void window_sign_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
// Draw viewport
@ -412,11 +387,8 @@ static void window_sign_paint()
}
/* rct2: 0x6B9A6C & 0x6E6424 */
static void window_sign_unknown_14()
static void window_sign_unknown_14(rct_window *w)
{
rct_window* w;
window_get_register(w);
rct_viewport* view = w->viewport;
w->viewport = 0;
@ -461,7 +433,7 @@ void window_sign_small_open(rct_windownumber number){
if (w != NULL)
return;
w = window_create_auto_pos(WW, WH, (uint32*)window_sign_small_events, WC_BANNER, 0);
w = window_create_auto_pos(WW, WH, &window_sign_small_events, WC_BANNER, 0);
w->widgets = window_sign_widgets;
w->enabled_widgets =
(1 << WIDX_CLOSE) |
@ -524,13 +496,8 @@ void window_sign_small_open(rct_windownumber number){
}
/* rct2: 0x6E6145 */
static void window_sign_small_mouseup()
static void window_sign_small_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
rct_banner* banner = &gBanners[w->number];
int x = banner->x << 5;
int y = banner->y << 5;
@ -580,13 +547,8 @@ static void window_sign_small_mouseup()
}
/* rct2: 0x6E617C */
static void window_sign_small_dropdown()
static void window_sign_small_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
short widgetIndex, dropdownIndex;
rct_window* w;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
switch (widgetIndex){
case WIDX_MAIN_COLOR:
if (dropdownIndex == -1) return;
@ -628,11 +590,8 @@ static void window_sign_small_dropdown()
}
/* rct2: 0x006E60D5 */
static void window_sign_small_invalidate()
static void window_sign_small_invalidate(rct_window *w)
{
rct_window* w;
window_get_register(w);
colour_scheme_update(w);
rct_widget* main_colour_btn = &window_sign_widgets[WIDX_MAIN_COLOR];

View File

@ -70,8 +70,6 @@ enum WINDOW_STAFF_WIDGET_IDX {
WIDX_COSTUME_BTN,
};
void window_staff_emptysub(){};
rct_widget window_staff_overview_widgets[] = {
{ WWT_FRAME, 0, 0, WW - 1, 0, WH - 1, 0x0FFFFFFFF, STR_NONE }, // Panel / Background
{ WWT_CAPTION, 0, 1, WW - 2, 1, 14, 0x361, STR_WINDOW_TITLE_TIP }, // Title
@ -131,141 +129,141 @@ rct_widget *window_staff_page_widgets[] = {
void window_staff_set_page(rct_window* w, int page);
void window_staff_disable_widgets(rct_window* w);
void window_staff_unknown_05();
void window_staff_unknown_05(rct_window *w);
void window_staff_viewport_init(rct_window* w);
void window_staff_overview_close();
void window_staff_overview_mouseup();
void window_staff_overview_resize();
void window_staff_overview_close(rct_window *w);
void window_staff_overview_mouseup(rct_window *w, int widgetIndex);
void window_staff_overview_resize(rct_window *w);
void window_staff_overview_mousedown(int widgetIndex, rct_window* w, rct_widget* widget);
void window_staff_overview_dropdown();
void window_staff_overview_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
void window_staff_overview_update(rct_window* w);
void window_staff_overview_invalidate();
void window_staff_overview_paint();
void window_staff_overview_invalidate(rct_window *w);
void window_staff_overview_paint(rct_window *w, rct_drawpixelinfo *dpi);
void window_staff_overview_tab_paint(rct_window* w, rct_drawpixelinfo* dpi);
void window_staff_overview_tool_update();
void window_staff_overview_tool_down();
void window_staff_overview_tool_abort();
void window_staff_overview_text_input();
void window_staff_overview_viewport_init_wrapper();
void window_staff_overview_tool_update(rct_window* w, int widgetIndex, int x, int y);
void window_staff_overview_tool_down(rct_window* w, int widgetIndex, int x, int y);
void window_staff_overview_tool_abort(rct_window *w, int widgetIndex);
void window_staff_overview_text_input(rct_window *w, int widgetIndex, char *text);
void window_staff_overview_unknown_14(rct_window *w);
void window_staff_options_mouseup();
void window_staff_options_mouseup(rct_window *w, int widgetIndex);
void window_staff_options_update(rct_window* w);
void window_staff_options_invalidate();
void window_staff_options_paint();
void window_staff_options_invalidate(rct_window *w);
void window_staff_options_paint(rct_window *w, rct_drawpixelinfo *dpi);
void window_staff_options_tab_paint(rct_window* w, rct_drawpixelinfo* dpi);
void window_staff_options_mousedown(int widgetIndex, rct_window* w, rct_widget* widget);
void window_staff_options_dropdown();
void window_staff_options_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
void window_staff_stats_mouseup();
void window_staff_stats_resize();
void window_staff_stats_mouseup(rct_window *w, int widgetIndex);
void window_staff_stats_resize(rct_window *w);
void window_staff_stats_update(rct_window* w);
void window_staff_stats_invalidate();
void window_staff_stats_paint();
void window_staff_stats_invalidate(rct_window *w);
void window_staff_stats_paint(rct_window *w, rct_drawpixelinfo *dpi);
void window_staff_stats_tab_paint(rct_window* w, rct_drawpixelinfo* dpi);
void window_staff_set_colours();
// 0x992AEC
static void* window_staff_overview_events[] = {
static rct_window_event_list window_staff_overview_events = {
window_staff_overview_close,
window_staff_overview_mouseup,
window_staff_overview_resize,
window_staff_overview_mousedown,
window_staff_overview_dropdown,
window_staff_emptysub,
NULL,
window_staff_overview_update,
window_staff_emptysub,
window_staff_emptysub,
NULL,
NULL,
window_staff_overview_tool_update,
window_staff_overview_tool_down,
window_staff_emptysub,
window_staff_emptysub,
NULL,
NULL,
window_staff_overview_tool_abort,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
window_staff_overview_text_input,
window_staff_overview_viewport_init_wrapper,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_overview_unknown_14,
NULL,
NULL,
NULL,
NULL,
window_staff_overview_invalidate, //Invalidate
window_staff_overview_paint, //Paint
window_staff_emptysub
NULL
};
// 0x992B5C
static void* window_staff_options_events[] = {
window_staff_emptysub,
static rct_window_event_list window_staff_options_events = {
NULL,
window_staff_options_mouseup,
window_staff_stats_resize,
window_staff_options_mousedown,
window_staff_options_dropdown,
window_staff_unknown_05,
window_staff_options_update,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_staff_options_invalidate, //Invalidate
window_staff_options_paint, //Paint
window_staff_emptysub
NULL
};
// 0x992BCC
static void* window_staff_stats_events[] = {
window_staff_emptysub,
static rct_window_event_list window_staff_stats_events = {
NULL,
window_staff_stats_mouseup,
window_staff_stats_resize,
window_staff_emptysub,
window_staff_emptysub,
NULL,
NULL,
window_staff_unknown_05,
window_staff_stats_update,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
window_staff_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_staff_stats_invalidate, //Invalidate
window_staff_stats_paint, //Paint
window_staff_emptysub
NULL
};
void* window_staff_page_events[] = {
window_staff_overview_events,
window_staff_options_events,
window_staff_stats_events
static rct_window_event_list *window_staff_page_events[] = {
&window_staff_overview_events,
&window_staff_options_events,
&window_staff_stats_events
};
uint32 window_staff_page_enabled_widgets[] = {
@ -303,7 +301,7 @@ void window_staff_open(rct_peep* peep)
{
rct_window* w = window_bring_to_front_by_number(WC_PEEP, peep->sprite_index);
if (w == NULL) {
w = window_create_auto_pos(WW, WH, (uint32*)window_staff_overview_events, WC_PEEP, WF_10 | WF_RESIZABLE);
w = window_create_auto_pos(WW, WH, &window_staff_overview_events, WC_PEEP, WF_10 | WF_RESIZABLE);
w->widgets = RCT2_GLOBAL(0x9AF81C, rct_widget*);
w->enabled_widgets = RCT2_GLOBAL(0x9929B0, uint32);
@ -369,12 +367,8 @@ void window_staff_disable_widgets(rct_window* w)
* Same as window_peep_overview_close.
* rct2: 0x006BDFF8
*/
void window_staff_overview_close()
void window_staff_overview_close(rct_window *w)
{
rct_window* w;
window_get_register(w);
if (RCT2_GLOBAL(RCT2_ADDRESS_INPUT_FLAGS, uint32) & INPUT_FLAG_TOOL_ACTIVE){
if (w->classification == RCT2_GLOBAL(RCT2_ADDRESS_TOOL_WINDOWCLASS, rct_windowclass) &&
w->number == RCT2_GLOBAL(RCT2_ADDRESS_TOOL_WINDOWNUMBER, rct_windownumber))
@ -431,11 +425,8 @@ void window_staff_set_page(rct_window* w, int page)
}
/** rct2: 0x006BDF55 */
void window_staff_overview_mouseup()
void window_staff_overview_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window* w;
window_widget_get_registers(w, widgetIndex);
rct_peep* peep = GET_PEEP(w->number);
switch (widgetIndex) {
@ -475,11 +466,8 @@ void window_staff_overview_mouseup()
}
/** rct2: 0x006BE558 */
void window_staff_overview_resize()
void window_staff_overview_resize(rct_window *w)
{
rct_window* w;
window_get_register(w);
window_staff_disable_widgets(w);
w->min_width = WW;
@ -554,13 +542,8 @@ void window_staff_overview_mousedown(int widgetIndex, rct_window* w, rct_widget*
}
/** rct2: 0x006BDFA3 */
void window_staff_overview_dropdown()
void window_staff_overview_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
short widgetIndex, dropdownIndex;
rct_window* w;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
if (widgetIndex != WIDX_PATROL) {
return;
}
@ -616,12 +599,8 @@ void window_staff_set_order(rct_window* w, int order_id)
}
/** rct2: 0x006BE7DB */
void window_staff_options_mouseup()
void window_staff_options_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window* w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -648,12 +627,8 @@ void window_staff_options_update(rct_window* w)
}
/** rct2: 0x006BEBCF */
void window_staff_stats_mouseup()
void window_staff_stats_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window* w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -667,11 +642,8 @@ void window_staff_stats_mouseup()
}
/** rct2: 0x006BEC1B and rct2: 0x006BE975 */
void window_staff_stats_resize()
void window_staff_stats_resize(rct_window *w)
{
rct_window* w;
window_get_register(w);
w->min_width = 190;
w->max_width = 190;
w->min_height = 119;
@ -712,17 +684,14 @@ void window_staff_stats_update(rct_window* w)
}
/* rct2: 0x6BEC80, 0x6BE9DA */
void window_staff_unknown_05(){
rct_window* w;
window_get_register(w);
void window_staff_unknown_05(rct_window *w)
{
widget_invalidate(w, WIDX_TAB_1);
}
/* rct2: 0x006BE9E9 */
void window_staff_stats_invalidate(){
rct_window* w;
window_get_register(w);
void window_staff_stats_invalidate(rct_window *w)
{
colour_scheme_update_by_class(w, (rct_windowclass)WC_STAFF);
if (window_staff_page_widgets[w->page] != w->widgets){
@ -753,9 +722,8 @@ void window_staff_stats_invalidate(){
/* rct2: 0x006BE62B */
void window_staff_options_invalidate(){
rct_window* w;
window_get_register(w);
void window_staff_options_invalidate(rct_window *w)
{
colour_scheme_update_by_class(w, (rct_windowclass)WC_STAFF);
if (window_staff_page_widgets[w->page] != w->widgets){
@ -826,9 +794,8 @@ void window_staff_options_invalidate(){
}
/* rct2: 0x006BDD91 */
void window_staff_overview_invalidate(){
rct_window* w;
window_get_register(w);
void window_staff_overview_invalidate(rct_window *w)
{
colour_scheme_update_by_class(w, (rct_windowclass)WC_STAFF);
if (window_staff_page_widgets[w->page] != w->widgets){
@ -880,12 +847,8 @@ void window_staff_overview_invalidate(){
}
/* rct2: 0x6BDEAF */
void window_staff_overview_paint(){
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
void window_staff_overview_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
window_draw_widgets(w, dpi);
window_staff_overview_tab_paint(w, dpi);
window_staff_options_tab_paint(w, dpi);
@ -915,7 +878,8 @@ void window_staff_overview_paint(){
}
/* rct2: 0x6BEC8F */
void window_staff_options_tab_paint(rct_window* w, rct_drawpixelinfo* dpi){
void window_staff_options_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
if (w->disabled_widgets & (1 << WIDX_TAB_2)) return;
rct_widget* widget = &w->widgets[WIDX_TAB_2];
@ -932,7 +896,8 @@ void window_staff_options_tab_paint(rct_window* w, rct_drawpixelinfo* dpi){
}
/* rct2: 0x6BECD3 */
void window_staff_stats_tab_paint(rct_window* w, rct_drawpixelinfo* dpi){
void window_staff_stats_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
if (w->disabled_widgets & (1 << WIDX_TAB_3)) return;
rct_widget* widget = &w->widgets[WIDX_TAB_3];
@ -951,7 +916,8 @@ void window_staff_stats_tab_paint(rct_window* w, rct_drawpixelinfo* dpi){
/**
* Based on rct2: 0x6983dd in window_guest to be remerged into one when peep file added.
*/
void window_staff_overview_tab_paint(rct_window* w, rct_drawpixelinfo* dpi){
void window_staff_overview_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
if (w->disabled_widgets & (1 << WIDX_TAB_1))
return;
@ -1011,12 +977,8 @@ void window_staff_overview_tab_paint(rct_window* w, rct_drawpixelinfo* dpi){
}
/* rct2: 0x6BE7C6 */
void window_staff_options_paint(){
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
void window_staff_options_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
window_draw_widgets(w, dpi);
window_staff_overview_tab_paint(w, dpi);
window_staff_options_tab_paint(w, dpi);
@ -1024,12 +986,8 @@ void window_staff_options_paint(){
}
/* rct2: 0x6BEA86 */
void window_staff_stats_paint(){
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
void window_staff_stats_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
window_draw_widgets(w, dpi);
window_staff_overview_tab_paint(w, dpi);
window_staff_options_tab_paint(w, dpi);
@ -1076,14 +1034,10 @@ void window_staff_stats_paint(){
}
/* rct2: 0x006BDFD8 */
void window_staff_overview_tool_update(){
short widgetIndex;
rct_window* w;
short x, y;
window_tool_get_registers(w, widgetIndex, x, y);
if (widgetIndex != WIDX_PICKUP) return;
void window_staff_overview_tool_update(rct_window* w, int widgetIndex, int x, int y)
{
if (widgetIndex != WIDX_PICKUP)
return;
RCT2_GLOBAL(RCT2_ADDRESS_PICKEDUP_PEEP_SPRITE, sint32) = -1;
@ -1109,15 +1063,9 @@ void window_staff_overview_tool_update(){
}
/* rct2: 0x006BDFC3 */
void window_staff_overview_tool_down(){
short widgetIndex;
rct_window* w;
short x, y;
window_tool_get_registers(w, widgetIndex, x, y);
if (widgetIndex == WIDX_PICKUP){
void window_staff_overview_tool_down(rct_window* w, int widgetIndex, int x, int y)
{
if (widgetIndex == WIDX_PICKUP) {
int dest_x, dest_y;
rct_map_element *mapElement;
footpath_get_coordinates_from_pos(x, y + 16, &dest_x, &dest_y, NULL, &mapElement);
@ -1174,14 +1122,9 @@ void window_staff_overview_tool_down(){
}
/* rct2: 0x6BDFAE */
void window_staff_overview_tool_abort(){
short widgetIndex;
rct_window* w;
short x, y;
window_tool_get_registers(w, widgetIndex, x, y);
if (widgetIndex == WIDX_PICKUP){
void window_staff_overview_tool_abort(rct_window *w, int widgetIndex)
{
if (widgetIndex == WIDX_PICKUP) {
rct_peep* peep = GET_PEEP(w->number);
if (peep->state != PEEP_STATE_PICKED) return;
@ -1209,17 +1152,13 @@ void window_staff_overview_tool_abort(){
}
/* rct2:0x6BDFED */
void window_staff_overview_text_input(){
short widgetIndex;
rct_window *w;
char _cl;
uint32* text;
void window_staff_overview_text_input(rct_window *w, int widgetIndex, char *text)
{
if (widgetIndex != WIDX_RENAME)
return;
window_text_input_get_registers(w, widgetIndex, _cl, text);
if (widgetIndex != WIDX_RENAME)return;
if (!_cl) return;
if (text == NULL)
return;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_STRING_ID, uint16) = 2979;
@ -1229,10 +1168,8 @@ void window_staff_overview_text_input(){
}
/* rct2: 0x006BE5FC */
void window_staff_overview_viewport_init_wrapper(){
rct_window* w;
window_get_register(w);
void window_staff_overview_unknown_14(rct_window *w)
{
window_staff_viewport_init(w);
}
@ -1360,22 +1297,16 @@ void window_staff_options_mousedown(int widgetIndex, rct_window* w, rct_widget*
}
/** rct2: 0x6BE809 */
void window_staff_options_dropdown()
void window_staff_options_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
short widgetIndex, dropdownIndex;
rct_window* w;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
if (widgetIndex != WIDX_COSTUME_BTN) {
return;
}
if (dropdownIndex == -1)return;
if (dropdownIndex == -1)
return;
rct_peep* peep = GET_PEEP(w->number);
int costume = (RCT2_ADDRESS(0xF4391B, uint8)[dropdownIndex] - 4) | 0x80;
game_do_command(peep->x, (costume << 8) | 1, peep->y, w->number, GAME_COMMAND_SET_STAFF_ORDER, (int)peep, 0);
}

View File

@ -50,50 +50,50 @@ static rct_widget window_staff_fire_widgets[] = {
{ WIDGETS_END }
};
static void window_staff_fire_emptysub(){}
static void window_staff_fire_mouseup();
static void window_staff_fire_invalidate();
static void window_staff_fire_paint();
static void window_staff_fire_mouseup(rct_window *w, int widgetIndex);
static void window_staff_fire_invalidate(rct_window *w);
static void window_staff_fire_paint(rct_window *w, rct_drawpixelinfo *dpi);
//0x9A3F7C
static void* window_staff_fire_events[] = {
window_staff_fire_emptysub,
static rct_window_event_list window_staff_fire_events = {
NULL,
window_staff_fire_mouseup,
window_staff_fire_emptysub,
window_staff_fire_emptysub,
window_staff_fire_emptysub,
window_staff_fire_emptysub,
window_staff_fire_emptysub,
window_staff_fire_emptysub,
window_staff_fire_emptysub,
window_staff_fire_emptysub,
window_staff_fire_emptysub,
window_staff_fire_emptysub,
window_staff_fire_emptysub,
window_staff_fire_emptysub,
window_staff_fire_emptysub,
window_staff_fire_emptysub,
window_staff_fire_emptysub,
window_staff_fire_emptysub,
window_staff_fire_emptysub,
window_staff_fire_emptysub,
window_staff_fire_emptysub,
window_staff_fire_emptysub,
window_staff_fire_emptysub,
window_staff_fire_emptysub,
window_staff_fire_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_staff_fire_invalidate,
window_staff_fire_paint,
window_staff_fire_emptysub
NULL
};
/** Based off of rct2: 0x6C0A77 */
void window_staff_fire_prompt_open(rct_peep* peep){
void window_staff_fire_prompt_open(rct_peep* peep)
{
// Check if the confirm window already exists.
if (window_bring_to_front_by_number(WC_FIRE_PROMPT, peep->sprite_index)) {
return;
}
rct_window* w = window_create_centred(WW, WH, (uint32*)0x992C3C, 0x1A, WF_TRANSPARENT);
rct_window* w = window_create_centred(WW, WH, &window_staff_fire_events, WC_FIRE_PROMPT, WF_TRANSPARENT);
w->widgets = window_staff_fire_widgets;
w->enabled_widgets |= (1 << WIDX_CLOSE) | (1 << WIDX_YES) | (1 << WIDX_CANCEL);
@ -109,12 +109,8 @@ void window_staff_fire_prompt_open(rct_peep* peep){
*
* rct2: 0x006C0B40
*/
static void window_staff_fire_mouseup(){
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
static void window_staff_fire_mouseup(rct_window *w, int widgetIndex)
{
rct_peep* peep = &g_sprite_list[w->number].peep;
switch (widgetIndex){
@ -127,11 +123,8 @@ static void window_staff_fire_mouseup(){
}
}
static void window_staff_fire_invalidate()
static void window_staff_fire_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
}
@ -139,12 +132,8 @@ static void window_staff_fire_invalidate()
*
* rct2: 0x006C0AF2
*/
static void window_staff_fire_paint(){
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
static void window_staff_fire_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
window_draw_widgets(w, dpi);
rct_peep* peep = &g_sprite_list[w->number].peep;

View File

@ -43,49 +43,48 @@ enum {
bool _quick_fire_mode = false;
static void window_staff_list_emptysub() { }
static void window_staff_list_close();
static void window_staff_list_mouseup();
static void window_staff_list_resize();
static void window_staff_list_close(rct_window *w);
static void window_staff_list_mouseup(rct_window *w, int widgetIndex);
static void window_staff_list_resize(rct_window *w);
static void window_staff_list_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_staff_list_dropdown();
static void window_staff_list_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_staff_list_update(rct_window *w);
static void window_staff_list_tooldown();
static void window_staff_list_toolabort();
static void window_staff_list_scrollgetsize();
static void window_staff_list_scrollmousedown();
static void window_staff_list_scrollmouseover();
static void window_staff_list_tooltip();
static void window_staff_list_invalidate();
static void window_staff_list_paint();
static void window_staff_list_scrollpaint();
static void window_staff_list_tooldown(rct_window *w, int widgetIndex, int x, int y);
static void window_staff_list_toolabort(rct_window *w, int widgetIndex);
static void window_staff_list_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height);
static void window_staff_list_scrollmousedown(rct_window *w, int scrollIndex, int x, int y);
static void window_staff_list_scrollmouseover(rct_window *w, int scrollIndex, int x, int y);
static void window_staff_list_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId);
static void window_staff_list_invalidate(rct_window *w);
static void window_staff_list_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_staff_list_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex);
static void* window_staff_list_events[] = {
static rct_window_event_list window_staff_list_events = {
window_staff_list_close,
window_staff_list_mouseup,
window_staff_list_resize,
window_staff_list_mousedown,
window_staff_list_dropdown,
window_staff_list_emptysub,
NULL,
window_staff_list_update,
window_staff_list_emptysub,
window_staff_list_emptysub,
window_staff_list_emptysub,
(void*)0x006BD990, // window_staff_list_tooldown
window_staff_list_emptysub,
window_staff_list_emptysub,
NULL,
NULL,
NULL,
window_staff_list_tooldown,
NULL,
NULL,
window_staff_list_toolabort,
window_staff_list_emptysub,
NULL,
window_staff_list_scrollgetsize,
window_staff_list_scrollmousedown,
window_staff_list_emptysub,
NULL,
window_staff_list_scrollmouseover,
window_staff_list_emptysub,
window_staff_list_emptysub,
window_staff_list_emptysub,
NULL,
NULL,
NULL,
window_staff_list_tooltip,
window_staff_list_emptysub,
window_staff_list_emptysub,
NULL,
NULL,
window_staff_list_invalidate,
window_staff_list_paint,
window_staff_list_scrollpaint,
@ -151,7 +150,7 @@ void window_staff_list_open()
if (window != NULL)
return;
window = window_create_auto_pos(320, 270, (uint32*)window_staff_list_events, WC_STAFF_LIST, WF_10 | WF_RESIZABLE);
window = window_create_auto_pos(320, 270, &window_staff_list_events, WC_STAFF_LIST, WF_10 | WF_RESIZABLE);
window->widgets = window_staff_list_widgets;
window->enabled_widgets =
(1 << WIDX_STAFF_LIST_CLOSE) |
@ -188,11 +187,8 @@ void window_staff_list_cancel_tools(rct_window *w) {
/*
* rct2: 0x006BD9B1
**/
void window_staff_list_close() {
rct_window *w;
window_get_register(w);
void window_staff_list_close(rct_window *w)
{
window_staff_list_cancel_tools(w);
}
@ -200,14 +196,10 @@ void window_staff_list_close() {
*
* rct2: 0x006BD94C
*/
static void window_staff_list_mouseup()
static void window_staff_list_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
uint16 newStaffId;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_STAFF_LIST_CLOSE:
window_close(w);
@ -247,12 +239,8 @@ static void window_staff_list_mouseup()
*
* rct2: 0x006BDD5D
*/
static void window_staff_list_resize()
static void window_staff_list_resize(rct_window *w)
{
rct_window *w;
window_get_register(w);
w->min_width = 320;
w->min_height = 270;
if (w->width < w->min_width) {
@ -299,12 +287,8 @@ static void window_staff_list_mousedown(int widgetIndex, rct_window* w, rct_widg
*
* rct2: 0x006BD9A6
*/
static void window_staff_list_dropdown()
static void window_staff_list_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
rct_window* w;
short widgetIndex, dropdownIndex;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
if (widgetIndex == WIDX_STAFF_LIST_UNIFORM_COLOR_PICKER && dropdownIndex != -1) {
update_staff_colour(RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_STAFF_LIST_SELECTED_TAB, uint8), dropdownIndex);
}
@ -337,16 +321,21 @@ void window_staff_list_update(rct_window *w)
}
}
/**
*
* rct2: 0x006BD990
*/
static void window_staff_list_tooldown(rct_window *w, int widgetIndex, int x, int y)
{
RCT2_CALLPROC_X(0x006BD990, x, y, 0, widgetIndex, (int)w, 0, 0);
}
/**
*
* rct2: 0x006BD99B
*/
void window_staff_list_toolabort() {
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
void window_staff_list_toolabort(rct_window *w, int widgetIndex)
{
if (widgetIndex == WIDX_STAFF_LIST_SHOW_PATROL_AREA_BUTTON) {
hide_gridlines();
tool_cancel();
@ -359,13 +348,10 @@ void window_staff_list_toolabort() {
*
* rct2: 0x006BDBE6
*/
void window_staff_list_scrollgetsize()
void window_staff_list_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height)
{
int i, width, height, spriteIndex;
int i, spriteIndex;
rct_peep *peep;
rct_window *w;
window_get_register(w);
uint16 staffCount = 0;
FOR_ALL_PEEPS(spriteIndex, peep) {
@ -380,8 +366,8 @@ void window_staff_list_scrollgetsize()
window_invalidate(w);
}
height = staffCount * 10;
i = height - window_staff_list_widgets[WIDX_STAFF_LIST_LIST].bottom + window_staff_list_widgets[WIDX_STAFF_LIST_LIST].top + 21;
*height = staffCount * 10;
i = *height - window_staff_list_widgets[WIDX_STAFF_LIST_LIST].bottom + window_staff_list_widgets[WIDX_STAFF_LIST_LIST].top + 21;
if (i < 0)
i = 0;
if (i < w->scrolls[0].v_top) {
@ -389,22 +375,18 @@ void window_staff_list_scrollgetsize()
window_invalidate(w);
}
width = 420;
window_scrollsize_set_registers(width, height);
*width = 420;
}
/**
*
* rct2: 0x006BDC9A
*/
void window_staff_list_scrollmousedown() {
void window_staff_list_scrollmousedown(rct_window *w, int scrollIndex, int x, int y)
{
int i, spriteIndex;
short x, y, scrollIndex;
rct_window *w;
rct_peep *peep;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
i = y / 10;
FOR_ALL_PEEPS(spriteIndex, peep) {
if (peep->type != PEEP_TYPE_STAFF)
@ -429,12 +411,9 @@ void window_staff_list_scrollmousedown() {
*
* rct2: 0x006BDC6B
*/
void window_staff_list_scrollmouseover() {
void window_staff_list_scrollmouseover(rct_window *w, int scrollIndex, int x, int y)
{
int i;
short x, y, scrollIndex;
rct_window *w;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
i = y / 10;
if (i != RCT2_GLOBAL(RCT2_ADDRESS_STAFF_HIGHLIGHTED_INDEX, short)) {
@ -447,7 +426,7 @@ void window_staff_list_scrollmouseover() {
*
* rct2: 0x006BDC90
*/
void window_staff_list_tooltip()
void window_staff_list_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId)
{
RCT2_GLOBAL(0x013CE952, uint16) = STR_LIST;
}
@ -456,11 +435,8 @@ void window_staff_list_tooltip()
*
* rct2: 0x006BD477
*/
void window_staff_list_invalidate()
void window_staff_list_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
int pressed_widgets = w->pressed_widgets & 0xFFFFFF0F;
@ -497,13 +473,10 @@ void window_staff_list_invalidate()
*
* rct2: 0x006BD533
*/
void window_staff_list_paint() {
void window_staff_list_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
int i;
uint8 selectedTab;
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
// Widgets
window_draw_widgets(w, dpi);
@ -594,17 +567,13 @@ void window_staff_list_paint() {
*
* rct2: 0x006BD785
*/
void window_staff_list_scrollpaint()
void window_staff_list_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
{
int spriteIndex, y, i, staffOrderIcon_x, staffOrders, staffOrderSprite;
uint32 argument_1, argument_2;
uint8 selectedTab;
rct_window *w;
rct_drawpixelinfo *dpi;
rct_peep *peep;
window_paint_get_registers(w, dpi);
gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, ((char*)0x0141FC48)[w->colours[1] * 8]);
y = 0;

View File

@ -53,44 +53,43 @@ static rct_widget window_text_input_widgets[] = {
{ WIDGETS_END }
};
static void window_text_input_emptysub(){}
static void window_text_input_mouseup();
static void window_text_input_paint();
static void window_text_input_close(rct_window *w);
static void window_text_input_mouseup(rct_window *w, int widgetIndex);
static void window_text_input_update7(rct_window *w);
static void window_text_input_text(int key, rct_window* w);
static void window_text_input_update7();
static void window_text_input_close();
static void window_text_input_invalidate();
static void window_text_input_invalidate(rct_window *w);
static void window_text_input_paint(rct_window *w, rct_drawpixelinfo *dpi);
//0x9A3F7C
static void* window_text_input_events[] = {
static rct_window_event_list window_text_input_events = {
window_text_input_close,
window_text_input_mouseup,
window_text_input_emptysub,
window_text_input_emptysub,
window_text_input_emptysub,
window_text_input_emptysub,
window_text_input_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
window_text_input_update7,
window_text_input_emptysub,
window_text_input_emptysub,
window_text_input_emptysub,
window_text_input_emptysub,
window_text_input_emptysub,
window_text_input_emptysub,
window_text_input_emptysub,
window_text_input_emptysub,
window_text_input_emptysub,
window_text_input_emptysub,
window_text_input_emptysub,
window_text_input_text,
window_text_input_emptysub,
window_text_input_emptysub,
window_text_input_emptysub,
window_text_input_emptysub,
window_text_input_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_text_input_invalidate,
window_text_input_paint,
window_text_input_emptysub
NULL
};
int input_text_description;
@ -137,7 +136,7 @@ void window_text_input_open(rct_window* call_w, int call_widget, rct_string_id t
rct_window* w = window_create_centred(
WW,
height,
(uint32*)window_text_input_events,
&window_text_input_events,
WC_TEXTINPUT,
WF_STICK_TO_FRONT
);
@ -198,7 +197,7 @@ void window_text_input_raw_open(rct_window* call_w, int call_widget, rct_string_
rct_window* w = window_create_centred(
WW,
height,
(uint32*)window_text_input_events,
&window_text_input_events,
WC_TEXTINPUT,
WF_STICK_TO_FRONT
);
@ -225,14 +224,11 @@ void window_text_input_raw_open(rct_window* call_w, int call_widget, rct_string_
/**
*
*/
static void window_text_input_mouseup(){
short widgetIndex;
rct_window *w;
static void window_text_input_mouseup(rct_window *w, int widgetIndex)
{
rct_window *calling_w;
window_widget_get_registers(w, widgetIndex);
calling_w = window_find_by_number(calling_class, calling_number);
switch (widgetIndex){
case WIDX_CANCEL:
case WIDX_CLOSE:
@ -256,12 +252,8 @@ static void window_text_input_mouseup(){
/**
*
*/
static void window_text_input_paint(){
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
static void window_text_input_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
window_draw_widgets(w, dpi);
int y = w->y + 25;
@ -329,9 +321,8 @@ static void window_text_input_paint(){
}
}
static void window_text_input_text(int key, rct_window* w){
void window_text_input_key(rct_window* w, int key)
{
int text = key;
char new_char = platform_scancode_to_rct_keycode(0xFF&key);
@ -349,12 +340,8 @@ static void window_text_input_text(int key, rct_window* w){
window_invalidate(w);
}
void window_text_input_update7()
void window_text_input_update7(rct_window *w)
{
rct_window* w;
window_get_register(w);
rct_window* calling_w = window_find_by_number(calling_class, calling_number);
// If the calling window is closed then close the text
// input window.
@ -368,18 +355,15 @@ void window_text_input_update7()
window_invalidate(w);
}
static void window_text_input_close()
static void window_text_input_close(rct_window *w)
{
// Make sure that we take it out of the text input
// mode otherwise problems may occur.
platform_stop_text_input();
}
static void window_text_input_invalidate(){
rct_window* w;
window_get_register(w);
static void window_text_input_invalidate(rct_window *w)
{
// Work out the existing size of the window
char wrapped_string[512];
strcpy(wrapped_string, text_input);

View File

@ -49,49 +49,47 @@ enum {
WINDOW_THEMES_TAB_COUNT
} WINDOW_THEMES_TAB;
static void window_themes_emptysub() { }
static void window_themes_close();
static void window_themes_mouseup();
static void window_themes_resize();
static void window_themes_mouseup(rct_window *w, int widgetIndex);
static void window_themes_resize(rct_window *w);
static void window_themes_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_themes_dropdown();
static void window_themes_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_themes_update(rct_window *w);
static void window_themes_scrollgetsize();
static void window_themes_scrollmousedown();
static void window_themes_scrollmouseover();
static void window_themes_textinput();
static void window_themes_tooltip();
static void window_themes_invalidate();
static void window_themes_paint();
static void window_themes_scrollpaint();
static void window_themes_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height);
static void window_themes_scrollmousedown(rct_window *w, int scrollIndex, int x, int y);
static void window_themes_scrollmouseover(rct_window *w, int scrollIndex, int x, int y);
static void window_themes_textinput(rct_window *w, int widgetIndex, char *text);
static void window_themes_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId);
static void window_themes_invalidate(rct_window *w);
static void window_themes_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_themes_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex);
static void window_themes_draw_tab_images(rct_drawpixelinfo *dpi, rct_window *w);
static void* window_themes_events[] = {
window_themes_close,
static rct_window_event_list window_themes_events = {
NULL,
window_themes_mouseup,
window_themes_resize,
window_themes_mousedown,
window_themes_dropdown,
window_themes_emptysub,
NULL,
window_themes_update,
window_themes_emptysub,
window_themes_emptysub,
window_themes_emptysub,
window_themes_emptysub,
window_themes_emptysub,
window_themes_emptysub,
window_themes_emptysub,
window_themes_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_themes_scrollgetsize,
window_themes_scrollmousedown,
window_themes_emptysub,
NULL,
window_themes_scrollmouseover,
window_themes_textinput,
window_themes_emptysub,
window_themes_emptysub,
NULL,
NULL,
window_themes_tooltip,
window_themes_emptysub,
window_themes_emptysub,
NULL,
NULL,
window_themes_invalidate,
window_themes_paint,
window_themes_scrollpaint,
@ -370,7 +368,7 @@ void window_themes_open()
if (window != NULL)
return;
window = window_create_auto_pos(320, 107, (uint32*)window_themes_events, WC_THEMES, WF_10 | WF_RESIZABLE);
window = window_create_auto_pos(320, 107, &window_themes_events, WC_THEMES, WF_10 | WF_RESIZABLE);
window->widgets = window_themes_widgets;
window->enabled_widgets =
(1 << WIDX_THEMES_CLOSE) |
@ -405,19 +403,8 @@ void window_themes_open()
window->max_height = 107;
}
void window_themes_close() {
rct_window *w;
window_get_register(w);
}
static void window_themes_mouseup()
static void window_themes_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_THEMES_CLOSE:
window_close(w);
@ -444,12 +431,8 @@ static void window_themes_mouseup()
}
}
static void window_themes_resize()
static void window_themes_resize(rct_window *w)
{
rct_window *w;
window_get_register(w);
if (_selected_tab == WINDOW_THEMES_TAB_SETTINGS) {
w->min_width = 320;
w->min_height = 107;
@ -607,12 +590,8 @@ static void window_themes_mousedown(int widgetIndex, rct_window* w, rct_widget*
}
}
static void window_themes_dropdown()
static void window_themes_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
rct_window* w;
short widgetIndex, dropdownIndex;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
switch (widgetIndex) {
case WIDX_THEMES_LIST:
if (dropdownIndex != -1) {
@ -647,11 +626,8 @@ void window_themes_update(rct_window *w)
}
void window_themes_scrollgetsize() {
rct_window *w;
window_get_register(w);
void window_themes_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height)
{
if (_selected_tab == WINDOW_THEMES_TAB_SETTINGS || _selected_tab == WINDOW_THEMES_TAB_FEATURES)
return;
@ -664,25 +640,12 @@ void window_themes_scrollgetsize() {
window_invalidate(w);
}
#ifdef _MSC_VER
__asm mov ecx, 420
#else
__asm__("mov ecx, 420 ");
#endif
#ifdef _MSC_VER
__asm mov edx, scrollHeight
#else
__asm__("mov edx, %[scrollHeight] " : [scrollHeight] "+m" (scrollHeight));
#endif
*width = 420;
*height = scrollHeight;
}
void window_themes_scrollmousedown() {
short x, y, scrollIndex;
rct_window *w;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
void window_themes_scrollmousedown(rct_window *w, int scrollIndex, int x, int y)
{
if (y / _row_height < get_colour_scheme_tab_count()) {
int y2 = y % _row_height;
_color_index_1 = y / _row_height;
@ -720,26 +683,15 @@ void window_themes_scrollmousedown() {
}
}
void window_themes_scrollmouseover() {
short x, y, scrollIndex;
rct_window *w;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
void window_themes_scrollmouseover(rct_window *w, int scrollIndex, int x, int y)
{
//if (_selected_tab == WINDOW_THEMES_TAB_SETTINGS)
// return;
}
static void window_themes_textinput()
static void window_themes_textinput(rct_window *w, int widgetIndex, char *text)
{
rct_window *w;
short widgetIndex;
uint8 result;
char *text;
window_textinput_get_registers(w, widgetIndex, result, text);
if (!result || text[0] == 0)
if (text == NULL || text[0] == 0)
return;
switch (widgetIndex) {
@ -772,16 +724,13 @@ static void window_themes_textinput()
}
}
void window_themes_tooltip()
void window_themes_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId)
{
RCT2_GLOBAL(0x013CE952, uint16) = STR_LIST;
}
void window_themes_invalidate()
void window_themes_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
int pressed_widgets = w->pressed_widgets & 0xFFFFE00F;
@ -854,12 +803,8 @@ void window_themes_invalidate()
}
}
void window_themes_paint() {
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
void window_themes_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
// Widgets
window_draw_widgets(w, dpi);
window_themes_draw_tab_images(dpi, w);
@ -890,13 +835,9 @@ void window_themes_paint() {
*
* rct2: 0x006BD785
*/
void window_themes_scrollpaint()
void window_themes_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
{
int y;
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
if (_selected_tab == WINDOW_THEMES_TAB_SETTINGS || _selected_tab == WINDOW_THEMES_TAB_FEATURES)
return;

View File

@ -53,45 +53,44 @@ static int window_tile_inspector_tile_x;
static int window_tile_inspector_tile_y;
static int window_tile_inspector_item_count;
static void window_tile_inspector_emptysub() { }
static void window_tile_inspector_close();
static void window_tile_inspector_tool_update();
static void window_tile_inspector_tool_down();
static void window_tile_inspector_tool_abort();
static void window_tile_inspector_scrollgetsize();
static void window_tile_inspector_scrollmouseover();
static void window_tile_inspector_mouseup();
static void window_tile_inspector_resize();
static void window_tile_inspector_invalidate();
static void window_tile_inspector_paint();
static void window_tile_inspector_scrollpaint();
static void window_tile_inspector_close(rct_window *w);
static void window_tile_inspector_mouseup(rct_window *w, int widgetIndex);
static void window_tile_inspector_resize(rct_window *w);
static void window_tile_inspector_tool_update(rct_window* w, int widgetIndex, int x, int y);
static void window_tile_inspector_tool_down(rct_window* w, int widgetIndex, int x, int y);
static void window_tile_inspector_tool_abort(rct_window *w, int widgetIndex);
static void window_tile_inspector_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height);
static void window_tile_inspector_scrollmouseover(rct_window *w, int scrollIndex, int x, int y);
static void window_tile_inspector_invalidate(rct_window *w);
static void window_tile_inspector_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_tile_inspector_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex);
static void* window_tile_inspector_events[] = {
static rct_window_event_list window_tile_inspector_events = {
window_tile_inspector_close,
window_tile_inspector_mouseup,
window_tile_inspector_resize,
window_tile_inspector_emptysub,
window_tile_inspector_emptysub,
window_tile_inspector_emptysub,
window_tile_inspector_emptysub,
window_tile_inspector_emptysub,
window_tile_inspector_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_tile_inspector_tool_update,
window_tile_inspector_tool_down,
window_tile_inspector_emptysub,
window_tile_inspector_emptysub,
NULL,
NULL,
window_tile_inspector_tool_abort,
window_tile_inspector_emptysub,
NULL,
window_tile_inspector_scrollgetsize,
window_tile_inspector_emptysub,
window_tile_inspector_emptysub,
NULL,
NULL,
window_tile_inspector_scrollmouseover,
window_tile_inspector_emptysub,
window_tile_inspector_emptysub,
window_tile_inspector_emptysub,
window_tile_inspector_emptysub,
window_tile_inspector_emptysub,
window_tile_inspector_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_tile_inspector_invalidate,
window_tile_inspector_paint,
window_tile_inspector_scrollpaint
@ -111,7 +110,7 @@ void window_tile_inspector_open()
29,
WW,
WH,
(uint32*)window_tile_inspector_events,
&window_tile_inspector_events,
WC_TILE_INSPECTOR,
WF_RESIZABLE
);
@ -133,18 +132,13 @@ void window_tile_inspector_open()
tool_set(window, WIDX_BACKGROUND, 12);
}
static void window_tile_inspector_close()
static void window_tile_inspector_close(rct_window *w)
{
tool_cancel();
}
static void window_tile_inspector_mouseup()
static void window_tile_inspector_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -152,12 +146,8 @@ static void window_tile_inspector_mouseup()
}
}
static void window_tile_inspector_resize()
static void window_tile_inspector_resize(rct_window *w)
{
rct_window *w;
window_get_register(w);
w->min_width = WW;
w->min_height = MIN_WH;
if (w->width < w->min_width) {
@ -170,17 +160,14 @@ static void window_tile_inspector_resize()
}
}
static void window_tile_inspector_tool_update()
static void window_tile_inspector_tool_update(rct_window* w, int widgetIndex, int x, int y)
{
short widgetIndex;
rct_window *w;
short x, y;
int direction;
short mapX, mapY;
window_tool_get_registers(w, widgetIndex, x, y);
map_invalidate_selection_rect();
RCT2_GLOBAL(RCT2_ADDRESS_MAP_SELECTION_FLAGS, uint16) &= ~(1 << 0);
screen_pos_to_map_pos(&x, &y, &direction);
screen_pos_to_map_pos(&mapX, &mapY, &direction);
if (x == (short)0x8000) {
return;
@ -197,15 +184,12 @@ static void window_tile_inspector_tool_update()
}
static void window_tile_inspector_tool_down()
static void window_tile_inspector_tool_down(rct_window* w, int widgetIndex, int x, int y)
{
short widgetIndex;
rct_window* w;
short x, y;
int direction;
short mapX, mapY;
window_tool_get_registers(w, widgetIndex, x, y);
screen_pos_to_map_pos(&x, &y, &direction);
screen_pos_to_map_pos(&mapX, &mapY, &direction);
if (x == (short)0x8000) {
return;
@ -226,43 +210,24 @@ static void window_tile_inspector_tool_down()
window_invalidate(w);
}
static void window_tile_inspector_tool_abort()
static void window_tile_inspector_tool_abort(rct_window *w, int widgetIndex)
{
rct_window *w;
short widgetIndex, x, y;
window_tool_get_registers(w, widgetIndex, x, y);
window_close(w);
}
static void window_tile_inspector_scrollgetsize()
static void window_tile_inspector_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height)
{
rct_window *w;
int width, height;
window_get_register(w);
height = window_tile_inspector_item_count * 11;
width = WW - 30;
window_scrollsize_set_registers(width, height);
*width = WW - 30;
*height = window_tile_inspector_item_count * 11;
}
static void window_tile_inspector_scrollmouseover()
static void window_tile_inspector_scrollmouseover(rct_window *w, int scrollIndex, int x, int y)
{
short x, y, scrollIndex;
rct_window *w;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
window_invalidate(w);
}
static void window_tile_inspector_invalidate()
static void window_tile_inspector_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
window_tile_inspector_widgets[WIDX_BACKGROUND].right = w->width - 1;
window_tile_inspector_widgets[WIDX_BACKGROUND].bottom = w->height - 1;
window_tile_inspector_widgets[WIDX_CLOSE].left = w->width - 13;
@ -272,15 +237,11 @@ static void window_tile_inspector_invalidate()
window_tile_inspector_widgets[WIDX_SCROLL].bottom = w->height - 30;
}
static void window_tile_inspector_paint()
static void window_tile_inspector_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
int x, y;
rct_window *w;
rct_drawpixelinfo *dpi;
char buffer[256];
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
x = w->x + 20;
@ -313,15 +274,11 @@ static void window_tile_inspector_paint()
}
static void window_tile_inspector_scrollpaint()
static void window_tile_inspector_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
{
int x = 15, y = 11 * (window_tile_inspector_item_count - 1), i = 0;
rct_window *w;
rct_drawpixelinfo *dpi;
char buffer[256];
window_paint_get_registers(w, dpi);
if (window_tile_inspector_tile_x == -1)
return;

View File

@ -102,50 +102,48 @@ static rct_widget window_title_command_editor_widgets[] = {
{ WIDGETS_END },
};
static void window_title_command_editor_emptysub() { }
static void window_title_command_editor_close();
static void window_title_command_editor_mouseup();
static void window_title_command_editor_mouseup(rct_window *w, int widgetIndex);
static void window_title_command_editor_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_title_command_editor_dropdown();
static void window_title_command_editor_update();
static void window_title_command_editor_invalidate();
static void window_title_command_editor_paint();
static void window_title_command_editor_textinput();
static void window_title_command_editor_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_title_command_editor_update(rct_window *w);
static void window_title_command_editor_invalidate(rct_window *w);
static void window_title_command_editor_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_title_command_editor_textinput(rct_window *w, int widgetIndex, char *text);
static void window_title_command_editor_inputsize(rct_window *w);
static int get_command_info_index(int index);
static TITLE_COMMAND_ORDER get_command_info(int index);
static rct_xy16 get_location();
static uint8 get_zoom();
static void* window_title_command_editor_events[] = {
window_title_command_editor_close,
static rct_window_event_list window_title_command_editor_events = {
NULL,
window_title_command_editor_mouseup,
window_title_command_editor_emptysub,
NULL,
window_title_command_editor_mousedown,
window_title_command_editor_dropdown,
window_title_command_editor_emptysub,
NULL,
window_title_command_editor_update,
window_title_command_editor_emptysub,
window_title_command_editor_emptysub,
window_title_command_editor_emptysub,
window_title_command_editor_emptysub,
window_title_command_editor_emptysub,
window_title_command_editor_emptysub,
window_title_command_editor_emptysub,
window_title_command_editor_emptysub,
window_title_command_editor_emptysub,
window_title_command_editor_emptysub,
window_title_command_editor_emptysub,
window_title_command_editor_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_title_command_editor_textinput,
window_title_command_editor_emptysub,
window_title_command_editor_emptysub,
window_title_command_editor_emptysub,
window_title_command_editor_emptysub,
window_title_command_editor_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
window_title_command_editor_invalidate,
window_title_command_editor_paint,
window_title_command_editor_emptysub
NULL
};
static int get_command_info_index(int index)
@ -206,7 +204,7 @@ void window_title_command_editor_open(int index, bool insert)
window = window_create_centred(
WW,
WH,
(uint32*)window_title_command_editor_events,
&window_title_command_editor_events,
WC_TITLE_COMMAND_EDITOR,
WF_STICK_TO_FRONT
);
@ -248,22 +246,12 @@ void window_title_command_editor_open(int index, bool insert)
}
}
static void window_title_command_editor_close()
static void window_title_command_editor_mouseup(rct_window *w, int widgetIndex)
{
rct_window *w;
window_get_register(w);
}
static void window_title_command_editor_mouseup()
{
rct_window *w, *title_editor_w;
short widgetIndex;
rct_window *title_editor_w;
rct_xy16 mapCoord;
uint8 zoom;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
case WIDX_CANCEL:
@ -378,13 +366,9 @@ static void window_title_command_editor_mousedown(int widgetIndex, rct_window* w
}
}
static void window_title_command_editor_dropdown()
static void window_title_command_editor_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
rct_window* w;
short widgetIndex, dropdownIndex;
rct_xy16 mapCoord;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
if (dropdownIndex == -1)
return;
@ -441,22 +425,17 @@ static void window_title_command_editor_dropdown()
}
}
static void window_title_command_editor_textinput()
static void window_title_command_editor_textinput(rct_window *w, int widgetIndex, char *text)
{
uint8 result;
short widgetIndex;
rct_window *w;
char *text, * end;
char *end;
int value;
window_textinput_get_registers(w, widgetIndex, result, text);
value = strtol(widgetIndex != WIDX_TEXTBOX_Y ? textbox1Buffer : textbox2Buffer, &end, 10);
if (value < 0) value = 0;
if (value > 255) value = 255;
switch (widgetIndex) {
case WIDX_TEXTBOX_FULL:
if (!result) {
if (text == NULL) {
if (*end == '\0') {
if (command.command == TITLE_SCRIPT_ROTATE || command.command == TITLE_SCRIPT_ZOOM) {
if (value > 3) value = 3;
@ -474,7 +453,7 @@ static void window_title_command_editor_textinput()
}
break;
case WIDX_TEXTBOX_X:
if (!result) {
if (text == NULL) {
if (*end == '\0')
command.x = (uint8)value;
_itoa(command.x, textbox1Buffer, 10);
@ -485,7 +464,7 @@ static void window_title_command_editor_textinput()
}
break;
case WIDX_TEXTBOX_Y:
if (!result) {
if (text == NULL) {
if (*end == '\0')
command.y = (uint8)value;
_itoa(command.y, textbox2Buffer, 10);
@ -507,11 +486,8 @@ static void window_title_command_editor_update(rct_window *w)
}
}
static void window_title_command_editor_invalidate()
static void window_title_command_editor_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update_by_class(w, WC_TITLE_EDITOR);
window_title_command_editor_widgets[WIDX_TEXTBOX_FULL].type = WWT_EMPTY;
@ -547,13 +523,8 @@ static void window_title_command_editor_invalidate()
w->disabled_widgets &= ~(1 << WIDX_GET);
}
static void window_title_command_editor_paint()
static void window_title_command_editor_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
gfx_draw_string_left(dpi, 5432, NULL, w->colours[1], w->x + WS, w->y + BY - 14);

View File

@ -46,49 +46,48 @@ enum {
WINDOW_TITLE_EDITOR_TAB_COUNT
} WINDOW_TITLE_EDITOR_TAB;
static void window_title_editor_emptysub() { }
static void window_title_editor_close();
static void window_title_editor_mouseup();
static void window_title_editor_resize();
static void window_title_editor_close(rct_window *w);
static void window_title_editor_mouseup(rct_window *w, int widgetIndex);
static void window_title_editor_resize(rct_window *w);
static void window_title_editor_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_title_editor_dropdown();
static void window_title_editor_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_title_editor_update(rct_window *w);
static void window_title_editor_scrollgetsize();
static void window_title_editor_scrollmousedown();
static void window_title_editor_scrollmouseover();
static void window_title_editor_textinput();
static void window_title_editor_tooltip();
static void window_title_editor_invalidate();
static void window_title_editor_paint();
static void window_title_editor_scrollpaint();
static void window_title_editor_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height);
static void window_title_editor_scrollmousedown(rct_window *w, int scrollIndex, int x, int y);
static void window_title_editor_scrollmouseover(rct_window *w, int scrollIndex, int x, int y);
static void window_title_editor_textinput(rct_window *w, int widgetIndex, char *text);
static void window_title_editor_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId);
static void window_title_editor_invalidate(rct_window *w);
static void window_title_editor_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_title_editor_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex);
static void window_title_editor_draw_tab_images(rct_drawpixelinfo *dpi, rct_window *w);
static void* window_title_editor_events[] = {
static rct_window_event_list window_title_editor_events = {
window_title_editor_close,
window_title_editor_mouseup,
window_title_editor_resize,
window_title_editor_mousedown,
window_title_editor_dropdown,
window_title_editor_emptysub,
NULL,
window_title_editor_update,
window_title_editor_emptysub,
window_title_editor_emptysub,
window_title_editor_emptysub,
window_title_editor_emptysub,
window_title_editor_emptysub,
window_title_editor_emptysub,
window_title_editor_emptysub,
window_title_editor_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_title_editor_scrollgetsize,
window_title_editor_scrollmousedown,
window_title_editor_emptysub,
NULL,
window_title_editor_scrollmouseover,
window_title_editor_textinput,
window_title_editor_emptysub,
window_title_editor_emptysub,
NULL,
NULL,
window_title_editor_tooltip,
window_title_editor_emptysub,
window_title_editor_emptysub,
NULL,
NULL,
window_title_editor_invalidate,
window_title_editor_paint,
window_title_editor_scrollpaint,
@ -236,7 +235,7 @@ void window_title_editor_open(int tab)
if (window != NULL)
return;
window = window_create_auto_pos(WW, WH2, (uint32*)window_title_editor_events, WC_TITLE_EDITOR, WF_10 | WF_RESIZABLE);
window = window_create_auto_pos(WW, WH2, &window_title_editor_events, WC_TITLE_EDITOR, WF_10 | WF_RESIZABLE);
window->widgets = window_title_editor_widgets;
window->enabled_widgets =
(1 << WIDX_TITLE_EDITOR_CLOSE) |
@ -285,10 +284,9 @@ void window_title_editor_open(int tab)
}
void window_title_editor_close() {
rct_window *w, *command_editor_w, *load_save_w;
window_get_register(w);
void window_title_editor_close(rct_window *w)
{
rct_window *command_editor_w, *load_save_w;
// Close the related windows
command_editor_w = window_find_by_class(WC_TITLE_COMMAND_EDITOR);
@ -299,14 +297,11 @@ void window_title_editor_close() {
window_close(load_save_w);
}
static void window_title_editor_mouseup()
static void window_title_editor_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
char path[MAX_PATH];
char separator = platform_get_path_separator();
int defaultPreset, playing, inTitle, i, commandEditorOpen;
window_widget_get_registers(w, widgetIndex);
defaultPreset = (gCurrentTitleSequence < TITLE_SEQUENCE_DEFAULT_PRESETS);
playing = (gCurrentTitleSequence == gCurrentPreviewTitleSequence) && ((RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_TITLE_DEMO) == SCREEN_FLAGS_TITLE_DEMO);
@ -499,12 +494,8 @@ static void window_title_editor_mouseup()
window_error_open(5398, 5399);
}
static void window_title_editor_resize()
{
rct_window *w;
window_get_register(w);
static void window_title_editor_resize(rct_window *w)
{
if (w->selected_tab == WINDOW_TITLE_EDITOR_TAB_PRESETS) {
w->min_width = WW;
w->min_height = WH2;
@ -602,13 +593,8 @@ static void window_title_editor_mousedown(int widgetIndex, rct_window* w, rct_wi
}
}
static void window_title_editor_dropdown()
{
rct_window* w;
short widgetIndex, dropdownIndex;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
static void window_title_editor_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
if (dropdownIndex == -1)
return;
@ -634,13 +620,10 @@ void window_title_editor_update(rct_window *w)
widget_invalidate(w, WIDX_TITLE_EDITOR_PRESETS_TAB + w->selected_tab);
}
void window_title_editor_scrollgetsize()
void window_title_editor_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height)
{
int i, width, height;
int i;
uint16 lineCount;
rct_window *w;
window_get_register(w);
lineCount = 1;
if (w->selected_tab == WINDOW_TITLE_EDITOR_TAB_SAVES)
@ -648,8 +631,8 @@ void window_title_editor_scrollgetsize()
else if (w->selected_tab == WINDOW_TITLE_EDITOR_TAB_SCRIPT)
lineCount = gConfigTitleSequences.presets[gCurrentTitleSequence].num_commands;
height = lineCount * ROW_HEIGHT;
i = height - window_title_editor_widgets[WIDX_TITLE_EDITOR_LIST].bottom + window_title_editor_widgets[WIDX_TITLE_EDITOR_LIST].top + 21;
*height = lineCount * ROW_HEIGHT;
i = *height - window_title_editor_widgets[WIDX_TITLE_EDITOR_LIST].bottom + window_title_editor_widgets[WIDX_TITLE_EDITOR_LIST].top + 21;
if (i < 0)
i = 0;
if (i < w->scrolls[0].v_top) {
@ -657,16 +640,12 @@ void window_title_editor_scrollgetsize()
window_invalidate(w);
}
width = SCROLL_WIDTH;
window_scrollsize_set_registers(width, height);
*width = SCROLL_WIDTH;
}
void window_title_editor_scrollmousedown() {
void window_title_editor_scrollmousedown(rct_window *w, int scrollIndex, int x, int y)
{
int index;
short x, y, scrollIndex;
rct_window *w;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
index = y / ROW_HEIGHT;
w->selected_list_item = -1;
@ -686,13 +665,10 @@ void window_title_editor_scrollmousedown() {
}
}
void window_title_editor_scrollmouseover() {
void window_title_editor_scrollmouseover(rct_window *w, int scrollIndex, int x, int y)
{
int index;
short x, y, scrollIndex;
rct_window *w;
sint16 oldHighlightedIndex;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
index = y / ROW_HEIGHT;
switch (w->selected_tab) {
@ -713,16 +689,9 @@ void window_title_editor_scrollmouseover() {
//}
}
static void window_title_editor_textinput()
static void window_title_editor_textinput(rct_window *w, int widgetIndex, char *text)
{
rct_window *w;
short widgetIndex;
uint8 result;
char *text;
window_textinput_get_registers(w, widgetIndex, result, text);
if (!result || text[0] == 0)
if (text == NULL || text[0] == 0)
return;
switch (widgetIndex) {
@ -769,16 +738,13 @@ static void window_title_editor_textinput()
}
}
void window_title_editor_tooltip()
void window_title_editor_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId)
{
RCT2_GLOBAL(0x013CE952, uint16) = STR_LIST;
}
void window_title_editor_invalidate()
void window_title_editor_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
int pressed_widgets = w->pressed_widgets & 0xFFFFFF8F;
@ -883,12 +849,8 @@ void window_title_editor_invalidate()
w->disabled_widgets &= ~((1 << WIDX_TITLE_EDITOR_REPLAY) | (1 << WIDX_TITLE_EDITOR_STOP) | (1 << WIDX_TITLE_EDITOR_SKIP) | (1 << WIDX_TITLE_EDITOR_SKIP_TO));
}
void window_title_editor_paint() {
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
void window_title_editor_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
// Widgets
window_draw_widgets(w, dpi);
window_title_editor_draw_tab_images(dpi, w);
@ -919,16 +881,12 @@ void window_title_editor_paint() {
}
}
void window_title_editor_scrollpaint()
void window_title_editor_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
{
rct_window *w;
rct_drawpixelinfo *dpi;
char buffer[256];
bool selected, hover, error, inTitle;
int y, x, x2, width;
window_paint_get_registers(w, dpi);
gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, ((char*)0x0141FC48)[w->colours[1] * 8]);
title_sequence *title = &gConfigTitleSequences.presets[gCurrentTitleSequence];

View File

@ -32,40 +32,39 @@ static rct_widget window_title_exit_widgets[] = {
{ WIDGETS_END },
};
static void window_title_exit_emptysub() {}
static void window_title_exit_paint();
static void window_title_exit_mouseup();
static void window_title_exit_invalidate();
static void window_title_exit_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_title_exit_mouseup(rct_window *w, int widgetIndex);
static void window_title_exit_invalidate(rct_window *w);
static void* window_title_exit_events[] = {
window_title_exit_emptysub,
static rct_window_event_list window_title_exit_events = {
NULL,
window_title_exit_mouseup,
window_title_exit_emptysub,
window_title_exit_emptysub,
window_title_exit_emptysub,
window_title_exit_emptysub,
window_title_exit_emptysub,
window_title_exit_emptysub,
window_title_exit_emptysub,
window_title_exit_emptysub,
window_title_exit_emptysub,
window_title_exit_emptysub,
window_title_exit_emptysub,
window_title_exit_emptysub,
window_title_exit_emptysub,
window_title_exit_emptysub,
window_title_exit_emptysub,
window_title_exit_emptysub,
window_title_exit_emptysub,
window_title_exit_emptysub,
window_title_exit_emptysub,
window_title_exit_emptysub,
window_title_exit_emptysub,
window_title_exit_emptysub,
window_title_exit_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_title_exit_invalidate,
window_title_exit_paint,
window_title_exit_emptysub
NULL
};
/**
@ -79,7 +78,7 @@ void window_title_exit_open()
window = window_create(
RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, uint16) - 40, RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_HEIGHT, uint16) - 64,
40, 64,
(uint32*)window_title_exit_events,
&window_title_exit_events,
WC_TITLE_EXIT,
WF_STICK_TO_BACK | WF_TRANSPARENT
);
@ -92,13 +91,8 @@ void window_title_exit_open()
*
* rct2: 0x0066B83C
*/
static void window_title_exit_mouseup()
static void window_title_exit_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
if (RCT2_GLOBAL(RCT2_ADDRESS_RUN_INTRO_TICK_PART, uint8) != 0)
return;
@ -111,19 +105,12 @@ static void window_title_exit_mouseup()
*
* rct2: 0x0066B836
*/
static void window_title_exit_paint()
static void window_title_exit_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
}
static void window_title_exit_invalidate()
static void window_title_exit_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
}

View File

@ -29,38 +29,37 @@ static rct_widget window_title_logo_widgets[] = {
{ WIDGETS_END },
};
static void window_title_logo_emptysub() {}
static void window_title_logo_paint();
static void window_title_logo_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void* window_title_logo_events[] = {
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
window_title_logo_emptysub,
static rct_window_event_list window_title_logo_events = {
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_title_logo_paint,
window_title_logo_emptysub
NULL
};
static void window_title_logo_draw_expansion_packs(rct_drawpixelinfo *dpi);
@ -86,7 +85,7 @@ void window_title_logo_open()
0,
200,
106 + (10 * packs),
(uint32*)window_title_logo_events,
&window_title_logo_events,
WC_TITLE_LOGO,
WF_STICK_TO_BACK | WF_TRANSPARENT
);
@ -101,13 +100,8 @@ void window_title_logo_open()
*
* rct2: 0x0066B872
*/
static void window_title_logo_paint()
static void window_title_logo_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
// gfx_draw_sprite(dpi, SPR_MENU_LOGO, w->x, w->y, 0);
int x = 2, y = 2;
gfx_draw_sprite(dpi, SPR_G2_LOGO, w->x + x, w->y + y, 0);

View File

@ -45,43 +45,42 @@ static rct_widget window_title_menu_widgets[] = {
{ WIDGETS_END },
};
static void window_title_menu_emptysub() { }
static void window_title_menu_mouseup();
static void window_title_menu_mouseup(rct_window *w, int widgetIndex);
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();
static void window_title_menu_invalidate();
static void window_title_menu_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_title_menu_cursor(rct_window *w, int widgetIndex, int x, int y, int *cursorId);
static void window_title_menu_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_title_menu_invalidate(rct_window *w);
static void* window_title_menu_events[] = {
window_title_menu_emptysub,
static rct_window_event_list window_title_menu_events = {
NULL,
window_title_menu_mouseup,
window_title_menu_emptysub,
NULL,
window_title_menu_mousedown,
window_title_menu_dropdown,
window_title_menu_emptysub,
window_title_menu_emptysub,
window_title_menu_emptysub,
window_title_menu_emptysub,
window_title_menu_emptysub,
window_title_menu_emptysub,
window_title_menu_emptysub,
window_title_menu_emptysub,
window_title_menu_emptysub,
window_title_menu_emptysub,
window_title_menu_emptysub,
window_title_menu_emptysub,
window_title_menu_emptysub,
window_title_menu_emptysub,
window_title_menu_emptysub,
window_title_menu_emptysub,
window_title_menu_emptysub,
window_title_menu_emptysub,
window_title_menu_unknown17,
window_title_menu_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_title_menu_cursor,
NULL,
window_title_menu_invalidate,
window_title_menu_paint,
window_title_menu_emptysub
NULL
};
/**
@ -95,7 +94,7 @@ void window_title_menu_open()
window = window_create(
(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, uint16) - 328) / 2, RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_HEIGHT, uint16) - 142,
328, 82,
(uint32*)window_title_menu_events,
&window_title_menu_events,
WC_TITLE_MENU,
WF_STICK_TO_BACK | WF_TRANSPARENT
);
@ -104,17 +103,15 @@ void window_title_menu_open()
window_init_scroll_widgets(window);
}
static void window_title_menu_mouseup()
static void window_title_menu_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window* w;
window_widget_get_registers(w, widgetIndex);
if (widgetIndex == WIDX_START_NEW_GAME) {
switch (widgetIndex) {
case WIDX_START_NEW_GAME:
window_scenarioselect_open();
} else if (widgetIndex == WIDX_CONTINUE_SAVED_GAME) {
break;
case WIDX_CONTINUE_SAVED_GAME:
game_do_command(0, 1, 0, 0, GAME_COMMAND_LOAD_OR_QUIT, 0, 0);
break;
}
}
@ -148,13 +145,8 @@ static void window_title_menu_mousedown(int widgetIndex, rct_window*w, rct_widge
}
}
static void window_title_menu_dropdown()
static void window_title_menu_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
short widgetIndex, dropdownIndex;
rct_window *w;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
if (widgetIndex == WIDX_SHOW_TUTORIAL) {
tutorial_start(dropdownIndex);
} else if (widgetIndex == WIDX_GAME_TOOLS) {
@ -175,24 +167,17 @@ static void window_title_menu_dropdown()
}
}
static void window_title_menu_unknown17()
static void window_title_menu_cursor(rct_window *w, int widgetIndex, int x, int y, int *cursorId)
{
RCT2_GLOBAL(RCT2_ADDRESS_TOOLTIP_TIMEOUT, sint16) = 2000;
}
static void window_title_menu_paint()
static void window_title_menu_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
}
static void window_title_menu_invalidate()
static void window_title_menu_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
}

View File

@ -31,40 +31,39 @@ static rct_widget window_title_options_widgets[] = {
{ WIDGETS_END },
};
static void window_title_options_emptysub() {}
static void window_title_options_paint();
static void window_title_options_mouseup();
static void window_title_options_invalidate();
static void window_title_options_mouseup(rct_window *w, int widgetIndex);
static void window_title_options_invalidate(rct_window *w);
static void window_title_options_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void* window_title_options_events[] = {
window_title_options_emptysub,
static rct_window_event_list window_title_options_events = {
NULL,
window_title_options_mouseup,
window_title_options_emptysub,
window_title_options_emptysub,
window_title_options_emptysub,
window_title_options_emptysub,
window_title_options_emptysub,
window_title_options_emptysub,
window_title_options_emptysub,
window_title_options_emptysub,
window_title_options_emptysub,
window_title_options_emptysub,
window_title_options_emptysub,
window_title_options_emptysub,
window_title_options_emptysub,
window_title_options_emptysub,
window_title_options_emptysub,
window_title_options_emptysub,
window_title_options_emptysub,
window_title_options_emptysub,
window_title_options_emptysub,
window_title_options_emptysub,
window_title_options_emptysub,
window_title_options_emptysub,
window_title_options_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_title_options_invalidate,
window_title_options_paint,
window_title_options_emptysub
NULL
};
/**
@ -77,7 +76,7 @@ void window_title_options_open()
window = window_create(
RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, uint16) - 80, 0,
80, 12,
(uint32*)window_title_options_events,
&window_title_options_events,
WC_TITLE_OPTIONS,
WF_STICK_TO_BACK | WF_TRANSPARENT
);
@ -86,13 +85,8 @@ void window_title_options_open()
window_init_scroll_widgets(window);
}
static void window_title_options_mouseup()
static void window_title_options_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
if (RCT2_GLOBAL(RCT2_ADDRESS_RUN_INTRO_TICK_PART, uint8) != 0)
return;
@ -100,19 +94,12 @@ static void window_title_options_mouseup()
window_options_open();
}
static void window_title_options_paint()
static void window_title_options_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
}
static void window_title_options_invalidate()
static void window_title_options_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
}

View File

@ -58,42 +58,41 @@ static rct_widget window_scenarioselect_widgets[] = {
static void window_scenarioselect_init_tabs();
static void window_scenarioselect_emptysub() { }
static void window_scenarioselect_mouseup();
static void window_scenarioselect_mouseup(rct_window *w, int widgetIndex);
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();
static void window_scenarioselect_invalidate();
static void window_scenarioselect_paint();
static void window_scenarioselect_scrollpaint();
static void window_scenarioselect_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height);
static void window_scenarioselect_scrollmousedown(rct_window *w, int scrollIndex, int x, int y);
static void window_scenarioselect_scrollmouseover(rct_window *w, int scrollIndex, int x, int y);
static void window_scenarioselect_invalidate(rct_window *w);
static void window_scenarioselect_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_scenarioselect_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex);
static void* window_scenarioselect_events[] = {
window_scenarioselect_emptysub,
static rct_window_event_list window_scenarioselect_events = {
NULL,
window_scenarioselect_mouseup,
window_scenarioselect_emptysub,
NULL,
window_scenarioselect_mousedown,
window_scenarioselect_emptysub,
window_scenarioselect_emptysub,
window_scenarioselect_emptysub,
window_scenarioselect_emptysub,
window_scenarioselect_emptysub,
window_scenarioselect_emptysub,
window_scenarioselect_emptysub,
window_scenarioselect_emptysub,
window_scenarioselect_emptysub,
window_scenarioselect_emptysub,
window_scenarioselect_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_scenarioselect_scrollgetsize,
window_scenarioselect_scrollmousedown,
window_scenarioselect_emptysub,
NULL,
window_scenarioselect_scrollmouseover,
window_scenarioselect_emptysub,
window_scenarioselect_emptysub,
window_scenarioselect_emptysub,
window_scenarioselect_emptysub,
window_scenarioselect_emptysub,
window_scenarioselect_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_scenarioselect_invalidate,
window_scenarioselect_paint,
window_scenarioselect_scrollpaint
@ -116,7 +115,7 @@ void window_scenarioselect_open()
window = window_create_centred(
610,
334,
(uint32*)window_scenarioselect_events,
&window_scenarioselect_events,
WC_SCENARIO_SELECT,
WF_10
);
@ -164,13 +163,8 @@ static void window_scenarioselect_init_tabs()
}
}
static void window_scenarioselect_mouseup()
static void window_scenarioselect_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w;
window_widget_get_registers(w, widgetIndex);
if (widgetIndex == WIDX_CLOSE)
window_close(w);
}
@ -188,37 +182,27 @@ static void window_scenarioselect_mousedown(int widgetIndex, rct_window*w, rct_w
}
}
static void window_scenarioselect_scrollgetsize()
static void window_scenarioselect_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height)
{
int i, width, height;
rct_window *w;
int i;
rct_scenario_basic *scenario;
window_get_register(w);
width = 0;
height = 0;
*height = 0;
for (i = 0; i < gScenarioListCount; i++) {
scenario = &gScenarioList[i];
if (scenario->category != w->selected_tab)
continue;
if (scenario->flags & SCENARIO_FLAGS_VISIBLE)
height += 24;
*height += 24;
}
window_scrollsize_set_registers(width, height);
}
/* rct2: 0x6780FE */
static void window_scenarioselect_scrollmousedown()
static void window_scenarioselect_scrollmousedown(rct_window *w, int scrollIndex, int x, int y)
{
int i;
short x, y, scrollIndex;
rct_window *w;
rct_scenario_basic *scenario;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
for (i = 0; i < gScenarioListCount; i++) {
scenario = &gScenarioList[i];
if (scenario->category != w->selected_tab)
@ -237,15 +221,11 @@ static void window_scenarioselect_scrollmousedown()
}
/* rct2: 0x678162 */
static void window_scenarioselect_scrollmouseover()
static void window_scenarioselect_scrollmouseover(rct_window *w, int scrollIndex, int x, int y)
{
int i;
short x, y, scrollIndex;
rct_window *w;
rct_scenario_basic *scenario, *selected;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
selected = NULL;
for (i = 0; i < gScenarioListCount; i++) {
scenario = &gScenarioList[i];
@ -267,27 +247,20 @@ static void window_scenarioselect_scrollmouseover()
}
}
static void window_scenarioselect_invalidate()
static void window_scenarioselect_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
w->pressed_widgets &= ~(0x10 | 0x20 | 0x40 | 0x80 | 0x100);
w->pressed_widgets |= 1LL << (w->selected_tab + 4);
}
static void window_scenarioselect_paint()
static void window_scenarioselect_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
int i, x, y, format;
rct_window *w;
rct_drawpixelinfo *dpi;
rct_widget *widget;
rct_scenario_basic *scenario;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
format = (theme_get_preset()->features.rct1_scenario_font) ? 5138 : 1193;
@ -342,15 +315,11 @@ static void window_scenarioselect_paint()
}
}
static void window_scenarioselect_scrollpaint()
static void window_scenarioselect_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
{
int i, y, colour, highlighted, highlighted_format, unhighlighted_format;
rct_window *w;
rct_drawpixelinfo *dpi;
rct_scenario_basic *scenario;
window_paint_get_registers(w, dpi);
colour = ((char*)0x0141FC48)[w->colours[1] * 8];
colour = (colour << 24) | (colour << 16) | (colour << 8) | colour;
gfx_clear(dpi, colour);

View File

@ -33,40 +33,39 @@ static rct_widget window_tooltip_widgets[] = {
{ WIDGETS_END },
};
static void window_tooltip_emptysub() { }
static void window_tooltip_onclose();
static void window_tooltip_onclose(rct_window *w);
static void window_tooltip_update(rct_window *w);
static void window_tooltip_paint();
static void window_tooltip_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void* window_tooltip_events[] = {
static rct_window_event_list window_tooltip_events = {
window_tooltip_onclose,
window_tooltip_emptysub,
window_tooltip_emptysub,
window_tooltip_emptysub,
window_tooltip_emptysub,
window_tooltip_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
window_tooltip_update,
window_tooltip_emptysub,
window_tooltip_emptysub,
window_tooltip_emptysub,
window_tooltip_emptysub,
window_tooltip_emptysub,
window_tooltip_emptysub,
window_tooltip_emptysub,
window_tooltip_emptysub,
window_tooltip_emptysub,
window_tooltip_emptysub,
window_tooltip_emptysub,
window_tooltip_emptysub,
window_tooltip_emptysub,
window_tooltip_emptysub,
window_tooltip_emptysub,
window_tooltip_emptysub,
window_tooltip_emptysub,
window_tooltip_emptysub,
window_tooltip_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_tooltip_paint,
window_tooltip_emptysub
NULL
};
void window_tooltip_reset(int x, int y)
@ -151,7 +150,7 @@ void window_tooltip_open(rct_window *widgetWindow, int widgetIndex, int x, int y
y,
width,
height,
(uint32*)window_tooltip_events,
&window_tooltip_events,
WC_TOOLTIP,
WF_TRANSPARENT | WF_STICK_TO_FRONT
);
@ -177,7 +176,7 @@ void window_tooltip_close()
*
* rct2: 0x006EA578
*/
static void window_tooltip_onclose()
static void window_tooltip_onclose(rct_window *w)
{
RCT2_GLOBAL(0x009BC3B0, uint8) = 0;
}
@ -196,13 +195,8 @@ static void window_tooltip_update(rct_window *w)
*
* rct2: 0x006EA41D
*/
static void window_tooltip_paint()
static void window_tooltip_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
int left = w->x;
int top = w->y;
int right = w->x + w->width - 1;

View File

@ -171,47 +171,46 @@ static rct_widget window_top_toolbar_widgets[] = {
{ WIDGETS_END },
};
static void window_top_toolbar_emptysub() { }
static void window_top_toolbar_mouseup();
static void window_top_toolbar_mouseup(rct_window *w, int widgetIndex);
static void window_top_toolbar_mousedown(int widgetIndex, rct_window*w, rct_widget* widget);
static void window_top_toolbar_dropdown();
static void window_top_toolbar_tool_update();
static void window_top_toolbar_tool_down();
static void window_top_toolbar_tool_drag();
static void window_top_toolbar_tool_up();
static void window_top_toolbar_tool_abort();
static void window_top_toolbar_invalidate();
static void window_top_toolbar_paint();
static void window_top_toolbar_dropdown(rct_window *w, int widgetIndex, int dropdownIndex);
static void window_top_toolbar_tool_update(rct_window* w, int widgetIndex, int x, int y);
static void window_top_toolbar_tool_down(rct_window* w, int widgetIndex, int x, int y);
static void window_top_toolbar_tool_drag(rct_window* w, int widgetIndex, int x, int y);
static void window_top_toolbar_tool_up(rct_window* w, int widgetIndex, int x, int y);
static void window_top_toolbar_tool_abort(rct_window *w, int widgetIndex);
static void window_top_toolbar_invalidate(rct_window *w);
static void window_top_toolbar_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void* window_top_toolbar_events[] = {
window_top_toolbar_emptysub,
static rct_window_event_list window_top_toolbar_events = {
NULL,
window_top_toolbar_mouseup,
window_top_toolbar_emptysub,
NULL,
window_top_toolbar_mousedown,
window_top_toolbar_dropdown,
window_top_toolbar_emptysub,
window_top_toolbar_emptysub,
window_top_toolbar_emptysub,
window_top_toolbar_emptysub, // check if editor versions are significantly different...
NULL,
NULL,
NULL,
NULL, // check if editor versions are significantly different...
window_top_toolbar_tool_update, // editor: 0x0066fB0E
window_top_toolbar_tool_down, // editor: 0x0066fB5C
window_top_toolbar_tool_drag, // editor: 0x0066fB37
window_top_toolbar_tool_up, // editor: 0x0066fC44 (Exactly the same)
window_top_toolbar_tool_abort, // editor: 0x0066fA74 (Exactly the same)
window_top_toolbar_emptysub,
window_top_toolbar_emptysub,
window_top_toolbar_emptysub,
window_top_toolbar_emptysub,
window_top_toolbar_emptysub,
window_top_toolbar_emptysub,
window_top_toolbar_emptysub,
window_top_toolbar_emptysub,
window_top_toolbar_emptysub,
window_top_toolbar_emptysub,
window_top_toolbar_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_top_toolbar_invalidate,
window_top_toolbar_paint,
window_top_toolbar_emptysub
NULL
};
void top_toolbar_init_view_menu(rct_window *window, rct_widget *widget);
@ -244,7 +243,7 @@ void window_top_toolbar_open()
window = window_create(
0, 0,
RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, uint16), 28,
(uint32*)window_top_toolbar_events,
&window_top_toolbar_events,
WC_TOP_TOOLBAR,
WF_STICK_TO_FRONT | WF_TRANSPARENT | WF_5
);
@ -257,12 +256,9 @@ void window_top_toolbar_open()
*
* rct2: 0x0066C957
*/
static void window_top_toolbar_mouseup()
static void window_top_toolbar_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w, *mainWindow;
window_widget_get_registers(w, widgetIndex);
rct_window *mainWindow;
switch (widgetIndex) {
case WIDX_PAUSE:
@ -433,13 +429,8 @@ static void window_top_toolbar_mousedown(int widgetIndex, rct_window*w, rct_widg
*
* rct2: 0x0066C9EA
*/
static void window_top_toolbar_dropdown()
static void window_top_toolbar_dropdown(rct_window *w, int widgetIndex, int dropdownIndex)
{
short widgetIndex, dropdownIndex;
rct_window* w;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
switch (widgetIndex) {
case WIDX_FILE_MENU:
if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & (SCREEN_FLAGS_TRACK_DESIGNER | SCREEN_FLAGS_TRACK_MANAGER))
@ -520,13 +511,11 @@ static void window_top_toolbar_dropdown()
*
* rct2: 0x0066C810
*/
static void window_top_toolbar_invalidate()
static void window_top_toolbar_invalidate(rct_window *w)
{
int i, x, enabledWidgets, widgetIndex, widgetWidth, firstAlignment;
rct_window *w;
rct_widget *widget;
window_get_register(w);
colour_scheme_update(w);
// Enable / disable buttons
@ -671,13 +660,9 @@ static void window_top_toolbar_invalidate()
*
* rct2: 0x0066C8EC
*/
static void window_top_toolbar_paint()
static void window_top_toolbar_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
int x, y, imgId;
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
@ -2428,15 +2413,9 @@ void top_toolbar_tool_update_scenery(sint16 x, sint16 y){
*
* rct2: 0x0066CB25
*/
static void window_top_toolbar_tool_update()
static void window_top_toolbar_tool_update(rct_window* w, int widgetIndex, int x, int y)
{
short widgetIndex;
rct_window *w;
short x, y;
window_tool_get_registers(w, widgetIndex, x, y);
switch (widgetIndex){
switch (widgetIndex) {
case WIDX_CLEAR_SCENERY:
top_toolbar_tool_update_scenery_clear(x, y);
break;
@ -2458,13 +2437,8 @@ static void window_top_toolbar_tool_update()
/**
* rct2: 0x0066CB73
*/
static void window_top_toolbar_tool_down(){
short widgetIndex;
rct_window* w;
short x, y;
window_tool_get_registers(w, widgetIndex, x, y);
static void window_top_toolbar_tool_down(rct_window* w, int widgetIndex, int x, int y)
{
switch (widgetIndex){
case WIDX_CLEAR_SCENERY:
if (!RCT2_GLOBAL(RCT2_ADDRESS_MAP_SELECTION_FLAGS, uint16) & (1 << 0))
@ -2669,14 +2643,8 @@ void window_top_toolbar_water_tool_drag(short x, short y)
*
* rct2: 0x0066CB4E
*/
static void window_top_toolbar_tool_drag()
static void window_top_toolbar_tool_drag(rct_window* w, int widgetIndex, int x, int y)
{
short widgetIndex;
rct_window *w;
short x, y;
window_tool_get_registers(w, widgetIndex, x, y);
switch (widgetIndex){
case WIDX_CLEAR_SCENERY:
if (window_find_by_class(WC_ERROR) != NULL)
@ -2733,13 +2701,8 @@ static void window_top_toolbar_tool_drag()
*
* rct2: 0x0066CC5B
*/
static void window_top_toolbar_tool_up()
{
short widgetIndex, x, y;
rct_window *w;
window_tool_get_registers(w, widgetIndex, x, y);
static void window_top_toolbar_tool_up(rct_window* w, int widgetIndex, int x, int y)
{
switch (widgetIndex) {
case WIDX_LAND:
map_invalidate_selection_rect();
@ -2763,13 +2726,8 @@ static void window_top_toolbar_tool_up()
*
* rct2: 0x0066CA58
*/
static void window_top_toolbar_tool_abort()
static void window_top_toolbar_tool_abort(rct_window *w, int widgetIndex)
{
short widgetIndex, x, y;
rct_window* w;
window_tool_get_registers(w, widgetIndex, x, y);
switch (widgetIndex) {
case WIDX_LAND:
case WIDX_WATER:

View File

@ -54,46 +54,45 @@ static rct_widget window_track_list_widgets[] = {
{ WIDGETS_END },
};
static void window_track_list_emptysub() { }
static void window_track_list_close();
static void window_track_list_mouseup();
static void window_track_list_scrollgetsize();
static void window_track_list_scrollmousedown();
static void window_track_list_scrollmouseover();
static void window_track_list_tooltip();
static void window_track_list_invalidate();
static void window_track_list_paint();
static void window_track_list_scrollpaint();
static void window_track_list_close(rct_window *w);
static void window_track_list_mouseup(rct_window *w, int widgetIndex);
static void window_track_list_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height);
static void window_track_list_scrollmousedown(rct_window *w, int scrollIndex, int x, int y);
static void window_track_list_scrollmouseover(rct_window *w, int scrollIndex, int x, int y);
static void window_track_list_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId);
static void window_track_list_invalidate(rct_window *w);
static void window_track_list_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_track_list_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex);
static void* window_track_list_events[] = {
(uint32*)window_track_list_close,
(uint32*)window_track_list_mouseup,
(uint32*)window_track_list_emptysub,
(uint32*)window_track_list_emptysub,
(uint32*)window_track_list_emptysub,
(uint32*)window_track_list_emptysub,
(uint32*)window_track_list_emptysub,
(uint32*)window_track_list_emptysub,
(uint32*)window_track_list_emptysub,
(uint32*)window_track_list_emptysub,
(uint32*)window_track_list_emptysub,
(uint32*)window_track_list_emptysub,
(uint32*)window_track_list_emptysub,
(uint32*)window_track_list_emptysub,
(uint32*)window_track_list_emptysub,
(uint32*)window_track_list_scrollgetsize,
(uint32*)window_track_list_scrollmousedown,
(uint32*)window_track_list_emptysub,
(uint32*)window_track_list_scrollmouseover,
(uint32*)window_track_list_emptysub,
(uint32*)window_track_list_emptysub,
(uint32*)window_track_list_emptysub,
(uint32*)window_track_list_tooltip,
(uint32*)window_track_list_emptysub,
(uint32*)window_track_list_emptysub,
(uint32*)window_track_list_invalidate,
(uint32*)window_track_list_paint,
(uint32*)window_track_list_scrollpaint
static rct_window_event_list window_track_list_events = {
window_track_list_close,
window_track_list_mouseup,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_track_list_scrollgetsize,
window_track_list_scrollmousedown,
NULL,
window_track_list_scrollmouseover,
NULL,
NULL,
NULL,
window_track_list_tooltip,
NULL,
NULL,
window_track_list_invalidate,
window_track_list_paint,
window_track_list_scrollpaint
};
ride_list_item _window_track_list_item;
@ -133,7 +132,7 @@ void window_track_list_open(ride_list_item item)
y,
600,
400,
(uint32*)window_track_list_events,
&window_track_list_events,
WC_TRACK_DESIGN_LIST,
0
);
@ -233,7 +232,7 @@ static int window_track_list_get_list_item_index_from_position(int x, int y)
*
* rct2: 0x006CFD76
*/
static void window_track_list_close()
static void window_track_list_close(rct_window *w)
{
free(RCT2_GLOBAL(RCT2_ADDRESS_TRACK_DESIGN_CACHE, void*));
}
@ -242,13 +241,8 @@ static void window_track_list_close()
*
* rct2: 0x006CFA31
*/
static void window_track_list_mouseup()
static void window_track_list_mouseup(rct_window *w, int widgetIndex)
{
rct_window *w;
short widgetIndex;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -279,32 +273,22 @@ static void window_track_list_mouseup()
*
* rct2: 0x006CFAB0
*/
static void window_track_list_scrollgetsize()
static void window_track_list_scrollgetsize(rct_window *w, int scrollIndex, int *width, int *height)
{
rct_window *w;
int width, height;
uint8 *trackDesignItem, *trackDesignList = RCT2_ADDRESS(RCT2_ADDRESS_TRACK_LIST, uint8);
window_get_register(w);
width = 0;
height = RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_TRACK_MANAGER ? 0 : 10;
*height = RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_TRACK_MANAGER ? 0 : 10;
for (trackDesignItem = trackDesignList; *trackDesignItem != 0; trackDesignItem += 128)
height += 10;
window_scrollsize_set_registers(width, height);
*height += 10;
}
/**
*
* rct2: 0x006CFB39
*/
static void window_track_list_scrollmousedown()
static void window_track_list_scrollmousedown(rct_window *w, int scrollIndex, int x, int y)
{
rct_window *w;
short i, x, y, scrollIndex;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
int i;
if (w->track_list.var_484 & 1)
return;
@ -321,12 +305,9 @@ static void window_track_list_scrollmousedown()
*
* rct2: 0x006CFAD7
*/
static void window_track_list_scrollmouseover()
static void window_track_list_scrollmouseover(rct_window *w, int scrollIndex, int x, int y)
{
rct_window *w;
short i, x, y, scrollIndex;
window_scrollmouse_get_registers(w, scrollIndex, x, y);
int i;
if (w->track_list.var_484 & 1)
return;
@ -344,7 +325,7 @@ static void window_track_list_scrollmouseover()
*
* rct2: 0x006CFD6C
*/
static void window_track_list_tooltip()
static void window_track_list_tooltip(rct_window* w, int widgetIndex, rct_string_id *stringId)
{
RCT2_GLOBAL(0x013CE952, uint16) = STR_LIST;
}
@ -353,13 +334,11 @@ static void window_track_list_tooltip()
*
* rct2: 0x006CF2D6
*/
static void window_track_list_invalidate()
static void window_track_list_invalidate(rct_window *w)
{
rct_window *w;
rct_ride_type *entry;
rct_string_id stringId;
window_get_register(w);
colour_scheme_update(w);
entry = GET_RIDE_ENTRY(_window_track_list_item.entry_index);
@ -398,10 +377,8 @@ static void window_track_list_invalidate()
*
* rct2: 0x006CF387
*/
static void window_track_list_paint()
static void window_track_list_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
rct_widget *widget;
rct_track_design *trackDesign = NULL;
uint8 *image, *trackDesignList = RCT2_ADDRESS(RCT2_ADDRESS_TRACK_LIST, uint8);
@ -410,8 +387,6 @@ static void window_track_list_paint()
int trackIndex, x, y, colour, gForces, airTime;
rct_g1_element tmpElement, *subsituteElement;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
trackIndex = w->track_list.var_482;
@ -584,16 +559,12 @@ static void window_track_list_paint()
*
* rct2: 0x006CF8CD
*/
static void window_track_list_scrollpaint()
static void window_track_list_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex)
{
rct_window *w;
rct_drawpixelinfo *dpi;
rct_string_id stringId, stringId2;
int i, x, y, colour;
uint8 *trackDesignItem, *trackDesignList = RCT2_ADDRESS(RCT2_ADDRESS_TRACK_LIST, uint8);
window_paint_get_registers(w, dpi);
colour = RCT2_GLOBAL(0x00141FC48 + (w->colours[0] * 8), uint8);
colour = (colour << 24) | (colour << 16) | (colour << 8) | colour;
gfx_clear(dpi, colour);

View File

@ -61,82 +61,78 @@ static rct_widget window_track_delete_prompt_widgets[] = {
#pragma region Events
static void window_track_manage_emptysub() { }
static void window_track_manage_close(rct_window *w);
static void window_track_manage_mouseup(rct_window *w, int widgetIndex);
static void window_track_manage_textinput(rct_window *w, int widgetIndex, char *text);
static void window_track_manage_invalidate(rct_window *w);
static void window_track_manage_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_track_manage_close();
static void window_track_manage_mouseup();
static void window_track_manage_textinput();
static void window_track_manage_invalidate();
static void window_track_manage_paint();
static void window_track_delete_prompt_emptysub() { }
static void window_track_delete_prompt_mouseup();
static void window_track_delete_prompt_invalidate();
static void window_track_delete_prompt_paint();
static void window_track_delete_prompt_mouseup(rct_window *w, int widgetIndex);
static void window_track_delete_prompt_invalidate(rct_window *w);
static void window_track_delete_prompt_paint(rct_window *w, rct_drawpixelinfo *dpi);
// 0x009940EC
static void* window_track_manage_events[] = {
static rct_window_event_list window_track_manage_events = {
window_track_manage_close,
window_track_manage_mouseup,
window_track_manage_emptysub,
window_track_manage_emptysub,
window_track_manage_emptysub,
window_track_manage_emptysub,
window_track_manage_emptysub,
window_track_manage_emptysub,
window_track_manage_emptysub,
window_track_manage_emptysub,
window_track_manage_emptysub,
window_track_manage_emptysub,
window_track_manage_emptysub,
window_track_manage_emptysub,
window_track_manage_emptysub,
window_track_manage_emptysub,
window_track_manage_emptysub,
window_track_manage_emptysub,
window_track_manage_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_track_manage_textinput,
window_track_manage_emptysub,
window_track_manage_emptysub,
window_track_manage_emptysub,
window_track_manage_emptysub,
window_track_manage_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
window_track_manage_invalidate,
window_track_manage_paint,
window_track_manage_emptysub
NULL
};
// 0x0099415C
static void* window_track_delete_prompt_events[] = {
window_track_delete_prompt_emptysub,
static rct_window_event_list window_track_delete_prompt_events = {
NULL,
window_track_delete_prompt_mouseup,
window_track_delete_prompt_emptysub,
window_track_delete_prompt_emptysub,
window_track_delete_prompt_emptysub,
window_track_delete_prompt_emptysub,
window_track_delete_prompt_emptysub,
window_track_delete_prompt_emptysub,
window_track_delete_prompt_emptysub,
window_track_delete_prompt_emptysub,
window_track_delete_prompt_emptysub,
window_track_delete_prompt_emptysub,
window_track_delete_prompt_emptysub,
window_track_delete_prompt_emptysub,
window_track_delete_prompt_emptysub,
window_track_delete_prompt_emptysub,
window_track_delete_prompt_emptysub,
window_track_delete_prompt_emptysub,
window_track_delete_prompt_emptysub,
window_track_delete_prompt_emptysub,
window_track_delete_prompt_emptysub,
window_track_delete_prompt_emptysub,
window_track_delete_prompt_emptysub,
window_track_delete_prompt_emptysub,
window_track_delete_prompt_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_track_delete_prompt_invalidate,
window_track_delete_prompt_paint,
window_track_delete_prompt_emptysub
NULL
};
#pragma endregion
@ -156,7 +152,7 @@ void window_track_manage_open()
w = window_create_centred(
250,
44,
(uint32*)window_track_manage_events,
&window_track_manage_events,
WC_MANAGE_TRACK_DESIGN,
WF_STICK_TO_FRONT | WF_TRANSPARENT
);
@ -176,28 +172,23 @@ void window_track_manage_open()
*
* rct2: 0x006D364C
*/
static void window_track_manage_close()
static void window_track_manage_close(rct_window *w)
{
rct_window *w;
w = window_find_by_class(WC_TRACK_DESIGN_LIST);
if (w != NULL)
w->track_list.var_484 &= ~1;
rct_window *trackDesignListWindow = window_find_by_class(WC_TRACK_DESIGN_LIST);
if (trackDesignListWindow != NULL)
trackDesignListWindow->track_list.var_484 &= ~1;
}
/**
*
* rct2: 0x006D3523
*/
static void window_track_manage_mouseup()
static void window_track_manage_mouseup(rct_window *w, int widgetIndex)
{
uint8 *trackDesignList = (uint8*)0x00F441EC;
rct_window *w, *trackDesignListWindow;
short widgetIndex;
rct_window *trackDesignListWindow;
char *dst, *src;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -223,16 +214,9 @@ static void window_track_manage_mouseup()
*
* rct2: 0x006D3523
*/
static void window_track_manage_textinput()
static void window_track_manage_textinput(rct_window *w, int widgetIndex, char *text)
{
rct_window *w;
short widgetIndex;
uint8 result;
char *text;
window_textinput_get_registers(w, widgetIndex, result, text);
if (widgetIndex != WIDX_RENAME || !result)
if (widgetIndex != WIDX_RENAME || text == NULL)
return;
if (track_rename(text)) {
@ -243,11 +227,8 @@ static void window_track_manage_textinput()
}
}
static void window_track_manage_invalidate()
static void window_track_manage_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
}
@ -255,13 +236,8 @@ static void window_track_manage_invalidate()
*
* rct2: 0x006D3523
*/
static void window_track_manage_paint()
static void window_track_manage_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
}
@ -280,7 +256,7 @@ static void window_track_delete_prompt_open()
(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, uint16) - 44) / 2,
250,
74,
(uint32*)window_track_delete_prompt_events,
&window_track_delete_prompt_events,
WC_TRACK_DELETE_PROMPT,
WF_STICK_TO_FRONT
);
@ -297,13 +273,8 @@ static void window_track_delete_prompt_open()
*
* rct2: 0x006D3823
*/
static void window_track_delete_prompt_mouseup()
static void window_track_delete_prompt_mouseup(rct_window *w, int widgetIndex)
{
rct_window *w;
short widgetIndex;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
case WIDX_PROMPT_CANCEL:
@ -319,11 +290,8 @@ static void window_track_delete_prompt_mouseup()
}
}
static void window_track_delete_prompt_invalidate()
static void window_track_delete_prompt_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
}
@ -331,14 +299,10 @@ static void window_track_delete_prompt_invalidate()
*
* rct2: 0x006D37EE
*/
static void window_track_delete_prompt_paint()
static void window_track_delete_prompt_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
rct_string_id stringId;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
stringId = 3155;

View File

@ -56,46 +56,45 @@ static rct_widget window_track_place_widgets[] = {
{ WIDGETS_END },
};
static void window_track_place_emptysub() { }
static void window_track_place_close();
static void window_track_place_mouseup();
static void window_track_place_close(rct_window *w);
static void window_track_place_mouseup(rct_window *w, int widgetIndex);
static void window_track_place_update(rct_window *w);
static void window_track_place_toolupdate();
static void window_track_place_tooldown();
static void window_track_place_toolabort();
static void window_track_place_unknown14();
static void window_track_place_invalidate();
static void window_track_place_paint();
static void window_track_place_toolupdate(rct_window* w, int widgetIndex, int x, int y);
static void window_track_place_tooldown(rct_window* w, int widgetIndex, int x, int y);
static void window_track_place_toolabort(rct_window *w, int widgetIndex);
static void window_track_place_unknown14(rct_window *w);
static void window_track_place_invalidate(rct_window *w);
static void window_track_place_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void* window_track_place_events[] = {
static rct_window_event_list window_track_place_events = {
window_track_place_close,
window_track_place_mouseup,
window_track_place_emptysub,
window_track_place_emptysub,
window_track_place_emptysub,
window_track_place_emptysub,
NULL,
NULL,
NULL,
NULL,
window_track_place_update,
window_track_place_emptysub,
window_track_place_emptysub,
NULL,
NULL,
window_track_place_toolupdate,
window_track_place_tooldown,
window_track_place_emptysub,
window_track_place_emptysub,
NULL,
NULL,
window_track_place_toolabort,
window_track_place_emptysub,
window_track_place_emptysub,
window_track_place_emptysub,
window_track_place_emptysub,
window_track_place_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_track_place_unknown14,
window_track_place_emptysub,
window_track_place_emptysub,
window_track_place_emptysub,
window_track_place_emptysub,
window_track_place_emptysub,
NULL,
NULL,
NULL,
NULL,
window_track_place_invalidate,
window_track_place_paint,
window_track_place_emptysub
NULL
};
static uint8 *_window_track_place_mini_preview;
@ -381,7 +380,7 @@ void window_track_place_open()
29,
200,
124,
(uint32*)window_track_place_events,
&window_track_place_events,
WC_TRACK_DESIGN_PLACE,
0
);
@ -402,7 +401,7 @@ void window_track_place_open()
*
* rct2: 0x006D0119
*/
static void window_track_place_close()
static void window_track_place_close(rct_window *w)
{
window_track_place_clear_provisional();
viewport_set_visibility(0);
@ -416,13 +415,8 @@ static void window_track_place_close()
*
* rct2: 0x006CFEAC
*/
static void window_track_place_mouseup()
static void window_track_place_mouseup(rct_window *w, int widgetIndex)
{
rct_window *w;
short widgetIndex;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -463,96 +457,90 @@ static void window_track_place_update(rct_window *w)
*
* rct2: 0x006CFF2D
*/
static void window_track_place_toolupdate()
static void window_track_place_toolupdate(rct_window* w, int widgetIndex, int x, int y)
{
rct_window *w;
short widgetIndex, x, y;
int i, z;
int i;
short mapX, mapY, mapZ;
money32 cost;
uint8 rideIndex;
window_tool_get_registers(w, widgetIndex, x, y);
map_invalidate_map_selection_tiles();
RCT2_GLOBAL(RCT2_ADDRESS_MAP_SELECTION_FLAGS, uint16) &= ~7;
// Get the tool map position
sub_68A15E(x, y, &x, &y, NULL, NULL);
if (x == (short)0x8000) {
sub_68A15E(x, y, &mapX, &mapY, NULL, NULL);
if (mapX == (short)0x8000) {
window_track_place_clear_provisional();
return;
}
// Check if tool map position has changed since last update
if (x == _window_track_place_last_x && y == _window_track_place_last_y) {
sub_6D01B3(0, 0, x, y, 0);
if (mapX == _window_track_place_last_x && mapY == _window_track_place_last_y) {
sub_6D01B3(0, 0, mapX, mapY, 0);
return;
}
cost = MONEY32_UNDEFINED;
// Get base Z position
z = window_track_place_get_base_z(x, y);
mapZ = window_track_place_get_base_z(mapX, mapY);
if (RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) == 0 || gConfigCheat.build_in_pause_mode) {
window_track_place_clear_provisional();
// Try increasing Z until a feasible placement is found
for (i = 0; i < 7; i++) {
window_track_place_attempt_placement(x, y, z, 105, &cost, &rideIndex);
window_track_place_attempt_placement(mapX, mapY, mapZ, 105, &cost, &rideIndex);
if (cost != MONEY32_UNDEFINED) {
RCT2_GLOBAL(0x00F440EB, uint16) = rideIndex;
_window_track_place_last_valid_x = x;
_window_track_place_last_valid_y = y;
_window_track_place_last_valid_z = z;
_window_track_place_last_valid_x = mapX;
_window_track_place_last_valid_y = mapY;
_window_track_place_last_valid_z = mapZ;
_window_track_place_last_was_valid = 1;
break;
}
z += 8;
mapZ += 8;
}
}
_window_track_place_last_x = x;
_window_track_place_last_y = y;
_window_track_place_last_x = mapX;
_window_track_place_last_y = mapY;
if (cost != _window_track_place_last_cost) {
_window_track_place_last_cost = cost;
widget_invalidate(w, WIDX_PRICE);
}
sub_6D01B3(0, 0, x, y, z);
sub_6D01B3(0, 0, mapX, mapY, mapZ);
}
/**
*
* rct2: 0x006CFF34
*/
static void window_track_place_tooldown()
static void window_track_place_tooldown(rct_window* w, int widgetIndex, int x, int y)
{
rct_window *w;
short widgetIndex, x, y, z;
int i;
short mapX, mapY, mapZ;
money32 cost;
uint8 rideIndex;
window_tool_get_registers(w, widgetIndex, x, y);
window_track_place_clear_provisional();
map_invalidate_map_selection_tiles();
RCT2_GLOBAL(RCT2_ADDRESS_MAP_SELECTION_FLAGS, uint16) &= ~7;
sub_68A15E(x, y, &x, &y, NULL, NULL);
if (x == (short)0x8000)
sub_68A15E(x, y, &mapX, &mapY, NULL, NULL);
if (mapX == (short)0x8000)
return;
// Try increasing Z until a feasible placement is found
z = window_track_place_get_base_z(x, y);
mapZ = window_track_place_get_base_z(mapX, mapY);
for (i = 0; i < 7; i++) {
RCT2_GLOBAL(0x009A8C29, uint8) |= 1;
window_track_place_attempt_placement(x, y, z, 1, &cost, &rideIndex);
window_track_place_attempt_placement(mapX, mapY, mapZ, 1, &cost, &rideIndex);
RCT2_GLOBAL(0x009A8C29, uint8) &= ~1;
if (cost != MONEY32_UNDEFINED) {
window_close_by_class(WC_ERROR);
sound_play_panned(SOUND_PLACE_ITEM, 0x8001, x, y, z);
sound_play_panned(SOUND_PLACE_ITEM, 0x8001, mapX, mapY, mapZ);
RCT2_GLOBAL(0x00F440A7, uint8) = rideIndex;
if (RCT2_GLOBAL(0x00F4414E, uint8) & 1) {
@ -570,18 +558,18 @@ static void window_track_place_tooldown()
if (RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) == 827)
break;
z += 8;
mapZ += 8;
}
// Unable to build track
sound_play_panned(SOUND_ERROR, 0x8001, x, y, z);
sound_play_panned(SOUND_ERROR, 0x8001, mapX, mapY, mapZ);
}
/**
*
* rct2: 0x006D015C
*/
static void window_track_place_toolabort()
static void window_track_place_toolabort(rct_window *w, int widgetIndex)
{
window_track_place_clear_provisional();
}
@ -590,16 +578,13 @@ static void window_track_place_toolabort()
*
* rct2: 0x006CFF01
*/
static void window_track_place_unknown14()
static void window_track_place_unknown14(rct_window *w)
{
window_track_place_draw_mini_preview();
}
static void window_track_place_invalidate()
static void window_track_place_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
}
@ -607,14 +592,11 @@ static void window_track_place_invalidate()
*
* rct2: 0x006CFD9D
*/
static void window_track_place_paint()
static void window_track_place_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi, *clippedDpi;
rct_drawpixelinfo *clippedDpi;
rct_g1_element tmpElement, *subsituteElement;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
// Draw mini tile preview

View File

@ -57,42 +57,41 @@ static rct_widget window_viewport_widgets[] = {
{ WIDGETS_END },
};
static void window_viewport_empty(){}
static void window_viewport_mouseup();
static void window_viewport_resize();
static void window_viewport_mouseup(rct_window *w, int widgetIndex);
static void window_viewport_resize(rct_window *w);
static void window_viewport_update(rct_window *w);
static void window_viewport_invalidate();
static void window_viewport_paint();
static void window_viewport_invalidate(rct_window *w);
static void window_viewport_paint(rct_window *w, rct_drawpixelinfo *dpi);
void* window_viewport_events[] = {
window_viewport_empty,
static rct_window_event_list window_viewport_events = {
NULL,
window_viewport_mouseup,
window_viewport_resize,
window_viewport_empty,
window_viewport_empty,
window_viewport_empty,
NULL,
NULL,
NULL,
window_viewport_update,
window_viewport_empty,
window_viewport_empty,
window_viewport_empty,
window_viewport_empty,
window_viewport_empty,
window_viewport_empty,
window_viewport_empty,
window_viewport_empty,
window_viewport_empty,
window_viewport_empty,
window_viewport_empty,
window_viewport_empty,
window_viewport_empty,
window_viewport_empty,
window_viewport_empty,
window_viewport_empty,
window_viewport_empty,
window_viewport_empty,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_viewport_invalidate,
window_viewport_paint,
window_viewport_empty
NULL
};
static int _viewportNumber = 1;
@ -108,7 +107,7 @@ void window_viewport_open()
w = window_create_auto_pos(
INITIAL_WIDTH, INITIAL_HEIGHT,
(uint32*)window_viewport_events,
&window_viewport_events,
WC_VIEWPORT,
WF_RESIZABLE
);
@ -147,14 +146,11 @@ static void window_viewport_anchor_border_widgets(rct_window *w)
w->widgets[WIDX_CLOSE].right = w->width - 3;
}
static void window_viewport_mouseup()
static void window_viewport_mouseup(rct_window *w, int widgetIndex)
{
short widgetIndex;
rct_window *w, *mainWindow;
rct_window *mainWindow;
sint16 x, y;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
window_close(w);
@ -181,12 +177,8 @@ static void window_viewport_mouseup()
}
}
static void window_viewport_resize()
static void window_viewport_resize(rct_window *w)
{
rct_window *w;
window_get_register(w);
w->flags |= WF_RESIZABLE;
window_set_resize(w, 200, 200, 2000, 2000);
}
@ -208,14 +200,12 @@ static void window_viewport_update(rct_window *w)
//widget_invalidate(w, WIDX_VIEWPORT);
}
static void window_viewport_invalidate()
static void window_viewport_invalidate(rct_window *w)
{
rct_window *w;
rct_widget *viewportWidget;
rct_viewport *viewport;
int i;
window_get_register(w);
colour_scheme_update(w);
viewportWidget = &window_viewport_widgets[WIDX_VIEWPORT];
@ -248,13 +238,8 @@ static void window_viewport_invalidate()
viewport->view_height = viewport->height << viewport->zoom;
}
static void window_viewport_paint()
static void window_viewport_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
window_paint_get_registers(w, dpi);
window_draw_widgets(w, dpi);
// Draw viewport

View File

@ -48,44 +48,43 @@ static rct_widget window_water_widgets[] = {
static int window_water_should_close();
static void window_water_emptysub() { }
static void window_water_close();
static void window_water_mouseup();
static void window_water_update();
static void window_water_invalidate();
static void window_water_paint();
static void window_water_textinput();
static void window_water_close(rct_window *w);
static void window_water_mouseup(rct_window *w, int widgetIndex);
static void window_water_update(rct_window *w);
static void window_water_invalidate(rct_window *w);
static void window_water_paint(rct_window *w, rct_drawpixelinfo *dpi);
static void window_water_textinput(rct_window *w, int widgetIndex, char *text);
static void window_water_inputsize(rct_window *w);
static void* window_water_events[] = {
static rct_window_event_list window_water_events = {
window_water_close,
window_water_mouseup,
window_water_emptysub,
window_water_emptysub,
window_water_emptysub,
window_water_emptysub,
NULL,
NULL,
NULL,
NULL,
window_water_update,
window_water_emptysub,
window_water_emptysub,
window_water_emptysub,
window_water_emptysub,
window_water_emptysub,
window_water_emptysub,
window_water_emptysub,
window_water_emptysub,
window_water_emptysub,
window_water_emptysub,
window_water_emptysub,
window_water_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
window_water_textinput,
window_water_emptysub,
window_water_emptysub,
window_water_emptysub,
window_water_emptysub,
window_water_emptysub,
NULL,
NULL,
NULL,
NULL,
NULL,
window_water_invalidate,
window_water_paint,
window_water_emptysub
NULL
};
/**
@ -105,7 +104,7 @@ void window_water_open()
29,
76,
77,
(uint32*)window_water_events,
&window_water_events,
WC_WATER,
0
);
@ -122,7 +121,7 @@ void window_water_open()
*
* rct2: 0x006E6B65
*/
static void window_water_close()
static void window_water_close(rct_window *w)
{
// If the tool wasn't changed, turn tool off
if (!window_water_should_close())
@ -133,13 +132,9 @@ static void window_water_close()
*
* rct2: 0x006E6B4E
*/
static void window_water_mouseup()
static void window_water_mouseup(rct_window *w, int widgetIndex)
{
rct_window *w;
int limit;
short widgetIndex;
window_widget_get_registers(w, widgetIndex);
switch (widgetIndex) {
case WIDX_CLOSE:
@ -176,18 +171,12 @@ static void window_water_mouseup()
}
}
static void window_water_textinput()
static void window_water_textinput(rct_window *w, int widgetIndex, char *text)
{
uint8 result;
short widgetIndex;
rct_window *w;
char *text;
int size;
char* end;
window_textinput_get_registers(w, widgetIndex, result, text);
if (widgetIndex != WIDX_PREVIEW || !result)
if (widgetIndex != WIDX_PREVIEW || text == NULL)
return;
size = strtol(text, &end, 10);
@ -221,11 +210,8 @@ static void window_water_update(rct_window *w)
*
* rct2: 0x006E6AB8
*/
static void window_water_invalidate()
static void window_water_invalidate(rct_window *w)
{
rct_window *w;
window_get_register(w);
colour_scheme_update(w);
// Set the preview image button to be pressed down
@ -244,14 +230,10 @@ static void window_water_invalidate()
*
* rct2: 0x006E6ACF
*/
static void window_water_paint()
static void window_water_paint(rct_window *w, rct_drawpixelinfo *dpi)
{
rct_window *w;
rct_drawpixelinfo *dpi;
int x, y;
window_paint_get_registers(w, dpi);
x = w->x + (window_water_widgets[WIDX_PREVIEW].left + window_water_widgets[WIDX_PREVIEW].right) / 2;
y = w->y + (window_water_widgets[WIDX_PREVIEW].top + window_water_widgets[WIDX_PREVIEW].bottom) / 2;