// 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); }