]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Add teamplay or free for all lines in gametype list
authorSamual Lenks <samual@xonotic.org>
Thu, 19 Dec 2013 23:39:37 +0000 (18:39 -0500)
committerSamual Lenks <samual@xonotic.org>
Thu, 19 Dec 2013 23:39:37 +0000 (18:39 -0500)
qcsrc/common/mapinfo.qc
qcsrc/common/mapinfo.qh
qcsrc/menu/xonotic/gametypelist.c
qcsrc/menu/xonotic/util.qc

index 21263719b32d035697b8d12cb13fe4926cde81c0..bb2525502fa110c79cac5401b1cec6ddfbdc808a 100644 (file)
@@ -562,6 +562,15 @@ string _MapInfo_GetDefaultEx(float t)
        return "";
 }
 
+float _MapInfo_GetTeamPlayBool(float t)
+{
+       entity e;
+       for(e = MapInfo_Type_first; e; e = e.enemy)
+               if(t == e.items)
+                       return e.team;
+       return FALSE;
+}
+
 void _MapInfo_Map_ApplyGametypeEx(string s, float pWantedType, float pThisType)
 {
        string sa, k, v;
index eb93b8de817df90c268d3d4fa51b589bb68a6f18..5bc9ee898927bf86b7f9202c7e8887aa1f0751fe 100644 (file)
@@ -7,9 +7,10 @@ entity MapInfo_Type_last;
 .string netname; // game type name as in cvar (with g_ prefix)
 .string mdl; // game type short name
 .string message; // human readable name
+.float team; // does this gametype support teamplay?
 .string model2; // game type defaults
 
-#define REGISTER_GAMETYPE(hname,sname,g_name,NAME,defaults) \
+#define REGISTER_GAMETYPE(hname,sname,g_name,NAME,gteamplay,defaults) \
        var float MAPINFO_TYPE_##NAME; \
        var entity MapInfo_Type##g_name; \
        void RegisterGametypes_##g_name() \
@@ -21,6 +22,7 @@ entity MapInfo_Type_last;
                MapInfo_Type##g_name.netname = #g_name; \
                MapInfo_Type##g_name.mdl = #sname; \
                MapInfo_Type##g_name.message = hname; \
+               MapInfo_Type##g_name.team = gteamplay; \
                MapInfo_Type##g_name.model2 = defaults; \
                if(!MapInfo_Type_first) \
                        MapInfo_Type_first = MapInfo_Type##g_name; \
@@ -33,46 +35,46 @@ entity MapInfo_Type_last;
 #define IS_GAMETYPE(NAME) \
        (MapInfo_LoadedGametype == MAPINFO_TYPE_##NAME)
 
-REGISTER_GAMETYPE(_("Deathmatch"),dm,g_dm,DEATHMATCH,"timelimit=20 pointlimit=30 leadlimit=0");
+REGISTER_GAMETYPE(_("Deathmatch"),dm,g_dm,DEATHMATCH,FALSE,"timelimit=20 pointlimit=30 leadlimit=0");
 #define g_dm IS_GAMETYPE(DEATHMATCH)
 
-REGISTER_GAMETYPE(_("Last Man Standing"),lms,g_lms,LMS,"timelimit=20 lives=9 leadlimit=0");
+REGISTER_GAMETYPE(_("Last Man Standing"),lms,g_lms,LMS,FALSE,"timelimit=20 lives=9 leadlimit=0");
 #define g_lms IS_GAMETYPE(LMS)
 
-REGISTER_GAMETYPE(_("Race"),rc,g_race,RACE,"timelimit=20 qualifying_timelimit=5 laplimit=7 teamlaplimit=15 leadlimit=0");
+REGISTER_GAMETYPE(_("Race"),rc,g_race,RACE,FALSE,"timelimit=20 qualifying_timelimit=5 laplimit=7 teamlaplimit=15 leadlimit=0");
 #define g_race IS_GAMETYPE(RACE)
 
-REGISTER_GAMETYPE(_("Race CTS"),cts,g_cts,CTS,"timelimit=20 skill=-1");
+REGISTER_GAMETYPE(_("Race CTS"),cts,g_cts,CTS,FALSE,"timelimit=20 skill=-1");
 #define g_cts IS_GAMETYPE(CTS)
 
-REGISTER_GAMETYPE(_("Team Deathmatch"),tdm,g_tdm,TEAM_DEATHMATCH,"timelimit=20 pointlimit=50 teams=2 leadlimit=0");
+REGISTER_GAMETYPE(_("Team Deathmatch"),tdm,g_tdm,TEAM_DEATHMATCH,TRUE,"timelimit=20 pointlimit=50 teams=2 leadlimit=0");
 #define g_tdm IS_GAMETYPE(TEAM_DEATHMATCH)
 
-REGISTER_GAMETYPE(_("Capture the Flag"),ctf,g_ctf,CTF,"timelimit=20 caplimit=10 leadlimit=0");
+REGISTER_GAMETYPE(_("Capture the Flag"),ctf,g_ctf,CTF,TRUE,"timelimit=20 caplimit=10 leadlimit=0");
 #define g_ctf IS_GAMETYPE(CTF)
 
-REGISTER_GAMETYPE(_("Clan Arena"),ca,g_ca,CA,"timelimit=20 pointlimit=10 leadlimit=0");
+REGISTER_GAMETYPE(_("Clan Arena"),ca,g_ca,CA,TRUE,"timelimit=20 pointlimit=10 leadlimit=0");
 #define g_ca IS_GAMETYPE(CA)
 
-REGISTER_GAMETYPE(_("Domination"),dom,g_domination,DOMINATION,"timelimit=20 pointlimit=200 teams=2 leadlimit=0");
+REGISTER_GAMETYPE(_("Domination"),dom,g_domination,DOMINATION,TRUE,"timelimit=20 pointlimit=200 teams=2 leadlimit=0");
 #define g_domination IS_GAMETYPE(DOMINATION)
 
-REGISTER_GAMETYPE(_("Key Hunt"),kh,g_keyhunt,KEYHUNT,"timelimit=20 pointlimit=1000 teams=3 leadlimit=0");
+REGISTER_GAMETYPE(_("Key Hunt"),kh,g_keyhunt,KEYHUNT,TRUE,"timelimit=20 pointlimit=1000 teams=3 leadlimit=0");
 #define g_keyhunt IS_GAMETYPE(KEYHUNT)
 
-REGISTER_GAMETYPE(_("Assault"),as,g_assault,ASSAULT,"timelimit=20");
+REGISTER_GAMETYPE(_("Assault"),as,g_assault,ASSAULT,TRUE,"timelimit=20");
 #define g_assault IS_GAMETYPE(ASSAULT)
 
-REGISTER_GAMETYPE(_("Onslaught"),ons,g_onslaught,ONSLAUGHT,"timelimit=20");
+REGISTER_GAMETYPE(_("Onslaught"),ons,g_onslaught,ONSLAUGHT,TRUE,"timelimit=20");
 #define g_onslaught IS_GAMETYPE(ONSLAUGHT)
 
-REGISTER_GAMETYPE(_("Nexball"),nb,g_nexball,NEXBALL,"timelimit=20 pointlimit=5 leadlimit=0");
+REGISTER_GAMETYPE(_("Nexball"),nb,g_nexball,NEXBALL,TRUE,"timelimit=20 pointlimit=5 leadlimit=0");
 #define g_nexball IS_GAMETYPE(NEXBALL)
 
-REGISTER_GAMETYPE(_("Freeze Tag"),ft,g_freezetag,FREEZETAG,"timelimit=20 pointlimit=10 teams=2 leadlimit=0");
+REGISTER_GAMETYPE(_("Freeze Tag"),ft,g_freezetag,FREEZETAG,TRUE,"timelimit=20 pointlimit=10 teams=2 leadlimit=0");
 #define g_freezetag IS_GAMETYPE(FREEZETAG)
 
-REGISTER_GAMETYPE(_("Keepaway"),ka,g_keepaway,KEEPAWAY,"timelimit=20 pointlimit=30");
+REGISTER_GAMETYPE(_("Keepaway"),ka,g_keepaway,KEEPAWAY,FALSE,"timelimit=20 pointlimit=30");
 #define g_keepaway IS_GAMETYPE(KEEPAWAY)
 
 const float MAPINFO_FEATURE_WEAPONS       = 1; // not defined for minstagib-only maps
@@ -136,6 +138,7 @@ string MapInfo_ListAllAllowedMaps(float pFlagsRequired, float pFlagsForbidden);
 
 // gets a gametype from a string
 string _MapInfo_GetDefaultEx(float t);
+float _MapInfo_GetTeamPlayBool(float t);
 float MapInfo_Type_FromString(string t);
 string MapInfo_Type_ToString(float t);
 string MapInfo_Type_ToText(float t);
index 56c25314da697317fdebfa66dceec917577dfc54..9337368f585ef408bc9ef7c247bda093766a25f6 100644 (file)
@@ -9,8 +9,7 @@ CLASS(XonoticGametypeList) EXTENDS(XonoticListBox)
        METHOD(XonoticGametypeList, saveCvars, void(entity))
 
        ATTRIB(XonoticGametypeList, realFontSize, vector, '0 0 0')
-       ATTRIB(XonoticGametypeList, realUpperMargin1, float, 0)
-       ATTRIB(XonoticGametypeList, realUpperMargin2, float, 0)
+       ATTRIB(XonoticGametypeList, realUpperMargin, float, 0)
        ATTRIB(XonoticGametypeList, columnIconOrigin, float, 0)
        ATTRIB(XonoticGametypeList, columnIconSize, float, 0)
        ATTRIB(XonoticGametypeList, columnNameOrigin, float, 0)
@@ -83,9 +82,14 @@ void XonoticGametypeList_drawListBoxItem(entity me, float i, vector absSize, flo
 
        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.5 * (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);
+       draw_Text(me.realUpperMargin * eY + (me.columnNameOrigin + (0.025 * me.columnNameSize)) * eX, s, me.realFontSize, '1 1 1', SKINALPHA_TEXT, 0);
+       
+       if(_MapInfo_GetTeamPlayBool(GameType_GetID(i)))
+               s = _("teamplay");
+       else
+               s = _("free for all");
+
+       draw_Text(me.realUpperMargin * eY + (me.columnNameOrigin + 1.00 * (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize))) * eX, s, me.realFontSize, '1 1 1', SKINALPHA_TEXT * 0.5, 0);
 }
 void XonoticGametypeList_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
 {
@@ -94,8 +98,7 @@ void XonoticGametypeList_resizeNotify(entity me, vector relOrigin, vector relSiz
 
        me.realFontSize_y = me.fontSize / (me.itemAbsSize_y = (absSize_y * me.itemHeight));
        me.realFontSize_x = me.fontSize / (me.itemAbsSize_x = (absSize_x * (1 - me.controlWidth)));
-       me.realUpperMargin1 = 0.5 * (1 - me.realFontSize_y);
-       me.realUpperMargin2 = me.realUpperMargin1 + me.realFontSize_y;
+       me.realUpperMargin = 0.5 * (1 - me.realFontSize_y);
        me.columnIconOrigin = 0;
        me.columnIconSize = me.itemAbsSize_y / me.itemAbsSize_x;
        me.columnNameOrigin = me.columnIconOrigin + me.columnIconSize;
index 34f67397eb0bef09944f2cc1627facd0cfb668c9..0f8ec9295efc273d90e0579e0578f76252f9c32c 100644 (file)
@@ -702,22 +702,6 @@ string GameType_GetIcon(float cnt)
        return "";
 }
 
-/*string GameType_GetTeams(float cnt) // poor implementation, later something else could be done that's better?
-{
-       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)
 {
        float i;