///////////////////////////////////////////////////////////////////////////////
// ChooseGameType.cpp
///////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2008, Joe Riedel
// All rights reserved.
//
// Redistribution and use in source and binary forms, 
// with or without modification, are permitted provided 
// that the following conditions are met:
//
// Redistributions of source code must retain the above copyright notice, 
// this list of conditions and the following disclaimer. 
//
// Redistributions in binary form must reproduce the above copyright notice, 
// this list of conditions and the following disclaimer in the documentation and/or 
// other materials provided with the distribution. 
//
// Neither the name of the <ORGANIZATION> nor the names of its contributors may be 
// used to endorse or promote products derived from this software without specific 
// prior written permission. 
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
//
// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
// OF SUCH DAMAGE.
///////////////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Tread.h"
#include "ChooseGameType.h"
#include "ents.h"

// CChooseGameType dialog
int CChooseGameType::s_lastSel = 0;

IMPLEMENT_DYNAMIC(CChooseGameType, CDialog)

CChooseGameType::CChooseGameType(const char *restrict, CWnd* pParent /*=NULL*/)
	: m_restrict(restrict), CDialog(CChooseGameType::IDD, pParent)
{
}

BOOL CChooseGameType::OnInitDialog()
{
	CDialog::OnInitDialog();

	for (CGameDef *def = Sys_GameDefs()->ResetPos(); def; def = Sys_GameDefs()->GetNextItem())
	{
		if (m_restrict.GetLength() == 0 || m_restrict == def->PluginGame())
		{
			gameList.AddString(def->Name());
		}
	}

	if (gameList.GetCount() == 0)
	{
		GetDlgItem(IDOK)->EnableWindow(FALSE);
	}
	else
	{
		gameList.SetCurSel(s_lastSel);
		gameList.GetText(s_lastSel, m_gameType);
	}
	return TRUE;
}

CChooseGameType::~CChooseGameType()
{
}

void CChooseGameType::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_LIST2, gameList);
}


BEGIN_MESSAGE_MAP(CChooseGameType, CDialog)
	ON_LBN_DBLCLK(IDC_LIST2, &CChooseGameType::OnLbnDblclkList2)
	ON_LBN_SELCHANGE(IDC_LIST2, &CChooseGameType::OnLbnSelchangeList2)
	ON_BN_CLICKED(IDOK, &CChooseGameType::OnBnClickedOk)
END_MESSAGE_MAP()


// CChooseGameType message handlers

void CChooseGameType::OnLbnDblclkList2()
{
	// TODO: Add your control notification handler code here
	int idx = gameList.GetCurSel();
	gameList.GetText(idx, m_gameType);
	OnBnClickedOk();
}

void CChooseGameType::OnLbnSelchangeList2()
{
	// TODO: Add your control notification handler code here
	int idx = gameList.GetCurSel();
	gameList.GetText(idx, m_gameType);
}

void CChooseGameType::OnBnClickedOk()
{
	// TODO: Add your control notification handler code here
	s_lastSel = gameList.GetCurSel();
	OnOK();
}
