FS2_Open
Open source remastering of the Freespace 2 engine
missionnotesdlg.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) Volition, Inc. 1999. All rights reserved.
3  *
4  * All source code herein is the property of Volition, Inc. You may not sell
5  * or otherwise commercially exploit the source or things you created based on the
6  * source.
7  *
8 */
9 
10 
11 
12 #include "stdafx.h"
13 #include "FRED.h"
14 #include "FREDDoc.h"
15 #include "MissionNotesDlg.h"
16 #include "CustomWingNames.h"
17 #include "soundenvironmentdlg.h"
18 #include "Management.h"
19 #include "gamesnd/eventmusic.h"
20 #include "cfile/cfile.h"
21 #include "mission/missionparse.h"
22 #include "mission/missionmessage.h"
23 
24 #ifdef _DEBUG
25 #undef THIS_FILE
26 static char THIS_FILE[] = __FILE__;
27 #endif
28 
29 #define NO_SQUAD "<none>"
30 
31 // module globals to hold button information
32 CButton *coop, *team, *dogfight;
33 
35 // CMissionNotesDlg dialog
36 
37 CMissionNotesDlg::CMissionNotesDlg(CWnd* pParent /*=NULL*/) : CDialog(CMissionNotesDlg::IDD, pParent)
38 {
39  //{{AFX_DATA_INIT(CMissionNotesDlg)
40  m_created = _T("");
41  m_modified = _T("");
42  m_mission_notes = _T("");
43  m_designer_name = _T("");
44  m_mission_title = _T("");
45  m_mission_desc = _T("");
46  m_squad_filename = _T("");
47  m_squad_name = _T(NO_SQUAD);
48  m_loading_640 = _T("");
49  m_loading_1024 = _T("");
50  m_ai_profile = -1;
51  m_event_music = -1;
52  m_substitute_event_music = _T("");
53  m_command_persona = -1;
54  m_command_sender = _T("");
55  m_full_war = FALSE;
57  m_scramble = FALSE;
59  m_num_respawns = 0;
77  m_max_hull_repair_val = 0.0f;
78  m_max_subsys_repair_val = 100.0f;
81  //}}AFX_DATA_INIT
82 }
83 
84 void CMissionNotesDlg::DoDataExchange(CDataExchange* pDX)
85 {
86  CDialog::DoDataExchange(pDX);
87  //{{AFX_DATA_MAP(CMissionNotesDlg)
88  DDX_Control(pDX, IDC_RESPAWN_SPIN, m_respawn_spin);
90  DDX_Text(pDX, IDC_CREATED, m_created);
91  DDX_Text(pDX, IDC_MODIFIED, m_modified);
92  DDX_Text(pDX, IDC_MISSION_NOTES, m_mission_notes);
93  DDX_Text(pDX, IDC_DESIGNER_NAME, m_designer_name);
94  DDX_Text(pDX, IDC_MISSION_TITLE, m_mission_title);
95  DDX_Text(pDX, IDC_MISSION_DESC, m_mission_desc);
96  DDX_Text(pDX, IDC_SQUAD_LOGO, m_squad_filename);
97  DDX_Text(pDX, IDC_SQUAD_NAME, m_squad_name);
98  DDX_Text(pDX, IDC_LOADING_SCREEN640, m_loading_640);
99  DDX_Text(pDX, IDC_LOADING_SCREEN1024, m_loading_1024);
100  DDX_CBIndex(pDX, IDC_AI_PROFILE, m_ai_profile);
101  DDX_CBIndex(pDX, IDC_EVENT_MUSIC, m_event_music);
103  DDX_CBIndex(pDX, IDC_COMMAND_PERSONA, m_command_persona);
104  DDX_Text(pDX, IDC_COMMAND_SENDER, m_command_sender);
105  DDX_Check(pDX, IDC_FULL_WAR, m_full_war);
106  DDX_Check(pDX, IDC_RED_ALERT, m_red_alert);
107  DDX_Check(pDX, IDC_SCRAMBLE, m_scramble);
109  DDX_Text(pDX, IDC_RESPAWNS, m_num_respawns);
111  DDV_MinMaxUInt(pDX, m_num_respawns, 0, 99);
112  DDV_MinMaxInt(pDX, m_max_respawn_delay, -1, 999);
113  DDX_Check(pDX, IDC_SUPPORT_ALLOWED, m_disallow_support);
114  DDX_Check(pDX, IDC_NO_PROMOTION, m_no_promotion);
117  DDX_Check(pDX, IDC_NO_TRAITOR, m_no_traitor);
118  DDX_Check(pDX, IDC_SPECS_TOGGLE_TRAILS, m_toggle_trails);
122  DDX_Check(pDX, IDC_NO_BRIEFING, m_no_briefing);
123  DDX_Check(pDX, IDC_NO_DEBRIEFING, m_no_debriefing);
125  DDX_Check(pDX, IDC_2D_MISSION, m_2d_mission);
126  DDX_Check(pDX, IDC_DEACTIVATE_AUTOPILOT, m_no_autpilot);
128  DDX_Check(pDX, IDC_END_TO_MAINHALL, m_end_to_mainhall);
130  DDV_MinMaxFloat(pDX, m_max_hull_repair_val, 0, 100);
132  DDV_MinMaxFloat(pDX, m_max_subsys_repair_val, 0, 100);
134  DDV_MinMaxInt(pDX, m_contrail_threshold, 0, 1000);
136  //}}AFX_DATA_MAP
137 }
138 
139 BEGIN_MESSAGE_MAP(CMissionNotesDlg, CDialog)
140  //{{AFX_MSG_MAP(CMissionNotesDlg)
141  ON_WM_CLOSE()
142  ON_BN_CLICKED(IDC_TRAINING, OnTraining)
143  ON_BN_CLICKED(IDC_MULTI, OnMulti)
144  ON_BN_CLICKED(IDC_SINGLE, OnSingle)
145  ON_BN_CLICKED(IDC_SQUAD_LOGO_BUTTON, OnSquadLogo)
146  ON_BN_CLICKED(IDC_LOADING_SCREEN_BUTTON640, OnLoad640)
147  ON_BN_CLICKED(IDC_LOADING_SCREEN_BUTTON1024, OnLoad1024)
148  ON_BN_CLICKED(IDC_CONTRAIL_THRESHOLD_CHECK, OnToggleContrailThreshold)
149  ON_BN_CLICKED(IDC_CUSTOM_WING_NAMES, OnCustomWingNames)
150  ON_BN_CLICKED(IDC_SOUND_ENVIRONMENT_BUTTON, OnSoundEnvironment)
151  //}}AFX_MSG_MAP
152  END_MESSAGE_MAP()
153 
155 // CMissionNotesDlg message handlers
156 
157 int CMissionNotesDlg::query_modified()
158 {
159  // the below is massively out of date
160  return 1;
161 
162  /*
163  if (m_mission_title != m_mission_title_orig){
164  return 1;
165  }
166  if (m_designer_name != m_designer_name_orig){
167  return 1;
168  }
169  if (m_mission_notes != m_mission_notes_orig){
170  return 1;
171  }
172  if (m_mission_desc != m_mission_desc_orig){
173  return 1;
174  }
175  if (Current_soundtrack_num != m_event_music - 1){
176  return 1;
177  }
178  if (Mission_all_attack != m_full_war){
179  return 1;
180  }
181 
182  return 0;
183  */
184 }
185 
187 {
188  int new_m_type, flags, is_multi = 0, is_training = 0, is_single = 0;
189 
190  UpdateData();
191  is_single = (((CButton *) GetDlgItem(IDC_SINGLE))->GetCheck() == 1);
192  is_multi = (((CButton *) GetDlgItem(IDC_MULTI))->GetCheck() == 1);
193  is_training = (((CButton *) GetDlgItem(IDC_TRAINING))->GetCheck() == 1);
194 
195  // deal with changing the mission type. Code is done this way since training missions
196  // just override anything else.
197  new_m_type = 0;
198  if (is_training) {
199  new_m_type = MISSION_TYPE_TRAINING;
200  } else {
201  if (is_single){
202  new_m_type = MISSION_TYPE_SINGLE;
203  }
204 
205  if (is_multi) {
206  new_m_type |= MISSION_TYPE_MULTI;
207  if (coop->GetCheck()){
208  new_m_type |= MISSION_TYPE_MULTI_COOP;
209  } else if (team->GetCheck()){
210  new_m_type |= MISSION_TYPE_MULTI_TEAMS;
211  } else if(dogfight->GetCheck()){
212  new_m_type |= MISSION_TYPE_MULTI_DOGFIGHT;
213  } else {
214  Int3(); // get allender -- multiplayer mode not set!!!
215  }
216  }
217  }
218 
219  if (!new_m_type) {
220  MessageBox("You must select the game type: training, single, or multiplayer", "Error");
221  return;
222  }
223 
224  MODIFY(The_mission.game_type, new_m_type );
230 
231  flags = The_mission.flags;
232 
233  // set flags for red alert
234  if ( m_red_alert ) {
236  } else {
238  }
239 
240  // set flags for scramble
241  if ( m_scramble ) {
243  } else {
245  }
246 
247  // set flags for dock trees
248  if ( m_daisy_chained_docking ) {
250  } else {
252  }
253 
254  // set the flags for no promotion
255  if ( m_no_promotion ) {
257  } else {
259  }
260 
261  // set flags for no builtin messages
262  if ( m_no_builtin_msgs ) {
264  } else {
266  }
267 
268  // set flags for no builtin command messages
270  {
272  } else
273  {
275  }
276 
277  // set no traitor flags
278  if ( m_no_traitor ) {
280  } else {
282  }
283 
284  //set ship trail flags
285  if ( m_toggle_trails ) {
287  } else {
289  }
290 
291  // set ship trail threshold
294  } else {
296  }
297 
298  //set support ship repairing flags
299  if ( m_support_repairs_hull ) {
301  } else {
303  }
304 
305  // set default beam free
308  } else {
310  }
311 
312  // set player AI by default
313  if ( m_player_start_using_ai ) {
315  } else {
317  }
318 
319  // set briefing
320  if ( m_no_briefing ) {
322  } else {
324  }
325 
326  // set debriefing
327  if ( m_no_debriefing ) {
329  } else {
331  }
332 
333  // set autopilot cinematics
334  if ( m_autpilot_cinematics ) {
336  } else {
338  }
339 
340  // 2D mission
341  if ( m_2d_mission ) {
343  } else {
345  }
346 
347  // set autopilot disabled
348  if ( m_no_autpilot ) {
350  } else {
352  }
353 
354  // always show mission goals
355  if ( m_always_show_goals ) {
357  } else {
359  }
360 
361  if ( m_end_to_mainhall ) {
363  } else {
365  }
366 
367  if ( flags != The_mission.flags ){
368  set_modified();
369  }
370 
377 
378  // copy squad stuff
379  if(m_squad_name == CString(NO_SQUAD)){
382  } else {
385  }
386 
388 
391 
392  MODIFY(The_mission.command_persona, (int) ((CComboBox *) GetDlgItem(IDC_COMMAND_PERSONA))->GetItemData(m_command_persona));
393  if (m_command_sender.GetAt(0) == '#')
395  else
397 
399  if (query_modified()){
400  set_modified();
401  }
402 
404 
405  // update the Num_teams variable accoriding to mission types
406  Num_teams = 1;
408  Num_teams = 2;
409  }
410 
411  CDialog::OnOK();
412 }
413 
415 {
417  CDialog::OnCancel();
418 }
419 
421 {
422  int i, box_index = 0, mission_command_persona_box_index = -1;
423  CComboBox *box;
424  CEdit *edit;
425 
426  // set up the radio box states
427  coop = (CButton *)GetDlgItem(IDC_COOP);
428  team = (CButton *)GetDlgItem(IDC_TEAMVTEAM);
429  dogfight = (CButton *)GetDlgItem(IDC_DOGFIGHT);
430 
458 
461 
462  CDialog::OnInitDialog();
463 
464  box = (CComboBox *) GetDlgItem(IDC_AI_PROFILE);
465  for (i=0; i<Num_ai_profiles; i++){
466  box->AddString(Ai_profiles[i].profile_name);
467  }
468 
469  box = (CComboBox *) GetDlgItem(IDC_EVENT_MUSIC);
470  box->AddString("None");
471  for (i=0; i<Num_soundtracks; i++){
472  box->AddString(Soundtracks[i].name);
473  }
474 
475  box = (CComboBox *) GetDlgItem(IDC_SUBSTITUTE_EVENT_MUSIC);
476  box->AddString("None");
477  for (i=0; i<Num_soundtracks; i++){
478  box->AddString(Soundtracks[i].name);
479  }
480 
481  box = (CComboBox *) GetDlgItem(IDC_COMMAND_PERSONA);
482  for (i=0; i<Num_personas; i++){
484  box->AddString(Personas[i].name);
485  box->SetItemData(box_index, i);
486  if (i == The_mission.command_persona)
487  mission_command_persona_box_index = box_index;
488  box_index++;
489  }
490  }
491 
492  box = (CComboBox *) GetDlgItem(IDC_COMMAND_SENDER);
493  box->AddString(DEFAULT_COMMAND);
494  for (i=0; i<MAX_SHIPS; i++){
495  if (Ships[i].objnum >= 0)
496  if (Ship_info[Ships[i].ship_info_index].flags & SIF_HUGE_SHIP)
497  box->AddString(Ships[i].ship_name);
498  }
499 
500  // squad info
501  if(strlen(The_mission.squad_name) > 0){ //-V805
504  } else {
505  m_squad_name = _T(NO_SQUAD);
506  m_squad_filename = _T("");
507  }
508 
511 
514 
515  m_command_persona = mission_command_persona_box_index;
517 
518  // set up the game type checkboxes accoring to m_type
519  if ( m_type & MISSION_TYPE_SINGLE ){
520  ((CButton *) GetDlgItem(IDC_SINGLE))->SetCheck(1);
521  }
522 
523  // for multiplayer -- be sure to assign a default type if not already assigned.
524  if ( m_type & MISSION_TYPE_MULTI ){
525  ((CButton *) GetDlgItem(IDC_MULTI))->SetCheck(1);
526  }
527 
528  if ( m_type & MISSION_TYPE_TRAINING ){
529  ((CButton *) GetDlgItem(IDC_TRAINING))->SetCheck(1);
530  }
531 
532  // we need to set one of these three multiplayer modes so interface looks correct
535  }
536 
538  coop->SetCheck(1);
539  } else if ( m_type & MISSION_TYPE_MULTI_TEAMS ){
540  team->SetCheck(1);
541  } else if ( m_type & MISSION_TYPE_MULTI_DOGFIGHT ){
542  dogfight->SetCheck(1);
543  } else {
544  Int3(); // get allender -- multiplayer mode not set!!!
545  }
546 
547  m_respawn_spin.SetRange(0, 99);
548  m_max_respawn_delay_spin.SetRange(-1, 999);
553 
556  edit = (CEdit *) GetDlgItem(IDC_CONTRAIL_THRESHOLD);
557  edit->SetReadOnly(!m_contrail_threshold_flag);
558 
559  set_types();
560  UpdateData(FALSE);
562  return TRUE;
563 }
564 
566 {
567  int z;
568 
569  if (query_modified()) {
570  z = MessageBox("Do you want to keep your changes?", "Close", MB_ICONQUESTION | MB_YESNOCANCEL);
571  if (z == IDCANCEL){
572  return;
573  }
574 
575  if (z == IDYES) {
576  OnOK();
577  return;
578  }
579  }
580 
581  CDialog::OnClose();
582 }
583 
584 // when training button is set, we need to disable all other buttons
586 {
587  UpdateData(TRUE);
588  set_types();
589 }
590 
592 {
593  UpdateData(TRUE);
594  set_types();
595 }
596 
598 {
599  UpdateData(TRUE);
600  set_types();
601 }
602 
604 {
605  int enable = 0;
606 
607  // when training is checked, no other type is active
608  if (((CButton *) GetDlgItem(IDC_MULTI))->GetCheck() == 1){
609  enable = 1;
610  }
611 
612  coop->EnableWindow(enable);
613  team->EnableWindow(enable);
614  dogfight->EnableWindow(enable);
615  GetDlgItem(IDC_RESPAWNS)->EnableWindow(enable);
616  GetDlgItem(IDC_RESPAWN_SPIN)->EnableWindow(enable);
617  GetDlgItem(IDC_MAX_RESPAWN_DELAY)->EnableWindow(enable);
618  GetDlgItem(IDC_MAX_RESPAWN_DELAY_SPIN)->EnableWindow(enable);
619 }
620 
622 {
623  int z;
624  char *Logo_ext = "Image Files (*.dds, *.pcx)|*.dds;*.pcx|"
625  "DDS Files (*.dds)|*.dds|"
626  "PCX Files (*.pcx)|*.pcx|"
627  "All Files (*.*)|*.*|"
628  "|";
629 
630  //phreak 05/05/2003
631  //this needs to be here or else the data in the mission notes dialog will revert
632  //to what it was before it was opened.
633  UpdateData(TRUE);
634 
635  // get list of squad images
637  CFileDialog dlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR, Logo_ext);
638 
639  // if we have a result
640  if (dlg.DoModal() == IDOK) {
641  m_squad_filename = dlg.GetFileName();
642  } else {
643  m_squad_filename = _T("");
644  }
645  UpdateData(FALSE);
646 
647  // restore directory
648  if (!z){
649  cfile_pop_dir();
650  }
651 }
652 
653 char *Load_screen_ext = "Image Files (*.dds, *.pcx, *.jpg, *.jpeg, *.tga, *.png)|*.dds;*.pcx;*.jpg;*.jpeg;*.tga;*.png|"
654  "DDS Files (*.dds)|*.dds|"
655  "PCX Files (*.pcx)|*.pcx|"
656  "JPG Files (*.jpg; *.jpeg)|*.jpg;*.jpeg|"
657  "TGA Files (*.tga)|*.tga|"
658  "PNG Files (*.png)|*.png|"
659  "All Files (*.*)|*.*|"
660  "|";
661 
663 {
664  int z;
665 
666  UpdateData(TRUE);
667 
668  // get list of
670  CFileDialog dlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR, Load_screen_ext);
671 
672  // if we have a result
673  if (dlg.DoModal() == IDOK) {
674  m_loading_1024 = dlg.GetFileName();
675  } else {
676  m_loading_1024 = _T("");
677  }
678  UpdateData(FALSE);
679 
680  // restore directory
681  if (!z){
682  cfile_pop_dir();
683  }
684 }
685 
687 {
688  int z;
689 
690  UpdateData(TRUE);
691 
692  // get list of
694  CFileDialog dlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR, Load_screen_ext);
695 
696  // if we have a result
697  if (dlg.DoModal() == IDOK) {
698  m_loading_640 = dlg.GetFileName();
699  } else {
700  m_loading_640 = _T("");
701  }
702  UpdateData(FALSE);
703 
704  // restore directory
705  if (!z){
706  cfile_pop_dir();
707  }
708 }
709 
710 
711 
713 {
714  // TODO: If this is a RICHEDIT control, the control will not
715  // send this notification unless you override the CDialog::OnInitDialog()
716  // function and call CRichEditCtrl().SetEventMask()
717  // with the ENM_CHANGE flag ORed into the mask.
718 
719  // TODO: Add your control notification handler code here
720 }
721 
723 {
724  CEdit *edit;
725 
726  UpdateData(TRUE);
727 
728  // set threshold textbox as read-only or not
729  edit = (CEdit *) GetDlgItem(IDC_CONTRAIL_THRESHOLD);
730  edit->SetReadOnly(!m_contrail_threshold_flag);
731 
732  // if read-only, reset to default
734  {
736  }
737 
738  UpdateData(FALSE);
739 }
740 
742 {
743  UpdateData(TRUE);
744 
745  CustomWingNames dlg;
746  dlg.DoModal();
747 
748  UpdateData(FALSE);
749 }
750 
752 {
753  UpdateData(TRUE);
754 
755  SoundEnvironment dlg;
756  dlg.DoModal();
757 
758  UpdateData(FALSE);
759 }
void record_window_data(window_data *wndd, CWnd *wnd)
Definition: fred.cpp:670
afx_msg void OnMulti()
#define MAX_FILENAME_LEN
Definition: pstypes.h:324
int i
Definition: multi_pxo.cpp:466
CFREDApp theApp
Definition: fred.cpp:115
uint num_respawns
Definition: missionparse.h:141
#define MISSION_FLAG_NO_BUILTIN_MSGS
Definition: missionparse.h:71
#define IDC_SQUAD_LOGO_BUTTON
Definition: resource.h:334
#define IDC_LOADING_SCREEN_BUTTON1024
Definition: resource.h:1073
#define IDC_LOADING_SCREEN1024
Definition: resource.h:793
#define IDC_MISSION_DESC
Definition: resource.h:884
#define IDC_MAX_HULL_REPAIR_VAL
Definition: resource.h:1077
int game_type
Definition: missionparse.h:138
int Current_soundtrack_num
Definition: eventmusic.cpp:59
#define IDC_MODIFIED
Definition: resource.h:520
#define IDC_RESPAWNS
Definition: resource.h:956
#define MISSION_FLAG_SCRAMBLE
Definition: missionparse.h:85
CButton * dogfight
afx_msg void OnTraining()
char name[NAME_LENGTH]
Definition: missionparse.h:131
#define IDC_COOP
Definition: resource.h:236
#define MAX_SHIPS
Definition: globals.h:37
#define MISSION_FLAG_USE_AP_CINEMATICS
Definition: missionparse.h:89
#define MISSION_FLAG_TOGGLE_DEBRIEFING
Definition: missionparse.h:79
int init_window(window_data *wndd, CWnd *wnd, int adjust=0, int pre=0)
Definition: fred.cpp:639
#define MISSION_FLAG_SUPPORT_REPAIRS_HULL
Definition: missionparse.h:74
CSpinButtonCtrl m_max_respawn_delay_spin
#define IDC_MULTI
Definition: resource.h:932
#define IDC_CUSTOM_WING_NAMES
Definition: resource.h:1103
CString m_designer_name_orig
#define IDC_TEAMVTEAM
Definition: resource.h:243
#define MB_ICONQUESTION
Definition: config.h:188
#define IDC_NO_PROMOTION
Definition: resource.h:973
CButton * team
int cfile_pop_dir()
Definition: cfile.cpp:381
CString m_substitute_event_music
#define PERSONA_FLAG_COMMAND
#define TRUE
Definition: pstypes.h:399
#define MISSION_TYPE_MULTI
Definition: missionparse.h:62
#define MISSION_FLAG_NO_PROMOTION
Definition: missionparse.h:69
int max_respawn_delay
Definition: missionparse.h:142
#define MISSION_FLAG_ALLOW_DOCK_TREES
Definition: missionparse.h:81
CString m_mission_notes_orig
afx_msg void OnClose()
#define IDC_NO_DEBRIEFING
Definition: resource.h:948
#define CF_TYPE_SQUAD_IMAGES
Definition: cfile.h:69
afx_msg void OnCustomWingNames()
#define IDC_DESIGNER_NAME
Definition: resource.h:519
#define IDC_CONTRAIL_THRESHOLD_CHECK
Definition: resource.h:1095
#define MB_YESNOCANCEL
Definition: config.h:183
void deconvert_multiline_string(char *dest, const CString &str, int max_len)
Definition: management.cpp:184
#define Int3()
Definition: pstypes.h:292
SOUNDTRACK_INFO Soundtracks[MAX_SOUNDTRACKS]
Definition: eventmusic.cpp:57
#define IDC_SQUAD_LOGO
Definition: resource.h:781
#define IDC_NO_TRAITOR
Definition: resource.h:983
#define MODIFY(a, b)
Definition: fred.h:26
afx_msg void OnLoad1024()
#define CONTRAIL_THRESHOLD_DEFAULT
Definition: missionparse.h:226
CSpinButtonCtrl m_respawn_spin
#define MISSION_TYPE_MULTI_COOP
Definition: missionparse.h:64
window_data Mission_notes_wnd_data
Definition: fred.cpp:75
char * Load_screen_ext
float m_max_subsys_repair_val
BOOL m_no_builtin_command_msgs
int cfile_push_chdir(int type)
Push current directory onto a 'stack' and change to a new directory.
Definition: cfile.cpp:342
#define IDC_COMMAND_SENDER
Definition: resource.h:600
void convert_multiline_string(CString &dest, const SCP_string &src)
Definition: management.cpp:169
afx_msg void OnSingle()
#define MISSION_FLAG_NO_BRIEFING
Definition: missionparse.h:78
#define IDC_DISABLE_BUILTIN_COMMAND_MSGS
Definition: resource.h:1118
#define MISSION_TYPE_SINGLE
Definition: missionparse.h:61
#define MISSION_FLAG_DEACTIVATE_AP
Definition: missionparse.h:90
char squad_filename[MAX_FILENAME_LEN]
Definition: missionparse.h:144
#define IDC_DISABLE_BUILTIN_MSGS
Definition: resource.h:978
char created[DATE_TIME_LENGTH]
Definition: missionparse.h:134
int Num_ai_profiles
Definition: ai_profiles.cpp:20
#define IDC_COMMAND_PERSONA
Definition: resource.h:601
#define IDC_AI_PROFILE
Definition: resource.h:595
#define MISSION_FLAG_ALWAYS_SHOW_GOALS
Definition: missionparse.h:91
#define IDC_NO_BRIEFING
Definition: resource.h:946
#define IDC_SCRAMBLE
Definition: resource.h:943
#define IDC_FULL_WAR
Definition: resource.h:925
#define IDC_MAX_RESPAWN_DELAY
Definition: resource.h:961
ai_profile_t * ai_profile
Definition: missionparse.h:168
#define MISSION_FLAG_RED_ALERT
Definition: missionparse.h:84
#define IDC_SUBSTITUTE_EVENT_MUSIC
Definition: resource.h:594
#define DEFAULT_COMMAND
Persona * Personas
BOOL m_beam_free_all_by_default
ai_profile_t Ai_profiles[MAX_AI_PROFILES]
Definition: ai_profiles.cpp:22
#define MISSION_FLAG_BEAM_FREE_ALL_BY_DEFAULT
Definition: missionparse.h:75
#define MISSION_FLAG_END_TO_MAINHALL
Definition: missionparse.h:92
GLdouble GLdouble z
Definition: Glext.h:5451
char squad_name[NAME_LENGTH]
Definition: missionparse.h:145
#define GR_640
Definition: 2d.h:652
char notes[NOTES_LENGTH]
Definition: missionparse.h:136
CString m_mission_title_orig
int Num_teams
virtual BOOL OnInitDialog()
#define IDC_MISSION_NOTES
Definition: resource.h:347
#define MISSION_DESC_LENGTH
Definition: globals.h:28
#define IDC_DEACTIVATE_AUTOPILOT
Definition: resource.h:1134
afx_msg void OnToggleContrailThreshold()
char loading_screen[GR_NUM_RESOLUTIONS][MAX_FILENAME_LEN]
Definition: missionparse.h:146
afx_msg void OnSquadLogo()
#define IDC_USE_AUTOPILOT_CINEMATICS
Definition: resource.h:1057
#define IDC_SPECS_TOGGLE_TRAILS
Definition: resource.h:1044
void string_copy(char *dest, const CString &src, int max_len, int modify)
Definition: management.cpp:142
#define IDC_MAX_SUBSYS_REPAIR_VAL
Definition: resource.h:1081
char modified[DATE_TIME_LENGTH]
Definition: missionparse.h:135
afx_msg void OnLoad640()
CMissionNotesDlg(CWnd *pParent=NULL)
GLbitfield flags
Definition: Glext.h:6722
#define SIF_HUGE_SHIP
Definition: ship.h:945
void set_modified(BOOL arg)
Definition: freddoc.cpp:676
#define IDC_SUPPORT_ALLOWED
Definition: resource.h:968
GLuint const GLchar * name
Definition: Glext.h:5608
#define IDC_EVENT_MUSIC
Definition: resource.h:589
GLboolean enable
Definition: Glext.h:10591
int Num_personas
char command_sender[NAME_LENGTH]
Definition: missionparse.h:159
int BOOL
Definition: config.h:80
afx_msg void OnEnChangeLoadingScreen641()
#define MISSION_TYPE_TRAINING
Definition: missionparse.h:63
#define IDC_SINGLE
Definition: resource.h:929
#define CF_TYPE_DATA
Definition: cfile.h:46
ship Ships[MAX_SHIPS]
Definition: ship.cpp:122
#define IDC_SUPPORT_REPAIRS_HULL
Definition: resource.h:1046
#define IDC_SOUND_ENVIRONMENT_BUTTON
Definition: resource.h:1163
#define MISSION_FLAG_PLAYER_START_AI
Definition: missionparse.h:87
int Mission_all_attack
Definition: aicode.cpp:200
#define IDC_ALWAYS_SHOW_GOALS
Definition: resource.h:1061
#define IDC_MISSION_TITLE
Definition: resource.h:350
#define MISSION_FLAG_TOGGLE_SHIP_TRAILS
Definition: missionparse.h:73
#define NAME_LENGTH
Definition: globals.h:15
CString m_command_sender
CString m_squad_filename
#define IDC_PLAYER_START_AI
Definition: resource.h:1055
#define IDC_LOADING_SCREEN640
Definition: resource.h:1075
CString m_mission_desc_orig
#define IDC_BEAM_FREE_ALL_BY_DEFAULT
Definition: resource.h:1048
SCP_vector< ship_info > Ship_info
Definition: ship.cpp:164
#define NO_SQUAD
virtual void DoDataExchange(CDataExchange *pDX)
#define IDC_CONTRAIL_THRESHOLD
Definition: resource.h:1084
int MessageBox(HWND h, const char *s1, const char *s2, int i)
#define IDC_RESPAWN_SPIN
Definition: resource.h:958
#define IDC_2D_MISSION
Definition: resource.h:1058
char mission_desc[MISSION_DESC_LENGTH]
Definition: missionparse.h:137
#define MISSION_FLAG_2D_MISSION
Definition: missionparse.h:82
#define MISSION_FLAG_NO_BUILTIN_COMMAND
Definition: missionparse.h:86
int Num_soundtracks
Definition: eventmusic.cpp:58
#define IDC_ALLOW_DOCK_TREES
Definition: resource.h:1053
afx_msg void OnSoundEnvironment()
CButton * coop
BOOL m_contrail_threshold_flag
#define IDC_LOADING_SCREEN_BUTTON640
Definition: resource.h:565
#define IDC_END_TO_MAINHALL
Definition: resource.h:1064
int command_persona
Definition: missionparse.h:158
int contrail_threshold
Definition: missionparse.h:151
#define IDC_SQUAD_NAME
Definition: resource.h:998
#define IDC_DOGFIGHT
Definition: resource.h:216
#define NOTES_LENGTH
Definition: globals.h:20
mission The_mission
#define IDC_RED_ALERT
Definition: resource.h:941
#define IDC_TRAINING
Definition: resource.h:934
support_ship_info support_ships
Definition: missionparse.h:143
#define FALSE
Definition: pstypes.h:400
#define MISSION_FLAG_NO_TRAITOR
Definition: missionparse.h:72
#define IDC_MAX_RESPAWN_DELAY_SPIN
Definition: resource.h:963
char author[NAME_LENGTH]
Definition: missionparse.h:132
#define IDC_CREATED
Definition: resource.h:536
float max_subsys_repair_val
Definition: missionparse.h:107
#define GR_1024
Definition: 2d.h:653
char substitute_event_music_name[NAME_LENGTH]
Definition: missionparse.h:164
#define strcpy_s(...)
Definition: safe_strings.h:67
#define MISSION_TYPE_MULTI_TEAMS
Definition: missionparse.h:65
#define MISSION_TYPE_MULTI_DOGFIGHT
Definition: missionparse.h:66