r3614 - in trunk/data: . qcsrc/common qcsrc/menu

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Thu May 8 15:52:30 EDT 2008


Author: div0
Date: 2008-05-08 15:52:27 -0400 (Thu, 08 May 2008)
New Revision: 3614

Modified:
   trunk/data/default.cfg
   trunk/data/qcsrc/common/mapinfo.qc
   trunk/data/qcsrc/common/mapinfo.qh
   trunk/data/qcsrc/menu/menu.qc
Log:
new cvar: menu_mouse_absolute (alternate mouse mode in recent DP builds)
new cvar: menu_mouse_speed (for the "old" mode)
mapinfo: no longer read/write diameter and spawnpoints; instead dprint them
mapinfo: support #, // and _ comments, and don't warn when encountering an empty line


Modified: trunk/data/default.cfg
===================================================================
--- trunk/data/default.cfg	2008-05-08 15:47:04 UTC (rev 3613)
+++ trunk/data/default.cfg	2008-05-08 19:52:27 UTC (rev 3614)
@@ -961,3 +961,6 @@
 gl_texturecompression_q3bspdeluxemaps 0
 gl_texturecompression_q3bsplightmaps 1
 gl_texturecompression_sky 1
+
+set menu_mouse_absolute 0
+set menu_mouse_speed 2

Modified: trunk/data/qcsrc/common/mapinfo.qc
===================================================================
--- trunk/data/qcsrc/common/mapinfo.qc	2008-05-08 15:47:04 UTC (rev 3613)
+++ trunk/data/qcsrc/common/mapinfo.qc	2008-05-08 19:52:27 UTC (rev 3614)
@@ -139,8 +139,6 @@
 	bufstr_set(_MapInfo_Cache_Buf_IndexToMapData, i++, MapInfo_Map_author);
 	bufstr_set(_MapInfo_Cache_Buf_IndexToMapData, i++, ftos(MapInfo_Map_supportedGametypes));
 	bufstr_set(_MapInfo_Cache_Buf_IndexToMapData, i++, ftos(MapInfo_Map_supportedFeatures));
-	bufstr_set(_MapInfo_Cache_Buf_IndexToMapData, i++, ftos(MapInfo_Map_diameter));
-	bufstr_set(_MapInfo_Cache_Buf_IndexToMapData, i++, ftos(MapInfo_Map_spawnpoints));
 }
 
 float MapInfo_Cache_Retrieve(string map)
@@ -162,8 +160,6 @@
 	MapInfo_Map_author = bufstr_get(_MapInfo_Cache_Buf_IndexToMapData, i++);
 	MapInfo_Map_supportedGametypes = stof(bufstr_get(_MapInfo_Cache_Buf_IndexToMapData, i++));
 	MapInfo_Map_supportedFeatures = stof(bufstr_get(_MapInfo_Cache_Buf_IndexToMapData, i++));
-	MapInfo_Map_diameter = stof(bufstr_get(_MapInfo_Cache_Buf_IndexToMapData, i++));
-	MapInfo_Map_spawnpoints = stof(bufstr_get(_MapInfo_Cache_Buf_IndexToMapData, i++));
 	return 1;
 }
 
@@ -322,6 +318,7 @@
 	float inWorldspawn;
 	float r;
 	float twoBaseModes;
+	float diameter, spawnpoints;
 
 	vector mapMins, mapMaxs;
 
@@ -340,6 +337,7 @@
 
 	inWorldspawn = 2;
 	MapInfo_Map_supportedGametypes = 0;
+	spawnpoints = 0;
 
 	for(;;)
 	{
@@ -397,13 +395,13 @@
 				else if(v == "onslaught_generator")
 					MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_ONSLAUGHT;
 				else if(v == "info_player_team1")
-					++MapInfo_Map_spawnpoints;
+					++spawnpoints;
 				else if(v == "info_player_team2")
-					++MapInfo_Map_spawnpoints;
+					++spawnpoints;
 				else if(v == "info_player_start")
-					++MapInfo_Map_spawnpoints;
+					++spawnpoints;
 				else if(v == "info_player_deathmatch")
-					++MapInfo_Map_spawnpoints;
+					++spawnpoints;
 				else if(v == "weapon_nex")
 					{ }
 				else if(v == "weapon_railgun")
@@ -418,7 +416,7 @@
 		print(fn, " ended still in worldspawn, BUG\n");
 		return 0;
 	}
