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