// SimulationParamsDlg.cpp : implementation file
//

#include "stdafx.h"
#include "ramzor3.h"

#include "general.h"
#include "SimulationParams.h"
#include "policy.h"

#include "Simulation.h"
#include "ramzor3Doc.h"
#include "ramzor3View.h"
#include "SimulationParamsDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CRamzor3App theApp;
/////////////////////////////////////////////////////////////////////////////
// CSimulationParamsDlg dialog


CSimulationParamsDlg::CSimulationParamsDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CSimulationParamsDlg::IDD, pParent),
	m_SimParams(((dynamic_cast<CRamzor3View*>(pParent))->GetDocument())->GetSimulationParams())
{
	//{{AFX_DATA_INIT(CSimulationParamsDlg)
	m_dHighArrival = 0.0;
	m_dHighDeparture = 0.0;
	m_dLowArrival = 0.0;
	m_dLowDeparture = 0.0;
	m_dMediumArrival = 0.0;
	m_dMediumDeparture = 0.0;
	m_numOfCarsPow = 0.0;
	m_waitTimePow = 0.0;
	//}}AFX_DATA_INIT
}


void CSimulationParamsDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSimulationParamsDlg)
	DDX_Text(pDX, IDC_EDIT_HIGH_ARRIVAL, m_dHighArrival);
	DDV_MinMaxDouble(pDX, m_dHighArrival, 0., 1000.);
	DDX_Text(pDX, IDC_EDIT_HIGH_DEPARTURE, m_dHighDeparture);
	DDV_MinMaxDouble(pDX, m_dHighDeparture, 0., 1000.);
	DDX_Text(pDX, IDC_EDIT_LOW_ARRIVAL, m_dLowArrival);
	DDV_MinMaxDouble(pDX, m_dLowArrival, 0., 1000.);
	DDX_Text(pDX, IDC_EDIT_LOW_DEPARTURE, m_dLowDeparture);
	DDV_MinMaxDouble(pDX, m_dLowDeparture, 0., 1000.);
	DDX_Text(pDX, IDC_EDIT_MEDIUM_ARRIVAL, m_dMediumArrival);
	DDV_MinMaxDouble(pDX, m_dMediumArrival, 0., 1000.);
	DDX_Text(pDX, IDC_EDIT_MEDIUM_DEPARTURE, m_dMediumDeparture);
	DDV_MinMaxDouble(pDX, m_dMediumDeparture, 0., 1000.);
	DDX_Text(pDX, IDC_EDIT_CARS_POW, m_numOfCarsPow);
	DDV_MinMaxDouble(pDX, m_numOfCarsPow, 0., 3.);
	DDX_Text(pDX, IDC_EDIT_WAIT_POW, m_waitTimePow);
	DDV_MinMaxDouble(pDX, m_waitTimePow, 0., 3.);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSimulationParamsDlg, CDialog)
	//{{AFX_MSG_MAP(CSimulationParamsDlg)
	ON_BN_CLICKED(IDC_BTN_RESTORE, OnBtnRestore)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSimulationParamsDlg message handlers

BOOL CSimulationParamsDlg::OnInitDialog() 
{
	m_dHighArrival = m_SimParams.m_HighArrival;
	m_dHighDeparture = m_SimParams.m_HighDeparture;
	m_dMediumArrival = m_SimParams.m_MediumArrival;
	m_dMediumDeparture = m_SimParams.m_MediumDeparture;
	m_dLowArrival = m_SimParams.m_LowArrival;
	m_dLowDeparture = m_SimParams.m_LowDeparture;
	m_numOfCarsPow  = m_SimParams.m_NumOfCarsPow;
	m_waitTimePow   = m_SimParams.m_WaitTimePow;	
	
	CDialog::OnInitDialog();
	
	
		
	

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}


void CSimulationParamsDlg::OnOK() 
{
	
	CDialog::OnOK();

	m_SimParams.m_HighArrival = m_dHighArrival;
	m_SimParams.m_HighDeparture = m_dHighDeparture;
	m_SimParams.m_MediumArrival = m_dMediumArrival;
	m_SimParams.m_MediumDeparture= m_dMediumDeparture;
	m_SimParams.m_LowArrival = m_dLowArrival;
	m_SimParams.m_LowDeparture = m_dLowDeparture;
	m_SimParams.m_NumOfCarsPow = m_numOfCarsPow;
	m_SimParams.m_WaitTimePow  = m_waitTimePow;
	UpdateRegistry();
}

void CSimulationParamsDlg::UpdateRegistry()
{
	CString strSave1, strSave2, strSave3, strSave4, strSave5, strSave6, strSave7, strSave8;
	strSave1.Format("%f",m_SimParams.m_HighArrival);
	strSave2.Format("%f",m_SimParams.m_MediumArrival);
	strSave3.Format("%f",m_SimParams.m_LowArrival);
	strSave4.Format("%f",m_SimParams.m_HighDeparture);
	strSave5.Format("%f",m_SimParams.m_MediumDeparture);
	strSave6.Format("%f",m_SimParams.m_LowDeparture);
	strSave7.Format("%f",m_SimParams.m_NumOfCarsPow);
	strSave8.Format("%f",m_SimParams.m_WaitTimePow);

	theApp.WriteProfileString(strSettings,  strHighArr, strSave1);	
	theApp.WriteProfileString(strSettings,  strMedArr, strSave2);
	theApp.WriteProfileString(strSettings,  strLowArr, strSave3);
	theApp.WriteProfileString(strSettings,  strHighDep, strSave4);
	theApp.WriteProfileString(strSettings,  strMedDep, strSave5);
	theApp.WriteProfileString(strSettings,  strLowDep, strSave6);
	theApp.WriteProfileString(strSettings,  strNumOfCarsPow, strSave7);
	theApp.WriteProfileString(strSettings,  strWaitTimePow, strSave8);
}

void CSimulationParamsDlg::OnBtnRestore() 
{
	m_dHighArrival = HIGH_ARR;
	m_dHighDeparture = HIGH_DEP;
	m_dMediumArrival = MED_ARR;
	m_dMediumDeparture = MED_DEP;
	m_dLowArrival = LOW_ARR;
	m_dLowDeparture = LOW_DEP;

	UpdateData(FALSE);
}
