This repository has been archived on 2025-02-27. You can view files and clone it, but cannot push or open issues or pull requests.
CnC_Renegade/Code/Tools/LevelEdit/GeneratingPathfindDialog.cpp

163 lines
4.1 KiB
C++

/*
** Command & Conquer Renegade(tm)
** Copyright 2025 Electronic Arts Inc.
**
** 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/>.
*/
// GeneratingPathfindDialog.cpp : implementation file
//
#include "stdafx.h"
#include "leveledit.h"
#include "GeneratingPathfindDialog.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//
// GeneratingPathfindDialogClass
//
/////////////////////////////////////////////////////////////////////////////
GeneratingPathfindDialogClass::GeneratingPathfindDialogClass(CWnd *parent)
: m_Cancelled (false),
CDialog(GeneratingPathfindDialogClass::IDD, parent)
{
//{{AFX_DATA_INIT(GeneratingPathfindDialogClass)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
Create (GeneratingPathfindDialogClass::IDD, parent);
return ;
}
/////////////////////////////////////////////////////////////////////////////
//
// DoDataExchange
//
/////////////////////////////////////////////////////////////////////////////
void
GeneratingPathfindDialogClass::DoDataExchange (CDataExchange *pDX)
{
CDialog::DoDataExchange (pDX);
//{{AFX_DATA_MAP(GeneratingPathfindDialogClass)
DDX_Control(pDX, IDC_PROGRESS_BAR, m_ProgressBar);
//}}AFX_DATA_MAP
return ;
}
BEGIN_MESSAGE_MAP(GeneratingPathfindDialogClass, CDialog)
//{{AFX_MSG_MAP(GeneratingPathfindDialogClass)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//
// OnInitDialog
//
/////////////////////////////////////////////////////////////////////////////
BOOL
GeneratingPathfindDialogClass::OnInitDialog (void)
{
CDialog::OnInitDialog ();
Set_State (STATE_FLOODFILL);
m_ProgressBar.SetRange (0, 100);
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
//
// OnCancel
//
/////////////////////////////////////////////////////////////////////////////
void
GeneratingPathfindDialogClass::OnCancel (void)
{
m_Cancelled = true;
::EnableWindow (::GetDlgItem (m_hWnd, IDCANCEL), FALSE);
CWaitCursor wait_cursor;
Set_Status ("Operation Cancelled!", -1);
return ;
}
/////////////////////////////////////////////////////////////////////////////
//
// Set_State
//
/////////////////////////////////////////////////////////////////////////////
void
GeneratingPathfindDialogClass::Set_State (STATE state)
{
if (state == STATE_FLOODFILL) {
::ShowWindow (::GetDlgItem (m_hWnd, IDC_FLOODFILL_MARK), SW_SHOW);
::ShowWindow (::GetDlgItem (m_hWnd, IDC_COMPRESSING_MARK), SW_HIDE);
} else if (state == STATE_COMPRESS) {
::ShowWindow (::GetDlgItem (m_hWnd, IDC_FLOODFILL_MARK), SW_HIDE);
::ShowWindow (::GetDlgItem (m_hWnd, IDC_COMPRESSING_MARK), SW_SHOW);
}
return ;
}
/////////////////////////////////////////////////////////////////////////////
//
// Set_Status
//
/////////////////////////////////////////////////////////////////////////////
void
GeneratingPathfindDialogClass::Set_Status (LPCTSTR text, float percent)
{
if (percent > 0) {
m_ProgressBar.SetPos (percent * 100);
}
SetDlgItemText (IDC_STATUS_TEXT, text);
return ;
}
/////////////////////////////////////////////////////////////////////////////
//
// WindowProc
//
/////////////////////////////////////////////////////////////////////////////
LRESULT
GeneratingPathfindDialogClass::WindowProc
(
UINT message,
WPARAM wParam,
LPARAM lParam
)
{
if (message == WM_USER + 101) {
::DestroyWindow (m_hWnd);
::PostQuitMessage (0);
}
return CDialog::WindowProc (message, wParam, lParam);
}