Files
Client/GameTools/NeoRylClient/HumanSimpleParty.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

178 lines
5.5 KiB
C++

// HumanSimpleParty.cpp: implementation of the CHumanSimpleParty class.
//
//////////////////////////////////////////////////////////////////////
#include "ClientMain.h"
#include "GUITextEdit.h"
#include "HumanSimpleParty.h"
#include "CharacterControl.h"
#include "WinInput.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CHumanSimpleParty::CHumanSimpleParty()
{
}
CHumanSimpleParty::~CHumanSimpleParty()
{
}
BOOL CHumanSimpleParty::Init(unsigned short x, unsigned short y)
{
CSprite *lpSprite;
lpSprite = new CSprite;
lpSprite->Create(x, 0, 0, 0, 126, 22, g_ClientMain.m_lpInterface->m_lstTexture[28]);
m_lstSprite.push_back(lpSprite);
lpSprite = new CSprite; // HP
lpSprite->Create(x + 99, 5, 32, 22, 53, 26, g_ClientMain.m_lpInterface->m_lstTexture[28]);
m_lstSprite.push_back(lpSprite);
lpSprite = new CSprite; // MP
lpSprite->Create(x + 99, 10, 32, 26, 53, 30, g_ClientMain.m_lpInterface->m_lstTexture[28]);
m_lstSprite.push_back(lpSprite);
lpSprite = new CSprite; // Àå½Ä
lpSprite->Create(x + 76, 0, 76, 22, 126, 58, g_ClientMain.m_lpInterface->m_lstTexture[28]);
m_lstSprite.push_back(lpSprite);
m_dwWindowKind = WINDOW_FIX;
m_rcWindowSize.left = x; m_rcWindowSize.top = y;
m_rcWindowSize.right = x + 126; m_rcWindowSize.bottom = y + 22;
m_rcMoveEdge.left = x; m_rcMoveEdge.top = y;
m_rcMoveEdge.right = x + 126; m_rcMoveEdge.bottom = y + 22;
InitValue();
return TRUE;
}
void CHumanSimpleParty::InitValue(void)
{
}
BOOL CHumanSimpleParty::Update(BOOL &bClick, BOOL &bEdge)
{
if(g_DeviceInput.InRect(m_rcWindowSize.left, m_rcWindowSize.top, m_rcWindowSize.right, m_rcWindowSize.bottom))
{
bEdge = TRUE;
if(g_DeviceInput.GetIsLeftMouseDown() || g_DeviceInput.GetIsMiddleMouseDown() || g_DeviceInput.GetIsRightMouseDown() ||
g_DeviceInput.GetIsLeftMousePress() || g_DeviceInput.GetIsMiddleMousePress() || g_DeviceInput.GetIsRightMousePress() ||
g_DeviceInput.GetIsLeftMouseUp() || g_DeviceInput.GetIsMiddleMouseUp() || g_DeviceInput.GetIsRightMouseUp())
{
bClick = TRUE;
}
}
return TRUE;
}
void CHumanSimpleParty::Render(LPDIRECT3DDEVICE8 lpD3DDevice)
{
RECT rcRect;
CCreature *lpCreature;
char strTempName[16], strDot[4] = "...";
unsigned long lengthDot = g_TextEdit.GetStringLength(strDot);
int count = 1;
for(int i = 0; i < g_ClientMain.m_csStatus.m_PartyInfo.m_cMemberNum; i++)
{
if(g_ClientMain.m_csStatus.m_PartyInfo.ServerID[i])
{
if(g_ClientMain.m_csStatus.m_PartyInfo.MemberCID[i] == g_ClientMain.m_dwMyChrID)
{
m_lstSprite[0]->Render(lpD3DDevice, 0xFF, 0, 0);
SetRect(&rcRect, m_rcWindowSize.left + 3, 0, m_rcWindowSize.left + 93, 22);
if(g_TextEdit.GetStringLength(g_ClientMain.m_csStatus.m_PartyInfo.Name[i]) > 90)
{
int nNumUnicode = 0;
for(int j = 0; j < 15; j++)
{
strTempName[j] = g_ClientMain.m_csStatus.m_PartyInfo.Name[i][j];
strTempName[j + 1] = '\0';
if(strTempName[j] & 0x80) nNumUnicode++;
if(g_TextEdit.GetStringLength(strTempName) + lengthDot > 90)
{
if(nNumUnicode % 2)
{
memcpy(&strTempName[j], strDot, 4);
} else
{
memcpy(&strTempName[j - 1], strDot, 4);
}
break;
}
}
g_TextEdit.DrawText(strTempName, &rcRect, DT_VCENTER | DT_LEFT, D3DCOLOR_RGBA(255, 255, 255, 255));
} else
{
g_TextEdit.DrawText(g_ClientMain.m_csStatus.m_PartyInfo.Name[i], &rcRect, DT_VCENTER | DT_LEFT, D3DCOLOR_RGBA(255, 255, 255, 255));
}
m_lstSprite[1]->SetRate(g_ClientMain.m_csStatus.m_Info.HP / (float)g_ClientMain.m_csStatus.m_MaxHP);
m_lstSprite[1]->Render(lpD3DDevice, 0xFF, 0, 0);
m_lstSprite[2]->SetRate(g_ClientMain.m_csStatus.m_Info.MP / (float)g_ClientMain.m_csStatus.m_MaxMP);
m_lstSprite[2]->Render(lpD3DDevice, 0xFF, 0, 0);
} else
{
m_lstSprite[0]->Render(lpD3DDevice, 0xFF, 0, count * 22);
SetRect(&rcRect, m_rcWindowSize.left + 3, count * 22, m_rcWindowSize.left + 93, count * 22 + 22);
if(g_TextEdit.GetStringLength(g_ClientMain.m_csStatus.m_PartyInfo.Name[i]) > 90)
{
int nNumUnicode = 0;
for(int j = 0; j < 15; j++)
{
strTempName[j] = g_ClientMain.m_csStatus.m_PartyInfo.Name[i][j];
strTempName[j + 1] = '\0';
if(strTempName[j] & 0x80) nNumUnicode++;
if(g_TextEdit.GetStringLength(strTempName) + lengthDot > 90)
{
if(nNumUnicode % 2)
{
memcpy(&strTempName[j], strDot, 4);
} else
{
memcpy(&strTempName[j - 1], strDot, 4);
}
break;
}
}
g_TextEdit.DrawText(strTempName, &rcRect, DT_VCENTER | DT_LEFT, D3DCOLOR_RGBA(255, 255, 255, 255));
} else
{
g_TextEdit.DrawText(g_ClientMain.m_csStatus.m_PartyInfo.Name[i], &rcRect, DT_VCENTER | DT_LEFT, D3DCOLOR_RGBA(255, 255, 255, 255));
}
lpCreature = g_CharacterData.GetCreature(g_ClientMain.m_csStatus.m_PartyInfo.MemberCID[i]);
if(lpCreature)
{
if(lpCreature->m_wMaxHP != 0)
{
m_lstSprite[1]->SetRate(lpCreature->m_sCurrHP / (float)lpCreature->m_wMaxHP);
m_lstSprite[1]->Render(lpD3DDevice, 0xFF, 0, count * 22);
}
if(lpCreature->m_wMaxMP != 0)
{
m_lstSprite[2]->SetRate(lpCreature->m_sCurrMP / (float)lpCreature->m_wMaxMP);
m_lstSprite[2]->Render(lpD3DDevice, 0xFF, 0, count * 22);
}
}
count++;
}
}
}
if(g_ClientMain.m_csStatus.m_PartyInfo.m_cMemberNum)
m_lstSprite[3]->Render(lpD3DDevice, 0xFF, 0, count * 22);
else
m_lstSprite[3]->Render(lpD3DDevice, 0xFF, 0, 0);
}