]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Better gametype listing methods
authorSamual <samual@xonotic.org>
Mon, 16 Jan 2012 05:38:46 +0000 (00:38 -0500)
committerSamual <samual@xonotic.org>
Mon, 16 Jan 2012 05:38:46 +0000 (00:38 -0500)
qcsrc/common/mapinfo.qh
qcsrc/menu/xonotic/gametypelist.c
qcsrc/menu/xonotic/util.qc
qcsrc/menu/xonotic/util.qh

index e47a28369f783589cfae824b6b603a61e0b91a03..4e73886d3c98cd970066fbe4099790a4566e7114 100644 (file)
@@ -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);
index 9b0bdc8250b88d69b864cb544d32f436720654ec..14d8bbb5c7625aeeccff3c62af17005ae151b00a 100644 (file)
@@ -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);
index 77fedc3729f2713edbddeb27f42da6b57c159d6c..5c0a958d0f6b96396cf263bd0b70ddc9b64266f4 100644 (file)
@@ -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)
index c3bc54f90852e2d21aa2882b425e0a58e48d070d..4055f915f89931862860bb10073d13e6313b37e8 100644 (file)
@@ -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();