mirror of https://github.com/OpenRCT2/OpenRCT2.git
add widgets, sizing and basic events for new ride window
This commit is contained in:
parent
94b4ea62d4
commit
c7986d140c
|
@ -35,7 +35,7 @@ enum {
|
|||
PARK_FLAGS_PREF_LESS_INTENSE_RIDES = (1 << 6),
|
||||
PARK_FLAGS_FORBID_MARKETING_CAMPAIGN = (1 << 7),
|
||||
PARK_FLAGS_PREF_MORE_INTENSE_RIDES = (1 << 8),
|
||||
PARK_FLAGS_11 = (1 << 11),
|
||||
PARK_FLAGS_11 = (1 << 11), // appears to be a copy of PARK_FLAGS_NO_MONEY
|
||||
PARK_FLAGS_DIFFICULT_GUEST_GENERATION = (1 << 12),
|
||||
PARK_FLAGS_PARK_FREE_ENTRY = (1 << 13),
|
||||
PARK_FLAGS_DIFFICULT_PARK_RATING = (1 << 14),
|
||||
|
|
|
@ -237,7 +237,14 @@ enum {
|
|||
STR_SHOPS_AND_STALLS = 975,
|
||||
STR_RESTROOMS_AND_INFORMATION_KIOSKS = 976,
|
||||
|
||||
STR_NEW_TRANSPORT_RIDES = 977,
|
||||
STR_NEW_GENTLE_RIDES = 978,
|
||||
STR_NEW_ROLLER_COASTERS = 979,
|
||||
STR_NEW_THRILL_RIDES = 980,
|
||||
STR_NEW_WATER_RIDES = 981,
|
||||
STR_NEW_SHOPS_STALLS = 982,
|
||||
STR_RESEARCH_AND_DEVELOPMENT = 983,
|
||||
|
||||
STR_RAISE_COST_AMOUNT = 984,
|
||||
STR_LOWER_COST_AMOUNT = 985,
|
||||
STR_COST_AMOUNT = 986,
|
||||
|
@ -297,6 +304,13 @@ enum {
|
|||
STR_NUMERIC_UP = 1218,
|
||||
STR_NUMERIC_DOWN = 1219,
|
||||
|
||||
STR_TRANSPORT_RIDES_TIP = 1223,
|
||||
STR_GENTLE_RIDES_TIP = 1224,
|
||||
STR_ROLLER_COASTERS_TIP = 1225,
|
||||
STR_THRILL_RIDES_TIP = 1226,
|
||||
STR_WATER_RIDES_TIP = 1227,
|
||||
STR_SHOPS_STALLS_TIP = 1228,
|
||||
|
||||
STR_ROTATE_OBJECTS_90 = 1327,
|
||||
|
||||
STR_BUILD_THIS = 1407,
|
||||
|
@ -511,7 +525,8 @@ enum {
|
|||
STR_RESEARCH_FUNDING_ = 2264,
|
||||
STR_RESEARCH_COST_PER_MONTH = 2265,
|
||||
STR_RESEARCH_PRIORITIES = 2266,
|
||||
|
||||
STR_CURRENTLY_IN_DEVELOPMENT = 2267,
|
||||
STR_LAST_DEVELOPMENT = 2268,
|
||||
STR_RESEARCH_TYPE_LABEL = 2269,
|
||||
STR_RESEARCH_PROGRESS_LABEL = 2270,
|
||||
STR_RESEARCH_EXPECTED_LABEL = 2271,
|
||||
|
|
|
@ -373,6 +373,7 @@ void window_park_guests_open();
|
|||
void window_park_objective_open();
|
||||
void window_park_rating_open();
|
||||
void window_finances_open();
|
||||
void window_finances_research_open();
|
||||
void window_new_campaign_open(int campaignType);
|
||||
void window_ride_list_open();
|
||||
void window_new_ride_open();
|
||||
|
|
|
@ -553,6 +553,20 @@ void window_finances_open()
|
|||
window_init_scroll_widgets(w);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x0069DDE1
|
||||
*/
|
||||
void window_finances_research_open()
|
||||
{
|
||||
rct_window *w;
|
||||
|
||||
window_finances_open();
|
||||
w = window_find_by_id(WC_FINANCES, 0);
|
||||
if (w != NULL)
|
||||
window_finances_set_page(w, WINDOW_FINANCES_PAGE_RESEARCH);
|
||||
}
|
||||
|
||||
#pragma region Summary page
|
||||
|
||||
/**
|
||||
|
|
|
@ -21,17 +21,25 @@
|
|||
#include <string.h>
|
||||
#include "addresses.h"
|
||||
#include "game.h"
|
||||
#include "news_item.h"
|
||||
#include "string_ids.h"
|
||||
#include "widget.h"
|
||||
#include "window.h"
|
||||
|
||||
#define _window_new_ride_current_tab RCT2_GLOBAL(0x00F43824, uint8)
|
||||
|
||||
enum {
|
||||
WINDOW_NEW_RIDE_TAB_TRANSPORT,
|
||||
WINDOW_NEW_RIDE_TAB_GENTLE,
|
||||
WINDOW_NEW_RIDE_TAB_ROLLER_COASTER,
|
||||
WINDOW_NEW_RIDE_TAB_THRILL,
|
||||
WINDOW_NEW_RIDE_TAB_WATER,
|
||||
WINDOW_NEW_RIDE_TAB_SHOP,
|
||||
WINDOW_NEW_RIDE_TAB_RESEARCH
|
||||
} WINDOW_RIDE_CONSTRUCTION_TAB;
|
||||
WINDOW_NEW_RIDE_PAGE_TRANSPORT,
|
||||
WINDOW_NEW_RIDE_PAGE_GENTLE,
|
||||
WINDOW_NEW_RIDE_PAGE_ROLLER_COASTER,
|
||||
WINDOW_NEW_RIDE_PAGE_THRILL,
|
||||
WINDOW_NEW_RIDE_PAGE_WATER,
|
||||
WINDOW_NEW_RIDE_PAGE_SHOP,
|
||||
WINDOW_NEW_RIDE_PAGE_RESEARCH,
|
||||
WINDOW_NEW_RIDE_PAGE_COUNT
|
||||
};
|
||||
|
||||
#pragma region Widgets
|
||||
|
||||
enum {
|
||||
WIDX_BACKGROUND,
|
||||
|
@ -45,12 +53,89 @@ enum {
|
|||
WIDX_TAB_5,
|
||||
WIDX_TAB_6,
|
||||
WIDX_TAB_7,
|
||||
|
||||
WIDX_RIDE_LIST,
|
||||
WIDX_CURRENTLY_IN_DEVELOPMENT_GROUP,
|
||||
WIDX_LAST_DEVELOPMENT_GROUP,
|
||||
WIDX_LAST_DEVELOPMENT_BUTTON
|
||||
WIDX_LAST_DEVELOPMENT_BUTTON,
|
||||
WIDX_RESEARCH_FUNDING_BUTTON
|
||||
};
|
||||
|
||||
static rct_widget window_new_ride_widgets[] = {
|
||||
{ WWT_FRAME, 0, 0, 600, 0, 369, 0xFFFFFFFF, STR_NONE },
|
||||
{ WWT_CAPTION, 0, 1, 599, 1, 14, 0xFFFFFFFF, STR_WINDOW_TITLE_TIP },
|
||||
{ WWT_CLOSEBOX, 0, 588, 598, 2, 13, STR_CLOSE_X, STR_CLOSE_WINDOW_TIP },
|
||||
{ WWT_RESIZE, 1, 0, 600, 43, 369, 0xFFFFFFFF, STR_NONE },
|
||||
{ WWT_TAB, 1, 3, 33, 17, 43, 0x2000144E, STR_TRANSPORT_RIDES_TIP },
|
||||
{ WWT_TAB, 1, 34, 64, 17, 43, 0x2000144E, STR_GENTLE_RIDES_TIP },
|
||||
{ WWT_TAB, 1, 65, 95, 17, 43, 0x2000144E, STR_ROLLER_COASTERS_TIP },
|
||||
{ WWT_TAB, 1, 96, 126, 17, 43, 0x2000144E, STR_THRILL_RIDES_TIP },
|
||||
{ WWT_TAB, 1, 127, 157, 17, 43, 0x2000144E, STR_WATER_RIDES_TIP },
|
||||
{ WWT_TAB, 1, 158, 188, 17, 43, 0x2000144E, STR_SHOPS_STALLS_TIP },
|
||||
{ WWT_TAB, 1, 189, 219, 17, 43, 0x2000144E, STR_RESEARCH_AND_DEVELOPMENT_TIP },
|
||||
{ WWT_SCROLL, 1, 3, 597, 46, 317, 2, STR_NONE },
|
||||
{ WWT_GROUPBOX, 2, 3, 292, 47, 116, STR_CURRENTLY_IN_DEVELOPMENT, STR_NONE },
|
||||
{ WWT_GROUPBOX, 2, 3, 292, 124, 188, STR_LAST_DEVELOPMENT, STR_NONE },
|
||||
{ WWT_FLATBTN, 2, 265, 288, 161, 184, 0xFFFFFFFF, STR_RESEARCH_SHOW_DETAILS_TIP },
|
||||
{ WWT_FLATBTN, 2, 265, 288, 68, 91, 5190, STR_FINANCES_RESEARCH },
|
||||
{ WIDGETS_END },
|
||||
};
|
||||
|
||||
#pragma endregion
|
||||
|
||||
#pragma region Events
|
||||
|
||||
static void window_new_ride_emptysub() { }
|
||||
|
||||
static void window_new_ride_mouseup();
|
||||
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();
|
||||
|
||||
// 0x0098E354
|
||||
static void* window_new_ride_events[] = {
|
||||
window_new_ride_emptysub,
|
||||
window_new_ride_mouseup,
|
||||
window_new_ride_emptysub,
|
||||
window_new_ride_mousedown,
|
||||
window_new_ride_emptysub,
|
||||
window_new_ride_emptysub,
|
||||
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,
|
||||
window_new_ride_scrollgetsize,
|
||||
window_new_ride_scrollmousedown,
|
||||
window_new_ride_emptysub,
|
||||
window_new_ride_scrollmouseover,
|
||||
window_new_ride_emptysub,
|
||||
window_new_ride_emptysub,
|
||||
window_new_ride_emptysub,
|
||||
window_new_ride_tooltip,
|
||||
window_new_ride_emptysub,
|
||||
window_new_ride_emptysub,
|
||||
window_new_ride_invalidate,
|
||||
window_new_ride_paint,
|
||||
window_new_ride_scrollpaint
|
||||
};
|
||||
|
||||
#pragma endregion
|
||||
|
||||
const int window_new_ride_tab_animation_loops[] = { 20, 32, 10, 72, 24, 28, 16 };
|
||||
const int window_new_ride_tab_animation_divisor[] = { 4, 8, 2, 4, 4, 4, 2 };
|
||||
|
||||
static void window_new_ride_refresh_widget_sizing(rct_window *w);
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006ACA58
|
||||
|
@ -58,10 +143,10 @@ enum {
|
|||
void window_new_ride_init_vars() {
|
||||
// If we are in the track designer, default to the Roller Coaster tab
|
||||
if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_TRACK_DESIGNER) {
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_RIDE_LIST_SELECTED_TAB, uint8) = WINDOW_NEW_RIDE_TAB_ROLLER_COASTER;
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_RIDE_LIST_SELECTED_TAB, uint8) = WINDOW_NEW_RIDE_PAGE_ROLLER_COASTER;
|
||||
}
|
||||
else {
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_RIDE_LIST_SELECTED_TAB, uint8) = WINDOW_NEW_RIDE_TAB_TRANSPORT;
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_RIDE_LIST_SELECTED_TAB, uint8) = WINDOW_NEW_RIDE_PAGE_TRANSPORT;
|
||||
}
|
||||
|
||||
for (short i = 0; i < 6; i++) {
|
||||
|
@ -91,8 +176,8 @@ void window_new_ride_open()
|
|||
window_close_by_id(161, 0);
|
||||
window_close_by_id(162, 0);
|
||||
|
||||
w = window_create_auto_pos(601, 370, (uint32*)0x0098E354, WC_CONSTRUCT_RIDE, 0x400);
|
||||
w->widgets = (rct_widget*)0x009AEBF4;
|
||||
w = window_create_auto_pos(601, 370, (uint32*)window_new_ride_events, WC_CONSTRUCT_RIDE, 0x400);
|
||||
w->widgets = window_new_ride_widgets;
|
||||
w->enabled_widgets =
|
||||
(1 << WIDX_CLOSE) |
|
||||
(1 << WIDX_TAB_1) |
|
||||
|
@ -121,6 +206,319 @@ void window_new_ride_open()
|
|||
w->var_482 = RCT2_GLOBAL(0x00F43523, sint16);
|
||||
|
||||
w->width = 1;
|
||||
RCT2_CALLPROC_EBPSAFE(0x006B3DF1); // initialise window size and widgets
|
||||
window_new_ride_refresh_widget_sizing(w);
|
||||
RCT2_CALLPROC_EBPSAFE(0x006B7220);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006B3DF1
|
||||
*/
|
||||
static void window_new_ride_refresh_widget_sizing(rct_window *w)
|
||||
{
|
||||
int width, height;
|
||||
|
||||
// Show or hide unrelated widgets
|
||||
if (_window_new_ride_current_tab != WINDOW_NEW_RIDE_PAGE_RESEARCH) {
|
||||
window_new_ride_widgets[WIDX_RIDE_LIST].type = WWT_SCROLL;
|
||||
window_new_ride_widgets[WIDX_CURRENTLY_IN_DEVELOPMENT_GROUP].type = WWT_EMPTY;
|
||||
window_new_ride_widgets[WIDX_LAST_DEVELOPMENT_GROUP].type = WWT_EMPTY;
|
||||
window_new_ride_widgets[WIDX_LAST_DEVELOPMENT_BUTTON].type = WWT_EMPTY;
|
||||
window_new_ride_widgets[WIDX_RESEARCH_FUNDING_BUTTON].type = WWT_EMPTY;
|
||||
|
||||
width = 601;
|
||||
height = 370;
|
||||
} else {
|
||||
window_new_ride_widgets[WIDX_RIDE_LIST].type = WWT_EMPTY;
|
||||
window_new_ride_widgets[WIDX_CURRENTLY_IN_DEVELOPMENT_GROUP].type = WWT_GROUPBOX;
|
||||
window_new_ride_widgets[WIDX_LAST_DEVELOPMENT_GROUP].type = WWT_GROUPBOX;
|
||||
window_new_ride_widgets[WIDX_LAST_DEVELOPMENT_BUTTON].type = WWT_FLATBTN;
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_11))
|
||||
window_new_ride_widgets[WIDX_RESEARCH_FUNDING_BUTTON].type = WWT_FLATBTN;
|
||||
|
||||
width = 300;
|
||||
height = 196;
|
||||
}
|
||||
|
||||
// Handle new window size
|
||||
if (w->width != width || w->height != height) {
|
||||
window_invalidate(w);
|
||||
|
||||
// Resize widgets to new window size
|
||||
window_new_ride_widgets[WIDX_BACKGROUND].right = width - 1;
|
||||
window_new_ride_widgets[WIDX_BACKGROUND].bottom = height - 1;
|
||||
window_new_ride_widgets[WIDX_PAGE_BACKGROUND].right = width - 1;
|
||||
window_new_ride_widgets[WIDX_PAGE_BACKGROUND].bottom = height - 1;
|
||||
window_new_ride_widgets[WIDX_TITLE].right = width - 2;
|
||||
window_new_ride_widgets[WIDX_CLOSE].left = width - 13;
|
||||
window_new_ride_widgets[WIDX_CLOSE].right = width - 3;
|
||||
|
||||
w->width = width;
|
||||
w->height = height;
|
||||
window_invalidate(w);
|
||||
}
|
||||
|
||||
window_init_scroll_widgets(w);
|
||||
}
|
||||
|
||||
static void window_new_ride_set_pressed_tab(rct_window *w)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < WINDOW_NEW_RIDE_PAGE_COUNT; i++)
|
||||
w->pressed_widgets &= ~(1 << (WIDX_TAB_1 + i));
|
||||
w->pressed_widgets |= 1LL << (WIDX_TAB_1 + _window_new_ride_current_tab);
|
||||
}
|
||||
|
||||
const int ThrillRidesTabAnimationSequence[] = {
|
||||
5, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0
|
||||
};
|
||||
|
||||
static void window_new_ride_draw_tab_image(rct_drawpixelinfo *dpi, rct_window *w, int page, int spriteIndex)
|
||||
{
|
||||
int widgetIndex = WIDX_TAB_1 + page;
|
||||
|
||||
if (!(w->disabled_widgets & (1LL << widgetIndex))) {
|
||||
int frame = 0;
|
||||
if (_window_new_ride_current_tab == page)
|
||||
frame = w->frame_no / window_new_ride_tab_animation_divisor[page];
|
||||
|
||||
spriteIndex += page == WINDOW_NEW_RIDE_PAGE_THRILL ?
|
||||
ThrillRidesTabAnimationSequence[frame] : frame;
|
||||
|
||||
spriteIndex |= w->colours[1] << 19;
|
||||
|
||||
gfx_draw_sprite(dpi, spriteIndex, w->x + w->widgets[widgetIndex].left, w->y + w->widgets[widgetIndex].top, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void window_new_ride_draw_tab_images(rct_drawpixelinfo *dpi, rct_window *w)
|
||||
{
|
||||
window_new_ride_draw_tab_image(dpi, w, WINDOW_NEW_RIDE_PAGE_TRANSPORT, 0x200015A1);
|
||||
window_new_ride_draw_tab_image(dpi, w, WINDOW_NEW_RIDE_PAGE_GENTLE, 5542);
|
||||
window_new_ride_draw_tab_image(dpi, w, WINDOW_NEW_RIDE_PAGE_ROLLER_COASTER, 0x200015AA);
|
||||
window_new_ride_draw_tab_image(dpi, w, WINDOW_NEW_RIDE_PAGE_THRILL, 5557);
|
||||
window_new_ride_draw_tab_image(dpi, w, WINDOW_NEW_RIDE_PAGE_WATER, 5551);
|
||||
window_new_ride_draw_tab_image(dpi, w, WINDOW_NEW_RIDE_PAGE_SHOP, 5530);
|
||||
window_new_ride_draw_tab_image(dpi, w, WINDOW_NEW_RIDE_PAGE_RESEARCH, 5327);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006B6B38
|
||||
*/
|
||||
static void window_new_ride_mouseup()
|
||||
{
|
||||
short widgetIndex;
|
||||
rct_window *w;
|
||||
|
||||
window_mouse_up_get_registers(w, widgetIndex);
|
||||
|
||||
switch (widgetIndex) {
|
||||
case WIDX_CLOSE:
|
||||
window_close(w);
|
||||
break;
|
||||
case WIDX_LAST_DEVELOPMENT_BUTTON:
|
||||
news_item_open_subject(NEWS_ITEM_RESEARCH, RCT2_GLOBAL(RCT2_ADDRESS_LAST_RESEARCHED_ITEM_SUBJECT, sint32));
|
||||
break;
|
||||
case WIDX_RESEARCH_FUNDING_BUTTON:
|
||||
window_finances_research_open();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006B6B4F
|
||||
*/
|
||||
static void window_new_ride_mousedown(int widgetIndex, rct_window *w, rct_widget *widget)
|
||||
{
|
||||
int page;
|
||||
if (widgetIndex < WIDX_TAB_1 || widgetIndex > WIDX_TAB_7)
|
||||
return;
|
||||
|
||||
page = widgetIndex - WIDX_TAB_1;
|
||||
|
||||
_window_new_ride_current_tab = page;
|
||||
w->frame_no = 0;
|
||||
w->var_482 = -1;
|
||||
w->var_480 = -1;
|
||||
RCT2_CALLPROC_EBPSAFE(0x006B6F3E);
|
||||
if (page < WINDOW_NEW_RIDE_PAGE_RESEARCH) {
|
||||
w->var_482 = RCT2_ADDRESS(0x00F43825, sint16)[page];
|
||||
if (w->var_482 == -1)
|
||||
w->var_482 = RCT2_GLOBAL(0x00F43523, sint16);
|
||||
}
|
||||
|
||||
window_new_ride_refresh_widget_sizing(w);
|
||||
window_invalidate(w);
|
||||
RCT2_CALLPROC_EBPSAFE(0x006B7220);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006B6CE7
|
||||
*/
|
||||
static void window_new_ride_update(rct_window *w)
|
||||
{
|
||||
w->frame_no++;
|
||||
if (w->frame_no >= window_new_ride_tab_animation_loops[_window_new_ride_current_tab])
|
||||
w->frame_no = 0;
|
||||
|
||||
widget_invalidate(w->classification, w->number, WIDX_TAB_1 + _window_new_ride_current_tab);
|
||||
|
||||
if (w->var_480 != -1 && w->var_488 == 1)
|
||||
RCT2_CALLPROC_X(0x006B6B78, 0, 0, 0, 0, (int)w, 0, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006B6BC9
|
||||
*/
|
||||
static void window_new_ride_scrollgetsize()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006B6C89
|
||||
*/
|
||||
static void window_new_ride_scrollmousedown()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006B6BBF
|
||||
*/
|
||||
static void window_new_ride_scrollmouseover()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006B6BBF
|
||||
*/
|
||||
static void window_new_ride_tooltip()
|
||||
{
|
||||
RCT2_GLOBAL(0x013CE952, uint16) = 3159;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006B6819
|
||||
*/
|
||||
static void window_new_ride_invalidate()
|
||||
{
|
||||
rct_window *w;
|
||||
|
||||
window_get_register(w);
|
||||
|
||||
window_new_ride_set_pressed_tab(w);
|
||||
|
||||
window_new_ride_widgets[WIDX_TITLE].image = STR_NEW_TRANSPORT_RIDES + _window_new_ride_current_tab;
|
||||
window_new_ride_widgets[WIDX_TAB_7].type = WWT_TAB;
|
||||
if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 4)
|
||||
window_new_ride_widgets[WIDX_TAB_7].type = WWT_EMPTY;
|
||||
|
||||
if (_window_new_ride_current_tab == WINDOW_NEW_RIDE_PAGE_RESEARCH) {
|
||||
window_new_ride_widgets[WIDX_LAST_DEVELOPMENT_BUTTON].type = WWT_EMPTY;
|
||||
uint32 typeId = RCT2_GLOBAL(0x01357CF4, uint32);
|
||||
if (typeId != 0xFFFFFFFF) {
|
||||
window_new_ride_widgets[WIDX_LAST_DEVELOPMENT_BUTTON].type = WWT_FLATBTN;
|
||||
window_new_ride_widgets[WIDX_LAST_DEVELOPMENT_BUTTON].image = typeId >= 0x10000 ? 5189 : 5191;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006B689B
|
||||
*/
|
||||
static void window_new_ride_paint()
|
||||
{
|
||||
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);
|
||||
|
||||
if (_window_new_ride_current_tab != WINDOW_NEW_RIDE_PAGE_RESEARCH)
|
||||
return;
|
||||
|
||||
int x = w->x + 10;
|
||||
int y = w->y + window_new_ride_widgets[WIDX_CURRENTLY_IN_DEVELOPMENT_GROUP].top + 12;
|
||||
|
||||
// Research type
|
||||
rct_string_id stringId = STR_RESEARCH_UNKNOWN;
|
||||
if (RCT2_GLOBAL(0x01357CF3, uint8) != 0) {
|
||||
stringId = STR_TRANSPORT_RIDE + RCT2_GLOBAL(0x013580E6, uint8);
|
||||
if (RCT2_GLOBAL(0x01357CF3, uint8) != 1) {
|
||||
uint32 typeId = RCT2_GLOBAL(0x013580E0, uint32);
|
||||
if (typeId >= 0x10000) {
|
||||
uint8 *rideEntry = RCT2_GLOBAL(0x009ACFA4 + (typeId & 0xFF) * 4, uint8*);
|
||||
if (RCT2_GLOBAL(rideEntry + 8, uint32) & 0x1000)
|
||||
stringId = RCT2_GLOBAL(rideEntry, uint16);
|
||||
else
|
||||
stringId = (typeId & 0xFF00) + 2;
|
||||
} else {
|
||||
uint8 *sceneryEntry = RCT2_GLOBAL(0x009ADA90 + (typeId & 0xFFFF) * 4, uint8*);
|
||||
stringId = RCT2_GLOBAL(sceneryEntry, uint16);
|
||||
}
|
||||
}
|
||||
}
|
||||
gfx_draw_string_left_wrapped(dpi, &stringId, x, y, 296, STR_RESEARCH_TYPE_LABEL, 0);
|
||||
y += 25;
|
||||
|
||||
// Progress
|
||||
stringId = 2285 + RCT2_GLOBAL(0x01357CF3, uint8);
|
||||
gfx_draw_string_left_wrapped(dpi, &stringId, x, y, 296, STR_RESEARCH_PROGRESS_LABEL, 0);
|
||||
y += 15;
|
||||
|
||||
// Expected
|
||||
RCT2_GLOBAL(0x013CE952, uint16) = STR_UNKNOWN;
|
||||
if (RCT2_GLOBAL(0x01357CF3, uint8) != 0) {
|
||||
uint16 expectedDay = RCT2_GLOBAL(RCT2_ADDRESS_NEXT_RESEARCH_EXPECTED_DAY, uint8);
|
||||
if (expectedDay != 255) {
|
||||
RCT2_GLOBAL(0x013CE952 + 2, uint16) = STR_DATE_DAY_1 + expectedDay;
|
||||
RCT2_GLOBAL(0x013CE952 + 4, uint16) = STR_MONTH_MARCH + RCT2_GLOBAL(RCT2_ADDRESS_NEXT_RESEARCH_EXPECTED_MONTH, uint8);
|
||||
RCT2_GLOBAL(0x013CE952, uint16) = 2289;
|
||||
}
|
||||
}
|
||||
gfx_draw_string_left(dpi, STR_RESEARCH_EXPECTED_LABEL, (void*)0x013CE952, 0, x, y);
|
||||
|
||||
// Last development
|
||||
x = w->x + 10;
|
||||
y = w->y + window_new_ride_widgets[WIDX_LAST_DEVELOPMENT_GROUP].top + 12;
|
||||
|
||||
uint32 typeId = RCT2_GLOBAL(0x01357CF4, uint32);
|
||||
if (typeId != 0xFFFFFFFF) {
|
||||
if (typeId >= 0x10000) {
|
||||
uint8 *rideEntry = RCT2_GLOBAL(0x009ACFA4 + (typeId & 0xFF) * 4, uint8*);
|
||||
if (RCT2_GLOBAL(rideEntry + 8, uint32) & 0x1000)
|
||||
stringId = RCT2_GLOBAL(rideEntry, uint16);
|
||||
else
|
||||
stringId = (typeId & 0xFF00) + 2;
|
||||
} else {
|
||||
uint8 *sceneryEntry = RCT2_GLOBAL(0x009ADA90 + (typeId & 0xFFFF) * 4, uint8*);
|
||||
stringId = RCT2_GLOBAL(sceneryEntry, uint16);
|
||||
}
|
||||
gfx_draw_string_left_wrapped(dpi, &stringId, x, y, 266, STR_RESEARCH_RIDE_LABEL, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006B6ABF
|
||||
*/
|
||||
static void window_new_ride_scrollpaint()
|
||||
{
|
||||
rct_window *w;
|
||||
rct_drawpixelinfo *dpi;
|
||||
|
||||
window_paint_get_registers(w, dpi);
|
||||
}
|
|
@ -68,8 +68,8 @@ static rct_widget window_research_development_widgets[] = {
|
|||
{ WWT_RESIZE, 1, 0, 299, 43, 195, 0xFFFFFFFF, STR_NONE },
|
||||
{ WWT_TAB, 1, 3, 33, 17, 43, 0x2000144E, STR_RESEARCH_AND_DEVELOPMENT_TIP },
|
||||
{ WWT_TAB, 1, 34, 64, 17, 43, 0x2000144E, STR_FINANCES_RESEARCH },
|
||||
{ WWT_GROUPBOX, 2, 3, 292, 47, 116, 2267, STR_NONE },
|
||||
{ WWT_GROUPBOX, 2, 3, 292, 124, 188, 2268, STR_NONE },
|
||||
{ WWT_GROUPBOX, 2, 3, 292, 47, 116, STR_CURRENTLY_IN_DEVELOPMENT, STR_NONE },
|
||||
{ WWT_GROUPBOX, 2, 3, 292, 124, 188, STR_LAST_DEVELOPMENT, STR_NONE },
|
||||
{ WWT_FLATBTN, 2, 265, 288, 161, 184, 0xFFFFFFFF, STR_RESEARCH_SHOW_DETAILS_TIP },
|
||||
{ WIDGETS_END },
|
||||
};
|
||||
|
@ -390,7 +390,7 @@ static void window_research_development_paint()
|
|||
stringId = RCT2_GLOBAL(sceneryEntry, uint16);
|
||||
}
|
||||
gfx_draw_string_left_wrapped(dpi, &stringId, x, y, 266, STR_RESEARCH_RIDE_LABEL, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#pragma endregion
|
||||
|
|
Loading…
Reference in New Issue