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