From 623e4a685fa8cc2fa7522e05e0ec1e9a97f07ba8 Mon Sep 17 00:00:00 2001 From: div0 Date: Fri, 31 Oct 2008 09:01:34 +0000 Subject: [PATCH] campaign fixes. Now campaign + race works. git-svn-id: svn://svn.icculus.org/nexuiz/trunk@4947 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/defaultNexuiz.cfg | 2 +- data/maps/campaignmappack.txt | 38 ---------------------------- data/mutator_reset.cfg | 1 + data/qcsrc/common/campaign_common.qh | 1 + data/qcsrc/common/campaign_file.qc | 26 ++++++++++++++----- data/qcsrc/menu/nexuiz/campaign.c | 12 +++------ data/qcsrc/server/teamplay.qc | 4 --- 7 files changed, 26 insertions(+), 58 deletions(-) delete mode 100644 data/maps/campaignmappack.txt diff --git a/data/defaultNexuiz.cfg b/data/defaultNexuiz.cfg index e49a0f41a..32b838189 100644 --- a/data/defaultNexuiz.cfg +++ b/data/defaultNexuiz.cfg @@ -498,7 +498,7 @@ set g_assault 0 // race set g_race 0 -set g_race_qualifying 1 +set g_race_qualifying 2 // Qualifying uses timelimit, and the one with the best time wins. Fraglimit is nonfunctional then. // Normal race uses fraglimit as a limit for the laps. // Special mode: g_race_qualifying 2. First runs a qualifying, after diff --git a/data/maps/campaignmappack.txt b/data/maps/campaignmappack.txt deleted file mode 100644 index 6f998e1a4..000000000 --- a/data/maps/campaignmappack.txt +++ /dev/null @@ -1,38 +0,0 @@ -"//campaign:Map pack Campaign" -"//game","mapname","bots","skill","frag","mutator-sets","description","long description" -"dm","q3skoredm1","3","6","15",,"q3skoredm1","By -=skOre=-." -"dm","qbeast","3","6","20",,"qbeast","By Quint (Marco Quintavalle)." -"dm","qdolphin","4","6","15",,"qdolphin","By Quint (Marco Quintavalle)." -"dm","quimera","3","6","10",,"quimera","By Jose "JAJ" Arcediano." -"dm","zpdm01","3","6","20",,"zpdm01","By ZEphYR." -"dm","dubneoc","4","6","15",,"dubneoc","By Lasse "Dubbilan" Kolding." -"dm","jaxtourney2","3","7","15",,"jaxtourney2","By David "Jax_Gator" Cherry." -"dm","79drdm5_beta2","4","7","20",,"79DrDm5","By Kevin "79DieselRabbit" Worrel." -"dm","79drgc2","4","7","15",,"79drgc2","By Kevin "79DieselRabbit" Worrel." -"dm","quintdm3","3","7","10",,"quintdm3","By Quint (Marco Quintavalle)." -"dm","acid3dm5","3","7","20",,"acid3dm5","By [acid]." -"dm","ikzdm1","4","7","15",,"ikzdm1","By Iikka "Fingers" Keranen." -"dm","geo-core","4","7","15",,"geo-core","By Q ." -"dm","bal3dm3","3","8","20",,"bal3dm3","By Benoit "Bal" Stordeur." -"dm","ame7q3tny1","3","8","10",,"ame7q3tny1","By Chris "amethyst7" Matz." -"dm","hal_palindrome","3","8","15",,"hal_palindrome","By John "Hal9000" Schuch." -"dm","redm04","3","8","15",,"redm04","By ReFlex (redm04)." -"dm","storm3dm3","3","8","10",,"storm3dm3","By Justin Ingels." -"dm","batcula","3","8","15",,"batcula","By nunuk." -"dm","chronic","3","8","10",,"chronic","By MasterPlan." -"dm","bal3dm5","3","8","10",,"bal3dm5","By Benoit "Bal" Stordeur." -"dm","cttourney1","3","8","15",,"cttourney1","By Geit." -"dm","distonic","3","8","20",,"distonic","By nunuk (nicolas bouvier)." -"dm","pukka3dm2","3","8","10",,"pukka3dm2","By thefury aka sumatra." -"dm","puma3tourney4","3","8","15",,"puma3tourney4","By =puppetmaster=." -"dm","straledm5","3","8","15",,"straledm5","By Paul "Strahlemann" Evers." -"dm","apocalyptica","3","8","20",,"apocalyptica","By =puppetmaster=." -"dm","HandsOfGod","3","9","15",,"HandsOfGod","By Alex Moore." -"dm","af3hex","3","9","15",,"af3hex","By haste (Neil Toronto)." -"dm","ame7q3dm3","3","9","15",,"ame7q3dm3","By Chris "amethyst7" Matz." -"dm","CMP1-dm6","3","9","15",,"CMP1-dm6","By Yves "evil lair" Allaire." -"dm","klzegypt","3","9","15",,"klzegypt","By Killazontherun." -"dm","ktsdm4","3","9","15",,"ktsdm4","By Ben "Krash" Ackland." -"dm","map-gleeb_geocomp3","3","9","20",,"map-gleeb_geocomp3","By Gleeb." -"dm","mIKEctf2","3","9","20",,"mIKEctf2","By mIKE." -"dm","monolith","3","9","20",,"monolith","By Sock." \ No newline at end of file diff --git a/data/mutator_reset.cfg b/data/mutator_reset.cfg index de25ebedd..03947663b 100644 --- a/data/mutator_reset.cfg +++ b/data/mutator_reset.cfg @@ -9,6 +9,7 @@ set g_nixnex_with_laser 0 set g_norecoil 0 set g_weaponarena 0 set g_vampire 0 +set g_race_qualifying 2 set slowmo 1.0 set sv_gravity 800 diff --git a/data/qcsrc/common/campaign_common.qh b/data/qcsrc/common/campaign_common.qh index 95f18f728..a8e61fc4f 100644 --- a/data/qcsrc/common/campaign_common.qh +++ b/data/qcsrc/common/campaign_common.qh @@ -13,6 +13,7 @@ float campaign_fraglimit[CAMPAIGN_MAX_ENTRIES]; string campaign_mutators[CAMPAIGN_MAX_ENTRIES]; string campaign_shortdesc[CAMPAIGN_MAX_ENTRIES]; string campaign_longdesc[CAMPAIGN_MAX_ENTRIES]; +string campaign_title; // filled upon loading // load the campaign file, but use the given offset and limit the number of // entries being read. Returns the number of entries successfully read (this diff --git a/data/qcsrc/common/campaign_file.qc b/data/qcsrc/common/campaign_file.qc index 7f5bf96b9..bf262679a 100644 --- a/data/qcsrc/common/campaign_file.qc +++ b/data/qcsrc/common/campaign_file.qc @@ -16,6 +16,7 @@ float CampaignFile_Load(float offset, float n) campaign_offset = offset; campaign_entries = 0; + campaign_title = string_null; fn = strcat("maps/campaign", campaign_name, ".txt"); fh = fopen(fn, FILE_READ); @@ -25,8 +26,12 @@ float CampaignFile_Load(float offset, float n) { if(strlen(l) == 0) continue; // empty line + if(substring(l, 0, 11) == "//campaign:") + campaign_title = substring(l, 11, strlen(l) - 11); if(substring(l, 0, 2) == "//") continue; // comment + if(substring(l, 0, 12) == "\"//campaign:") + campaign_title = substring(l, 12, strlen(l) - 13); if(substring(l, 0, 3) == "\"//") continue; // comment if(lineno >= offset) @@ -62,19 +67,26 @@ float CampaignFile_Load(float offset, float n) fclose(fh); } + campaign_title = strzone(campaign_title); + return campaign_entries; } void CampaignFile_Unload() { float i; - for(i = 0; i < campaign_entries; ++i) + if(campaign_title) { - strunzone(campaign_gametype[i]); - strunzone(campaign_mapname[i]); - strunzone(campaign_mutators[i]); - strunzone(campaign_shortdesc[i]); - strunzone(campaign_longdesc[i]); + strunzone(campaign_title); + for(i = 0; i < campaign_entries; ++i) + { + strunzone(campaign_gametype[i]); + strunzone(campaign_mapname[i]); + strunzone(campaign_mutators[i]); + strunzone(campaign_shortdesc[i]); + strunzone(campaign_longdesc[i]); + } + campaign_entries = 0; + campaign_title = string_null; } - campaign_entries = 0; } diff --git a/data/qcsrc/menu/nexuiz/campaign.c b/data/qcsrc/menu/nexuiz/campaign.c index d55b87b8e..453ba25b1 100644 --- a/data/qcsrc/menu/nexuiz/campaign.c +++ b/data/qcsrc/menu/nexuiz/campaign.c @@ -38,7 +38,6 @@ CLASS(NexuizCampaignList) EXTENDS(NexuizListBox) ATTRIB(NexuizCampaignList, buttonNext, entity, NULL) ATTRIB(NexuizCampaignList, buttonPrev, entity, NULL) ATTRIB(NexuizCampaignList, labelTitle, entity, NULL) - ATTRIB(NexuizCampaignList, campaignTitle, string, string_null) ENDCLASS(NexuizCampaignList) entity makeNexuizCampaignList(); void CampaignList_LoadMap(entity btn, entity me); @@ -134,6 +133,7 @@ void loadCvarsNexuizCampaignList(entity me) campaign_name = strzone(cvar_string("g_campaign_name")); me.cvarName = strzone(strcat("g_campaign", campaign_name, "_index")); registercvar(me.cvarName, "", 0); // saved by server QC anyway + CampaignFile_Unload(); CampaignFile_Load(0, CAMPAIGN_MAX_ENTRIES); me.campaignIndex = bound(0, cvar(me.cvarName), campaign_entries); cvar_set(me.cvarName, ftos(me.campaignIndex)); @@ -142,14 +142,8 @@ void loadCvarsNexuizCampaignList(entity me) me.nItems = min(me.campaignIndex + 2, campaign_entries); me.selectedItem = min(me.campaignIndex, me.nItems - 1); me.scrollPos = me.nItems * me.itemHeight - 1; - if(me.campaignTitle) - strunzone(me.campaignTitle); - if(campaign_name == "") - me.campaignTitle = strzone("Nexuiz Multiplayer Training Campaign"); - else - me.campaignTitle = strzone(strreplace("_", " ", campaign_name)); if(me.labelTitle) - me.labelTitle.setText(me.labelTitle, me.campaignTitle); + me.labelTitle.setText(me.labelTitle, campaign_title); } void saveCvarsNexuizCampaignList(entity me) @@ -194,6 +188,8 @@ void campaignGoNexuizCampaignList(entity me, float step) s = substring(s, 13, strlen(s) - 17); cvar_set("g_campaign_name", s); me.loadCvars(me); + canNext = (j != n - 1); + canPrev = (j != 0); } } diff --git a/data/qcsrc/server/teamplay.qc b/data/qcsrc/server/teamplay.qc index 452428651..4341c0baa 100644 --- a/data/qcsrc/server/teamplay.qc +++ b/data/qcsrc/server/teamplay.qc @@ -298,10 +298,6 @@ void InitGameplayMode() gamemode_name = "Race"; g_race_qualifying = cvar("g_race_qualifying"); - // In campaign, only this mode makes sense... - if(cvar("g_campaign")) - g_race_qualifying = 1; - if(cvar("g_race_teams")) { g_race_qualifying = 0; // not supported! -- 2.39.2