/*
**	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/>.
*/

// AddToLineupDialog.cpp : implementation file
//

#include "stdafx.h"
#include "w3dview.h"
#include "AddToLineupDialog.h"

#include "ViewerScene.h"
#include <rendobj.h>
#include <assetmgr.h>


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAddToLineupDialog dialog


CAddToLineupDialog::CAddToLineupDialog(ViewerSceneClass *scene, CWnd* pParent /*=NULL*/)
:	CDialog(CAddToLineupDialog::IDD, pParent),
	m_pCScene(scene)
{
	//{{AFX_DATA_INIT(CAddToLineupDialog)
	m_Object = _T("");
	//}}AFX_DATA_INIT
}


void CAddToLineupDialog::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAddToLineupDialog)
	DDX_CBString(pDX, IDC_OBJECT, m_Object);
	DDV_MaxChars(pDX, m_Object, 64);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CAddToLineupDialog, CDialog)
	//{{AFX_MSG_MAP(CAddToLineupDialog)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAddToLineupDialog message handlers

BOOL CAddToLineupDialog::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	if (m_pCScene)
	{
		// Get a pointer to the combo box control.
		CComboBox *pCombo = (CComboBox*)GetDlgItem(IDC_OBJECT);
		ASSERT_VALID(pCombo);

		// Populate the combo box with the names of the objects that
		// can be added to the lineup.
		WW3DAssetManager *assets = WW3DAssetManager::Get_Instance();
		ASSERT(assets != NULL);
		RenderObjIterator *it = assets->Create_Render_Obj_Iterator();
		ASSERT(it != NULL);
		for (; !it->Is_Done(); it->Next())
		{
			if (m_pCScene->Can_Line_Up(it->Current_Item_Class_ID()))
				pCombo->AddString(it->Current_Item_Name());
		}
		assets->Release_Render_Obj_Iterator(it);
	}
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CAddToLineupDialog::OnOK() 
{
	// Make sure the user actually chose a name.
	CComboBox *pCombo = (CComboBox*)GetDlgItem(IDC_OBJECT);
	ASSERT_VALID(pCombo);
	CString text;
	pCombo->GetWindowText(text);
	if (text.IsEmpty())
	{
		::AfxMessageBox("Please select an object, or type in an object name.");
		return;
	}
	
	CDialog::OnOK();
}
