r1914 - in branches/nexuiz-2.0/data/qcsrc: common menu/custom server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Wed Nov 8 14:27:02 EST 2006


Author: div0
Date: 2006-11-08 14:27:02 -0500 (Wed, 08 Nov 2006)
New Revision: 1914

Modified:
   branches/nexuiz-2.0/data/qcsrc/common/campaign_common.qh
   branches/nexuiz-2.0/data/qcsrc/common/campaign_file.qc
   branches/nexuiz-2.0/data/qcsrc/common/campaign_setup.qc
   branches/nexuiz-2.0/data/qcsrc/menu/custom/campaign.qc
   branches/nexuiz-2.0/data/qcsrc/server/campaign.qc
Log:
multi-campaign support (still to do: changing campaign in menu)


Modified: branches/nexuiz-2.0/data/qcsrc/common/campaign_common.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/common/campaign_common.qh	2006-11-08 19:25:19 UTC (rev 1913)
+++ branches/nexuiz-2.0/data/qcsrc/common/campaign_common.qh	2006-11-08 19:27:02 UTC (rev 1914)
@@ -19,6 +19,7 @@
 // number is also stored in campaign_entries).
 // NOTE: there MUST be a corresponding CampaignFile_Unload() to unzone the
 // strings.
+string campaign_name; // set that to the campaign you want to load before calling CampaignFile_Load
 float CampaignFile_Load(float offset, float entries);
 void CampaignFile_Unload();
 

Modified: branches/nexuiz-2.0/data/qcsrc/common/campaign_file.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/common/campaign_file.qc	2006-11-08 19:25:19 UTC (rev 1913)
+++ branches/nexuiz-2.0/data/qcsrc/common/campaign_file.qc	2006-11-08 19:27:02 UTC (rev 1914)
@@ -9,6 +9,7 @@
 	float entlen;
 	float i;
 	string l, a;
+	string fn;
 
 	if(n > CAMPAIGN_MAX_ENTRIES)
 		n = CAMPAIGN_MAX_ENTRIES;
@@ -16,7 +17,8 @@
 	campaign_offset = offset;
 	campaign_entries = 0;
 