-	MapInfo_Map_diameter = vlen(mapMaxs - mapMins);
+	diameter = vlen(mapMaxs - mapMins);
 
 	twoBaseModes = MapInfo_Map_supportedGametypes & (MAPINFO_TYPE_CTF | MAPINFO_TYPE_ASSAULT);
 	if(twoBaseModes && (MapInfo_Map_supportedGametypes == twoBaseModes))
@@ -431,14 +429,18 @@
 		MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_DEATHMATCH;      // DM always works
 		MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_LMS;             // LMS always works
 
-		if(MapInfo_Map_spawnpoints >= 8  && MapInfo_Map_diameter > 4096)
+		if(spawnpoints >= 8  && diameter > 4096)
 			MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_TEAM_DEATHMATCH;
-		if(                MapInfo_Map_diameter < 4096)
+		if(                     diameter < 4096)
 			MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_ARENA;
-		if(MapInfo_Map_spawnpoints >= 12 && MapInfo_Map_diameter > 5120)
+		if(spawnpoints >= 12 && diameter > 5120)
 			MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_KEYHUNT;
 	}
 
+	dprint("-> diameter ",    ftos(diameter));
+	dprint(";  spawnpoints ", ftos(spawnpoints));
+	dprint(";  modes ",       ftos(MapInfo_Map_supportedGametypes), "\n");
+
 	fclose(fh);
 
 	return r;
@@ -451,8 +453,6 @@
 	MapInfo_Map_author = "<AUTHOR>";
 	MapInfo_Map_supportedGametypes = 0;
 	MapInfo_Map_supportedFeatures = 0;
-	MapInfo_Map_diameter = 0;
-	MapInfo_Map_spawnpoints = 0;
 }
 
 void _MapInfo_Map_ApplyGametype(string s, float pWantedType, float pThisType)
@@ -527,8 +527,6 @@
 		fputs(fh, strcat("title ", MapInfo_Map_title, "\n"));
 		fputs(fh, strcat("description ", MapInfo_Map_description, "\n"));
 		fputs(fh, strcat("author ", MapInfo_Map_author, "\n"));
-		fputs(fh, strcat("_diameter ", ftos(MapInfo_Map_diameter), "\n"));
-		fputs(fh, strcat("_spawnpoints ", ftos(MapInfo_Map_spawnpoints), "\n"));
 		if(MapInfo_Map_supportedFeatures & MAPINFO_FEATURE_WEAPONS)       fputs(fh, "has weapons\n");
 		if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_DEATHMATCH)      fputs(fh, "type dm 30 20\n");
 		if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_TEAM_DEATHMATCH) fputs(fh, "type tdm 50 20 2\n");
