dlgtoolsparticles.cpp
来自「混乱竞技场的全套代码,客户端资源可以网上搜」· C++ 代码 · 共 933 行 · 第 1/2 页
CPP
933 行
// DlgToolsParticles.cpp : implementation file
//
#include "stdafx.h"
#include "gstools.h"
#include "DlgToolsParticles.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlgToolsParticles dialog
CDlgToolsParticles::CDlgToolsParticles(CWnd* pParent /*=NULL*/)
: CDialog(CDlgToolsParticles::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgToolsParticles)
m_isAttrative = FALSE;
m_isColliding = FALSE;
m_str_texture = _T("");
m_nTextureIndex = 0;
m_gravity_end = 0.0f;
m_gravity_start = 0.0f;
m_gravity_var = 0.0f;
m_size_end = 0.0f;
m_size_start = 0.0f;
m_size_var = 0.0f;
m_alpha_end = 0.0f;
m_alpha_start = 0.0f;
m_alpha_var = 0.0f;
m_color_red_end = 0.0f;
m_color_green_end = 0.0f;
m_color_blue_end = 0.0f;
m_color_red_start = 0.0f;
m_color_green_start = 0.0f;
m_color_blue_start = 0.0f;
m_color_red_var = 0.0f;
m_color_green_var = 0.0f;
m_color_blue_var = 0.0f;
m_frequence = 0;
m_angle = 0.0f;
m_life = 0.0f;
m_speed = 0.0f;
m_life_var = 0.0f;
m_speed_var = 0.0f;
m_isGathering = FALSE;
m_nAction = 0;
m_preview_speed = 2000;
m_preview_length = 300;
m_hasAlpha = FALSE;
//}}AFX_DATA_INIT
}
CDlgToolsParticles::~CDlgToolsParticles()
{
if(g_pToolsCtl)
g_pToolsCtl->SetTools(NULL);
}
void CDlgToolsParticles::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgToolsParticles)
DDX_Control(pDX, ID_SLIDER_PREVIEW_SPEED, m_slider_preview_speed);
DDX_Control(pDX, ID_SLIDER_PREVIEW_LENGTH, m_slider_preview_length);
DDX_Control(pDX, ID_SLIDER_4, m_slider_speed);
DDX_Control(pDX, ID_SLIDER_3, m_slider_life);
DDX_Control(pDX, ID_SLIDER_2, m_slider_angle);
DDX_Control(pDX, ID_SLIDER_1, m_slider_frequence);
DDX_Control(pDX, ID_SLIDER_START_6, m_slider_color_blue_start);
DDX_Control(pDX, ID_SLIDER_START_5, m_slider_color_green_start);
DDX_Control(pDX, ID_SLIDER_START_4, m_slider_color_red_start);
DDX_Control(pDX, ID_SLIDER_END_6, m_slider_color_blue_end);
DDX_Control(pDX, ID_SLIDER_END_5, m_slider_color_green_end);
DDX_Control(pDX, ID_SLIDER_END_4, m_slider_color_red_end);
DDX_Control(pDX, ID_SLIDER_START_3, m_slider_alpha_start);
DDX_Control(pDX, ID_SLIDER_END_3, m_slider_alpha_end);
DDX_Control(pDX, ID_SLIDER_START_2, m_slider_size_start);
DDX_Control(pDX, ID_SLIDER_START_1, m_slider_gravity_start);
DDX_Control(pDX, ID_SLIDER_END_2, m_slider_size_end);
DDX_Control(pDX, ID_SLIDER_END_1, m_slider_gravity_end);
DDX_Check(pDX, IDC_CHECK_Attractive, m_isAttrative);
DDX_Check(pDX, IDC_CHECK_Colliding, m_isColliding);
DDX_Text(pDX, IDC_EDIT_TEXTURE, m_str_texture);
DDX_CBIndex(pDX, IDC_COMBO_TEXTURE, m_nTextureIndex);
DDX_Text(pDX, ID_EDIT_END_1, m_gravity_end);
DDX_Text(pDX, ID_EDIT_START_1, m_gravity_start);
DDX_Text(pDX, ID_EDIT_VAR_1, m_gravity_var);
DDX_Text(pDX, ID_EDIT_END_2, m_size_end);
DDX_Text(pDX, ID_EDIT_START_2, m_size_start);
DDX_Text(pDX, ID_EDIT_VAR_2, m_size_var);
DDX_Text(pDX, ID_EDIT_END_3, m_alpha_end);
DDX_Text(pDX, ID_EDIT_START_3, m_alpha_start);
DDX_Text(pDX, ID_EDIT_VAR_3, m_alpha_var);
DDX_Text(pDX, ID_EDIT_END_4, m_color_red_end);
DDX_Text(pDX, ID_EDIT_END_5, m_color_green_end);
DDX_Text(pDX, ID_EDIT_END_6, m_color_blue_end);
DDX_Text(pDX, ID_EDIT_START_4, m_color_red_start);
DDX_Text(pDX, ID_EDIT_START_5, m_color_green_start);
DDX_Text(pDX, ID_EDIT_START_6, m_color_blue_start);
DDX_Text(pDX, ID_EDIT_VAR_4, m_color_red_var);
DDX_Text(pDX, ID_EDIT_VAR_5, m_color_green_var);
DDX_Text(pDX, ID_EDIT_VAR_6, m_color_blue_var);
DDX_Text(pDX, ID_EDIT_1, m_frequence);
DDX_Text(pDX, ID_EDIT_2, m_angle);
DDX_Text(pDX, ID_EDIT_3, m_life);
DDX_Text(pDX, ID_EDIT_4, m_speed);
DDX_Text(pDX, ID_EDIT_V_3, m_life_var);
DDX_Text(pDX, ID_EDIT_V_4, m_speed_var);
DDX_Check(pDX, IDC_CHECK_Gathering, m_isGathering);
DDX_CBIndex(pDX, IDC_COMBO_ACTION, m_nAction);
DDX_Slider(pDX, ID_SLIDER_PREVIEW_SPEED, m_preview_speed);
DDX_Slider(pDX, ID_SLIDER_PREVIEW_LENGTH, m_preview_length);
DDX_Check(pDX, IDC_CHECK_TEXTURE_ALPHA, m_hasAlpha);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlgToolsParticles, CDialog)
//{{AFX_MSG_MAP(CDlgToolsParticles)
ON_EN_CHANGE(ID_EDIT_1, OnChangeFrequence)
ON_EN_CHANGE(ID_EDIT_2, OnChangeAngle)
ON_EN_CHANGE(ID_EDIT_3, OnChangeLifeStart)
ON_EN_CHANGE(ID_EDIT_V_3, OnChangeLifeVar)
ON_EN_CHANGE(ID_EDIT_4, OnChangeSpeed)
ON_EN_CHANGE(ID_EDIT_V_4, OnChangeSpeedVar)
ON_EN_CHANGE(ID_EDIT_START_1, OnChangeGravity)
ON_EN_CHANGE(ID_EDIT_VAR_1, OnChangeGravityVar)
ON_EN_CHANGE(ID_EDIT_END_1, OnChangeGravityEnd)
ON_EN_CHANGE(ID_EDIT_START_2, OnChangeSizeStart)
ON_EN_CHANGE(ID_EDIT_VAR_2, OnChangeSizeVar)
ON_EN_CHANGE(ID_EDIT_END_2, OnChangeSizeEnd)
ON_EN_CHANGE(ID_EDIT_START_3, OnChangeAlphaStart)
ON_EN_CHANGE(ID_EDIT_VAR_3, OnChangeAlphaVar)
ON_EN_CHANGE(ID_EDIT_END_3, OnChangeAlphaEnd)
ON_EN_CHANGE(ID_EDIT_START_4, OnChangeColorRedStart)
ON_EN_CHANGE(ID_EDIT_VAR_4, OnChangeColorRedVar)
ON_EN_CHANGE(ID_EDIT_END_4, OnChangeColorRedEnd)
ON_EN_CHANGE(ID_EDIT_START_5, OnChangeColorGreenStart)
ON_EN_CHANGE(ID_EDIT_VAR_5, OnChangeColorGreenVar)
ON_EN_CHANGE(ID_EDIT_END_5, OnChangeColorGreenEnd)
ON_EN_CHANGE(ID_EDIT_START_6, OnChangeColorBlueStart)
ON_EN_CHANGE(ID_EDIT_VAR_6, OnChangeColorBlueVar)
ON_EN_CHANGE(ID_EDIT_END_6, OnChangeColorEnd)
ON_NOTIFY(NM_CUSTOMDRAW, ID_SLIDER_1, OnCustomdrawFrequence)
ON_NOTIFY(NM_CUSTOMDRAW, ID_SLIDER_2, OnCustomdrawAngle)
ON_NOTIFY(NM_CUSTOMDRAW, ID_SLIDER_3, OnCustomdrawSliderLife)
ON_NOTIFY(NM_CUSTOMDRAW, ID_SLIDER_4, OnCustomdrawSliderSpeed)
ON_NOTIFY(NM_CUSTOMDRAW, ID_SLIDER_START_1, OnCustomdrawSliderGravityStart)
ON_NOTIFY(NM_CUSTOMDRAW, ID_SLIDER_END_1, OnCustomdrawSliderGravityEnd)
ON_NOTIFY(NM_CUSTOMDRAW, ID_SLIDER_START_2, OnCustomdrawSliderSizeStart)
ON_NOTIFY(NM_CUSTOMDRAW, ID_SLIDER_END_2, OnCustomdrawSliderSizeEnd)
ON_NOTIFY(NM_CUSTOMDRAW, ID_SLIDER_START_4, OnCustomdrawSliderColorRedStart)
ON_NOTIFY(NM_CUSTOMDRAW, ID_SLIDER_START_3, OnCustomdrawSliderAlphaStart)
ON_NOTIFY(NM_CUSTOMDRAW, ID_SLIDER_END_3, OnCustomdrawSliderAlphaEnd)
ON_NOTIFY(NM_CUSTOMDRAW, ID_SLIDER_END_4, OnCustomdrawSliderColorRedEnd)
ON_NOTIFY(NM_CUSTOMDRAW, ID_SLIDER_START_5, OnCustomdrawSliderColorGreenStart)
ON_NOTIFY(NM_CUSTOMDRAW, ID_SLIDER_END_5, OnCustomdrawSliderColorGreenEnd)
ON_NOTIFY(NM_CUSTOMDRAW, ID_SLIDER_START_6, OnCustomdrawSliderColorBlueStart)
ON_NOTIFY(NM_CUSTOMDRAW, ID_SLIDER_END_6, OnCustomdrawSliderColorBlueEnd)
ON_BN_CLICKED(IDC_CHECK_Attractive, OnCHECKAttractive)
ON_BN_CLICKED(IDC_CHECK_Colliding, OnCHECKColliding)
ON_BN_CLICKED(ID_BTN_SAVE, OnBtnSave)
ON_BN_CLICKED(ID_BTN_SAVE_AS, OnBtnSaveAs)
ON_BN_CLICKED(ID_BTN_IMPORT, OnBtnImport)
ON_BN_CLICKED(IDC_BUTTON_TEXTURE, OnButtonTexture)
ON_CBN_SELCHANGE(IDC_COMBO_TEXTURE, OnSelchangeComboTexture)
ON_BN_CLICKED(IDC_CHECK_Gathering, OnCHECKGathering)
ON_CBN_SELENDOK(IDC_COMBO_ACTION, OnSelendokComboAction)
ON_NOTIFY(NM_CUSTOMDRAW, ID_SLIDER_PREVIEW_LENGTH, OnCustomdrawSliderPreviewLength)
ON_NOTIFY(NM_CUSTOMDRAW, ID_SLIDER_PREVIEW_SPEED, OnCustomdrawSliderPreviewSpeed)
ON_BN_CLICKED(IDC_CHECK_TEXTURE_ALPHA, OnCheckTextureAlpha)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgToolsParticles message handlers
BOOL CDlgToolsParticles::Create(CGsParticleEmitter& particles)
{
m_ptr_particles = &particles;
if(NULL==g_pToolsCtl)
return FALSE;
if (!CDialog::Create(CDlgToolsParticles::IDD, g_pToolsCtl))
{
TRACE0("Warning: creation of CStartupDlg dialog failed\n");
return FALSE;
}
ShowWindow(SW_HIDE);
UpdateWindow();
g_pToolsCtl->SetTools(this);
return TRUE;
}
void CDlgToolsParticles::Init()
{
m_slider_alpha_end.SetRange(0, 255);
m_slider_alpha_start.SetRange(0, 255);
m_slider_color_red_end.SetRange(0, 255);
m_slider_color_red_start.SetRange(0, 255);
m_slider_color_green_end.SetRange(0, 255);
m_slider_color_green_start.SetRange(0, 255);
m_slider_color_blue_end.SetRange(0, 255);
m_slider_color_blue_start.SetRange(0, 255);
m_slider_gravity_end.SetRange(0, 2000);
m_slider_gravity_start.SetRange(0, 2000);
m_slider_size_end.SetRange(0, 1000);
m_slider_size_start.SetRange(0, 1000);
m_slider_life.SetRange(0, 1000);
m_slider_frequence.SetRange(0, 500);
m_slider_speed.SetRange(0, 20000);
m_slider_angle.SetRange(0, 360);
m_slider_preview_length.SetRange(100, 2000);
m_slider_preview_speed.SetRange(100, 5000);
m_alpha_end = m_ptr_particles->GetAlphaEnd();
m_alpha_start = m_ptr_particles->GetAlphaStart();
m_alpha_var = m_ptr_particles->GetAlphaVar();
m_isAttrative = m_ptr_particles->IsAttractive();
m_isColliding = m_ptr_particles->IsColliding();
m_isGathering = m_ptr_particles->IsGathering();
D3DCOLORVALUE cr;
cr = m_ptr_particles->GetColorEnd();
m_color_red_end = cr.r;
m_color_green_end = cr.g;
m_color_blue_end = cr.b;
cr = m_ptr_particles->GetColorStart();
m_color_red_start = cr.r;
m_color_green_start = cr.g;
m_color_blue_start = cr.b;
cr = m_ptr_particles->GetColorVar();
m_color_red_var = cr.r;
m_color_green_var = cr.g;
m_color_blue_var = cr.b;
m_gravity_end = m_ptr_particles->GetGravityEnd();
m_gravity_start = m_ptr_particles->GetGravityStart();
m_gravity_var = m_ptr_particles->GetGravityVar();
m_life = m_ptr_particles->GetLife();
m_life_var = m_ptr_particles->GetLifeVar();
m_frequence = m_ptr_particles->GetParticlesPerSec();
m_size_end = m_ptr_particles->GetSizeEnd();
m_size_start = m_ptr_particles->GetSizeStart();
m_size_var = m_ptr_particles->GetSizeVar();
m_speed = m_ptr_particles->GetSpeed();
m_speed_var = m_ptr_particles->GetSpeedVar();
m_angle = m_ptr_particles->GetTheta();
m_str_texture = m_ptr_particles->GetANI(m_nTextureIndex);
m_hasAlpha = m_ptr_particles->IsANIHasAlpha(m_nTextureIndex);
UpdateData(FALSE);
UpdateSeting();
}
VOID CDlgToolsParticles::UpdateSeting()
{
m_slider_alpha_end.SetPos(m_alpha_end*255);
m_slider_alpha_start.SetPos(m_alpha_start*255);
m_slider_color_red_end.SetPos(m_color_red_end*255);
m_slider_color_red_start.SetPos(m_color_red_start*255);
m_slider_color_green_end.SetPos(m_color_green_end*255);
m_slider_color_green_start.SetPos(m_color_green_start*255);
m_slider_color_blue_end.SetPos(m_color_blue_end*255);
m_slider_color_blue_start.SetPos(m_color_blue_start*255);
m_slider_gravity_end.SetPos(m_gravity_end*100+1000);
m_slider_gravity_start.SetPos(m_gravity_start*100+1000);
m_slider_size_end.SetPos(m_size_end*100);
m_slider_size_start.SetPos(m_size_start*100);
m_slider_life.SetPos(m_life*100);
m_slider_frequence.SetPos(m_frequence);
m_slider_speed.SetPos(m_speed*10);
m_slider_angle.SetPos(m_angle);
}
VOID CDlgToolsParticles::UpdateParticles()
{
UpdateData();
m_ptr_particles->SetAlphaEnd(m_alpha_end);
m_ptr_particles->SetAlphaStart(m_alpha_start);
m_ptr_particles->SetAlphaVar(m_alpha_var);
m_ptr_particles->SetAttractive(m_isAttrative);
m_ptr_particles->SetColliding(m_isColliding);
m_ptr_particles->SetGathering(m_isGathering);
D3DCOLORVALUE cr;
cr.r = m_color_red_end;
cr.g = m_color_green_end;
cr.b = m_color_blue_end;
m_ptr_particles->SetColorEnd(cr);
cr.r = m_color_red_start;
cr.g = m_color_green_start;
cr.b = m_color_blue_start;
m_ptr_particles->SetColorStart(cr);
cr.r = m_color_red_var;
cr.g = m_color_green_var;
cr.b = m_color_blue_var;
m_ptr_particles->SetColorVar(cr);
m_ptr_particles->SetGravityEnd(m_gravity_end);
m_ptr_particles->SetGravityStart(m_gravity_start);
m_ptr_particles->SetGravityVar(m_gravity_var);
m_ptr_particles->SetLife(m_life);
m_ptr_particles->SetLifeVar(m_life_var);
m_ptr_particles->SetParticlesPerSec(m_frequence);
m_ptr_particles->SetSizeEnd(m_size_end);
m_ptr_particles->SetSizeStart(m_size_start);
m_ptr_particles->SetSizeVar(m_size_var);
m_ptr_particles->SetSpeed(m_speed);
m_ptr_particles->SetSpeedVar(m_speed_var);
m_ptr_particles->SetTheta(m_angle);
}
BOOL CDlgToolsParticles::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
Init();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDlgToolsParticles::OnChangeFrequence()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
UpdateParticles();
UpdateSeting();
}
void CDlgToolsParticles::OnChangeAngle()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
UpdateParticles();
UpdateSeting();
}
void CDlgToolsParticles::OnChangeLifeStart()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
UpdateParticles();
UpdateSeting();
}
void CDlgToolsParticles::OnChangeLifeVar()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
UpdateParticles();
UpdateSeting();
}
void CDlgToolsParticles::OnChangeSpeed()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
UpdateParticles();
UpdateSeting();
}
void CDlgToolsParticles::OnChangeSpeedVar()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
UpdateParticles();
UpdateSeting();
}
void CDlgToolsParticles::OnChangeGravity()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
UpdateParticles();
UpdateSeting();
}
void CDlgToolsParticles::OnChangeGravityVar()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
UpdateParticles();
UpdateSeting();
}
void CDlgToolsParticles::OnChangeGravityEnd()
{
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?