Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
232 lines
5.7 KiB
C++
232 lines
5.7 KiB
C++
// pEffect.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "worldcreator.h"
|
|
#include "pEffect.h"
|
|
#include "MainFrm.h"
|
|
#include "WorldCreatorView.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CpEffect property page
|
|
|
|
IMPLEMENT_DYNCREATE(CpEffect, CPropertyPage)
|
|
|
|
CpEffect::CpEffect() : CPropertyPage(CpEffect::IDD)
|
|
{
|
|
//{{AFX_DATA_INIT(CpEffect)
|
|
// NOTE: the ClassWizard will add member initialization here
|
|
//}}AFX_DATA_INIT
|
|
m_bEffectLoad = TRUE;
|
|
m_LogFile = NULL;
|
|
|
|
}
|
|
|
|
CpEffect::~CpEffect()
|
|
{
|
|
int i;
|
|
if(m_LogFile != NULL) {
|
|
fclose(m_LogFile);
|
|
|
|
}
|
|
m_LogFile = fopen("c:\\WorldEffectList.log","wb+");
|
|
|
|
for(i=0;i<m_EffectListNode.num;i++) {
|
|
char tmp_buf[256] = {0};
|
|
strcpy(tmp_buf,m_EffectListNode[i].m_filename);
|
|
fwrite((char *)tmp_buf,sizeof(char),256,m_LogFile);
|
|
}
|
|
fclose(m_LogFile);
|
|
m_LogFile = NULL;
|
|
}
|
|
|
|
void CpEffect::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CPropertyPage::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CpEffect)
|
|
DDX_Control(pDX, IDC_LIST1, m_EffectControl);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CpEffect, CPropertyPage)
|
|
//{{AFX_MSG_MAP(CpEffect)
|
|
ON_NOTIFY(NM_RCLICK, IDC_LIST1, OnRclickList1)
|
|
ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnDblclkEffectList)
|
|
ON_COMMAND(MENU_EFFECT_LOAD, OnEffectLoad)
|
|
ON_NOTIFY(LVN_BEGINDRAG, IDC_LIST1, OnBegindragList1)
|
|
ON_COMMAND(MENU_EFFECT_DELETE, OnEffectDelete)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CpEffect message handlers
|
|
|
|
void CpEffect::OnRclickList1(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
CPoint point;
|
|
GetCursorPos(&point);
|
|
CMenu menu;
|
|
menu.LoadMenu(IDR_MENU_EFFECT);
|
|
menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
|
|
*pResult = 0;
|
|
|
|
}
|
|
|
|
void CpEffect::OnDblclkEffectList(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
int SelectCur=m_EffectControl.GetNextItem(-1,LVNI_SELECTED);
|
|
if(SelectCur==-1)
|
|
return;
|
|
|
|
CDlgEffectLoad dlgEffectLoad;
|
|
// dlgEffectLoad.m_name =
|
|
/* dlgObjectLoad.m_strObjectName=m_ObjectListNode[SelectCur].m_strObjectName;
|
|
dlgObjectLoad.m_strObjectFilename=m_ObjectListNode[SelectCur].m_strObjectFilename;
|
|
dlgObjectLoad.m_isAlpha=m_ObjectListNode[SelectCur].m_IsAlpha;
|
|
dlgObjectLoad.m_isLight=m_ObjectListNode[SelectCur].m_IsLight;
|
|
|
|
if(dlgObjectLoad.DoModal()!=IDOK)
|
|
return;
|
|
|
|
CString strText;
|
|
strcpy(m_ObjectListNode[SelectCur].m_strObjectName,dlgObjectLoad.m_strObjectName.LockBuffer());
|
|
strcpy(m_ObjectListNode[SelectCur].m_strObjectFilename,dlgObjectLoad.m_strObjectFilename.LockBuffer());
|
|
|
|
if(dlgObjectLoad.m_isAlpha)
|
|
m_ObjectListNode[SelectCur].m_IsAlpha=true;
|
|
else
|
|
m_ObjectListNode[SelectCur].m_IsAlpha=false;
|
|
|
|
if(dlgObjectLoad.m_isLight)
|
|
m_ObjectListNode[SelectCur].m_IsLight=true;
|
|
else
|
|
m_ObjectListNode[SelectCur].m_IsLight=false;
|
|
|
|
m_ObjectList.SetItemText(SelectCur,0,dlgObjectLoad.m_strObjectName);
|
|
m_ObjectList.SetItemText(SelectCur,1,dlgObjectLoad.m_strObjectFilename);
|
|
|
|
if(dlgObjectLoad.m_isAlpha)
|
|
m_ObjectList.SetItemText(SelectCur,2,"Yes");
|
|
else
|
|
m_ObjectList.SetItemText(SelectCur,2,"No");
|
|
|
|
if(dlgObjectLoad.m_isLight)
|
|
m_ObjectList.SetItemText(SelectCur,3,"Yes");
|
|
else
|
|
m_ObjectList.SetItemText(SelectCur,3,"No"); */
|
|
*pResult = 0;
|
|
}
|
|
|
|
|
|
|
|
void CpEffect::OnEffectLoad()
|
|
{
|
|
// TODO: Add your command handler code here
|
|
|
|
|
|
CString strFilter = EFFFILE;
|
|
CFileDialog filedia(TRUE,EFFECTPATH,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,strFilter,this);
|
|
filedia.m_ofn.lpstrInitialDir = EFFECTPATH;
|
|
filedia.DoModal();
|
|
CString filename=filedia.GetFileName();
|
|
if(filename!="")
|
|
{
|
|
m_EffectFileName=filename;
|
|
add_filename(1);
|
|
}
|
|
else
|
|
{
|
|
m_bEffectLoad=FALSE;
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
void CpEffect::add_filename(int value)
|
|
{
|
|
EffectListNode tmp;
|
|
if(!value) { // »õ·Î Ãß°¡ÇÑ effect
|
|
/*
|
|
*/
|
|
}
|
|
m_EffectControl.InsertItem(m_EffectControl.GetItemCount(),m_EffectFileName);
|
|
strcpy(tmp.m_filename,m_EffectFileName);
|
|
m_EffectListNode.Add(tmp);
|
|
}
|
|
|
|
|
|
|
|
BOOL CpEffect::OnInitDialog()
|
|
{
|
|
CPropertyPage::OnInitDialog();
|
|
|
|
DWORD dwStyle;
|
|
dwStyle = m_EffectControl.SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE, 0 ,0);
|
|
dwStyle |= LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES ;
|
|
m_EffectControl.SendMessage( LVM_SETEXTENDEDLISTVIEWSTYLE, 0,dwStyle );
|
|
|
|
m_EffectControl.InsertColumn(0,"ÆÄÀϸí",LVCFMT_LEFT,260);
|
|
|
|
m_LogFile = fopen("c:\\WorldEffectList.log","rb");
|
|
|
|
if(m_LogFile != NULL) {
|
|
while(!feof(m_LogFile)) {
|
|
char tmp_buf[256] = {0};
|
|
fread((char *)tmp_buf,sizeof(char),256,m_LogFile);
|
|
m_EffectFileName.Format("%s",tmp_buf);
|
|
add_filename(1);
|
|
}
|
|
fclose(m_LogFile);
|
|
m_LogFile = NULL;
|
|
}
|
|
|
|
// TODO: Add extra initialization here
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CpEffect::OnBegindragList1(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
|
|
// TODO: Add your control notification handler code here
|
|
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
|
|
CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView();
|
|
SelectObject();
|
|
av->m_effect_drag = TRUE;
|
|
av->ChangeMouseInterface(70);
|
|
av->m_Select_Effect.Format("%s",m_Select_Effect);
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
void CpEffect::SelectObject()
|
|
{
|
|
int m_SelectCur=m_EffectControl.GetNextItem(-1,LVNI_SELECTED);
|
|
if(m_SelectCur<0)
|
|
return;
|
|
m_Select_Effect=m_EffectListNode[m_SelectCur].m_filename;
|
|
|
|
}
|
|
|
|
void CpEffect::OnEffectDelete()
|
|
{
|
|
// TODO: Add your command handler code here
|
|
int m_SelectCur=m_EffectControl.GetNextItem(-1,LVNI_SELECTED);
|
|
if(m_SelectCur<0)
|
|
return;
|
|
m_EffectControl.DeleteItem(m_SelectCur);
|
|
m_EffectListNode.DelIndex(m_SelectCur);
|
|
|
|
}
|