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