From: Samual Date: Mon, 16 Jan 2012 05:38:46 +0000 (-0500) Subject: Better gametype listing methods X-Git-Tag: xonotic-v0.6.0~158 X-Git-Url: https://de.git.xonotic.org/?a=commitdiff_plain;h=43248ad85d3ac395f6aa5ae8c383495733eb461a;hp=-c;p=xonotic%2Fxonotic-data.pk3dir.git Better gametype listing methods --- 43248ad85d3ac395f6aa5ae8c383495733eb461a diff --git a/qcsrc/common/mapinfo.qh b/qcsrc/common/mapinfo.qh index e47a28369..4e73886d3 100644 --- a/qcsrc/common/mapinfo.qh +++ b/qcsrc/common/mapinfo.qh @@ -140,6 +140,7 @@ string MapInfo_ListAllowedMaps(float pFlagsRequired, float pFlagsForbidden); string MapInfo_ListAllAllowedMaps(float pFlagsRequired, float pFlagsForbidden); // gets a gametype from a string +string _MapInfo_GetDefaultEx(float t); float MapInfo_Type_FromString(string t); string MapInfo_Type_ToString(float t); string MapInfo_Type_ToText(float t); diff --git a/qcsrc/menu/xonotic/gametypelist.c b/qcsrc/menu/xonotic/gametypelist.c index 9b0bdc825..14d8bbb5c 100644 --- a/qcsrc/menu/xonotic/gametypelist.c +++ b/qcsrc/menu/xonotic/gametypelist.c @@ -74,8 +74,8 @@ void XonoticGametypeList_drawListBoxItem(entity me, float i, vector absSize, flo if(isSelected) draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED); - draw_Picture(me.columnIconOrigin * eX, strcat("gametype_", MapInfo_Type_ToString(GameType_GetID(i))), me.columnIconSize * eX + eY, '1 1 1', SKINALPHA_LISTBOX_SELECTED); - s = MapInfo_Type_ToText(GameType_GetID(i)); + draw_Picture(me.columnIconOrigin * eX, GameType_GetIcon(i), me.columnIconSize * eX + eY, '1 1 1', SKINALPHA_LISTBOX_SELECTED); + s = GameType_GetName(i); draw_Text(me.realUpperMargin1 * eY + (me.columnNameOrigin + 0.00 * (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize))) * eX, s, me.realFontSize, '1 1 1', SKINALPHA_TEXT, 0); s = GameType_GetTeams(i); draw_Text(me.realUpperMargin1 * eY + (me.columnNameOrigin + 1.00 * (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize))) * eX, s, me.realFontSize, '1 1 1', SKINALPHA_TEXT, 0); diff --git a/qcsrc/menu/xonotic/util.qc b/qcsrc/menu/xonotic/util.qc index 77fedc372..5c0a958d0 100644 --- a/qcsrc/menu/xonotic/util.qc +++ b/qcsrc/menu/xonotic/util.qc @@ -543,59 +543,82 @@ float updateCompression() // note: include only those that should be in the menu! #define GAMETYPES \ - GAMETYPE(MAPINFO_TYPE_ARENA, "ar", _("free for all")) \ - GAMETYPE(MAPINFO_TYPE_ASSAULT, "as", _("teamplay")) \ - GAMETYPE(MAPINFO_TYPE_CTF, "ctf", _("teamplay")) \ - GAMETYPE(MAPINFO_TYPE_CA, "ca", _("teamplay")) \ - GAMETYPE(MAPINFO_TYPE_DEATHMATCH, "dm", _("free for all")) \ - GAMETYPE(MAPINFO_TYPE_DOMINATION, "dom", _("teamplay")) \ - GAMETYPE(MAPINFO_TYPE_FREEZETAG, "ft", _("teamplay")) \ - GAMETYPE(MAPINFO_TYPE_KEEPAWAY, "ka", _("free for all")) \ - GAMETYPE(MAPINFO_TYPE_KEYHUNT, "kh", _("teamplay")) \ - GAMETYPE(MAPINFO_TYPE_LMS, "lms", _("free for all")) \ - GAMETYPE(MAPINFO_TYPE_NEXBALL, "nb", _("free/teamplay")) \ - GAMETYPE(MAPINFO_TYPE_ONSLAUGHT, "ons", _("teamplay")) \ - GAMETYPE(MAPINFO_TYPE_RACE, "race", _("free/teamplay")) \ - GAMETYPE(MAPINFO_TYPE_CTS, "cts", _("free for all")) \ - GAMETYPE(MAPINFO_TYPE_RUNEMATCH, "rune", _("free for all")) \ - GAMETYPE(MAPINFO_TYPE_TEAM_DEATHMATCH, "tdm", _("teamplay")) \ + GAMETYPE(MAPINFO_TYPE_ARENA) \ + GAMETYPE(MAPINFO_TYPE_ASSAULT) \ + GAMETYPE(MAPINFO_TYPE_CTF) \ + GAMETYPE(MAPINFO_TYPE_CA) \ + GAMETYPE(MAPINFO_TYPE_DEATHMATCH) \ + GAMETYPE(MAPINFO_TYPE_DOMINATION) \ + GAMETYPE(MAPINFO_TYPE_FREEZETAG) \ + GAMETYPE(MAPINFO_TYPE_KEEPAWAY) \ + GAMETYPE(MAPINFO_TYPE_KEYHUNT) \ + GAMETYPE(MAPINFO_TYPE_LMS) \ + GAMETYPE(MAPINFO_TYPE_NEXBALL) \ + GAMETYPE(MAPINFO_TYPE_ONSLAUGHT) \ + GAMETYPE(MAPINFO_TYPE_RACE) \ + GAMETYPE(MAPINFO_TYPE_CTS) \ + GAMETYPE(MAPINFO_TYPE_RUNEMATCH) \ + GAMETYPE(MAPINFO_TYPE_TEAM_DEATHMATCH) \ /* nothing */ float GameType_GetID(float cnt) { float i; i = 0; -#define GAMETYPE(id,icon,teams) if(i++ == cnt) return id; + + #define GAMETYPE(id) if(i++ == cnt) return id; GAMETYPES -#undef GAMETYPE + #undef GAMETYPE + return 0; } -string GameType_GetIcon(float cnt) + +float GameType_GetCount() { float i; i = 0; -#define GAMETYPE(id,icon,teams) if(i++ == cnt) return icon; + + #define GAMETYPE(id) ++i; GAMETYPES -#undef GAMETYPE + #undef GAMETYPE + + return i; +} + +string GameType_GetName(float cnt) +{ + float i = GameType_GetID(cnt); + + if(i) + return MapInfo_Type_ToText(i); + return ""; } -string GameType_GetTeams(float cnt) + +string GameType_GetIcon(float cnt) { - float i; - i = 0; -#define GAMETYPE(id,icon,teams) if(i++ == cnt) return teams; - GAMETYPES -#undef GAMETYPE - return _("tuba for all"); + float i = GameType_GetID(cnt); + + if(i) + return strcat("gametype_", MapInfo_Type_ToString(i)); + + return ""; } -float GameType_GetCount() + +string GameType_GetTeams(float cnt) { - float i; - i = 0; -#define GAMETYPE(id,icon,teams) ++i; - GAMETYPES -#undef GAMETYPE - return i; + float i = GameType_GetID(cnt); + string s = _MapInfo_GetDefaultEx(i); + + if(i) + { + if(strstrofs(s, "teams", 0) >= 0) + return _("teamplay"); + else + return _("free for all"); + } + + return _("tuba for all"); } void dialog_hudpanel_common_notoggle(entity me, string panelname) diff --git a/qcsrc/menu/xonotic/util.qh b/qcsrc/menu/xonotic/util.qh index c3bc54f90..4055f915f 100644 --- a/qcsrc/menu/xonotic/util.qh +++ b/qcsrc/menu/xonotic/util.qh @@ -37,6 +37,7 @@ void URI_Get_Callback(float id, float status, string data); // game type list box stuff (does not NEED to contain all game types, other // types stay available via console) float GameType_GetID(float cnt); +string GameType_GetName(float cnt); string GameType_GetIcon(float cnt); string GameType_GetTeams(float cnt); float GameType_GetCount();