From 8e4ec974e0a7b0e45155ca9580e264b140ebee7e Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Sat, 8 May 2021 17:20:30 +0200 Subject: [PATCH] Menu: Add gameinfo_steambg manifest setting, so we can support background images for games designed for the SteamUI-era --- src/menu-fn/background.qc | 48 +++++++++++++++++++++++++++++++++++++ src/menu-fn/defs.h | 1 + src/menu-fn/entry.qc | 7 ++++-- src/menu-fn/m_customgame.qc | 4 ++++ src/menu-fn/m_main.qc | 2 +- src/menu-fn/progs.src | 1 + 6 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 src/menu-fn/background.qc diff --git a/src/menu-fn/background.qc b/src/menu-fn/background.qc new file mode 100644 index 00000000..089b07fd --- /dev/null +++ b/src/menu-fn/background.qc @@ -0,0 +1,48 @@ +void +Background_WON(void) +{ + drawpic([g_menuofs[0],g_menuofs[1]], g_bmp[SPLASH], + [640,480], [1,1,1], 1.0f); +} + +typedef struct +{ + string strMat; + vector vecSize; + vector vecPos; +} backResource_t; + +backResource_t g_back800[] = +{ + {"resource/background/800_1_a_loading",[256,256,0],[0,0,0]}, + {"resource/background/800_1_b_loading",[256,256,0],[256,0,0]}, + {"resource/background/800_1_c_loading",[256,256,0],[512,0,0]}, + {"resource/background/800_1_d_loading",[32,256,0],[768,0,0]}, + {"resource/background/800_2_a_loading",[256,256,0],[0,256,0]}, + {"resource/background/800_2_b_loading",[256,256,0],[256,256,0]}, + {"resource/background/800_2_c_loading",[256,256,0],[512,256,0]}, + {"resource/background/800_2_d_loading",[32,256,0],[768,256,0]}, + {"resource/background/800_3_a_loading",[256,88,0],[0,512,0]}, + {"resource/background/800_3_b_loading",[256,88,0],[256,512,0]}, + {"resource/background/800_3_c_loading",[256,88,0],[512,512,0]}, + {"resource/background/800_3_d_loading",[32,88,0],[768,512,0]} +}; + +void +Background_Steam(void) +{ + for (int i = 0; i < g_back800.length; i++) { + vector pos, size; + + /* scale down 800x600 to 640x480 */ + size = g_back800[i].vecSize * 0.8f; + pos[0] = g_menuofs[0] + (g_back800[i].vecPos[0] * 0.8f); + pos[1] = g_menuofs[1] + (g_back800[i].vecPos[1] * 0.8f); + + drawpic(pos, \ + g_back800[i].strMat, \ + size, \ + [1,1,1], \ + 1.0f); + } +} diff --git a/src/menu-fn/defs.h b/src/menu-fn/defs.h index ccc6d9ff..4f613a98 100644 --- a/src/menu-fn/defs.h +++ b/src/menu-fn/defs.h @@ -90,6 +90,7 @@ typedef struct string fallback_dir; string chatroom; string introvideo; + int steambg; } gameinfo_t; var int gameinfo_current = -1; diff --git a/src/menu-fn/entry.qc b/src/menu-fn/entry.qc index 5446142c..6f3ed35f 100644 --- a/src/menu-fn/entry.qc +++ b/src/menu-fn/entry.qc @@ -211,8 +211,11 @@ m_draw(vector screensize) drawfill([0,0], screensize, [0,0,0], 0.75f); } else { drawfill([0,0], screensize, [0,0,0], 1.0f); - drawpic([g_menuofs[0],g_menuofs[1]], g_bmp[SPLASH], - [640,480], [1,1,1], 1.0f); + + if (games[gameinfo_current].steambg == 0) + Background_WON(); + else + Background_Steam(); } const string ver = "Nuclide (build " __DATE__ ")"; diff --git a/src/menu-fn/m_customgame.qc b/src/menu-fn/m_customgame.qc index a446bfaa..90c826a2 100644 --- a/src/menu-fn/m_customgame.qc +++ b/src/menu-fn/m_customgame.qc @@ -244,6 +244,7 @@ games_init(void) games[id].chatroom = gamedirname; games[id].readme = "readme.txt"; games[id].pkgid = -1; + games[id].steambg = 0; for (int i = 0; i < county; i++) { switch(argv(i)) { @@ -331,6 +332,9 @@ games_init(void) case "gameinfo_introvideo": games[id].introvideo = argv(i+1); break; + case "gameinfo_steambg": + games[id].steambg = (int)stof(argv(i+1)); + break; default: break; } diff --git a/src/menu-fn/m_main.qc b/src/menu-fn/m_main.qc index 9a563555..f720347b 100644 --- a/src/menu-fn/m_main.qc +++ b/src/menu-fn/m_main.qc @@ -373,7 +373,7 @@ menu_main_draw(void) col_help,1.0f, 0, font_label); } else { /* Don't even attempt to display the logo.avi otherwise */ - if (checkcommand("ffmpeg_videobitrate")) { + if (games[gameinfo_current].steambg == 0 && checkcommand("ffmpeg_videobitrate")) { drawpic([g_menuofs[0],g_menuofs[1] + 70], "logo_avi", g_logosize, [1,1,1], 1.0f); g_logosize = gecko_get_texture_extent("logo_avi"); diff --git a/src/menu-fn/progs.src b/src/menu-fn/progs.src index 06294631..b1ed5f43 100644 --- a/src/menu-fn/progs.src +++ b/src/menu-fn/progs.src @@ -69,5 +69,6 @@ m_intro.qc m_main.qc music.qc menu.qc +background.qc entry.qc #endlist