r2968 - in trunk/data: . qcsrc/common qcsrc/menu-div0test qcsrc/menu-div0test/nexuiz qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Fri Nov 16 06:38:36 EST 2007


Author: div0
Date: 2007-11-16 06:38:36 -0500 (Fri, 16 Nov 2007)
New Revision: 2968

Added:
   trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create.c
   trunk/data/qcsrc/menu-div0test/nexuiz/gametypebutton.c
Modified:
   trunk/data/default.cfg
   trunk/data/qcsrc/common/mapinfo.qc
   trunk/data/qcsrc/menu-div0test/classes.c
   trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer.c
   trunk/data/qcsrc/server/teamplay.qc
Log:
game mode selection in menu... will do the listbox later. Need to think of a way to set the limits to 0 (unlimited) and -1 (default)


Modified: trunk/data/default.cfg
===================================================================
--- trunk/data/default.cfg	2007-11-16 09:57:41 UTC (rev 2967)
+++ trunk/data/default.cfg	2007-11-16 11:38:36 UTC (rev 2968)
@@ -298,6 +298,9 @@
 set g_changeteam_banned			0	// not allowed to change team
 set g_changeteam_fragtransfer		0	// % of frags you get to keep when you change teams (rounded down)
 
+// dm
+set g_dm 1 // actually, this is a dummy cvar just to make the menu happy
+
 // ctf
 set g_ctf				0
 set g_ctf_flag_returntime		30

Modified: trunk/data/qcsrc/common/mapinfo.qc
===================================================================
--- trunk/data/qcsrc/common/mapinfo.qc	2007-11-16 09:57:41 UTC (rev 2967)
+++ trunk/data/qcsrc/common/mapinfo.qc	2007-11-16 11:38:36 UTC (rev 2968)
@@ -103,7 +103,7 @@
 	if(_MapInfo_filtered)
 		strunzone(_MapInfo_filtered);
 	_MapInfo_filtered = MapInfo_FilterGametype_Recursive(pGametype, pFeatures, 0, _MapInfo_globcount);
