mirror of
https://github.com/electronicarts/CnC_Renegade.git
synced 2025-12-16 15:41:39 -05:00
Initial commit of Command & Conquer Renegade source code.
This commit is contained in:
216
Code/Tools/LevelEdit/WelcomeDialog.cpp
Normal file
216
Code/Tools/LevelEdit/WelcomeDialog.cpp
Normal file
@@ -0,0 +1,216 @@
|
||||
/*
|
||||
** 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/>.
|
||||
*/
|
||||
|
||||
// WelcomeDialog.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "StdAfx.H"
|
||||
#include "LevelEdit.H"
|
||||
#include "WelcomeDialog.H"
|
||||
#include "Utils.H"
|
||||
#include "FileMgr.H"
|
||||
#include "RegKeys.H"
|
||||
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// WelcomeDialogClass dialog
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// WelcomeDialogClass
|
||||
//
|
||||
WelcomeDialogClass::WelcomeDialogClass (CWnd* pParent /*=NULL*/)
|
||||
: m_bChangesTemp (false),
|
||||
m_hBMP (NULL),
|
||||
CDialog(WelcomeDialogClass::IDD, pParent)
|
||||
{
|
||||
//{{AFX_DATA_INIT(WelcomeDialogClass)
|
||||
// NOTE: the ClassWizard will add member initialization here
|
||||
//}}AFX_DATA_INIT
|
||||
return ;
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DoDataExchange
|
||||
//
|
||||
void
|
||||
WelcomeDialogClass::DoDataExchange (CDataExchange* pDX)
|
||||
{
|
||||
// Allow the base class to process this message
|
||||
CDialog::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(WelcomeDialogClass)
|
||||
// NOTE: the ClassWizard will add DDX and DDV calls here
|
||||
//}}AFX_DATA_MAP
|
||||
return ;
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(WelcomeDialogClass, CDialog)
|
||||
//{{AFX_MSG_MAP(WelcomeDialogClass)
|
||||
ON_WM_PAINT()
|
||||
ON_WM_DESTROY()
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DoModal
|
||||
//
|
||||
int
|
||||
WelcomeDialogClass::DoModal (void)
|
||||
{
|
||||
int iret = IDOK;
|
||||
|
||||
// Should this dialog be displayed?
|
||||
if (theApp.GetProfileInt (CONFIG_KEY, SHOW_WELCOME_VALUE, 1)) {
|
||||
iret = CDialog::DoModal ();
|
||||
}
|
||||
|
||||
// Return the dialog exit code
|
||||
return iret;
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// OnInitDialog
|
||||
//
|
||||
BOOL
|
||||
WelcomeDialogClass::OnInitDialog (void)
|
||||
{
|
||||
// Allow the base class to process this message
|
||||
CDialog::OnInitDialog ();
|
||||
|
||||
// Check the 'yes' button by default
|
||||
SendDlgItemMessage (IDC_YES_RADIO, BM_SETCHECK, (WPARAM)TRUE);
|
||||
|
||||
// Put the base path in its dialog control
|
||||
SetDlgItemText (IDC_ASSET_TREE_LOCATION, ::Get_File_Mgr()->Get_Base_Path ());
|
||||
|
||||
m_hBMP = ::LoadBitmap (::AfxGetResourceHandle (), MAKEINTRESOURCE (IDB_WELCOME_BMP));
|
||||
if (m_hBMP != NULL) {
|
||||
|
||||
// Determine the BMPs dimensions
|
||||
BITMAP bitmap = { 0 };
|
||||
::GetObject (m_hBMP, sizeof (BITMAP), &bitmap);
|
||||
m_iWidth = bitmap.bmWidth;
|
||||
m_iHeight = bitmap.bmHeight;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// OnOK
|
||||
//
|
||||
void
|
||||
WelcomeDialogClass::OnOK (void)
|
||||
{
|
||||
// Determine what option the user checked
|
||||
m_bChangesTemp = (bool)(SendDlgItemMessage (IDC_NO_RADIO, BM_GETCHECK) == 1);
|
||||
|
||||
// Write an integer to the registry so we'll know whether to show this again or not.
|
||||
int ishow_again = (SendDlgItemMessage (IDC_DONT_ASK_AGAIN, BM_GETCHECK) == 0);
|
||||
theApp.WriteProfileInt (CONFIG_KEY, SHOW_WELCOME_VALUE, ishow_again);
|
||||
|
||||
// Allow the base class to process this message
|
||||
CDialog::OnOK ();
|
||||
return ;
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// OnOK
|
||||
//
|
||||
void
|
||||
WelcomeDialogClass::OnPaint (void)
|
||||
{
|
||||
CPaintDC dc (this);
|
||||
|
||||
if (m_hBMP != NULL) {
|
||||
|
||||
// Paint into the BMP window's contents
|
||||
HWND hwnd = ::GetDlgItem (m_hWnd, IDC_BMP);
|
||||
|
||||
// Get the bounding rectangle so we know how much to paint
|
||||
RECT rect;
|
||||
::GetClientRect (hwnd, &rect);
|
||||
|
||||
// Determine the width, height, and width per each shade
|
||||
int width = rect.right-rect.left;
|
||||
int height = rect.bottom-rect.top;
|
||||
|
||||
// Get the DCs we need to do the blitting
|
||||
HDC hdc = ::GetDC (hwnd);
|
||||
HDC hmem_dc = ::CreateCompatibleDC (NULL);
|
||||
HBITMAP hold_BMP = (HBITMAP)::SelectObject (hmem_dc, m_hBMP);
|
||||
|
||||
// Paint the BMP, centered, onto screen
|
||||
::BitBlt (hdc,
|
||||
(width >> 1) - (m_iWidth >> 1),
|
||||
(height >> 1) - (m_iHeight >> 1),
|
||||
m_iWidth,
|
||||
m_iHeight,
|
||||
hmem_dc,
|
||||
0,
|
||||
0,
|
||||
SRCCOPY);
|
||||
|
||||
// Release the DCs
|
||||
::SelectObject (hmem_dc, hold_BMP);
|
||||
::ReleaseDC (hwnd, hdc);
|
||||
::DeleteDC (hmem_dc);
|
||||
|
||||
// Validate the contents of the window so the control won't paint itself
|
||||
::ValidateRect (hwnd, NULL);
|
||||
}
|
||||
|
||||
return ;
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// OnDestroy
|
||||
//
|
||||
void
|
||||
WelcomeDialogClass::OnDestroy (void)
|
||||
{
|
||||
// Free the BMP if we need to
|
||||
if (m_hBMP != NULL) {
|
||||
::DeleteObject (m_hBMP);
|
||||
m_hBMP = NULL;
|
||||
}
|
||||
|
||||
// Allow the base class to process this message
|
||||
CDialog::OnDestroy ();
|
||||
return ;
|
||||
}
|
||||
Reference in New Issue
Block a user