void MFrameDrawer::Text(MDrawContext* pDC, MRECT& r, const char* szText, MAlignmentMode am, MFDTextStyle nTextStyle, bool bHighlight) { MRECT rc; rc = pDC->GetClipRect(); pDC->SetClipRect(r); switch(nTextStyle) { case MFDTS_ACTIVE: pDC->SetColor(MCOLOR(255, 255, 255)); if(bHighlight==true) pDC->TextWithHighlight(r, szText, am); else pDC->Text(r, szText, am); break; case MFDTS_DISABLE: { pDC->SetColor(MCOLOR(96, 96, 96)); MCOLOR PrevHCol = pDC->SetHighlightColor(MCOLOR(128, 128, 128)); if(bHighlight==true) pDC->TextWithHighlight(r, szText, am); else pDC->Text(r, szText, am); pDC->SetHighlightColor(PrevHCol); } break; case MFDTS_NORMAL: default: pDC->SetColor(MCOLOR(196, 196, 196)); if(bHighlight==true) pDC->TextWithHighlight(r, szText, am); else pDC->Text(r, szText, am); break; } pDC->SetClipRect(rc); }
void Mint::DrawIndicator(MDrawContext* pDC, MRECT& r) { MFont* pFont = pDC->GetFont(); int nFontHeight = pFont->GetHeight(); // ÇØ´ç ¾ð¾î¿¡ µû¶ó Ç¥±â const char* szLanguageIndicator = GetLanguageIndicatorString(); int nIdicatorWidth = pFont->GetWidth(szLanguageIndicator); MCOLOR c = pDC->GetColor(); MRECT fr(r.x+r.w-nIdicatorWidth-4, r.y+2, nIdicatorWidth+3, r.h-4); if(IsNativeIME()==true){ pDC->SetColor(MCOLOR(130,130,130)); pDC->FillRectangle(fr); pDC->SetColor(MCOLOR(0, 0, 0)); pDC->Text(r.x+r.w-nIdicatorWidth-2, r.y + (r.h-nFontHeight)/2, szLanguageIndicator); } else{ // pDC->SetColor(MCOLOR(0, 0, 0)); // pDC->FillRectangle(fr); // pDC->SetColor(MCOLOR(DEFCOLOR_NORMAL)); } // pDC->Text(r.x+r.w-nIdicatorWidth-2, r.y + (r.h-nFontHeight)/2, szLanguageIndicator); pDC->SetColor(c); }
bool ZSurvival::OnSurvivalPrivateRanking(MCommand* pCmd) { if( 0 == pCmd ) return false; MTextArea* pWidgetRank = (MTextArea*)ZApplication::GetGameInterface()->GetIDLResource()->FindWidget( "SurvivalResult_MyRank"); MTextArea* pWidgetName = (MTextArea*)ZApplication::GetGameInterface()->GetIDLResource()->FindWidget( "SurvivalResult_MyName"); MTextArea* pWidgetPoint = (MTextArea*)ZApplication::GetGameInterface()->GetIDLResource()->FindWidget( "SurvivalResult_MyRankPoint"); if (!pWidgetRank || !pWidgetName || !pWidgetPoint) return false; pWidgetRank->Clear(); pWidgetName->Clear(); pWidgetPoint->Clear(); unsigned int nRank, nPoint; pCmd->GetParameter( &nRank, 0, MPT_UINT ); pCmd->GetParameter( &nPoint, 1, MPT_UINT ); char szText[128]; if (nRank != 0) sprintf(szText, "%d", nRank); else sprintf(szText, "--", nRank); pWidgetRank->AddText(szText, MCOLOR( 0xFFFFFFCC)); sprintf(szText, "%d", nPoint); pWidgetPoint->AddText(szText, MCOLOR( 0xFFFFFFCC)); pWidgetName->AddText(ZGetGame()->m_pMyCharacter->GetUserName(), MCOLOR( 0xFFFFFFCC)); return true; }
void ZVoteInterface::DrawVoteTargetlist(MDrawContext* pDC) { if(GetShowTargetList() == false) return; MFont *pFont=ZGetGameInterface()->GetCombatInterface()->GetGameFont(); pDC->SetFont(pFont); float y = 0.3f; float linespace = (float)pFont->GetHeight() * 1.1 / (float)MGetWorkspaceHeight(); pDC->SetColor(MCOLOR(0xFFFFFFFF)); TextRelative( pDC, .05f, y, ZMsg(MSG_VOTE_SELECT_PLAYER_TO_KICK) ); y+=2.f*linespace; for (int i=0; i<(int)m_TargetList.size(); i++) { string& strName = m_TargetList[i]; char szBuffer[256]; sprintf(szBuffer,"[%c] %s", ConvIndexToKey(i), strName.c_str()); pDC->SetColor(MCOLOR(0xFFFFFFFF)); TextRelative(pDC,.05f,y,szBuffer); y+=linespace; } y+=linespace; pDC->SetColor(MCOLOR(0xFFFFFFFF)); TextRelative(pDC,.05f,y, ZMsg(MSG_VOTE_SELECT_PLAYER_CANCEL)); }
// ¸ÖƼ¶óÀÎ Áö¿øÀ» À§ÇØ ±ÛÀÚ ´ÜÀ§ Ãâ·Â int Mint::DrawCompositionAttribute(MDrawContext* pDC, MPOINT& p, const char* szComposition, int i) { if(i>=(int)strlen(szComposition)) return 0; //if(pMint->GetPrimaryLanguageIdentifier()!=LANG_JAPANESE) return; const BYTE* pCompAttr = GetCompositionAttributes(); DWORD nCompAttrSize = GetCompositionAttributeSize(); if(i>=(int)nCompAttrSize) return 0; // Composition Attribute ¹üÀ§¸¦ ¹þ¾î³ª´Â °æ¿ì MFont* pFont = pDC->GetFont(); int nFontHeight = pFont->GetHeight(); MCOLOR c = pDC->GetColor(); int nCharSize = 1; bool bTwoByteChar = IsHangul(szComposition[i]); if(bTwoByteChar) nCharSize = 2; int nWidth = pFont->GetWidth(&(szComposition[i]), nCharSize); if(pCompAttr[i]==ATTR_TARGET_CONVERTED) // º¯È¯µÉ ³»¿ë pDC->SetColor(MCOLOR(255, 0, 0, 128)); else if(pCompAttr[i]==ATTR_TARGET_NOTCONVERTED) // º¯È¯µÇÁö ¾Ê´Â ³»¿ë pDC->SetColor(MCOLOR(0, 196, 0, 128)); else // º¯È¯ °¡´É Àý pDC->SetColor(MCOLOR(128, 128, 128, 128)); pDC->FillRectangle(p.x, p.y, nWidth, nFontHeight); pDC->SetColor(c); return nWidth; }
void MPopupMenuLook::OnFrameDraw(MPopupMenu* pPopupMenu, MDrawContext* pDC) { MRECT r = pPopupMenu->GetClientRect(); pDC->SetColor(MCOLOR(DEFCOLOR_MPOPUP_PLANE)); pDC->FillRectangle(r); pDC->SetColor(MCOLOR(DEFCOLOR_FRAME_OUTLINE)); pDC->Rectangle(r); }
//// MMenuItem //// void MMenuItem::OnDrawMenuItem(MDrawContext* pDC, bool bSelected) { MRECT r = GetClientRect(); pDC->SetColor(bSelected==true?MCOLOR(DEFCOLOR_MPOPUP_SELECTEDPLANE):MCOLOR(DEFCOLOR_MPOPUP_PLANE)); pDC->FillRectangle(r); pDC->SetColor(bSelected==true?MCOLOR(DEFCOLOR_MPOPUP_SELECTEDTEXT):MCOLOR(DEFCOLOR_MPOPUP_TEXT)); pDC->Text(r, GetText(), MAM_LEFT); }
void MFrameDrawer::DrawOuterBevel(MDrawContext* pDC, MRECT& r) { pDC->SetColor(MCOLOR(128, 128, 128)); pDC->HLine(r.x, r.y, r.w); pDC->VLine(r.x, r.y, r.h); pDC->SetColor(MCOLOR(64, 64, 64)); pDC->HLine(r.x, r.y+r.h-1, r.w); pDC->VLine(r.x+r.w-1, r.y, r.h); }
virtual void OnDraw(MDrawContext* pDC){ MFrame::OnDraw(pDC); MRECT r = GetClientRect(); char temp[256]; pDC->SetColor(MCOLOR(255,255,255)); // FPS DWORD nCurrTime = timeGetTime(); if(nCurrTime-m_nPrevTime>1000){ m_nFPS = m_nRenderCount; m_nPrevTime = nCurrTime; m_nRenderCount = 0; } m_nRenderCount++; sprintf(temp, "FPS = %d", m_nFPS); pDC->Text(r.x, r.y, temp); // Cursor Pos /* POINT p; GetCursorPos(&p); ScreenToClient(m_hWnd, &p); */ MPOINT p = MEvent::GetMousePos(); sprintf(temp, "Cursor Pos = %d, %d", p.x, p.y); pDC->Text(r.x, r.y+GetFont()->GetHeight(), temp); }
MBPopupMenuLook::MBPopupMenuLook() { for(int i=0; i<9; i++){ m_pFrameBitmaps[i] = NULL; } m_pFont=NULL; m_FontColor = MCOLOR(255, 255, 255); }
void MFrameLook::OnDraw(MFrame* pFrame, MDrawContext* pDC) { MRECT r = pFrame->GetInitialClientRect(); pDC->SetColor(MCOLOR(DEFCOLOR_MFRAME_PLANE)); pDC->FillRectangle(r); pDC->SetColor(128,128,128,255); pDC->Rectangle(r); // TitleBar if(pFrame->m_bTitleBar==true){ MRECT TitleBarRect(r.x, r.y, r.w, MTITLEBAR_HEIGHT); pDC->SetColor(MCOLOR(DEFCOLOR_MMENUBAR_PLANE)); pDC->FillRectangle(TitleBarRect); pDC->SetColor(MCOLOR(DEFCOLOR_MMENUBAR_TEXT)); pDC->Text(TitleBarRect, pFrame->m_szName, MAM_LEFT); } }
void ZGameClient::OnClanMemberConnected(const char* szMember) { if (!strcmp(ZGetMyInfo()->GetCharName(), szMember)) return; char szMsg[256]; // ZTransMsg(szMsg, MSG_CLAN_MEMBER_CONNECTED, 1, szMember); ZTransMsg(szMsg, MSG_CLAN_MEMBER_CONNECTED, 1, szMember); ZChatOutput(MCOLOR(ZCOLOR_CHAT_CLANMSG), szMsg); }
void MPopupMenuLook::OnDraw(MPopupMenu* pPopupMenu, MDrawContext* pDC) { OnFrameDraw(pPopupMenu, pDC); if(pPopupMenu->GetPopupMenuType()==MPMT_VERTICAL){ pDC->SetColor(MCOLOR(DEFCOLOR_FRAME_OUTLINE)); pDC->Rectangle(pPopupMenu->GetInitialClientRect()); } }
void MBEditLook::OnFrameDraw(MEdit* pEdit, MDrawContext* pDC) { MRECT r = pEdit->GetInitialClientRect(); if(GetCustomLook()) { pDC->SetColor(MCOLOR(200,200,200,255)); pDC->Rectangle(r); HLineBitmap( pDC, r.x+1, r.y+1, r.w-2, m_pFrameBitmaps[4], false ); return; } DrawBitmapFrame9(pDC, r, m_pFrameBitmaps); }
void MBScrollBarLook::OnDraw(MScrollBar* pScrollBar, MDrawContext* pDC) { MRECT r = pScrollBar->GetInitialClientRect(); //if(pScrollBar->GetType()==MSBT_VERTICAL) // DrawBitmapFrameV3(pDC, r, m_pVFrameBitmaps); //else // DrawBitmapFrameH3(pDC, r, m_pHFrameBitmaps); MRECT rtemp = pDC->GetClipRect(); pDC->SetClipRect(rtemp.x, rtemp.y, rtemp.w, rtemp.h ); pDC->SetColor(MCOLOR(0xFF000000)); pDC->FillRectangle( r.x, r.y, r.w, r.h ); pDC->SetClipRect(rtemp); }
virtual void OnDraw(MDrawContext* pDC){ MFrame::OnDraw(pDC); MRECT r = GetClientRect(); int nRawSize = sizeof(szStar)/sizeof(char*); static int nRaw = 0; pDC->SetColor(MCOLOR(128,128,255)); for(int i=0; i<20; i++){ pDC->Text(r.x, r.y+i*(GetFont()->GetHeight()+2), szStar[(nRaw+i)%nRawSize]); } nRaw++; nRaw%=nRawSize; }
bool ZSurvival::OnSurvivalRankingList(MCommand* pCmd) { if( 0 == pCmd ) return false; MTextArea* pWidgetRank = (MTextArea*)ZApplication::GetGameInterface()->GetIDLResource()->FindWidget( "SurvivalResult_PlayerRankList"); MTextArea* pWidgetName = (MTextArea*)ZApplication::GetGameInterface()->GetIDLResource()->FindWidget( "SurvivalResult_PlayerNameList"); MTextArea* pWidgetPoint = (MTextArea*)ZApplication::GetGameInterface()->GetIDLResource()->FindWidget( "SurvivalResult_PlayerRankPointList"); if (!pWidgetRank || !pWidgetName || !pWidgetPoint) return false; pWidgetRank->Clear(); pWidgetName->Clear(); pWidgetPoint->Clear(); MCommandParameter* pParam = pCmd->GetParameter( 0 ); void* pRankBlob = (MTD_SurvivalRanking*)pParam->GetPointer(); MTD_SurvivalRanking* pRank; char szText[128]; int sizeBlob = MGetBlobArrayCount( pRankBlob ); int size = min(sizeBlob, MAX_SURVIVAL_RANKING_LIST); for (int i = 0; i < size; ++i) { pRank = reinterpret_cast< MTD_SurvivalRanking* >( MGetBlobArrayElement(pRankBlob, i) ); if (pRank->m_dwRank == 0) break; sprintf(szText, "%d", pRank->m_dwRank); pWidgetRank->AddText( szText, MCOLOR( 0xFFFFF794)); if (strlen(pRank->m_szCharName) != 0) pWidgetName->AddText( pRank->m_szCharName, MCOLOR( 0xFFFFF794)); else pWidgetName->AddText( " ", MCOLOR( 0xFFFFF794)); sprintf(szText, "%d", pRank->m_dwPoint); pWidgetPoint->AddText( szText, MCOLOR( 0xFFFFF794)); } return true; }
void MFrameDrawer::Text(MDrawContext* pDC, MPOINT& p, const char* szText, MFDTextStyle nTextStyle, bool bHighlight, MRECT* r) { bool bClip = false; MRECT rc; if(r!=NULL) { rc = pDC->GetClipRect(); pDC->SetClipRect(*r); bClip = true; } switch(nTextStyle) { case MFDTS_ACTIVE: pDC->SetColor(MCOLOR(255, 255, 255)); if(bHighlight==true) pDC->TextWithHighlight(p.x, p.y, szText); else pDC->Text(p.x, p.y, szText); break; case MFDTS_DISABLE: { pDC->SetColor(MCOLOR(96, 96, 96)); MCOLOR PrevHCol = pDC->SetHighlightColor(MCOLOR(128, 128, 128)); if(bHighlight==true) pDC->TextWithHighlight(p.x, p.y, szText); else pDC->Text(p.x, p.y, szText); pDC->SetHighlightColor(PrevHCol); } break; case MFDTS_NORMAL: default: pDC->SetColor(MCOLOR(196, 196, 196)); if(bHighlight==true) pDC->TextWithHighlight(p.x, p.y, szText); else pDC->Text(p.x, p.y, szText); break; } if(r!=NULL) { pDC->SetClipRect(rc); } }
void ZGameClient::OnClanMsg(const char* szSenderName, const char* szMsg) { char szText[512]; sprintf(szText, "%s(%s) : %s", ZMsg( MSG_CHARINFO_CLAN), szSenderName, szMsg); if ( ZGetGame()) { if ( (ZGetGame()->GetMatch()->GetMatchType() == MMATCH_GAMETYPE_DUEL) && !ZGetGame()->m_pMyCharacter->IsDie()) sprintf(szText, "%s(%s) : %s", ZMsg( MSG_CHARINFO_CLAN), szSenderName, ". . . . ."); } ZChatOutput(MCOLOR(ZCOLOR_CHAT_CLANMSG), szText); }
bool ZSurvival::OnQuestCombatState(MCommand* pCommand) { char nState; pCommand->GetParameter(&nState, 0, MPT_CHAR); MQuestCombatState nCombatState = MQuestCombatState(nState); m_QuestCombatState = nCombatState; // 보관.. switch (nCombatState) { case MQUEST_COMBAT_PREPARE: { } break; case MQUEST_COMBAT_PLAY: { ZGetObjectManager()->GetNPCObjectMap()->ForceInvisibleNewNpc(false); ZGetEffectManager()->Clear(); ZGetEffectManager()->EnableDraw(true); ZGetGame()->m_WeaponManager.EnableRender(true); ZGetWorldItemManager()->EnableDraw(true); } break; case MQUEST_COMBAT_COMPLETED: { // 서바이벌이므로 마지막 섹터라도 포탈을 찍어야 한다. 그러나 마지막 반복의 막판이라면 포탈을 없게한다 if (!m_GameInfo.IsLastSectorInSurvival()) { if (ZGetGame()) { rvector portal_pos; int nCurrSectorIndex = m_GameInfo.GetCurrSectorIndex(); int nLinkIndex = m_GameInfo.GetMapSectorLink(nCurrSectorIndex); portal_pos = ZGetGame()->GetMapDesc()->GetQuestSectorLink(nLinkIndex); ZGetWorldItemManager()->AddQuestPortal(portal_pos); m_GameInfo.SetPortalPos(portal_pos); ZChatOutput(MCOLOR(ZCOLOR_CHAT_SYSTEM_GAME), ZMsg(MSG_GAME_OPEN_PORTAL)); m_tRemainedTime = timeGetTime() + PORTAL_MOVING_TIME; m_bIsRoundClear = true; } } } break; }; return true; }
MBFrameLook::MBFrameLook(void) : MScalableLook() { m_szDefaultTitle[0]=0; m_TitlePosition = MPOINT(14, 10); m_FontColor = MCOLOR(255,255,255,255); m_bStretch = true; for(int i=0; i<FRAME_BITMAP_COUNT; i++){ m_pFrameBitmaps[i] = NULL; } for (int i=0; i<FRAME_BUTTON_BITMAP_COUNT; i++) { m_pCloseButtonBitmaps[i] = NULL; m_pMinimizeButtonBitmaps[i] = NULL; } m_iCustomLook = 0; }
void ZVoteInterface::DrawVoteMessage(MDrawContext* pDC) // 투표가 진행중일때 메시지 { // 투표 진행중일때 메시지 if ( (ZGetGameInterface()->GetState() == GUNZ_GAME) && ZGetGameClient() && ZGetGameClient()->IsVoteInProgress() && ZGetGameClient()->CanVote() ) { MFont *pFont=ZGetGameInterface()->GetCombatInterface()->GetGameFont(); pDC->SetFont(pFont); pDC->SetColor(MCOLOR(0x80ffffff)); TextRelative(pDC,300.f/800.f,550/600.f,ZGetGameClient()->GetVoteMessage()); if(timeGetTime()/500 % 2 == 0 ) { TextRelative(pDC,300.f/800.f,565/600.f, ZMsg(MSG_VOTE_YESNO)); } } }
bool ZSurvival::OnObtainZItem(MCommand* pCommand) { unsigned long int nItemID; pCommand->GetParameter(&nItemID, 0, MPT_UINT); m_GameInfo.IncreaseObtainQuestItem(); #ifdef _QUEST_ITEM MMatchItemDesc* pItemDesc = MGetMatchItemDescMgr()->GetItemDesc(nItemID); if (pItemDesc) { char szMsg[ 128]; ZTransMsg( szMsg, MSG_GAME_GET_QUEST_ITEM, 1, pItemDesc->m_pMItemName->Ref().m_szItemName); ZChatOutput( MCOLOR(ZCOLOR_CHAT_SYSTEM_GAME), szMsg); } #endif return true; }
bool ZSurvival::OnObtainQuestItem(MCommand* pCommand) { unsigned long int nQuestItemID; pCommand->GetParameter(&nQuestItemID, 0, MPT_UINT); m_GameInfo.IncreaseObtainQuestItem(); #ifdef _QUEST_ITEM MQuestItemDesc* pQuestItemDesc = GetQuestItemDescMgr().FindQItemDesc((int)nQuestItemID); if (pQuestItemDesc) { char szMsg[ 128]; ZTransMsg( szMsg, MSG_GAME_GET_QUEST_ITEM, 1, pQuestItemDesc->m_szQuestItemName); ZChatOutput( MCOLOR(ZCOLOR_CHAT_SYSTEM_GAME), szMsg); } #endif return true; }
void Mint::DrawCandidateList(MDrawContext* pDC, MPOINT& p) { if(GetCandidateCount()>0){ MCOLOR c = pDC->GetColor(); MRECT r(p.x, p.y, GetCandidateListWidth(), GetCandidateListHeight()); // pDC->SetColor(MCOLOR(0x30000000)); // ±×¸²ÀÚ // pDC->FillRectangle( r.x+5, r.y+5, r.w, r.h); pDC->SetColor(MCOLOR(0xFF050505)); // ÇÁ·¹ÀÓ ¹ÙÅÁ pDC->FillRectangle(r); pDC->SetColor(MCOLOR(0xFF505050)); // ÇÁ·¹ÀÓ ¾îµÎ¿î ºÎºÐ pDC->Rectangle( r.x+1, r.y+1, r.w, r.h); pDC->SetColor(MCOLOR(0xFFB0B0B0)); // ÇÁ·¹ÀÓ ¹àÀº ºÎºÐ pDC->Rectangle(r); MFont* pFont = pDC->GetFont(); pDC->SetFont( MFontManager::Get( "Default")); // °Á¦·Î ÆùÆ®¸¦ µðÆúÆ®·Î °íÁ¤ÇÑ´Ù. int nStart = GetCandidatePageStart(); char temp[MIMECOMPOSITIONSTRING_LENGTH+4]; for(int i=nStart; i<(int)min(GetCandidateCount(), nStart+GetCandidatePageSize()); i++) { const char* szCandidate = GetCandidate(i); if(i==GetCandidateSelection()) pDC->SetColor(MCOLOR(DEFCOLOR_NORMAL)); else pDC->SetColor(MCOLOR(0xFF909090)); int nIndexInPage = i-nStart; sprintf(temp, "%d: %s", nIndexInPage+1, szCandidate); pDC->Text(p.x+4, p.y + nIndexInPage*pDC->GetFont()->GetHeight() + 4, temp); } // ÇöÀç ¼±Åà À妽º ¹× ÃÑ °³¼ö Ãâ·Â sprintf(temp, "(%d/%d)", GetCandidateSelection()+1, GetCandidateCount()); pDC->SetColor(MCOLOR(DEFCOLOR_NORMAL)); pDC->Text(p.x + 4, p.y + GetCandidatePageSize()*pDC->GetFont()->GetHeight() + 4, temp); pDC->SetColor(c); pDC->SetFont( MFontManager::Get( pFont->m_szName)); // ¿ø·¡ ÆùÆ®·Î º¹±¸ } }
void MBFrameLook::OnDraw(MFrame* pFrame, MDrawContext* pDC) { MRECT r = pFrame->GetInitialClientRect(); // 땜.. 장비창의 tooltip frame - // DrawBitmapFrame2 로 2장의 이미지를 사용해서 그림.. if(GetCustomLook()==3) { if(pFrame->GetVisible()==false) return; MRECT rr = r; // 툴팁이라서 그리는 영역을 조금 보정.. rr.x -= 10; rr.y -= 10; rr.w += 20; rr.h += 20; // 지금은 툴팁 대용으로 쓰기때문에 cliprect 를 무시.. MRECT cliprect = MRECT(0,0,MGetWorkspaceWidth(),MGetWorkspaceHeight()); DrawBitmapFrame2(pDC,rr,cliprect,m_pFrameBitmaps); return; } MCOLOR color = MCOLOR(0xFF, 0xFF, 0xFF, pFrame->GetOpacity()); if( GetCustomLook() == 1 ) DrawBitmapFrameCustom1(pDC, r, m_pFrameBitmaps, m_bStretch); else if( GetCustomLook() == 2) DrawBitmapFrameCustom2(pDC, r, m_pFrameBitmaps, m_BGColor, m_bStretch ); else if( GetCustomLook() == 3 ) { pDC->SetColor( 128, 128, 128 ); //r = pFrame->GetRect(); pDC->Rectangle( r ); } else DrawBitmapFrame9(pDC, r, m_pFrameBitmaps, m_bStretch, GetScale()); if(pFrame->m_bTitleBar==true){ if (pFrame->GetCloseButton()->m_bVisible) { MBitmap* pBitmap; if (pFrame->GetCloseButton()->IsButtonDown() == false) { pBitmap = m_pCloseButtonBitmaps[0]; } else { pBitmap = m_pCloseButtonBitmaps[1]; if (pBitmap == NULL) pBitmap = m_pCloseButtonBitmaps[0]; } if (pBitmap!=NULL) { int x, y; x = pFrame->GetCloseButton()->m_Rect.x; y = pFrame->GetCloseButton()->m_Rect.y; pDC->SetBitmap(pBitmap); pDC->Draw(x, y); } } if (pFrame->GetMinimizeButton()->m_bVisible) { MBitmap* pBitmap; if (pFrame->GetMinimizeButton()->IsButtonDown() == false) { pBitmap = m_pMinimizeButtonBitmaps[0]; } else { pBitmap = m_pMinimizeButtonBitmaps[1]; if (pBitmap == NULL) pBitmap = m_pMinimizeButtonBitmaps[0]; } if (pBitmap!=NULL) { int x, y; x = pFrame->GetMinimizeButton()->m_Rect.x; y = pFrame->GetMinimizeButton()->m_Rect.y; pDC->SetBitmap(pBitmap); pDC->Draw(x, y); } } if(m_pFont!=NULL) pDC->SetFont(m_pFont); pDC->SetColor(MCOLOR(0x0)); if( GetCustomLook() == 0 ) pDC->Text(r.x+16, r.y+12, pFrame->m_szName); /* pDC->Text(r.x+12, r.y+8, pFrame->m_szName); pDC->Text(r.x+16, r.y+8, pFrame->m_szName); pDC->Text(r.x+12, r.y+12, pFrame->m_szName); */ pDC->SetColor(m_FontColor); // 나중에 align고려해서 다시 수정해야 함 int y = int(m_TitlePosition.y*GetScale()); if(m_pFrameBitmaps[7]) { int au = (int)(GetScale() * m_pFrameBitmaps[7]->GetHeight()); y = (au - m_pFont->GetHeight())/2; } pDC->Text(int(r.x+m_TitlePosition.x*GetScale()), r.y+y, pFrame->m_szName); // pDC->Text(r.x+m_TitlePosition.x*GetScale(), r.y+m_TitlePosition.y*GetScale(), pFrame->m_szName); // pDC->Text(r.x+14, r.y+10, pFrame->m_szName); } }
void ZToolTip::OnDraw(MDrawContext* pDC) { /* if(IsToolTipEnable()==false) { return; } */ MRECT r = GetClientRect(); // pDC->SetColor(MCOLOR(DEFCOLOR_MTOOLTIP_PLANE)); // pDC->FillRectangle(r); // pDC->SetColor(MCOLOR(DEFCOLOR_MTOOLTIP_OUTLINE)); // pDC->Rectangle(r); // 최소사이즈 32 x 32 -> 16 2개씩은 찍을 수 있도록~ if(m_pBitmap1&&m_pBitmap2) { //자신의 영역을 둘러싸는 이미지를 그려준다.. // 9곳 회전해서 그리기.. // 1 2 3 // 4 5 6 // 7 8 9 m_pBitmap1->SetDrawMode(MBM_Normal); m_pBitmap2->SetDrawMode(MBM_Normal); pDC->SetBitmap( m_pBitmap1 ); pDC->Draw(r.x, r.y, 16, 16); pDC->SetBitmap( m_pBitmap2 ); pDC->Draw(r.x+16, r.y, r.w-32,16); m_pBitmap1->SetDrawMode(MBM_FlipLR); pDC->SetBitmap( m_pBitmap1 ); pDC->Draw(r.x+r.w-16, r.y, 16, 16); //그려야할사이즈가있다면~ 중간단계 if(r.h > 32) { m_pBitmap2->SetDrawMode(MBM_RotL90); pDC->SetBitmap( m_pBitmap2 ); pDC->Draw(r.x, r.y+16, 16, r.h-32); //중간색채우기 pDC->SetColor(MCOLOR(0xffD9D9D9));//임시 pDC->FillRectangle(MRECT(r.x+16,r.y+16,r.w-32,r.h-32)); m_pBitmap2->SetDrawMode(MBM_RotR90); pDC->SetBitmap( m_pBitmap2 ); pDC->Draw(r.x+r.w-16, r.y+16, 16, r.h-32); } // 아래부분~ m_pBitmap1->SetDrawMode(MBM_FlipUD); pDC->SetBitmap( m_pBitmap1 ); pDC->Draw(r.x, r.y+r.h-16, 16, 16); m_pBitmap2->SetDrawMode(MBM_FlipUD); pDC->SetBitmap( m_pBitmap2 ); pDC->Draw(r.x+16, r.y+r.h-16, r.w-32,16); m_pBitmap1->SetDrawMode(MBM_FlipUD|MBM_FlipLR); pDC->SetBitmap( m_pBitmap1 ); pDC->Draw(r.x+r.w-16, r.y+r.h-16, 16, 16); m_pBitmap1->SetDrawMode(MBM_Normal); m_pBitmap2->SetDrawMode(MBM_Normal); } char* szName = NULL; if(m_bUseParentName==true) szName = GetParent()->m_szName; else szName = m_szName; MRECT text_r = MRECT(r.x+10,r.y+10,r.w-10,r.h-10); // pDC->SetColor(MCOLOR(DEFCOLOR_MTOOLTIP_TEXT));//임시 pDC->SetColor(MCOLOR(0xff000000));//임시 // pDC->TextWithHighlight(text_r, szName, (MAM_HCENTER|MAM_VCENTER)); pDC->TextMultiLine(text_r, szName,ZTOOLTIP_LINE_GAP); }
void ZDuelTournamentRankingListBox::OnDraw( MDrawContext* pDC ) { if (!m_pBmpRankingItemBg || !m_pBmpArrowUp || !m_pBmpArrowDown || !m_pBmpArrowBar) { _ASSERT(0); return; } const int nWidth = this->GetRect().w; const int nHeight = this->GetRect().h; const int nY_firstItem = nHeight * 0.17f; // 리스트 첫째 항목의 y위치 const int nItemHeight = (int)(nHeight / 7.f); char szTemp[128]; MRECT rc; for (int i=0; i<NUM_DISPLAY_DUELTOURNAMENT_RANKING; ++i) { int y = (nY_firstItem + nItemHeight * i) - (nItemHeight * 0.04f); // 리스트아이템 배경이미지 pDC->SetBitmap(m_pBmpRankingItemBg); pDC->Draw(0, y, nWidth, nItemHeight); // 항목 내용 그리기 ZDUELTOURNAMENTRANKINGITEM* pRankItem = &m_rankingList[i]; if (pRankItem->bEmptyItem) continue; y = nY_firstItem + nItemHeight * i; pDC->SetColor(MCOLOR(0xFFFFFFFF)); // 순위 if (pRankItem->nRank == -1) // 초기화 직후 순위정렬되지 않았을때 -1로 되어 있음 strcpy(szTemp, "--"); else sprintf(szTemp, "%d", pRankItem->nRank); rc.Set((int)(0.01f*nWidth), y, (int)(fabs(0.01f - 0.11f)*nWidth), nItemHeight); pDC->Text(rc, szTemp, MAM_RIGHT|MAM_VCENTER); // 순위등락 화살표 if (pRankItem->nFluctuation == 0) { pDC->SetBitmap(m_pBmpArrowBar); pDC->Draw((int)(0.13f*nWidth), y + (nItemHeight - m_pBmpArrowBar->GetHeight()) * 0.5f); } else { if (pRankItem->nFluctuation > 0) pDC->SetBitmap(m_pBmpArrowUp); else if (pRankItem->nFluctuation < 0) pDC->SetBitmap(m_pBmpArrowDown); pDC->Draw((int)(0.13f*nWidth), y + (nItemHeight - m_pBmpArrowBar->GetHeight()) * 0.5f); // 순위등락폭 pDC->SetColor(MCOLOR(0xFFAAFF00)); sprintf(szTemp, "%d", abs(pRankItem->nFluctuation)); //pDC->Text((int)(0.04f*nWidth), y, szTemp); rc.Set((int)(0.16f*nWidth), y, (int)(fabs(0.16f - 0.26f)*nWidth), nItemHeight); pDC->Text(rc, szTemp, MAM_LEFT|MAM_VCENTER); pDC->SetColor(MCOLOR(0xFFFFFFFF)); } // 토너먼트 등급 엠블렘 GetDuelTournamentGradeIconFileName(szTemp, pRankItem->nGrade); MBitmap* pGradeIcon = MBitmapManager::Get(szTemp); if (pGradeIcon) { //int height1px = int(600.f/MGetWorkspaceHeight() + 0.5f); int margin = (nItemHeight * 0.05f + 0.5f); int size = nItemHeight-(margin*4); pDC->SetBitmap(pGradeIcon); rc.Set((int)(0.279f*nWidth), y+margin, size, size);//(int)(0.055f*nWidth), nItemHeight-3); pDC->Draw(rc); } // 이름 rc.Set((int)(0.34f*nWidth), y, (int)(fabs(0.34f - 0.55f)*nWidth), nItemHeight); pDC->Text(rc, pRankItem->szCharName, MAM_HCENTER|MAM_VCENTER); // 승패 sprintf(szTemp, "%d", pRankItem->nWins); rc.Set((int)(0.57f*nWidth), y, (int)(fabs(0.57f - 0.67f)*nWidth), nItemHeight); pDC->Text(rc, szTemp, MAM_RIGHT|MAM_VCENTER); rc.Set((int)(0.67f*nWidth), y, (int)(fabs(0.67f - 0.68f)*nWidth), nItemHeight); pDC->Text(rc, "/", MAM_HCENTER|MAM_VCENTER); sprintf(szTemp, "%d", pRankItem->nLosses); rc.Set((int)(0.68f*nWidth), y, (int)(fabs(0.68f - 0.78f)*nWidth), nItemHeight); pDC->Text(rc, szTemp, MAM_LEFT|MAM_VCENTER); // 우승수 sprintf(szTemp, "%d", pRankItem->nWinners); rc.Set((int)(0.8f*nWidth), y, (int)(fabs(0.8f - 0.91f)*nWidth), nItemHeight); pDC->Text(rc, szTemp, MAM_RIGHT|MAM_VCENTER); // 토너먼트 포인트 sprintf(szTemp, "%d", pRankItem->nPoint); rc.Set((int)(0.92f*nWidth), y, (int)(fabs(0.92f - 0.99f)*nWidth), nItemHeight); pDC->Text(rc, szTemp, MAM_RIGHT|MAM_VCENTER); // 내 랭킹 항목인 경우 하이라이트 이미지 덮어줌 if (i == m_nMyRankIndex) { MBitmapR2 *pBitmap=(MBitmapR2*)MBitmapManager::Get("button_glow.png"); if(pBitmap) { DWORD defaultcolor = 0x333333; DWORD opacity=(DWORD)pDC->GetOpacity(); MRECT rt(0, y, nWidth, nItemHeight); MDrawEffect prevEffect = pDC->GetEffect(); pDC->SetEffect(MDE_ADD); MCOLOR prevColor = pDC->GetBitmapColor(); pDC->SetBitmapColor(MCOLOR(defaultcolor)); unsigned char prevOpacity = pDC->GetOpacity(); pDC->SetOpacity(opacity); pDC->SetBitmap(pBitmap); pDC->Draw(rt.x,rt.y,rt.w,rt.h,0,0,64,32); pDC->SetBitmapColor(prevColor); pDC->SetEffect(prevEffect); pDC->SetOpacity(prevOpacity); } } } }
MBLabelLook::MBLabelLook(void) { m_FontColor = MCOLOR(255, 255, 255); }
void ZHelpScreen::DrawHelpScreen() { if( !m_bDrawHelpScreen ) return; // 필터링을 끄고.. if(m_pHelpScreenBitmap==NULL) return; if(m_pHelpScreenBitmap->m_pTexture==NULL) return; float mx = 0.f; float my = 0.f; float mw = (float)RGetScreenWidth(); float mh = (float)RGetScreenHeight(); float msx = 0.f; float msy = 0.f; float msw = 800.f; float msh = 600.f; float ftw = 800.f;//(float)m_pHelpScreenBitmap->m_pTexture->GetWidth(); float fth = 600.f;//(float)m_pHelpScreenBitmap->m_pTexture->GetHeight(); float msw2 = msw; float msh2 = msh; D3DFORMAT d3dformat = m_pHelpScreenBitmap->m_pTexture->m_Info.Format; if( d3dformat==D3DFMT_DXT1 || d3dformat==D3DFMT_DXT2 || d3dformat==D3DFMT_DXT3 || d3dformat==D3DFMT_DXT4 || d3dformat==D3DFMT_DXT5 ) { msw2 = (float)Floorer2PowerSize((int)msw); msh2 = (float)Floorer2PowerSize((int)msh); } RGetDevice()->SetRenderState( D3DRS_LIGHTING, FALSE); CUSTOMVERTEX Sprite[4] = { {mx - ADJUST_SIZE , my - ADJUST_SIZE , 0, 1.0f, (msx)/ftw , (msy)/fth }, {mx + mw - ADJUST_SIZE2, my - ADJUST_SIZE , 0, 1.0f, (msx + msw2)/ftw, (msy)/fth }, {mx + mw - ADJUST_SIZE2, my + mh - ADJUST_SIZE2, 0, 1.0f, (msx + msw2)/ftw, (msy + msh2)/fth }, {mx - ADJUST_SIZE , my + mh - ADJUST_SIZE2, 0, 1.0f, (msx)/ftw , (msy + msh2)/fth}, }; // RSetWBuffer(true); RGetDevice()->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE ); RGetDevice()->SetRenderState( D3DRS_SRCBLEND,D3DBLEND_SRCALPHA ); RGetDevice()->SetRenderState( D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA ); RGetDevice()->SetTextureStageState( 0, D3DTSS_COLORARG1 , D3DTA_TEXTURE ); RGetDevice()->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 ); RGetDevice()->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE ); RGetDevice()->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1 ); RGetDevice()->SetFVF(D3DFVF_CUSTOMVERTEX); RGetDevice()->SetTexture( 0, m_pHelpScreenBitmap->m_pTexture->GetTexture() ); RGetDevice()->SetSamplerState( 0, D3DSAMP_MAGFILTER , D3DTEXF_POINT ); RGetDevice()->SetSamplerState( 0, D3DSAMP_MINFILTER , D3DTEXF_POINT ); // RGetDevice()->SetSamplerState( 0, D3DSAMP_MAGFILTER , D3DTEXF_NONE ); // RGetDevice()->SetSamplerState( 0, D3DSAMP_MINFILTER , D3DTEXF_NONE ); RGetDevice()->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, Sprite, sizeof(CUSTOMVERTEX)); // RGetDevice()->SetTextureStageState( 0, D3DTSS_MAGFILTER , D3DTEXF_LINEAR ); // RGetDevice()->SetTextureStageState( 0, D3DTSS_MINFILTER , D3DTEXF_LINEAR ); RGetDevice()->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR ); RGetDevice()->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR ); // 굵은 폰트로 바인딩된 키그려주기... g_pDC->SetColor(MCOLOR(0xFF000000)); // g_pDC->SetFont(MFontManager::Get("FONTc8b")); // g_pDC->SetFont(MFontManager::Get("FONTa12_O1Blr")); g_pDC->SetFont(MFontManager::Get("FONTb11b")); float aspect_x = RGetScreenWidth()/800.f; float aspect_y = RGetScreenHeight()/600.f; MFontR2* pFont = (MFontR2*)g_pDC->GetFont(); pFont->m_fScale = 1.0f * aspect_x; int nHeight = 193 * aspect_y; // x y 중앙 TextOutKeymap(ZACTION_MELEE_WEAPON , 90 * aspect_x, nHeight); TextOutKeymap(ZACTION_PRIMARY_WEAPON , 148 * aspect_x, nHeight); TextOutKeymap(ZACTION_SECONDARY_WEAPON, 209 * aspect_x, nHeight); TextOutKeymap(ZACTION_ITEM1 , 265 * aspect_x, nHeight); TextOutKeymap(ZACTION_ITEM2 , 323 * aspect_x, nHeight); nHeight = 258 * aspect_y; TextOutKeymap(ZACTION_PREV_WEAPON ,105*aspect_x,nHeight); TextOutKeymap(ZACTION_FORWARD ,162*aspect_x,nHeight); TextOutKeymap(ZACTION_NEXT_WEAPON ,222*aspect_x,nHeight); TextOutKeymap(ZACTION_RELOAD ,280*aspect_x,nHeight); nHeight = 323 * aspect_y; TextOutKeymap(ZACTION_LEFT ,120*aspect_x,nHeight); TextOutKeymap(ZACTION_BACK ,178*aspect_x,nHeight); TextOutKeymap(ZACTION_RIGHT ,239*aspect_x,nHeight); nHeight = 390 * aspect_y; TextOutKeymap(ZACTION_JUMP ,196*aspect_x,nHeight); // TodoH(상) - Help 화면은 무엇인가효? pFont->m_fScale = 1.0f; // RSetWBuffer(true); }