-	if(!_MapInfo_filtered)
+	if not(_MapInfo_filtered)
 	{
 		dprint("Autogenerated a .mapinfo, doing the rest later.\n");
 		return 0;
@@ -465,6 +465,7 @@
 void MapInfo_SwitchGameType(float t)
 {
 	cvar_set("gamecfg",      "0");
+	cvar_set("g_dm",         (t == MAPINFO_TYPE_DEATHMATCH)      ? "0" : "1");
 	cvar_set("g_tdm",        (t == MAPINFO_TYPE_TEAM_DEATHMATCH) ? "0" : "1");
 	cvar_set("g_domination", (t == MAPINFO_TYPE_DOMINATION)      ? "0" : "1");
 	cvar_set("g_ctf",        (t == MAPINFO_TYPE_CTF)             ? "0" : "1");

Modified: trunk/data/qcsrc/menu-div0test/classes.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/classes.c	2007-11-16 09:57:41 UTC (rev 2967)
+++ trunk/data/qcsrc/menu-div0test/classes.c	2007-11-16 11:38:36 UTC (rev 2968)
@@ -42,3 +42,5 @@
 #include "nexuiz/serverlist.c"
 #include "nexuiz/inputbox.c"
 #include "nexuiz/dialog_quit.c"
+#include "nexuiz/dialog_multiplayer_create.c"
+#include "nexuiz/gametypebutton.c"

Modified: trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer.c	2007-11-16 09:57:41 UTC (rev 2967)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer.c	2007-11-16 11:38:36 UTC (rev 2968)
@@ -12,12 +12,14 @@
 #ifdef IMPLEMENTATION
 void fillNexuizMultiplayerDialog(entity me)
 {
-	entity mc;
+	entity mc, e;
 	mc = makeNexuizTabController(me.rows - 2);
 	me.TR(me);
-		me.TD(me, 1, 1, mc.makeTabButton(mc, "Serverlist",  makeNexuizServerListTab()));
-		me.TD(me, 1, 1, mc.makeTabButton(mc, "Player Setup",  makeNexuizPlayerSettingsTab()));
-		me.TD(me, 1, 1, mc.makeTabButton(mc, "Server Setup",  makeNexuizPlayerSettingsTab()));
+		me.TD(me, 1, 1, e = mc.makeTabButton(mc, "Join",  makeNexuizServerListTab()));
+		me.TD(me, 1, 1, e = mc.makeTabButton(mc, "Player Setup",  makeNexuizPlayerSettingsTab()));
+		if(cvar_string("_cl_name") == "Player")
+			e.onClick(e, e.onClickEntity); // lol animation
+		me.TD(me, 1, 1, e = mc.makeTabButton(mc, "Create",  makeNexuizServerCreateTab()));
 	me.TR(me);
 	me.TR(me);
 		me.TD(me, me.rows - 2, me.columns, mc);

Added: trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create.c	                        (rev 0)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create.c	2007-11-16 11:38:36 UTC (rev 2968)
@@ -0,0 +1,99 @@
+#ifdef INTERFACE
+CLASS(NexuizServerCreateTab) EXTENDS(NexuizTab)
+	METHOD(NexuizServerCreateTab, fill, void(entity))
+	METHOD(NexuizServerCreateTab, gameTypeChangeNotify, void(entity))
+	ATTRIB(NexuizServerCreateTab, title, string, "Create")
+	ATTRIB(NexuizServerCreateTab, intendedWidth, float, 0.9)
+	ATTRIB(NexuizServerCreateTab, rows, float, 22)
+	ATTRIB(NexuizServerCreateTab, columns, float, 6.5)
+
+	ATTRIB(NexuizServerCreateTab, sliderFraglimit, entity, NULL)
+	ATTRIB(NexuizServerCreateTab, checkboxFraglimit, entity, NULL)
+ENDCLASS(NexuizServerCreateTab)
+entity makeNexuizServerCreateTab();
+#endif
+
+#ifdef IMPLEMENTATION
+
+entity makeNexuizServerCreateTab()
+{
+	entity me;
+	me = spawnNexuizServerCreateTab();
+	me.configureDialog(me);
+	return me;
+}
+void fillNexuizServerCreateTab(entity me)
+{
+	entity e, e0;
+
+	me.TR(me);
+		me.TD(me, 1, me.columns / 9, e = makeNexuizGametypeButton(1, "g_dm", "DM"));
+			e0 = e;
+		me.TD(me, 1, me.columns / 9, e = makeNexuizGametypeButton(1, "g_tdm", "TDM"));
+			if(e.checked) e0 = NULL;
+		me.TD(me, 1, me.columns / 9, e = makeNexuizGametypeButton(1, "g_lms", "LMS"));
+			if(e.checked) e0 = NULL;
+		me.TD(me, 1, me.columns / 9, e = makeNexuizGametypeButton(1, "g_arena", "Arena"));
+			if(e.checked) e0 = NULL;
+		me.TD(me, 1, me.columns / 9, e = makeNexuizGametypeButton(1, "g_runematch", "Rune"));
+			if(e.checked) e0 = NULL;
+		me.TD(me, 1, me.columns / 9, e = makeNexuizGametypeButton(1, "g_keyhunt", "Key Hunt"));
+			if(e.checked) e0 = NULL;
+		me.TD(me, 1, me.columns / 9, e = makeNexuizGametypeButton(1, "g_ctf", "CTF"));
+			if(e.checked) e0 = NULL;
+		me.TD(me, 1, me.columns / 9, e = makeNexuizGametypeButton(1, "g_assault", "Assault"));
+			if(e.checked) e0 = NULL;
+		me.TD(me, 1, me.columns / 9, e = makeNexuizGametypeButton(1, "g_onslaught", "Onslaught"));
+			if(e.checked) e0 = NULL;
+		if(e0)
+		{
+			print("NO CHECK\n");
+			e0.setChecked(e0, 1);
+		}
+	me.TR(me);
+	me.TR(me);
+		me.TD(me, 1, 3, e = makeNexuizTextLabel(0, "Map list:"));
+
+	me.gotoXY(me, 2, 3.5); me.setFirstColumn(me, me.currentColumn);
+		me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Time limit:"));
+		me.TD(me, 1, 2, e = makeNexuizSlider(1.0, 60.0, 0.5, "timelimit_override"));
+	me.TR(me);
+		me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Point limit:"));
+			me.checkboxFraglimit = e;
+		me.TD(me, 1, 2, e = makeNexuizSlider(1.0, 2000.0, 5, "fraglimit_override"));
+			me.sliderFraglimit = e;
+
+	me.gotoXY(me, me.rows - 1, 0);
+		me.TD(me, 1, me.columns, e = makeNexuizButton("Start!", '0 0 0'));
+
+	me.gameTypeChangeNotify(me);
+}
+
+void GameType_ConfigureSliders(entity e, entity l, string pLabel, float pMin, float pMax, float pStep, string pCvar)
+{
+	e.configureNexuizSlider(e, pMin, pMax, pStep, pCvar);
+	l.setText(l, pLabel);
+}
+
+void gameTypeChangeNotifyNexuizServerCreateTab(entity me)
+{
+	// tell the map list to update
+	float gt;
+	entity e, l;
+	gt = MapInfo_CurrentGametype();
+	e = me.sliderFraglimit;
+	l = me.checkboxFraglimit;
+	switch(gt)
+	{
+		case MAPINFO_TYPE_CTF:        GameType_ConfigureSliders(e, l, "Point limit:",  50,  500, 10, "g_ctf_capture_limit");      break;
+		case MAPINFO_TYPE_DOMINATION: GameType_ConfigureSliders(e, l, "Point limit:",  50,  500, 10, "g_domination_point_limit"); break;
+		case MAPINFO_TYPE_KEYHUNT:    GameType_ConfigureSliders(e, l, "Point limit:", 200, 1500, 50, "g_keyhunt_point_limit");    break;
+		case MAPINFO_TYPE_RUNEMATCH:  GameType_ConfigureSliders(e, l, "Point limit:",  50,  500, 10, "g_runematch_point_limit");  break;
+		case MAPINFO_TYPE_LMS:        GameType_ConfigureSliders(e, l, "Lives:",         3,   50,  1, "g_lms_lives_override");     break;
+		default:                      GameType_ConfigureSliders(e, l, "Frag limit:",    5,  100,  5, "fraglimit_override");       break;
+	}
+	MapInfo_FilterGametype(MapInfo_CurrentGametype(), MapInfo_CurrentFeatures());
+	print(ftos(MapInfo_count), " maps\n");
+}
+
+#endif

Added: trunk/data/qcsrc/menu-div0test/nexuiz/gametypebutton.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/gametypebutton.c	                        (rev 0)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/gametypebutton.c	2007-11-16 11:38:36 UTC (rev 2968)
@@ -0,0 +1,63 @@
+#ifdef INTERFACE
+CLASS(NexuizGametypeButton) EXTENDS(RadioButton)
+	METHOD(NexuizGametypeButton, configureNexuizGametypeButton, void(entity, float, string, string))
+	METHOD(NexuizGametypeButton, setChecked, void(entity, float))
+	ATTRIB(NexuizGametypeButton, fontSize, float, SKINFONTSIZE_NORMAL)
+	ATTRIB(NexuizGametypeButton, image, string, SKINGFX_BUTTON)
+	ATTRIB(NexuizGametypeButton, color, vector, SKINCOLOR_BUTTON_N)
+	ATTRIB(NexuizGametypeButton, colorC, vector, SKINCOLOR_BUTTON_C)
+	ATTRIB(NexuizGametypeButton, colorF, vector, SKINCOLOR_BUTTON_F)
+	ATTRIB(NexuizGametypeButton, colorD, vector, SKINCOLOR_BUTTON_D)
+	ATTRIB(NexuizGametypeButton, srcMulti, float, 1)
+	ATTRIB(NexuizGametypeButton, useDownAsChecked, float, 1)
+
+	ATTRIB(NexuizGametypeButton, cvarName, string, string_null)
+	METHOD(NexuizGametypeButton, loadCvars, void(entity))
+	METHOD(NexuizGametypeButton, saveCvars, void(entity))
+ENDCLASS(NexuizGametypeButton)
+entity makeNexuizGametypeButton(float, string, string);
+#endif
+
+#ifdef IMPLEMENTATION
+void GameTypeButton_Click(entity me, entity other);
+entity makeNexuizGametypeButton(float theGroup, string theCvar, string theText)
+{
+	entity me;
+	me = spawnNexuizGametypeButton();
+	me.configureNexuizGametypeButton(me, theGroup, theCvar, theText);
+	return me;
+}
+void configureNexuizGametypeButtonNexuizGametypeButton(entity me, float theGroup, string theCvar, string theText)
+{
+	if(theCvar)
+	{
+		me.cvarName = theCvar;
+		me.loadCvars(me);
+	}
+	me.configureRadioButton(me, theText, me.fontSize, me.image, theGroup, 0);
+	me.align = 0.5;
+	me.onClick = GameTypeButton_Click;
+	me.onClickEntity = NULL;
+}
+void setCheckedNexuizGametypeButton(entity me, float val)
+{
+	if(val != me.checked)
+	{
+		me.checked = val;
+		me.saveCvars(me);
+	}
+}
+void loadCvarsNexuizGametypeButton(entity me)
+{
+	me.checked = cvar(me.cvarName);
+}
+void saveCvarsNexuizGametypeButton(entity me)
+{
+	cvar_set(me.cvarName, ftos(me.checked));
+}
+void GameTypeButton_Click(entity me, entity other)
+{
+	RadioButton_Click(me, other);
+	me.parent.gameTypeChangeNotify(me.parent);
+}
+#endif

Modified: trunk/data/qcsrc/server/teamplay.qc
===================================================================
--- trunk/data/qcsrc/server/teamplay.qc	2007-11-16 09:57:41 UTC (rev 2967)
+++ trunk/data/qcsrc/server/teamplay.qc	2007-11-16 11:38:36 UTC (rev 2968)
@@ -96,6 +96,7 @@
 
 void ResetGameCvars()
 {
+	cvar_set("g_dm", "0");
 	cvar_set("g_tdm", "0");
 	cvar_set("g_domination", "0");
 	cvar_set("g_ctf", "0");
@@ -263,6 +264,7 @@
 	{
 		// we can only assume...
 		ResetGameCvars();
+		cvar_set("g_dm", "1");
 		gamemode_name = "Deathmatch";
 		teams_matter = 0;
 	}




More information about the nexuiz-commits mailing list