-	fh = fopen("maps/campaign.txt", FILE_READ);
+	fn = strcat("maps/campaign", campaign_name, ".txt");
+	fh = fopen(fn, FILE_READ);
 	if(fh >= 0)
 	{
 		for(lineno = 0; (l = fgets(fh)); )

Modified: branches/nexuiz-2.0/data/qcsrc/common/campaign_setup.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/common/campaign_setup.qc	2006-11-08 19:25:19 UTC (rev 1913)
+++ branches/nexuiz-2.0/data/qcsrc/common/campaign_setup.qc	2006-11-08 19:27:02 UTC (rev 1914)
@@ -3,6 +3,9 @@
 	localcmd("exec game_reset.cfg\n");
 	localcmd("exec mutator_reset.cfg\n");
 	localcmd("set g_campaign 1\n");
+	localcmd("set _campaign_name \"");
+		localcmd(campaign_name);
+		localcmd("\"\n");
 	localcmd("set _campaign_index ");
 		localcmd(ftos(campaign_offset + n));
 		localcmd("\n");

Modified: branches/nexuiz-2.0/data/qcsrc/menu/custom/campaign.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/custom/campaign.qc	2006-11-08 19:25:19 UTC (rev 1913)
+++ branches/nexuiz-2.0/data/qcsrc/menu/custom/campaign.qc	2006-11-08 19:27:02 UTC (rev 1914)
@@ -1,18 +1,25 @@
+string campaign_index_var;
+
 void Campaign_Init()
 {
+	campaign_name = strzone(cvar_string("g_campaign_name"));
+	campaign_index_var = strzone(strcat("g_campaign", campaign_name, "_index"));
 	CampaignFile_Load(0, CAMPAIGN_MAX_ENTRIES);
 }
 
 void Campaign_Shutdown()
 {
 	CampaignFile_Unload();
+	strunzone(campaign_index_var);
+	strunzone(campaign_name);
+	campaign_name = "";
 }
 
 void Campaign_DumpLevels()
 {
 	float i;
 	float imax;
-	imax = cvar("g_campaign_index") - campaign_offset;
+	imax = cvar(campaign_index_var) - campaign_offset;
 	if(imax >= campaign_entries)
 		imax = campaign_entries - 1;
 	for(i = 0; i <= imax; ++i)
@@ -34,7 +41,7 @@
 {
 	float current;
 	// 1. current level?
-	current = cvar("g_campaign_index");
+	current = cvar(campaign_index_var);
 	if(n > current)
 		n = current;
 	if(n < 0)
@@ -75,7 +82,7 @@
 
 void() Nex_Action_Campaign_Init =
 {
-	campaign_index = cvar("g_campaign_index");
+	campaign_index = cvar(campaign_index_var);
 
 	Nex_Action_Campaign_Update();
 };
@@ -83,7 +90,7 @@
 void() Nex_Action_Campaign_Prev =
 {
 	if (campaign_index <= 0) {
-		campaign_index = min(campaign_entries, cvar("g_campaign_index"));
+		campaign_index = min(campaign_entries, cvar(campaign_index_var));
 	} else {
 		campaign_index -= 1;
 	}
@@ -93,7 +100,7 @@
 
 void() Nex_Action_Campaign_Next =
 {
-	if (campaign_index >= min(campaign_entries, cvar("g_campaign_index"))) {
+	if (campaign_index >= min(campaign_entries, cvar(campaign_index_var))) {
 		campaign_index = 0;
 	} else {
 		campaign_index += 1;

Modified: branches/nexuiz-2.0/data/qcsrc/server/campaign.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/campaign.qc	2006-11-08 19:25:19 UTC (rev 1913)
+++ branches/nexuiz-2.0/data/qcsrc/server/campaign.qc	2006-11-08 19:27:02 UTC (rev 1914)
@@ -1,16 +1,17 @@
 // campaign cvars:
 //   _campaign_index: index of CURRENT map
-//   g_campaign_index: index of current LAST map (saved)
+//   _campaign_name: name of the current campaign
+//   g_campaign(name)_index: index of current LAST map (saved)
 //   g_campaign_skill: bot skill offset
 
 float campaign_level;
 float campaign_won;
+string campaign_index_var;
 
 void(string s) CampaignBailout =
 {
 	cvar_set("g_campaign", "0");
-	bprint(strcat("campaign initialization failed: ", s, "\n"));
-	//error(strcat("campaign initialization failed: ", s, "\n"));
+	ServerConsoleEcho(strcat("campaign initialization failed: ", s), TRUE);
 	return;
 }
 
@@ -19,6 +20,8 @@
 	float baseskill;
 	string title;
 	campaign_level = cvar("_campaign_index");
+	campaign_name = strzone(cvar_string("_campaign_name"));
+	campaign_index_var = strzone(strcat("g_campaign", campaign_name, "_index"));
 	CampaignFile_Load(campaign_level, 2);
 	if(campaign_entries < 1)
 		return CampaignBailout("unknown map");
@@ -93,12 +96,16 @@
 		{
 			//localcmd("set g_campaign_index 0\n");
 			// don't reset...
-			localcmd("set g_campaign_won 1\n");
+			localcmd("set g_campaign");
+			localcmd(campaign_name);
+			localcmd("_won 1\n");
 		}
-		else if(campaign_level == cvar("g_campaign_index"))
+		else if(campaign_level == cvar(campaign_index_var))
 		{
 			// advance level
-			localcmd("set g_campaign_index ");
+			localcmd("set ");
+			localcmd(campaign_index_var);
+			localcmd(" ");
 			localcmd(ftos(campaign_level + 1));
 			localcmd("\n");
 		}
@@ -120,6 +127,9 @@
 	CampaignSetup(campaign_won);
 	CampaignFile_Unload();
 	strunzone(campaign_message);
+	strunzone(campaign_index_var);
+	strunzone(campaign_name);
+	campaign_name = "";
 }
 
 




More information about the nexuiz-commits mailing list