Files
Client/GameTools/WORLDCREATOR/DlgCharacterCreate.cpp
LGram16 dd97ddec92 Restructure repository to include all source folders
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>
2025-11-29 20:17:20 +09:00

1121 lines
32 KiB
C++
Raw Permalink Blame History

// DlgCharacterCreate.cpp : implementation file
//
#include "stdafx.h"
#include "worldcreator.h"
#include "DlgCharacterCreate.h"
#include "MainFrm.h"
#include "WorldCreatorView.h"
#include "ShaderScene.h"
#include "Shader_BumpSpec.h"
#include "Shader_IndexHeader.h"
#include "RenderOption.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlgCharacterCreate dialog
CDlgCharacterCreate::CDlgCharacterCreate(CWnd* pParent /*=NULL*/)
: CDialog(CDlgCharacterCreate::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgCharacterCreate)
m_MonName = _T("");
m_MonEsf = _T("");
m_Sex = 0;
m_nFocusCharacter = 0;
m_AkanValue = FALSE;
m_strNormalTex = _T("");
m_Monster = NULL;
m_fBumpScale = 1.0f;
//}}AFX_DATA_INIT
}
void CDlgCharacterCreate::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgCharacterCreate)
DDX_Control(pDX, IDC_LIST_TEMP, m_TempList);
DDX_Control(pDX, IDC_COMBO_SIMPLESELECT, m_SimpleSelectList);
DDX_Control(pDX, IDC_COMBOPIVOT, m_MonPivot);
DDX_Control(pDX, IDC_COMBO_WEAPONTYPE, m_WeaponType);
DDX_Control(pDX, IDC_COMBO_WEAPON, m_WeaponList);
DDX_Control(pDX, IDC_COMBO_SHIELD, m_ShieldList);
DDX_Control(pDX, IDC_COMBO_HEAD, m_HeadList);
DDX_Control(pDX, IDC_COMBO_HAND, m_HandList);
DDX_Control(pDX, IDC_COMBO_FOOT, m_FootList);
DDX_Control(pDX, IDC_COMBO_BODY2, m_Body2List);
DDX_Control(pDX, IDC_COMBO_BODY1, m_Body1List);
DDX_Control(pDX, IDC_COMBO_BODY0, m_Body0List);
DDX_Text(pDX, IDC_MON_NAME, m_MonName);
DDX_Text(pDX, IDC_MONESFNAME, m_MonEsf);
DDX_Radio(pDX, IDC_RADIO1, m_Sex);
DDX_Text(pDX, IDC_EDIT_FOCUS, m_nFocusCharacter);
DDX_Check(pDX, IDC_AKAN, m_AkanValue);
DDX_Text(pDX, IDC_NORMALTEX, m_strNormalTex);
DDX_Text(pDX, IDC_EDIT1, m_fBumpScale);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlgCharacterCreate, CDialog)
//{{AFX_MSG_MAP(CDlgCharacterCreate)
ON_BN_CLICKED(IDC_BUTTON_RANDOM, OnButtonRandom)
ON_BN_CLICKED(IDC_MONSEARCH, OnMonsearch)
ON_BN_CLICKED(IDC_MONADDEFFECT, OnMonaddeffect)
ON_BN_CLICKED(IDC_MON_ESFSEARCH, OnMonEsfsearch)
ON_EN_CHANGE(IDC_EDIT_FOCUS, OnChangeEditFocus)
ON_CBN_EDITCHANGE(IDC_COMBO_SIMPLESELECT, OnEditchangeComboSimpleselect)
ON_CBN_SELCHANGE(IDC_COMBO_SIMPLESELECT, OnSelchangeComboSimpleselect)
ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_NORMALINPUT, OnNormalinput)
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
ON_BN_CLICKED(IDC_RELOAD, OnReload)
ON_BN_CLICKED(IDC_AKAN, OnAkan)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgCharacterCreate message handlers
BOOL CDlgCharacterCreate::OnInitDialog()
{
CDialog::OnInitDialog();
char strNode[256];
// TODO: Add extra initialization here
char path[256];
GetCurrentDirectory(256,path);
sprintf(path,"%s\\ChrData.txt",path);
FILE *fp=fopen(path,"r");
int nReadNode=0;
while(fscanf(fp,"%s",strNode)==1)
{
if(strcmp(strNode,"//HEAD")==0)
{
nReadNode=0;
continue;
}
if(strcmp(strNode,"//BODY")==0)
{
nReadNode=1;
continue;
}
if(strcmp(strNode,"//HAND")==0)
{
nReadNode=2;
continue;
}
if(strcmp(strNode,"//FOOT")==0)
{
nReadNode=3;
continue;
}
if(strcmp(strNode,"//WEAPON")==0)
{
nReadNode=4;
continue;
}
if(strcmp(strNode,"//SHIELD")==0)
{
nReadNode=5;
continue;
}
switch(nReadNode)
{
case 0:
m_HeadList.AddString(strNode);
break;
case 1:
m_Body0List.AddString(strNode);
m_Body1List.AddString(strNode);
m_Body2List.AddString(strNode);
break;
case 2:
m_HandList.AddString(strNode);
break;
case 3:
m_FootList.AddString(strNode);
break;
case 4:
m_WeaponList.AddString(strNode);
break;
case 5:
m_ShieldList.AddString(strNode);
break;
}
}
fclose(fp);
m_HeadList.SetCurSel(m_HeadList.FindString(0,"WINGED_HELM"));
m_Body0List.SetCurSel(m_Body0List.FindString(0,"COMPOSITE_MAIL"));
m_HandList.SetCurSel(m_HandList.FindString(0,"COMPOSITE_GAUNTLET"));
m_FootList.SetCurSel(m_FootList.FindString(0,"COMPOSITE_BOOTS"));
m_WeaponList.SetCurSel(m_WeaponList.FindString(0,"BASTARD_SWORD"));
m_ShieldList.SetCurSel(m_ShieldList.FindString(0,"LARGE_SHIELD"));
/*
m_HeadList.SetCurSel(m_HeadList.FindString(0,"MDWING"));
m_Body0List.SetCurSel(m_Body0List.FindString(0,"ARCHON_HAUBERK"));
m_HandList.SetCurSel(m_HandList.FindString(0,"FUR_LEATHER_GLOVE"));
m_FootList.SetCurSel(m_FootList.FindString(0,"FUR_LEATHER_BOOTS"));
m_WeaponList.SetCurSel(m_WeaponList.FindString(0,"BASTARD_SWORD"));
m_ShieldList.SetCurSel(m_ShieldList.FindString(0,"LARGE_SHIELD"));
*/
m_HeadList.SetCurSel(m_HeadList.FindString(0,"DRAGOON_HELM"));
m_Body0List.SetCurSel(m_Body0List.FindString(0,"HARD_LEATHER_SHIRTS"));
m_Body1List.SetCurSel(m_Body1List.FindString(0,"BLACK_DRAGONS_TUNIC"));
m_Body2List.SetCurSel(m_Body2List.FindString(0,"SACRED_ARMOR"));
m_HandList.SetCurSel(m_HandList.FindString(0,"MITTEN_GAUNTLET"));
m_FootList.SetCurSel(m_FootList.FindString(0,"COMPOSITE_BOOTS"));
m_WeaponList.SetCurSel(m_WeaponList.FindString(0,"CLAYMORE"));
m_ShieldList.SetCurSel(m_ShieldList.FindString(0,"HERALDIC_SHIELD"));
m_WeaponType.AddString("NO_WEAPON");
m_WeaponType.AddString("NO_WEAPON_B");
m_WeaponType.AddString("WEAPON_ONE_HAND");
m_WeaponType.AddString("WEAPON_TWO_HAND");
m_WeaponType.AddString("WEAPON_BLUNT");
m_WeaponType.AddString("WEAPON_BOW");
m_WeaponType.AddString("WEAPON_DAGGER");
m_WeaponType.AddString("WEAPON_CROSSBOW");
m_WeaponType.AddString("CLASS_ROGUE");
m_WeaponType.AddString("--<2D><>ĭ<EFBFBD><C4AD>--");
m_WeaponType.AddString("NO_WEAPON");
m_WeaponType.AddString("NO_WEAPON_B");
m_WeaponType.AddString("WEAPON_ONE_HAND");
m_WeaponType.AddString("WEAPON_CLAW");
m_WeaponType.AddString("WEAPON_SICKLE");
m_WeaponType.SetCurSel(m_WeaponType.FindString(0,"WEAPON_ONE_HAND"));
GetCurrentDirectory(256,path);
sprintf(path,"%s\\ChrDataShape.txt",path);
fp=fopen(path,"r");
int n=0;
while(fscanf(fp,"%s",strNode)==1)
{
n++;
CString strTemp;
strTemp.Format("ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD>%d",n);
m_SimpleSelectList.AddString(strTemp);
m_TempList.AddString(strNode);
fscanf(fp,"%s",strNode);
m_TempList.AddString(strNode);
fscanf(fp,"%s",strNode);
m_TempList.AddString(strNode);
fscanf(fp,"%s",strNode);
m_TempList.AddString(strNode);
fscanf(fp,"%s",strNode);
m_TempList.AddString(strNode);
fscanf(fp,"%s",strNode);
m_TempList.AddString(strNode);
fscanf(fp,"%s",strNode);
m_TempList.AddString(strNode);
fscanf(fp,"%s",strNode);
m_TempList.AddString(strNode);
}
fclose(fp);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDlgCharacterCreate::OnOK()
{
// TODO: Add extra validation here
UpdateData(TRUE);
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CWorldCreatorView* av=(CWorldCreatorView*)mf->GetActiveView();
matrix *matPos=av->m_BaseGraphicLayer.m_ViewCamera.GetMatPosition();
vector3 vecViewPos=matPos->GetLoc();
//CZ3DGeneralChrModel *pChrmodel=;
char strWeaponType[256];
char strShape[15][256];
for(int cShape=0;cShape<15;cShape++)
{
strcpy(strShape[cShape],"");
}
CString strNode;
m_HeadList.GetWindowText(strNode);
strcpy(strShape[0],strNode.LockBuffer());
m_Body0List.GetWindowText(strNode);
strcpy(strShape[1],strNode.GetBuffer(0));
m_Body1List.GetWindowText(strNode);
strcpy(strShape[2],strNode.GetBuffer(0));
m_Body2List.GetWindowText(strNode);
strcpy(strShape[3],strNode.GetBuffer(0));
m_HandList.GetWindowText(strNode);
strcpy(strShape[4],strNode.GetBuffer(0));
m_FootList.GetWindowText(strNode);
strcpy(strShape[5],strNode.GetBuffer(0));
m_WeaponList.GetWindowText(strNode);
strcpy(strShape[11],strNode.GetBuffer(0));
m_ShieldList.GetWindowText(strNode);
strcpy(strShape[9],strNode.GetBuffer(0));
//m_WeaponType.GetWindowText(strNode);
//strcpy(strWeaponType,strNode.LockBuffer());
//AfxMessageBox(strWeaponType);
/*
char pChrShape[15][256];
strcpy(pChrShape[0],strShape[0]);
strcpy(pChrShape[1],strShape[1]);
strcpy(pChrShape[2],strShape[2]);
strcpy(pChrShape[3],strShape[3]);
strcpy(pChrShape[4],strShape[4]);
strcpy(pChrShape[5],strShape[5]);
strcpy(pChrShape[6],strShape[6]);
strcpy(pChrShape[7],strShape[7]);
strcpy(pChrShape[8],strShape[8]);
strcpy(pChrShape[9],strShape[9]);
strcpy(pChrShape[10],strShape[10]);
strcpy(pChrShape[11],strShape[11]);
strcpy(pChrShape[12],strShape[12]);
strcpy(pChrShape[13],strShape[13]);
strcpy(pChrShape[14],strShape[14]);
*/
//{
if(!m_AkanValue) {
if(m_Sex == 0) {
int nChrID=av->m_ChrManager.AddCharacter(rand()%1000,0,"rainbow","PC_MAN.GCMDS", "FACE01", "HAIR01",vecViewPos,0.0f,strShape);
memset(av->m_strModelName,0,sizeof(char) * 256);
strcpy(av->m_strModelName,"PC_MAN.GCMDS");
}
// CSceneManager::AddCharacter("Mon_Skeleton_warrior.gcmds","FACE01","HAIR01");
else if(m_Sex == 1) {
int nChrID=av->m_ChrManager.AddCharacter(rand()%1000,0,"rainbow","PC_WOMAN.GCMDS", "FACE01", "HAIR01",vecViewPos,0.0f,strShape);
memset(av->m_strModelName,0,sizeof(char) * 256);
strcpy(av->m_strModelName,"PC_WOMAN.GCMDS");
}
else if(m_Sex == 2) {
int nChrID=av->m_ChrManager.AddCharacter(0x80000000+rand()%1000,0,"rainbow",m_MonName.LockBuffer(), "FACE01", "HAIR01",vector3(vecViewPos.x,vecViewPos.y,vecViewPos.z),0.0f,strShape);
memset(av->m_strModelName,0,sizeof(char) * 256);
strcpy(av->m_strModelName,m_MonName.LockBuffer());
}
}
else {
if(m_Sex == 0) {// acan <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
int nChrID=av->m_ChrManager.AddCharacter(rand()%1000,1,"rainbow","PC_Akhan_A.GCMDS", "FACE01", "HAIR01",vecViewPos,0.0f,strShape);
memset(av->m_strModelName,0,sizeof(char) * 256);
strcpy(av->m_strModelName,"PC_Akhan_A.GCMDS");
}
else if(m_Sex == 1) {//acan <20><><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int nChrID=av->m_ChrManager.AddCharacter(rand()%1000,1,"rainbow","PC_Akhan_B.GCMDS", "FACE01", "HAIR01",vecViewPos,0.0f,strShape);
memset(av->m_strModelName,0,sizeof(char) * 256);
strcpy(av->m_strModelName,"PC_Akhan_B.GCMDS");
}
else if(m_Sex == 2) {
int nChrID=av->m_ChrManager.AddCharacter(0x80000000+rand()%1000,1,"rainbow",m_MonName.LockBuffer(), "FACE01", "HAIR01",vecViewPos,0.0f,strShape);
memset(av->m_strModelName,0,sizeof(char) * 256);
strcpy(av->m_strModelName,m_MonName.LockBuffer());
}
}
//nChrID=av->m_ChrManager.AddCharacter(rand()%1000,"PC_MAN.GCMDS", "FACE01", "HAIR01",vecViewPos,0.0f,strShape);
//nChrID=av->m_ChrManager.AddCharacter(rand()%1000,"PC_MAN.GCMDS", "FACE01", "HAIR01",vecViewPos,0.0f,pChrShape);
//nChrID=av->m_ChrManager.AddCharacter(rand()%1000,"PC_MAN.GCMDS", "FACE01", "HAIR01",vecViewPos,0.0f,pChrShape);
//nChrID=av->m_ChrManager.AddCharacter(rand()%1000,"PC_MAN.GCMDS", "FACE01", "HAIR01",vecViewPos,vector3(rand()%1000,0.0f,0.0f),0.0f,pChrShape);
//if(m_Sex != 2)
//av->m_ChrManager.m_lstCharData[0]->m_lpChrModel->SetMotionSheet("WEAPON_ONE_HAND");
//av->m_ChrManager.m_lstCharData[0]->m_lpChrModel->SetMotionSheet(
//nChrID=av->m_ChrManager.AddCharacter(rand()%1000,"PC_MAN.GCMDS", "FACE01", "HAIR01",vecViewPos,0.0f,pChrShape);
//m_WeaponTypeList
//av->m_ChrManager.AddCharacter(rand()%1000,"MON_LIZARDMANLEADER.GCMDS", "FACE01", "HAIR01",vecViewPos,0.0f,pChrShape);
//}
//av->m_ChrManager.AddCharacter("PC_MAN.GCMDS", "FACE01", "HAIR01",vecViewPos,0.0f,strShape);
/*
int nSel=m_SimpleSelectList.GetCurSel();
CString strNode;
m_TempList.SetCurSel(nSel*8+0);
m_TempList.GetWindowText(strNode);
m_HeadList.SetCurSel(m_ShieldList.FindString(0,strNode));
m_TempList.SetCurSel(nSel*8+1);
m_TempList.GetWindowText(strNode);
m_Body0List.SetWindowText(strNode);
m_TempList.SetCurSel(nSel*8+2);
m_TempList.GetWindowText(strNode);
m_Body1List.SetWindowText(strNode);
m_TempList.SetCurSel(nSel*8+3);
m_TempList.GetWindowText(strNode);
m_Body2List.SetWindowText(strNode);
m_TempList.SetCurSel(nSel*8+4);
m_TempList.GetWindowText(strNode);
m_HandList.SetWindowText(strNode);
m_TempList.SetCurSel(nSel*8+5);
m_TempList.GetWindowText(strNode);
m_FootList.SetWindowText(strNode);
m_TempList.SetCurSel(nSel*8+6);
m_TempList.GetWindowText(strNode);
m_WeaponList.SetWindowText(strNode);
m_TempList.SetCurSel(nSel*8+7);
m_TempList.GetWindowText(strNode);
m_ShieldList.SetWindowText(strNode);
*/
/*
for(int i=0;i<16;i++)
{
int nSel=i;
CString strNode;
m_TempList.GetText(nSel*8+0,strNode);
strNode.MakeUpper();
m_HeadList.SetCurSel(m_HeadList.FindString(0,strNode));
m_TempList.GetText(nSel*8+1,strNode);
strNode.MakeUpper();
m_Body0List.SetCurSel(m_Body0List.FindString(0,strNode));
m_TempList.GetText(nSel*8+2,strNode);
strNode.MakeUpper();
m_Body1List.SetCurSel(m_Body1List.FindString(0,strNode));
m_TempList.GetText(nSel*8+3,strNode);
strNode.MakeUpper();
m_Body2List.SetCurSel(m_Body2List.FindString(0,strNode));
m_TempList.GetText(nSel*8+4,strNode);
strNode.MakeUpper();
m_HandList.SetCurSel(m_HandList.FindString(0,strNode));
m_TempList.GetText(nSel*8+5,strNode);
strNode.MakeUpper();
m_FootList.SetCurSel(m_FootList.FindString(0,strNode));
m_TempList.GetText(nSel*8+6,strNode);
strNode.MakeUpper();
m_WeaponList.SetCurSel(m_WeaponList.FindString(0,strNode));
m_TempList.GetText(nSel*8+7,strNode);
strNode.MakeUpper();
m_ShieldList.SetCurSel(m_ShieldList.FindString(0,strNode));
m_HeadList.GetWindowText(strNode);
strcpy(strShape[0],strNode.LockBuffer());
m_Body0List.GetWindowText(strNode);
strcpy(strShape[1],strNode.GetBuffer(0));
m_Body1List.GetWindowText(strNode);
strcpy(strShape[2],strNode.GetBuffer(0));
m_Body2List.GetWindowText(strNode);
strcpy(strShape[3],strNode.GetBuffer(0));
m_HandList.GetWindowText(strNode);
strcpy(strShape[4],strNode.GetBuffer(0));
m_FootList.GetWindowText(strNode);
strcpy(strShape[5],strNode.GetBuffer(0));
m_WeaponList.GetWindowText(strNode);
strcpy(strShape[11],strNode.GetBuffer(0));
m_ShieldList.GetWindowText(strNode);
strcpy(strShape[9],strNode.GetBuffer(0));
vector3 vecChrPos=vecViewPos+vector3(i*200.0f,0.0f,0.0f);
vecChrPos.y=av->m_SceneManager->m_HeightField.GetHeight(vecChrPos);
int nChrID=av->m_ChrManager.AddCharacter(rand()%10000,"rainbow","PC_MAN.GCMDS", "FACE01", "HAIR01",vecChrPos,0.0f,strShape);
}
*/
/**/
/* vector3 vecChrPos=vecViewPos;
vecChrPos.y=av->m_SceneManager->m_HeightField.GetHeight(vecChrPos);
int nChrID=av->m_ChrManager.AddCharacter(rand()%1000,0,"rainbow","PC_WOMAN.GCMDS", "FACE01", "HAIR01",vecChrPos,0.0f,strShape);
*/
av->m_ChrManager.m_nFocusCharacter=0;
//
/*
for(int i=0;i<1;i++)
{
vector3 vecChrPos=vecViewPos+vector3(rand()%5000,0.0f,rand()%5000);
vecChrPos.y=av->m_SceneManager->m_HeightField.GetHeight(vecChrPos);
int nChrID=av->m_ChrManager.AddCharacter(rand()%1000,0,"rainbow","PC_MAN.GCMDS", "FACE01", "HAIR01",vecChrPos,0.0f,strShape);
/*
vector3 vecChrPos=vecViewPos+vector3(rand()%5000,0.0f,rand()%5000);
vecChrPos.y=av->m_SceneManager->m_HeightField.GetHeight(vecChrPos);
m_HeadList.SetCurSel(rand()%m_HeadList.GetCount());
m_Body0List.SetCurSel(rand()%m_Body0List.GetCount());
m_Body1List.SetCurSel(rand()%m_Body1List.GetCount());
m_Body2List.SetCurSel(rand()%m_Body2List.GetCount());
m_HandList.SetCurSel(rand()%m_HandList.GetCount());
m_FootList.SetCurSel(rand()%m_FootList.GetCount());
m_WeaponList.SetCurSel(rand()%m_WeaponList.GetCount());
m_ShieldList.SetCurSel(rand()%m_ShieldList.GetCount());
CString strNode;
m_HeadList.GetWindowText(strNode);
strcpy(strShape[0],strNode.GetBuffer(0));
m_Body0List.GetWindowText(strNode);
strcpy(strShape[1],strNode.GetBuffer(0));
m_Body1List.GetWindowText(strNode);
strcpy(strShape[2],strNode.GetBuffer(0));
m_Body2List.GetWindowText(strNode);
strcpy(strShape[3],strNode.GetBuffer(0));
m_HandList.GetWindowText(strNode);
strcpy(strShape[4],strNode.GetBuffer(0));
m_FootList.GetWindowText(strNode);
strcpy(strShape[5],strNode.GetBuffer(0));
m_WeaponList.GetWindowText(strNode);
strcpy(strShape[6],strNode.GetBuffer(0));
m_ShieldList.GetWindowText(strNode);
strcpy(strShape[7],strNode.GetBuffer(0));
//strcpy(strShape[0],"CHAIN_HELM");
//strcpy(strShape[1],"GORGON_LEATHER_TUNIC");
av->m_ChrManager.AddCharacter("PC_MAN.GCMDS", "FACE01", "HAIR01",vecChrPos,0.0f,strShape);
*/
//}
/*
CString strNode;
pChrmodel->BeginOutfitSetting();
m_HeadList.GetWindowText(strNode);
pChrmodel->SetOutfitSlot( "HEAD",strNode.GetBuffer(0));
m_Body0List.GetWindowText(strNode);
pChrmodel->SetOutfitSlot( "BODY", strNode);
m_Body1List.GetWindowText(strNode);
pChrmodel->SetOutfitSlot( "BODY", strNode);
m_Body2List.GetWindowText(strNode);
pChrmodel->SetOutfitSlot( "BODY", strNode);
m_HandList.GetWindowText(strNode);
pChrmodel->SetOutfitSlot( "HAND", strNode);
m_FootList.GetWindowText(strNode);
pChrmodel->SetOutfitSlot( "FOOT", strNode);
m_WeaponList.GetWindowText(strNode);
pChrmodel->SetAttachmentSlot( "WEAPON", strNode);
m_ShieldList.GetWindowText(strNode);
pChrmodel->SetAttachmentSlot( "SHIELD", strNode);
pChrmodel->EndOutfitSetting();
//pChrmodel->SetDirection( (rand()%628)*0.01f);
pChrmodel->SetDirection(0.0f);
/*
for(int i=0;i<10;i++)
{
}
*/
/* for(int iTest = 0; iTest < 300; iTest++) {
m_HeadList.SetCurSel(rand()%m_HeadList.GetCount());
m_Body0List.SetCurSel(rand()%m_Body0List.GetCount());
m_Body1List.SetCurSel(rand()%m_Body1List.GetCount());
m_Body2List.SetCurSel(rand()%m_Body2List.GetCount());
m_HandList.SetCurSel(rand()%m_HandList.GetCount());
m_FootList.SetCurSel(rand()%m_FootList.GetCount());
m_WeaponList.SetCurSel(rand()%m_WeaponList.GetCount());
m_ShieldList.SetCurSel(rand()%m_ShieldList.GetCount());
for(int cShape=0;cShape<15;cShape++)
{
strcpy(strShape[cShape],"");
}
strNode;
m_HeadList.GetWindowText(strNode);
strcpy(strShape[0],strNode.LockBuffer());
m_Body0List.GetWindowText(strNode);
strcpy(strShape[1],strNode.GetBuffer(0));
m_Body1List.GetWindowText(strNode);
strcpy(strShape[2],strNode.GetBuffer(0));
m_Body2List.GetWindowText(strNode);
strcpy(strShape[3],strNode.GetBuffer(0));
m_HandList.GetWindowText(strNode);
strcpy(strShape[4],strNode.GetBuffer(0));
m_FootList.GetWindowText(strNode);
strcpy(strShape[5],strNode.GetBuffer(0));
m_WeaponList.GetWindowText(strNode);
strcpy(strShape[11],strNode.GetBuffer(0));
m_ShieldList.GetWindowText(strNode);
strcpy(strShape[9],strNode.GetBuffer(0));
vector3 vecChrPos=vecViewPos+vector3(rand()%3000,0.0f,rand()%3000);
int AkanValue = rand() % 2;
int Sex = rand() % 2;
if(!AkanValue) {
if(Sex == 0) {
int nChrID=av->m_ChrManager.AddCharacter(0x40000000+rand()%1000,0,"rainbow","PC_MAN.GCMDS", "FACE01", "HAIR01",vecChrPos,0.0f,strShape);
memset(av->m_strModelName,0,sizeof(char) * 256);
strcpy(av->m_strModelName,"PC_MAN.GCMDS");
}
// CSceneManager::AddCharacter("Mon_Skeleton_warrior.gcmds","FACE01","HAIR01");
else if(Sex == 1) {
int nChrID=av->m_ChrManager.AddCharacter(0x40000000+rand()%1000,0,"rainbow","PC_WOMAN.GCMDS", "FACE01", "HAIR01",vecChrPos,0.0f,strShape);
memset(av->m_strModelName,0,sizeof(char) * 256);
strcpy(av->m_strModelName,"PC_WOMAN.GCMDS");
}
}
else {
if(Sex == 0) {// acan <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
int nChrID=av->m_ChrManager.AddCharacter(0x40000000+rand()%1000,1,"rainbow","PC_Akhan_A.GCMDS", "FACE01", "HAIR01",vecChrPos,0.0f,strShape);
memset(av->m_strModelName,0,sizeof(char) * 256);
strcpy(av->m_strModelName,"PC_Akhan_A.GCMDS");
}
else if(Sex == 1) {//acan <20><><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int nChrID=av->m_ChrManager.AddCharacter(0x40000000+rand()%1000,1,"rainbow","PC_Akhan_B.GCMDS", "FACE01", "HAIR01",vecChrPos,0.0f,strShape);
memset(av->m_strModelName,0,sizeof(char) * 256);
strcpy(av->m_strModelName,"PC_Akhan_B.GCMDS");
}
}
}
*/
CDialog::OnOK();
}
void CDlgCharacterCreate::OnButtonRandom()
{
// TODO: Add your control notification handler code here
srand(time(NULL));
m_HeadList.SetCurSel(rand()%m_HeadList.GetCount());
m_Body0List.SetCurSel(rand()%m_Body0List.GetCount());
m_Body1List.SetCurSel(rand()%m_Body1List.GetCount());
m_Body2List.SetCurSel(rand()%m_Body2List.GetCount());
m_HandList.SetCurSel(rand()%m_HandList.GetCount());
m_FootList.SetCurSel(rand()%m_FootList.GetCount());
m_WeaponList.SetCurSel(rand()%m_WeaponList.GetCount());
m_ShieldList.SetCurSel(rand()%m_ShieldList.GetCount());
}
/*
void CDlgCharacterCreate::OnEsf()
{
char str[] = "Esf <20><><EFBFBD><EFBFBD>(*.esf) |*.esf| <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(*.*)|*.*||";
CString strFilter = str;
CString t_name;
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CWorldCreatorView* av=(CWorldCreatorView*)mf->GetActiveView();
CFileDialog filedia(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,strFilter,this);
filedia.DoModal();
t_name = filedia.GetFileName();
strcpy((av->m_ChrManager.m_TestEsf),(t_name.LockBuffer()));
}
void CDlgCharacterCreate::OnEsf()
{
char str[] = "Esf <20><><EFBFBD><EFBFBD>(*.esf) |*.esf| <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(*.*)|*.*||";
CString strFilter = str;
CString t_name;
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CWorldCreatorView* av=(CWorldCreatorView*)mf->GetActiveView();
CFileDialog filedia(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,strFilter,this);
filedia.DoModal();
t_name = filedia.GetFileName();
strcpy((av->m_ChrManager.m_TestEsf),(t_name.LockBuffer()));
// TODO: Add your command handler code here
}
*/
void CDlgCharacterCreate::OnMonsearch()
{
// TODO: Add your control notification handler code here
char str[] = "GCMDS <20><><EFBFBD><EFBFBD>(*.gcmds) |*.gcmds| <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(*.*)|*.*||";
CString strFilter = str;
CString t_name;
UpdateData(TRUE);
CFileDialog filedia(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,strFilter,this);
filedia.DoModal();
m_MonName = filedia.GetFileName();
if(!m_MonName.IsEmpty()) {
m_MonPivot.SetEditSel(0,-1);
m_MonPivot.Clear();
/*
m_Monster = CSceneManager::AddCharacter(m_MonName,"FACE01","HARE01");
CZ3DObject *body;
matrix *bodytm;
/* m_WeaponType.AddString("NO_WEAPON");
m_WeaponType.AddString("NO_WEAPON_B");
m_WeaponType.AddString("WEAPON_ONE_HAND");
m_WeaponType.AddString("WEAPON_TWO_HAND");
m_WeaponType.AddString("WEAPON_BLUNT");
m_WeaponType.AddString("WEAPON_BOW");
m_WeaponType.AddString("WEAPON_DAGGER");
m_WeaponType.AddString("WEAPON_CROSSBOW");
m_WeaponType.SetCurSel(m_WeaponType.FindString(0,"WEAPON_ONE_HAND"));
*/
/*
for(int k=0;k<17;k++) {
switch(k) {
case 0:
//head
body = m_Monster->GetSkeletonPartObject("HEAD");
if(body != NULL) {
m_MonPivot.AddString("HEAD");
}
break;
case 1:
//NECK
body = m_Monster->GetSkeletonPartObject("NECK");
if(body != NULL) {
m_MonPivot.AddString("NECK");
}
break;
case 2:
//CHEST
body = m_Monster->GetSkeletonPartObject("CHEST");
if(body != NULL) {
m_MonPivot.AddString("CHEST");
}
break;
case 3:
//WAIST
body = m_Monster->GetSkeletonPartObject("WAIST");
if(body != NULL) {
m_MonPivot.AddString("WAIST");
}
break;
case 4:
//PELVIS
body = m_Monster->GetSkeletonPartObject("PELVIS");
if(body != NULL) {
m_MonPivot.AddString("PELVIS");
}
break;
case 5:
//R_HAND
body = m_Monster->GetSkeletonPartObject("R_HAND");
if(body != NULL) {
m_MonPivot.AddString("R_HAND");
}
break;
case 6:
//R_FOREARM
body = m_Monster->GetSkeletonPartObject("R_FOREARM");
if(body != NULL) {
m_MonPivot.AddString("R_FOREARM");
}
break;
case 7:
//R_UPPERARM
body = m_Monster->GetSkeletonPartObject("R_UPPERARM");
if(body != NULL) {
m_MonPivot.AddString("R_UPPERARM");
}
break;
case 8:
//R_THIGH
body = m_Monster->GetSkeletonPartObject("R_THIGH");
if(body != NULL) {
m_MonPivot.AddString("R_THIGH");
}
break;
case 9:
//R_CALF
body = m_Monster->GetSkeletonPartObject("R_CALF");
if(body != NULL) {
m_MonPivot.AddString("R_CALF");
}
break;
case 10:
//R_FOOT
body = m_Monster->GetSkeletonPartObject("R_FOOT");
if(body != NULL) {
m_MonPivot.AddString("R_FOOT");
}
break;
case 11:
//L_HAND
body = m_Monster->GetSkeletonPartObject("L_HAND");
if(body != NULL) {
m_MonPivot.AddString("L_HAND");
}
break;
case 12:
//L_FOREARM
body = m_Monster->GetSkeletonPartObject("L_FOREARM");
if(body != NULL) {
m_MonPivot.AddString("L_FOREARM");
}
break;
case 13:
//L_UPPERARM
body = m_Monster->GetSkeletonPartObject("L_UPPERARM");
if(body != NULL) {
m_MonPivot.AddString("L_UPPERARM");
}
break;
case 14:
//L_THIGH
body = m_Monster->GetSkeletonPartObject("L_THIGH");
if(body != NULL) {
m_MonPivot.AddString("L_THIGH");
}
break;
case 15:
//L_CALF
body = m_Monster->GetSkeletonPartObject("L_CALF");
if(body != NULL) {
m_MonPivot.AddString("L_CALF");
}
break;
case 16:
//L_FOOT
body = m_Monster->GetSkeletonPartObject("L_FOOT");
if(body != NULL) {
m_MonPivot.AddString("L_FOOT");
}
break;
}
}*/
}
UpdateData(FALSE);
}
void CDlgCharacterCreate::OnMonaddeffect()
{
char write_buf[256]= {0};
char file[256] = {0};
CString tmp;
if(!m_MonEsf.IsEmpty() && !m_MonName.IsEmpty() && (m_MonPivot.GetCurSel() >= 0)) {
m_MonPivot.GetLBText(m_MonPivot.GetCurSel(),tmp);
strcpy(file,CHARACTERDATAPATH);
// TODO: Add your control notification handler code here
strcat(file,m_MonName.LockBuffer());
FILE *fp = fopen(file,"at+");
fseek(fp,0,SEEK_END);
if(fp != NULL) {
fprintf(fp,"\nEFFECT: %s %s",tmp.LockBuffer(),m_MonEsf.LockBuffer());
fclose(fp);
}
}
}
void CDlgCharacterCreate::OnMonEsfsearch()
{
// TODO: Add your control notification handler code here
char str[] = "ESF <20><><EFBFBD><EFBFBD>(*.esf) |*.esf| <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(*.*)|*.*||";
CString strFilter = str;
CString t_name;
CFileDialog filedia(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,strFilter,this);
filedia.DoModal();
m_MonEsf = filedia.GetFileName();
UpdateData(FALSE);
}
void CDlgCharacterCreate::OnChangeEditFocus()
{
UpdateData();
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CWorldCreatorView* av=(CWorldCreatorView*)mf->GetActiveView();
if(m_nFocusCharacter >= 0 && av->m_ChrManager.m_lstCharData.num >=m_nFocusCharacter)
{
av->m_ChrManager.m_nFocusCharacter=m_nFocusCharacter;
}
// 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
}
void CDlgCharacterCreate::OnEditchangeComboSimpleselect()
{
// TODO: Add your control notification handler code here
int nSel=m_SimpleSelectList.GetCurSel();
CString strNode;
m_TempList.SetCurSel(nSel*8+0);
m_TempList.GetWindowText(strNode);
m_HeadList.SetCurSel(m_HeadList.FindString(0,strNode));
m_TempList.SetCurSel(nSel*8+1);
m_TempList.GetWindowText(strNode);
m_Body0List.SetWindowText(strNode);
m_TempList.SetCurSel(nSel*8+2);
m_TempList.GetWindowText(strNode);
m_Body1List.SetWindowText(strNode);
m_TempList.SetCurSel(nSel*8+3);
m_TempList.GetWindowText(strNode);
m_Body2List.SetWindowText(strNode);
m_TempList.SetCurSel(nSel*8+4);
m_TempList.GetWindowText(strNode);
m_HandList.SetWindowText(strNode);
m_TempList.SetCurSel(nSel*8+5);
m_TempList.GetWindowText(strNode);
m_FootList.SetWindowText(strNode);
m_TempList.SetCurSel(nSel*8+6);
m_TempList.GetWindowText(strNode);
m_WeaponList.SetWindowText(strNode);
m_TempList.SetCurSel(nSel*8+7);
m_TempList.GetWindowText(strNode);
m_ShieldList.SetWindowText(strNode);
}
void CDlgCharacterCreate::OnSelchangeComboSimpleselect()
{
// TODO: Add your control notification handler code here
int nSel=m_SimpleSelectList.GetCurSel();
CString strNode;
m_TempList.GetText(nSel*8+0,strNode);
strNode.MakeUpper();
m_HeadList.SetCurSel(m_HeadList.FindString(0,strNode));
m_TempList.GetText(nSel*8+1,strNode);
strNode.MakeUpper();
m_Body0List.SetCurSel(m_Body0List.FindString(0,strNode));
m_TempList.GetText(nSel*8+2,strNode);
strNode.MakeUpper();
m_Body1List.SetCurSel(m_Body1List.FindString(0,strNode));
m_TempList.GetText(nSel*8+3,strNode);
strNode.MakeUpper();
m_Body2List.SetCurSel(m_Body2List.FindString(0,strNode));
m_TempList.GetText(nSel*8+4,strNode);
strNode.MakeUpper();
m_HandList.SetCurSel(m_HandList.FindString(0,strNode));
m_TempList.GetText(nSel*8+5,strNode);
strNode.MakeUpper();
m_FootList.SetCurSel(m_FootList.FindString(0,strNode));
m_TempList.GetText(nSel*8+6,strNode);
strNode.MakeUpper();
m_WeaponList.SetCurSel(m_WeaponList.FindString(0,strNode));
m_TempList.GetText(nSel*8+7,strNode);
strNode.MakeUpper();
m_ShieldList.SetCurSel(m_ShieldList.FindString(0,strNode));
}
void CDlgCharacterCreate::OnButton4()
{
// TODO: Add your control notification handler code here
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CWorldCreatorView* av=(CWorldCreatorView*)mf->GetActiveView();
av->m_ChrManager.DeleteAllCharacter();
av->m_ChrManager.m_nFocusCharacter = -1;
CDialog::OnOK();
}
void CDlgCharacterCreate::OnButton1()
{
// TODO: Add your control notification handler code here
char str[] = "DDS <20><><EFBFBD><EFBFBD>(*.dds) |*.dds| <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(*.*)|*.*||";
CString strFilter = str;
CString t_name;
CFileDialog filedia(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,strFilter,this);
filedia.DoModal();
m_strNormalTex = filedia.GetFileName();
UpdateData(FALSE);
}
void CDlgCharacterCreate::OnNormalinput()
{
// TODO: Add your control notification handler code here
if(m_strNormalTex.GetLength() >= 1)
{
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CWorldCreatorView* av=(CWorldCreatorView*)mf->GetActiveView();
CShader_BumpSpec *pNode = (CShader_BumpSpec *)(av->m_SceneManager->m_ShaderManager.GetShaderPtr((char *)SHADER_STR_BUMPDIFFSPEC));
if(pNode != NULL) {
pNode->SetNormalTexture(m_strNormalTex.GetBuffer(1));
}
}
}
void CDlgCharacterCreate::OnButton2()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CWorldCreatorView* av=(CWorldCreatorView*)mf->GetActiveView();
CShader_BumpSpec *pNode = (CShader_BumpSpec *)(av->m_SceneManager->m_ShaderManager.GetShaderPtr((char *)SHADER_STR_BUMPDIFFSPEC));
if(pNode != NULL) {
pNode->SetBumpScale(m_fBumpScale);
}
CRenderOption::m_fBumpScale = m_fBumpScale;
OnReload();
}
void CDlgCharacterCreate::OnReload()
{
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CWorldCreatorView* av=(CWorldCreatorView*)mf->GetActiveView();
av->m_ChrManager.DeleteAllCharacter();
av->m_ChrManager.m_nFocusCharacter = -1;
UpdateData(TRUE);
mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
av=(CWorldCreatorView*)mf->GetActiveView();
matrix *matPos=av->m_BaseGraphicLayer.m_ViewCamera.GetMatPosition();
vector3 vecViewPos=matPos->GetLoc();
char strWeaponType[256];
char strShape[15][256];
for(int cShape=0;cShape<15;cShape++)
{
strcpy(strShape[cShape],"");
}
CString strNode;
m_HeadList.GetWindowText(strNode);
strcpy(strShape[0],strNode.LockBuffer());
m_Body0List.GetWindowText(strNode);
strcpy(strShape[1],strNode.GetBuffer(0));
m_Body1List.GetWindowText(strNode);
strcpy(strShape[2],strNode.GetBuffer(0));
m_Body2List.GetWindowText(strNode);
strcpy(strShape[3],strNode.GetBuffer(0));
m_HandList.GetWindowText(strNode);
strcpy(strShape[4],strNode.GetBuffer(0));
m_FootList.GetWindowText(strNode);
strcpy(strShape[5],strNode.GetBuffer(0));
m_WeaponList.GetWindowText(strNode);
strcpy(strShape[11],strNode.GetBuffer(0));
m_ShieldList.GetWindowText(strNode);
strcpy(strShape[9],strNode.GetBuffer(0));
int nChrID=av->m_ChrManager.AddCharacter(rand()%1000,0,"rainbow",av->m_strModelName, "FACE01", "HAIR01",vecViewPos,0.0f,strShape);
av->m_ChrManager.m_nFocusCharacter=0;
CDialog::OnOK();
}
void CDlgCharacterCreate::OnAkan()
{
// TODO: Add your control notification handler code here
}