mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-17 12:03:07 +01:00
start implementing operating tab on ride window
This commit is contained in:
@@ -164,7 +164,8 @@ typedef struct {
|
||||
uint8 var_1BC;
|
||||
uint8 pad_1BD[0x0B];
|
||||
uint8 music;
|
||||
uint8 pad_1C9[0x04];
|
||||
uint8 pad_1C9[0x03];
|
||||
uint8 num_block_brakes; // 0x1CC
|
||||
uint8 var_1CD;
|
||||
uint16 guests_favourite; // 0x1CE
|
||||
uint32 lifecycle_flags; // 0x1D0
|
||||
|
||||
@@ -358,6 +358,15 @@ enum {
|
||||
STR_QUEUE_PEOPLE = 1203,
|
||||
STR_QUEUE_TIME_LABEL = 1204,
|
||||
STR_QUEUE_TIME_PLURAL_LABEL = 1205,
|
||||
STR_WAIT_FOR = 1206,
|
||||
|
||||
STR_WAIT_FOR_PASSENGERS_BEFORE_DEPARTING_TIP = 1209,
|
||||
STR_MINIMUM_WAITING_TIME = 1211,
|
||||
STR_MAXIMUM_WAITING_TIME = 1212,
|
||||
STR_MINIMUM_LENGTH_BEFORE_DEPARTING_TIP = 1213,
|
||||
STR_MAXIMUM_LENGTH_BEFORE_DEPARTING_TIP = 1214,
|
||||
STR_SYNCHRONISE_WITH_ADJACENT_STATIONS = 1215,
|
||||
STR_SYNCHRONISE_WITH_ADJACENT_STATIONS_TIP = 1216,
|
||||
|
||||
STR_NUMERIC_UP = 1218,
|
||||
STR_NUMERIC_DOWN = 1219,
|
||||
@@ -636,6 +645,9 @@ enum {
|
||||
STR_MARKETING = 1953,
|
||||
STR_RESEARCH_FUNDING = 1954,
|
||||
|
||||
STR_NUMBER_OF_CIRCUITS = 1955,
|
||||
STR_NUMBER_OF_CIRCUITS_TIP = 1956,
|
||||
|
||||
STR_ON_RIDE_PHOTO_PRICE = 1963,
|
||||
|
||||
STR_ITEM_START = 1988,
|
||||
@@ -866,6 +878,8 @@ enum {
|
||||
STR_RESEARCH_NEW_SHOPS_AND_STALLS = 2475,
|
||||
STR_RESEARCH_NEW_SCENERY_AND_THEMING = 2476,
|
||||
|
||||
STR_SELECT_OPERATING_MODE = 2477,
|
||||
|
||||
STR_PROFIT_PER_WEEK_AND_PARK_VALUE_TIP = 2482,
|
||||
STR_FINANCES_WEEKLY_PROFIT_POSITIVE = 2483,
|
||||
STR_FINANCES_WEEKLY_PROFIT_LOSS = 2484,
|
||||
@@ -1018,6 +1032,8 @@ enum {
|
||||
STR_SAME_PRICE_THROUGHOUT_PARK = 3071,
|
||||
STR_SAME_PRICE_THROUGHOUT_PARK_TIP = 3072,
|
||||
|
||||
STR_SELECT_LIFT_HILL_CHAIN_SPEED_TIP = 3097,
|
||||
|
||||
STR_SELECT_COLOUR = 3099,
|
||||
STR_SELECT_SECONDARY_COLOUR = 3100,
|
||||
STR_SELECT_TERNARY_COLOUR = 3101,
|
||||
@@ -1028,6 +1044,7 @@ enum {
|
||||
STR_CLOSE_RIDE = 3107,
|
||||
STR_TEST_RIDE = 3108,
|
||||
STR_OPEN_RIDE = 3109,
|
||||
STR_BLOCK_SECTIONS = 3110,
|
||||
|
||||
STR_SAVE_TRACK_DESIGN = 3115,
|
||||
STR_SAVE_TRACK_DESIGN_NOT_POSSIBLE = 3116,
|
||||
|
||||
@@ -75,6 +75,34 @@ enum {
|
||||
WIDX_LOCATE,
|
||||
WIDX_DEMOLISH,
|
||||
|
||||
WIDX_OPERATE_UNK_14 = 14,
|
||||
WIDX_OPERATION_UNK_14_INCREASE,
|
||||
WIDX_OPERATION_UNK_14_DECREASE,
|
||||
WIDX_LIFT_HILL_SPEED,
|
||||
WIDX_LIFT_HILL_SPEED_INCREASE,
|
||||
WIDX_LIFT_HILL_SPEED_DECREASE,
|
||||
WIDX_WAIT_FOR_PASSENGERS,
|
||||
WIDX_OPERATE_UNK_21,
|
||||
WIDX_MINIMUM_LENGTH_CHECKBOX,
|
||||
WIDX_MINIMUM_LENGTH,
|
||||
WIDX_MINIMUM_LENGTH_INCREASE,
|
||||
WIDX_MINIMUM_LENGTH_DECREASE,
|
||||
WIDX_MAXIMUM_LENGTH_CHECKBOX,
|
||||
WIDX_MAXIMUM_LENGTH,
|
||||
WIDX_MAXIMUM_LENGTH_INCREASE,
|
||||
WIDX_MAXIMUM_LENGTH_DECREASE,
|
||||
WIDX_SYNCHRONISE_WITH_ADJACENT_STATIONS_CHECKBOX,
|
||||
WIDX_OPERATE_UNK_31,
|
||||
WIDX_OPERATE_UNK_32,
|
||||
WIDX_OPERATE_UNK_33,
|
||||
WIDX_OPERATE_UNK_34,
|
||||
WIDX_OPERATE_UNK_35,
|
||||
WIDX_OPERATE_UNK_36,
|
||||
WIDX_OPERATE_NUMBER_OF_CIRCUITS_LABEL,
|
||||
WIDX_OPERATE_NUMBER_OF_CIRCUITS,
|
||||
WIDX_OPERATE_NUMBER_OF_CIRCUITS_INCREASE,
|
||||
WIDX_OPERATE_NUMBER_OF_CIRCUITS_DECREASE,
|
||||
|
||||
WIDX_INSPECTION_INTERVAL = 14,
|
||||
WIDX_INSPECTION_INTERVAL_DROPDOWN,
|
||||
WIDX_LOCATE_MECHANIC,
|
||||
@@ -134,6 +162,53 @@ static rct_widget window_ride_main_widgets[] = {
|
||||
{ WIDGETS_END },
|
||||
};
|
||||
|
||||
// 0x009ADEFC
|
||||
static rct_widget window_ride_operating_widgets[] = {
|
||||
{ WWT_FRAME, 0, 0, 315, 0, 206, 0x0FFFFFFFF, STR_NONE },
|
||||
{ WWT_CAPTION, 0, 1, 314, 1, 14, 0x3DD, STR_WINDOW_TITLE_TIP },
|
||||
{ WWT_CLOSEBOX, 0, 303, 313, 2, 13, STR_CLOSE_X, STR_CLOSE_WINDOW_TIP },
|
||||
{ WWT_RESIZE, 1, 0, 315, 43, 179, 0x0FFFFFFFF, STR_NONE },
|
||||
{ WWT_TAB, 1, 3, 33, 17, 43, 0x2000144E, STR_VIEW_OF_RIDE_ATTRACTION_TIP },
|
||||
{ WWT_TAB, 1, 34, 64, 17, 46, 0x2000144E, STR_VEHICLE_DETAILS_AND_OPTIONS_TIP },
|
||||
{ WWT_TAB, 1, 65, 95, 17, 43, 0x2000144E, STR_OPERATING_OPTIONS_TIP },
|
||||
{ WWT_TAB, 1, 96, 126, 17, 43, 0x2000144E, STR_MAINTENANCE_OPTIONS_TIP },
|
||||
{ WWT_TAB, 1, 127, 157, 17, 43, 0x2000144E, STR_COLOUR_SCHEME_OPTIONS_TIP },
|
||||
{ WWT_TAB, 1, 158, 188, 17, 43, 0x2000144E, STR_SOUND_AND_MUSIC_OPTIONS_TIP },
|
||||
{ WWT_TAB, 1, 189, 219, 17, 43, 0x2000144E, STR_MEASUREMENTS_AND_TEST_DATA_TIP },
|
||||
{ WWT_TAB, 1, 220, 250, 17, 43, 0x2000144E, STR_GRAPHS_TIP },
|
||||
{ WWT_TAB, 1, 251, 281, 17, 43, 0x2000144E, STR_INCOME_AND_COSTS_TIP },
|
||||
{ WWT_TAB, 1, 282, 312, 17, 43, 0x2000144E, STR_CUSTOMER_INFORMATION_TIP },
|
||||
|
||||
{ WWT_SPINNER, 1, 157, 308, 61, 72, 874, STR_NONE },
|
||||
{ WWT_DROPDOWN_BUTTON, 1, 297, 307, 62, 66, STR_NUMERIC_UP, STR_NONE },
|
||||
{ WWT_DROPDOWN_BUTTON, 1, 297, 307, 67, 71, STR_NUMERIC_DOWN, STR_NONE },
|
||||
{ WWT_SPINNER, 1, 157, 308, 75, 86, 3096, STR_NONE },
|
||||
{ WWT_DROPDOWN_BUTTON, 1, 297, 307, 76, 80, STR_NUMERIC_UP, STR_SELECT_LIFT_HILL_CHAIN_SPEED_TIP },
|
||||
{ WWT_DROPDOWN_BUTTON, 1, 297, 307, 81, 85, STR_NUMERIC_DOWN, STR_SELECT_LIFT_HILL_CHAIN_SPEED_TIP },
|
||||
{ WWT_CHECKBOX, 1, 7, 86, 109, 120, STR_WAIT_FOR, STR_WAIT_FOR_PASSENGERS_BEFORE_DEPARTING_TIP },
|
||||
{ WWT_CHECKBOX, 1, 7, 308, 124, 135, 0xFFFFFFFF, STR_NONE },
|
||||
{ WWT_CHECKBOX, 1, 7, 156, 139, 150, STR_MINIMUM_WAITING_TIME, STR_MINIMUM_LENGTH_BEFORE_DEPARTING_TIP },
|
||||
{ WWT_SPINNER, 1, 157, 308, 139, 150, 870, STR_NONE },
|
||||
{ WWT_DROPDOWN_BUTTON, 1, 297, 307, 140, 144, STR_NUMERIC_UP, STR_NONE },
|
||||
{ WWT_DROPDOWN_BUTTON, 1, 297, 307, 145, 149, STR_NUMERIC_DOWN, STR_NONE },
|
||||
{ WWT_CHECKBOX, 1, 7, 156, 154, 165, STR_MAXIMUM_WAITING_TIME, STR_MAXIMUM_LENGTH_BEFORE_DEPARTING_TIP },
|
||||
{ WWT_SPINNER, 1, 157, 308, 154, 165, 872, STR_NONE },
|
||||
{ WWT_DROPDOWN_BUTTON, 1, 297, 307, 155, 159, STR_NUMERIC_UP, STR_NONE },
|
||||
{ WWT_DROPDOWN_BUTTON, 1, 297, 307, 160, 164, STR_NUMERIC_DOWN, STR_NONE },
|
||||
{ WWT_CHECKBOX, 1, 7, 308, 169, 180, STR_SYNCHRONISE_WITH_ADJACENT_STATIONS, STR_SYNCHRONISE_WITH_ADJACENT_STATIONS_TIP },
|
||||
{ WWT_24, 1, 7, 149, 61, 72, 0xFFFFFFFF, STR_NONE },
|
||||
{ WWT_24, 1, 7, 149, 75, 86, 3095, STR_NONE },
|
||||
{ WWT_DROPDOWN, 1, 7, 308, 47, 58, 0xFFFFFFFF, STR_SELECT_OPERATING_MODE },
|
||||
{ WWT_DROPDOWN_BUTTON, 1, 297, 307, 48, 57, 876, STR_SELECT_OPERATING_MODE },
|
||||
{ WWT_DROPDOWN, 1, 87, 308, 109, 120, 0xFFFFFFFF, STR_NONE },
|
||||
{ WWT_DROPDOWN_BUTTON, 1, 297, 307, 110, 119, 876, STR_NONE },
|
||||
{ WWT_24, 1, 7, 149, 89, 100, STR_NUMBER_OF_CIRCUITS, STR_NUMBER_OF_CIRCUITS_TIP },
|
||||
{ WWT_SPINNER, 1, 157, 308, 89, 100, 1957, STR_NONE },
|
||||
{ WWT_DROPDOWN_BUTTON, 1, 297, 307, 90, 94, STR_NUMERIC_UP, STR_SELECT_LIFT_HILL_CHAIN_SPEED_TIP },
|
||||
{ WWT_DROPDOWN_BUTTON, 1, 297, 307, 95, 99, STR_NUMERIC_DOWN, STR_SELECT_LIFT_HILL_CHAIN_SPEED_TIP },
|
||||
{ WIDGETS_END },
|
||||
};
|
||||
|
||||
// 0x009AE190
|
||||
static rct_widget window_ride_maintenance_widgets[] = {
|
||||
{ WWT_FRAME, 0, 0, 315, 0, 206, 0x0FFFFFFFF, STR_NONE },
|
||||
@@ -261,7 +336,7 @@ static rct_widget window_ride_customer_widgets[] = {
|
||||
static rct_widget *window_ride_page_widgets[] = {
|
||||
window_ride_main_widgets,
|
||||
(rct_widget*)0x009ADDA8,
|
||||
(rct_widget*)0x009ADEFC,
|
||||
window_ride_operating_widgets,
|
||||
window_ride_maintenance_widgets,
|
||||
(rct_widget*)0x009AE2A4,
|
||||
window_ride_music_widgets,
|
||||
@@ -300,6 +375,14 @@ static void window_ride_main_unknown_14();
|
||||
static void window_ride_main_invalidate();
|
||||
static void window_ride_main_paint();
|
||||
|
||||
static void window_ride_operating_mouseup();
|
||||
static void window_ride_operating_resize();
|
||||
static void window_ride_operating_mousedown(int widgetIndex, rct_window *w, rct_widget *widget);
|
||||
static void window_ride_operating_dropdown();
|
||||
static void window_ride_operating_update(rct_window *w);
|
||||
static void window_ride_operating_invalidate();
|
||||
static void window_ride_operating_paint();
|
||||
|
||||
static void window_ride_maintenance_mouseup();
|
||||
static void window_ride_maintenance_resize();
|
||||
static void window_ride_maintenance_mousedown(int widgetIndex, rct_window *w, rct_widget *widget);
|
||||
@@ -372,6 +455,38 @@ static void* window_ride_main_events[] = {
|
||||
window_ride_emptysub
|
||||
};
|
||||
|
||||
// 0x0098E0B4
|
||||
static void* window_ride_operating_events[] = {
|
||||
window_ride_emptysub,
|
||||
window_ride_operating_mouseup,
|
||||
window_ride_operating_resize,
|
||||
window_ride_operating_mousedown,
|
||||
window_ride_operating_dropdown,
|
||||
window_ride_emptysub,
|
||||
window_ride_operating_update,
|
||||
window_ride_emptysub,
|
||||
window_ride_emptysub,
|
||||
window_ride_emptysub,
|
||||
window_ride_emptysub,
|
||||
window_ride_emptysub,
|
||||
window_ride_emptysub,
|
||||
window_ride_emptysub,
|
||||
window_ride_emptysub,
|
||||
window_ride_emptysub,
|
||||
window_ride_emptysub,
|
||||
window_ride_emptysub,
|
||||
window_ride_emptysub,
|
||||
window_ride_emptysub,
|
||||
window_ride_emptysub,
|
||||
window_ride_emptysub,
|
||||
window_ride_emptysub,
|
||||
window_ride_emptysub,
|
||||
window_ride_emptysub,
|
||||
window_ride_operating_invalidate,
|
||||
window_ride_operating_paint,
|
||||
window_ride_emptysub
|
||||
};
|
||||
|
||||
// 0x0098E124
|
||||
static void* window_ride_maintenance_events[] = {
|
||||
window_ride_emptysub,
|
||||
@@ -535,7 +650,7 @@ static void* window_ride_customer_events[] = {
|
||||
static uint32* window_ride_page_events[] = {
|
||||
(uint32*)window_ride_main_events,
|
||||
(uint32*)0x0098E204,
|
||||
(uint32*)0x0098E0B4,
|
||||
(uint32*)window_ride_operating_events,
|
||||
(uint32*)window_ride_maintenance_events,
|
||||
(uint32*)0x0098E044,
|
||||
(uint32*)window_ride_music_events,
|
||||
@@ -1579,6 +1694,199 @@ static void window_ride_main_paint()
|
||||
|
||||
#pragma endregion
|
||||
|
||||
#pragma region Operating
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006B10A7
|
||||
*/
|
||||
static void window_ride_operating_mouseup()
|
||||
{
|
||||
short widgetIndex;
|
||||
rct_window *w;
|
||||
|
||||
window_widget_get_registers(w, widgetIndex);
|
||||
|
||||
switch (widgetIndex) {
|
||||
case WIDX_CLOSE:
|
||||
window_close(w);
|
||||
break;
|
||||
case WIDX_TAB_1:
|
||||
case WIDX_TAB_2:
|
||||
case WIDX_TAB_3:
|
||||
case WIDX_TAB_4:
|
||||
case WIDX_TAB_5:
|
||||
case WIDX_TAB_6:
|
||||
case WIDX_TAB_7:
|
||||
case WIDX_TAB_8:
|
||||
case WIDX_TAB_9:
|
||||
case WIDX_TAB_10:
|
||||
window_ride_set_page(w, widgetIndex - WIDX_TAB_1);
|
||||
break;
|
||||
case WIDX_WAIT_FOR_PASSENGERS:
|
||||
break;
|
||||
case WIDX_OPERATE_UNK_21:
|
||||
break;
|
||||
case WIDX_MINIMUM_LENGTH_CHECKBOX:
|
||||
break;
|
||||
case WIDX_MAXIMUM_LENGTH_CHECKBOX:
|
||||
break;
|
||||
case WIDX_SYNCHRONISE_WITH_ADJACENT_STATIONS_CHECKBOX:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006B1715
|
||||
*/
|
||||
static void window_ride_operating_resize()
|
||||
{
|
||||
rct_window *w;
|
||||
|
||||
window_get_register(w);
|
||||
|
||||
window_set_resize(w, 316, 186, 316, 186);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006B10F4
|
||||
*/
|
||||
static void window_ride_operating_mousedown(int widgetIndex, rct_window *w, rct_widget *widget)
|
||||
{
|
||||
switch (widgetIndex) {
|
||||
case WIDX_OPERATION_UNK_14_INCREASE:
|
||||
break;
|
||||
case WIDX_OPERATION_UNK_14_DECREASE:
|
||||
break;
|
||||
case WIDX_LIFT_HILL_SPEED_INCREASE:
|
||||
break;
|
||||
case WIDX_LIFT_HILL_SPEED_DECREASE:
|
||||
break;
|
||||
case WIDX_MINIMUM_LENGTH_INCREASE:
|
||||
break;
|
||||
case WIDX_MINIMUM_LENGTH_DECREASE:
|
||||
break;
|
||||
case WIDX_MAXIMUM_LENGTH_INCREASE:
|
||||
break;
|
||||
case WIDX_MAXIMUM_LENGTH_DECREASE:
|
||||
break;
|
||||
case WIDX_OPERATE_UNK_34:
|
||||
break;
|
||||
case WIDX_OPERATE_UNK_36:
|
||||
break;
|
||||
case WIDX_OPERATE_NUMBER_OF_CIRCUITS_INCREASE:
|
||||
break;
|
||||
case WIDX_OPERATE_NUMBER_OF_CIRCUITS_DECREASE:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006B1165
|
||||
*/
|
||||
static void window_ride_operating_dropdown()
|
||||
{
|
||||
rct_window *w;
|
||||
short widgetIndex, dropdownIndex;
|
||||
|
||||
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
|
||||
|
||||
switch (widgetIndex) {
|
||||
case WIDX_OPERATE_UNK_34:
|
||||
break;
|
||||
case WIDX_OPERATE_UNK_36:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006B178E
|
||||
*/
|
||||
static void window_ride_operating_update(rct_window *w)
|
||||
{
|
||||
rct_ride *ride;
|
||||
|
||||
w->frame_no++;
|
||||
RCT2_CALLPROC_X(w->event_handlers[WE_INVALIDATE], 0, 0, 0, 0, (int)w, 0, 0);
|
||||
widget_invalidate(WC_RIDE, w->number, WIDX_TAB_3);
|
||||
|
||||
ride = GET_RIDE(w->number);
|
||||
if (ride->var_14D & 10) {
|
||||
ride->var_14D &= ~10;
|
||||
window_invalidate(w);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006B0B30
|
||||
*/
|
||||
static void window_ride_operating_invalidate()
|
||||
{
|
||||
rct_window *w;
|
||||
rct_widget *widgets;
|
||||
|
||||
window_get_register(w);
|
||||
|
||||
widgets = window_ride_page_widgets[w->page];
|
||||
if (w->widgets != widgets) {
|
||||
w->widgets = widgets;
|
||||
window_init_scroll_widgets(w);
|
||||
}
|
||||
|
||||
window_ride_set_pressed_tab(w);
|
||||
|
||||
rct_ride *ride = GET_RIDE(w->number);
|
||||
RCT2_GLOBAL(0x013CE952 + 0, uint16) = ride->name;
|
||||
RCT2_GLOBAL(0x013CE952 + 2, uint32) = ride->name_arguments;
|
||||
|
||||
// TODO lots of widget setup
|
||||
|
||||
window_ride_anchor_border_widgets(w);
|
||||
window_align_tabs(w, WIDX_TAB_1, WIDX_TAB_10);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006B1001
|
||||
*/
|
||||
static void window_ride_operating_paint()
|
||||
{
|
||||
rct_window *w;
|
||||
rct_drawpixelinfo *dpi;
|
||||
rct_ride *ride;
|
||||
uint16 blockSections;
|
||||
|
||||
window_paint_get_registers(w, dpi);
|
||||
|
||||
window_draw_widgets(w, dpi);
|
||||
window_ride_draw_tab_images(dpi, w);
|
||||
|
||||
ride = GET_RIDE(w->number);
|
||||
|
||||
gfx_fill_rect_inset(
|
||||
dpi,
|
||||
w->x + window_ride_operating_widgets[WIDX_PAGE_BACKGROUND].left + 4,
|
||||
w->y + 103,
|
||||
w->x + window_ride_operating_widgets[WIDX_PAGE_BACKGROUND].right - 5,
|
||||
w->y + 104,
|
||||
w->colours[1],
|
||||
0x20
|
||||
);
|
||||
|
||||
if (ride->mode == 34 || ride->mode == 36) {
|
||||
blockSections = ride->num_block_brakes + ride->num_stations;
|
||||
gfx_draw_string_left(dpi, STR_BLOCK_SECTIONS, &blockSections, 0, w->x + 21, ride->mode == 36 ? w->y + 76 : w->y + 61);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#pragma endregion
|
||||
|
||||
#pragma region Maintenance
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user