16 #include "CampaignEditorDlg.h"
17 #include "CampaignTreeView.h"
18 #include "CampaignTreeWnd.h"
19 #include "Management.h"
27 static char THIS_FILE[] = __FILE__;
46 m_num_players = _T(
"");
48 m_branch_desc = _T(
"");
49 m_branch_brief_anim = _T(
"");
50 m_branch_brief_sound = _T(
"");
51 m_custom_tech_db =
FALSE;
66 CFormView::DoDataExchange(pDX);
90 ON_NOTIFY(TVN_BEGINLABELEDIT, IDC_SEXP_TREE, OnBeginlabeleditSexpTree)
91 ON_NOTIFY(TVN_ENDLABELEDIT, IDC_SEXP_TREE, OnEndlabeleditSexpTree)
92 ON_NOTIFY(TVN_SELCHANGED, IDC_SEXP_TREE, OnSelchangedSexpTree)
111 void campaign_editor::AssertValid()
const
113 CFormView::AssertValid();
116 void campaign_editor::Dump(CDumpContext& dc)
const
165 r = CFormView::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
167 box = (CComboBox *) GetDlgItem(IDC_CAMPAIGN_TYPE);
186 MessageBox(
"Couldn't open Campaign file!",
"Error");
248 CEdit *bc_dialog, *bc_hall, *bc_persona;
249 char personatext[10];
251 bc_dialog = (CEdit *) GetDlgItem(IDC_BRIEFING_CUTSCENE);
252 bc_hall = (CEdit *) GetDlgItem(IDC_MAIN_HALL);
253 bc_persona = (CEdit *) GetDlgItem(IDC_DEBRIEFING_PERSONA);
256 bc_dialog->SetWindowText(
"");
265 bc_persona->SetWindowText(CString(personatext));
333 GetDlgItem(IDC_SEXP_TREE)->EnableWindow(
FALSE);
334 GetDlgItem(IDC_BRIEFING_CUTSCENE)->EnableWindow(
FALSE);
335 GetDlgItem(IDC_MAIN_HALL)->EnableWindow(
FALSE);
339 GetDlgItem(IDC_SEXP_TREE)->EnableWindow(
TRUE);
340 GetDlgItem(IDC_BRIEFING_CUTSCENE)->EnableWindow(
TRUE);
341 GetDlgItem(IDC_MAIN_HALL)->EnableWindow(
TRUE);
346 GetDlgItem(IDC_LOOP_BRIEF_BROWSE)->EnableWindow(
FALSE);
347 GetDlgItem(IDC_LOOP_BRIEF_SOUND_BROWSE)->EnableWindow(
FALSE);
356 }
else if ( (
Links[i].to == -1) && (
Links[i].from != -1) ) {
363 int image, sel_image;
364 if (
Links[i].is_mission_loop ||
Links[i].is_mission_fork) {
388 TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
400 TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
432 if (m_last_mission < 0){
437 if (
Links[i].from == m_last_mission) {
456 NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
457 h = pNMTreeView->itemNew.hItem;
464 while ((h2 =
m_tree.GetParentItem(h))>0){
469 node =
m_tree.GetItemData(h);
476 if (i == Total_links) {
509 if ((last != -1) && (i < Total_links)) {
522 GetDlgItem(IDC_SEXP_TREE)->SetFocus();
542 if (j < Total_links) {
555 GetDlgItem(IDC_SEXP_TREE)->SetFocus();
569 Assert(index1 < Total_links);
576 Assert(index2 < Total_links);
577 temp =
Links[index1];
579 while (index1 < index2) {
584 while (index1 > index2 + 1) {
618 GetDlgItem(IDC_SEXP_TREE)->SetFocus();
627 bc_dialog = (CEdit *) GetDlgItem(IDC_BRIEFING_CUTSCENE);
634 if ( bc_dialog->GetModify() ) {
670 if (strlen(buffer)) {
694 bool enable_branch_desc_window;
696 enable_branch_desc_window =
false;
698 enable_branch_desc_window =
true;
705 GetDlgItem(IDC_LOOP_BRIEF_BROWSE)->EnableWindow(enable_branch_desc_window);
706 GetDlgItem(IDC_LOOP_BRIEF_SOUND_BROWSE)->EnableWindow(enable_branch_desc_window);
788 int bitmap1, bitmap2;
798 HTREEITEM
h =
m_tree.GetRootItem();
801 m_tree.SetItemImage(h, bitmap1, bitmap2);
805 h =
m_tree.GetNextSiblingItem(h);
820 CFileDialog dlg(
TRUE,
"ani", NULL, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR,
"Ani Files (*.ani)|*.ani");
822 if (dlg.DoModal() == IDOK) {
841 CFileDialog dlg(
TRUE,
"wav", NULL, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR,
842 "Voice Files (*.ogg, *.wav)|*.ogg;*.wav|Ogg Vorbis Files (*.ogg)|*.ogg|Wave Files (*.wav)|*.wav||");
844 if (dlg.DoModal() == IDOK) {
862 GetDlgItem(IDC_MAIN_HALL)->GetWindowText(str);
876 GetDlgItem(IDC_DEBRIEFING_PERSONA)->GetWindowText(str);
879 if (persona < 0 || persona > 0xff)
#define CAMPAIGN_TYPE_SINGLE
void swap_handler(int node1, int node2)
afx_msg void OnChangeMainHall()
void delete_link(int num)
virtual void OnUpdate(CView *pSender, LPARAM lHint, CObject *pHint)
GLfloat GLfloat GLfloat GLfloat h
void add_sub_tree(int node, HTREEITEM root)
#define MAX_CAMPAIGN_TYPES
afx_msg void OnBrowseLoopSound()
void save_tree(int clear=1)
campaign_editor * Campaign_tree_formp
virtual void DoDataExchange(CDataExchange *pDX)
#define IDC_CAMPAIGN_TYPE
#define IDC_LOOP_BRIEF_SOUND
ubyte debrief_persona_index
GLenum GLsizei GLenum GLenum const GLvoid * image
void initialize(int init_files=1)
afx_msg void OnEndlabeleditSexpTree(NMHDR *pNMHDR, LRESULT *pResult)
char briefing_cutscene[NAME_LENGTH]
afx_msg void OnCpgnClose()
char * mission_branch_brief_anim
void setup(CEdit *ptr=NULL)
void save_loop_desc_window()
int edit_label(HTREEITEM h)
std::basic_string< char, std::char_traits< char >, std::allocator< char > > SCP_string
#define IDC_MISSISON_LOOP_DESC
void deconvert_multiline_string(char *dest, const CString &str, int max_len)
GLenum GLuint GLenum GLsizei const GLchar * buf
afx_msg void OnBeginlabeleditSexpTree(NMHDR *pNMHDR, LRESULT *pResult)
#define IDC_CUSTOM_TECH_DB
void right_clicked(int mode=0)
#define IDC_LOOP_BRIEF_SOUND_BROWSE
void swap_roots(HTREEITEM one, HTREEITEM two)
campaign_tree_view * Campaign_tree_viewp
int cfile_push_chdir(int type)
Push current directory onto a 'stack' and change to a new directory.
void update_help(HTREEITEM h)
void mission_selected(int num)
void sexp_mark_persistent(int n)
void convert_multiline_string(CString &dest, const SCP_string &src)
afx_msg void OnMoveDown()
int cf_find_file_location(const char *filespec, int pathtype, int max_out, char *pack_filename, int *size, int *offset, bool localize=false)
GLdouble GLdouble GLdouble r
afx_msg void OnToggleLoop()
afx_msg void OnCustomTechDB()
int end_label_edit(TVITEMA &item)
virtual ~campaign_editor()
campaign_sexp_tree m_tree
#define CF_TYPE_VOICE_CMD_BRIEF
void insert_handler(int old, int node)
sprintf(buf,"(%f,%f,%f)", v3->xyz.x, v3->xyz.y, v3->xyz.z)
#define IDC_BRIEFING_CUTSCENE
char Default_campaign_file_name[MAX_FILENAME_LEN-4]
void sexp_unmark_persistent(int n)
afx_msg void OnSelchangedSexpTree(NMHDR *pNMHDR, LRESULT *pResult)
#define MISSION_DESC_LENGTH
void update_loop_desc_window()
#define CF_CUSTOM_TECH_DATABASE
#define CF_TYPE_INTERFACE
HTREEITEM insert(LPCTSTR lpszItem, int image=BITMAP_ROOT, int sel_image=BITMAP_ROOT, HTREEITEM hParent=TVI_ROOT, HTREEITEM hInsertAfter=TVI_LAST)
campaign_tree_wnd * Campaign_wnd
int get_mission_info(const char *filename, mission *mission_p, bool basic)
void string_copy(char *dest, const CString &src, int max_len, int modify)
CString m_branch_brief_anim
int handler(int code, int node, char *str=NULL)
char * mission_branch_brief_sound
#define IDC_LOOP_BRIEF_ANIM
char * mission_branch_txt
int load_sub_tree(int index, bool valid, const char *text)
afx_msg void OnChangeDebriefingPersona()
int mission_campaign_load(char *filename, player *pl, int load_savefile, bool reset_stats)
afx_msg void OnChangeBriefingCutscene()
CString m_branch_brief_sound
int save_tree(int node=-1)
HTREEITEM handle(int node)
int MessageBox(HWND h, const char *s1, const char *s2, int i)
campaign_filelist_box m_filelist
afx_msg void OnRclickTree(NMHDR *pNMHDR, LRESULT *pResult)
char filename[MAX_FILENAME_LEN]
#define IDC_PLAYERS_LABEL
char * campaign_types[MAX_CAMPAIGN_TYPES]
#define IDC_LOOP_BRIEF_BROWSE
cmission missions[MAX_CAMPAIGN_MISSIONS]
void clear_tree(const char *op=NULL)
afx_msg void OnCpgnFileNew()
#define IDC_DEBRIEFING_PERSONA
afx_msg void OnBrowseLoopAni()
void load_tree(int save=1)
campaign_tree_link Links[MAX_CAMPAIGN_TREE_LINKS]
virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT &rect, CWnd *pParentWnd, UINT nID, CCreateContext *pContext=NULL)
afx_msg void OnSelchangeType()