Files
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

258 lines
5.6 KiB
C++

// AudioFileDlg.cpp : implementation file
//
#include "stdafx.h"
#include "mw4gameed2.h"
#include "AudioFileDlg.h"
#include "GameInterface.h"
#include <Stuff\Stuff.hpp>
using namespace Stuff;
/////////////////////////////////////////////////////////////////////////////
// CAudioFileDlg dialog
CAudioFileDlg::CAudioFileDlg(CString mis_name,CWnd* pParent /*=NULL*/)
: CDialog(CAudioFileDlg::IDD, pParent)
{
MisName=mis_name;
//{{AFX_DATA_INIT(CAudioFileDlg)
m_AudName = _T("");
//}}AFX_DATA_INIT
}
void CAudioFileDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAudioFileDlg)
DDX_Control(pDX, IDC_NEWFILELIST, m_NewFileList);
DDX_Control(pDX, IDC_AUDIOLIST, m_AudList);
DDX_Text(pDX, IDC_AUDNAME, m_AudName);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAudioFileDlg, CDialog)
//{{AFX_MSG_MAP(CAudioFileDlg)
ON_BN_CLICKED(IDC_ADD, OnAdd)
ON_BN_CLICKED(IDC_DELETE, OnDelete)
ON_LBN_SELCHANGE(IDC_AUDIOLIST, OnSelchangeAudiolist)
ON_EN_CHANGE(IDC_AUDNAME, OnChangeAudname)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CAudioFileDlg message handlers
void CAudioFileDlg::OnAdd()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if(m_NewFileList.GetCurSel()>=0)
{
CString str;
m_NewFileList.GetText(m_NewFileList.GetCurSel(),str);
int itm;
itm=m_AudList.AddString(str);
m_AudList.SetItemDataPtr(itm,new CString(str));
m_NewFileList.DeleteString(m_NewFileList.GetCurSel());
}
}
void CAudioFileDlg::OnDelete()
{
UpdateData(TRUE);
if(m_AudList.GetCurSel()>=0)
{
CString str;
delete m_AudList.GetItemDataPtr(m_AudList.GetCurSel());
m_AudList.GetText(m_AudList.GetCurSel(),str);
m_NewFileList.AddString(str);
m_AudList.DeleteString(m_AudList.GetCurSel());
}
}
void CAudioFileDlg::OnCancel()
{
// TODO: Add extra cleanup here
CDialog::OnCancel();
}
void CAudioFileDlg::OnOK()
{
UpdateData(TRUE);
CString aud_path;
aud_path.Format("Content\\Missions\\%s\\%s.audio",MisName,MisName);
NotationFile aud_file(aud_path);
MakeFileWriteable(aud_path);
aud_file.DeleteAllPages();
CString table_path;
table_path.Format("Content\\Missions\\%s\\%s.table",MisName,MisName);
NotationFile table_file(table_path);
MakeFileWriteable(table_path);
Page *tablepage=table_file.SetPage("4");
tablepage->DeleteAllNotes();
int i;
CString str,numstr;
Page *page;
for(i=0;i<m_AudList.GetCount();i++)
{
m_AudList.GetText(i,str);
str="Content\\Audio\\"+str+".wav";
numstr.Format("%i",i);
page=aud_file.SetPage(numstr);
page->SetEntry("Type","VoiceOverComponent");
page->SetEntry("Sample",str);
page->SetEntry("RendererShouldExecute",1);
CString *strptr;
strptr=(CString *)m_AudList.GetItemDataPtr(i);
tablepage->SetEntry(*strptr,69);
delete strptr;
}
for(i=0;i<m_AudList.GetCount();i++)
{
m_AudList.GetText(i,str);
str="Content\\Audio\\"+str+".wav";
numstr.Format("%i",i);
page=aud_file.SetPage(numstr);
page->SetEntry("Type","VoiceOverComponent");
page->SetEntry("Sample",str);
page->SetEntry("RendererShouldExecute",1);
}
aud_file.Save();
table_file.Save();
CDialog::OnOK();
}
BOOL CAudioFileDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CString aud_path;
aud_path.Format("Content\\Missions\\%s\\%s.audio",MisName,MisName);
NotationFile aud_file(aud_path);
Page *page;
CString table_path;
table_path.Format("Content\\Missions\\%s\\%s.table",MisName,MisName);
NotationFile table_file(table_path);
Page *sndpage=table_file.SetPage("4");
Check_Object(sndpage);
CString str;
NotationFile ::PageIterator *page_list=aud_file.MakePageIterator();
Check_Object(page_list);
Page::NoteIterator *snd_notes=sndpage->MakeNoteIterator();
Check_Object(snd_notes);
Note *note;
while((page=page_list->ReadAndNext())!=NULL)
{
note=snd_notes->ReadAndNext();
Check_Object(note);
Check_Object(page);
const char *sname;
page->GetEntry("Sample",&sname);
str=sname;
str=str.Left(str.ReverseFind('.'));
str=str.Mid(str.ReverseFind('\\')+1);
int itm;
itm=m_AudList.AddString(str);
m_AudList.SetItemDataPtr(itm,new CString(note->GetName()));
}
FillNewList();
m_NewFileList.SetCurSel(0);
m_AudList.SetCurSel(0);
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CAudioFileDlg::PruneNewList()
{
int i,idx;
CString str;
for(i=0;i<m_AudList.GetCount();i++)
{
m_AudList.GetText(i,str);
idx=m_NewFileList.FindString(-1,str);
if(idx>=0)
m_NewFileList.DeleteString(idx);
}
}
void CAudioFileDlg::FillNewList()
{
m_NewFileList.ResetContent();
WIN32_FIND_DATA file_data;
HANDLE file_find;
file_find=FindFirstFile("Content\\Audio\\*.wav",&file_data);
if(file_find != INVALID_HANDLE_VALUE)
{
CString afile_name;
do
{
afile_name=file_data.cFileName;
afile_name=afile_name.Left(afile_name.ReverseFind('.'));
m_NewFileList.AddString(afile_name);
}
while (FindNextFile(file_find,&file_data));
}
PruneNewList();
}
void CAudioFileDlg::OnSelchangeAudiolist()
{
UpdateData(TRUE);
int sel=m_AudList.GetCurSel();
if(sel>=0)
{
CurStr=(CString *)m_AudList.GetItemDataPtr(sel);
m_AudName=*CurStr;
}
else
{
CurStr=NULL;
}
UpdateData(FALSE);
}
void CAudioFileDlg::OnChangeAudname()
{
UpdateData(TRUE);
if(CurStr)
*CurStr=m_AudName;
}