]> icculus.org git repositories - divverent/nexuiz.git/blob - data/qcsrc/menu/custom/campaign.qc
now menu qc respects g_campaign_name
[divverent/nexuiz.git] / data / qcsrc / menu / custom / campaign.qc
1 string campaign_index_var;
2
3 void Campaign_Init()
4 {
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);
8 }
9
10 void Campaign_Shutdown()
11 {
12         CampaignFile_Unload();
13         strunzone(campaign_index_var);
14         strunzone(campaign_name);
15         campaign_name = "";
16 }
17
18 void Campaign_DumpLevels()
19 {
20         float i;
21         float imax;
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)
26         {
27                 print("Level ");
28                 print(ftos(i + campaign_offset));
29                 print(": ");
30                 print(campaign_gametype[i]);
31                 print("_");
32                 print(campaign_mapname[i]);
33                 print(" - ");
34                 print(campaign_shortdesc[i]);
35                 print("\n");
36         }
37         print("\n");
38 }
39
40 void Campaign_JumpLevel(float n)
41 {
42         float current;
43         // 1. current level?
44         current = cvar(campaign_index_var);
45         if(n > current)
46                 n = current;
47         if(n < 0)
48                 n = current;
49
50         n = n - campaign_offset;
51         if(n >= 0 && n < campaign_entries)
52                 CampaignSetup(n);
53 }
54
55 float campaign_index;
56
57 void() Nex_Action_Campaign_Start =
58 {
59         Campaign_JumpLevel(campaign_index);
60
61         // force the menu to hide
62         m_hide();
63 };
64
65 void() Nex_Action_Campaign_Update =
66 {
67         local entity lItem;
68         local string longdesc;
69         local string shortdesc;
70         lItem = Menu_GetItem( "ShortDescription" );
71         shortdesc = campaign_shortdesc[campaign_index];
72         shortdesc = strcat("Level ", ftos(campaign_index + 1), ": ", shortdesc);
73         String_EntitySet( lItem, text,  shortdesc);
74
75         lItem = Menu_GetItem( "LongDescription" );
76         longdesc = wordwrap(campaign_longdesc[campaign_index], lItem.wrap - 1);
77         String_EntitySet( lItem, text, longdesc );
78
79         lItem = Menu_GetItem( "Picture" );
80         String_EntitySet( lItem, picture, strcat("maps/",campaign_mapname[campaign_index], ".jpg") );
81 };
82
83 void() Nex_Action_Campaign_Init =
84 {
85         campaign_index = cvar(campaign_index_var);
86
87         Nex_Action_Campaign_Update();
88 };
89
90 void() Nex_Action_Campaign_Prev =
91 {
92         if (campaign_index <= 0) {
93                 campaign_index = min(campaign_entries, cvar(campaign_index_var));
94         } else {
95                 campaign_index -= 1;
96         }
97
98         Nex_Action_Campaign_Update();
99 };
100
101 void() Nex_Action_Campaign_Next =
102 {
103         if (campaign_index >= min(campaign_entries, cvar(campaign_index_var))) {
104                 campaign_index = 0;
105         } else {
106                 campaign_index += 1;
107         }
108
109         Nex_Action_Campaign_Update();
110 };
111