// HumanStatus.cpp: implementation of the CHumanStatus class. // ////////////////////////////////////////////////////////////////////// #include "ClientMain.h" #include "HumanStatus.h" #include "GUITextEdit.h" #include "WinInput.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CHumanStatus::CHumanStatus() { } CHumanStatus::~CHumanStatus() { } BOOL CHumanStatus::Init(unsigned short x, unsigned short y) { CSprite *lpSprite; lpSprite = new CSprite; lpSprite->Create(x, y, 0, 0, 222, 256, g_ClientMain.m_lpInterface->m_lstTexture[4]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; lpSprite->Create(x, y + 256, 0, 0, 222, 224, g_ClientMain.m_lpInterface->m_lstTexture[5]); m_lstSprite.push_back(lpSprite); CGUIButton *lpButton; lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(93, 239, 0, 224, 16, 239, g_ClientMain.m_lpInterface->m_lstTexture[5]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(93, 239, 16, 224, 32, 239, g_ClientMain.m_lpInterface->m_lstTexture[5]); lpButton->SetTooltip(&m_TooltipManager, "1"); lpButton->SetMove(x, y); m_ButtonManager.AddButton(lpButton); lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(191, 239, 0, 224, 16, 239, g_ClientMain.m_lpInterface->m_lstTexture[5]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(191, 239, 16, 224, 32, 239, g_ClientMain.m_lpInterface->m_lstTexture[5]); lpButton->SetTooltip(&m_TooltipManager, "2"); lpButton->SetMove(x, y); m_ButtonManager.AddButton(lpButton); lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(93, 266, 0, 224, 16, 239, g_ClientMain.m_lpInterface->m_lstTexture[5]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(93, 266, 16, 224, 32, 239, g_ClientMain.m_lpInterface->m_lstTexture[5]); lpButton->SetTooltip(&m_TooltipManager, "3"); lpButton->SetMove(x, y); m_ButtonManager.AddButton(lpButton); lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(191, 266, 0, 224, 16, 239, g_ClientMain.m_lpInterface->m_lstTexture[5]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(191, 266, 16, 224, 32, 239, g_ClientMain.m_lpInterface->m_lstTexture[5]); lpButton->SetTooltip(&m_TooltipManager, "4"); lpButton->SetMove(x, y); m_ButtonManager.AddButton(lpButton); lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(93, 292, 0, 224, 16, 239, g_ClientMain.m_lpInterface->m_lstTexture[5]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(93, 292, 16, 224, 32, 239, g_ClientMain.m_lpInterface->m_lstTexture[5]); lpButton->SetTooltip(&m_TooltipManager, "5"); lpButton->SetMove(x, y); m_ButtonManager.AddButton(lpButton); lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(190, 1, 0, 0, 28, 28, g_ClientMain.m_lpInterface->m_lpCommonWindow); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(190, 1, 28, 0, 56, 28, g_ClientMain.m_lpInterface->m_lpCommonWindow); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[240]); lpButton->SetMove(x, y); m_ButtonManager.AddButton(lpButton); m_bShow = FALSE; m_dwWindowKind = WINDOW_FIX; m_rcWindowSize.left = x; m_rcWindowSize.top = y; m_rcWindowSize.right = x + 222; m_rcWindowSize.bottom = y + 480; m_rcMoveEdge.left = x; m_rcMoveEdge.top = y; m_rcMoveEdge.right = x + 150; m_rcMoveEdge.bottom = y + 20; return TRUE; } BOOL CHumanStatus::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; } } if(g_ClientMain.m_csStatus.m_Info.IP) { char strString[100]; m_ButtonManager.m_lstButton[0]->ShowButton(TRUE); sprintf(strString, g_StringTable.m_strString[241], g_ClientMain.m_csStatus.GetUseIP(STATUS_STR)); ((CGUITooltipButton *)(m_ButtonManager.m_lstButton[0]->m_lpTooltip))->InitTooltip(strString); m_ButtonManager.m_lstButton[1]->ShowButton(TRUE); sprintf(strString, g_StringTable.m_strString[241], g_ClientMain.m_csStatus.GetUseIP(STATUS_DEX)); ((CGUITooltipButton *)(m_ButtonManager.m_lstButton[1]->m_lpTooltip))->InitTooltip(strString); m_ButtonManager.m_lstButton[2]->ShowButton(TRUE); sprintf(strString, g_StringTable.m_strString[241], g_ClientMain.m_csStatus.GetUseIP(STATUS_WIS)); ((CGUITooltipButton *)(m_ButtonManager.m_lstButton[2]->m_lpTooltip))->InitTooltip(strString); m_ButtonManager.m_lstButton[3]->ShowButton(TRUE); sprintf(strString, g_StringTable.m_strString[241], g_ClientMain.m_csStatus.GetUseIP(STATUS_INT)); ((CGUITooltipButton *)(m_ButtonManager.m_lstButton[3]->m_lpTooltip))->InitTooltip(strString); m_ButtonManager.m_lstButton[4]->ShowButton(TRUE); sprintf(strString, g_StringTable.m_strString[241], g_ClientMain.m_csStatus.GetUseIP(STATUS_CON)); ((CGUITooltipButton *)(m_ButtonManager.m_lstButton[4]->m_lpTooltip))->InitTooltip(strString); } else { m_ButtonManager.m_lstButton[0]->ShowButton(FALSE); m_ButtonManager.m_lstButton[1]->ShowButton(FALSE); m_ButtonManager.m_lstButton[2]->ShowButton(FALSE); m_ButtonManager.m_lstButton[3]->ShowButton(FALSE); m_ButtonManager.m_lstButton[4]->ShowButton(FALSE); } m_ButtonManager.Update(); m_TooltipManager.Update(); if(m_ButtonManager.m_lstButton[0]->m_nState == BUTTON_CLICK) { g_ClientMain.m_Network.m_pSocket->CharIncreasePoint(g_ClientMain.m_dwMyChrID, ClientSocket::StateType_STR); } else if(m_ButtonManager.m_lstButton[1]->m_nState == BUTTON_CLICK) { g_ClientMain.m_Network.m_pSocket->CharIncreasePoint(g_ClientMain.m_dwMyChrID, ClientSocket::StateType_DEX); } else if(m_ButtonManager.m_lstButton[2]->m_nState == BUTTON_CLICK) { g_ClientMain.m_Network.m_pSocket->CharIncreasePoint(g_ClientMain.m_dwMyChrID, ClientSocket::StateType_WIS); } else if(m_ButtonManager.m_lstButton[3]->m_nState == BUTTON_CLICK) { g_ClientMain.m_Network.m_pSocket->CharIncreasePoint(g_ClientMain.m_dwMyChrID, ClientSocket::StateType_INT); } else if(m_ButtonManager.m_lstButton[4]->m_nState == BUTTON_CLICK) { g_ClientMain.m_Network.m_pSocket->CharIncreasePoint(g_ClientMain.m_dwMyChrID, ClientSocket::StateType_CON); } else if(m_ButtonManager.m_lstButton[5]->m_nState == BUTTON_CLICK) { m_ButtonManager.m_lstButton[5]->m_nState = BUTTON_NONE; m_bShow = FALSE; } return TRUE; } void CHumanStatus::Render(LPDIRECT3DDEVICE8 lpD3DDevice) { m_lstSprite[0]->Render(lpD3DDevice, m_cAlpha); m_lstSprite[1]->Render(lpD3DDevice, m_cAlpha); RECT rcRect; char strString[MAX_PATH]; // À̸§ SetRect(&rcRect, 38 + m_rcWindowSize.left, 36 + m_rcWindowSize.top, 198 + m_rcWindowSize.left, 50 + 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, 80 + m_rcWindowSize.left, 59 + m_rcWindowSize.top, 189 + m_rcWindowSize.left, 73 + 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, 80 + m_rcWindowSize.left, 105 + m_rcWindowSize.top, 189 + m_rcWindowSize.left, 119 + m_rcWindowSize.top); int nMerits = g_ClientMain.m_csStatus.m_Info.Merits; int nMeritsNameField = 0; if( 1 <= nMerits && nMerits <= 1000 ) { nMeritsNameField = 1; } else if( 1001 <= nMerits && nMerits <= 3000 ) { nMeritsNameField = 2; } else if( 3001 <= nMerits && nMerits <= 6000 ) { nMeritsNameField = 3; } else if( 6001 <= nMerits ) { nMeritsNameField = 4; } int nClassInfo = 0; switch( g_ClientMain.m_csStatus.m_Info.Class ) { case 5: // Defender nClassInfo = 0; break; case 6: // Warrior nClassInfo = 1; break; case 7: // Assasin nClassInfo = 2; break; case 8: // Archer nClassInfo = 3; break; case 9: // Sorcerer nClassInfo = 4; break; case 10: // Enchanter nClassInfo = 5; break; case 11: // Priest nClassInfo = 6; break; case 12: // Cleric nClassInfo = 7; break; case 19: // Templer nClassInfo = 8; break; case 20: // Attacker nClassInfo = 9; break; case 21: // Gunner nClassInfo = 10; break; case 22: // Rune Ope nClassInfo = 11; break; case 23: // Life Ope nClassInfo = 12; break; case 24: // Shadow Ope nClassInfo = 13; break; } if( nMeritsNameField == 0 || nClassInfo == 0) { g_TextEdit.DrawText("None", &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, m_cAlpha)); } else { int nStringTable = nClassInfo * 4 + 1000 + nMeritsNameField - 1 ; strcpy( strString, g_StringTable.m_strString[ nStringTable ] ); g_TextEdit.DrawText( strString, &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, m_cAlpha)); } // °øÇåµµ SetRect(&rcRect, 80 + m_rcWindowSize.left, 129 + m_rcWindowSize.top, 189 + m_rcWindowSize.left, 143 + m_rcWindowSize.top); sprintf(strString, "%d", g_ClientMain.m_csStatus.m_Info.Merits); g_TextEdit.DrawText(strString, &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, m_cAlpha)); // ¸í¼º SetRect(&rcRect, 80 + m_rcWindowSize.left, 153 + m_rcWindowSize.top, 189 + m_rcWindowSize.left, 166 + m_rcWindowSize.top); sprintf(strString, "%d", g_ClientMain.m_csStatus.m_Info.Fame); g_TextEdit.DrawText(strString, &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, m_cAlpha)); // ·¹º§ SetRect(&rcRect, 80 + m_rcWindowSize.left, 175 + m_rcWindowSize.top, 189 + m_rcWindowSize.left, 189 + 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, 80 + m_rcWindowSize.left, 199 + m_rcWindowSize.top, 189 + m_rcWindowSize.left, 213 + m_rcWindowSize.top); sprintf(strString, "%4.2f %%", (float)((double)g_ClientMain.m_csStatus.m_Info.Exp / (double)g_ClientMain.m_csStatus.m_llExpMax * 100.0f)); g_TextEdit.DrawText(strString, &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, m_cAlpha)); SetRect(&rcRect, 59 + m_rcWindowSize.left, 239 + m_rcWindowSize.top, 92 + m_rcWindowSize.left, 256 + m_rcWindowSize.top); g_ClientMain.m_lpCommonInterface->RenderNum(lpD3DDevice, g_ClientMain.m_csStatus.m_Info.STR, &rcRect); SetRect(&rcRect, 158 + m_rcWindowSize.left, 239 + m_rcWindowSize.top, 191 + m_rcWindowSize.left, 256 + m_rcWindowSize.top); g_ClientMain.m_lpCommonInterface->RenderNum(lpD3DDevice, g_ClientMain.m_csStatus.m_Info.DEX, &rcRect); SetRect(&rcRect, 59 + m_rcWindowSize.left, 267 + m_rcWindowSize.top, 92 + m_rcWindowSize.left, 284 + m_rcWindowSize.top); g_ClientMain.m_lpCommonInterface->RenderNum(lpD3DDevice, g_ClientMain.m_csStatus.m_Info.WIS, &rcRect); SetRect(&rcRect, 158 + m_rcWindowSize.left, 267 + m_rcWindowSize.top, 191 + m_rcWindowSize.left, 284 + m_rcWindowSize.top); g_ClientMain.m_lpCommonInterface->RenderNum(lpD3DDevice, g_ClientMain.m_csStatus.m_Info.INT, &rcRect); SetRect(&rcRect, 59 + m_rcWindowSize.left, 293 + m_rcWindowSize.top, 92 + m_rcWindowSize.left, 310 + m_rcWindowSize.top); g_ClientMain.m_lpCommonInterface->RenderNum(lpD3DDevice, g_ClientMain.m_csStatus.m_Info.CON, &rcRect); if(g_ClientMain.m_csStatus.m_Info.IP) { SetRect(&rcRect, 158 + m_rcWindowSize.left, 304 + m_rcWindowSize.top, 191 + m_rcWindowSize.left, 321 + m_rcWindowSize.top); g_ClientMain.m_lpCommonInterface->RenderNum(lpD3DDevice, g_ClientMain.m_csStatus.m_Info.IP, &rcRect); } // µ¥¹ÌÁö SetRect(&rcRect, 152 + m_rcWindowSize.left, 345 + m_rcWindowSize.top, 204 + m_rcWindowSize.left, 358 + m_rcWindowSize.top); sprintf(strString, "%d ~ %d", g_ClientMain.m_csStatus.m_lMinDamage, g_ClientMain.m_csStatus.m_lMaxDamage); 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, 152 + m_rcWindowSize.left, 364 + m_rcWindowSize.top, 204 + m_rcWindowSize.left, 377 + 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)); } // °ø°Ýº¸Á¤ SetRect(&rcRect, 152 + m_rcWindowSize.left, 383 + m_rcWindowSize.top, 204 + m_rcWindowSize.left, 395 + m_rcWindowSize.top); sprintf(strString, "%d", g_ClientMain.m_csStatus.m_lAttackRevision); g_TextEdit.DrawText(strString, &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, m_cAlpha)); // ¹æ¾îº¸Á¤ SetRect(&rcRect, 152 + m_rcWindowSize.left, 402 + m_rcWindowSize.top, 204 + m_rcWindowSize.left, 415 + m_rcWindowSize.top); sprintf(strString, "%d", g_ClientMain.m_csStatus.m_lDefenseRevision); g_TextEdit.DrawText(strString, &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, m_cAlpha)); // Å©¸®Æ¼Äà Ȯ·ü SetRect(&rcRect, 152 + m_rcWindowSize.left, 421 + m_rcWindowSize.top, 204 + m_rcWindowSize.left, 434 + m_rcWindowSize.top); sprintf(strString, "%d %%", g_ClientMain.m_csStatus.m_lCriticalPercent); g_TextEdit.DrawText(strString, &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, m_cAlpha)); // ºí·°È®·ü SetRect(&rcRect, 152 + m_rcWindowSize.left, 439 + m_rcWindowSize.top, 204 + m_rcWindowSize.left, 452 + m_rcWindowSize.top); sprintf(strString, "%3.1f %%", g_ClientMain.m_csStatus.m_fBlockPercent); if(g_ClientMain.m_csStatus.m_fBlockPercent < g_ClientMain.m_csStatus.m_fRealBlockPercent) { g_TextEdit.DrawText(strString, &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 0, 0, m_cAlpha)); } else if(g_ClientMain.m_csStatus.m_fBlockPercent > g_ClientMain.m_csStatus.m_fRealBlockPercent) { 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, 152 + m_rcWindowSize.left, 457 + m_rcWindowSize.top, 204 + m_rcWindowSize.left, 470 + m_rcWindowSize.top); sprintf(strString, "%d %%", g_ClientMain.m_csStatus.m_lMagicResistance); g_TextEdit.DrawText(strString, &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, m_cAlpha)); m_ButtonManager.Render(lpD3DDevice); }