1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-06 06:32:56 +01:00

add more to finances window

This commit is contained in:
IntelOrca
2014-05-26 01:29:59 +01:00
parent 8271ed5022
commit ab697f8f93

View File

@@ -24,12 +24,13 @@
#include "window.h"
enum {
WINDOW_FINANCES_TAB_SUMMARY,
WINDOW_FINANCES_TAB_FINANCIAL_GRAPH,
WINDOW_FINANCES_TAB_VALUE_GRAPH,
WINDOW_FINANCES_TAB_PROFIT_GRAPH,
WINDOW_FINANCES_TAB_MARKETING,
WINDOW_FINANCES_TAB_RESEARCH
WINDOW_FINANCES_PAGE_SUMMARY,
WINDOW_FINANCES_PAGE_FINANCIAL_GRAPH,
WINDOW_FINANCES_PAGE_VALUE_GRAPH,
WINDOW_FINANCES_PAGE_PROFIT_GRAPH,
WINDOW_FINANCES_PAGE_MARKETING,
WINDOW_FINANCES_PAGE_RESEARCH,
WINDOW_FINANCES_PAGE_COUNT
};
enum {
@@ -270,6 +271,11 @@ static uint32 window_finances_page_enabled_widgets[] = {
#pragma endregion
const int window_finances_tab_animation_loops[] = { 16, 32, 32, 32, 38, 16 };
static void window_finances_set_page(rct_window *w, int page);
static void window_finances_set_pressed_tab(rct_window *w);
/**
*
* rct2: 0x0069DDF1
@@ -306,4 +312,115 @@ void window_finances_open()
w->pressed_widgets = 0;
w->disabled_widgets = 0;
window_init_scroll_widgets(w);
}
}
#pragma region Summary page
/**
*
* rct2: 0x0069CA99
*/
static void window_finances_summary_mouseup()
{
short widgetIndex;
rct_window *w;
#ifdef _MSC_VER
__asm mov widgetIndex, dx
#else
__asm__ ( "mov %[widgetIndex], dx " : [widgetIndex] "+m" (widgetIndex) );
#endif
#ifdef _MSC_VER
__asm mov w, esi
#else
__asm__ ( "mov %[w], esi " : [w] "+m" (w) );
#endif
if (widgetIndex == WIDX_CLOSE)
window_close(w);
else if (widgetIndex >= WIDX_TAB_1 && widgetIndex <= WIDX_TAB_6)
window_finances_set_page(w, widgetIndex - WIDX_TAB_1);
}
/**
*
* rct2: 0x0069CBA6
*/
static void window_finances_summary_update(rct_window *w)
{
// Tab animation
if (++w->var_48E >= window_finances_tab_animation_loops[w->page])
w->var_48E = 0;
widget_invalidate(w->classification, w->number, WIDX_TAB_1);
}
/**
*
* rct2: 0x0069C732
*/
static void window_finances_summary_invalidate()
{
rct_window *w;
#ifdef _MSC_VER
__asm mov w, esi
#else
__asm__ ( "mov %[w], esi " : [w] "+m" (w) );
#endif
if (w->widgets != window_finances_page_widgets[0]) {
w->widgets = window_finances_page_widgets[0];
window_init_scroll_widgets(w);
}
window_finances_set_pressed_tab(w);
RCT2_GLOBAL(0x013CE952 + 6, money32) = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32);
}
#pragma endregion
#pragma region Common
/**
*
* rct2: 0x0069CAC5
*/
static void window_finances_set_page(rct_window *w, int page)
{
w->page = page;
w->var_48E = 0;
if (w->viewport != NULL) {
w->viewport->width = 0;
w->viewport = NULL;
}
w->enabled_widgets = window_finances_page_enabled_widgets[page];
w->var_020 = RCT2_ADDRESS(0x00988E3C, uint32)[page];
w->widgets = window_finances_page_widgets[page];
w->disabled_widgets = 0;
window_invalidate(w);
if (w->page == WINDOW_FINANCES_PAGE_RESEARCH) {
w->width = 320;
w->height = 207;
} else {
w->width = 530;
w->height = 257;
}
RCT2_CALLPROC_X(w->event_handlers[WE_RESIZE], 0, 0, 0, 0, (int)w, 0, 0);
RCT2_CALLPROC_X(w->event_handlers[WE_INVALIDATE], 0, 0, 0, 0, (int)w, 0, 0);
window_init_scroll_widgets(w);
window_invalidate(w);
}
static void window_finances_set_pressed_tab(rct_window *w)
{
int i;
for (i = 0; i < WINDOW_FINANCES_PAGE_COUNT; i++)
w->pressed_widgets &= ~(1 << (WIDX_TAB_1 + i));
w->pressed_widgets |= 1LL << (WIDX_TAB_1 + w->page);
}
#pragma endregion