Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // 캐릭터를 따라다니는 텍스트 관련 소스 (이름, 길드이름, 길드마크 등)
- //
- #include "stdafx.h"
- #include "InstanceBase.h"
- #include "resource.h"
- #include "PythonTextTail.h"
- #include "PythonCharacterManager.h"
- #include "PythonGuild.h"
- #include "Locale.h"
- #include "MarkManager.h"
- #include "PythonPlayer.h"
- #include <boost\algorithm\string\replace.hpp>
- const D3DXCOLOR c_TextTail_Player_Color = D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f);
- const D3DXCOLOR c_TextTail_Monster_Color = D3DXCOLOR(1.0f, 0.0f, 0.0f, 1.0f);
- const D3DXCOLOR c_TextTail_Item_Color = D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f);
- const D3DXCOLOR c_TextTail_Chat_Color = D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f);
- const D3DXCOLOR c_TextTail_Info_Color = D3DXCOLOR(1.0f, 0.785f, 0.785f, 1.0f);
- const D3DXCOLOR c_TextTail_Guild_Name_Color = 0xFFEFD3FF;
- const float c_TextTail_Name_Position = -10.0f;
- const float c_fxMarkPosition = 1.5f;
- const float c_fyGuildNamePosition = 15.0f;
- const float c_fyMarkPosition = 15.0f + 11.0f;
- BOOL bPKTitleEnable = TRUE;
- // TEXTTAIL_LIVINGTIME_CONTROL
- long gs_TextTail_LivingTime = 5000;
- long TextTail_GetLivingTime()
- {
- assert(gs_TextTail_LivingTime>1000);
- return gs_TextTail_LivingTime;
- }
- void TextTail_SetLivingTime(long livingTime)
- {
- gs_TextTail_LivingTime = livingTime;
- }
- // END_OF_TEXTTAIL_LIVINGTIME_CONTROL
- CGraphicText * ms_pFont = NULL;
- void CPythonTextTail::GetInfo(std::string* pstInfo)
- {
- char szInfo[256];
- sprintf(szInfo, "TextTail: ChatTail %d, ChrTail (Map %d, List %d), ItemTail (Map %d, List %d), Pool %d",
- m_ChatTailMap.size(),
- m_CharacterTextTailMap.size(), m_CharacterTextTailList.size(),
- m_ItemTextTailMap.size(), m_ItemTextTailList.size(),
- m_TextTailPool.GetCapacity());
- pstInfo->append(szInfo);
- }
- void CPythonTextTail::UpdateAllTextTail()
- {
- CInstanceBase * pInstance = CPythonCharacterManager::Instance().GetMainInstancePtr();
- if (pInstance)
- {
- TPixelPosition pixelPos;
- pInstance->NEW_GetPixelPosition(&pixelPos);
- TTextTailMap::iterator itorMap;
- for (itorMap = m_CharacterTextTailMap.begin(); itorMap != m_CharacterTextTailMap.end(); ++itorMap)
- {
- UpdateDistance(pixelPos, itorMap->second);
- }
- for (itorMap = m_ItemTextTailMap.begin(); itorMap != m_ItemTextTailMap.end(); ++itorMap)
- {
- UpdateDistance(pixelPos, itorMap->second);
- }
- for (TChatTailMap::iterator itorChat=m_ChatTailMap.begin(); itorChat!=m_ChatTailMap.end(); ++itorChat)
- {
- UpdateDistance(pixelPos, itorChat->second);
- // NOTE : Chat TextTail이 있으면 캐릭터 이름도 출력한다.
- if (itorChat->second->bNameFlag)
- {
- DWORD dwVID = itorChat->first;
- ShowCharacterTextTail(dwVID);
- }
- }
- }
- }
- void CPythonTextTail::UpdateShowingTextTail()
- {
- TTextTailList::iterator itor;
- for (itor = m_ItemTextTailList.begin(); itor != m_ItemTextTailList.end(); ++itor)
- {
- UpdateTextTail(*itor);
- }
- for (TChatTailMap::iterator itorChat=m_ChatTailMap.begin(); itorChat!=m_ChatTailMap.end(); ++itorChat)
- {
- UpdateTextTail(itorChat->second);
- }
- for (itor = m_CharacterTextTailList.begin(); itor != m_CharacterTextTailList.end(); ++itor)
- {
- TTextTail * pTextTail = *itor;
- UpdateTextTail(pTextTail);
- // NOTE : Chat TextTail이 있을 경우 위치를 바꾼다.
- TChatTailMap::iterator itor = m_ChatTailMap.find(pTextTail->dwVirtualID);
- if (m_ChatTailMap.end() != itor)
- {
- TTextTail * pChatTail = itor->second;
- if (pChatTail->bNameFlag)
- {
- pTextTail->y = pChatTail->y - 17.0f;
- }
- }
- }
- }
- void CPythonTextTail::UpdateTextTail(TTextTail * pTextTail)
- {
- if (!pTextTail->pOwner)
- return;
- /////
- CPythonGraphic & rpyGraphic = CPythonGraphic::Instance();
- rpyGraphic.Identity();
- const D3DXVECTOR3 & c_rv3Position = pTextTail->pOwner->GetPosition();
- rpyGraphic.ProjectPosition(c_rv3Position.x,
- c_rv3Position.y,
- c_rv3Position.z + pTextTail->fHeight,
- &pTextTail->x,
- &pTextTail->y,
- &pTextTail->z);
- pTextTail->x = floorf(pTextTail->x);
- pTextTail->y = floorf(pTextTail->y);
- // NOTE : 13m 밖에 있을때만 깊이를 넣습니다 - [levites]
- if (pTextTail->fDistanceFromPlayer < 1300.0f)
- {
- pTextTail->z = 0.0f;
- }
- else
- {
- pTextTail->z = pTextTail->z * CPythonGraphic::Instance().GetOrthoDepth() * -1.0f;
- pTextTail->z += 10.0f;
- }
- }
- void CPythonTextTail::ArrangeTextTail()
- {
- TTextTailList::iterator itor;
- TTextTailList::iterator itorCompare;
- DWORD dwTime = CTimer::Instance().GetCurrentMillisecond();
- for (itor = m_ItemTextTailList.begin(); itor != m_ItemTextTailList.end(); ++itor)
- {
- TTextTail * pInsertTextTail = *itor;
- int yTemp = 5;
- int LimitCount = 0;
- for (itorCompare = m_ItemTextTailList.begin(); itorCompare != m_ItemTextTailList.end();)
- {
- TTextTail * pCompareTextTail = *itorCompare;
- if (*itorCompare == *itor)
- {
- ++itorCompare;
- continue;
- }
- if (LimitCount >= 20)
- break;
- if (isIn(pInsertTextTail, pCompareTextTail))
- {
- pInsertTextTail->y = (pCompareTextTail->y + pCompareTextTail->yEnd + yTemp);
- itorCompare = m_ItemTextTailList.begin();
- ++LimitCount;
- continue;
- }
- ++itorCompare;
- }
- if (pInsertTextTail->pOwnerTextInstance)
- {
- pInsertTextTail->pOwnerTextInstance->SetPosition(pInsertTextTail->x, pInsertTextTail->y, pInsertTextTail->z);
- pInsertTextTail->pOwnerTextInstance->Update();
- pInsertTextTail->pTextInstance->SetColor(pInsertTextTail->Color.r, pInsertTextTail->Color.g, pInsertTextTail->Color.b);
- pInsertTextTail->pTextInstance->SetPosition(pInsertTextTail->x, pInsertTextTail->y + 15.0f, pInsertTextTail->z);
- pInsertTextTail->pTextInstance->Update();
- }
- else
- {
- pInsertTextTail->pTextInstance->SetColor(pInsertTextTail->Color.r, pInsertTextTail->Color.g, pInsertTextTail->Color.b);
- pInsertTextTail->pTextInstance->SetPosition(pInsertTextTail->x, pInsertTextTail->y, pInsertTextTail->z);
- pInsertTextTail->pTextInstance->Update();
- }
- }
- for (itor = m_CharacterTextTailList.begin(); itor != m_CharacterTextTailList.end(); ++itor)
- {
- TTextTail * pTextTail = *itor;
- float fxAdd = 0.0f;
- // Mark 위치 업데이트
- CGraphicMarkInstance * pMarkInstance = pTextTail->pMarkInstance;
- CGraphicTextInstance * pGuildNameInstance = pTextTail->pGuildNameTextInstance;
- #ifdef ENABLE_TITLE_SYSTEM
- CGraphicTextInstance * pMrVegaS_Titan2 = pTextTail->pVegaS_TitleText_tInstance;
- #endif
- #ifdef ENABLE_REBORN_SYSTEM
- float szGlobal_type = 0.0f;
- CGraphicTextInstance * pMrVegaS_Reborn = pTextTail->pReborn_TitleText_tInstance;
- #endif
- if (pMarkInstance && pGuildNameInstance)
- {
- int iWidth, iHeight;
- int iImageHalfSize = pMarkInstance->GetWidth()/2 + c_fxMarkPosition;
- pGuildNameInstance->GetTextSize(&iWidth, &iHeight);
- #ifdef ENABLE_TITLE_SYSTEM
- pMarkInstance->SetPosition(pTextTail->x - iWidth/2 - iImageHalfSize, pTextTail->y - c_fyMarkPosition-15); // 21.04.2016 [VegaS Fix]
- pGuildNameInstance->SetPosition(pTextTail->x + iImageHalfSize, pTextTail->y - c_fyGuildNamePosition-15, pTextTail->z);
- pGuildNameInstance->Update();
- #else
- pMarkInstance->SetPosition(pTextTail->x - iWidth/2 - iImageHalfSize, pTextTail->y - c_fyMarkPosition);
- pGuildNameInstance->SetPosition(pTextTail->x + iImageHalfSize, pTextTail->y - c_fyGuildNamePosition, pTextTail->z);
- pGuildNameInstance->Update();
- #endif
- #ifdef ENABLE_TITLE_SYSTEM
- if (!pMrVegaS_Titan2)
- {
- int iWidth, iHeight;
- int iImageHalfSize = pMarkInstance->GetWidth()/2 + c_fxMarkPosition;
- pGuildNameInstance->GetTextSize(&iWidth, &iHeight);
- pMarkInstance->SetPosition(pTextTail->x - iWidth/2 - iImageHalfSize, pTextTail->y - c_fyMarkPosition);
- pGuildNameInstance->SetPosition(pTextTail->x + iImageHalfSize, pTextTail->y - c_fyGuildNamePosition, pTextTail->z);
- pGuildNameInstance->Update();
- }
- #endif
- }
- #ifdef ENABLE_TITLE_SYSTEM
- if (pMrVegaS_Titan2)
- {
- int iImageHalfSize = 0+c_fxMarkPosition;
- int iLevelWidth, iLevelHeight;
- pMrVegaS_Titan2->GetTextSize(&iLevelWidth, &iLevelHeight);
- if (pMarkInstance && pGuildNameInstance)
- {
- pMrVegaS_Titan2->SetPosition(pTextTail->x + iImageHalfSize, pTextTail->y - c_fyGuildNamePosition, pTextTail->z);
- }
- else
- {
- pMrVegaS_Titan2->SetPosition(pTextTail->x + iImageHalfSize, pTextTail->y - c_fyGuildNamePosition, pTextTail->z);
- }
- pMrVegaS_Titan2->Update();
- }
- #endif
- #ifdef ENABLE_REBORN_SYSTEM
- if (pMrVegaS_Reborn)
- {
- int iVWidth, iVHeight;
- pMrVegaS_Reborn->GetTextSize(&iVWidth,&iVHeight);
- szGlobal_type += iVWidth;
- }
- #endif
- int iNameWidth, iNameHeight;
- pTextTail->pTextInstance->GetTextSize(&iNameWidth, &iNameHeight);
- // Title 위치 업데이트
- CGraphicTextInstance * pTitle = pTextTail->pTitleTextInstance;
- if (pTitle)
- {
- int iTitleWidth, iTitleHeight;
- pTitle->GetTextSize(&iTitleWidth, &iTitleHeight);
- fxAdd = 8.0f;
- if (LocaleService_IsEUROPE()) // 독일어는 명칭이 길어 오른정렬
- {
- if( GetDefaultCodePage() == CP_ARABIC )
- {
- #ifdef ENABLE_REBORN_SYSTEM
- pTitle->SetPosition(pTextTail->x - (iNameWidth / 2) - iTitleWidth - 4.0f - szGlobal_type, pTextTail->y, pTextTail->z);
- #else
- pTitle->SetPosition(pTextTail->x - (iNameWidth / 2) - iTitleWidth - 4.0f, pTextTail->y, pTextTail->z);
- #endif
- }
- else
- {
- #ifdef ENABLE_REBORN_SYSTEM
- pTitle->SetPosition(pTextTail->x - (iNameWidth / 2) - szGlobal_type, pTextTail->y, pTextTail->z);
- #else
- pTitle->SetPosition(pTextTail->x - (iNameWidth / 2), pTextTail->y, pTextTail->z);
- #endif
- }
- }
- else
- {
- pTitle->SetPosition(pTextTail->x - (iNameWidth / 2) - fxAdd, pTextTail->y, pTextTail->z);
- }
- pTitle->Update();
- // Level 위치 업데이트
- CGraphicTextInstance * pLevel = pTextTail->pLevelTextInstance;
- if (pLevel)
- {
- int iLevelWidth, iLevelHeight;
- pLevel->GetTextSize(&iLevelWidth, &iLevelHeight);
- if (LocaleService_IsEUROPE()) // 독일어는 명칭이 길어 오른정렬
- {
- if( GetDefaultCodePage() == CP_ARABIC )
- {
- #ifdef ENABLE_REBORN_SYSTEM
- pLevel->SetPosition(pTextTail->x - (iNameWidth / 2) - iLevelWidth - iTitleWidth - 8.0f - szGlobal_type, pTextTail->y, pTextTail->z);
- #else
- pLevel->SetPosition(pTextTail->x - (iNameWidth / 2) - iLevelWidth - iTitleWidth - 8.0f, pTextTail->y, pTextTail->z);
- #endif
- }
- else
- {
- #ifdef ENABLE_REBORN_SYSTEM
- pLevel->SetPosition(pTextTail->x - (iNameWidth / 2) - iTitleWidth - szGlobal_type, pTextTail->y, pTextTail->z);
- #else
- pLevel->SetPosition(pTextTail->x - (iNameWidth / 2) - iTitleWidth, pTextTail->y, pTextTail->z);
- #endif
- }
- }
- else
- {
- pLevel->SetPosition(pTextTail->x - (iNameWidth / 2) - fxAdd - iTitleWidth, pTextTail->y, pTextTail->z);
- }
- pLevel->Update();
- }
- }
- else
- {
- fxAdd = 4.0f;
- // Level 위치 업데이트
- CGraphicTextInstance * pLevel = pTextTail->pLevelTextInstance;
- if (pLevel)
- {
- int iLevelWidth, iLevelHeight;
- pLevel->GetTextSize(&iLevelWidth, &iLevelHeight);
- if (LocaleService_IsEUROPE()) // 독일어는 명칭이 길어 오른정렬
- {
- if( GetDefaultCodePage() == CP_ARABIC )
- {
- pLevel->SetPosition(pTextTail->x - (iNameWidth / 2) - iLevelWidth - 4.0f, pTextTail->y, pTextTail->z);
- }
- else
- {
- pLevel->SetPosition(pTextTail->x - (iNameWidth / 2), pTextTail->y, pTextTail->z);
- }
- }
- else
- {
- pLevel->SetPosition(pTextTail->x - (iNameWidth / 2) - fxAdd, pTextTail->y, pTextTail->z);
- }
- pLevel->Update();
- }
- }
- #ifdef ENABLE_REBORN_SYSTEM
- if (pMrVegaS_Reborn) // If prestige grade is active
- {
- CGraphicTextInstance * pTitle = pTextTail->pTitleTextInstance;
- CGraphicTextInstance * pLevel = pTextTail->pLevelTextInstance;
- if (!pTitle) // If not exist alignment make other position for reborn
- {
- pLevel->SetPosition(pTextTail->x - (iNameWidth / 2)-szGlobal_type+15, pTextTail->y, pTextTail->z);
- pLevel->Update();
- int iVWidth, iVHeight;
- pMrVegaS_Reborn->GetTextSize(&iVWidth,&iVHeight);
- szGlobal_type += iVWidth;
- pMrVegaS_Reborn->SetPosition(pTextTail->x-(iVWidth/2) - fxAdd-69, pTextTail->y, pTextTail->z); // Set reborn text positions
- pMrVegaS_Reborn->Update();
- }
- else if (pTitle && pLevel) // If alignment and level is active make a other positions for reborn
- {
- int iTitleWidth, iTitleHeight;
- pTitle->GetTextSize(&iTitleWidth, &iTitleHeight);
- pTitle->SetPosition(pTextTail->x - (iNameWidth / 2) - iTitleWidth + 24.0f-szGlobal_type+7, pTextTail->y, pTextTail->z); // Set alignment positions
- pTitle->SetPosition(pTextTail->x - (iNameWidth / 2) - fxAdd+4, pTextTail->y, pTextTail->z);
- pTitle->Update();
- pLevel->SetPosition(pTextTail->x - (iNameWidth / 2)-szGlobal_type-37, pTextTail->y, pTextTail->z); // Change positions text for level
- pLevel->Update();
- int iVWidth, iVHeight;
- pMrVegaS_Reborn->GetTextSize(&iVWidth,&iVHeight);
- szGlobal_type += iVWidth;
- pMrVegaS_Reborn->SetPosition(pTextTail->x - (iNameWidth / 2) - fxAdd-96, pTextTail->y, pTextTail->z); // Set reborn text positions
- pMrVegaS_Reborn->Update();
- }
- }
- #endif
- pTextTail->pTextInstance->SetColor(pTextTail->Color.r, pTextTail->Color.g, pTextTail->Color.b);
- pTextTail->pTextInstance->SetPosition(pTextTail->x + fxAdd, pTextTail->y, pTextTail->z);
- pTextTail->pTextInstance->Update();
- }
- for (TChatTailMap::iterator itorChat=m_ChatTailMap.begin(); itorChat!=m_ChatTailMap.end();)
- {
- TTextTail * pTextTail = itorChat->second;
- if (pTextTail->LivingTime < dwTime)
- {
- DeleteTextTail(pTextTail);
- itorChat = m_ChatTailMap.erase(itorChat);
- continue;
- }
- else
- ++itorChat;
- pTextTail->pTextInstance->SetColor(pTextTail->Color);
- pTextTail->pTextInstance->SetPosition(pTextTail->x, pTextTail->y, pTextTail->z);
- pTextTail->pTextInstance->Update();
- }
- }
- void CPythonTextTail::Render()
- {
- TTextTailList::iterator itor;
- for (itor = m_CharacterTextTailList.begin(); itor != m_CharacterTextTailList.end(); ++itor)
- {
- TTextTail * pTextTail = *itor;
- pTextTail->pTextInstance->Render();
- if (pTextTail->pMarkInstance && pTextTail->pGuildNameTextInstance)
- {
- pTextTail->pMarkInstance->Render();
- pTextTail->pGuildNameTextInstance->Render();
- }
- if (pTextTail->pTitleTextInstance)
- {
- pTextTail->pTitleTextInstance->Render();
- }
- if (pTextTail->pLevelTextInstance)
- {
- pTextTail->pLevelTextInstance->Render();
- }
- #ifdef ENABLE_TITLE_SYSTEM
- if (pTextTail->pVegaS_TitleText_tInstance)
- {
- pTextTail->pVegaS_TitleText_tInstance->Render();
- }
- #endif
- #ifdef ENABLE_REBORN_SYSTEM
- if (pTextTail->pReborn_TitleText_tInstance)
- {
- pTextTail->pReborn_TitleText_tInstance->Render();
- }
- #endif
- }
- for (itor = m_ItemTextTailList.begin(); itor != m_ItemTextTailList.end(); ++itor)
- {
- TTextTail * pTextTail = *itor;
- RenderTextTailBox(pTextTail);
- pTextTail->pTextInstance->Render();
- if (pTextTail->pOwnerTextInstance)
- pTextTail->pOwnerTextInstance->Render();
- }
- for (TChatTailMap::iterator itorChat = m_ChatTailMap.begin(); itorChat!=m_ChatTailMap.end(); ++itorChat)
- {
- TTextTail * pTextTail = itorChat->second;
- if (pTextTail->pOwner->isShow())
- RenderTextTailName(pTextTail);
- }
- }
- void CPythonTextTail::RenderTextTailBox(TTextTail * pTextTail)
- {
- // 검은색 테두리
- CPythonGraphic::Instance().SetDiffuseColor(0.0f, 0.0f, 0.0f, 1.0f);
- CPythonGraphic::Instance().RenderBox2d(pTextTail->x + pTextTail->xStart,
- pTextTail->y + pTextTail->yStart,
- pTextTail->x + pTextTail->xEnd,
- pTextTail->y + pTextTail->yEnd,
- pTextTail->z);
- // 검은색 투명박스
- CPythonGraphic::Instance().SetDiffuseColor(0.0f, 0.0f, 0.0f, 0.3f);
- CPythonGraphic::Instance().RenderBar2d(pTextTail->x + pTextTail->xStart,
- pTextTail->y + pTextTail->yStart,
- pTextTail->x + pTextTail->xEnd,
- pTextTail->y + pTextTail->yEnd,
- pTextTail->z);
- }
- void CPythonTextTail::RenderTextTailName(TTextTail * pTextTail)
- {
- pTextTail->pTextInstance->Render();
- }
- void CPythonTextTail::HideAllTextTail()
- {
- // NOTE : Show All을 해준뒤 Hide All을 해주지 않으면 문제 발생 가능성 있음
- // 디자인 자체가 그렇게 깔끔하게 되지 않았음 - [levites]
- m_CharacterTextTailList.clear();
- m_ItemTextTailList.clear();
- }
- void CPythonTextTail::UpdateDistance(const TPixelPosition & c_rCenterPosition, TTextTail * pTextTail)
- {
- const D3DXVECTOR3 & c_rv3Position = pTextTail->pOwner->GetPosition();
- D3DXVECTOR2 v2Distance(c_rv3Position.x - c_rCenterPosition.x, -c_rv3Position.y - c_rCenterPosition.y);
- pTextTail->fDistanceFromPlayer = D3DXVec2Length(&v2Distance);
- }
- void CPythonTextTail::ShowAllTextTail()
- {
- TTextTailMap::iterator itor;
- for (itor = m_CharacterTextTailMap.begin(); itor != m_CharacterTextTailMap.end(); ++itor)
- {
- TTextTail * pTextTail = itor->second;
- if (pTextTail->fDistanceFromPlayer < 3500.0f)
- ShowCharacterTextTail(itor->first);
- }
- for (itor = m_ItemTextTailMap.begin(); itor != m_ItemTextTailMap.end(); ++itor)
- {
- TTextTail * pTextTail = itor->second;
- if (pTextTail->fDistanceFromPlayer < 3500.0f)
- ShowItemTextTail(itor->first);
- }
- }
- void CPythonTextTail::ShowCharacterTextTail(DWORD VirtualID)
- {
- TTextTailMap::iterator itor = m_CharacterTextTailMap.find(VirtualID);
- if (m_CharacterTextTailMap.end() == itor)
- return;
- TTextTail * pTextTail = itor->second;
- if (m_CharacterTextTailList.end() != std::find(m_CharacterTextTailList.begin(), m_CharacterTextTailList.end(), pTextTail))
- {
- //Tracef("이미 리스트에 있음 : %d\n", VirtualID);
- return;
- }
- // NOTE : ShowAll 시에는 모든 Instance 의 Pointer 를 찾아서 체크하므로 부하가 걸릴 가능성도 있다.
- // CInstanceBase 가 TextTail 을 직접 가지고 있는 것이 가장 좋은 형태일 듯..
- if (!pTextTail->pOwner->isShow())
- return;
- CInstanceBase * pInstance = CPythonCharacterManager::Instance().GetInstancePtr(pTextTail->dwVirtualID);
- if (!pInstance)
- return;
- if (pInstance->IsGuildWall())
- return;
- if (pInstance->CanPickInstance())
- m_CharacterTextTailList.push_back(pTextTail);
- }
- void CPythonTextTail::ShowItemTextTail(DWORD VirtualID)
- {
- TTextTailMap::iterator itor = m_ItemTextTailMap.find(VirtualID);
- if (m_ItemTextTailMap.end() == itor)
- return;
- TTextTail * pTextTail = itor->second;
- if (m_ItemTextTailList.end() != std::find(m_ItemTextTailList.begin(), m_ItemTextTailList.end(), pTextTail))
- {
- //Tracef("이미 리스트에 있음 : %d\n", VirtualID);
- return;
- }
- m_ItemTextTailList.push_back(pTextTail);
- }
- bool CPythonTextTail::isIn(CPythonTextTail::TTextTail * pSource, CPythonTextTail::TTextTail * pTarget)
- {
- float x1Source = pSource->x + pSource->xStart;
- float y1Source = pSource->y + pSource->yStart;
- float x2Source = pSource->x + pSource->xEnd;
- float y2Source = pSource->y + pSource->yEnd;
- float x1Target = pTarget->x + pTarget->xStart;
- float y1Target = pTarget->y + pTarget->yStart;
- float x2Target = pTarget->x + pTarget->xEnd;
- float y2Target = pTarget->y + pTarget->yEnd;
- if (x1Source <= x2Target && x2Source >= x1Target &&
- y1Source <= y2Target && y2Source >= y1Target)
- {
- return true;
- }
- return false;
- }
- void CPythonTextTail::RegisterCharacterTextTail(DWORD dwGuildID, DWORD dwVirtualID, const D3DXCOLOR & c_rColor, float fAddHeight)
- {
- CInstanceBase * pCharacterInstance = CPythonCharacterManager::Instance().GetInstancePtr(dwVirtualID);
- if (!pCharacterInstance)
- return;
- TTextTail * pTextTail = RegisterTextTail(dwVirtualID,
- pCharacterInstance->GetNameString(),
- pCharacterInstance->GetGraphicThingInstancePtr(),
- pCharacterInstance->GetGraphicThingInstanceRef().GetHeight() + fAddHeight,
- c_rColor);
- CGraphicTextInstance * pTextInstance = pTextTail->pTextInstance;
- pTextInstance->SetOutline(true);
- pTextInstance->SetVerticalAlign(CGraphicTextInstance::VERTICAL_ALIGN_BOTTOM);
- pTextTail->pMarkInstance=NULL;
- pTextTail->pGuildNameTextInstance=NULL;
- pTextTail->pTitleTextInstance=NULL;
- pTextTail->pLevelTextInstance=NULL;
- #ifdef ENABLE_TITLE_SYSTEM
- pTextTail->pVegaS_TitleText_tInstance=NULL;
- #endif
- #ifdef ENABLE_REBORN_SYSTEM
- pTextTail->pReborn_TitleText_tInstance=NULL;
- #endif
- if (0 != dwGuildID)
- {
- pTextTail->pMarkInstance = CGraphicMarkInstance::New();
- DWORD dwMarkID = CGuildMarkManager::Instance().GetMarkID(dwGuildID);
- if (dwMarkID != CGuildMarkManager::INVALID_MARK_ID)
- {
- std::string markImagePath;
- if (CGuildMarkManager::Instance().GetMarkImageFilename(dwMarkID / CGuildMarkImage::MARK_TOTAL_COUNT, markImagePath))
- {
- pTextTail->pMarkInstance->SetImageFileName(markImagePath.c_str());
- pTextTail->pMarkInstance->Load();
- pTextTail->pMarkInstance->SetIndex(dwMarkID % CGuildMarkImage::MARK_TOTAL_COUNT);
- }
- }
- std::string strGuildName;
- if (!CPythonGuild::Instance().GetGuildName(dwGuildID, &strGuildName))
- strGuildName = "Noname";
- CGraphicTextInstance *& prGuildNameInstance = pTextTail->pGuildNameTextInstance;
- prGuildNameInstance = CGraphicTextInstance::New();
- prGuildNameInstance->SetTextPointer(ms_pFont);
- prGuildNameInstance->SetOutline(true);
- prGuildNameInstance->SetHorizonalAlign(CGraphicTextInstance::HORIZONTAL_ALIGN_CENTER);
- prGuildNameInstance->SetVerticalAlign(CGraphicTextInstance::VERTICAL_ALIGN_BOTTOM);
- prGuildNameInstance->SetValue(strGuildName.c_str());
- prGuildNameInstance->SetColor(c_TextTail_Guild_Name_Color.r, c_TextTail_Guild_Name_Color.g, c_TextTail_Guild_Name_Color.b);
- prGuildNameInstance->Update();
- }
- m_CharacterTextTailMap.insert(TTextTailMap::value_type(dwVirtualID, pTextTail));
- }
- void CPythonTextTail::RegisterItemTextTail(DWORD VirtualID, const char * c_szText, CGraphicObjectInstance * pOwner)
- {
- #ifdef __DEBUG
- char szName[256];
- spritnf(szName, "%s[%d]", c_szText, VirtualID);
- TTextTail * pTextTail = RegisterTextTail(VirtualID, c_szText, pOwner, c_TextTail_Name_Position, c_TextTail_Item_Color);
- m_ItemTextTailMap.insert(TTextTailMap::value_type(VirtualID, pTextTail));
- #else
- TTextTail * pTextTail = RegisterTextTail(VirtualID, c_szText, pOwner, c_TextTail_Name_Position, c_TextTail_Item_Color);
- m_ItemTextTailMap.insert(TTextTailMap::value_type(VirtualID, pTextTail));
- #endif
- }
- void CPythonTextTail::RegisterChatTail(DWORD VirtualID, const char * c_szChat)
- {
- CInstanceBase * pCharacterInstance = CPythonCharacterManager::Instance().GetInstancePtr(VirtualID);
- if (!pCharacterInstance)
- return;
- TChatTailMap::iterator itor = m_ChatTailMap.find(VirtualID);
- std::string strContent = c_szChat;
- char text[69][69] = {":**", "O:)", "~X(", "=D>", ">3", "X(", ";;)",
- ";))", "\:D/", ":^>", ">:/", "=((", ":-c", ":-@",
- ":O)", ":-/", ":((", ":D", "8->", ">:)", ":o3",
- ":-<", ":-$", "=P~", "(pow)", ":-L", ">:P", ";)",
- "<3", ":!!", "@-)", "^#(^", ":*", ":))", ":^o",
- ":X", ":-SS", ":-B", "%-(", "[-(", "^:)^", ":-j",
- ":)]", "<:-P", ":P", ":ar!", "[-o<", "\m/", "8-/",
- "=))", "@};-", ":(", "[-x", ":-&", ":-^", "8-}",
- "/-)", ":)", ":>", ":/", "B-)", ":O", "=;",
- ":-?", ":-t", ":-w", ":-h"};
- char emoji[69][69] = {"|Eemoji/yahoo/2love|e", "|Eemoji/yahoo/angel|e", "|Eemoji/yahoo/at-wits-end|e", "|Eemoji/yahoo/applause|e", "|Eemoji/yahoo/arrow|e", "|Eemoji/yahoo/angry-or-grumpy|e", "|Eemoji/yahoo/batting-eyelashes|e",
- "|Eemoji/yahoo/giggle-or-hee-hee|e", "|Eemoji/yahoo/dancing|e", "|Eemoji/yahoo/blushing|e", "|Eemoji/yahoo/bring-it-on|e", "|Eemoji/yahoo/broken-heart|e", "|Eemoji/yahoo/call-me|e", "|Eemoji/yahoo/chatterbox|e",
- "|Eemoji/yahoo/clown|e", "|Eemoji/yahoo/confused|e", "|Eemoji/yahoo/crying|e", "|Eemoji/yahoo/big-grin|e", "|Eemoji/yahoo/daydreaming|e", "|Eemoji/yahoo/devil|e", "|Eemoji/yahoo/dog|e",
- "|Eemoji/yahoo/doh!|e", "|Eemoji/yahoo/do-not-tell-anyone|e", "|Eemoji/yahoo/drooling|e", "|Eemoji/yahoo/fortziki|e", "|Eemoji/yahoo/frustrated|e", "|Eemoji/yahoo/phbbbbt-or-upset|e", "|Eemoji/yahoo/beat-up|e",
- "|Eemoji/yahoo/heart|e", "|Eemoji/yahoo/hurry-up|e", "|Eemoji/yahoo/hypnotized|e", "|Eemoji/yahoo/it-was-not-me|e", "|Eemoji/yahoo/kiss|e", "|Eemoji/yahoo/laughing|e", "|Eemoji/yahoo/liar-liar|e",
- "|Eemoji/yahoo/love-struck|e", "|Eemoji/yahoo/nail-biting|e", "|Eemoji/yahoo/nerd|e", "|Eemoji/yahoo/not-listening|e", "|Eemoji/yahoo/not-talking|e", "|Eemoji/yahoo/not-worthy|e", "|Eemoji/yahoo/oh-go-on|e",
- "|Eemoji/yahoo/on-the-phone|e", "|Eemoji/yahoo/party|e", "|Eemoji/yahoo/frustrated-or-sticking-tongue-out|e", "|Eemoji/yahoo/pirate|e", "|Eemoji/yahoo/praying|e", "|Eemoji/yahoo/rocking|e", "|Eemoji/yahoo/rolling-eyes|e",
- "|Eemoji/yahoo/rolling-on-the-floor-laughing|e", "|Eemoji/yahoo/rose|e", "|Eemoji/yahoo/sad-or-frown-face|e", "|Eemoji/yahoo/shame-on-you|e", "|Eemoji/yahoo/sick|e", "|Eemoji/yahoo/whistling|e", "|Eemoji/yahoo/silly|e",
- "|Eemoji/yahoo/sleepy|e", "|Eemoji/yahoo/smile-or-happy-face|e", "|Eemoji/yahoo/smug|e", "|Eemoji/yahoo/straight-face|e", "|Eemoji/yahoo/sunglasses-or-cool|e", "|Eemoji/yahoo/surprised|e", "|Eemoji/yahoo/talk-to-the-hand|e",
- "|Eemoji/yahoo/thinking|e", "|Eemoji/yahoo/time-out|e", "|Eemoji/yahoo/waiting|e", "|Eemoji/yahoo/wave|e"};
- if (strContent.find("http") == std::string::npos)
- for (int i = 0; i < 69; i++)
- boost::algorithm::replace_all(strContent, text[i], emoji[i]);
- if (m_ChatTailMap.end() != itor)
- {
- TTextTail * pTextTail = itor->second;
- pTextTail->pTextInstance->SetValue(strContent.c_str());
- pTextTail->pTextInstance->Update();
- pTextTail->Color = c_TextTail_Chat_Color;
- pTextTail->pTextInstance->SetColor(c_TextTail_Chat_Color);
- // TEXTTAIL_LIVINGTIME_CONTROL
- pTextTail->LivingTime = CTimer::Instance().GetCurrentMillisecond() + TextTail_GetLivingTime();
- // END_OF_TEXTTAIL_LIVINGTIME_CONTROL
- pTextTail->bNameFlag = TRUE;
- return;
- }
- //TTextTail * pTextTail = RegisterTextTail(VirtualID,
- // c_szChat,
- // pCharacterInstance->GetGraphicThingInstancePtr(),
- // pCharacterInstance->GetGraphicThingInstanceRef().GetHeight() + 10.0f,
- // c_TextTail_Chat_Color);
- TTextTail * pTextTail = RegisterTextTail(VirtualID,
- strContent.c_str(),
- pCharacterInstance->GetGraphicThingInstancePtr(),
- pCharacterInstance->GetGraphicThingInstanceRef().GetHeight() + 10.0f,
- c_TextTail_Chat_Color);
- // TEXTTAIL_LIVINGTIME_CONTROL
- pTextTail->LivingTime = CTimer::Instance().GetCurrentMillisecond() + TextTail_GetLivingTime();
- // END_OF_TEXTTAIL_LIVINGTIME_CONTROL
- pTextTail->bNameFlag = TRUE;
- pTextTail->pTextInstance->SetOutline(true);
- pTextTail->pTextInstance->SetVerticalAlign(CGraphicTextInstance::VERTICAL_ALIGN_BOTTOM);
- m_ChatTailMap.insert(TTextTailMap::value_type(VirtualID, pTextTail));
- }
- void CPythonTextTail::RegisterInfoTail(DWORD VirtualID, const char * c_szChat)
- {
- CInstanceBase * pCharacterInstance = CPythonCharacterManager::Instance().GetInstancePtr(VirtualID);
- if (!pCharacterInstance)
- return;
- TChatTailMap::iterator itor = m_ChatTailMap.find(VirtualID);
- if (m_ChatTailMap.end() != itor)
- {
- TTextTail * pTextTail = itor->second;
- pTextTail->pTextInstance->SetValue(c_szChat);
- pTextTail->pTextInstance->Update();
- pTextTail->Color = c_TextTail_Info_Color;
- pTextTail->pTextInstance->SetColor(c_TextTail_Info_Color);
- // TEXTTAIL_LIVINGTIME_CONTROL
- pTextTail->LivingTime = CTimer::Instance().GetCurrentMillisecond() + TextTail_GetLivingTime();
- // END_OF_TEXTTAIL_LIVINGTIME_CONTROL
- pTextTail->bNameFlag = FALSE;
- return;
- }
- TTextTail * pTextTail = RegisterTextTail(VirtualID,
- c_szChat,
- pCharacterInstance->GetGraphicThingInstancePtr(),
- pCharacterInstance->GetGraphicThingInstanceRef().GetHeight() + 10.0f,
- c_TextTail_Info_Color);
- // TEXTTAIL_LIVINGTIME_CONTROL
- pTextTail->LivingTime = CTimer::Instance().GetCurrentMillisecond() + TextTail_GetLivingTime();
- // END_OF_TEXTTAIL_LIVINGTIME_CONTROL
- pTextTail->bNameFlag = FALSE;
- pTextTail->pTextInstance->SetOutline(true);
- pTextTail->pTextInstance->SetVerticalAlign(CGraphicTextInstance::VERTICAL_ALIGN_BOTTOM);
- m_ChatTailMap.insert(TTextTailMap::value_type(VirtualID, pTextTail));
- }
- bool CPythonTextTail::GetTextTailPosition(DWORD dwVID, float* px, float* py, float* pz)
- {
- TTextTailMap::iterator itorCharacter = m_CharacterTextTailMap.find(dwVID);
- if (m_CharacterTextTailMap.end() == itorCharacter)
- {
- return false;
- }
- TTextTail * pTextTail = itorCharacter->second;
- *px=pTextTail->x;
- *py=pTextTail->y;
- *pz=pTextTail->z;
- return true;
- }
- bool CPythonTextTail::IsChatTextTail(DWORD dwVID)
- {
- TChatTailMap::iterator itorChat = m_ChatTailMap.find(dwVID);
- if (m_ChatTailMap.end() == itorChat)
- return false;
- return true;
- }
- void CPythonTextTail::SetCharacterTextTailColor(DWORD VirtualID, const D3DXCOLOR & c_rColor)
- {
- TTextTailMap::iterator itorCharacter = m_CharacterTextTailMap.find(VirtualID);
- if (m_CharacterTextTailMap.end() == itorCharacter)
- return;
- TTextTail * pTextTail = itorCharacter->second;
- pTextTail->pTextInstance->SetColor(c_rColor);
- pTextTail->Color = c_rColor;
- }
- void CPythonTextTail::SetItemTextTailOwner(DWORD dwVID, const char * c_szName)
- {
- TTextTailMap::iterator itor = m_ItemTextTailMap.find(dwVID);
- if (m_ItemTextTailMap.end() == itor)
- return;
- TTextTail * pTextTail = itor->second;
- if (strlen(c_szName) > 0)
- {
- if (!pTextTail->pOwnerTextInstance)
- {
- pTextTail->pOwnerTextInstance = CGraphicTextInstance::New();
- }
- std::string strName = c_szName;
- static const string & strOwnership = ApplicationStringTable_GetString(IDS_POSSESSIVE_MORPHENE) == "" ? "'s" : ApplicationStringTable_GetString(IDS_POSSESSIVE_MORPHENE);
- strName += strOwnership;
- pTextTail->pOwnerTextInstance->SetTextPointer(ms_pFont);
- pTextTail->pOwnerTextInstance->SetHorizonalAlign(CGraphicTextInstance::HORIZONTAL_ALIGN_CENTER);
- pTextTail->pOwnerTextInstance->SetValue(strName.c_str());
- pTextTail->pOwnerTextInstance->SetColor(1.0f, 1.0f, 0.0f);
- pTextTail->pOwnerTextInstance->Update();
- int xOwnerSize, yOwnerSize;
- pTextTail->pOwnerTextInstance->GetTextSize(&xOwnerSize, &yOwnerSize);
- pTextTail->yStart = -2.0f;
- pTextTail->yEnd += float(yOwnerSize + 4);
- pTextTail->xStart = fMIN(pTextTail->xStart, float(-xOwnerSize / 2 - 1));
- pTextTail->xEnd = fMAX(pTextTail->xEnd, float(xOwnerSize / 2 + 1));
- }
- else
- {
- if (pTextTail->pOwnerTextInstance)
- {
- CGraphicTextInstance::Delete(pTextTail->pOwnerTextInstance);
- pTextTail->pOwnerTextInstance = NULL;
- }
- int xSize, ySize;
- pTextTail->pTextInstance->GetTextSize(&xSize, &ySize);
- pTextTail->xStart = (float) (-xSize / 2 - 2);
- pTextTail->yStart = -2.0f;
- pTextTail->xEnd = (float) (xSize / 2 + 2);
- pTextTail->yEnd = (float) ySize;
- }
- }
- void CPythonTextTail::DeleteCharacterTextTail(DWORD VirtualID)
- {
- TTextTailMap::iterator itorCharacter = m_CharacterTextTailMap.find(VirtualID);
- TTextTailMap::iterator itorChat = m_ChatTailMap.find(VirtualID);
- if (m_CharacterTextTailMap.end() != itorCharacter)
- {
- DeleteTextTail(itorCharacter->second);
- m_CharacterTextTailMap.erase(itorCharacter);
- }
- else
- {
- Tracenf("CPythonTextTail::DeleteCharacterTextTail - Find VID[%d] Error", VirtualID);
- }
- if (m_ChatTailMap.end() != itorChat)
- {
- DeleteTextTail(itorChat->second);
- m_ChatTailMap.erase(itorChat);
- }
- }
- void CPythonTextTail::DeleteItemTextTail(DWORD VirtualID)
- {
- TTextTailMap::iterator itor = m_ItemTextTailMap.find(VirtualID);
- if (m_ItemTextTailMap.end() == itor)
- {
- Tracef(" CPythonTextTail::DeleteItemTextTail - None Item Text Tail\n");
- return;
- }
- DeleteTextTail(itor->second);
- m_ItemTextTailMap.erase(itor);
- }
- CPythonTextTail::TTextTail * CPythonTextTail::RegisterTextTail(DWORD dwVirtualID, const char * c_szText, CGraphicObjectInstance * pOwner, float fHeight, const D3DXCOLOR & c_rColor)
- {
- TTextTail * pTextTail = m_TextTailPool.Alloc();
- pTextTail->dwVirtualID = dwVirtualID;
- pTextTail->pOwner = pOwner;
- pTextTail->pTextInstance = CGraphicTextInstance::New();
- pTextTail->pOwnerTextInstance = NULL;
- pTextTail->fHeight = fHeight;
- pTextTail->pTextInstance->SetTextPointer(ms_pFont);
- pTextTail->pTextInstance->SetHorizonalAlign(CGraphicTextInstance::HORIZONTAL_ALIGN_CENTER);
- pTextTail->pTextInstance->SetValue(c_szText);
- pTextTail->pTextInstance->SetColor(c_rColor.r, c_rColor.g, c_rColor.b);
- pTextTail->pTextInstance->Update();
- int xSize, ySize;
- pTextTail->pTextInstance->GetTextSize(&xSize, &ySize);
- pTextTail->xStart = (float) (-xSize / 2 - 2);
- pTextTail->yStart = -2.0f;
- pTextTail->xEnd = (float) (xSize / 2 + 2);
- pTextTail->yEnd = (float) ySize;
- pTextTail->Color = c_rColor;
- pTextTail->fDistanceFromPlayer = 0.0f;
- pTextTail->x = -100.0f;
- pTextTail->y = -100.0f;
- pTextTail->z = 0.0f;
- pTextTail->pMarkInstance = NULL;
- pTextTail->pGuildNameTextInstance = NULL;
- pTextTail->pTitleTextInstance = NULL;
- pTextTail->pLevelTextInstance = NULL;
- #ifdef ENABLE_TITLE_SYSTEM
- pTextTail->pVegaS_TitleText_tInstance = NULL;
- #endif
- #ifdef ENABLE_REBORN_SYSTEM
- pTextTail->pReborn_TitleText_tInstance = NULL;
- #endif
- return pTextTail;
- }
- void CPythonTextTail::DeleteTextTail(TTextTail * pTextTail)
- {
- if (pTextTail->pTextInstance)
- {
- CGraphicTextInstance::Delete(pTextTail->pTextInstance);
- pTextTail->pTextInstance = NULL;
- }
- if (pTextTail->pOwnerTextInstance)
- {
- CGraphicTextInstance::Delete(pTextTail->pOwnerTextInstance);
- pTextTail->pOwnerTextInstance = NULL;
- }
- if (pTextTail->pMarkInstance)
- {
- CGraphicMarkInstance::Delete(pTextTail->pMarkInstance);
- pTextTail->pMarkInstance = NULL;
- }
- if (pTextTail->pGuildNameTextInstance)
- {
- CGraphicTextInstance::Delete(pTextTail->pGuildNameTextInstance);
- pTextTail->pGuildNameTextInstance = NULL;
- }
- if (pTextTail->pTitleTextInstance)
- {
- CGraphicTextInstance::Delete(pTextTail->pTitleTextInstance);
- pTextTail->pTitleTextInstance = NULL;
- }
- if (pTextTail->pLevelTextInstance)
- {
- CGraphicTextInstance::Delete(pTextTail->pLevelTextInstance);
- pTextTail->pLevelTextInstance = NULL;
- }
- #ifdef ENABLE_TITLE_SYSTEM
- if (pTextTail->pVegaS_TitleText_tInstance)
- {
- CGraphicTextInstance::Delete(pTextTail->pVegaS_TitleText_tInstance);
- pTextTail->pVegaS_TitleText_tInstance = NULL;
- }
- #endif
- #ifdef ENABLE_REBORN_SYSTEM
- if (pTextTail->pReborn_TitleText_tInstance)
- {
- CGraphicTextInstance::Delete(pTextTail->pReborn_TitleText_tInstance);
- pTextTail->pReborn_TitleText_tInstance = NULL;
- }
- #endif
- m_TextTailPool.Free(pTextTail);
- }
- int CPythonTextTail::Pick(int ixMouse, int iyMouse)
- {
- for (TTextTailMap::iterator itor = m_ItemTextTailMap.begin(); itor != m_ItemTextTailMap.end(); ++itor)
- {
- TTextTail * pTextTail = itor->second;
- if (ixMouse >= pTextTail->x + pTextTail->xStart && ixMouse <= pTextTail->x + pTextTail->xEnd &&
- iyMouse >= pTextTail->y + pTextTail->yStart && iyMouse <= pTextTail->y + pTextTail->yEnd)
- {
- SelectItemName(itor->first);
- return (itor->first);
- }
- }
- return -1;
- }
- void CPythonTextTail::SelectItemName(DWORD dwVirtualID)
- {
- TTextTailMap::iterator itor = m_ItemTextTailMap.find(dwVirtualID);
- if (m_ItemTextTailMap.end() == itor)
- return;
- TTextTail * pTextTail = itor->second;
- pTextTail->pTextInstance->SetColor(0.1f, 0.9f, 0.1f);
- }
- void CPythonTextTail::AttachTitle(DWORD dwVID, const char * c_szName, const D3DXCOLOR & c_rColor)
- {
- if (!bPKTitleEnable)
- return;
- TTextTailMap::iterator itor = m_CharacterTextTailMap.find(dwVID);
- if (m_CharacterTextTailMap.end() == itor)
- return;
- TTextTail * pTextTail = itor->second;
- CGraphicTextInstance *& prTitle = pTextTail->pTitleTextInstance;
- if (!prTitle)
- {
- prTitle = CGraphicTextInstance::New();
- prTitle->SetTextPointer(ms_pFont);
- prTitle->SetOutline(true);
- if (LocaleService_IsEUROPE())
- prTitle->SetHorizonalAlign(CGraphicTextInstance::HORIZONTAL_ALIGN_RIGHT);
- else
- prTitle->SetHorizonalAlign(CGraphicTextInstance::HORIZONTAL_ALIGN_CENTER);
- prTitle->SetVerticalAlign(CGraphicTextInstance::VERTICAL_ALIGN_BOTTOM);
- }
- prTitle->SetValue(c_szName);
- prTitle->SetColor(c_rColor.r, c_rColor.g, c_rColor.b);
- prTitle->Update();
- }
- void CPythonTextTail::DetachTitle(DWORD dwVID)
- {
- if (!bPKTitleEnable)
- return;
- TTextTailMap::iterator itor = m_CharacterTextTailMap.find(dwVID);
- if (m_CharacterTextTailMap.end() == itor)
- return;
- TTextTail * pTextTail = itor->second;
- if (pTextTail->pTitleTextInstance)
- {
- CGraphicTextInstance::Delete(pTextTail->pTitleTextInstance);
- pTextTail->pTitleTextInstance = NULL;
- }
- }
- #ifdef ENABLE_TITLE_SYSTEM
- void CPythonTextTail::AttachPrestige_(DWORD dwVID, const char * c_szName, const D3DXCOLOR & c_rColor)
- {
- if (!bPKTitleEnable)
- return;
- TTextTailMap::iterator itor = m_CharacterTextTailMap.find(dwVID);
- if (m_CharacterTextTailMap.end() == itor)
- return;
- TTextTail * pTextTail = itor->second;
- CGraphicTextInstance *& prMrVegaS = pTextTail->pVegaS_TitleText_tInstance;
- if (!prMrVegaS)
- {
- prMrVegaS = CGraphicTextInstance::New();
- prMrVegaS->SetTextPointer(ms_pFont);
- prMrVegaS->SetOutline(true);
- prMrVegaS->SetHorizonalAlign(CGraphicTextInstance::HORIZONTAL_ALIGN_CENTER);
- prMrVegaS->SetVerticalAlign(CGraphicTextInstance::VERTICAL_ALIGN_BOTTOM);
- }
- prMrVegaS->SetValue(c_szName);
- prMrVegaS->SetColor(c_rColor.r, c_rColor.g, c_rColor.b);
- prMrVegaS->Update();
- }
- void CPythonTextTail::DetachPrestige_(DWORD dwVID)
- {
- if (!bPKTitleEnable)
- return;
- TTextTailMap::iterator itor = m_CharacterTextTailMap.find(dwVID);
- if (m_CharacterTextTailMap.end() == itor)
- return;
- TTextTail * pTextTail = itor->second;
- if (pTextTail->pVegaS_TitleText_tInstance)
- {
- CGraphicTextInstance::Delete(pTextTail->pVegaS_TitleText_tInstance);
- pTextTail->pVegaS_TitleText_tInstance = NULL;
- }
- }
- #endif
- #ifdef ENABLE_REBORN_SYSTEM
- void CPythonTextTail::AttachReborn_(DWORD dwVID, const char * c_szName, const D3DXCOLOR & c_rColor)
- {
- if (!bPKTitleEnable)
- return;
- TTextTailMap::iterator itor = m_CharacterTextTailMap.find(dwVID);
- if (m_CharacterTextTailMap.end() == itor)
- return;
- TTextTail * pTextTail = itor->second;
- CGraphicTextInstance *& prReborn = pTextTail->pReborn_TitleText_tInstance;
- if (!prReborn)
- {
- prReborn = CGraphicTextInstance::New();
- prReborn->SetTextPointer(ms_pFont);
- prReborn->SetOutline(true);
- prReborn->SetHorizonalAlign(CGraphicTextInstance::HORIZONTAL_ALIGN_CENTER);
- prReborn->SetVerticalAlign(CGraphicTextInstance::VERTICAL_ALIGN_BOTTOM);
- }
- prReborn->SetValue(c_szName);
- prReborn->SetColor(c_rColor.r, c_rColor.g, c_rColor.b);
- prReborn->Update();
- }
- void CPythonTextTail::DetachReborn_(DWORD dwVID)
- {
- if (!bPKTitleEnable)
- return;
- TTextTailMap::iterator itor = m_CharacterTextTailMap.find(dwVID);
- if (m_CharacterTextTailMap.end() == itor)
- return;
- TTextTail * pTextTail = itor->second;
- if (pTextTail->pReborn_TitleText_tInstance)
- {
- CGraphicTextInstance::Delete(pTextTail->pReborn_TitleText_tInstance);
- pTextTail->pReborn_TitleText_tInstance = NULL;
- }
- }
- #endif
- void CPythonTextTail::EnablePKTitle(BOOL bFlag)
- {
- bPKTitleEnable = bFlag;
- }
- void CPythonTextTail::AttachLevel(DWORD dwVID, const char * c_szText, const D3DXCOLOR & c_rColor)
- {
- if (!bPKTitleEnable)
- return;
- TTextTailMap::iterator itor = m_CharacterTextTailMap.find(dwVID);
- if (m_CharacterTextTailMap.end() == itor)
- return;
- TTextTail * pTextTail = itor->second;
- CGraphicTextInstance *& prLevel = pTextTail->pLevelTextInstance;
- if (!prLevel)
- {
- prLevel = CGraphicTextInstance::New();
- prLevel->SetTextPointer(ms_pFont);
- prLevel->SetOutline(true);
- prLevel->SetHorizonalAlign(CGraphicTextInstance::HORIZONTAL_ALIGN_RIGHT);
- prLevel->SetVerticalAlign(CGraphicTextInstance::VERTICAL_ALIGN_BOTTOM);
- }
- prLevel->SetValue(c_szText);
- prLevel->SetColor(c_rColor.r, c_rColor.g, c_rColor.b);
- prLevel->Update();
- }
- void CPythonTextTail::DetachLevel(DWORD dwVID)
- {
- if (!bPKTitleEnable)
- return;
- TTextTailMap::iterator itor = m_CharacterTextTailMap.find(dwVID);
- if (m_CharacterTextTailMap.end() == itor)
- return;
- TTextTail * pTextTail = itor->second;
- if (pTextTail->pLevelTextInstance)
- {
- CGraphicTextInstance::Delete(pTextTail->pLevelTextInstance);
- pTextTail->pLevelTextInstance = NULL;
- }
- }
- void CPythonTextTail::Initialize()
- {
- // DEFAULT_FONT
- //ms_pFont = (CGraphicText *)CResourceManager::Instance().GetTypeResourcePointer(g_strDefaultFontName.c_str());
- CGraphicText* pkDefaultFont = static_cast<CGraphicText*>(DefaultFont_GetResource());
- if (!pkDefaultFont)
- {
- TraceError("CPythonTextTail::Initialize - CANNOT_FIND_DEFAULT_FONT");
- return;
- }
- ms_pFont = pkDefaultFont;
- // END_OF_DEFAULT_FONT
- }
- void CPythonTextTail::Destroy()
- {
- m_TextTailPool.Clear();
- }
- void CPythonTextTail::Clear()
- {
- m_CharacterTextTailMap.clear();
- m_CharacterTextTailList.clear();
- m_ItemTextTailMap.clear();
- m_ItemTextTailList.clear();
- m_ChatTailMap.clear();
- m_TextTailPool.Clear();
- }
- CPythonTextTail::CPythonTextTail()
- {
- Clear();
- }
- CPythonTextTail::~CPythonTextTail()
- {
- Destroy();
- }
Advertisement
Add Comment
Please, Sign In to add comment