1 // FictionViewerDlg.cpp : implementation file
2 //
3
4 #include "stdafx.h"
5 #include "fred.h"
6 #include "FictionViewerDlg.h"
7 #include "missionui/fictionviewer.h"
8 #include "gamesnd/eventmusic.h"
9
10 #ifdef _DEBUG
11 #undef THIS_FILE
12 static char THIS_FILE[] = __FILE__;
13 #endif
14
15 /////////////////////////////////////////////////////////////////////////////
16 // FictionViewerDlg dialog
17
18
FictionViewerDlg(CWnd * pParent)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_fiction_music = 0;
26 //}}AFX_DATA_INIT
27 }
28
29
DoDataExchange(CDataExchange * pDX)30 void FictionViewerDlg::DoDataExchange(CDataExchange* pDX)
31 {
32 CDialog::DoDataExchange(pDX);
33 //{{AFX_DATA_MAP(FictionViewerDlg)
34 DDX_Text(pDX, IDC_STORY_FILE, m_story_file);
35 DDX_Text(pDX, IDC_FONT_FILE, m_font_file);
36 DDX_CBIndex(pDX, IDC_FICTION_MUSIC, m_fiction_music);
37 //}}AFX_DATA_MAP
38 }
39
40
BEGIN_MESSAGE_MAP(FictionViewerDlg,CDialog)41 BEGIN_MESSAGE_MAP(FictionViewerDlg, CDialog)
42 //{{AFX_MSG_MAP(FictionViewerDlg)
43 //}}AFX_MSG_MAP
44 END_MESSAGE_MAP()
45
46 /////////////////////////////////////////////////////////////////////////////
47 // FictionViewerDlg message handlers
48
49 BOOL FictionViewerDlg::OnInitDialog()
50 {
51 int i;
52 CComboBox *box;
53
54 box = (CComboBox *) GetDlgItem(IDC_FICTION_MUSIC);
55 box->AddString("None");
56 for (i=0; i<Num_music_files; i++){
57 box->AddString(Spooled_music[i].name);
58 }
59
60 // init variables
61 m_story_file = _T(fiction_file());
62 m_font_file = _T(fiction_font());
63 m_fiction_music = Mission_music[SCORE_FICTION_VIEWER] + 1;
64
65 CDialog::OnInitDialog();
66 UpdateData(FALSE);
67 return TRUE;
68 }
69
OnOK()70 void FictionViewerDlg::OnOK()
71 {
72 UpdateData(TRUE);
73
74 // load it up
75 fiction_viewer_reset();
76 fiction_viewer_load((char *)(LPCSTR) m_story_file, (char *)(LPCSTR) m_font_file);
77
78 // set music
79 Mission_music[SCORE_FICTION_VIEWER] = m_fiction_music - 1;
80
81 CDialog::OnOK();
82 }
83
OnCancel()84 void FictionViewerDlg::OnCancel()
85 {
86 // TODO: Add extra cleanup here
87
88 CDialog::OnCancel();
89 }
90
OnClose()91 void FictionViewerDlg::OnClose()
92 {
93 int z;
94
95 UpdateData(TRUE);
96
97 if (query_modified()) {
98 z = MessageBox("Do you want to keep your changes?", "Close", MB_ICONQUESTION | MB_YESNOCANCEL);
99 if (z == IDCANCEL){
100 return;
101 }
102
103 if (z == IDYES) {
104 OnOK();
105 return;
106 }
107 }
108
109 CDialog::OnClose();
110 }
111
query_modified()112 int FictionViewerDlg::query_modified()
113 {
114 return strcmp(m_story_file, fiction_file()) || strcmp(m_font_file, fiction_font()) || m_fiction_music != (Mission_music[SCORE_FICTION_VIEWER] + 1);
115 }
116