Complete disaster-recovery snapshot: engine/game source, game data assets, VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive. Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false, no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
457 lines
12 KiB
C++
457 lines
12 KiB
C++
// FogDlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "mw4gameed.h"
|
|
#include "FogDlg.h"
|
|
|
|
#include <Adept\Mission.hpp>
|
|
#include <ElementRenderer\StateChange.hpp>
|
|
#include <MLR\MLRPrimitiveBase.hpp>
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// FogDlg dialog
|
|
|
|
|
|
FogDlg::FogDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(FogDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(FogDlg)
|
|
m_CustomDensity = 0.0f;
|
|
m_Blue = 0.0f;
|
|
m_CustomEnd = 0.0f;
|
|
m_CustomStart = 0.0f;
|
|
m_GeneralDensity = 0.0f;
|
|
m_GeneralEnd = 0.0f;
|
|
m_GeneralStart = 0.0f;
|
|
m_Green = 0.0f;
|
|
m_LightDensity = 0.0f;
|
|
m_LightEnd = 0.0f;
|
|
m_LightStart = 0.0f;
|
|
m_Red = 0.0f;
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
|
|
void FogDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(FogDlg)
|
|
DDX_Text(pDX, IDC_EDITCUSTOMDENSITY, m_CustomDensity);
|
|
DDX_Text(pDX, IDC_EDITBLUE, m_Blue);
|
|
DDX_Text(pDX, IDC_EDITCUSTOMEND, m_CustomEnd);
|
|
DDX_Text(pDX, IDC_EDITCUSTOMSTART, m_CustomStart);
|
|
DDX_Text(pDX, IDC_EDITGENERALDENSITY, m_GeneralDensity);
|
|
DDX_Text(pDX, IDC_EDITGENERALEND, m_GeneralEnd);
|
|
DDX_Text(pDX, IDC_EDITGENERALSTART, m_GeneralStart);
|
|
DDX_Text(pDX, IDC_EDITGREEN, m_Green);
|
|
DDX_Text(pDX, IDC_EDITLIGHTDENSITY, m_LightDensity);
|
|
DDX_Text(pDX, IDC_EDITLIGHTEND, m_LightEnd);
|
|
DDX_Text(pDX, IDC_EDITLIGHTSTART, m_LightStart);
|
|
DDX_Text(pDX, IDC_EDITRED, m_Red);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(FogDlg, CDialog)
|
|
//{{AFX_MSG_MAP(FogDlg)
|
|
ON_EN_KILLFOCUS(IDC_EDITBLUE, OnKillfocusEditblue)
|
|
ON_EN_KILLFOCUS(IDC_EDITCUSTOMDENSITY, OnKillfocusEditcustomdensity)
|
|
ON_EN_KILLFOCUS(IDC_EDITCUSTOMEND, OnKillfocusEditcustomend)
|
|
ON_EN_KILLFOCUS(IDC_EDITCUSTOMSTART, OnKillfocusEditcustomstart)
|
|
ON_EN_KILLFOCUS(IDC_EDITGENERALDENSITY, OnKillfocusEditgeneraldensity)
|
|
ON_EN_KILLFOCUS(IDC_EDITGENERALEND, OnKillfocusEditgeneralend)
|
|
ON_EN_KILLFOCUS(IDC_EDITGENERALSTART, OnKillfocusEditgeneralstart)
|
|
ON_EN_KILLFOCUS(IDC_EDITGREEN, OnKillfocusEditgreen)
|
|
ON_EN_KILLFOCUS(IDC_EDITLIGHTDENSITY, OnKillfocusEditlightdensity)
|
|
ON_EN_KILLFOCUS(IDC_EDITLIGHTEND, OnKillfocusEditlightend)
|
|
ON_EN_KILLFOCUS(IDC_EDITLIGHTSTART, OnKillfocusEditlightstart)
|
|
ON_EN_KILLFOCUS(IDC_EDITRED, OnKillfocusEditred)
|
|
ON_NOTIFY(UDN_DELTAPOS, IDC_SPINBLUE, OnDeltaposSpinblue)
|
|
ON_NOTIFY(UDN_DELTAPOS, IDC_SPINCUSTOMDENSITY, OnDeltaposSpincustomdensity)
|
|
ON_NOTIFY(UDN_DELTAPOS, IDC_SPINCUSTOMEND, OnDeltaposSpincustomend)
|
|
ON_NOTIFY(UDN_DELTAPOS, IDC_SPINCUSTOMSTART, OnDeltaposSpincustomstart)
|
|
ON_NOTIFY(UDN_DELTAPOS, IDC_SPINGENERALDENSITY, OnDeltaposSpingeneraldensity)
|
|
ON_NOTIFY(UDN_DELTAPOS, IDC_SPINGENERALEND, OnDeltaposSpingeneralend)
|
|
ON_NOTIFY(UDN_DELTAPOS, IDC_SPINGENERALSTART, OnDeltaposSpingeneralstart)
|
|
ON_NOTIFY(UDN_DELTAPOS, IDC_SPINGREEN, OnDeltaposSpingreen)
|
|
ON_NOTIFY(UDN_DELTAPOS, IDC_SPINLIGHTDENSITY, OnDeltaposSpinlightdensity)
|
|
ON_NOTIFY(UDN_DELTAPOS, IDC_SPINLIGHTEND, OnDeltaposSpinlightend)
|
|
ON_NOTIFY(UDN_DELTAPOS, IDC_SPINLIGHTSTART, OnDeltaposSpinlightstart)
|
|
ON_NOTIFY(UDN_DELTAPOS, IDC_SPINRED, OnDeltaposSpinred)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// FogDlg message handlers
|
|
|
|
BOOL FogDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
const Mission__GameModel *model = Mission::Instance->GetGameModel();
|
|
|
|
m_CustomDensity = model->m_customFogDensity;
|
|
m_CustomStart = model->m_customFogStart;
|
|
m_CustomEnd = model->m_customFogEnd;
|
|
m_GeneralDensity = model->m_generalFogDensity;
|
|
m_GeneralStart = model->m_generalFogStart;
|
|
m_GeneralEnd = model->m_generalFogEnd;
|
|
m_LightDensity = model->m_lightFogDensity;
|
|
m_LightStart = model->m_lightFogStart;
|
|
m_LightEnd = model->m_lightFogEnd;
|
|
|
|
Stuff::RGBAColor color = model->m_fogColor;
|
|
|
|
m_Red = color.red;
|
|
m_Green = color.green;
|
|
m_Blue = color.blue;
|
|
|
|
|
|
m_OldCustomDensity = m_CustomDensity;
|
|
m_OldBlue = m_Blue;
|
|
m_OldCustomEnd = m_CustomEnd;
|
|
m_OldCustomStart = m_CustomStart;
|
|
m_OldGeneralDensity = m_GeneralDensity;
|
|
m_OldGeneralEnd = m_GeneralEnd;
|
|
m_OldGeneralStart = m_GeneralStart;
|
|
m_OldGreen = m_Green;
|
|
m_OldLightDensity = m_LightDensity;
|
|
m_OldLightEnd = m_LightEnd;
|
|
m_OldLightStart = m_LightStart;
|
|
m_OldRed = m_Red;
|
|
|
|
UpdateData(FALSE);
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void FogDlg::OnOK()
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
if (!SetFogValue("CustomFogDensity",m_CustomDensity))
|
|
return;
|
|
if (!SetFogValue("CustomFogStart",m_CustomStart))
|
|
return;
|
|
if (!SetFogValue("CustomFogEnd",m_CustomEnd))
|
|
return;
|
|
if (!SetFogValue("GeneralFogDensity",m_GeneralDensity))
|
|
return;
|
|
if (!SetFogValue("GeneralFogStart",m_GeneralStart))
|
|
return;
|
|
if (!SetFogValue("GeneralFogEnd",m_GeneralEnd))
|
|
return;
|
|
if (!SetFogValue("LightFogDensity",m_LightDensity))
|
|
return;
|
|
if (!SetFogValue("LightFogStart",m_LightStart))
|
|
return;
|
|
if (!SetFogValue("LightFogEnd",m_LightEnd))
|
|
return;
|
|
|
|
RGBAColor color(m_Red,m_Green,m_Blue,1.0f);
|
|
if (!SetFogValue("FogColor",color))
|
|
return;
|
|
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
void FogDlg::OnCancel()
|
|
{
|
|
SetFogValue("CustomFogDensity",m_OldCustomDensity);
|
|
SetFogValue("CustomFogStart",m_OldCustomStart);
|
|
SetFogValue("CustomFogEnd",m_OldCustomEnd);
|
|
SetFogValue("GeneralFogDensity",m_OldGeneralDensity);
|
|
SetFogValue("GeneralFogStart",m_OldGeneralStart);
|
|
SetFogValue("GeneralFogEnd",m_OldGeneralEnd);
|
|
SetFogValue("LightFogDensity",m_OldLightDensity);
|
|
SetFogValue("LightFogStart",m_OldLightStart);
|
|
SetFogValue("LightFogEnd",m_OldLightEnd);
|
|
|
|
RGBAColor color(m_Red,m_Green,m_Blue,1.0f);
|
|
SetFogValue("FogColor",color);
|
|
|
|
CDialog::OnCancel();
|
|
}
|
|
|
|
bool FogDlg::SetFogValue(char* attributeName, Scalar value)
|
|
{
|
|
char string[16];
|
|
|
|
return SetFogValue(attributeName,gcvt(value,3,string));
|
|
}
|
|
|
|
bool FogDlg::SetFogValue(char* attributeName, RGBAColor value)
|
|
{
|
|
char color[32];
|
|
sprintf(color,"%4.2f %4.2f %4.2f 1.0",m_Red,m_Green,m_Blue);
|
|
|
|
return SetFogValue("FogColor",color);
|
|
}
|
|
|
|
bool FogDlg::SetFogValue(char* attributeName, char* value)
|
|
{
|
|
bool result = true;
|
|
char *error_message;
|
|
error_message = new char[256];
|
|
Register_Pointer(error_message);
|
|
|
|
const Mission__GameModel *model = Mission::Instance->GetGameModel();
|
|
Check_Object(model);
|
|
Mission::ClassData *class_data;
|
|
class_data = Mission::Instance->GetClassData();
|
|
Check_Object(class_data);
|
|
|
|
ModelAttributeEntry *attrib_entry;
|
|
|
|
attrib_entry =
|
|
class_data->gameModelAttributeTable.GetAttributeEntry(attributeName);
|
|
Check_Object(attrib_entry);
|
|
|
|
if(!(*class_data->modelVerifier)((Entity__GameModel *)model, attrib_entry, value, &error_message,255))
|
|
{
|
|
char error[256];
|
|
sprintf(error,"Error with %s: %s",attributeName,error_message);
|
|
AfxMessageBox(error, MB_OK);
|
|
result = false;
|
|
}
|
|
|
|
Unregister_Pointer(error_message);
|
|
delete [] error_message;
|
|
|
|
// const GameModel *model = GetGameModel();
|
|
// Check_Object(model);
|
|
ElementRenderer::StateChange::SetFogColor(model->m_fogColor);
|
|
MidLevelRenderer::MLRPrimitiveBase::SetFogTableEntry(
|
|
1,
|
|
model->m_generalFogStart,
|
|
model->m_generalFogEnd,
|
|
model->m_generalFogDensity
|
|
);
|
|
MidLevelRenderer::MLRPrimitiveBase::SetFogTableEntry(
|
|
2,
|
|
model->m_lightFogStart,
|
|
model->m_lightFogEnd,
|
|
model->m_lightFogDensity
|
|
);
|
|
MidLevelRenderer::MLRPrimitiveBase::SetFogTableEntry(
|
|
3,
|
|
model->m_customFogStart,
|
|
model->m_customFogEnd,
|
|
model->m_customFogDensity
|
|
);
|
|
|
|
return result;
|
|
}
|
|
|
|
void FogDlg::OnKillfocusEditcustomdensity()
|
|
{
|
|
UpdateData(TRUE);
|
|
SetFogValue("CustomFogDensity",m_CustomDensity);
|
|
}
|
|
|
|
void FogDlg::OnKillfocusEditcustomend()
|
|
{
|
|
UpdateData(TRUE);
|
|
SetFogValue("CustomFogEnd",m_CustomEnd);
|
|
}
|
|
|
|
void FogDlg::OnKillfocusEditcustomstart()
|
|
{
|
|
UpdateData(TRUE);
|
|
SetFogValue("CustomFogStart",m_CustomStart);
|
|
}
|
|
|
|
void FogDlg::OnKillfocusEditgeneraldensity()
|
|
{
|
|
UpdateData(TRUE);
|
|
SetFogValue("GeneralFogDensity",m_GeneralDensity);
|
|
}
|
|
|
|
void FogDlg::OnKillfocusEditgeneralend()
|
|
{
|
|
UpdateData(TRUE);
|
|
SetFogValue("GeneralFogEnd",m_GeneralEnd);
|
|
}
|
|
|
|
void FogDlg::OnKillfocusEditgeneralstart()
|
|
{
|
|
UpdateData(TRUE);
|
|
SetFogValue("GeneralFogStart",m_GeneralStart);
|
|
}
|
|
|
|
void FogDlg::OnKillfocusEditlightdensity()
|
|
{
|
|
UpdateData(TRUE);
|
|
SetFogValue("LightFogDensity",m_LightDensity);
|
|
}
|
|
|
|
void FogDlg::OnKillfocusEditlightend()
|
|
{
|
|
UpdateData(TRUE);
|
|
SetFogValue("LightFogEnd",m_LightEnd);
|
|
}
|
|
|
|
void FogDlg::OnKillfocusEditlightstart()
|
|
{
|
|
UpdateData(TRUE);
|
|
SetFogValue("LightFogStart",m_LightStart);
|
|
}
|
|
|
|
void FogDlg::OnKillfocusEditred()
|
|
{
|
|
UpdateData(TRUE);
|
|
Stuff::RGBAColor color(m_Red,m_Green,m_Blue,1.0f);
|
|
SetFogValue("FogColor",color);
|
|
}
|
|
|
|
void FogDlg::OnKillfocusEditgreen()
|
|
{
|
|
UpdateData(TRUE);
|
|
Stuff::RGBAColor color(m_Red,m_Green,m_Blue,1.0f);
|
|
SetFogValue("FogColor",color);
|
|
}
|
|
|
|
void FogDlg::OnKillfocusEditblue()
|
|
{
|
|
UpdateData(TRUE);
|
|
Stuff::RGBAColor color(m_Red,m_Green,m_Blue,1.0f);
|
|
SetFogValue("FogColor",color);
|
|
}
|
|
|
|
void FogDlg::OnDeltaposSpincustomdensity(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
|
|
|
|
m_CustomDensity -= (pNMUpDown->iDelta > 0) ? 0.01f : -0.01f;
|
|
SetFogValue("CustomFogDensity",m_CustomDensity);
|
|
UpdateData(FALSE);
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
void FogDlg::OnDeltaposSpincustomend(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
|
|
|
|
m_CustomEnd -= pNMUpDown->iDelta;
|
|
SetFogValue("CustomFogEnd",m_CustomEnd);
|
|
UpdateData(FALSE);
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
void FogDlg::OnDeltaposSpincustomstart(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
|
|
|
|
m_CustomStart -= pNMUpDown->iDelta;
|
|
SetFogValue("CustomFogStart",m_CustomStart);
|
|
UpdateData(FALSE);
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
void FogDlg::OnDeltaposSpingeneraldensity(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
|
|
|
|
m_GeneralDensity -= (pNMUpDown->iDelta > 0) ? 0.01f : -0.01f;
|
|
SetFogValue("GeneralFogDensity",m_GeneralDensity);
|
|
UpdateData(FALSE);
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
void FogDlg::OnDeltaposSpingeneralend(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
|
|
|
|
m_GeneralEnd -= pNMUpDown->iDelta;
|
|
SetFogValue("GeneralFogEnd",m_GeneralEnd);
|
|
UpdateData(FALSE);
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
void FogDlg::OnDeltaposSpingeneralstart(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
|
|
|
|
m_GeneralStart -= pNMUpDown->iDelta;
|
|
SetFogValue("GeneralFogStart",m_GeneralStart);
|
|
UpdateData(FALSE);
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
void FogDlg::OnDeltaposSpinlightdensity(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
|
|
|
|
m_LightDensity -= (pNMUpDown->iDelta > 0) ? 0.01f : -0.01f;
|
|
SetFogValue("LightFogDensity",m_LightDensity);
|
|
UpdateData(FALSE);
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
void FogDlg::OnDeltaposSpinlightend(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
|
|
|
|
m_LightEnd -= pNMUpDown->iDelta;
|
|
SetFogValue("LightFogEnd",m_LightEnd);
|
|
UpdateData(FALSE);
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
void FogDlg::OnDeltaposSpinlightstart(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
|
|
|
|
m_LightStart -= pNMUpDown->iDelta;
|
|
SetFogValue("LightFogStart",m_LightStart);
|
|
UpdateData(FALSE);
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
void FogDlg::OnDeltaposSpinred(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
|
|
|
|
m_Red -= (pNMUpDown->iDelta > 0) ? 0.01f : -0.01f;
|
|
Stuff::RGBAColor color(m_Red,m_Green,m_Blue,1.0f);
|
|
SetFogValue("FogColor",color);
|
|
UpdateData(FALSE);
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
void FogDlg::OnDeltaposSpinblue(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
|
|
|
|
m_Blue -= (pNMUpDown->iDelta > 0) ? 0.01f : -0.01f;
|
|
Stuff::RGBAColor color(m_Red,m_Green,m_Blue,1.0f);
|
|
SetFogValue("FogColor",color);
|
|
UpdateData(FALSE);
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
void FogDlg::OnDeltaposSpingreen(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
|
|
|
|
m_Green -= (pNMUpDown->iDelta > 0) ? 0.01f : -0.01f;
|
|
Stuff::RGBAColor color(m_Red,m_Green,m_Blue,1.0f);
|
|
SetFogValue("FogColor",color);
|
|
UpdateData(FALSE);
|
|
|
|
*pResult = 0;
|
|
}
|
|
|