mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2025-12-23 15:52:55 +01:00
Show update information on main screen & in floppy menu
This commit is contained in:
committed by
Aaron van Geffen
parent
55835456a0
commit
6ae5645686
@@ -128,8 +128,8 @@ rct_window* window_new_version_open()
|
|||||||
window->max_height = MIN_WH;
|
window->max_height = MIN_WH;
|
||||||
|
|
||||||
window->colours[0] = COLOUR_GREY;
|
window->colours[0] = COLOUR_GREY;
|
||||||
window->colours[1] = COLOUR_LIGHT_BLUE;
|
window->colours[1] = COLOUR_DARK_GREEN;
|
||||||
window->colours[2] = COLOUR_LIGHT_BLUE;
|
window->colours[2] = COLOUR_DARK_GREEN;
|
||||||
|
|
||||||
return window;
|
return window;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,14 +27,18 @@ enum {
|
|||||||
WIDX_START_NEW_GAME,
|
WIDX_START_NEW_GAME,
|
||||||
WIDX_CONTINUE_SAVED_GAME,
|
WIDX_CONTINUE_SAVED_GAME,
|
||||||
WIDX_MULTIPLAYER,
|
WIDX_MULTIPLAYER,
|
||||||
WIDX_GAME_TOOLS
|
WIDX_GAME_TOOLS,
|
||||||
|
WIDX_NEW_VERSION,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static ScreenRect _filterRect;
|
||||||
|
|
||||||
static rct_widget window_title_menu_widgets[] = {
|
static rct_widget window_title_menu_widgets[] = {
|
||||||
MakeWidget({0, 0}, {82, 82}, WWT_IMGBTN, 2, SPR_MENU_NEW_GAME, STR_START_NEW_GAME_TIP),
|
MakeWidget({0, 28}, {82, 82}, WWT_IMGBTN, 2, SPR_MENU_NEW_GAME, STR_START_NEW_GAME_TIP),
|
||||||
MakeWidget({0, 0}, {82, 82}, WWT_IMGBTN, 2, SPR_MENU_LOAD_GAME, STR_CONTINUE_SAVED_GAME_TIP),
|
MakeWidget({0, 28}, {82, 82}, WWT_IMGBTN, 2, SPR_MENU_LOAD_GAME, STR_CONTINUE_SAVED_GAME_TIP),
|
||||||
MakeWidget({0, 0}, {82, 82}, WWT_IMGBTN, 2, SPR_G2_MENU_MULTIPLAYER, STR_SHOW_MULTIPLAYER_TIP),
|
MakeWidget({0, 28}, {82, 82}, WWT_IMGBTN, 2, SPR_G2_MENU_MULTIPLAYER, STR_SHOW_MULTIPLAYER_TIP),
|
||||||
MakeWidget({0, 0}, {82, 82}, WWT_IMGBTN, 2, SPR_MENU_TOOLBOX, STR_GAME_TOOLS_TIP),
|
MakeWidget({0, 28}, {82, 82}, WWT_IMGBTN, 2, SPR_MENU_TOOLBOX, STR_GAME_TOOLS_TIP),
|
||||||
|
MakeWidget({0, 0}, {82 * 4, 28}, WWT_EMPTY, 1, STR_UPDATE_AVAILABLE),
|
||||||
{ WIDGETS_END },
|
{ WIDGETS_END },
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -42,6 +46,7 @@ static void window_title_menu_mouseup(rct_window *w, rct_widgetindex widgetIndex
|
|||||||
static void window_title_menu_mousedown(rct_window *w, rct_widgetindex widgetIndex, rct_widget* widget);
|
static void window_title_menu_mousedown(rct_window *w, rct_widgetindex widgetIndex, rct_widget* widget);
|
||||||
static void window_title_menu_dropdown(rct_window *w, rct_widgetindex widgetIndex, int32_t dropdownIndex);
|
static void window_title_menu_dropdown(rct_window *w, rct_widgetindex widgetIndex, int32_t dropdownIndex);
|
||||||
static void window_title_menu_cursor(rct_window *w, rct_widgetindex widgetIndex, const ScreenCoordsXY& screenCoords, int32_t *cursorId);
|
static void window_title_menu_cursor(rct_window *w, rct_widgetindex widgetIndex, const ScreenCoordsXY& screenCoords, int32_t *cursorId);
|
||||||
|
static void window_title_menu_invalidate(rct_window *w);
|
||||||
static void window_title_menu_paint(rct_window *w, rct_drawpixelinfo *dpi);
|
static void window_title_menu_paint(rct_window *w, rct_drawpixelinfo *dpi);
|
||||||
|
|
||||||
static rct_window_event_list window_title_menu_events = {
|
static rct_window_event_list window_title_menu_events = {
|
||||||
@@ -70,7 +75,7 @@ static rct_window_event_list window_title_menu_events = {
|
|||||||
nullptr,
|
nullptr,
|
||||||
window_title_menu_cursor,
|
window_title_menu_cursor,
|
||||||
nullptr,
|
nullptr,
|
||||||
nullptr,
|
window_title_menu_invalidate,
|
||||||
window_title_menu_paint,
|
window_title_menu_paint,
|
||||||
nullptr
|
nullptr
|
||||||
};
|
};
|
||||||
@@ -85,7 +90,7 @@ rct_window* window_title_menu_open()
|
|||||||
rct_window* window;
|
rct_window* window;
|
||||||
|
|
||||||
window = window_create(
|
window = window_create(
|
||||||
ScreenCoordsXY(0, context_get_height() - 154), 0, 100, &window_title_menu_events, WC_TITLE_MENU,
|
ScreenCoordsXY(0, context_get_height() - 182), 0, 100, &window_title_menu_events, WC_TITLE_MENU,
|
||||||
WF_STICK_TO_BACK | WF_TRANSPARENT | WF_NO_BACKGROUND);
|
WF_STICK_TO_BACK | WF_TRANSPARENT | WF_NO_BACKGROUND);
|
||||||
window->widgets = window_title_menu_widgets;
|
window->widgets = window_title_menu_widgets;
|
||||||
window->enabled_widgets
|
window->enabled_widgets
|
||||||
@@ -97,7 +102,7 @@ rct_window* window_title_menu_open()
|
|||||||
|
|
||||||
rct_widgetindex i = 0;
|
rct_widgetindex i = 0;
|
||||||
int32_t x = 0;
|
int32_t x = 0;
|
||||||
for (rct_widget* widget = window->widgets; widget->type != WWT_LAST; widget++)
|
for (rct_widget* widget = window->widgets; widget != &window->widgets[WIDX_NEW_VERSION]; widget++)
|
||||||
{
|
{
|
||||||
if (widget_is_enabled(window, i))
|
if (widget_is_enabled(window, i))
|
||||||
{
|
{
|
||||||
@@ -113,7 +118,9 @@ rct_window* window_title_menu_open()
|
|||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
window->width = x;
|
window->width = x;
|
||||||
|
window->widgets[WIDX_NEW_VERSION].right = window->width;
|
||||||
window->windowPos.x = (context_get_width() - window->width) / 2;
|
window->windowPos.x = (context_get_width() - window->width) / 2;
|
||||||
|
window->colours[1] = TRANSLUCENT(COLOUR_LIGHT_ORANGE);
|
||||||
|
|
||||||
window_init_scroll_widgets(window);
|
window_init_scroll_widgets(window);
|
||||||
|
|
||||||
@@ -172,6 +179,9 @@ static void window_title_menu_mouseup(rct_window* w, rct_widgetindex widgetIndex
|
|||||||
context_open_window(WC_SERVER_LIST);
|
context_open_window(WC_SERVER_LIST);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case WIDX_NEW_VERSION:
|
||||||
|
context_open_window(WC_NEW_VERSION);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -226,8 +236,19 @@ static void window_title_menu_cursor(
|
|||||||
gTooltipTimeout = 2000;
|
gTooltipTimeout = 2000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void window_title_menu_invalidate(rct_window* w)
|
||||||
|
{
|
||||||
|
_filterRect = { w->windowPos.x, w->windowPos.y + 28, w->windowPos.x + w->width - 1, w->windowPos.y + 82 + 28 - 1 };
|
||||||
|
if (OpenRCT2::GetContext()->HasNewVersionInfo())
|
||||||
|
{
|
||||||
|
w->enabled_widgets |= (1ULL << WIDX_NEW_VERSION);
|
||||||
|
w->widgets[WIDX_NEW_VERSION].type = WWT_BUTTON;
|
||||||
|
_filterRect.Point1.y = w->windowPos.y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void window_title_menu_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
static void window_title_menu_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
||||||
{
|
{
|
||||||
gfx_filter_rect(dpi, w->windowPos.x, w->windowPos.y, w->windowPos.x + w->width - 1, w->windowPos.y + 82 - 1, PALETTE_51);
|
gfx_filter_rect(dpi, _filterRect, PALETTE_51);
|
||||||
window_draw_widgets(w, dpi);
|
window_draw_widgets(w, dpi);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,6 +121,8 @@ enum FILE_MENU_DDIDX {
|
|||||||
// separator
|
// separator
|
||||||
DDIDX_QUIT_TO_MENU = 10,
|
DDIDX_QUIT_TO_MENU = 10,
|
||||||
DDIDX_EXIT_OPENRCT2 = 11,
|
DDIDX_EXIT_OPENRCT2 = 11,
|
||||||
|
// separator
|
||||||
|
DDIDX_UPDATE_AVAILABLE = 13,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum TOP_TOOLBAR_VIEW_MENU_DDIDX {
|
enum TOP_TOOLBAR_VIEW_MENU_DDIDX {
|
||||||
@@ -488,6 +490,12 @@ static void window_top_toolbar_mousedown(rct_window* w, rct_widgetindex widgetIn
|
|||||||
gDropdownItemsFormat[10] = STR_QUIT_TO_MENU;
|
gDropdownItemsFormat[10] = STR_QUIT_TO_MENU;
|
||||||
gDropdownItemsFormat[11] = STR_EXIT_OPENRCT2;
|
gDropdownItemsFormat[11] = STR_EXIT_OPENRCT2;
|
||||||
numItems = 12;
|
numItems = 12;
|
||||||
|
if (OpenRCT2::GetContext()->HasNewVersionInfo())
|
||||||
|
{
|
||||||
|
gDropdownItemsFormat[12] = STR_EMPTY;
|
||||||
|
gDropdownItemsFormat[13] = STR_UPDATE_AVAILABLE;
|
||||||
|
numItems += 2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
window_dropdown_show_text(
|
window_dropdown_show_text(
|
||||||
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[0] | 0x80,
|
{ w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[0] | 0x80,
|
||||||
@@ -603,6 +611,9 @@ static void window_top_toolbar_dropdown(rct_window* w, rct_widgetindex widgetInd
|
|||||||
case DDIDX_EXIT_OPENRCT2:
|
case DDIDX_EXIT_OPENRCT2:
|
||||||
context_quit();
|
context_quit();
|
||||||
break;
|
break;
|
||||||
|
case DDIDX_UPDATE_AVAILABLE:
|
||||||
|
context_open_window(WC_NEW_VERSION);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WIDX_CHEATS:
|
case WIDX_CHEATS:
|
||||||
|
|||||||
@@ -339,17 +339,6 @@ namespace OpenRCT2
|
|||||||
|
|
||||||
crash_init();
|
crash_init();
|
||||||
|
|
||||||
if (!_versionCheckFuture.valid())
|
|
||||||
{
|
|
||||||
_versionCheckFuture = std::async(std::launch::async, [this] {
|
|
||||||
_newVersionInfo = get_latest_version();
|
|
||||||
if (!String::StartsWith(gVersionInfoTag, _newVersionInfo.tag))
|
|
||||||
{
|
|
||||||
_hasNewVersionInfo = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gConfigGeneral.last_run_version != nullptr && String::Equals(gConfigGeneral.last_run_version, OPENRCT2_VERSION))
|
if (gConfigGeneral.last_run_version != nullptr && String::Equals(gConfigGeneral.last_run_version, OPENRCT2_VERSION))
|
||||||
{
|
{
|
||||||
gOpenRCT2ShowChangelog = false;
|
gOpenRCT2ShowChangelog = false;
|
||||||
@@ -486,6 +475,18 @@ namespace OpenRCT2
|
|||||||
|
|
||||||
_titleScreen = std::make_unique<TitleScreen>(*_gameState);
|
_titleScreen = std::make_unique<TitleScreen>(*_gameState);
|
||||||
_uiContext->Initialise();
|
_uiContext->Initialise();
|
||||||
|
|
||||||
|
if (!_versionCheckFuture.valid())
|
||||||
|
{
|
||||||
|
_versionCheckFuture = std::async(std::launch::async, [this] {
|
||||||
|
_newVersionInfo = get_latest_version();
|
||||||
|
if (!String::StartsWith(gVersionInfoTag, _newVersionInfo.tag))
|
||||||
|
{
|
||||||
|
_hasNewVersionInfo = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1629,7 +1629,7 @@ void window_resize_gui(int32_t width, int32_t height)
|
|||||||
if (titleWind != nullptr)
|
if (titleWind != nullptr)
|
||||||
{
|
{
|
||||||
titleWind->windowPos.x = (width - titleWind->width) / 2;
|
titleWind->windowPos.x = (width - titleWind->width) / 2;
|
||||||
titleWind->windowPos.y = height - 154;
|
titleWind->windowPos.y = height - 182;
|
||||||
}
|
}
|
||||||
|
|
||||||
rct_window* exitWind = window_find_by_class(WC_TITLE_EXIT);
|
rct_window* exitWind = window_find_by_class(WC_TITLE_EXIT);
|
||||||
|
|||||||
Reference in New Issue
Block a user