Menu-FN: Avoid poking the games[] struct directly
This commit is contained in:
parent
2576f803cd
commit
8422ddd26b
17 changed files with 262 additions and 136 deletions
|
@ -18,6 +18,7 @@
|
|||
|
||||
var int autocvar_menu_intro = TRUE;
|
||||
var int autocvar__menu_singleplayer;
|
||||
var bool autocvar_menu_steambg = false;
|
||||
|
||||
#define KEY_UNKNOWN -1
|
||||
#define KEY_GAME 0
|
||||
|
@ -59,50 +60,6 @@ typedef struct
|
|||
void(float evtype, float scanx, float chary, float devid) m_input;
|
||||
} menupage_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GAMEINFO_NONE,
|
||||
GAMEINFO_MANIFEST,
|
||||
GAMEINFO_GITXT,
|
||||
GAMEINFO_LIBLIST
|
||||
} gi_type;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
string game;
|
||||
string gamedir;
|
||||
string base_dir;
|
||||
string url_info;
|
||||
string url_dl;
|
||||
string version;
|
||||
string readme;
|
||||
int size;
|
||||
int svonly;
|
||||
int cldll;
|
||||
string type;
|
||||
string hlversion;
|
||||
string pkgname;
|
||||
string pkgfile;
|
||||
int pkgid;
|
||||
int nomodels;
|
||||
int nosprays;
|
||||
int installed;
|
||||
string mpentity;
|
||||
string gamedll;
|
||||
string startmap;
|
||||
string trainingmap;
|
||||
string fallback_dir;
|
||||
string chatroom;
|
||||
string menumap;
|
||||
string introvideo;
|
||||
int steambg;
|
||||
gi_type info_type;
|
||||
} gameinfo_t;
|
||||
|
||||
var int gameinfo_current = -1;
|
||||
int gameinfo_count;
|
||||
gameinfo_t *games;
|
||||
|
||||
int g_menupage;
|
||||
|
||||
enum
|
||||
|
|
|
@ -84,6 +84,7 @@ void
|
|||
m_init(void)
|
||||
{
|
||||
vector g_btnsize;
|
||||
string menuMap;
|
||||
|
||||
print("--------- Initializing Menu ----------\n");
|
||||
print("Built: " __DATE__ " " __TIME__"\n");
|
||||
|
@ -139,32 +140,25 @@ m_init(void)
|
|||
Strings_Init();
|
||||
Updates_Init();
|
||||
|
||||
if (games[gameinfo_current].gamedir != "valve" || games[gameinfo_current].steambg == 1) {
|
||||
if (GameLibrary_GetInfo(GAMEINFO_GAMEDIR) != "valve") {
|
||||
m_intro_skip();
|
||||
Music_MenuStart();
|
||||
}
|
||||
|
||||
if (games[gameinfo_current].pkgfile != "")
|
||||
if not (whichpack(games[gameinfo_current].pkgfile) || autocvar_menu_updating) {
|
||||
/* reload in case of video restarts? */
|
||||
shaderforname("logo_avi", "{\n{\nvideomap av:media/logo.avi\n}\n}");
|
||||
g_menupage = PAGE_UPDATES;
|
||||
}
|
||||
|
||||
Menu_AutoScale();
|
||||
Menu_GammaHack();
|
||||
|
||||
if (g_intro_stage == 0) {
|
||||
string videofile = games[gameinfo_current].introvideo;
|
||||
string videofile = GameLibrary_GetInfo(GAMEINFO_INTROVIDEO);
|
||||
|
||||
if (videofile) {
|
||||
localcmd(strcat("playvideo ", videofile, "\n"));
|
||||
}
|
||||
}
|
||||
|
||||
if (games[gameinfo_current].menumap != "") {
|
||||
string mapname = games[gameinfo_current].menumap;
|
||||
localcmd(strcat("map_background ", mapname, "\n"));
|
||||
menuMap = GameLibrary_GetInfo(GAMEINFO_MENUMAP);
|
||||
if (menuMap != "") {
|
||||
localcmd(strcat("map_background ", menuMap, "\n"));
|
||||
}
|
||||
|
||||
/* prepare spray logo keys */
|
||||
|
@ -285,7 +279,7 @@ m_draw(vector screensize)
|
|||
drawfill([0,0], screensize, [0,0,0], 1.0f);
|
||||
|
||||
/* draw either WON or Steam background */
|
||||
if (games[gameinfo_current].steambg == 0)
|
||||
if (autocvar_menu_steambg == false)
|
||||
Background_WON();
|
||||
else
|
||||
Background_Steam();
|
||||
|
|
|
@ -339,7 +339,7 @@ cr_makeconnection(void)
|
|||
string channel;
|
||||
i = TCP_Connect(&tcp_irc, "tcp://irc.frag-net.com:6667");
|
||||
|
||||
channel = games[gameinfo_current].chatroom;
|
||||
channel = GameLibrary_GetInfo(GAMEINFO_CHATROOM);
|
||||
|
||||
/* we're already setting a default channel, but a mod might set it
|
||||
set it to something empty to mess with us */
|
||||
|
|
|
@ -196,7 +196,7 @@ menu_creategame_init(void)
|
|||
g_mapcount = search_getsize(mapsearch);
|
||||
for (i = 0; i < g_mapcount; i++) {
|
||||
string tmp, dir;
|
||||
string gdir = games[gameinfo_current].gamedir;
|
||||
string gdir = GameLibrary_GetInfo(GAMEINFO_GAMEDIR);
|
||||
int list = TRUE;
|
||||
tmp = substring(search_getfilename(mapsearch, i), 5, -1);
|
||||
|
||||
|
|
|
@ -86,9 +86,9 @@ customgame_sbmods_changed(int val)
|
|||
void
|
||||
customgame_lbmods_changed(void)
|
||||
{
|
||||
int gid = customgame_lbMods.GetSelected();
|
||||
int gameID = customgame_lbMods.GetSelected();
|
||||
|
||||
if (games[gid].installed == TRUE) {
|
||||
if (GameLibrary_GetGameInfo(gameID, GAMEINFO_INSTALLED) == true) {
|
||||
customgame_btnActivate.SetExecute(customgame_btnactivate_start);
|
||||
customgame_btnInstall.SetExecute(__NULL__);
|
||||
} else {
|
||||
|
|
|
@ -224,8 +224,6 @@ menu_customize_init(void)
|
|||
}
|
||||
}
|
||||
search_end(searchy);
|
||||
} else {
|
||||
games[gameinfo_current].nosprays = 1;
|
||||
}
|
||||
|
||||
/* scan and cache the models */
|
||||
|
@ -240,8 +238,6 @@ menu_customize_init(void)
|
|||
precache_pic(g_models[i]);
|
||||
}
|
||||
search_end(searchy);
|
||||
} else {
|
||||
games[gameinfo_current].nomodels = 1;
|
||||
}
|
||||
|
||||
fn_customize = spawn(CWidget);
|
||||
|
@ -299,7 +295,7 @@ menu_customize_init(void)
|
|||
cz_sldReceiveVol.SetCallback(cz_sldReceiveVolChanged);
|
||||
Widget_Add(fn_customize, cz_sldReceiveVol);
|
||||
|
||||
if (games[gameinfo_current].nosprays == 0) {
|
||||
if (GameLibrary_GetInfo(GAMEINFO_NOSPRAYS) == false) {
|
||||
cz_psSpray = spawn(CPictureSwitch);
|
||||
cz_psSpray.SetPos(212,226);
|
||||
cz_psSpray.SetSize(99,124);
|
||||
|
@ -312,7 +308,7 @@ menu_customize_init(void)
|
|||
Widget_Add(fn_customize, cz_psSpray);
|
||||
}
|
||||
|
||||
if (games[gameinfo_current].nomodels == 0) {
|
||||
if (GameLibrary_GetInfo(GAMEINFO_NOPLAYERMODELS) == false) {
|
||||
#ifdef MODEL_PREVIEW
|
||||
static vector vecDistance = [ 45, 0, 0 ];
|
||||
static void ModelPreview_SetModel( string strModel ) {
|
||||
|
@ -485,7 +481,7 @@ menu_customize_draw(void)
|
|||
|
||||
|
||||
|
||||
if (games[gameinfo_current].nomodels == 0) {
|
||||
if (GameLibrary_GetInfo(GAMEINFO_NOPLAYERMODELS) == false) {
|
||||
drawfill([g_menuofs[0] + 410,g_menuofs[1] + 160], [170, 221], FRAME_COLOR, 1.0f);
|
||||
drawfill([g_menuofs[0] + 413,g_menuofs[1] + 163], [164,190], [0,0,0], 1.0f);
|
||||
WLabel_Static(410, 390, "Colors", 14, 14, [1,1,1],
|
||||
|
@ -516,7 +512,7 @@ menu_customize_draw(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
if (games[gameinfo_current].nosprays == 0)
|
||||
if (GameLibrary_GetInfo(GAMEINFO_NOSPRAYS) == false)
|
||||
WLabel_Static(212, 203, m_reslbl[IDS_PROFILE_LOGO], 14, 14, [1,1,1],
|
||||
1.0f, 0, font_arial);
|
||||
|
||||
|
|
|
@ -78,7 +78,7 @@ btn_training(void)
|
|||
{
|
||||
localcmd("stopmusic\n");
|
||||
localcmd("maxplayers 1\n");
|
||||
localcmd(games[gameinfo_current].trainingmap);
|
||||
localcmd(GameLibrary_GetInfo(GAMEINFO_TRAININGMAP));
|
||||
|
||||
/* TODO: Some mods may choose to put movies in this... */
|
||||
RichPresence_Clear();
|
||||
|
@ -195,7 +195,7 @@ menu_main_init(void)
|
|||
main_btnNewGame.SetImage(BTN_NEWGAME);
|
||||
main_btnNewGame.SetPos(70,208);
|
||||
/* new game not available in multiplayer_only */
|
||||
if (games[gameinfo_current].type != "Multiplayer")
|
||||
if (GameLibrary_GetInfo(GAMEINFO_TYPE) != "Multiplayer")
|
||||
main_btnNewGame.SetExecute(btn_newgame_start);
|
||||
Widget_Add(fn_main, main_btnNewGame);
|
||||
|
||||
|
@ -204,7 +204,7 @@ menu_main_init(void)
|
|||
main_btnTraining.SetImage(BTN_TRAINING);
|
||||
main_btnTraining.SetPos(70,236);
|
||||
/* some mods actively try to hide the option */
|
||||
if (games[gameinfo_current].trainingmap != "")
|
||||
if (GameLibrary_GetInfo(GAMEINFO_TRAININGMAP) != "")
|
||||
main_btnTraining.SetExecute(btn_training);
|
||||
Widget_Add(fn_main, main_btnTraining);
|
||||
|
||||
|
@ -220,7 +220,7 @@ menu_main_init(void)
|
|||
main_btnLoadGame.SetImage(BTN_LOADGAME);
|
||||
main_btnLoadGame.SetPos(70,292);
|
||||
/* disable in multiplayer_only */
|
||||
if (games[gameinfo_current].type != "Multiplayer")
|
||||
if (GameLibrary_GetInfo(GAMEINFO_TYPE) != "Multiplayer")
|
||||
main_btnLoadGame.SetExecute(btn_loadgame_start);
|
||||
Widget_Add(fn_main, main_btnLoadGame);
|
||||
|
||||
|
@ -229,7 +229,7 @@ menu_main_init(void)
|
|||
main_btnMultiplayer.SetImage(BTN_MULTIPLAYER);
|
||||
main_btnMultiplayer.SetPos(70,320);
|
||||
/* disable when it's singleplayer_only */
|
||||
if (games[gameinfo_current].type != "Singleplayer")
|
||||
if (GameLibrary_GetInfo(GAMEINFO_TYPE) != "Singleplayer")
|
||||
main_btnMultiplayer.SetExecute(btn_multiplayer_start);
|
||||
Widget_Add(fn_main, main_btnMultiplayer);
|
||||
|
||||
|
@ -296,14 +296,14 @@ menu_main_init(void)
|
|||
main_btn2NewGame.SetImage(BTN_NEWGAME);
|
||||
main_btn2NewGame.SetPos(70,236);
|
||||
/* disable in multiplayer_only */
|
||||
if (games[gameinfo_current].type != "Multiplayer")
|
||||
if (GameLibrary_GetInfo(GAMEINFO_TYPE) != "Multiplayer")
|
||||
main_btn2NewGame.SetExecute(btn_newgame_start);
|
||||
Widget_Add(fn_main2, main_btn2NewGame);
|
||||
|
||||
/* Training */
|
||||
main_btn2Training = spawn(CMainButton);
|
||||
main_btn2Training.SetImage(BTN_TRAINING);
|
||||
if (games[gameinfo_current].trainingmap)
|
||||
if (GameLibrary_GetInfo(GAMEINFO_TRAININGMAP) != "")
|
||||
main_btn2Training.SetExecute(btn_training);
|
||||
main_btn2Training.SetPos(70,264);
|
||||
Widget_Add(fn_main2, main_btn2Training);
|
||||
|
@ -320,7 +320,7 @@ menu_main_init(void)
|
|||
main_btn2LoadGame.SetImage(BTN_SAVELOAD);
|
||||
main_btn2LoadGame.SetPos(70,320);
|
||||
/* disable in multiplayer_only */
|
||||
if (games[gameinfo_current].type != "Multiplayer")
|
||||
if (GameLibrary_GetInfo(GAMEINFO_TYPE) != "Multiplayer")
|
||||
main_btn2LoadGame.SetExecute(btn_loadgame_start);
|
||||
Widget_Add(fn_main2, main_btn2LoadGame);
|
||||
|
||||
|
@ -328,7 +328,7 @@ menu_main_init(void)
|
|||
main_btn2Multiplayer = spawn(CMainButton);
|
||||
main_btn2Multiplayer.SetImage(BTN_MULTIPLAYER);
|
||||
main_btn2Multiplayer.SetPos(70,348);
|
||||
if (games[gameinfo_current].type != "Singleplayer")
|
||||
if (GameLibrary_GetInfo(GAMEINFO_TYPE) != "Singleplayer")
|
||||
main_btn2Multiplayer.SetExecute(btn_multiplayer_start);
|
||||
Widget_Add(fn_main2, main_btn2Multiplayer);
|
||||
|
||||
|
@ -379,7 +379,7 @@ menu_main_draw(void)
|
|||
} else {
|
||||
#ifndef WEBMENU
|
||||
/* Don't even attempt to display the logo.avi otherwise */
|
||||
if (games[gameinfo_current].steambg == 0 && checkcommand("ffmpeg_videobitrate")) {
|
||||
if (autocvar_menu_steambg == false && checkcommand("ffmpeg_videobitrate")) {
|
||||
drawpic([g_menuofs[0],g_menuofs[1] + 70], g_bmp[LOGO_AVI],
|
||||
g_logosize, [1,1,1], 1.0f);
|
||||
g_logosize = gecko_get_texture_extent(g_bmp[LOGO_AVI]);
|
||||
|
|
|
@ -171,6 +171,12 @@ mp_btndisconnect(void)
|
|||
RichPresence_Clear();
|
||||
}
|
||||
|
||||
void
|
||||
mp_btnquickstart(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
menu_multiplayer_init(void)
|
||||
{
|
||||
|
@ -181,7 +187,7 @@ menu_multiplayer_init(void)
|
|||
/* unconnected menu */
|
||||
mp_btnQuickstart = spawn(CMainButton);
|
||||
mp_btnQuickstart.SetImage(BTN_QUICKSTART);
|
||||
//mp_btnQuickstart.SetExecute(btn_console);
|
||||
mp_btnQuickstart.SetExecute(mp_btnquickstart);
|
||||
mp_btnQuickstart.SetPos(50,140);
|
||||
Widget_Add(fn_multiplayer, mp_btnQuickstart);
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ ng_btneasy_start(void)
|
|||
g_menupage = PAGE_MAIN;
|
||||
localcmd("stopmusic\n");
|
||||
localcmd("set skill 1; maxplayers 1\n");
|
||||
localcmd(games[gameinfo_current].startmap);
|
||||
localcmd(GameLibrary_GetInfo(GAMEINFO_STARTMAP));
|
||||
RichPresence_Clear();
|
||||
RichPresence_Set("status", "Singleplayer: Easy");
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ ng_btnnormal_start(void)
|
|||
g_menupage = PAGE_MAIN;
|
||||
localcmd("stopmusic\n");
|
||||
localcmd("set skill 2; maxplayers 1\n");
|
||||
localcmd(games[gameinfo_current].startmap);
|
||||
localcmd(GameLibrary_GetInfo(GAMEINFO_STARTMAP));
|
||||
RichPresence_Clear();
|
||||
RichPresence_Set("status", "Singleplayer: Normal");
|
||||
}
|
||||
|
@ -68,7 +68,7 @@ ng_btnhard_start(void)
|
|||
g_menupage = PAGE_MAIN;
|
||||
localcmd("stopmusic\n");
|
||||
localcmd("set skill 3; maxplayers 1\n");
|
||||
localcmd(games[gameinfo_current].startmap);
|
||||
localcmd(GameLibrary_GetInfo(GAMEINFO_STARTMAP));
|
||||
RichPresence_Clear();
|
||||
RichPresence_Set("status", "Singleplayer: Hard");
|
||||
}
|
||||
|
|
|
@ -176,10 +176,11 @@ menu_updates_draw(void)
|
|||
|
||||
if (!g_updates_initialized) {
|
||||
int pkg_ready = 0;
|
||||
string packages = GameLibrary_GetInfo(GAMEINFO_PACKAGELIST);
|
||||
|
||||
/* we have no hard-coded list of supported packages, so query frag-net.com */
|
||||
if (!games[gameinfo_current].pkgname && !g_pkgname_updating) {
|
||||
string gamedir = games[gameinfo_current].gamedir;
|
||||
if (!packages && !g_pkgname_updating) {
|
||||
string gamedir = GameLibrary_GetInfo(GAMEINFO_GAMEDIR);
|
||||
print(sprintf("Querying package names for %s\n", gamedir));
|
||||
uri_get(sprintf("http://www.frag-net.com/dl/packages_%s", uri_escape(gamedir)), MODSERVER_REQ_PKGNAMES);
|
||||
g_pkgname_updating = 1;
|
||||
|
|
|
@ -71,7 +71,7 @@ menu_viewreadme_init(void)
|
|||
|
||||
filestream rdme;
|
||||
string lstline;
|
||||
rdme = fopen(games[gameinfo_current].readme, FILE_READ);
|
||||
rdme = fopen(GameLibrary_GetInfo(GAMEINFO_READMEFILE), FILE_READ);
|
||||
if (rdme >= 0) {
|
||||
while((lstline = fgets(rdme))) {
|
||||
vr_lbReadme.AddWrapped(lstline);
|
||||
|
|
|
@ -19,6 +19,7 @@ Strings_Init(void)
|
|||
{
|
||||
filestream stringslst;
|
||||
string lstline;
|
||||
string gameTitle = GameLibrary_GetInfo(GAMEINFO_TITLE);
|
||||
|
||||
m_reslbl[IDS_LANGUAGE] = _("IDS_LANGUAGE");
|
||||
m_reslbl[IDS_BORDERLESS_REGFAIL] = _("IDS_BORDERLESS_REGFAIL");
|
||||
|
@ -209,19 +210,19 @@ Strings_Init(void)
|
|||
m_reslbl[IDS_LOADSAVE_RETURN] = _("IDS_LOADSAVE_RETURN");
|
||||
m_reslbl[IDS_MAIN_RETURNHELP] = _("IDS_MAIN_RETURNHELP");
|
||||
m_reslbl[IDS_MAIN_NEWGAMEHELP] = _("IDS_MAIN_NEWGAMEHELP");
|
||||
m_reslbl[IDS_MAIN_TRAININGHELP] = sprintf(_("IDS_MAIN_TRAININGHELP"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_MAIN_TRAININGHELP] = sprintf(_("IDS_MAIN_TRAININGHELP"), gameTitle);
|
||||
m_reslbl[IDS_MAIN_LOADHELP] = _("IDS_MAIN_LOADHELP");
|
||||
m_reslbl[IDS_MAIN_LOADSAVEHELP] = _("IDS_MAIN_LOADSAVEHELP");
|
||||
m_reslbl[IDS_MAIN_CONFIGUREHELP] = _("IDS_MAIN_CONFIGUREHELP");
|
||||
m_reslbl[IDS_MAIN_READMEHELP] = _("IDS_MAIN_READMEHELP");
|
||||
m_reslbl[IDS_MAIN_ORDERHELP] = sprintf(_("IDS_MAIN_ORDERHELP"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_MAIN_QUITHELP] = sprintf(_("IDS_MAIN_QUITHELP"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_MAIN_ORDERHELP] = sprintf(_("IDS_MAIN_ORDERHELP"), gameTitle);
|
||||
m_reslbl[IDS_MAIN_QUITHELP] = sprintf(_("IDS_MAIN_QUITHELP"), gameTitle);
|
||||
m_reslbl[IDS_MAIN_QUICKHELP] = _("IDS_MAIN_QUICKHELP");
|
||||
m_reslbl[IDS_MAIN_MULTIPLAYERHELP] = sprintf(_("IDS_MAIN_MULTIPLAYERHELP"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_MAIN_MULTIPLAYERHELP] = sprintf(_("IDS_MAIN_MULTIPLAYERHELP"), gameTitle);
|
||||
m_reslbl[IDS_CHAT_PROMPT] = _("IDS_CHAT_PROMPT");
|
||||
m_reslbl[IDS_NEWGAME_EASYHELP] = sprintf(_("IDS_NEWGAME_EASYHELP"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_NEWGAME_MEDIUMHELP] = sprintf(_("IDS_NEWGAME_MEDIUMHELP"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_NEWGAME_DIFFICULTHELP] = sprintf(_("IDS_NEWGAME_DIFFICULTHELP"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_NEWGAME_EASYHELP] = sprintf(_("IDS_NEWGAME_EASYHELP"), gameTitle);
|
||||
m_reslbl[IDS_NEWGAME_MEDIUMHELP] = sprintf(_("IDS_NEWGAME_MEDIUMHELP"), gameTitle);
|
||||
m_reslbl[IDS_NEWGAME_DIFFICULTHELP] = sprintf(_("IDS_NEWGAME_DIFFICULTHELP"), gameTitle);
|
||||
m_reslbl[IDS_NEWGAME_RETURNHELP] = _("IDS_NEWGAME_RETURNHELP");
|
||||
m_reslbl[IDS_NEWPROFILE_TITLE] = _("IDS_NEWPROFILE_TITLE");
|
||||
m_reslbl[IDS_NEWPROFILE_NAME] = _("IDS_NEWPROFILE_NAME");
|
||||
|
@ -235,7 +236,7 @@ Strings_Init(void)
|
|||
m_reslbl[IDS_VIDEO_SCREENSIZE] = _("IDS_VIDEO_SCREENSIZE");
|
||||
m_reslbl[IDS_VIDEO_GAMMA] = _("IDS_VIDEO_GAMMA");
|
||||
m_reslbl[IDS_VIDEO_GLARE] = _("IDS_VIDEO_GLARE");
|
||||
m_reslbl[IDS_VIDEO_GAMMAHELP] = sprintf(_("IDS_VIDEO_GAMMAHELP"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_VIDEO_GAMMAHELP] = sprintf(_("IDS_VIDEO_GAMMAHELP"), gameTitle);
|
||||
m_reslbl[IDS_VIDEO_GLAREHELP] = _("IDS_VIDEO_GLAREHELP");
|
||||
m_reslbl[IDS_VIDMODE_WINDOWED] = _("IDS_VIDMODE_WINDOWED");
|
||||
m_reslbl[IDS_VIDMODE_MOUSE] = _("IDS_VIDMODE_MOUSE");
|
||||
|
@ -254,7 +255,7 @@ Strings_Init(void)
|
|||
m_reslbl[IDS_STATUS_SKIPSERVER] = _("IDS_STATUS_SKIPSERVER");
|
||||
m_reslbl[IDS_STATUS_ELPASEDTIME] = _("IDS_STATUS_ELPASEDTIME");
|
||||
m_reslbl[IDS_TRAINING_EXITCURRENT] = _("IDS_TRAINING_EXITCURRENT");
|
||||
m_reslbl[IDS_MAIN_QUITPROMPTINGAME] = sprintf(_("IDS_MAIN_QUITPROMPTINGAME"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_MAIN_QUITPROMPTINGAME] = sprintf(_("IDS_MAIN_QUITPROMPTINGAME"), gameTitle);
|
||||
m_reslbl[IDS_MAIN_QUITPROMPT] = _("IDS_MAIN_QUITPROMPT");
|
||||
m_reslbl[IDS_CONTROLS_CANCELPROMPT] = _("IDS_CONTROLS_CANCELPROMPT");
|
||||
m_reslbl[IDS_LOAD_LOADPROMPT] = _("IDS_LOAD_LOADPROMPT");
|
||||
|
@ -305,11 +306,11 @@ Strings_Init(void)
|
|||
m_reslbl[IDS_BTN_QUICK] = _("IDS_BTN_QUICK");
|
||||
m_reslbl[IDS_PROFILE_LOGO] = _("IDS_PROFILE_LOGO");
|
||||
m_reslbl[IDS_BTN_BROWSE] = _("IDS_BTN_BROWSE");
|
||||
m_reslbl[IDS_MULTI_BROWSEHELP] = sprintf(_("IDS_MULTI_BROWSEHELP"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_MULTI_BROWSEHELP] = sprintf(_("IDS_MULTI_BROWSEHELP"), gameTitle);
|
||||
m_reslbl[IDS_BTN_CHAT] = _("IDS_BTN_CHAT");
|
||||
m_reslbl[IDS_MULTI_CHATHELP] = sprintf(_("IDS_MULTI_CHATHELP"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_MULTI_CHATHELP] = sprintf(_("IDS_MULTI_CHATHELP"), gameTitle);
|
||||
m_reslbl[IDS_BTN_LAN] = _("IDS_BTN_LAN");
|
||||
m_reslbl[IDS_MULTI_LANHELP] = sprintf(_("IDS_MULTI_LANHELP"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_MULTI_LANHELP] = sprintf(_("IDS_MULTI_LANHELP"), gameTitle);
|
||||
m_reslbl[IDS_BTN_CUSTOMIZE] = _("IDS_BTN_CUSTOMIZE");
|
||||
m_reslbl[IDS_MULTI_CUSTOMIZEHELP] = _("IDS_MULTI_CUSTOMIZEHELP");
|
||||
m_reslbl[IDS_CREATEROOM_ROOMPASSWORD] = _("IDS_CREATEROOM_ROOMPASSWORD");
|
||||
|
@ -340,12 +341,12 @@ Strings_Init(void)
|
|||
m_reslbl[IDS_QUICKSTART_TITLE] = _("IDS_QUICKSTART_TITLE");
|
||||
m_reslbl[IDS_BTN_LISTROOMS] = _("IDS_BTN_LISTROOMS");
|
||||
m_reslbl[IDS_BTN_GORE] = _("IDS_BTN_GORE");
|
||||
m_reslbl[IDS_BTN_AUTOPATCH] = sprintf(_("IDS_BTN_AUTOPATCH"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_BTN_AUTOPATCH] = sprintf(_("IDS_BTN_AUTOPATCH"), gameTitle);
|
||||
m_reslbl[IDS_CONFIGURE_GOREHELP] = _("IDS_CONFIGURE_GOREHELP");
|
||||
m_reslbl[IDS_CONFIGURE_AUTOPATCHHELP] = sprintf(_("IDS_CONFIGURE_AUTOPATCHHELP"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_CONFIGURE_AUTOPATCHHELP] = sprintf(_("IDS_CONFIGURE_AUTOPATCHHELP"), gameTitle);
|
||||
m_reslbl[IDS_CHAT_NOSERVERS] = _("IDS_CHAT_NOSERVERS");
|
||||
m_reslbl[IDS_CHAT_NOPROFILE] = _("IDS_CHAT_NOPROFILE");
|
||||
m_reslbl[IDS_INIT_DX6REQUIRED] = sprintf(_("IDS_INIT_DX6REQUIRED"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_INIT_DX6REQUIRED] = sprintf(_("IDS_INIT_DX6REQUIRED"), gameTitle);
|
||||
m_reslbl[IDS_FNET_VALIDATIONFAIL] = _("IDS_FNET_VALIDATIONFAIL");
|
||||
m_reslbl[IDS_FNET_VALIDATIONFAIL2] = _("IDS_FNET_VALIDATIONFAIL2");
|
||||
m_reslbl[IDS_FNET_AUTHOUTOFORDER] = _("IDS_FNET_AUTHOUTOFORDER");
|
||||
|
@ -353,7 +354,7 @@ Strings_Init(void)
|
|||
m_reslbl[IDS_FNET_ENCRYPTBAD] = _("IDS_FNET_ENCRYPTBAD");
|
||||
m_reslbl[IDS_FNET_BADPUBLICKEY] = _("IDS_FNET_BADPUBLICKEY");
|
||||
m_reslbl[IDS_FNET_AUTHNOMEM] = _("IDS_FNET_AUTHNOMEM");
|
||||
m_reslbl[IDS_CD_NEEDCDKEY] = sprintf(_("IDS_CD_NEEDCDKEY"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_CD_NEEDCDKEY] = sprintf(_("IDS_CD_NEEDCDKEY"), gameTitle);
|
||||
m_reslbl[IDS_CD_BADKEY] = _("IDS_CD_BADKEY");
|
||||
m_reslbl[IDS_CD_BADKEYTYPED] = _("IDS_CD_BADKEYTYPED");
|
||||
m_reslbl[IDS_MD5_HASHFAIL] = _("IDS_MD5_HASHFAIL");
|
||||
|
@ -372,7 +373,7 @@ Strings_Init(void)
|
|||
m_reslbl[IDS_CHAT_NOROOMLIST] = _("IDS_CHAT_NOROOMLIST");
|
||||
m_reslbl[IDS_SAVELOAD_NUMBEROFGAMESCHANGED] = _("IDS_SAVELOAD_NUMBEROFGAMESCHANGED");
|
||||
m_reslbl[IDS_MAIN_EXITMULTIPLAYERPROMPT] = _("IDS_MAIN_EXITMULTIPLAYERPROMPT");
|
||||
m_reslbl[IDS_CD_ENTERPROMPT] = sprintf(_("IDS_CD_ENTERPROMPT"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_CD_ENTERPROMPT] = sprintf(_("IDS_CD_ENTERPROMPT"), gameTitle);
|
||||
m_reslbl[IDS_MULTISELECT_EXITGAMEPROMPT] = _("IDS_MULTISELECT_EXITGAMEPROMPT");
|
||||
m_reslbl[IDS_MULTI_ADDSERVERPROMPT] = _("IDS_MULTI_ADDSERVERPROMPT");
|
||||
m_reslbl[IDS_ROOM_NEEDPASS] = _("IDS_ROOM_NEEDPASS");
|
||||
|
@ -416,7 +417,7 @@ Strings_Init(void)
|
|||
m_reslbl[IDS_GORE_BADPW] = _("IDS_GORE_BADPW");
|
||||
m_reslbl[IDS_BTN_ADVANCEDSVR] = _("IDS_BTN_ADVANCEDSVR");
|
||||
m_reslbl[IDS_OPTS_AUTOAIM] = _("IDS_OPTS_AUTOAIM");
|
||||
m_reslbl[IDS_OPTS_AUTOAIMHELP] = sprintf(_("IDS_OPTS_AUTOAIMHELP"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_OPTS_AUTOAIMHELP] = sprintf(_("IDS_OPTS_AUTOAIMHELP"), gameTitle);
|
||||
m_reslbl[IDS_BTN_PREVIEWS] = _("IDS_BTN_PREVIEWS");
|
||||
m_reslbl[IDS_MAIN_PREVIEWSHELP] = _("IDS_MAIN_PREVIEWSHELP");
|
||||
m_reslbl[IDS_SECONDS_LEFT] = _("IDS_SECONDS_LEFT");
|
||||
|
@ -452,8 +453,8 @@ Strings_Init(void)
|
|||
m_reslbl[IDS_VID_RESELECT] = _("IDS_VID_RESELECT");
|
||||
m_reslbl[IDS_VID_INITFAIL] = _("IDS_VID_INITFAIL");
|
||||
m_reslbl[IDS_NET_FNETCONNFAIL] = _("IDS_NET_FNETCONNFAIL");
|
||||
m_reslbl[IDS_NET_CORRUPT] = sprintf(_("IDS_NET_CORRUPT"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_CDKEY_BAD] = sprintf(_("IDS_CDKEY_BAD"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_NET_CORRUPT] = sprintf(_("IDS_NET_CORRUPT"), gameTitle);
|
||||
m_reslbl[IDS_CDKEY_BAD] = sprintf(_("IDS_CDKEY_BAD"), gameTitle);
|
||||
m_reslbl[IDS_MULTI_REFRESH] = _("IDS_MULTI_REFRESH");
|
||||
m_reslbl[IDS_CHAT_NOROOM] = _("IDS_CHAT_NOROOM");
|
||||
m_reslbl[IDS_RUN_PATCH] = _("IDS_RUN_PATCH");
|
||||
|
@ -464,7 +465,7 @@ Strings_Init(void)
|
|||
m_reslbl[IDS_LOGO_POWEROF2] = _("IDS_LOGO_POWEROF2");
|
||||
m_reslbl[IDS_MODEM_CUSTOM] = _("IDS_MODEM_CUSTOM");
|
||||
m_reslbl[IDS_MODEM_RATE] = _("IDS_MODEM_RATE");
|
||||
m_reslbl[IDS_REGISTRY_UPDATE] = sprintf(_("IDS_REGISTRY_UPDATE"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_REGISTRY_UPDATE] = sprintf(_("IDS_REGISTRY_UPDATE"), gameTitle);
|
||||
m_reslbl[IDS_CHAT_JOIN] = _("IDS_CHAT_JOIN");
|
||||
m_reslbl[IDS_CHAT_FLOOD] = _("IDS_CHAT_FLOOD");
|
||||
m_reslbl[IDS_CHAT_SEARCH] = _("IDS_CHAT_SEARCH");
|
||||
|
@ -476,21 +477,21 @@ Strings_Init(void)
|
|||
m_reslbl[IDS_CHAT_NOSUCHROOM] = _("IDS_CHAT_NOSUCHROOM");
|
||||
m_reslbl[IDS_CHAT_ROOMFULL] = _("IDS_CHAT_ROOMFULL");
|
||||
m_reslbl[IDS_CREATESV_NOADVANCED] = _("IDS_CREATESV_NOADVANCED");
|
||||
m_reslbl[IDS_FNET_CDINUSE] = sprintf(_("IDS_FNET_CDINUSE"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_FNET_CDINUSE] = sprintf(_("IDS_FNET_CDINUSE"), gameTitle);
|
||||
m_reslbl[IDS_CHAT_JOINHINT] = _("IDS_CHAT_JOINHINT");
|
||||
m_reslbl[IDS_FNET_BANNED] = _("IDS_FNET_BANNED");
|
||||
m_reslbl[IDS_CONTENT_NOMULTIPLAYER] = _("IDS_CONTENT_NOMULTIPLAYER");
|
||||
m_reslbl[IDS_PATCH_ERROR] = sprintf(_("IDS_PATCH_ERROR"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_PATCH_ERROR] = sprintf(_("IDS_PATCH_ERROR"), gameTitle);
|
||||
m_reslbl[IDS_PATCH_NOUTIL] = _("IDS_PATCH_NOUTIL");
|
||||
m_reslbl[IDS_PATCH_FAIL] = _("IDS_PATCH_FAIL");
|
||||
m_reslbl[IDS_PATCH_BADINSTALL] = sprintf(_("IDS_PATCH_BADINSTALL"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_PATCH_BADINSTALL] = sprintf(_("IDS_PATCH_BADINSTALL"), gameTitle);
|
||||
m_reslbl[IDS_CONNECT_FAILURE] = _("IDS_CONNECT_FAILURE");
|
||||
m_reslbl[IDS_MULTI_NEEDPASSWORD] = _("IDS_MULTI_NEEDPASSWORD");
|
||||
m_reslbl[IDS_VID_HINT] = _("IDS_VID_HINT");
|
||||
m_reslbl[IDS_MULTI_LOGODISCONNECT] = _("IDS_MULTI_LOGODISCONNECT");
|
||||
m_reslbl[IDS_3D_WARNING] = sprintf(_("IDS_3D_WARNING"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_3D_WARNING] = sprintf(_("IDS_3D_WARNING"), gameTitle);
|
||||
m_reslbl[IDS_3DSITE_URL] = _("IDS_3DSITE_URL");
|
||||
m_reslbl[IDS_FNET_MODIFIED] = sprintf(_("IDS_FNET_MODIFIED"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_FNET_MODIFIED] = sprintf(_("IDS_FNET_MODIFIED"), gameTitle);
|
||||
m_reslbl[IDS_ADVANCEDMP_OFFSETS] = _("IDS_ADVANCEDMP_OFFSETS");
|
||||
m_reslbl[IDS_AUDIO_OFFSET] = _("IDS_AUDIO_OFFSET");
|
||||
m_reslbl[IDS_CONFIGURE_OFFSET] = _("IDS_CONFIGURE_OFFSET");
|
||||
|
@ -559,7 +560,7 @@ Strings_Init(void)
|
|||
m_reslbl[IDS_NO] = _("IDS_NO");
|
||||
m_reslbl[IDS_UPDATE] = _("IDS_UPDATE");
|
||||
m_reslbl[IDS_MODREQ_TITLE] = _("IDS_MODREQ_TITLE");
|
||||
m_reslbl[IDS_DOWNLOAD_WARNING] = sprintf(_("IDS_DOWNLOAD_WARNING"), games[gameinfo_current].game);
|
||||
m_reslbl[IDS_DOWNLOAD_WARNING] = sprintf(_("IDS_DOWNLOAD_WARNING"), gameTitle);
|
||||
m_reslbl[IDS_WARN_CHECKPROMPT] = _("IDS_WARN_CHECKPROMPT");
|
||||
m_reslbl[IDS_MOD_VERSION] = _("IDS_MOD_VERSION");
|
||||
m_reslbl[IDS_MOD_REINSTALL] = _("IDS_MOD_REINSTALL");
|
||||
|
|
|
@ -55,6 +55,13 @@ CModList::Draw(void)
|
|||
{
|
||||
int visible;
|
||||
int pos;
|
||||
string gameType;
|
||||
string gameTitle;
|
||||
string gameURL;
|
||||
int gameSize;
|
||||
string gameVersion;
|
||||
bool gameInstalled;
|
||||
|
||||
drawfill([g_menuofs[0] + m_x, g_menuofs[1] + m_y], [m_size[0], m_size[1]],
|
||||
[0,0,0], 1.0f);
|
||||
|
||||
|
@ -64,6 +71,13 @@ CModList::Draw(void)
|
|||
|
||||
for (int i = m_scroll; i <= (visible + m_scroll); i++) {
|
||||
vector colo;
|
||||
gameType = GameLibrary_GetGameInfo(i, GAMEINFO_TYPE);
|
||||
gameTitle = GameLibrary_GetGameInfo(i, GAMEINFO_TITLE);
|
||||
gameURL = GameLibrary_GetGameInfo(i, GAMEINFO_WEBSITE);
|
||||
gameSize = GameLibrary_GetGameInfo(i, GAMEINFO_SIZE);
|
||||
gameVersion = GameLibrary_GetGameInfo(i, GAMEINFO_VERSION);
|
||||
gameInstalled = GameLibrary_GetGameInfo(i, GAMEINFO_INSTALLED);
|
||||
|
||||
if (m_selected == i) {
|
||||
colo = ML_COL_2;
|
||||
drawfill([g_menuofs[0] + m_x, g_menuofs[1] + pos], [m_size[0], 29],
|
||||
|
@ -72,33 +86,33 @@ CModList::Draw(void)
|
|||
colo = ML_COL_1;
|
||||
}
|
||||
|
||||
if (games[i].type != "") {
|
||||
if (gameType!= "") {
|
||||
drawsetcliparea(g_menuofs[0] + m_x + 2, g_menuofs[1] + pos + 3, 50,30);
|
||||
WLabel_Static(m_x + 2, pos + 3, games[i].type,
|
||||
WLabel_Static(m_x + 2, pos + 3, gameType,
|
||||
11, 11, colo, 1.0f, 0, font_arial);
|
||||
drawresetcliparea();
|
||||
}
|
||||
|
||||
/* Game */
|
||||
drawsetcliparea(g_menuofs[0] + m_x + 57, g_menuofs[1] + pos + 3, 112,30);
|
||||
WLabel_Static(m_x + 57, pos + 3, games[i].game, 11, 11, colo,
|
||||
WLabel_Static(m_x + 57, pos + 3, gameTitle, 11, 11, colo,
|
||||
1.0f, 0, font_arial);
|
||||
drawresetcliparea();
|
||||
/* URL */
|
||||
WLabel_Static(m_x + 2, pos + 18, sprintf("Info: %s", games[i].url_info), 11, 11, ML_COL_4,
|
||||
WLabel_Static(m_x + 2, pos + 18, sprintf("Info: %s", gameURL), 11, 11, ML_COL_4,
|
||||
1.0f, 0, font_arial);
|
||||
/* Version */
|
||||
WLabel_Static(m_x + 177, pos + 3, games[i].version, 11, 11, colo,
|
||||
WLabel_Static(m_x + 177, pos + 3, gameVersion, 11, 11, colo,
|
||||
1.0f, 0, font_arial);
|
||||
/* Size */
|
||||
float size = games[i].size / 1024000;
|
||||
float size = gameSize / 1024000;
|
||||
WLabel_Static(m_x + 227, pos + 3, sprintf("%.1fmb", size), 11, 11, colo,
|
||||
1.0f, 0, font_arial);
|
||||
/* Rating */
|
||||
WLabel_Static(m_x + 277, pos + 3, "0.0", 11, 11, colo,
|
||||
1.0f, 0, font_arial);
|
||||
|
||||
if (games[i].installed == 1) {
|
||||
if (gameInstalled == true) {
|
||||
/* Installed */
|
||||
WLabel_Static(m_x + 327, pos + 3, "Yes", 11, 11, ML_COL_3,
|
||||
1.0f, 0, font_arial);
|
||||
|
|
|
@ -14,6 +14,31 @@
|
|||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GAMEINFO_TITLE, /**< (string) The title of the game. E.g. "Action Game" */
|
||||
GAMEINFO_GAMEDIR, /**< (string) The game directory name. E.g. "data" */
|
||||
GAMEINFO_FALLBACKDIR, /**< (string) The directory to be loaded before the game directory. */
|
||||
GAMEINFO_BASEDIR, /**< (string) The first game directory to be loaded. */
|
||||
GAMEINFO_WEBSITE, /**< (string) The game its official website. */
|
||||
GAMEINFO_VERSION, /**< (string) Version number string. */
|
||||
GAMEINFO_SIZE, /**< (int) The size of the game, in bytes. */
|
||||
GAMEINFO_TYPE, /**< (string) The game type. E.g. "Singleplayer" */
|
||||
GAMEINFO_NOPLAYERMODELS,/**< (bool) If the game allows player model selection. */
|
||||
GAMEINFO_NOSPRAYS, /**< (bool) If the game allows custom spray logos. */
|
||||
GAMEINFO_STARTMAP, /**< (string) The command for starting a new game. */
|
||||
GAMEINFO_TRAININGMAP, /**< (string) The command for starting the training. */
|
||||
GAMEINFO_MINVERSION, /**< (string) The minimum base game version. */
|
||||
GAMEINFO_CHATROOM, /**< (string) The chatroom for this game. E.g. #action */
|
||||
GAMEINFO_READMEFILE, /**< (string) File name of the readme documentation. */
|
||||
GAMEINFO_INTROVIDEO, /**< (string) File name of the intro video to play. */
|
||||
GAMEINFO_MENUMAP, /**< (string) Name of the map to be used as a background. */
|
||||
GAMEINFO_AUTHOR, /**< (string) Name of the author. */
|
||||
GAMEINFO_AUTHORSITE, /**< (string) The author their website. */
|
||||
GAMEINFO_PACKAGELIST, /**< (string) List of packages, separated by white-space. */
|
||||
GAMEINFO_INSTALLED, /**< (bool) Whether the game is installed. */
|
||||
} gameInfo_t;
|
||||
|
||||
/** Called when initializing the current game. Does not cache custom game/mod info. */
|
||||
void GameLibrary_Init(void);
|
||||
/** Called when you want to initialize custom games/mods. Might want to call this later
|
||||
|
@ -30,4 +55,52 @@ void GameLibrary_Deactivate(void);
|
|||
/** Returns true/false depending on if a Game installation is in progress. */
|
||||
bool GameLibrary_IsInstalling(void);
|
||||
/** Returns a 0-100% value of game install progress, tracking across multiple packages. */
|
||||
float GameLibrary_InstallProgress(void);
|
||||
float GameLibrary_InstallProgress(void);
|
||||
|
||||
/** Return the ID for the currently activate game. */
|
||||
int GameLibrary_GetCurrentGame(void);
|
||||
/** Retrieves fields for a given game. See gameInfo_t for a list of fields you can query. */
|
||||
__variant GameLibrary_GetGameInfo(int, gameInfo_t);
|
||||
__variant GameLibrary_GetInfo(gameInfo_t);
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GAMEINFO_NONE, /**< No gameinfo available. This is probably the engine making assumptions. */
|
||||
GAMEINFO_MANIFEST, /**< Game info was read from a manifest within the path. */
|
||||
GAMEINFO_GITXT, /**< Game info stems from a Source Engine style gameinfo.txt file. */
|
||||
GAMEINFO_LIBLIST /**< Game info stems from a GoldSrc style liblist.gam file. */
|
||||
} gi_type;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
string game;
|
||||
string gamedir;
|
||||
string base_dir;
|
||||
string url_info;
|
||||
string url_dl;
|
||||
string version;
|
||||
string readme;
|
||||
int size;
|
||||
int svonly;
|
||||
int cldll;
|
||||
string type;
|
||||
string minversion;
|
||||
string pkgname;
|
||||
string pkgfile;
|
||||
int pkgid;
|
||||
int nomodels;
|
||||
int nosprays;
|
||||
int installed;
|
||||
string mpentity;
|
||||
string gamedll;
|
||||
string startmap;
|
||||
string trainingmap;
|
||||
string fallback_dir;
|
||||
string chatroom;
|
||||
string menumap;
|
||||
string introvideo;
|
||||
gi_type info_type;
|
||||
} gameinfo_t;
|
||||
|
||||
int gameinfo_count;
|
||||
gameinfo_t *games;
|
|
@ -17,6 +17,8 @@
|
|||
int g_iModInstallCache;
|
||||
string g_strModInstallCache;
|
||||
|
||||
var int gameinfo_current = -1;
|
||||
|
||||
/* local game/mod info parsing */
|
||||
static void
|
||||
GameLibrary_Set(int id)
|
||||
|
@ -162,8 +164,8 @@ GameLibrary_LibListParse(int id, string strKey, string strValue)
|
|||
}
|
||||
break;
|
||||
case "minversion":
|
||||
case "hlversion":
|
||||
games[id].hlversion = strValue;
|
||||
case "minversion":
|
||||
games[id].minversion = strValue;
|
||||
break;
|
||||
case "nomodels":
|
||||
games[id].nomodels = (int)stof(strValue);
|
||||
|
@ -203,9 +205,6 @@ GameLibrary_LibListParse(int id, string strKey, string strValue)
|
|||
case "introvideo":
|
||||
games[id].introvideo = strValue;
|
||||
break;
|
||||
case "steambg":
|
||||
games[id].steambg = (int)stof(strValue);
|
||||
break;
|
||||
case "base_dir":
|
||||
games[id].base_dir = strValue;
|
||||
break;
|
||||
|
@ -377,13 +376,12 @@ GameLibrary_SetDefaults(int id, string gamedirname)
|
|||
games[id].startmap = "map c0a0\n";
|
||||
games[id].trainingmap = "map t0a0\n";
|
||||
games[id].cldll = 1;
|
||||
games[id].hlversion = "1000";
|
||||
games[id].minversion = "1000";
|
||||
games[id].svonly = 0;
|
||||
games[id].installed = 1;
|
||||
games[id].chatroom = gamedirname;
|
||||
games[id].readme = "readme.txt";
|
||||
games[id].pkgid = -1;
|
||||
games[id].steambg = 0;
|
||||
|
||||
#if 0
|
||||
if (games[id].gamedir == "valve") {
|
||||
|
@ -623,4 +621,89 @@ GameLibrary_Deactivate(void)
|
|||
localcmd("menu_restart\n");
|
||||
localcmd("menu_customgame\n");
|
||||
localcmd("menu_musicstart\n");
|
||||
}
|
||||
}
|
||||
|
||||
/** Return the ID for the currently activate game. */
|
||||
int
|
||||
GameLibrary_GetCurrentGame(void)
|
||||
{
|
||||
return gameinfo_current;
|
||||
}
|
||||
|
||||
__variant
|
||||
GameLibrary_GetInfo(gameInfo_t infoType)
|
||||
{
|
||||
return GameLibrary_GetGameInfo(gameinfo_current, infoType);
|
||||
}
|
||||
|
||||
/** Retrieves info for a given game. */
|
||||
__variant
|
||||
GameLibrary_GetGameInfo(int gameID, gameInfo_t infoType)
|
||||
{
|
||||
switch (infoType) {
|
||||
case GAMEINFO_TITLE:
|
||||
return (string)games[gameID].game;
|
||||
break;
|
||||
case GAMEINFO_GAMEDIR:
|
||||
return (string)games[gameID].gamedir;
|
||||
break;
|
||||
case GAMEINFO_FALLBACKDIR:
|
||||
return (string)games[gameID].fallback_dir;
|
||||
break;
|
||||
case GAMEINFO_BASEDIR:
|
||||
return (string)games[gameID].base_dir;
|
||||
break;
|
||||
case GAMEINFO_WEBSITE:
|
||||
return (string)games[gameID].url_info;
|
||||
break;
|
||||
case GAMEINFO_VERSION:
|
||||
return (string)games[gameID].version;
|
||||
break;
|
||||
case GAMEINFO_SIZE:
|
||||
return (int)games[gameID].size;
|
||||
break;
|
||||
case GAMEINFO_TYPE:
|
||||
return (string)games[gameID].type;
|
||||
break;
|
||||
case GAMEINFO_NOPLAYERMODELS:
|
||||
return games[gameID].nomodels == 1 ? true : false;
|
||||
break;
|
||||
case GAMEINFO_NOSPRAYS:
|
||||
return games[gameID].nosprays == 1 ? true : false;
|
||||
break;
|
||||
case GAMEINFO_STARTMAP:
|
||||
return (string)games[gameID].startmap;
|
||||
break;
|
||||
case GAMEINFO_TRAININGMAP:
|
||||
return (string)games[gameID].trainingmap;
|
||||
break;
|
||||
case GAMEINFO_MINVERSION:
|
||||
return (string)games[gameID].minversion;
|
||||
break;
|
||||
case GAMEINFO_CHATROOM:
|
||||
return (string)games[gameID].chatroom;
|
||||
break;
|
||||
case GAMEINFO_READMEFILE:
|
||||
return (string)games[gameID].readme;
|
||||
break;
|
||||
case GAMEINFO_INTROVIDEO:
|
||||
return (string)games[gameID].introvideo;
|
||||
break;
|
||||
case GAMEINFO_MENUMAP:
|
||||
return (string)games[gameID].menumap;
|
||||
break;
|
||||
case GAMEINFO_AUTHOR:
|
||||
return (string)"Unknown";
|
||||
break;
|
||||
case GAMEINFO_AUTHORSITE:
|
||||
return (string)"Unknown";
|
||||
break;
|
||||
case GAMEINFO_PACKAGELIST:
|
||||
return (string)games[gameID].pkgname;
|
||||
break;
|
||||
case GAMEINFO_INSTALLED:
|
||||
return games[gameID].installed == 1 ? true : false;
|
||||
default:
|
||||
return __NULL__;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -51,7 +51,7 @@ ModServer_ParseList(string data)
|
|||
|
||||
for (int x = 0; x < gameinfo_count; x++) {
|
||||
/* skip mods we already have. */
|
||||
if (gamedir == games[x].gamedir) {
|
||||
if (gamedir == GameLibrary_GetGameInfo(x, GAMEINFO_GAMEDIR)) {
|
||||
skip = 1;
|
||||
break;
|
||||
}
|
||||
|
@ -104,7 +104,7 @@ ModServer_ParseItem(string data)
|
|||
games[id].startmap = "c0a0";
|
||||
games[id].trainingmap = "t0a0";
|
||||
games[id].cldll = 1;
|
||||
games[id].hlversion = "1110";
|
||||
games[id].minversion = "1110";
|
||||
games[id].svonly = 0;
|
||||
games[id].installed = 0;
|
||||
games[id].pkgid = -1;
|
||||
|
@ -141,8 +141,8 @@ ModServer_ParseItem(string data)
|
|||
case "gameinfo_type":
|
||||
games[id].type = argv(i+1);
|
||||
break;
|
||||
case "gameinfo_hlversion":
|
||||
games[id].hlversion = argv(i+1);
|
||||
case "gameinfo_minversion":
|
||||
games[id].minversion = argv(i+1);
|
||||
break;
|
||||
case "gameinfo_nomodels":
|
||||
games[id].nomodels = stof(argv(i+1));
|
||||
|
@ -202,7 +202,7 @@ ModServer_URI_Callback(float id, float code, string data, int resourcebytes)
|
|||
ModServer_ParseItem(data);
|
||||
break;
|
||||
case MODSERVER_REQ_PKGNAMES:
|
||||
games[gameinfo_current].pkgname = data;
|
||||
games[GameLibrary_GetCurrentGame()].pkgname = data;
|
||||
g_pkgname_updating = 0;
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -20,9 +20,10 @@ Updates_IsRecommended(string packageName)
|
|||
{
|
||||
string newName = "";
|
||||
int countPkg = 0i;
|
||||
string packageList = GameLibrary_GetInfo(GAMEINFO_PACKAGELIST);
|
||||
|
||||
/* cancel out early if need be */
|
||||
if not (games[gameinfo_current].pkgname)
|
||||
if not (packageList)
|
||||
return true;
|
||||
|
||||
/* get rid of the version string FTEQW appends */
|
||||
|
@ -30,7 +31,7 @@ Updates_IsRecommended(string packageName)
|
|||
newName = argv(0);
|
||||
|
||||
/* iterate over the recommended packages */
|
||||
countPkg = (int)tokenizebyseparator(games[gameinfo_current].pkgname, ";");
|
||||
countPkg = (int)tokenizebyseparator(packageList, ";");
|
||||
|
||||
for (int i = 0i; i < countPkg; i++) {
|
||||
/* there's a match */
|
||||
|
|
Loading…
Reference in a new issue