// HumanMinimap.cpp: implementation of the CHumanMinimap class. // ////////////////////////////////////////////////////////////////////// #include "ClientMain.h" #include "WinInput.h" #include "GUITextEdit.h" #include "HumanMinimap.h" #include "Creature\NPC\NPCList.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CHumanMinimap::CHumanMinimap() { } CHumanMinimap::~CHumanMinimap() { } BOOL CHumanMinimap::Init(unsigned short x, unsigned short y) { CSprite *lpSprite; lpSprite = new CSprite; lpSprite->Create(x, y, 123, 0, 206, 104, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; lpSprite->Create(x + 83, y, 105, 0, 121, 104, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; lpSprite->Create(x + 38, y + 102, 40, 156, 78, 183, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; lpSprite->Create(x, y, 221, 104, 238, 171, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // ÀڽŠǥ½Ã : 4 lpSprite->Create(43 - 5, 43 - 7, 188, 136, 199, 152, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // PC Ç¥½Ã : 5 lpSprite->Create(0, 0, 132, 156, 139, 163, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // NPC Ç¥½Ã : 6 lpSprite->Create(0, 0, 121, 156, 128, 163, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // MONSTER Ç¥½Ã : 7 lpSprite->Create(0, 0, 143, 156, 150, 163, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // ÆÄƼ¿ø Ç¥½Ã : 8 lpSprite->Create(0, 0, 154, 156, 161, 163, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // Äù½ºÆ® Ç¥½Ã : 9 lpSprite->Create(0, 0, 121, 135, 139, 152, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // Äù½ºÆ® Ç¥½Ã : 10 lpSprite->Create(0, 0, 143, 135, 161, 152, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // Äù½ºÆ® Ç¥½Ã : 11 lpSprite->Create(0, 0, 165, 135, 183, 152, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // µà¾ó »ó´ë Ç¥½Ã : 12 lpSprite->Create(0, 0, 165, 156, 172, 163, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // ¹«±â»óÀÎ : 13 lpSprite->Create(0, 0, 121, 165, 133, 177, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // ¹æ¾î±¸»óÀÎ : 14 lpSprite->Create(0, 0, 133, 165, 145, 177, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // ÀâÈ­»óÀÎ : 15 lpSprite->Create(0, 0, 145, 165, 157, 177, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // Æ®·¹ÀÌ³Ê : 16 lpSprite->Create(0, 0, 157, 165, 169, 177, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // ¼ø°£À̵¿¼ú»ç : 17 lpSprite->Create(0, 0, 169, 165, 181, 177, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // ´ëÀåÀåÀÌ : 18 lpSprite->Create(0, 0, 158, 120, 170, 132, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // â°í : 19 lpSprite->Create(0, 0, 170, 120, 182, 132, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // ¾ÆÄ«µ¥¹Ì : 20 lpSprite->Create(0, 0, 182, 120, 194, 132, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // ¹«±â¾Ï½ÃÀå : 21 lpSprite->Create(0, 0, 194, 120, 206, 132, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // ¹æ¾î±¸¾Ï½ÃÀå : 22 lpSprite->Create(0, 0, 206, 120, 218, 132, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // Àû Á¾Á· Ç¥½Ã : 23 lpSprite->Create(0, 0, 174, 157, 179, 162, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // ¹ÝÀü´Üü : 24 lpSprite->Create(0, 0, 206, 132, 218, 144, g_ClientMain.m_lpInterface->m_lstTexture[26]); m_lstSprite.push_back(lpSprite); CGUIButton *lpButton; lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(x + 84, y + 34, 105, 104, 118, 125, g_ClientMain.m_lpInterface->m_lstTexture[26]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(x + 84, y + 34, 118, 104, 131, 125, g_ClientMain.m_lpInterface->m_lstTexture[26]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[186]); 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(x + 1, y + 34, 131, 104, 144, 125, g_ClientMain.m_lpInterface->m_lstTexture[26]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(x + 1, y + 34, 144, 104, 157, 125, g_ClientMain.m_lpInterface->m_lstTexture[26]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[187]); 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(x + 83, y + 62, 157, 104, 173, 119, g_ClientMain.m_lpInterface->m_lstTexture[26]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(x + 83, y + 62, 173, 104, 189, 119, g_ClientMain.m_lpInterface->m_lstTexture[26]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[188]); 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(x + 83, y + 85, 189, 104, 205, 119, g_ClientMain.m_lpInterface->m_lstTexture[26]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(x + 83, y + 85, 205, 104, 221, 119, g_ClientMain.m_lpInterface->m_lstTexture[26]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[189]); lpButton->SetMove(x, y); m_ButtonManager.AddButton(lpButton); m_dwWindowKind = WINDOW_FIX; m_rcWindowSize.left = x; m_rcWindowSize.top = y; m_rcWindowSize.right = x + 100; m_rcWindowSize.bottom = y + 104; m_rcMoveEdge.left = x; m_rcMoveEdge.top = y; m_rcMoveEdge.right = x + 100; m_rcMoveEdge.bottom = y + 104; InitValue(); return TRUE; } void CHumanMinimap::InitValue(void) { m_MiniMapSize = 256; m_bFullSize = TRUE; m_ButtonManager.m_lstButton[0]->ShowButton(TRUE); m_ButtonManager.m_lstButton[1]->ShowButton(FALSE); m_ButtonManager.m_lstButton[2]->ShowButton(TRUE); m_ButtonManager.m_lstButton[3]->ShowButton(TRUE); } BOOL CHumanMinimap::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; } } m_ButtonManager.Update(); m_TooltipManager.Update(); if(m_ButtonManager.m_lstButton[0]->m_nState == BUTTON_CLICK) { m_bFullSize = FALSE; m_rcWindowSize.right = m_rcWindowSize.left + 16; m_rcWindowSize.bottom = m_rcWindowSize.top + 66; m_ButtonManager.m_lstButton[0]->ShowButton(FALSE); m_ButtonManager.m_lstButton[1]->ShowButton(TRUE); m_ButtonManager.m_lstButton[2]->ShowButton(FALSE); m_ButtonManager.m_lstButton[3]->ShowButton(FALSE); } else if(m_ButtonManager.m_lstButton[1]->m_nState == BUTTON_CLICK) { m_bFullSize = TRUE; m_rcWindowSize.right = m_rcWindowSize.left + 100; m_rcWindowSize.bottom = m_rcWindowSize.top + 104; m_ButtonManager.m_lstButton[0]->ShowButton(TRUE); m_ButtonManager.m_lstButton[1]->ShowButton(FALSE); m_ButtonManager.m_lstButton[2]->ShowButton(TRUE); m_ButtonManager.m_lstButton[3]->ShowButton(TRUE); } else if(!g_TextEdit.IsFocus() && (m_ButtonManager.m_lstButton[2]->m_nState == BUTTON_PRESS || g_DeviceInput.KeyHold(VK_ADD))) { m_MiniMapSize += 20; if(m_MiniMapSize > 512) m_MiniMapSize = 512; } else if(!g_TextEdit.IsFocus() && (m_ButtonManager.m_lstButton[3]->m_nState == BUTTON_PRESS || g_DeviceInput.KeyHold(VK_SUBTRACT))) { m_MiniMapSize -= 20; if(m_MiniMapSize < 128) m_MiniMapSize = 128; } return TRUE; } void CHumanMinimap::Render(LPDIRECT3DDEVICE8 lpD3DDevice) { if(!m_bFullSize) { m_lstSprite[3]->Render(lpD3DDevice); m_ButtonManager.Render(lpD3DDevice); return; } int nChrPosX = (g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos.x / SECTORSIZE); int nChrPosZ = (g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos.z / SECTORSIZE); int nMoveX = ((g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos.x - (nChrPosX * SECTORSIZE)) / SECTORSIZE) * m_MiniMapSize; int nMoveZ = ((g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos.z - (nChrPosZ * SECTORSIZE)) / SECTORSIZE) * m_MiniMapSize; lpD3DDevice->SetTextureStageState(0, D3DTSS_ADDRESSU, D3DTADDRESS_CLAMP); lpD3DDevice->SetTextureStageState(0, D3DTSS_ADDRESSV, D3DTADDRESS_CLAMP); ///////////////////////////////////////////////////////////////////////////////////////////////////// // Áöµµ ÅØ½ºÃÄ ºÎ¸£±â ///////////////////////////////////////////////////////////////////////////////////////////////////// CTexture::SetPath(WIDETEXTUREPATH); FILE *fp = NULL; char strMiniMapFileName[MAX_PATH]; sprintf(strMiniMapFileName, "%d_%d", nChrPosX, nChrPosZ); if(strstr(m_MiniMapTexture[4].m_strName, strMiniMapFileName) == NULL) { if(m_MiniMapTexture[4].GetTexture()) m_MiniMapTexture[4].Unload(); sprintf(strMiniMapFileName, "%s\\%d_%d_detail.dds", WIDETEXTUREPATH, nChrPosX, nChrPosZ); if((fp = fopen(strMiniMapFileName, "rb")) == NULL) { sprintf(strMiniMapFileName, "%s\\%d_%d.dds", WIDETEXTUREPATH, nChrPosX, nChrPosZ); fp = fopen(strMiniMapFileName, "rb"); if(fp) { fclose(fp); sprintf(strMiniMapFileName, "%d_%d.dds", nChrPosX, nChrPosZ); CTexture::SetPath(WIDETEXTUREPATH); m_MiniMapTexture[4].Load(strMiniMapFileName); } else { CTexture::SetPath(INTERFACETEXTUREPATH); m_MiniMapTexture[4].Load("hig1.dds"); } } else { fclose(fp); sprintf(strMiniMapFileName, "%d_%d_detail.dds", nChrPosX, nChrPosZ); CTexture::SetPath(WIDETEXTUREPATH); m_MiniMapTexture[4].Load(strMiniMapFileName); } } sprintf(strMiniMapFileName, "%d_%d", nChrPosX - 1, nChrPosZ + 1); if(strstr(m_MiniMapTexture[0].m_strName, strMiniMapFileName) == NULL) { if(m_MiniMapTexture[0].GetTexture()) m_MiniMapTexture[0].Unload(); sprintf(strMiniMapFileName,"%s\\%d_%d_detail.dds",WIDETEXTUREPATH,nChrPosX-1,nChrPosZ+1); fp=fopen(strMiniMapFileName,"rb"); if((fp)==NULL) { sprintf(strMiniMapFileName,"%s\\%d_%d.dds",WIDETEXTUREPATH,nChrPosX-1,nChrPosZ+1); fp=fopen(strMiniMapFileName,"rb"); if(fp) { fclose(fp); sprintf(strMiniMapFileName,"%d_%d.dds",nChrPosX-1,nChrPosZ+1); CTexture::SetPath(WIDETEXTUREPATH); m_MiniMapTexture[0].Load(strMiniMapFileName); } else { CTexture::SetPath(INTERFACETEXTUREPATH); m_MiniMapTexture[0].Load("hig1.dds"); } } else { fclose(fp); sprintf(strMiniMapFileName,"%d_%d_detail.dds",nChrPosX-1,nChrPosZ+1); CTexture::SetPath(WIDETEXTUREPATH); m_MiniMapTexture[0].Load(strMiniMapFileName); } } sprintf(strMiniMapFileName,"%d_%d",nChrPosX,nChrPosZ+1); if(strstr(m_MiniMapTexture[1].m_strName,strMiniMapFileName)==NULL) { if(m_MiniMapTexture[1].GetTexture()) m_MiniMapTexture[1].Unload(); sprintf(strMiniMapFileName,"%s\\%d_%d_detail.dds",WIDETEXTUREPATH,nChrPosX,nChrPosZ+1); if((fp=fopen(strMiniMapFileName,"rb"))==NULL) { sprintf(strMiniMapFileName,"%s\\%d_%d.dds",WIDETEXTUREPATH,nChrPosX,nChrPosZ+1); fp=fopen(strMiniMapFileName,"rb"); if(fp) { fclose(fp); sprintf(strMiniMapFileName,"%d_%d.dds",nChrPosX,nChrPosZ+1); CTexture::SetPath(WIDETEXTUREPATH); m_MiniMapTexture[1].Load(strMiniMapFileName); } else { CTexture::SetPath(INTERFACETEXTUREPATH); m_MiniMapTexture[1].Load("hig1.dds"); } } else { fclose(fp); sprintf(strMiniMapFileName,"%d_%d_detail.dds",nChrPosX,nChrPosZ+1); CTexture::SetPath(WIDETEXTUREPATH); m_MiniMapTexture[1].Load(strMiniMapFileName); } } sprintf(strMiniMapFileName,"%d_%d.dds",nChrPosX+1,nChrPosZ+1); if(strstr(m_MiniMapTexture[2].m_strName,strMiniMapFileName)==NULL) { if(m_MiniMapTexture[2].GetTexture()) m_MiniMapTexture[2].Unload(); sprintf(strMiniMapFileName,"%s\\%d_%d_detail.dds",WIDETEXTUREPATH,nChrPosX+1,nChrPosZ+1); if((fp=fopen(strMiniMapFileName,"rb"))==NULL) { sprintf(strMiniMapFileName,"%s\\%d_%d.dds",WIDETEXTUREPATH,nChrPosX+1,nChrPosZ+1); fp=fopen(strMiniMapFileName,"rb"); if(fp) { fclose(fp); sprintf(strMiniMapFileName,"%d_%d.dds",nChrPosX+1,nChrPosZ+1); CTexture::SetPath(WIDETEXTUREPATH); m_MiniMapTexture[2].Load(strMiniMapFileName); } else { CTexture::SetPath(INTERFACETEXTUREPATH); m_MiniMapTexture[2].Load("hig1.dds"); } } else { fclose(fp); sprintf(strMiniMapFileName,"%d_%d_detail.dds",nChrPosX+1,nChrPosZ+1); CTexture::SetPath(WIDETEXTUREPATH); m_MiniMapTexture[2].Load(strMiniMapFileName); } } sprintf(strMiniMapFileName,"%d_%d.dds",nChrPosX-1,nChrPosZ); if(strstr(m_MiniMapTexture[3].m_strName,strMiniMapFileName)==NULL) { if(m_MiniMapTexture[3].GetTexture()) m_MiniMapTexture[3].Unload(); sprintf(strMiniMapFileName,"%s\\%d_%d_detail.dds",WIDETEXTUREPATH,nChrPosX-1,nChrPosZ); if((fp=fopen(strMiniMapFileName,"rb"))==NULL) { sprintf(strMiniMapFileName,"%s\\%d_%d.dds",WIDETEXTUREPATH,nChrPosX-1,nChrPosZ); fp=fopen(strMiniMapFileName,"rb"); if(fp) { fclose(fp); sprintf(strMiniMapFileName,"%d_%d.dds",nChrPosX-1,nChrPosZ); CTexture::SetPath(WIDETEXTUREPATH); m_MiniMapTexture[3].Load(strMiniMapFileName); } else { CTexture::SetPath(INTERFACETEXTUREPATH); m_MiniMapTexture[3].Load("hig1.dds"); } } else { fclose(fp); sprintf(strMiniMapFileName,"%d_%d_detail.dds",nChrPosX-1,nChrPosZ); CTexture::SetPath(WIDETEXTUREPATH); m_MiniMapTexture[3].Load(strMiniMapFileName); } } sprintf(strMiniMapFileName,"%d_%d.dds",nChrPosX+1,nChrPosZ); if(strstr(m_MiniMapTexture[5].m_strName,strMiniMapFileName)==NULL) { if(m_MiniMapTexture[5].GetTexture()) m_MiniMapTexture[5].Unload(); sprintf(strMiniMapFileName,"%s\\%d_%d_detail.dds",WIDETEXTUREPATH,nChrPosX+1,nChrPosZ); if((fp=fopen(strMiniMapFileName,"rb"))==NULL) { sprintf(strMiniMapFileName,"%s\\%d_%d.dds",WIDETEXTUREPATH,nChrPosX+1,nChrPosZ); fp=fopen(strMiniMapFileName,"rb"); if(fp) { fclose(fp); sprintf(strMiniMapFileName,"%d_%d.dds",nChrPosX+1,nChrPosZ); CTexture::SetPath(WIDETEXTUREPATH); m_MiniMapTexture[5].Load(strMiniMapFileName); } else { CTexture::SetPath(INTERFACETEXTUREPATH); m_MiniMapTexture[5].Load("hig1.dds"); } } else { fclose(fp); sprintf(strMiniMapFileName,"%d_%d_detail.dds",nChrPosX+1,nChrPosZ); CTexture::SetPath(WIDETEXTUREPATH); m_MiniMapTexture[5].Load(strMiniMapFileName); } } sprintf(strMiniMapFileName,"%d_%d.dds",nChrPosX-1,nChrPosZ-1); if(strstr(m_MiniMapTexture[6].m_strName,strMiniMapFileName)==NULL) { if(m_MiniMapTexture[6].GetTexture()) m_MiniMapTexture[6].Unload(); sprintf(strMiniMapFileName,"%s\\%d_%d_detail.dds",WIDETEXTUREPATH,nChrPosX-1,nChrPosZ-1); if((fp=fopen(strMiniMapFileName,"rb"))==NULL) { sprintf(strMiniMapFileName,"%s\\%d_%d.dds",WIDETEXTUREPATH,nChrPosX-1,nChrPosZ-1); fp=fopen(strMiniMapFileName,"rb"); if(fp) { fclose(fp); sprintf(strMiniMapFileName,"%d_%d.dds",nChrPosX-1,nChrPosZ-1); CTexture::SetPath(WIDETEXTUREPATH); m_MiniMapTexture[6].Load(strMiniMapFileName); } else { CTexture::SetPath(INTERFACETEXTUREPATH); m_MiniMapTexture[6].Load("hig1.dds"); } } else { fclose(fp); sprintf(strMiniMapFileName,"%d_%d_detail.dds",nChrPosX-1,nChrPosZ-1); CTexture::SetPath(WIDETEXTUREPATH); m_MiniMapTexture[6].Load(strMiniMapFileName); } } sprintf(strMiniMapFileName,"%d_%d.dds",nChrPosX,nChrPosZ-1); if(strstr(m_MiniMapTexture[7].m_strName,strMiniMapFileName)==NULL) { if(m_MiniMapTexture[7].GetTexture()) m_MiniMapTexture[7].Unload(); sprintf(strMiniMapFileName,"%s\\%d_%d_detail.dds",WIDETEXTUREPATH,nChrPosX,nChrPosZ-1); if((fp=fopen(strMiniMapFileName,"rb"))==NULL) { sprintf(strMiniMapFileName,"%s\\%d_%d.dds",WIDETEXTUREPATH,nChrPosX,nChrPosZ-1); fp=fopen(strMiniMapFileName,"rb"); if(fp) { fclose(fp); sprintf(strMiniMapFileName,"%d_%d.dds",nChrPosX,nChrPosZ-1); CTexture::SetPath(WIDETEXTUREPATH); m_MiniMapTexture[7].Load(strMiniMapFileName); } else { CTexture::SetPath(INTERFACETEXTUREPATH); m_MiniMapTexture[7].Load("hig1.dds"); } } else { fclose(fp); sprintf(strMiniMapFileName,"%d_%d_detail.dds",nChrPosX,nChrPosZ-1); CTexture::SetPath(WIDETEXTUREPATH); m_MiniMapTexture[7].Load(strMiniMapFileName); } } sprintf(strMiniMapFileName,"%d_%d.dds",nChrPosX+1,nChrPosZ-1); if(strstr(m_MiniMapTexture[8].m_strName,strMiniMapFileName)==NULL) { if(m_MiniMapTexture[8].GetTexture()) m_MiniMapTexture[8].Unload(); sprintf(strMiniMapFileName,"%s\\%d_%d_detail.dds",WIDETEXTUREPATH,nChrPosX+1,nChrPosZ-1); if((fp=fopen(strMiniMapFileName,"rb"))==NULL) { sprintf(strMiniMapFileName,"%s\\%d_%d.dds",WIDETEXTUREPATH,nChrPosX+1,nChrPosZ-1); fp=fopen(strMiniMapFileName,"rb"); if(fp) { fclose(fp); sprintf(strMiniMapFileName,"%d_%d.dds",nChrPosX+1,nChrPosZ-1); CTexture::SetPath(WIDETEXTUREPATH); m_MiniMapTexture[8].Load(strMiniMapFileName); } else { CTexture::SetPath(INTERFACETEXTUREPATH); m_MiniMapTexture[8].Load("hig1.dds"); } } else { fclose(fp); sprintf(strMiniMapFileName,"%d_%d_detail.dds",nChrPosX+1,nChrPosZ-1); CTexture::SetPath(WIDETEXTUREPATH); m_MiniMapTexture[8].Load(strMiniMapFileName); } } ///////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////// TLVertex2 Vertex[4]; Vertex[0].Diffuse.c = Vertex[1].Diffuse.c = Vertex[2].Diffuse.c = Vertex[3].Diffuse.c = 0xffffffff; Vertex[0].Specular.c = Vertex[1].Specular.c = Vertex[2].Specular.c = Vertex[3].Specular.c = 0; Vertex[0].w = Vertex[1].w = Vertex[2].w = Vertex[3].w = 0.1f; Vertex[0].v.z = Vertex[1].v.z = Vertex[2].v.z = Vertex[3].v.z = 0.1f; float fCenterX = Vertex[0].v.x = Vertex[1].v.x = 0 - nMoveX + 43; Vertex[2].v.x = Vertex[3].v.x = m_MiniMapSize - nMoveX + 43; float fCenterZ = Vertex[0].v.y = Vertex[2].v.y = 0 + nMoveZ - m_MiniMapSize + 43; Vertex[1].v.y = Vertex[3].v.y = m_MiniMapSize + nMoveZ - m_MiniMapSize + 43; Vertex[0].tu1 = Vertex[1].tu1 = 0.0f + 0.5f / (float)m_MiniMapSize; Vertex[2].tu1 = Vertex[3].tu1 = 1.0f - 0.5f / (float)m_MiniMapSize; Vertex[0].tv1 = Vertex[2].tv1 = 1.0f - 0.5f / (float)m_MiniMapSize; Vertex[1].tv1 = Vertex[3].tv1 = 0.0f + 0.5f / (float)m_MiniMapSize; for(int i = 0; i < 4; i++) { Vertex[i].tu = Vertex[i].v.x / (float)128; Vertex[i].tv = Vertex[i].v.y / (float)128; } lpD3DDevice->SetTexture(0, g_ClientMain.m_lpInterface->m_lstTexture[27]->GetTexture()); lpD3DDevice->SetTexture(1, m_MiniMapTexture[4].GetTexture()); lpD3DDevice->SetVertexShader(TLVERTEX2FVF); lpD3DDevice->SetTextureStageState(1, D3DTSS_TEXCOORDINDEX, 1); lpD3DDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE ); lpD3DDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 ); lpD3DDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE ); lpD3DDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1 ); lpD3DDevice->SetTextureStageState( 1, D3DTSS_COLORARG1, D3DTA_TEXTURE ); lpD3DDevice->SetTextureStageState( 1, D3DTSS_COLOROP, D3DTOP_SELECTARG1 ); lpD3DDevice->SetTextureStageState( 1, D3DTSS_ALPHAOP, D3DTOP_SELECTARG2); lpD3DDevice->SetTextureStageState( 1, D3DTSS_ALPHAARG2, D3DTA_CURRENT ); lpD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, Vertex, sizeof(TLVertex2)); lpD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE); lpD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE); lpD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE); //0 Vertex[0].v.x=Vertex[1].v.x=fCenterX-m_MiniMapSize; Vertex[2].v.x=Vertex[3].v.x=fCenterX; Vertex[0].v.y=Vertex[2].v.y=fCenterZ-m_MiniMapSize; Vertex[1].v.y=Vertex[3].v.y=fCenterZ; for(i=0;i<4;i++) { Vertex[i].tu = Vertex[i].v.x / (float)128; Vertex[i].tv = Vertex[i].v.y / (float)128; } lpD3DDevice->SetTexture(1, m_MiniMapTexture[0].GetTexture()); lpD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, Vertex, sizeof(TLVertex2)); //1 Vertex[0].v.x=Vertex[1].v.x=fCenterX; Vertex[2].v.x=Vertex[3].v.x=fCenterX+m_MiniMapSize; Vertex[0].v.y=Vertex[2].v.y=fCenterZ-m_MiniMapSize; Vertex[1].v.y=Vertex[3].v.y=fCenterZ; for(i=0;i<4;i++) { Vertex[i].tu = Vertex[i].v.x / (float)128; Vertex[i].tv = Vertex[i].v.y / (float)128; } lpD3DDevice->SetTexture(1,m_MiniMapTexture[1].GetTexture()); lpD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP,2,Vertex,sizeof(TLVertex2)); //2 Vertex[0].v.x=Vertex[1].v.x=fCenterX+m_MiniMapSize; Vertex[2].v.x=Vertex[3].v.x=fCenterX+m_MiniMapSize*2; Vertex[0].v.y=Vertex[2].v.y=fCenterZ-m_MiniMapSize; Vertex[1].v.y=Vertex[3].v.y=fCenterZ; for(i=0;i<4;i++) { Vertex[i].tu = Vertex[i].v.x / (float)128; Vertex[i].tv = Vertex[i].v.y / (float)128; } lpD3DDevice->SetTexture(1,m_MiniMapTexture[2].GetTexture()); lpD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP,2,Vertex,sizeof(TLVertex2)); //3 Vertex[0].v.x=Vertex[1].v.x=fCenterX-m_MiniMapSize; Vertex[2].v.x=Vertex[3].v.x=fCenterX; Vertex[0].v.y=Vertex[2].v.y=fCenterZ; Vertex[1].v.y=Vertex[3].v.y=fCenterZ+m_MiniMapSize; for(i=0;i<4;i++) { Vertex[i].tu = Vertex[i].v.x / (float)128; Vertex[i].tv = Vertex[i].v.y / (float)128; } lpD3DDevice->SetTexture(1,m_MiniMapTexture[3].GetTexture()); lpD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP,2,Vertex,sizeof(TLVertex2)); //5 Vertex[0].v.x=Vertex[1].v.x=fCenterX+m_MiniMapSize; Vertex[2].v.x=Vertex[3].v.x=fCenterX+m_MiniMapSize*2; Vertex[0].v.y=Vertex[2].v.y=fCenterZ; Vertex[1].v.y=Vertex[3].v.y=fCenterZ+m_MiniMapSize; for(i=0;i<4;i++) { Vertex[i].tu = Vertex[i].v.x / (float)128; Vertex[i].tv = Vertex[i].v.y / (float)128; } lpD3DDevice->SetTexture(1,m_MiniMapTexture[5].GetTexture()); lpD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP,2,Vertex,sizeof(TLVertex2)); //6 Vertex[0].v.x=Vertex[1].v.x=fCenterX-m_MiniMapSize; Vertex[2].v.x=Vertex[3].v.x=fCenterX; Vertex[0].v.y=Vertex[2].v.y=fCenterZ+m_MiniMapSize; Vertex[1].v.y=Vertex[3].v.y=fCenterZ+m_MiniMapSize*2; for(i=0;i<4;i++) { Vertex[i].tu = Vertex[i].v.x / (float)128; Vertex[i].tv = Vertex[i].v.y / (float)128; } lpD3DDevice->SetTexture(1,m_MiniMapTexture[6].GetTexture()); lpD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP,2,Vertex,sizeof(TLVertex2)); //7 Vertex[0].v.x=Vertex[1].v.x=fCenterX; Vertex[2].v.x=Vertex[3].v.x=fCenterX+m_MiniMapSize; Vertex[0].v.y=Vertex[2].v.y=fCenterZ+m_MiniMapSize; Vertex[1].v.y=Vertex[3].v.y=fCenterZ+m_MiniMapSize*2; for(i=0;i<4;i++) { Vertex[i].tu = Vertex[i].v.x / (float)128; Vertex[i].tv = Vertex[i].v.y / (float)128; } lpD3DDevice->SetTexture(1,m_MiniMapTexture[7].GetTexture()); lpD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP,2,Vertex,sizeof(TLVertex2)); //8 Vertex[0].v.x=Vertex[1].v.x=fCenterX+m_MiniMapSize; Vertex[2].v.x=Vertex[3].v.x=fCenterX+m_MiniMapSize*2; Vertex[0].v.y=Vertex[2].v.y=fCenterZ+m_MiniMapSize; Vertex[1].v.y=Vertex[3].v.y=fCenterZ+m_MiniMapSize*2; for(i=0;i<4;i++) { Vertex[i].tu = Vertex[i].v.x / (float)128; Vertex[i].tv = Vertex[i].v.y / (float)128; } lpD3DDevice->SetTexture(1,m_MiniMapTexture[8].GetTexture()); lpD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP,2,Vertex,sizeof(TLVertex2)); lpD3DDevice->SetTextureStageState(0, D3DTSS_ADDRESSU, D3DTADDRESS_WRAP); lpD3DDevice->SetTextureStageState(0, D3DTSS_ADDRESSV, D3DTADDRESS_WRAP); lpD3DDevice->SetTexture(1, NULL); lpD3DDevice->SetVertexShader(TLVERTEXFVF); ///////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////// int CenterX,CenterY; CenterX = 43; CenterY = 43; float PixelPerMeter = ((float)m_MiniMapSize/SECTORSIZE); vector3 vecPos, vecSelfPos = g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos; RECT rcRect, rcMapSize; SetRect(&rcMapSize, m_rcWindowSize.left + 2, m_rcWindowSize.top + 1, m_rcWindowSize.left + 83, m_rcWindowSize.top + 85); vecSelfPos.y = 0.0f; /* for(int asd = 0; asd < 36; asd++) { m_SpriteList[m_BarEnemy].m_PutY = CenterY - 5 - 56 * cosf(FLOAT_DEG(asd * 10.0f)); m_SpriteList[m_BarEnemy].m_PutX = CenterX - 5 + 56 * sinf(FLOAT_DEG(asd * 10.0f)); RenderSprite(m_BarEnemy, lpD3DDevice); }*/ int nPosX, nPosY; for(i = 0; i < g_CharacterData.m_lstCharData.num; i++) { if(i == g_CharacterData.m_nFocusCharacter) continue; // if(g_CharacterData.m_lstCharData[i]->m_bUsed == FALSE) continue; // if(g_CharacterData.m_lstCharData[i]->m_lpChrModel) { vecPos = g_CharacterData.m_lstCharData[i]->m_vecPos; vecPos.y = 0.0f; vecPos = vecPos - vecSelfPos; vecPos.x *= PixelPerMeter; vecPos.z *= PixelPerMeter; nPosX = CenterX - 2 + vecPos.x; nPosY = CenterY - 2 - vecPos.z; if(rcMapSize.left <= nPosX && nPosX <= rcMapSize.right && rcMapSize.top <= nPosY && nPosY <= rcMapSize.bottom) { switch(g_CharacterData.GetClientType(g_CharacterData.m_lstCharData[i]->m_dwChrID, TRUE)) { case CT_NPC: { LPNPCNode lpNode = g_NPCList.GetNPCNode(g_CharacterData.m_lstCharData[i]->m_dwChrID); if(lpNode) { switch(lpNode->m_dwJob) { case POPUP_WEAPONMERCHANT: case POPUP_A_WEAPONMERCHANT: m_lstSprite[13]->Render(lpD3DDevice, 0xFF, nPosX - 3, nPosY - 3); break; case POPUP_DARKWEAPONMERCHANT: case POPUP_A_DARKWEAPONMERCHANT: m_lstSprite[21]->Render(lpD3DDevice, 0xFF, nPosX - 3, nPosY - 3); break; case POPUP_ARMOURMERCHANT: case POPUP_A_ARMOURMERCHANT: m_lstSprite[14]->Render(lpD3DDevice, 0xFF, nPosX - 3, nPosY - 3); break; case POPUP_DARKARMOURMERCHANT: case POPUP_A_DARKARMOURMERCHANT: m_lstSprite[22]->Render(lpD3DDevice, 0xFF, nPosX - 3, nPosY - 3); break; case POPUP_ETCMERCHANT: case POPUP_A_ETCMERCHANT: case POPUP_DARKETCMERCHANT: case POPUP_A_DARKETCMERCHANT: m_lstSprite[15]->Render(lpD3DDevice, 0xFF, nPosX - 3, nPosY - 3); break; case POPUP_ADVENTURETRAINER: case POPUP_FIGHTERTRAINER: case POPUP_ROGUETRAINER: case POPUP_MAGETRAINER: case POPUP_ACOLYTETRAINER: case POPUP_A_BEGINNERTRAINER: case POPUP_A_COMBATANTTRAINER: case POPUP_A_OPPICATERTRAINER: m_lstSprite[16]->Render(lpD3DDevice, 0xFF, nPosX - 3, nPosY - 3); break; case POPUP_TELEPORTER: case POPUP_A_TELEPORTER: m_lstSprite[17]->Render(lpD3DDevice, 0xFF, nPosX - 3, nPosY - 3); break; case POPUP_CONTAINER: case POPUP_A_CONTAINER: m_lstSprite[19]->Render(lpD3DDevice, 0xFF, nPosX - 3, nPosY - 3); break; case POPUP_PEACEGUILD: case POPUP_A_PEACEGUILD: m_lstSprite[24]->Render(lpD3DDevice, 0xFF, nPosX - 3, nPosY - 3); break; default: m_lstSprite[6]->Render(lpD3DDevice, 0xFF, nPosX, nPosY); break; } } } break; case CT_MONSTER: if(!g_CharacterData.m_lstCharData[i]->GetChantFlag(17)) { if(g_CharacterData.GetIsDuelTarget(g_CharacterData.m_lstCharData[i]->m_dwChrID)) m_lstSprite[12]->Render(lpD3DDevice, 0xFF, nPosX, nPosY); else if(g_CharacterData.GetClientType(g_CharacterData.m_lstCharData[i]->m_dwChrID) == CT_PC) m_lstSprite[23]->Render(lpD3DDevice, 0xFF, nPosX, nPosY); else m_lstSprite[7]->Render(lpD3DDevice, 0xFF, nPosX, nPosY); } break; case CT_PC: // ÆÄƼÀ϶§ ÆÄƼ·Î »Ñ¸®±â if(g_ClientMain.m_csStatus.CheckPartyMember(g_CharacterData.m_lstCharData[i]->m_dwChrID)) m_lstSprite[8]->Render(lpD3DDevice, 0xFF, nPosX, nPosY); else m_lstSprite[5]->Render(lpD3DDevice, 0xFF, nPosX, nPosY); break; } } } } m_lstSprite[4]->Render(lpD3DDevice, g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_fDirection + FLOAT_PHI, 128); ///////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////// m_lstSprite[0]->Render(lpD3DDevice); m_lstSprite[1]->Render(lpD3DDevice); m_lstSprite[2]->Render(lpD3DDevice); char temp[50]; SetRect(&rcRect, m_rcWindowSize.left + 12, m_rcWindowSize.top + 88, m_rcWindowSize.left + 71, m_rcWindowSize.top + 99); // sprintf(temp, "%f, %f, %f, %f", (vecSelfPos.x / 100.0f), (vecSelfPos.y / 100.0f), (vecSelfPos.z / 100.0f), CCharacterData::m_CharDataSetList[0]->m_pChrmodel->GetDirection() + 3.14159f); sprintf(temp, "%d, %d", (long)(vecSelfPos.x / 100.0f), (long)(vecSelfPos.z / 100.0f)); g_TextEdit.DrawText(temp, &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, 255)); m_ButtonManager.Render(lpD3DDevice); }