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