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

230 lines
9.5 KiB
C++

// HumanMiniStates.cpp: implementation of the CHumanMiniStates class.
//
//////////////////////////////////////////////////////////////////////
#include "ClientMain.h"
#include "WinInput.h"
#include "GUITextEdit.h"
#include "HumanMiniStates.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CHumanMiniStates::CHumanMiniStates()
{
}
CHumanMiniStates::~CHumanMiniStates()
{
}
BOOL CHumanMiniStates::Init(unsigned short x, unsigned short y)
{
CSprite *lpSprite;
lpSprite = new CSprite;
lpSprite->Create(x, y, 0, 0, 150, 120, g_ClientMain.m_lpInterface->m_lstTexture[0]);
m_lstSprite.push_back(lpSprite);
lpSprite = new CSprite;
lpSprite->Create(7, 51, 154, 2, 254, 11, g_ClientMain.m_lpInterface->m_lstTexture[0]);
m_lstSprite.push_back(lpSprite);
lpSprite = new CSprite;
lpSprite->Create(7, 71, 154, 14, 254, 23, g_ClientMain.m_lpInterface->m_lstTexture[0]);
m_lstSprite.push_back(lpSprite);
lpSprite = new CSprite;
lpSprite->Create(7, 91, 4, 123, 141, 126, g_ClientMain.m_lpInterface->m_lstTexture[0]);
m_lstSprite.push_back(lpSprite);
CGUITooltipButton *lpTooltip;
lpTooltip = new CGUITooltipButton;
lpTooltip->InitTooltip(g_StringTable.m_strString[190]);
lpTooltip->SetRect(6, 7, 93, 23);
m_TooltipManager.AddTooltip(lpTooltip);
lpTooltip = new CGUITooltipButton;
lpTooltip->InitTooltip(g_StringTable.m_strString[191]);
lpTooltip->SetRect(6, 27, 93, 43);
m_TooltipManager.AddTooltip(lpTooltip);
lpTooltip = new CGUITooltipButton;
lpTooltip->InitTooltip(g_StringTable.m_strString[192]);
lpTooltip->SetRect(118, 27, 144, 43);
m_TooltipManager.AddTooltip(lpTooltip);
lpTooltip = new CGUITooltipButton;
lpTooltip->InitTooltip(g_StringTable.m_strString[193]);
lpTooltip->SetRect(7, 51, 107, 60);
m_TooltipManager.AddTooltip(lpTooltip);
lpTooltip = new CGUITooltipButton;
lpTooltip->InitTooltip(g_StringTable.m_strString[194]);
lpTooltip->SetRect(7, 71, 107, 80);
m_TooltipManager.AddTooltip(lpTooltip);
lpTooltip = new CGUITooltipButton;
lpTooltip->InitTooltip(g_StringTable.m_strString[195]);
lpTooltip->SetRect(7, 91, 144, 94);
m_TooltipManager.AddTooltip(lpTooltip);
lpTooltip = new CGUITooltipButton;
lpTooltip->InitTooltip(g_StringTable.m_strString[196]);
lpTooltip->SetRect(35, 99, 71,115);
m_TooltipManager.AddTooltip(lpTooltip);
lpTooltip = new CGUITooltipButton;
lpTooltip->InitTooltip(g_StringTable.m_strString[197]);
lpTooltip->SetRect(108, 99, 144, 115);
m_TooltipManager.AddTooltip(lpTooltip);
m_dwWindowKind = WINDOW_FIX;
m_rcWindowSize.left = x; m_rcWindowSize.top = y;
m_rcWindowSize.right = x + 150; m_rcWindowSize.bottom = y + 120;
m_rcMoveEdge.left = x; m_rcMoveEdge.top = y;
m_rcMoveEdge.right = x + 150; m_rcMoveEdge.bottom = y + 20;
return TRUE;
}
BOOL CHumanMiniStates::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;
}
}
POINT *ptMousePos = g_DeviceInput.GetMousePosition();
if(m_dwWindowKind == WINDOW_FLOAT)
{
if(WindowMoving(*ptMousePos))
{
m_lstSprite[0]->SetPosition(m_ptWindowMovePos.x, m_ptWindowMovePos.y);
}
}
char strString[MAX_PATH];
sprintf(strString, "%d / %d", g_ClientMain.m_csStatus.m_Info.HP, g_ClientMain.m_csStatus.m_MaxHP + g_ClientMain.m_csStatus.m_lAddMaxHP);
((CGUITooltipButton *)m_TooltipManager.m_lstTooltip[3])->InitTooltip(strString);
m_lstSprite[1]->SetRate((float)g_ClientMain.m_csStatus.m_Info.HP / (float)(g_ClientMain.m_csStatus.m_MaxHP + g_ClientMain.m_csStatus.m_lAddMaxHP));
sprintf(strString, "%d / %d", g_ClientMain.m_csStatus.m_Info.MP, g_ClientMain.m_csStatus.m_MaxMP + g_ClientMain.m_csStatus.m_lAddMaxMP);
((CGUITooltipButton *)m_TooltipManager.m_lstTooltip[4])->InitTooltip(strString);
m_lstSprite[2]->SetRate((float)g_ClientMain.m_csStatus.m_Info.MP / (float)(g_ClientMain.m_csStatus.m_MaxMP + g_ClientMain.m_csStatus.m_lAddMaxMP));
unsigned long dwExp, dwExpMax;
char strExp[2], strExpMax[2];
if(1000000 < g_ClientMain.m_csStatus.m_Info.Exp && g_ClientMain.m_csStatus.m_Info.Exp <= 1000000000)
{
dwExp = g_ClientMain.m_csStatus.m_Info.Exp / 1000;
strcpy(strExp, "K");
} else if(1000000000 < g_ClientMain.m_csStatus.m_Info.Exp && g_ClientMain.m_csStatus.m_Info.Exp <= 1000000000000)
{
dwExp = g_ClientMain.m_csStatus.m_Info.Exp / 1000000;
strcpy(strExp, "M");
} else if(1000000000000 < g_ClientMain.m_csStatus.m_Info.Exp && g_ClientMain.m_csStatus.m_Info.Exp <= 1000000000000000)
{
dwExp = g_ClientMain.m_csStatus.m_Info.Exp / 1000000000;
strcpy(strExp, "T");
} else
{
dwExp = g_ClientMain.m_csStatus.m_Info.Exp;
strcpy(strExp, "");
}
if(1000000 < g_ClientMain.m_csStatus.m_llExpMax && g_ClientMain.m_csStatus.m_llExpMax <= 1000000000)
{
dwExpMax = g_ClientMain.m_csStatus.m_llExpMax / 1000;
strcpy(strExpMax, "K");
} else if(1000000000 < g_ClientMain.m_csStatus.m_llExpMax && g_ClientMain.m_csStatus.m_llExpMax <= 1000000000000)
{
dwExpMax = g_ClientMain.m_csStatus.m_llExpMax / 1000000;
strcpy(strExpMax, "M");
} else if(1000000000000 < g_ClientMain.m_csStatus.m_llExpMax && g_ClientMain.m_csStatus.m_llExpMax <= 1000000000000000)
{
dwExpMax = g_ClientMain.m_csStatus.m_llExpMax / 1000000000;
strcpy(strExpMax, "T");
} else
{
dwExpMax = g_ClientMain.m_csStatus.m_llExpMax;
strcpy(strExpMax, "");
}
sprintf(strString, "%d%s / %d%s", dwExp, strExp, dwExpMax, strExpMax);
((CGUITooltipButton *)m_TooltipManager.m_lstTooltip[5])->InitTooltip(strString);
m_lstSprite[3]->SetRate((float)g_ClientMain.m_csStatus.m_Info.Exp / (float)g_ClientMain.m_csStatus.m_llExpMax);
m_TooltipManager.Update(m_rcWindowSize.left, m_rcWindowSize.top);
return TRUE;
}
void CHumanMiniStates::Render(LPDIRECT3DDEVICE8 lpD3DDevice)
{
m_lstSprite[0]->Render(lpD3DDevice, m_cAlpha);
RECT rcRect;
char strString[MAX_PATH];
SetRect(&rcRect, 6 + m_rcWindowSize.left, 7 + m_rcWindowSize.top, 93 + m_rcWindowSize.left, 23 + m_rcWindowSize.top);
g_TextEdit.DrawText(g_ClientMain.m_csStatus.m_Info.Name, &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, m_cAlpha));
SetRect(&rcRect, 6 + m_rcWindowSize.left, 27 + m_rcWindowSize.top, 93 + m_rcWindowSize.left, 43 + m_rcWindowSize.top);
g_TextEdit.DrawText(g_ClientMain.m_lpCommonInterface->GetClassName(g_ClientMain.m_csStatus.m_Info.Class), &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, m_cAlpha));
SetRect(&rcRect, 118 + m_rcWindowSize.left, 29 + m_rcWindowSize.top, 144 + m_rcWindowSize.left, 43 + m_rcWindowSize.top);
sprintf(strString, "%d", g_ClientMain.m_csStatus.m_Info.Level);
g_TextEdit.DrawText(strString, &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, m_cAlpha));
SetRect(&rcRect, 112 + m_rcWindowSize.left, 49 + m_rcWindowSize.top, 144 + m_rcWindowSize.left, 63 + m_rcWindowSize.top);
sprintf(strString, "%d", g_ClientMain.m_csStatus.m_Info.HP);
g_TextEdit.DrawText(strString, &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, m_cAlpha));
SetRect(&rcRect, 112 + m_rcWindowSize.left, 69 + m_rcWindowSize.top, 144 + m_rcWindowSize.left, 83 + m_rcWindowSize.top);
sprintf(strString, "%d", g_ClientMain.m_csStatus.m_Info.MP);
g_TextEdit.DrawText(strString, &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, m_cAlpha));
SetRect(&rcRect, 35 + m_rcWindowSize.left, 101 + m_rcWindowSize.top, 71 + m_rcWindowSize.left, 115 + m_rcWindowSize.top);
sprintf(strString, "%d", g_ClientMain.m_csStatus.m_lMinDamage + (g_ClientMain.m_csStatus.m_lMaxDamage - g_ClientMain.m_csStatus.m_lMinDamage) / 2);
long m_lDamage = g_ClientMain.m_csStatus.m_lMinDamage + (g_ClientMain.m_csStatus.m_lMaxDamage - g_ClientMain.m_csStatus.m_lMinDamage) / 2;
long m_lRealDamage = g_ClientMain.m_csStatus.m_lRealMinDamage + (g_ClientMain.m_csStatus.m_lRealMaxDamage - g_ClientMain.m_csStatus.m_lRealMinDamage) / 2;
if(m_lDamage < m_lRealDamage)
{
g_TextEdit.DrawText(strString, &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 0, 0, m_cAlpha));
} else if(m_lDamage > m_lRealDamage)
{
g_TextEdit.DrawText(strString, &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(0, 255, 0, m_cAlpha));
} else
{
g_TextEdit.DrawText(strString, &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, m_cAlpha));
}
SetRect(&rcRect, 108 + m_rcWindowSize.left, 101 + m_rcWindowSize.top, 144 + m_rcWindowSize.left, 115 + m_rcWindowSize.top);
sprintf(strString, "%d", g_ClientMain.m_csStatus.m_lDefensePower);
if(g_ClientMain.m_csStatus.m_lDefensePower < g_ClientMain.m_csStatus.m_lRealDefensePower)
{
g_TextEdit.DrawText(strString, &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 0, 0, m_cAlpha));
} else if(g_ClientMain.m_csStatus.m_lDefensePower > g_ClientMain.m_csStatus.m_lRealDefensePower)
{
g_TextEdit.DrawText(strString, &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(0, 255, 0, m_cAlpha));
} else
{
g_TextEdit.DrawText(strString, &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, m_cAlpha));
}
m_lstSprite[1]->Render(lpD3DDevice, m_cAlpha, m_rcWindowSize.left, m_rcWindowSize.top);
m_lstSprite[2]->Render(lpD3DDevice, m_cAlpha, m_rcWindowSize.left, m_rcWindowSize.top);
m_lstSprite[3]->Render(lpD3DDevice, m_cAlpha, m_rcWindowSize.left, m_rcWindowSize.top);
}