mirror of
https://github.com/kevinbentley/Descent3.git
synced 2025-01-22 19:55:23 +00:00
31b63bb79f
Generated using script: for file in \$(find ./legacy -type f | \grep -E "\.cpp|\.h") do mv $file temp.xxx cp gplheader $file cat temp.xxx >> $file done
174 lines
4.1 KiB
C++
174 lines
4.1 KiB
C++
/*
|
|
* Descent 3
|
|
* Copyright (C) 2024 Parallax Software
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
// DallasImportDlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "editor.h"
|
|
#include "cfile.h"
|
|
#include "DallasMainDlg.h"
|
|
#include "DallasUtilities.h"
|
|
#include "DallasImportDlg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDallasImportDlg dialog
|
|
|
|
|
|
CDallasImportDlg::CDallasImportDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CDallasImportDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CDallasImportDlg)
|
|
// NOTE: the ClassWizard will add member initialization here
|
|
//}}AFX_DATA_INIT
|
|
m_ScriptName="";
|
|
m_Filename="";
|
|
}
|
|
|
|
|
|
void CDallasImportDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CDallasImportDlg)
|
|
DDX_Control(pDX, IDC_SCRIPT_LIST, m_ScriptListBox);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CDallasImportDlg, CDialog)
|
|
//{{AFX_MSG_MAP(CDallasImportDlg)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDallasImportDlg message handlers
|
|
|
|
void CDallasImportDlg::OnOK()
|
|
{
|
|
// TODO: Add extra validation here
|
|
int index=m_ScriptListBox.GetCurSel();
|
|
if(index==LB_ERR) return;
|
|
|
|
m_ScriptListBox.GetText(index,m_ScriptName);
|
|
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
void CDallasImportDlg::OnCancel()
|
|
{
|
|
// TODO: Add extra cleanup here
|
|
|
|
CDialog::OnCancel();
|
|
}
|
|
|
|
BOOL CDallasImportDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
// TODO: Add extra initialization here
|
|
FillScriptListBox(m_Filename.GetBuffer(0));
|
|
m_ScriptListBox.SetCurSel(0);
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
|
|
BOOL CDallasImportDlg::FillScriptListBox(char *filename)
|
|
{
|
|
CFILE *infile;
|
|
char linebuf[2048];
|
|
char *line;
|
|
int linenum;
|
|
int valid_lines_read;
|
|
|
|
// Try to open the file for loading
|
|
infile=cfopen (filename,"rt");
|
|
if (!infile)
|
|
{
|
|
CString msg;
|
|
msg.Format("Unable to open \"%s\"!",filename);
|
|
MessageBox(msg,"Script Library File Not Found!",MB_OK|MB_ICONEXCLAMATION);
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
linenum=0;
|
|
|
|
// Read in and parse each line of the file
|
|
while (!cfeof(infile)) {
|
|
|
|
// Clear the buffer
|
|
strcpy(linebuf,"");
|
|
|
|
// Read in a line from the file
|
|
cf_ReadString(linebuf, sizeof(linebuf), infile);
|
|
linenum++;
|
|
|
|
// Remove whitespace padding at start and end of line
|
|
RemoveTrailingWhitespace(linebuf);
|
|
line=SkipInitialWhitespace(linebuf);
|
|
|
|
// Check for Start of Script Block Section
|
|
if (strncmp(line,SCRIPT_START_TAG,strlen(SCRIPT_START_TAG)) == 0) {
|
|
bool done = false;
|
|
|
|
// Set valid line counter to track whether we're reading header info or tree nodes
|
|
valid_lines_read=0;
|
|
|
|
// Read all the lines in the block
|
|
while (!done && !cfeof(infile)) {
|
|
|
|
strcpy(linebuf,"");
|
|
cf_ReadString(linebuf,sizeof(linebuf),infile);
|
|
linenum++;
|
|
|
|
// Remove whitespace padding at start and end of line
|
|
RemoveTrailingWhitespace(linebuf);
|
|
line=SkipInitialWhitespace(linebuf);
|
|
|
|
// If it's an empty line or a comment, skip it
|
|
if(strlen(line)==0 || strncmp(line,"//",2)==0)
|
|
continue;
|
|
|
|
// Check for End of Script Block Section
|
|
if (strncmp(line,SCRIPT_END_TAG,strlen(SCRIPT_END_TAG)) == 0) {
|
|
done=true;
|
|
continue;
|
|
}
|
|
|
|
// See if it should be the script name line
|
|
if(valid_lines_read==0) {
|
|
m_ScriptListBox.AddString(line);
|
|
valid_lines_read++;
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
cfclose(infile);
|
|
|
|
return TRUE;
|
|
} |