@@ -561,21 +559,24 @@
 	{
 		if not((s = fgets(fh)))
 			break;
+
+		// catch different sorts of comments
+		if(s == "")                    // empty lines
+			continue;
+		if(substring(s, 0, 1) == "#")  // UNIX style
+			continue;
+		if(substring(s, 0, 2) == "//") // C++ style
+			continue;
+		if(substring(s, 0, 1) == "_")  // q3map style
+			continue;
+
 		t = car(s); s = cdr(s);
-		if(t == "//")
-		{
-			// no comment
-		}
-		else if(t == "title")
+		if(t == "title")
 			MapInfo_Map_title = s;
 		else if(t == "description")
 			MapInfo_Map_description = s;
 		else if(t == "author")
 			MapInfo_Map_author = s;
-		else if(t == "_diameter")
-			MapInfo_Map_diameter = stof(s);
-		else if(t == "_spawnpoints")
-			MapInfo_Map_spawnpoints = stof(s);
 		else if(t == "has")
 		{
 			t = car(s); s = cdr(s);
@@ -816,6 +817,4 @@
 	MapInfo_Map_author = string_null;
 	MapInfo_Map_supportedGametypes = 0;
 	MapInfo_Map_supportedFeatures = 0;
-	MapInfo_Map_diameter = 0;
-	MapInfo_Map_spawnpoints = 0;
 }

Modified: trunk/data/qcsrc/common/mapinfo.qh
===================================================================
--- trunk/data/qcsrc/common/mapinfo.qh	2008-05-08 15:47:04 UTC (rev 3613)
+++ trunk/data/qcsrc/common/mapinfo.qh	2008-05-08 19:52:27 UTC (rev 3614)
@@ -21,8 +21,6 @@
 string MapInfo_Map_author;
 float MapInfo_Map_supportedGametypes;
 float MapInfo_Map_supportedFeatures;
-float MapInfo_Map_diameter;
-float MapInfo_Map_spawnpoints;
 
 // load MapInfo_count; generate mapinfo for maps that miss them, and clear the
 // cache; you need to call MapInfo_FilterGametype afterwards!

Modified: trunk/data/qcsrc/menu/menu.qc
===================================================================
--- trunk/data/qcsrc/menu/menu.qc	2008-05-08 15:47:04 UTC (rev 3613)
+++ trunk/data/qcsrc/menu/menu.qc	2008-05-08 19:52:27 UTC (rev 3614)
@@ -14,6 +14,7 @@
 float prevMenuAlpha;
 float menuInitialized;
 float menuNotTheFirstFrame;
+float menuMouseMode;
 
 void SUB_Null() { };
 
@@ -193,6 +194,8 @@
 	float t;
 	float realFrametime;
 
+	menuMouseMode = cvar("menu_mouse_absolute");
+
 	if(main)
 		UpdateConWidthHeight();
 
@@ -229,7 +232,7 @@
 
 	if(Menu_Active)
 	{
-		if(getmousetarget() == MT_MENU && (getkeydest() == KEY_MENU || getkeydest() == KEY_MENU_GRABBED))
+		if(getmousetarget() == (menuMouseMode ? MT_CLIENT : MT_MENU) && (getkeydest() == KEY_MENU || getkeydest() == KEY_MENU_GRABBED))
 			setkeydest(keyGrabber ? KEY_MENU_GRABBED : KEY_MENU);
 		else
 			m_hide();
@@ -302,26 +305,44 @@
 
 	draw_alpha *= menuAlpha;
 
-	if(frametime > 0)
+	if(menuMouseMode)
 	{
-		vector dMouse;
-		dMouse = getmousepos() * (frametime / realFrametime); // for capturevideo
-		if(dMouse != '0 0 0')
+		vector newMouse;
+		newMouse = globalToBoxSize(getmousepos(), draw_scale);
+		if(newMouse != '0 0 0')
+			if(newMouse != menuMousePos)
+			{
+				menuMousePos = newMouse;
+				if(mouseButtonsPressed)
+					main.mouseDrag(main, menuMousePos);
+				else
+					main.mouseMove(main, menuMousePos);
+			}
+	}
+	else
+	{
+		if(frametime > 0)
 		{
-			dMouse = globalToBoxSize(dMouse, draw_scale);
-			menuMousePos += dMouse * 1; // TODO use a cvar here
-			menuMousePos_x = bound(0, menuMousePos_x, 1);
-			menuMousePos_y = bound(0, menuMousePos_y, 1);
-			if(mouseButtonsPressed)
-				main.mouseDrag(main, menuMousePos);
-			else
-				main.mouseMove(main, menuMousePos);
+			vector dMouse;
+			dMouse = getmousepos() * (frametime / realFrametime); // for capturevideo
+			if(dMouse != '0 0 0')
+			{
+				dMouse = globalToBoxSize(dMouse, draw_scale);
+				menuMousePos += dMouse * cvar("menu_mouse_speed");
+				menuMousePos_x = bound(0, menuMousePos_x, 1);
+				menuMousePos_y = bound(0, menuMousePos_y, 1);
+				if(mouseButtonsPressed)
+					main.mouseDrag(main, menuMousePos);
+				else
+					main.mouseMove(main, menuMousePos);
+			}
 		}
 	}
 	main.draw(main);
 	draw_alpha = max(draw_alpha, SKINALPHA_CURSOR_INTRO * bound(0, menuLogoAlpha, 1));
 
-	draw_drawMousePointer(menuMousePos);
+	if(!menuMouseMode)
+		draw_drawMousePointer(menuMousePos);
 
 	draw_reset();
 	postMenuDraw();
@@ -333,7 +354,7 @@
 {
 	Menu_Active = true;
 	setkeydest(KEY_MENU);
-	setmousetarget(MT_MENU);
+	setmousetarget((menuMouseMode ? MT_CLIENT : MT_MENU));
 
 	if(!menuInitialized)
 		return;




More information about the nexuiz-commits mailing list