]> icculus.org git repositories - divverent/nexuiz.git/blob - data/qcsrc/server/gamec/campaign_file.c
Made more bot skills work (now the range from 0 to 1 should); added waypoints
[divverent/nexuiz.git] / data / qcsrc / server / gamec / campaign_file.c
1 // CampaignFileLoad(offset, n)
2 // - Loads campaign level data (up to n entries starting at offset)
3 //   into the globals
4 // - Returns the number of entries successfully read
5 float CampaignFile_Load(float offset, float n)
6 {
7         float fh;
8         float lineno;
9         float entlen;
10         string l;
11
12         if(n > CAMPAIGN_MAX_ENTRIES)
13                 n = CAMPAIGN_MAX_ENTRIES;
14
15         campaign_offset = offset;
16         campaign_entries = 0;
17
18         fh = fopen("maps/campaign.txt", FILE_READ);
19         if(fh >= 0)
20         {
21                 for(lineno = 0; (l = fgets(fh)); )
22                 {
23                         if(strlen(l) == 0)
24                                 continue; // empty line
25                         if(substring(l, 0, 2) == "//")
26                                 continue; // comment
27                         if(lineno >= offset)
28                         {
29                                 entlen = tokenize(l);
30                                 if(entlen != 7)
31                                         error("syntax error in campaign file");
32
33                                 campaign_mapcfgname[campaign_entries] = strzone(argv(0));
34                                 campaign_bots[campaign_entries] = stof(argv(1));
35                                 campaign_botskill[campaign_entries] = stof(argv(2));
36                                 campaign_fraglimit[campaign_entries] = stof(argv(3));
37                                 campaign_mutators[campaign_entries] = strzone(argv(4));
38                                 campaign_shortdesc[campaign_entries] = strzone(argv(5));
39                                 campaign_longdesc[campaign_entries] = strzone(argv(6));
40                                 campaign_entries = campaign_entries + 1;
41
42                                 if(campaign_entries >= n)
43                                         break;
44                         }
45                         lineno = lineno + 1;
46                 }
47                 fclose(fh);
48         }
49
50         return campaign_entries;
51 }
52
53 void CampaignFile_Unload()
54 {
55         float i;
56         for(i = 0; i < campaign_entries; ++i)
57         {
58                 strunzone(campaign_mapcfgname[i]);
59                 strunzone(campaign_mutators[i]);
60                 strunzone(campaign_shortdesc[i]);
61                 strunzone(campaign_longdesc[i]);
62         }
63         campaign_entries = 0;
64 }