]> icculus.org git repositories - taylor/freespace2.git/blob - src/fred2/campaignfilelistbox.cpp
Initial revision
[taylor/freespace2.git] / src / fred2 / campaignfilelistbox.cpp
1 // CampaignFilelistBox.cpp : implementation file
2 //
3
4 #include "stdafx.h"
5 #include "fred.h"
6 #include "freespace.h"
7 #include "campaignfilelistbox.h"
8 #include "campaigntreewnd.h"
9 #include "missioncampaign.h"
10 #include "missionparse.h"
11
12 #ifdef _DEBUG
13 #define new DEBUG_NEW
14 #undef THIS_FILE
15 static char THIS_FILE[] = __FILE__;
16 #endif
17
18 /////////////////////////////////////////////////////////////////////////////
19 // campaign_filelist_box
20
21 campaign_filelist_box::campaign_filelist_box()
22 {
23 }
24
25 campaign_filelist_box::~campaign_filelist_box()
26 {
27 }
28
29
30 BEGIN_MESSAGE_MAP(campaign_filelist_box, CListBox)
31         //{{AFX_MSG_MAP(campaign_filelist_box)
32         //}}AFX_MSG_MAP
33 END_MESSAGE_MAP()
34
35 /////////////////////////////////////////////////////////////////////////////
36 // campaign_filelist_box message handlers
37
38 void campaign_filelist_box::initialize()
39 {
40         int i, z;
41         char wild_card[256];
42         WIN32_FIND_DATA file_data;
43         HANDLE h;
44         mission a_mission;
45
46         ResetContent();
47         memset(wild_card, 0, 256);
48         strcpy(wild_card, NOX("*"));
49         strcat(wild_card, FS_MISSION_FILE_EXT);
50         h = FindFirstFile(wild_card, &file_data);
51         if (h != INVALID_HANDLE_VALUE) {
52                 do {
53
54                         // make a call to get the mission info for this mission.  Passing a misison as the second
55                         // parameter will prevent The_mission from getting overwritten.
56                         get_mission_info( file_data.cFileName, &a_mission );
57
58                         // only add missions of the appropriate type to the file listbox
59                         if ( (Campaign.type == CAMPAIGN_TYPE_SINGLE) && (a_mission.game_type & (MISSION_TYPE_SINGLE|MISSION_TYPE_TRAINING)) )
60                                 AddString(file_data.cFileName);
61                         else if ( (Campaign.type == CAMPAIGN_TYPE_MULTI_COOP) && (a_mission.game_type & MISSION_TYPE_MULTI_COOP) )
62                                 AddString(file_data.cFileName);
63                         else if ( (Campaign.type == CAMPAIGN_TYPE_MULTI_TEAMS) && (a_mission.game_type & MISSION_TYPE_MULTI_TEAMS) )
64                                 AddString(file_data.cFileName);
65
66                 } while (FindNextFile(h, &file_data));
67
68                 FindClose(h);
69         }
70
71         for (i=0; i<Campaign.num_missions; i++) {
72                 z = FindString(-1, Campaign.missions[i].name);
73                 if (z != LB_ERR) {
74                         DeleteString(z);  // take out all missions already in the campaign
75                         i--;  // recheck for name just in case there are two (should be impossible but can't be sure)
76                 }
77         }
78 }