FS2_Open
Open source remastering of the Freespace 2 engine
FictionViewerDlg.cpp
Go to the documentation of this file.
1 // FictionViewerDlg.cpp : implementation file
2 //
3 
4 #include "stdafx.h"
5 #include "fred.h"
6 #include "FictionViewerDlg.h"
8 #include "gamesnd/eventmusic.h"
9 
10 #ifdef _DEBUG
11 #undef THIS_FILE
12 static char THIS_FILE[] = __FILE__;
13 #endif
14 
16 // FictionViewerDlg dialog
17 
18 
19 FictionViewerDlg::FictionViewerDlg(CWnd* pParent /*=NULL*/)
20  : CDialog(FictionViewerDlg::IDD, pParent)
21 {
22  //{{AFX_DATA_INIT(FictionViewerDlg)
23  m_story_file = _T("");
24  m_font_file = _T("");
25  m_voice_file = _T("");
26  m_fiction_music = 0;
27  //}}AFX_DATA_INIT
28 }
29 
30 
31 void FictionViewerDlg::DoDataExchange(CDataExchange* pDX)
32 {
33  CDialog::DoDataExchange(pDX);
34  //{{AFX_DATA_MAP(FictionViewerDlg)
35  DDX_Text(pDX, IDC_STORY_FILE, m_story_file);
36  DDX_Text(pDX, IDC_FONT_FILE, m_font_file);
37  DDX_Text(pDX, IDC_VOICE_FILE, m_voice_file);
38  DDX_CBIndex(pDX, IDC_FICTION_MUSIC, m_fiction_music);
39  //}}AFX_DATA_MAP
40 }
41 
42 
43 BEGIN_MESSAGE_MAP(FictionViewerDlg, CDialog)
44  //{{AFX_MSG_MAP(FictionViewerDlg)
45  //}}AFX_MSG_MAP
46 END_MESSAGE_MAP()
47 
49 // FictionViewerDlg message handlers
50 
51 BOOL FictionViewerDlg::OnInitDialog()
52 {
53  int i;
54  CComboBox *box;
55 
56  box = (CComboBox *) GetDlgItem(IDC_FICTION_MUSIC);
57  box->AddString("None");
58  for (i=0; i<Num_music_files; i++){
59  box->AddString(Spooled_music[i].name);
60  }
61 
62  // make sure we have at least one stage
63  if (Fiction_viewer_stages.empty())
64  {
66  memset(&stage, 0, sizeof(fiction_viewer_stage));
67  stage.formula = Locked_sexp_true;
68 
69  Fiction_viewer_stages.push_back(stage);
70  }
71  else if (Fiction_viewer_stages.size() > 1)
72  {
73  MessageBox("You have multiple fiction viewer stages defined for this mission. At present, FRED will only allow you to edit the first stage.");
74  }
75 
76  // init fields based on first fiction viewer stage
78  m_story_file = _T(stagep->story_filename);
79  m_font_file = _T(stagep->font_filename);
80  m_voice_file = _T(stagep->voice_filename);
81 
82  // music is managed through the mission
83  m_fiction_music = Mission_music[SCORE_FICTION_VIEWER] + 1;
84 
85  CDialog::OnInitDialog();
86  UpdateData(FALSE);
87  return TRUE;
88 }
89 
91 {
92  UpdateData(TRUE);
93 
94  // store the fields in the data structure
96  strcpy_s(stagep->story_filename, (LPCSTR)m_story_file);
97  strcpy_s(stagep->font_filename, (LPCSTR)m_font_file);
98  strcpy_s(stagep->voice_filename, (LPCSTR)m_voice_file);
99 
100  // if we don't have a story file, remove this stage (stage 0)
101  if (strlen(stagep->story_filename) == 0)
103 
104  // set music
106 
107  CDialog::OnOK();
108 }
109 
111 {
112  // TODO: Add extra cleanup here
113 
114  CDialog::OnCancel();
115 }
116 
118 {
119  int z;
120 
121  UpdateData(TRUE);
122 
123  if (query_modified()) {
124  z = MessageBox("Do you want to keep your changes?", "Close", MB_ICONQUESTION | MB_YESNOCANCEL);
125  if (z == IDCANCEL){
126  return;
127  }
128 
129  if (z == IDYES) {
130  OnOK();
131  return;
132  }
133  }
134 
135  CDialog::OnClose();
136 }
137 
139 {
141 
142  return strcmp(m_story_file, stagep->story_filename) || strcmp(m_font_file, stagep->font_filename) ||
144 }
int i
Definition: multi_pxo.cpp:466
int Mission_music[NUM_SCORES]
Definition: eventmusic.cpp:253
#define IDC_FONT_FILE
Definition: resource.h:1154
SCP_vector< fiction_viewer_stage > Fiction_viewer_stages
char story_filename[MAX_FILENAME_LEN]
Definition: fictionviewer.h:19
#define IDC_FICTION_MUSIC
Definition: resource.h:1155
#define MB_ICONQUESTION
Definition: config.h:188
#define TRUE
Definition: pstypes.h:399
#define IDC_STORY_FILE
Definition: resource.h:1153
char voice_filename[MAX_FILENAME_LEN]
Definition: fictionviewer.h:21
#define SCORE_FICTION_VIEWER
Definition: eventmusic.h:55
#define MB_YESNOCANCEL
Definition: config.h:183
FictionViewerDlg(CWnd *pParent=NULL)
afx_msg void OnClose()
int Num_music_files
Definition: eventmusic.cpp:250
int Locked_sexp_true
Definition: sexp.cpp:828
#define IDC_VOICE_FILE
Definition: resource.h:1158
GLdouble GLdouble z
Definition: Glext.h:5451
char font_filename[MAX_FILENAME_LEN]
Definition: fictionviewer.h:20
menu_music Spooled_music[MAX_SPOOLED_MUSIC]
Definition: eventmusic.cpp:249
GLuint const GLchar * name
Definition: Glext.h:5608
int BOOL
Definition: config.h:80
int MessageBox(HWND h, const char *s1, const char *s2, int i)
#define FALSE
Definition: pstypes.h:400
virtual void DoDataExchange(CDataExchange *pDX)
#define strcpy_s(...)
Definition: safe_strings.h:67