1 string campaign_index_var;
5 campaign_name = strzone(cvar_string("g_campaign_name"));
6 campaign_index_var = strzone(strcat("g_campaign", campaign_name, "_index"));
7 CampaignFile_Load(0, CAMPAIGN_MAX_ENTRIES);
10 void Campaign_Shutdown()
12 CampaignFile_Unload();
13 strunzone(campaign_index_var);
14 strunzone(campaign_name);
18 void Campaign_DumpLevels()
22 imax = cvar(campaign_index_var) - campaign_offset;
23 if(imax >= campaign_entries)
24 imax = campaign_entries - 1;
25 for(i = 0; i <= imax; ++i)
28 print(ftos(i + campaign_offset));
30 print(campaign_gametype[i]);
32 print(campaign_mapname[i]);
34 print(campaign_shortdesc[i]);
40 void Campaign_JumpLevel(float n)
44 current = cvar(campaign_index_var);
50 n = n - campaign_offset;
51 if(n >= 0 && n < campaign_entries)
55 float campaign_entry_index;
57 void() Nex_Action_Campaign_Start =
59 Campaign_JumpLevel(campaign_entry_index);
61 // force the menu to hide
65 void() Nex_Action_Campaign_Update =
72 handle = fopen(strcat("maps/campaign", campaign_name, ".txt"), FILE_READ);
74 while (line = fgets(handle)) {
75 if(substring(line, 0, 12) == "\"//campaign:") {
76 desc = substring(line, 12, (strlen(line) - (12 + 1)));
85 item = Menu_GetItem("ShortDescriptionCampaign");
86 desc = strcat("Campaign: ", desc);
87 String_EntitySet(item, text, desc);
89 item = Menu_GetItem("ShortDescriptionEntry");
90 desc = campaign_shortdesc[campaign_entry_index];
91 desc = strcat("Level ", ftos(campaign_entry_index + 1), ": ", desc);
92 String_EntitySet(item, text, desc);
94 item = Menu_GetItem("LongDescriptionEntry");
95 desc = wordwrap(campaign_longdesc[campaign_entry_index], item.wrap - 1);
96 String_EntitySet(item, text, desc);
98 item = Menu_GetItem("PictureEntry");
99 String_EntitySet(item, picture, strcat("maps/",campaign_mapname[campaign_entry_index], ".jpg"));
102 void(float index) Nex_Action_Campaign_Find_Entry =
104 campaign_entry_index+=index;
105 if (campaign_entry_index < 0) campaign_entry_index = min((campaign_entries - 1), cvar(campaign_index_var));
106 if (campaign_entry_index > min((campaign_entries - 1), cvar(campaign_index_var))) campaign_entry_index = 0;
109 void() Nex_Action_Campaign_Prev_Entry =
111 Nex_Action_Campaign_Find_Entry(-1);
112 Nex_Action_Campaign_Update();
115 void() Nex_Action_Campaign_Next_Entry =
117 Nex_Action_Campaign_Find_Entry(1);
118 Nex_Action_Campaign_Update();
121 void() Nex_Action_Campaign_Init =
125 campaign_entry_index = cvar(campaign_index_var);
126 Nex_Action_Campaign_Find_Entry(0); // set campaign_index_var back into range if too high or low
128 Nex_Action_Campaign_Update();
131 void(float index) Nex_Action_Campaign_Find_Campaign =
136 local string filename;
137 handle = search_begin("maps/campaign*.txt", true, true);
139 count = search_getsize(handle);
140 for (i = 0; i < count; i++) {
141 filename = search_getfilename(handle, i);
142 if (filename == strcat("maps/campaign", campaign_name, ".txt")) {
144 if (index < 0) index = (count - 1);
145 if (index > (count - 1)) index = 0;
146 filename = search_getfilename(handle, index);
150 count = strlen(filename);
151 cvar_set("g_campaign_name", substring(filename, 13, (count - (13 + 4))));
154 Nex_Action_Campaign_Init();
157 void() Nex_Action_Campaign_Prev_Campaign =
159 Nex_Action_Campaign_Find_Campaign(-1);
160 Nex_Action_Campaign_Update();
163 void() Nex_Action_Campaign_Next_Campaign =
165 Nex_Action_Campaign_Find_Campaign(1);
166 Nex_Action_Campaign_Update();