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>
270 lines
9.3 KiB
C++
270 lines
9.3 KiB
C++
// AkhanChrSelect2.cpp: implementation of the CAkhanChrSelect2 class.
|
||
//
|
||
//////////////////////////////////////////////////////////////////////
|
||
|
||
#include "ClientMain.h"
|
||
#include "AkhanGUI.h"
|
||
#include "AkhanChrSelect2.h"
|
||
#include "FrameTimer.h"
|
||
#include "GUIMessageBoxManager.h"
|
||
|
||
//////////////////////////////////////////////////////////////////////
|
||
// Construction/Destruction
|
||
//////////////////////////////////////////////////////////////////////
|
||
|
||
CAkhanChrSelect2::CAkhanChrSelect2()
|
||
{
|
||
|
||
}
|
||
|
||
CAkhanChrSelect2::~CAkhanChrSelect2()
|
||
{
|
||
|
||
}
|
||
|
||
void CAkhanChrSelect2::InitValue(void)
|
||
{
|
||
m_dwChrDeleteResult = 0;
|
||
m_dwEndTimer = 0xFFFFFFFF;
|
||
g_ClientMain.m_bDeleteChar = FALSE;
|
||
}
|
||
|
||
BOOL CAkhanChrSelect2::Init(unsigned short x, unsigned short y)
|
||
{
|
||
CSprite *lpSprite;
|
||
lpSprite = new CSprite;
|
||
lpSprite->Create(0, 457, 0, 0, 234, 143, g_ClientMain.m_lpInterface->m_lstTexture[1]);
|
||
m_lstSprite.push_back(lpSprite);
|
||
|
||
lpSprite = new CSprite;
|
||
lpSprite->Create(617, 462, 73, 0, 256, 143, g_ClientMain.m_lpInterface->m_lstTexture[2]);
|
||
m_lstSprite.push_back(lpSprite);
|
||
|
||
CGUIButton *lpButton;
|
||
lpButton = new CGUIButton;
|
||
lpButton->m_nMethod = BUTTON_NORMAL;
|
||
lpButton->m_lpNormalButton = new CSprite;
|
||
lpButton->m_lpNormalButton->Create(61, 479, 0, 143, 163, 177, g_ClientMain.m_lpInterface->m_lstTexture[1]);
|
||
lpButton->m_lpOnMouseButton = new CSprite;
|
||
lpButton->m_lpOnMouseButton->Create(61, 479, 0, 177, 163, 211, g_ClientMain.m_lpInterface->m_lstTexture[1]);
|
||
lpButton->m_lpClickMouseButton = new CSprite;
|
||
lpButton->m_lpClickMouseButton->Create(61, 479, 0, 211, 163, 245, g_ClientMain.m_lpInterface->m_lstTexture[1]);
|
||
lpButton->SetTooltip(&m_TooltipManager, "");
|
||
lpButton->SetMove(x, y);
|
||
m_ButtonManager.AddButton(lpButton);
|
||
|
||
lpButton = new CGUIButton;
|
||
lpButton->m_nMethod = BUTTON_NORMAL;
|
||
lpButton->m_lpNormalButton = new CSprite;
|
||
lpButton->m_lpNormalButton->Create(31, 527, 144, 154, 256, 188, g_ClientMain.m_lpInterface->m_lstTexture[2]);
|
||
lpButton->m_lpOnMouseButton = new CSprite;
|
||
lpButton->m_lpOnMouseButton->Create(31, 527, 144, 188, 256, 222, g_ClientMain.m_lpInterface->m_lstTexture[2]);
|
||
lpButton->m_lpClickMouseButton = new CSprite;
|
||
lpButton->m_lpClickMouseButton->Create(31, 527, 144, 222, 256, 256, g_ClientMain.m_lpInterface->m_lstTexture[2]);
|
||
lpButton->SetTooltip(&m_TooltipManager, "");
|
||
lpButton->SetMove(x, y);
|
||
m_ButtonManager.AddButton(lpButton);
|
||
|
||
lpButton = new CGUIButton;
|
||
lpButton->m_nMethod = BUTTON_NORMAL;
|
||
lpButton->m_lpNormalButton = new CSprite;
|
||
lpButton->m_lpNormalButton->Create(624, 526, 0, 154, 144, 188, g_ClientMain.m_lpInterface->m_lstTexture[2]);
|
||
lpButton->m_lpOnMouseButton = new CSprite;
|
||
lpButton->m_lpOnMouseButton->Create(624, 526, 0, 188, 144, 222, g_ClientMain.m_lpInterface->m_lstTexture[2]);
|
||
lpButton->m_lpClickMouseButton = new CSprite;
|
||
lpButton->m_lpClickMouseButton->Create(624, 526, 0, 222, 144, 256, g_ClientMain.m_lpInterface->m_lstTexture[2]);
|
||
lpButton->SetTooltip(&m_TooltipManager, "");
|
||
lpButton->SetMove(x, y);
|
||
m_ButtonManager.AddButton(lpButton);
|
||
|
||
m_dwWindowKind = WINDOW_FIX;
|
||
|
||
m_rcWindowSize.left = x; m_rcWindowSize.top = y;
|
||
m_rcWindowSize.right = x; m_rcWindowSize.bottom = y;
|
||
|
||
m_rcMoveEdge.left = x; m_rcMoveEdge.top = y;
|
||
m_rcMoveEdge.right = x; m_rcMoveEdge.bottom = y;
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
BOOL CAkhanChrSelect2::Update(BOOL &bClick, BOOL &bEdge)
|
||
{
|
||
g_MessageBoxManager.Update();
|
||
|
||
if(g_ClientMain.m_bSelectChar) return TRUE;
|
||
|
||
if(m_dwEndTimer != 0xFFFFFFFF)
|
||
{
|
||
if(CFrameTimer::GetUpdateTimer(m_dwEndTimer) >= 1.0f)
|
||
{
|
||
g_ClientMain.m_dwClientState = CHRSELECT_INITSELECT;
|
||
g_MessageBoxManager.DestroyList();
|
||
}
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
if(m_dwChrDeleteResult & MB_YES)
|
||
{
|
||
g_ClientMain.m_bDeleteChar = TRUE;
|
||
g_ClientMain.m_Network.SendDeleteChar(g_ClientMain.m_dwSelectChr, g_ClientMain.m_scLoginChar[g_ClientMain.m_dwSelectChr].UID);
|
||
|
||
CGUIMessageBox *lpMessage;
|
||
lpMessage = new CGUIMessageBox;
|
||
lpMessage->Create(g_StringTable.m_strString[120]);
|
||
lpMessage->SetTimer(100000);
|
||
|
||
m_dwChrDeleteResult = 0;
|
||
|
||
return TRUE;
|
||
} else if(m_dwChrDeleteResult & MB_NO || m_dwChrDeleteResult & MB_EXIT)
|
||
{
|
||
m_dwChrDeleteResult = 0;
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
if(g_ClientMain.m_Network.GetState() != NS_NOWAITING)
|
||
return TRUE;
|
||
|
||
if(g_ClientMain.m_bDeleteChar)
|
||
{
|
||
if(g_ClientMain.m_Network.GetState() == NS_NOWAITING)
|
||
{
|
||
if(!g_ClientMain.m_Network.GetError())
|
||
{
|
||
for(int cCash=0;cCash<g_CharacterData.m_ChrCashList.num;cCash++)
|
||
{
|
||
if(g_CharacterData.m_lstCharData[g_ClientMain.m_dwSelectChr]->m_lpChrModel==g_CharacterData.m_ChrCashList[cCash].m_lpChrModel)
|
||
{
|
||
g_ClientMain.m_lpSceneManager->DeleteCharacter(g_CharacterData.m_lstCharData[g_ClientMain.m_dwSelectChr]->m_lpChrModel);
|
||
g_CharacterData.m_ChrCashList[cCash].m_lpChrModel=g_CharacterData.m_lstCharData[g_ClientMain.m_dwSelectChr]->m_lpChrModel = g_ClientMain.m_lpSceneManager->AddCharacter("PC_Akhan_A.GCMDS", "FACE01", "HAIR01");
|
||
|
||
for(int j = 0; j < 15; j++)
|
||
{
|
||
strcpy(g_CharacterData.m_lstCharData[g_ClientMain.m_dwSelectChr]->m_strShape[j], "");
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
|
||
g_CharacterData.m_lstCharData[g_ClientMain.m_dwSelectChr]->m_lpChrModel->SetPosition(g_ClientMain.m_vecCharSelectPos[g_ClientMain.m_dwSelectChr]);
|
||
g_CharacterData.m_lstCharData[g_ClientMain.m_dwSelectChr]->m_lpChrModel->SetDirection(0.0f);
|
||
// g_CharacterData.m_lstCharData[g_ClientMain.m_dwSelectChr]->m_lpChrModel->SetMotion("WAIT");
|
||
g_CharacterData.m_lstCharData[g_ClientMain.m_dwSelectChr]->InitWeapon(0);
|
||
|
||
|
||
m_dwEndTimer = CFrameTimer::Regist(1.0f);
|
||
|
||
char strCameraPath[MAX_PATH];
|
||
switch(g_ClientMain.m_dwSelectChr)
|
||
{
|
||
case 0:
|
||
sprintf(strCameraPath, "%s\\1stCSzo_a.zca", g_ClientMain.m_strClientPath);
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->Unload();
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->Load(strCameraPath);
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->SetTotalAniTime(1000.0f);
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->StartPlay();
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->PlayAnimate();
|
||
break;
|
||
|
||
case 1:
|
||
sprintf(strCameraPath, "%s\\2ndCSzo_a.zca", g_ClientMain.m_strClientPath);
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->Unload();
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->Load(strCameraPath);
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->SetTotalAniTime(1000.0f);
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->StartPlay();
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->PlayAnimate();
|
||
break;
|
||
|
||
case 2:
|
||
sprintf(strCameraPath, "%s\\3rdCSzo_a.zca", g_ClientMain.m_strClientPath);
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->Unload();
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->Load(strCameraPath);
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->SetTotalAniTime(1000.0f);
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->StartPlay();
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->PlayAnimate();
|
||
break;
|
||
}
|
||
|
||
g_ClientMain.m_dwSelectChr = 0xFFFFFFFF;
|
||
} else
|
||
{
|
||
g_ClientMain.m_bDeleteChar = FALSE;
|
||
}
|
||
}
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
m_ButtonManager.Update();
|
||
m_TooltipManager.Update();
|
||
|
||
if(m_ButtonManager.m_lstButton[0]->m_nState == BUTTON_CLICK) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
{
|
||
CGUIMessageBox *lpMessage;
|
||
lpMessage = new CGUIMessageBox;
|
||
lpMessage->Create(g_StringTable.m_strString[121], MB_EXIT | MB_YES | MB_NO);
|
||
lpMessage->SetResult(&m_dwChrDeleteResult);
|
||
m_dwChrDeleteResult = 0;
|
||
|
||
return TRUE;
|
||
} else if(m_ButtonManager.m_lstButton[1]->m_nState == BUTTON_CLICK) // <20><><EFBFBD><EFBFBD>
|
||
{
|
||
char strCameraPath[MAX_PATH];
|
||
|
||
m_dwEndTimer = CFrameTimer::Regist(1.0f);
|
||
|
||
switch(g_ClientMain.m_dwSelectChr)
|
||
{
|
||
case 0:
|
||
sprintf(strCameraPath, "%s\\1stCSzo_a.zca", g_ClientMain.m_strClientPath);
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->Unload();
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->Load(strCameraPath);
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->SetTotalAniTime(1000.0f);
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->StartPlay();
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->PlayAnimate();
|
||
break;
|
||
|
||
case 1:
|
||
sprintf(strCameraPath, "%s\\2ndCSzo_a.zca", g_ClientMain.m_strClientPath);
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->Unload();
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->Load(strCameraPath);
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->SetTotalAniTime(1000.0f);
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->StartPlay();
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->PlayAnimate();
|
||
break;
|
||
|
||
case 2:
|
||
sprintf(strCameraPath, "%s\\3rdCSzo_a.zca", g_ClientMain.m_strClientPath);
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->Unload();
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->Load(strCameraPath);
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->SetTotalAniTime(1000.0f);
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->StartPlay();
|
||
g_ClientMain.m_lpSceneManager->GetCamera()->PlayAnimate();
|
||
break;
|
||
}
|
||
|
||
g_ClientMain.m_dwSelectChr = 0xFFFFFFFF;
|
||
|
||
return TRUE;
|
||
} else if(m_ButtonManager.m_lstButton[2]->m_nState == BUTTON_CLICK) // <20><><EFBFBD><EFBFBD><EEB0A1>
|
||
{
|
||
g_ClientMain.m_Network.CharSelect(g_ClientMain.m_scLoginChar[g_ClientMain.m_dwSelectChr].UID);
|
||
}
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
void CAkhanChrSelect2::Render(LPDIRECT3DDEVICE8 lpD3DDevice)
|
||
{
|
||
if(m_dwEndTimer != 0xFFFFFFFF) return;
|
||
|
||
m_lstSprite[0]->Render(lpD3DDevice, m_cAlpha);
|
||
m_lstSprite[1]->Render(lpD3DDevice, m_cAlpha);
|
||
|
||
m_ButtonManager.Render(lpD3DDevice, m_cAlpha);
|
||
g_MessageBoxManager.Render(lpD3DDevice);
|
||
}
|