// ---------------------------------------------------------------------------- // Name : Render() // Desc : // ---------------------------------------------------------------------------- void CUIAD::Render() { CDrawPort* pDrawPort = CUIManager::getSingleton()->GetDrawPort(); // Set skill learn texture pDrawPort->InitTextureData( m_ptdBaseTexture ); SelectLogo(); PlayLC(m_eAniType); // Attach Map window extern ENGINE_API INDEX sam_iScreenSizeI; // m_rcAD[0].SetRect(sam_iScreenSizeI - 115, 145,sam_iScreenSizeI - 14,197); m_rcAD[0].SetRect(sam_iScreenSizeI - 115, 152,sam_iScreenSizeI - 14,205); m_rcAD[1].CopyRect( m_rcAD[0] ); m_rcAD_ani = m_rcAD[0]; pDrawPort->AddTexture( m_rcAD_ani.Left , m_rcAD_ani.Top , m_rcAD_ani.Right , m_rcAD_ani.Bottom , m_uvAD[m_selAni].U0, m_uvAD[m_selAni].V0, m_uvAD[m_selAni].U1, m_uvAD[m_selAni].V1, 0xFFFFFFFF ); // Render all elements pDrawPort->FlushRenderingQueue(); // Flush all render text queue pDrawPort->EndTextEx(); }
// ---------------------------------------------------------------------------- // Name : Render() // Desc : // ---------------------------------------------------------------------------- void CUICheckButton::Render() { // Get position int nX, nY; GetAbsPos( nX, nY ); // Add render regions int nUVIndex; if( m_bChecked ) nUVIndex = UCBS_CHECK; else nUVIndex = UCBS_NONE; CDrawPort* pDrawPort = CUIManager::getSingleton()->GetDrawPort(); if(m_bValidText) { if( IsEnabled() ) { pDrawPort->PutTextEx( m_strText, nX + m_nTextSX, nY + m_nTextSY, m_colText[1] ); } else { pDrawPort->PutTextEx( m_strText, nX + m_nTextSX, nY + m_nTextSY, m_colText[0] ); nUVIndex += 2; } } pDrawPort->AddTexture( nX, nY, nX + m_nWidth, nY + m_nHeight, m_rtUV[nUVIndex].U0, m_rtUV[nUVIndex].V0, m_rtUV[nUVIndex].U1, m_rtUV[nUVIndex].V1, 0xFFFFFFFF ); }
void StringSplit(std::vector<CTString>& vecOutput, CTString strInput, ULONG ulColumnWidth) { CDrawPort* pDrawPort = CUIManager::getSingleton()->GetDrawPort(); ULONG ulWidth = 0; #if defined(G_RUSSIA) ulWidth = UTIL_HELP()->GetNoFixedWidth(_pfdDefaultFont, strInput.str_String); #else // defined(G_RUSSIA) ulWidth = pDrawPort->GetTextWidth2(strInput); #endif // defined(G_RUSSIA) if (ulWidth <= ulColumnWidth) { strInput.TrimSpacesLeft(); strInput.TrimSpacesRight(); vecOutput.push_back(strInput); return; } char szTemp[4]; int len = strInput.Length(), pos = 0; ulWidth = 0; for (int i = 0, j = 0; i < len; j = 0) { if (IsDBCSLeadByte(strInput[i])) szTemp[j++] = strInput[i++]; szTemp[j++] = strInput[i++]; szTemp[j] = 0; ULONG ulTempWidth = 0; #if defined(G_RUSSIA) ulTempWidth = UTIL_HELP()->GetNoFixedWidth(_pfdDefaultFont, szTemp); #else // defined(G_RUSSIA) ulTempWidth = pDrawPort->GetTextWidth2(szTemp); #endif // defined(G_RUSSIA) if (ulWidth + ulTempWidth > ulColumnWidth && !(j == 1 && (szTemp[0] == '.' || szTemp[0] == ',' || szTemp[0] == ' '))) break; pos = i; ulWidth += ulTempWidth; if( strInput[pos] == '\n' || strInput[pos] == '\r' ) { pos++; break; } } CTString strLeft, strRight; strInput.Split(pos, strLeft, strRight); strLeft.TrimSpacesLeft(); strLeft.TrimSpacesRight(); vecOutput.push_back(strLeft); if (strRight.Length() > 0) StringSplit(vecOutput, strRight, ulColumnWidth); }
void CUIImageBox::PopupRender() { CUIManager* pUIManager = CUIManager::getSingleton(); CDrawPort* pDrawPort = CUIManager::getSingleton()->GetDrawPort(); int nX, nY; GetAbsPos( nX, nY ); int nX0 = nX + m_rtRenderRegion.Left; int nX1 = nX + m_rtRenderRegion.Right; int nY0 = nY + m_rtRenderRegion.Top; int nY1 = nY + m_rtRenderRegion.Bottom; int rtRenderRegionMiddle = nX + (m_rtRenderRegion.Left + m_rtRenderRegion.Right) / 2; int nRegionHeight = m_rtRenderRegion.Bottom - m_rtRenderRegion.Top; if ( m_bShowPopup ) { pDrawPort->InitTextureData( m_ptdPopup ); int nAlineSize = m_vecString.size(); int nPopHeight = 10 - _pUIFontTexMgr->GetLineSpacing() + (nAlineSize+1) * _pUIFontTexMgr->GetLineHeight(); int nPopX = rtRenderRegionMiddle - (m_nPopWidth/2); int nPopY = nY0 - nPopHeight; if( nPopX < pUIManager->GetMinI() ) { nPopX = pUIManager->GetMinI(); } else if (nPopX + m_nPopWidth > pUIManager->GetMaxI()) { nPopX = pUIManager->GetMaxI() - m_nPopWidth; } if (nPopY < pUIManager->GetMinJ()) { nPopY = nY + nRegionHeight; } m_bxPopupInfo.SetBoxPos(WRect(nPopX-nX, nPopY-nY, nPopX-nX+m_nPopWidth, nPopY-nY+nPopHeight )); m_bxPopupInfo.Render(nX,nY); std::vector<CTString>::iterator b = m_vecString.begin(); for (int i = 0; b != m_vecString.end(); b++, i++) { pDrawPort->PutTextEx( *b, nPopX+20, nPopY+6+(i*14), m_colText ); } pDrawPort->FlushRenderingQueue(); pDrawPort->EndTextEx(); } }
// ---------------------------------------------------------------------------- // Name : Render() // Desc : // ---------------------------------------------------------------------------- void CUISelectResource::Render() { CDrawPort* pDrawPort = CUIManager::getSingleton()->GetDrawPort(); // Set skill learn texture pDrawPort->InitTextureData( m_ptdBaseTexture ); // Add render regions // Background int nX = m_nPosX; int nY = m_nPosY; pDrawPort->AddTexture( nX, m_nPosY, nX + m_nWidth, nY + TITLEBAR_HEIGHT, m_rtBackTop.U0, m_rtBackTop.V0, m_rtBackTop.U1, m_rtBackTop.V1, 0xFFFFFFFF ); nY += TITLEBAR_HEIGHT; pDrawPort->AddTexture( nX, nY, nX + m_nWidth, m_nPosY + m_nHeight - 7, m_rtBackMiddle1.U0, m_rtBackMiddle1.V0, m_rtBackMiddle1.U1, m_rtBackMiddle1.V1, 0xFFFFFFFF ); nY = m_nPosY + m_nHeight - 7; pDrawPort->AddTexture( nX, nY, nX + m_nWidth, m_nPosY + m_nHeight, m_rtBackBottom.U0, m_rtBackBottom.V0, m_rtBackBottom.U1, m_rtBackBottom.V1, 0xFFFFFFFF ); m_btnClose.Render(); std::vector<CUIButton>::iterator itend = m_vectorResourceList.end(); std::vector<CUIButton>::iterator it = m_vectorResourceList.begin(); for(; it != itend; ++it) { (*it).Render(); } // Render all elements pDrawPort->FlushRenderingQueue(); CTString strTitle = _S( 1823, "미네랄 선택" ); // Text in skill learn if( m_bSelectType ) { strTitle =_S( 1974, "생산방법 선택" ); } pDrawPort->PutTextEx( strTitle, m_nPosX + SELECTRESOURCE_TITLE_TEXT_OFFSETX, m_nPosY + SELECTRESOURCE_TITLE_TEXT_OFFSETY, 0xFFFFFFFF ); // Flush all render text queue pDrawPort->EndTextEx(); }
void CUIChildQuickSlot::Render() { CUIManager* pUIManager = CUIManager::getSingleton(); CDrawPort* pDrawPort = pUIManager->GetDrawPort(); ///< texture init pDrawPort->InitTextureData( m_ptdBaseTexture ); if( *(m_bRotation[m_nCurSlot]) == 1 ) { int nX = m_nPosX; int nY = m_nPosY; // Quick slot base texture pDrawPort->AddTexture( nX, nY ,nX + CHILD_QUICKSLOT_WIDTH, nY + CHILD_QUICKSLOT_HEIGHT ,m_rtHorzBackground.U0, m_rtHorzBackground.V0 ,m_rtHorzBackground.U1, m_rtHorzBackground.V1 ,0xFFFFFFFF ); // 퀵슬롯 페이지 출력 위치를 수동으로 계산 [12/20/2012 Ranma] pDrawPort->PutTextExCX(m_strPageNumber, m_nPosX + 7, m_nPosY + 11 ); m_btnHorizontal.Render(); m_btnLock.SetPos(CHILD_QUICKSLOT_WIDTH - QSLOT_OUTSIDE_BTN_SIZE - 1, 19); m_btnUnLock.SetPos(CHILD_QUICKSLOT_WIDTH - QSLOT_OUTSIDE_BTN_SIZE - 1, 19); } else if ( *(m_bRotation[m_nCurSlot]) == 0 ) { int nX = m_nPosX; int nY = m_nPosY; // Quick slot base texture pDrawPort->AddTexture( nX, nY , nX + CHILD_QUICKSLOT_HEIGHT, nY + CHILD_QUICKSLOT_WIDTH , m_rtVerBackground.U0, m_rtVerBackground.V0 , m_rtVerBackground.U1, m_rtVerBackground.V1 , 0xFFFFFFFF ); // 퀵슬롯 페이지 출력 위치를 수동으로 계산 [12/20/2012 Ranma] pDrawPort->PutTextExCX(m_strPageNumber, m_nPosX + 18, m_nPosY + 2 ); m_btnVertical.Render(); m_btnLock.SetPos(1, CHILD_QUICKSLOT_WIDTH - QSLOT_OUTSIDE_BTN_SIZE - 1); m_btnUnLock.SetPos(1, CHILD_QUICKSLOT_WIDTH - QSLOT_OUTSIDE_BTN_SIZE - 1); } if(*(m_bLock[m_nCurSlot])) m_btnLock.Render(); else m_btnUnLock.Render(); pDrawPort->FlushRenderingQueue(); SlotRender(); // Flush all render text queue pDrawPort->EndTextEx(); }
void CUIListBoxMultiCol::DrawText ( int nCol, int nRow, int nX, int nY, TEXT_ALIGN enAlign, COLOR TextColor ) { CDrawPort* pDrawPort = CUIManager::getSingleton()->GetDrawPort(); switch( enAlign ) { case TEXT_LEFT: pDrawPort->PutTextEx( m_vecString[nCol].vecString[nRow], nX, nY, TextColor ); break; case TEXT_CENTER: pDrawPort->PutTextExCX( m_vecString[nCol].vecString[nRow], nX + m_vecRowWidht[nRow]/2, nY, TextColor ); break; case TEXT_RIGHT: pDrawPort->PutTextExRX( m_vecString[nCol].vecString[nRow], nX, nY, TextColor ); break; default: pDrawPort->PutTextEx( m_vecString[nCol].vecString[nRow], nX, nY, TextColor ); } }
void CUIHelp::RenderImage(int iListIndex) { // Check invalid if(iListIndex<=0) return; HELP1 tHelp1 = (*m_pHelp1)[iListIndex]; if( tHelp1.m_width <= 0 ) return; FLOAT fTexWidth = m_ptdImageTemp->GetPixWidth(); FLOAT fTexHeight = m_ptdImageTemp->GetPixHeight(); CDrawPort* pDrawPort = CUIManager::getSingleton()->GetDrawPort(); pDrawPort->InitTextureData( m_ptdImageTemp ); // Add render regions int nX, nY; m_bSlideImgX = tHelp1.m_width; if(tHelp1.m_width > sideImageSize) { nX = m_nPosX + m_rcRightView.Left + m_bSlideImgX; nY = m_nPosY + m_lbReadContent.GetPosY() + (m_lbReadContent.GetCurItemCount(0)*m_lbReadContent.GetLineHeight()); } else { nX = m_nPosX + m_nWidth + m_bSlideImgX; nY = m_nPosY; } // Set UV UIRectUV tUV; tUV.SetUV(tHelp1.m_uv_x,tHelp1.m_uv_y,tHelp1.m_uv_x+m_bSlideImgX,tHelp1.m_uv_y+tHelp1.m_height,fTexWidth,fTexHeight); pDrawPort->AddTexture( nX - m_bSlideImgX, nY, nX , nY + tHelp1.m_height, tUV.U0,tUV.V0,tUV.U1,tUV.V1, 0xFFFFFFFF); pDrawPort->FlushRenderingQueue(); }
// render credits to given drawport FLOAT Credits_Render(CDrawPort *pdp) { if (!_bCreditsOn) { return 0; } CDrawPort dpWide; pdp->MakeWideScreen(&dpWide); pdp->Unlock(); dpWide.Lock(); FLOAT fTime = GetTime(); pixW = dpWide.GetWidth(); pixH = dpWide.GetHeight(); fResolutionScaling = (FLOAT)pixW / 640.0f; dpWide.SetFont( _pfdDisplayFont); pixLineHeight = floor(20*fResolutionScaling); const FLOAT fLinesPerSecond = _fSpeed; FLOAT fOffset = fTime*fLinesPerSecond; INDEX ctLinesOnScreen = pixH/pixLineHeight; INDEX iLine1 = fOffset; pixJ = iLine1*pixLineHeight-fOffset*pixLineHeight; iLine1-=ctLinesOnScreen; INDEX ctLines = _astrCredits.Count(); BOOL bOver = TRUE; for (INDEX i = iLine1; i<iLine1+ctLinesOnScreen+1; i++) { CTString *pstr = &strEmpty; INDEX iLine = i; if (iLine>=0 && iLine<ctLines) { pstr = &_astrCredits[iLine]; bOver = FALSE; } PrintOneLine(&dpWide, *pstr); } dpWide.Unlock(); pdp->Lock(); if (bOver) { return 0; } else if (ctLines-iLine1<ctLinesOnScreen) { return FLOAT(ctLines-iLine1)/ctLinesOnScreen; } else { return 1; } }
void CUIImageBox::Render() { // Get position int nX, nY; GetAbsPos( nX, nY ); int nX0 = nX + m_rtRenderRegion.Left; int nX1 = nX + m_rtRenderRegion.Right; int nY0 = nY + m_rtRenderRegion.Top; int nY1 = nY + m_rtRenderRegion.Bottom; float fU0 = m_rtUV.U0 + (m_rtUV.U1 - m_rtUV.U0) * m_rtRenderRegion.Left / float(m_nWidth); float fU1 = m_rtUV.U0 + (m_rtUV.U1 - m_rtUV.U0) * m_rtRenderRegion.Right / float(m_nWidth); float fV0 = m_rtUV.V0 + (m_rtUV.V1 - m_rtUV.V0) * m_rtRenderRegion.Top / float(m_nHeight); float fV1 = m_rtUV.V0 + (m_rtUV.V1 - m_rtUV.V0) * m_rtRenderRegion.Bottom / float(m_nHeight); CDrawPort* pDrawPort = CUIManager::getSingleton()->GetDrawPort(); if(m_eImageType == IT_GENERAL) { pDrawPort->InitTextureData( m_ptdBaseTexture ); pDrawPort->AddTexture(nX0, nY0, nX1, nY1, fU0, fV0, fU1, fV1, 0xFFFFFFFF ); pDrawPort->FlushRenderingQueue(); } else if (m_eImageType == IT_CORPS) { pDrawPort->InitTextureData( m_ptdCorps ); pDrawPort->AddTexture(nX0, nY0, nX1, nY1, fU0, fV0, fU1, fV1, 0xFFFFFFFF ); pDrawPort->FlushRenderingQueue(); } else { UIBtnExType bet; switch(m_eImageType) { case IT_EXP: case IT_MONEY: case IT_ITEM: case IT_SP: // [090617: selo] SP 이미지 타입 case IT_RVR_POINT: bet = UBET_ITEM; break; case IT_SKILL: case IT_SSKILL: case IT_AFFINITY: // 친화도 개편2 친화도 타입 추가 [2/7/2013 Ranma] bet = UBET_SKILL; break; case IT_ACTION: bet = UBET_ACTION; break; case IT_AFFINITY_MONSTER: bet = UBET_COMBO; break; } pDrawPort->AddBtnTexture(m_nTextureID, nX0, nY0, nX1, nY1, fU0, fV0, fU1, fV1, 0xFFFFFFFF ); pDrawPort->FlushBtnRenderingQueue( bet, PBT_BLEND ); if(m_bHighlight) { pDrawPort->AddBtnTexture(m_nTextureID, nX0, nY0, nX1, nY1, fU0, fV0, fU1, fV1, m_colHighlight ); // Render all button elements pDrawPort->FlushBtnRenderingQueue( bet, PBT_ADD ); } } }
// ---------------------------------------------------------------------------- // Name : Render() // Desc : // ---------------------------------------------------------------------------- void CUICreateChar::Render() { extern INDEX sam_bWideScreen; CDrawPort* pDrawPort = CUIManager::getSingleton()->GetDrawPort(); // Set create character textire pDrawPort->InitTextureData( m_ptdBaseTexture ); // Character information // Top pDrawPort->AddTexture( m_rcCharInfo.Left, m_rcCharInfo.Top, m_rcCharInfo.Right, m_rcCharInfo.Top + CREATECHAR_INFO_HEIGHT, m_rtCharInfoTop.U0, m_rtCharInfoTop.V0, m_rtCharInfoTop.U1, m_rtCharInfoTop.V1, 0xFFFFFFFF ); // Bottom pDrawPort->AddTexture( m_rcCharInfo.Left, m_rcCharInfo.Top + CREATECHAR_INFO_HEIGHT, m_rcCharInfo.Right, m_rcCharInfo.Bottom, m_rtCharInfoBottom.U0, m_rtCharInfoBottom.V0, m_rtCharInfoBottom.U1, m_rtCharInfoBottom.V1, 0xFFFFFFFF ); // Character name input box m_ebCharName.Render(); // Job button m_btnJobPrev.Render(); m_btnJobNext.Render(); // Head button m_btnFacePrev.Render(); m_btnFaceNext.Render(); // Hair button m_btnHairPrev.Render(); m_btnHairNext.Render(); // Face button //m_btnHeadPrev.Render(); //m_btnHeadNext.Render(); // OK button m_btnOK.Render(); // Cancel button m_btnCancel.Render(); // Character control /* // Zoom in button m_btnZoomIn.Render(); // Zoom out button m_btnZoomOut.Render(); // Rotate to left button m_btnRotateToLeft.Render(); // Rotate to right m_btnRotateToRight.Render(); */ // Render all elements pDrawPort->FlushRenderingQueue(); // Render character information int nX = m_rcCharInfo.Left + CREATECHAR_DESC_SX; int nY = m_rcCharInfo.Top + CREATECHAR_DESC_SY; for( int iInfo = 0; iInfo < m_nCurInfoLines; iInfo++ ) { pDrawPort->PutTextEx( m_strCharInfo[iInfo], nX, nY, m_colCharInfo[iInfo] ); nY += _pUIFontTexMgr->GetLineHeight(); } // Prepare Rendering Text nX = m_rcCharInfo.Left; nY = m_rcCharInfo.Top; pDrawPort->PutTextEx( _S( 140, "캐릭터 생성" ), nX + CREATECHAR_TITLE_OFFSETX, nY + CREATECHAR_TITLE_OFFSETY ); pDrawPort->PutTextExRX( _S( 71, "이름" ), nX + CREATECHAR_NAME_RX, nY + CREATECHAR_NAME_SY ); pDrawPort->PutTextExRX( _S( 141, "직업" ), nX + CREATECHAR_NAME_RX, nY + CREATECHAR_JOB_SY ); pDrawPort->PutTextExRX( _S( 144, "얼굴" ), // 얼굴 nX + CREATECHAR_NAME_RX, nY + CREATECHAR_FACE_SY ); pDrawPort->PutTextExRX( _S( 143, "헤어" ), // 헤어 nX + CREATECHAR_NAME_RX, nY + CREATECHAR_HAIR_SY ); //pDrawPort->PutTextExRX( _S( 142, "머리" ), // 머리 // nX + CREATECHAR_NAME_RX, nY + CREATECHAR_HEAD_SY ); // Print Job pDrawPort->PutTextExCX( JobInfo().GetName(m_iSelectedJob), nX + CREATECHAR_JOB_MAIN_CY, nY + CREATECHAR_JOB_SY ); // Print Face CTString strTemp; strTemp.PrintF("%d", m_sbSelectedFace + 1); pDrawPort->PutTextExCX( strTemp, nX + CREATECHAR_JOB_MAIN_CY, nY + CREATECHAR_FACE_SY ); strTemp.PrintF("%d", m_sbSelectedHair + 1); // Print Hair pDrawPort->PutTextExCX( strTemp, nX + CREATECHAR_JOB_MAIN_CY, nY + CREATECHAR_HAIR_SY ); // Print Head //pDrawPort->PutTextExCX( CTString( "1" ), // nX + CREATECHAR_JOB_MAIN_CY, nY + CREATECHAR_FACE_SY ); // Flush all render text queue pDrawPort->EndTextEx(); // Reading window if( m_ebCharName.DoesShowReadingWindow() ) { // Set texture pDrawPort->InitTextureData( m_ptdBaseTexture ); // Reading window m_ebCharName.RenderReadingWindow(); // Render all elements pDrawPort->FlushRenderingQueue(); // Flush all render text queue pDrawPort->EndTextEx(); } // show night shadow message [11/6/2009 rumist] if( m_bIsShowMessageInfo ) { pDrawPort->InitTextureData( m_ptdMsgTexture ); m_bxNoticeMsg.SetBoxPos(m_rcMessageInfo); m_bxNoticeMsg.Render(); // Render all elements pDrawPort->FlushRenderingQueue(); m_msgNCText.SetRenderPos( m_rcMessageInfo.Left, m_rcMessageInfo.Top ); m_msgNCText.Render(); } }
void CUITrackPopup::Render() { if( !IsVisible() ) return; if( m_vecString.size() <= 0 ) return; CDrawPort* pDrawPort = CUIManager::getSingleton()->GetDrawPort(); #if defined G_RUSSIA // [2011/05/17 : Sora] 팝업창에서 스트링을 쓰지 않을 경우 글자 길이가 0이되어 팝업창 사이즈가 줄어든다 if( m_strLongestStringInMenu.Length() > 0 ) { Resize( pDrawPort->GetTextWidth( m_strLongestStringInMenu ) ); } #endif // 배경 렌더 int nX, nY; UIRect m_rcBack; GetAbsPos( nX, nY ); m_rcBack.SetRect( nX, nY, nX + m_nWidth, nY + m_nHeight ); // Item Back region pDrawPort->AddTexture( m_rcBack.Left, m_rcBack.Top, m_rcBack.Left + 7, m_rcBack.Top + 7, m_rtBackUL.U0, m_rtBackUL.V0, m_rtBackUL.U1, m_rtBackUL.V1, 0xFFFFFFFF ); pDrawPort->AddTexture( m_rcBack.Left + 7, m_rcBack.Top, m_rcBack.Right - 7, m_rcBack.Top + 7, m_rtBackUM.U0, m_rtBackUM.V0, m_rtBackUM.U1, m_rtBackUM.V1, 0xFFFFFFFF ); pDrawPort->AddTexture( m_rcBack.Right - 7, m_rcBack.Top, m_rcBack.Right, m_rcBack.Top + 7, m_rtBackUR.U0, m_rtBackUR.V0, m_rtBackUR.U1, m_rtBackUR.V1, 0xFFFFFFFF ); pDrawPort->AddTexture( m_rcBack.Left, m_rcBack.Top + 7, m_rcBack.Left + 7, m_rcBack.Bottom - 7, m_rtBackML.U0, m_rtBackML.V0, m_rtBackML.U1, m_rtBackML.V1, 0xFFFFFFFF ); pDrawPort->AddTexture( m_rcBack.Left + 7, m_rcBack.Top + 7, m_rcBack.Right - 7, m_rcBack.Bottom - 7, m_rtBackMM.U0, m_rtBackMM.V0, m_rtBackMM.U1, m_rtBackMM.V1, 0xFFFFFFFF ); pDrawPort->AddTexture( m_rcBack.Right - 7, m_rcBack.Top + 7, m_rcBack.Right, m_rcBack.Bottom - 7, m_rtBackMR.U0, m_rtBackMR.V0, m_rtBackMR.U1, m_rtBackMR.V1, 0xFFFFFFFF ); pDrawPort->AddTexture( m_rcBack.Left, m_rcBack.Bottom - 7, m_rcBack.Left + 7, m_rcBack.Bottom, m_rtBackLL.U0, m_rtBackLL.V0, m_rtBackLL.U1, m_rtBackLL.V1, 0xFFFFFFFF ); pDrawPort->AddTexture( m_rcBack.Left + 7, m_rcBack.Bottom - 7, m_rcBack.Right - 7, m_rcBack.Bottom, m_rtBackLM.U0, m_rtBackLM.V0, m_rtBackLM.U1, m_rtBackLM.V1, 0xFFFFFFFF ); pDrawPort->AddTexture( m_rcBack.Right - 7, m_rcBack.Bottom - 7, m_rcBack.Right, m_rcBack.Bottom, m_rtBackLR.U0, m_rtBackLR.V0, m_rtBackLR.U1, m_rtBackLR.V1, 0xFFFFFFFF ); // 원래 리스트 박스에 대한 내용 랜더 CUIListBox::Render(); }
// ---------------------------------------------------------------------------- // Name : !!RenderMasterStone() // Desc : // ---------------------------------------------------------------------------- void CUIMixNew::RenderMasterStone() { CDrawPort* pDrawPort = CUIManager::getSingleton()->GetDrawPort(); // Set mix texture pDrawPort->InitTextureData( m_ptdBaseTexture ); // Add render regions int nX, nY ,i; // Background // Top nX = m_nPosX + m_nWidth; nY = m_nPosY + 26; pDrawPort->AddTexture( m_nPosX, m_nPosY, nX, nY, m_rtTop.U0, m_rtTop.V0, m_rtTop.U1, m_rtTop.V1, 0xFFFFFFFF ); // Middle 1 pDrawPort->AddTexture( m_nPosX, nY, nX, nY + m_nTextRegionHeight, m_rtMiddle1.U0, m_rtMiddle1.V0, m_rtMiddle1.U1, m_rtMiddle1.V1, 0xFFFFFFFF ); // Middle 2 pDrawPort->AddTexture( m_nPosX+ 10, nY + 65 , nX-10,nY + m_nTextRegionHeight - 35, m_rtMiddle2.U0, m_rtMiddle2.V0, m_rtMiddle2.U1, m_rtMiddle2.V1, 0xFFFFFFFF ); // Bottom nY = m_nPosY + m_nHeight - 7; pDrawPort->AddTexture( m_nPosX, nY, nX, m_nPosY + m_nHeight, m_rtBottom.U0, m_rtBottom.V0, m_rtBottom.U1, m_rtBottom.V1, 0xFFFFFFFF ); for ( i = 0; i < MIXNEW_ITEM_SLOT_COUNT; i++ ) { // Slot item region pDrawPort->AddTexture( m_nPosX + m_rcItemSlot[i].Left, m_nPosY + m_rcItemSlot[i].Top, m_nPosX + m_rcItemSlot[i].Right, m_nPosY + m_rcItemSlot[i].Bottom, m_rtItemSlot.U0, m_rtItemSlot.V0, m_rtItemSlot.U1, m_rtItemSlot.V1, 0xFFFFFFFF ); } // Close button m_btnClose.Render(); // OK button m_btnOK.SetText(_S(5434,"업그레이드")); m_btnOK.Render(); // Cancel button m_btnCancel.Render(); // Render all elements pDrawPort->FlushRenderingQueue(); // Item for ( i = 0; i < MIXNEW_ITEM_SLOT_COUNT; i++ ) { if (m_pIconsSlot[i]->IsEmpty() == false) { m_pIconsSlot[i]->Render(pDrawPort); pDrawPort->FlushBtnRenderingQueue( UBET_ITEM ); } } // Text in title pDrawPort->PutTextEx( _S( 5433, "마스터 스톤" ), m_nPosX + MIXNEW_TITLE_TEXT_OFFSETX, m_nPosY + MIXNEW_TITLE_TEXT_OFFSETY, 0xFFFFFFFF ); nX = m_nPosX + MIXNEW_DESC_TEXT_SX; nY = m_nPosY + MIXNEW_DESC_TEXT_SY + 20; COLOR tv_col; for( int iDesc = 0; iDesc < m_nStringCount; iDesc++ ) { if(iDesc == 6) tv_col = 0xC87238FF; else tv_col = 0xC5C5C5FF; pDrawPort->PutTextEx( m_strMixDesc[iDesc], nX , nY, tv_col ); nY += _pUIFontTexMgr->GetLineHeight(); } m_strItemSlot[0] = _S( 5433, "마스터 스톤"); m_strItemSlot[1] = _S( 2736, "장비 아이템"); int tv_size = _pUIFontTexMgr->GetFontSpacing() + _pUIFontTexMgr->GetFontWidth(); pDrawPort->PutTextEx( m_strItemSlot[0], m_nPosX + 62 - m_strItemSlot[0].Length()* tv_size/2 , m_nPosY + MIXNEW_ITEM_SLOT_SIZE*2 + 5, 0x929090FF ); pDrawPort->PutTextEx( m_strItemSlot[1], m_nPosX + 152 - m_strItemSlot[1].Length()* tv_size/2 , m_nPosY + MIXNEW_ITEM_SLOT_SIZE*2 +5, 0x929090FF ); // Flush all render text queue pDrawPort->EndTextEx(); }
void CUIChildQuickSlot::SlotNumberRender() { CUIManager* pUIManager = CUIManager::getSingleton(); CDrawPort* pDrawPort = pUIManager->GetDrawPort(); ///< texture init pDrawPort->InitTextureData( m_ptdBaseTexture ); if( *(m_bRotation[m_nCurSlot]) == 1 ) { int nX = m_nPosX; int nY = m_nPosY; // 슬롯 번호 텍스춰 nX = m_nPosX + 16; nY = m_nPosY + 4; switch(m_nID) { case UI_QUICKSLOT2: { pDrawPort->AddTexture(nX, nY, nX + 398, nY + 7 , m_rtHorzSlotNumber.U0, m_rtHorzSlotNumber.V0 , m_rtHorzSlotNumber.U1, m_rtHorzSlotNumber.V1 , 0xFFFFFFFF); break; } case UI_QUICKSLOT3: { pDrawPort->AddTexture(nX, nY, nX + 406, nY + 7 , m_rtHorzSlotNumber.U0, m_rtHorzSlotNumber.V0 , m_rtHorzSlotNumber.U1, m_rtHorzSlotNumber.V1 , 0xFFFFFFFF); break; } } } else if ( *(m_bRotation[m_nCurSlot]) == 0 ) { int nX = m_nPosX; int nY = m_nPosY; // 슬롯 번호 텍스춰 nX = m_nPosX + 4; nY = m_nPosY + 16; switch(m_nID) { case UI_QUICKSLOT2: { pDrawPort->AddTexture(nX, nY, nX + 13, nY + 392 , m_rtVerSlotNumber.U0, m_rtVerSlotNumber.V0 , m_rtVerSlotNumber.U1, m_rtVerSlotNumber.V1 , 0xFFFFFFFF); break; } case UI_QUICKSLOT3: { pDrawPort->AddTexture(nX, nY, nX + 21, nY + 392 , m_rtVerSlotNumber.U0, m_rtVerSlotNumber.V0 , m_rtVerSlotNumber.U1, m_rtVerSlotNumber.V1 , 0xFFFFFFFF); break; } } } pDrawPort->FlushRenderingQueue(); }
// ---------------------------------------------------------------------------- // Name : Render() // Desc : // ---------------------------------------------------------------------------- void CUISelectServer::Render() { #ifdef AUTO_RESTART // [2012/10/18 : Sora] 재시작시 자동 로그인 extern BOOL g_bAutoRestart; if(g_bAutoRestart) { CUIManager::getSingleton()->RenderLoading(); return; } #endif CDrawPort* pDrawPort = CUIManager::getSingleton()->GetDrawPort(); // Set select server texture pDrawPort->InitTextureData( m_ptdBaseTexture ); // Add render regions // Background int nY = m_nPosY + NOTICE_SIZE_Y + 29; int nY2 = m_nPosY + m_nHeight - 39; pDrawPort->AddTexture( m_nPosX, m_nPosY, m_nPosX + m_nWidth, m_nPosY +28, m_rtBackTop.U0, m_rtBackTop.V0, m_rtBackTop.U1, m_rtBackTop.V1, 0xFFFFFFFF ); pDrawPort->AddTexture( m_nPosX, m_nPosY +28, m_nPosX + m_nWidth, nY, m_rtBackTop1.U0, m_rtBackTop1.V0, m_rtBackTop1.U1, m_rtBackTop1.V1, 0xFFFFFFFF ); // 공지 창 pDrawPort->AddTexture( m_nPosX + 13 , m_nPosY +29, m_nPosX + m_nWidth - 13, nY -3, m_rtBackTop2.U0, m_rtBackTop2.V0, m_rtBackTop2.U1, m_rtBackTop2.V1, 0xFFFFFFFF ); // pDrawPort->AddTexture( m_nPosX + 18 , m_nPosY +29, m_nPosX + m_nWidth - 18, nY, // m_rtBackTop2.U0, m_rtBackTop2.V0, m_rtBackTop2.U1, m_rtBackTop2.V1, // 0xFFFFFFFF ); // 서버군, 서버 표시 pDrawPort->AddTexture( m_nPosX, nY , m_nPosX + m_nWidth, nY + 29, m_rtBackMiddle0.U0, m_rtBackMiddle0.V0, m_rtBackMiddle0.U1, m_rtBackMiddle0.V1, 0xFFFFFFFF ); pDrawPort->AddTexture( m_nPosX, nY + 29 , m_nPosX + m_nWidth, nY2 , m_rtBackMiddle.U0, m_rtBackMiddle.V0, m_rtBackMiddle.U1, m_rtBackMiddle.V1, 0xFFFFFFFF ); pDrawPort->AddTexture( m_nPosX, nY2, m_nPosX + m_nWidth, m_nPosY + m_nHeight, m_rtBackBottom.U0, m_rtBackBottom.V0, m_rtBackBottom.U1, m_rtBackBottom.V1, 0xFFFFFFFF ); // 추천 서버 이미지 int count = m_vectorGroupInfo.size(); for ( int i = 0; i < count; i++) { UBYTE Type = m_vectorGroupInfo[i].ubServerType; int nOrder = m_vectorGroupInfo[i].nOrder; FLOAT U0, U1, V0, V1; switch (Type) { case SERVER_TYPE_RECOMEND: U0 = m_rtRecommend.U0; U1 = m_rtRecommend.U1; V0 = m_rtRecommend.V0; V1 = m_rtRecommend.V1; break; case SERVER_TYPE_SPEEDUP: U0 = m_rtSpeed.U0; U1 = m_rtSpeed.U1; V0 = m_rtSpeed.V0; V1 = m_rtSpeed.V1; break; default: continue; } pDrawPort->AddTexture( m_nPosX+RECOMMEND_POS_X , nY+4+(15* nOrder) , m_nPosX +RECOMMEND_POS_X+ 63, nY + 4 + (15*(nOrder+1)), U0, V0, U1, V1, 0xFFFFFFFF ); } // Ok button m_btnOK.Render(); // Cancel button m_btnCancel.Render(); #ifdef AUTO_RESTART // [2012/10/18 : Sora] 재시작시 자동 로그인 m_btnExit.Render(); #endif // Server group list box m_lbServerGroup.Render(); // Server list box m_lbServer.Render(); // Render all elements pDrawPort->FlushRenderingQueue(); // text render pDrawPort->PutTextEx( _S( 250, "서버 선택" ), m_nPosX + SELECTSERVER_TITLE_TEXT_OFFSETX, m_nPosY + SELECTSERVER_TITLE_TEXT_OFFSETY , 0xFFFFFFFF ); pDrawPort->PutTextEx( _S( 251, "서버군" ), m_nPosX + SELECTSERVER_GROUP_TEXT_POSX, m_nPosY + SELECTSERVER_GROUP_TEXT_POSY + NOTICE_SIZE_Y, 0xFFB500FF ); pDrawPort->PutTextEx( _S( 370, "서버" ), m_nPosX + SELECTSERVER_SERVER_TEXT_POSX, m_nPosY + SELECTSERVER_SERVER_TEXT_POSY + NOTICE_SIZE_Y, 0xFFB500FF ); // --Add Message -------------------------------------------------->> int tv_y = m_nPosY + SELECTSERVER_TITLE_TEXT_OFFSETY + 35; #if defined G_KOR // 국내 설명 수정(초보지원) pDrawPort->PutTextEx( _S(4874, "♣초보지원 서버란?" ), m_nPosX + SELECTSERVER_TITLE_TEXT_OFFSETX, tv_y , 0xFFAAFFFF ); tv_y+=20; pDrawPort->PutTextEx( _S(4875, "라스트카오스를 처음 시작하신다면 3채널(초보지원) 서버를 추천" ), m_nPosX + SELECTSERVER_TITLE_TEXT_OFFSETX, tv_y , 0xFFFFFFFF ); tv_y+=15; pDrawPort->PutTextEx( _S(4876, "해 드립니다. 3채널에 있는 '초보 지원사'를 통해 경험치/숙련도" ), m_nPosX + SELECTSERVER_TITLE_TEXT_OFFSETX, tv_y , 0xFFFFFFFF ); tv_y+=15; pDrawPort->PutTextEx( _S(4877, "2배, 물리/마법 공격력이 20% 향상되는 '초보지원 버프'를 받으"), m_nPosX + SELECTSERVER_TITLE_TEXT_OFFSETX, tv_y , 0xFFFFFFFF ); tv_y+=15; pDrawPort->PutTextEx( _S(4878, "실 수 있습니다. '초보지원 버프'는 레벨 60까지만 제공됩니다."), m_nPosX + SELECTSERVER_TITLE_TEXT_OFFSETX, tv_y , 0xFFFFFFFF ); #else pDrawPort->PutTextEx( _S(2618, "♣추천 서버란?" ), m_nPosX + SELECTSERVER_TITLE_TEXT_OFFSETX, tv_y , 0xFFAAFFFF ); tv_y+=20; pDrawPort->PutTextEx( _S(2619, "매일 정오에 교체가 되며, 해당 서버에서 플레이를 하면 30레벨" ), m_nPosX + SELECTSERVER_TITLE_TEXT_OFFSETX, tv_y , 0xFFFFFFFF ); tv_y+=15; pDrawPort->PutTextEx( _S(2620, "이하의 캐릭터는 사냥시 신비한 효과를 주는 버프 아이템을 얻을" ), m_nPosX + SELECTSERVER_TITLE_TEXT_OFFSETX, tv_y , 0xFFFFFFFF ); tv_y+=15; pDrawPort->PutTextEx( _S(2621, "수 있으며, 모든 유저에 대해서 1시간 간격으로 추첨을 통하여 "), m_nPosX + SELECTSERVER_TITLE_TEXT_OFFSETX, tv_y , 0xFFFFFFFF ); tv_y+=15; pDrawPort->PutTextEx( _S(2622, "문스톤 10개를 드리는 이벤트 입니다."), m_nPosX + SELECTSERVER_TITLE_TEXT_OFFSETX, tv_y , 0xFFFFFFFF ); #endif // ----------------------------------------------------------------<< // Flush all render text queue pDrawPort->EndTextEx(); }
// ---------------------------------------------------------------------------- // Name : Render() // Desc : // ---------------------------------------------------------------------------- void CUIRemission::Render() { // Check distance FLOAT fDiffX = _pNetwork->MyCharacterInfo.x - m_fNpcX; FLOAT fDiffZ = _pNetwork->MyCharacterInfo.z - m_fNpcZ; if( fDiffX * fDiffX + fDiffZ * fDiffZ > UI_VALID_SQRDIST ) CloseRemission(); CDrawPort* pDrawPort = CUIManager::getSingleton()->GetDrawPort(); // Set remission texture pDrawPort->InitTextureData( m_ptdBaseTexture ); // Add render regions // Background pDrawPort->AddTexture( m_nPosX, m_nPosY, m_nPosX + m_nWidth, m_nPosY + m_nHeight, m_rtBackground.U0, m_rtBackground.V0, m_rtBackground.U1, m_rtBackground.V1, 0xFFFFFFFF ); // Close button m_btnClose.Render(); // Buy button m_btnOK.Render(); // Cancel button m_btnCancel.Render(); m_sbRemissionIcon.Render(); // List box of remission desc m_lbRemissionDesc.Render(); // Render all elements pDrawPort->FlushRenderingQueue(); // Remission buttons RenderRemissionBtns(); // Text in remission pDrawPort->PutTextEx( _S( 601, "면죄부" ), m_nPosX + REMISSION_TITLE_TEXT_OFFSETX, m_nPosY + REMISSION_TITLE_TEXT_OFFSETY, 0xFFFFFFFF ); pDrawPort->PutTextExCX( _S( 601, "면죄부" ), m_nPosX + REMISSION_TAB_CX, m_nPosY + REMISSION_TAB_SY, 0x6B6B6BFF ); pDrawPort->PutTextEx( _S( 609, "현재 나스" ), m_nPosX + REMISSION_CURSP_SX, m_nPosY + REMISSION_CURSP_SY ); CUIManager* pUIManager = CUIManager::getSingleton(); // Set money CTString strPlayerMoney; if( _pNetwork->MyCharacterInfo.money > 0 ) { strPlayerMoney.PrintF( "%I64d", _pNetwork->MyCharacterInfo.money ); pUIManager->InsertCommaToString( strPlayerMoney ); } pDrawPort->PutTextExRX( strPlayerMoney, m_nPosX + REMISSION_CURSP_RX, m_nPosY + REMISSION_CURSP_SY, pUIManager->GetNasColor( strPlayerMoney ) ); // Flush all render text queue pDrawPort->EndTextEx(); }
// ---------------------------------------------------------------------------- // Name : RenderRemissionBtns() // Desc : // ---------------------------------------------------------------------------- void CUIRemission::RenderRemissionBtns() { int nX = REMISSION_SLOT_SX, nY = REMISSION_SLOT_SY; int iRow, iRowS, iRowE; // Remission remission button iRowS = m_sbRemissionIcon.GetScrollPos(); iRowE = iRowS + REMISSION_SLOT_ROW; if ( m_vectorbtnRemissions.size() < iRowE ) { iRowE = m_vectorbtnRemissions.size(); } for( iRow = iRowS; iRow < iRowE; iRow++, nY += REMISSION_SLOT_OFFSETY ) { m_vectorbtnRemissions[iRow].SetPos( nX, nY ); if( m_vectorbtnRemissions[iRow].IsEmpty() ) continue; m_vectorbtnRemissions[iRow].Render(); } CDrawPort* pDrawPort = CUIManager::getSingleton()->GetDrawPort(); // Render all button elements pDrawPort->FlushBtnRenderingQueue( UBET_REMISSION ); if( m_nSelRemissionID >= 0 ) { // Set remission learn texture pDrawPort->InitTextureData( m_ptdBaseTexture ); m_vectorbtnRemissions[m_nSelRemissionID].GetAbsPos( nX, nY ); pDrawPort->AddTexture( nX, nY, nX + BTN_SIZE, nY + BTN_SIZE, m_rtSelOutline.U0, m_rtSelOutline.V0, m_rtSelOutline.U1, m_rtSelOutline.V1, 0xFFFFFFFF ); // Render all elements pDrawPort->FlushRenderingQueue(); } nY = REMISSION_NAME_SY; iRowS = m_sbRemissionIcon.GetScrollPos(); iRowE = iRowS + REMISSION_SLOT_ROW; if ( m_vectorbtnRemissions.size() < iRowE ) { iRowE = m_vectorbtnRemissions.size(); } for( iRow = iRowS; iRow < iRowE; iRow++, nY += REMISSION_SLOT_OFFSETY ) { if( m_vectorbtnRemissions[iRow].IsEmpty() ) continue; const SBYTE sbRemissionType = m_vectorbtnRemissions[iRow].GetRemissionType(); if(sbRemissionType == REMISSION_NONE) continue; switch(sbRemissionType) { case REMISSION_HP: m_strShortDesc.PrintF( _S( 616, "육체의 면죄부" ) ); pDrawPort->PutTextExCX( m_strShortDesc, m_nPosX + REMISSION_NAME_CX, m_nPosY + nY, 0xFFC672FF); break; case REMISSION_MP: m_strShortDesc.PrintF( _S( 617, "영혼의 면죄부" ) ); pDrawPort->PutTextExCX( m_strShortDesc, m_nPosX + REMISSION_NAME_CX, m_nPosY + nY, 0xFFC672FF); break; case REMISSION_ITEM: { m_strShortDesc.PrintF( _S( 618, "장비의 면죄부" ) ); pDrawPort->PutTextExCX( m_strShortDesc, m_nPosX + REMISSION_NAME_CX, m_nPosY + nY, 0xFFC672FF); m_strShortDesc.PrintF( "%s", _pNetwork->GetItemName( m_vectorbtnRemissions[iRow].GetItemIndex() )); pDrawPort->PutTextExCX( m_strShortDesc, m_nPosX + REMISSION_NAME_CX, m_nPosY + nY + 17, 0xBDA99FFF); } break; } } }
// ---------------------------------------------------------------------------- // Name : Render() // Desc : // ---------------------------------------------------------------------------- void CUIListBox::Render() { // Get position int nX, nY; GetAbsPos( nX, nY ); CDrawPort* pDrawPort = CUIManager::getSingleton()->GetDrawPort(); // Add render regions // Selection bar if( m_bShowSelectBar && m_nSelectList >= 0 ) { int nSelLine = m_nSelectList - m_sbScrollBar.GetScrollPos(); if( nSelLine >= 0 ) { if( !m_bScrollBar || nSelLine < m_sbScrollBar.GetScrollRange() ) { int nBarY = nY + m_nTextSY + nSelLine * m_nLineHeight; pDrawPort->AddTexture( nX + m_rcSelectOver.Left, nBarY + m_rcSelectOver.Top, nX + m_rcSelectOver.Right, nBarY + m_rcSelectOver.Bottom, m_rtSelectOver.U0, m_rtSelectOver.V0, m_rtSelectOver.U1, m_rtSelectOver.V1, 0xFFFFFFFF ); } } } // Scroll bar if( m_bScrollBar ) m_sbScrollBar.Render(); // Text in list box for( int nCol = 0; nCol < m_vecString.size(); nCol++ ) { int nRowS = m_sbScrollBar.GetScrollPos(); int nRowE = nRowS + m_nLinePerPage; if( nRowE > m_vecString[nCol].vecString.size() ) nRowE = m_vecString[nCol].vecString.size(); COLOR colText; int nTextX = nX + m_nTextSX + m_vecColumnSX[nCol]; int nTextY = nY + m_nTextSY; int nSelList = -1, nOverList = -1; if( m_bSelectList ) { nSelList = m_nSelectList; nOverList = nRowS + m_nOverList; } for( int nList = nRowS; nList < nRowE; nList++ ) { if( m_vecSelectable[nList] ) { if( nList == nSelList ) colText = m_colSelectList; else if( nList == nOverList ) colText = m_colOverList; else colText = m_vecColor[nCol].vecColor[nList]; } else colText = m_vecColor[nCol].vecColor[nList]; switch( m_vecAlign[nCol] ) { case TEXT_LEFT: pDrawPort->PutTextEx( m_vecString[nCol].vecString[nList], nTextX, nTextY, colText ); if (m_vecBold[nCol].vecBold[nList]) pDrawPort->PutTextEx( m_vecString[nCol].vecString[nList], nTextX+1, nTextY, colText ); break; case TEXT_CENTER: pDrawPort->PutTextExCX( m_vecString[nCol].vecString[nList], nTextX, nTextY, colText ); if (m_vecBold[nCol].vecBold[nList]) pDrawPort->PutTextExCX( m_vecString[nCol].vecString[nList], nTextX+1, nTextY, colText ); break; case TEXT_RIGHT: pDrawPort->PutTextExRX( m_vecString[nCol].vecString[nList], nTextX, nTextY, colText ); if (m_vecBold[nCol].vecBold[nList]) pDrawPort->PutTextExRX( m_vecString[nCol].vecString[nList], nTextX+1, nTextY, colText ); break; } nTextY += m_nLineHeight; } } }
// ---------------------------------------------------------------------------- // Name : Render() // Desc : // ---------------------------------------------------------------------------- void CUIHelp::Render() { CDrawPort* pDrawPort = CUIManager::getSingleton()->GetDrawPort(); m_bVisible = TRUE; // Set web board texture pDrawPort->InitTextureData( m_ptdBaseTexture ); // Add render regions int nX, nY, nX2, nY2; // Background // Upper left nX = m_nPosX; nY = m_nPosY; nX2 = m_nPosX + m_nWidth; nY2 = m_nPosY + 28; pDrawPort->AddTexture( nX, nY, nX + 49, nY2, m_rtTitleUL.U0, m_rtTitleUL.V0, m_rtTitleUL.U1, m_rtTitleUL.V1, 0xFFFFFFFF ); // Upper middle pDrawPort->AddTexture( nX + 49, nY, nX2 - 32, nY2, m_rtTitleUM.U0, m_rtTitleUM.V0, m_rtTitleUM.U1, m_rtTitleUM.V1, 0xFFFFFFFF ); // Upper right pDrawPort->AddTexture( nX2 - 32, nY, nX2, nY2, m_rtTitleUR.U0, m_rtTitleUR.V0, m_rtTitleUR.U1, m_rtTitleUR.V1, 0xFFFFFFFF ); nY = nY2; nY2 = nY2 + 10; pDrawPort->AddTexture( nX, nY, nX + 49, nY2, m_rtBackUL.U0, m_rtBackUL.V0, m_rtBackUL.U1, m_rtBackUL.V1, 0xFFFFFFFF ); // Upper middle pDrawPort->AddTexture( nX + 49, nY, nX2 - 32, nY2, m_rtBackUM.U0, m_rtBackUM.V0, m_rtBackUM.U1, m_rtBackUM.V1, 0xFFFFFFFF ); // Upper right pDrawPort->AddTexture( nX2 - 32, nY, nX2, nY2, m_rtBackUR.U0, m_rtBackUR.V0, m_rtBackUR.U1, m_rtBackUR.V1, 0xFFFFFFFF ); // Middle left nY = m_nPosY + m_nHeight - 15; pDrawPort->AddTexture( nX, nY2, nX + 49, nY, m_rtBackML.U0, m_rtBackML.V0, m_rtBackML.U1, m_rtBackML.V1, 0xFFFFFFFF ); // Middle middle pDrawPort->AddTexture( nX + 49, nY2, nX2 - 32, nY, m_rtBackMM.U0, m_rtBackMM.V0, m_rtBackMM.U1, m_rtBackMM.V1, 0xFFFFFFFF ); // Middle right pDrawPort->AddTexture( nX2 - 32, nY2, nX2, nY, m_rtBackMR.U0, m_rtBackMR.V0, m_rtBackMR.U1, m_rtBackMR.V1, 0xFFFFFFFF ); // Lower left nY2 = m_nPosY + m_nHeight; pDrawPort->AddTexture( nX, nY, nX + 49, nY2, m_rtBackLL.U0, m_rtBackLL.V0, m_rtBackLL.U1, m_rtBackLL.V1, 0xFFFFFFFF ); // Lower middle pDrawPort->AddTexture( nX + 49, nY, nX2 - 32, nY2, m_rtBackLM.U0, m_rtBackLM.V0, m_rtBackLM.U1, m_rtBackLM.V1, 0xFFFFFFFF ); // Lower right pDrawPort->AddTexture( nX2 - 32, nY, nX2, nY2, m_rtBackLR.U0, m_rtBackLR.V0, m_rtBackLR.U1, m_rtBackLR.V1, 0xFFFFFFFF ); // Close button m_btnClose.Render(); // Text in web board // Title pDrawPort->PutTextEx( _S( 1610, "도움말" ), m_nPosX + HELP_TITLE_OFFSETX, m_nPosY + HELP_TITLE_OFFSETY, 0xFFFFFFFF ); // Render subject List RenderList(); RenderContent(); // Flush all render queue pDrawPort->FlushRenderingQueue(); pDrawPort->EndTextEx(); // Render Help Image if( m_iImageIdx>=0 ) RenderImage( m_iImageIdx ); }
void CUIPortal::updateUI() { if (m_pList == NULL) return; m_pList->DeleteAllListItem(); int nMax = m_vectorListInfo.size(); if (nMax <= 0) return; CUIListItem* pTemp = m_pList->GetListItemTemplate(); if (pTemp == NULL) return; CUIListItem* pItem = NULL; CUIText* pText = NULL; CTString strTemp; CDrawPort* pDrawPort = CUIManager::getSingleton()->GetDrawPort(); for( int i = 0; i < nMax; i++ ) { m_pList->AddListItem(pTemp->Clone()); pItem = (CUIListItem*)m_pList->GetListItem(i); if (pItem == NULL) return; { CmdPortalMouseEvent* pCmd = new CmdPortalMouseEvent; pCmd->setData(this, pItem, 0xF8E1B5FF); pItem->SetCommandEnter(pCmd); } { CmdPortalMouseEvent* pCmd = new CmdPortalMouseEvent; pCmd->setData(this, pItem, 0xC0C0C0FF); pItem->SetCommandLeave(pCmd); } pText = (CUIText*)pItem->findUI("txt_zone"); if (pText != NULL) { strTemp.PrintF("%s", CZoneInfo::getSingleton()->GetZoneName( m_vectorListInfo[i].zone ) ); ULONG nStringWidth = pDrawPort->GetTextWidth2(strTemp); if (nStringWidth > pText->GetWidth()) { pText->setTooltip(strTemp); strTemp = UtilHelp::getSingleton()->GetCalcStringEllipsis(strTemp, pText->GetWidth(), CTString("...")); } pText->SetText(strTemp); } pText = (CUIText*)pItem->findUI("txt_pos"); if (pText != NULL) { strTemp.PrintF("%s", CZoneInfo::getSingleton()->GetExtraName( m_vectorListInfo[i].zone, m_vectorListInfo[i].extra ) ); ULONG nStringWidth = pDrawPort->GetTextWidth2(strTemp); if (nStringWidth > pText->GetWidth()) { pText->setTooltip(strTemp); strTemp = UtilHelp::getSingleton()->GetCalcStringEllipsis(strTemp, pText->GetWidth(), CTString("...")); } pText->SetText(strTemp); } } m_pList->UpdateList(); }
// ---------------------------------------------------------------------------- // Name : Render() // Desc : // ---------------------------------------------------------------------------- void CUISelectList::Render() { CDrawPort* pDrawPort = CUIManager::getSingleton()->GetDrawPort(); // Set texture pDrawPort->InitTextureData( m_ptdBaseTexture ); // Add render regions int nX, nY; // Background // Top nX = m_nPosX + m_nWidth; nY = m_nPosY + 26; pDrawPort->AddTexture( m_nPosX, m_nPosY, nX, nY, m_rtBackTop.U0, m_rtBackTop.V0, m_rtBackTop.U1, m_rtBackTop.V1, 0xFFFFFFFF ); // Middle 1 pDrawPort->AddTexture( m_nPosX, nY, nX, nY + m_nTextRegionHeight, m_rtBackMiddle1.U0, m_rtBackMiddle1.V0, m_rtBackMiddle1.U1, m_rtBackMiddle1.V1, 0xFFFFFFFF ); // Middle 2 nY += m_nTextRegionHeight; pDrawPort->AddTexture( m_nPosX, nY, nX, m_nPosY + m_nHeight - 7, m_rtBackMiddle2.U0, m_rtBackMiddle2.V0, m_rtBackMiddle2.U1, m_rtBackMiddle2.V1, 0xFFFFFFFF ); // Bottom nY = m_nPosY + m_nHeight - 7; pDrawPort->AddTexture( m_nPosX, nY, nX, m_nPosY + m_nHeight, m_rtBackBottom.U0, m_rtBackBottom.V0, m_rtBackBottom.U1, m_rtBackBottom.V1, 0xFFFFFFFF ); // Registration if( m_dwStyle & SLS_REGIST ) m_btnRegist.Render(); // Reward if( m_dwStyle & SLS_REWARD ) m_btnReward.Render(); // Cancel button if( m_dwStyle & SLS_CANCEL ) m_btnCancel.Render(); // Prev button if( m_dwStyle & SLS_PREV ) m_btnPrev.Render(); // Next button if( m_dwStyle & SLS_NEXT ) m_btnNext.Render(); // Render all elements pDrawPort->FlushRenderingQueue(); // Title pDrawPort->PutTextEx( m_strTitle, m_nPosX + SELECTLIST_TITLE_TEXT_OFFSETX, m_nPosY + SELECTLIST_TITLE_TEXT_OFFSETY, 0xFFFFFFFF ); // List strings int nLineCount; int tv_size = m_vSelList.size(); int tv_page = m_nMaxLine*m_nPageCur; nLineCount = tv_size>(tv_page+m_nMaxLine) ? (tv_page+m_nMaxLine):tv_size ; CTString tIdx,sName; nX = m_nPosX ; nY = m_nPosY + 30 ; for( int i = tv_page; i < nLineCount; i++ ) { tIdx.PrintF("%d.",i+1); sName = m_vSelList[i].m_sName; if( m_nSelLine == i ) m_selColor = 0x49A1FFFF; else m_selColor = 0xF2F2F2FF; pDrawPort->PutTextEx( tIdx, nX +15, nY ,m_selColor); if(m_vSelList[i].m_nIndex == _pNetwork->MyCharacterInfo.index) sName+=CTString("(Me)"); pDrawPort->PutTextEx( sName, nX + 35, nY ,m_selColor); pDrawPort->PutTextEx( m_pstrState[m_vSelList[i].m_nState], nX + 160, nY,m_selColor); nY += TEXT_GAP; } // Flush all render text queue pDrawPort->EndTextEx(); }
void CChildFrame::TestGame( BOOL bFullScreen) { // turn off info window CMainFrame* pMainFrame = STATIC_DOWNCAST(CMainFrame, AfxGetMainWnd()); pMainFrame->HideInfoWindow(); CWorldEditorView *pPerspectiveView = GetPerspectiveView(); ASSERT( pPerspectiveView != NULL); SetActiveView( pPerspectiveView, FALSE); CWorldEditorDoc* pDoc = pPerspectiveView->GetDocument(); CTFileName fnmWorldToPlay; CTFileName fnmTempWorld = CTString("Temp\\TestGame.wld"); // if the world was never saved or if it is modified if( (!pDoc->m_bWasEverSaved && wed_bSaveTestGameFirstTime) || pDoc->IsModified()) { // save world under temporary name ASSERT_VALID(pDoc); try { pDoc->m_woWorld.Save_t(fnmTempWorld); fnmWorldToPlay = fnmTempWorld; } catch( char *strError) { AfxMessageBox( CString(strError)); pPerspectiveView->EnableToolTips(TRUE); return; } // if the world is not modified (it is saved on disk) } else { // use the saved world fnmWorldToPlay = CTString(CStringA(pDoc->GetPathName())); try { fnmWorldToPlay.RemoveApplicationPath_t(); } catch( char *strError) { AfxMessageBox( CString(strError)); pPerspectiveView->EnableToolTips(TRUE); return; } } // set rendering preferences _wrpWorldRenderPrefs = pPerspectiveView->m_vpViewPrefs.m_wrpWorldRenderPrefs; _mrpModelRenderPrefs = pPerspectiveView->m_vpViewPrefs.m_mrpModelRenderPrefs; _wrpWorldRenderPrefs.SetShadowsType( pPerspectiveView->GetChildFrame()->m_stShadowType); _wrpWorldRenderPrefs.SetSelectedEntityModel( theApp.m_pEntityMarkerModelObject); _wrpWorldRenderPrefs.SetSelectedPortalModel( theApp.m_pPortalMarkerModelObject); _wrpWorldRenderPrefs.SetEmptyBrushModel( theApp.m_pEmptyBrushModelObject); _wrpWorldRenderPrefs.SetTextureLayerOn( theApp.m_bTexture1, 0); _wrpWorldRenderPrefs.SetTextureLayerOn( theApp.m_bTexture2, 1); _wrpWorldRenderPrefs.SetTextureLayerOn( theApp.m_bTexture3, 2); _wrpWorldRenderPrefs.DisableVisTweaks(FALSE); _wrpWorldRenderPrefs.SetSelectedEntityModel( theApp.m_pEntityMarkerModelObject); _wrpWorldRenderPrefs.SetSelectedPortalModel( theApp.m_pPortalMarkerModelObject); _wrpWorldRenderPrefs.SetEmptyBrushModel( theApp.m_pEmptyBrushModelObject); // prepare test game view/draw ports CViewPort *pvp = pPerspectiveView->m_pvpViewPort; CDrawPort *pdp = pPerspectiveView->m_pdpDrawPort; pdp->SetOverlappedRendering(FALSE); // we are not rendering scene over already rendered scene (used for CSG layer) // if full screen mode is required HWND hWndFullScreen=NULL; HINSTANCE hInstanceFullScreen; WNDCLASSEX wcFullScreen; char achWindowTitle[256]; // current window title if( bFullScreen) { // get full screen display mode info const PIX pixSizeI = theApp.m_dmFullScreen.dm_pixSizeI; const PIX pixSizeJ = theApp.m_dmFullScreen.dm_pixSizeJ; const DisplayDepth dd = theApp.m_dmFullScreen.dm_ddDepth; const GfxAPIType gat = theApp.m_gatFullScreen; // set OpenGL fullscreen (before window) if( gat==GAT_OGL) { const BOOL bRes = _pGfx->SetDisplayMode( gat, 0, pixSizeI, pixSizeJ, dd); if( !bRes) { WarningMessage( "Unable to setup full screen display."); return; } } // register the window class hInstanceFullScreen = AfxGetInstanceHandle(); ASSERT( hInstanceFullScreen!=NULL); wcFullScreen.cbSize = sizeof(wcFullScreen); wcFullScreen.style = CS_HREDRAW | CS_VREDRAW; wcFullScreen.lpfnWndProc = ::DefWindowProc; wcFullScreen.cbClsExtra = 0; wcFullScreen.cbWndExtra = 0; wcFullScreen.hInstance = hInstanceFullScreen; wcFullScreen.hIcon = LoadIcon( hInstanceFullScreen, (LPCTSTR)IDR_MAINFRAME ); wcFullScreen.hCursor = NULL; wcFullScreen.hbrBackground = NULL; wcFullScreen.lpszMenuName = CString(APPLICATION_NAME); wcFullScreen.lpszClassName = CString(APPLICATION_NAME); wcFullScreen.hIconSm = NULL; RegisterClassEx(&wcFullScreen); // create a window, invisible initially hWndFullScreen = CreateWindowExA( WS_EX_TOPMOST, APPLICATION_NAME, "Serious Editor - Full Screen Test Game", // title WS_POPUP, 0,0, pixSizeI, pixSizeJ, // window size NULL, NULL, hInstanceFullScreen, NULL); // didn't make it? ASSERT( hWndFullScreen!=NULL); if( hWndFullScreen==NULL) { if( gat==GAT_OGL) _pGfx->ResetDisplayMode( (enum GfxAPIType)theApp.m_iApi); WarningMessage( "Unable to setup window for full screen display."); return; } // set windows for engine CMainFrame* pMainFrame = STATIC_DOWNCAST(CMainFrame, AfxGetMainWnd()); SE_UpdateWindowHandle( hWndFullScreen); // set window title and show it sprintf( achWindowTitle, "Serious Editor - Test Game (FullScreen %dx%d)", pixSizeI, pixSizeJ); ::SetWindowTextA( hWndFullScreen, achWindowTitle); ::ShowWindow( hWndFullScreen, SW_SHOWNORMAL); // set Direct3D full screen (after window) #ifdef SE1_D3D if( gat==GAT_D3D) { const BOOL bRes = _pGfx->SetDisplayMode( gat, 0, pixSizeI, pixSizeJ, dd); if( !bRes) { WarningMessage( "Unable to setup full screen display."); ::DestroyWindow( hWndFullScreen); SE_UpdateWindowHandle( pMainFrame->m_hWnd); return; } } #endif // SE1_D3D // create canvas _pGfx->CreateWindowCanvas( hWndFullScreen, &pvp, &pdp); // initial screen fill and swap, just to get context running BOOL bSuccess = FALSE; if( pdp!=NULL && pdp->Lock()) { pdp->Fill(C_dGREEN|CT_OPAQUE); pdp->Unlock(); pvp->SwapBuffers(); bSuccess = TRUE; } // must succeed! ASSERT( bSuccess); if( !bSuccess) { _pGfx->ResetDisplayMode( (enum GfxAPIType)theApp.m_iApi); WarningMessage( "Unable to setup canvas for full screen display."); return; } } // enable sound snd_iFormat = Clamp( snd_iFormat, (INDEX)CSoundLibrary::SF_NONE, (INDEX)CSoundLibrary::SF_44100_16); _pSound->SetFormat( (enum CSoundLibrary::SoundFormat)snd_iFormat, TRUE); // run quick test game extern BOOL _bInOnDraw; _bInOnDraw = TRUE; _pGameGUI->QuickTest( fnmWorldToPlay, pdp, pvp); _bInOnDraw = FALSE; // disable sound _pSound->SetFormat( CSoundLibrary::SF_NONE); // restore default display mode and close test full screen window if( hWndFullScreen!=NULL) { _pGfx->ResetDisplayMode( (enum GfxAPIType)theApp.m_iApi); ::DestroyWindow( hWndFullScreen); SE_UpdateWindowHandle( pMainFrame->m_hWnd); } // redraw all views pDoc->UpdateAllViews( NULL); pPerspectiveView->EnableToolTips( TRUE); }
// ---------------------------------------------------------------------------- // Name : Render() // Desc : // ---------------------------------------------------------------------------- void CUICompound::Render() { CDrawPort* pDrawPort = CUIManager::getSingleton()->GetDrawPort(); // Set texture pDrawPort->InitTextureData( m_ptdBaseTexture ); // Add render regions int nX, nY, i; // Background // Top nX = m_nPosX + m_nWidth; nY = m_nPosY + 26; pDrawPort->AddTexture( m_nPosX, m_nPosY, nX, nY, m_rtTop.U0, m_rtTop.V0, m_rtTop.U1, m_rtTop.V1, 0xFFFFFFFF ); // Middle 1 pDrawPort->AddTexture( m_nPosX, nY, nX, nY + m_nTextRegionHeight, m_rtMiddle1.U0, m_rtMiddle1.V0, m_rtMiddle1.U1, m_rtMiddle1.V1, 0xFFFFFFFF ); // Middle 2 nY += m_nTextRegionHeight; pDrawPort->AddTexture( m_nPosX, nY, nX, m_nPosY + m_nHeight - 7, m_rtMiddle2.U0, m_rtMiddle2.V0, m_rtMiddle2.U1, m_rtMiddle2.V1, 0xFFFFFFFF ); // Bottom nY = m_nPosY + m_nHeight - 7; pDrawPort->AddTexture( m_nPosX, nY, nX, m_nPosY + m_nHeight, m_rtBottom.U0, m_rtBottom.V0, m_rtBottom.U1, m_rtBottom.V1, 0xFFFFFFFF ); for ( i = 0; i < COMPOUND_ITEM_SLOT_COUNT; i++ ) { // Slot item region pDrawPort->AddTexture( m_nPosX + m_rcItemSlot[i].Left, m_nPosY + m_rcItemSlot[i].Top, m_nPosX + m_rcItemSlot[i].Right, m_nPosY + m_rcItemSlot[i].Bottom, m_rtItemSlot.U0, m_rtItemSlot.V0, m_rtItemSlot.U1, m_rtItemSlot.V1, 0xFFFFFFFF ); } // Close button m_btnClose.Render(); // OK button m_btnOK.Render(); // Cancel button m_btnCancel.Render(); // Render all elements pDrawPort->FlushRenderingQueue(); // Item for( i = 0; i < COMPOUND_ITEM_SLOT_COUNT; i++ ) { if (m_pIconSlot[i]->IsEmpty() == false) { m_pIconSlot[i]->Render(pDrawPort); pDrawPort->FlushBtnRenderingQueue( UBET_ITEM ); } } // Text in pDrawPort->PutTextEx( _S( 723, "힘의 상자" ), m_nPosX + COMPOUND_TITLE_TEXT_OFFSETX, m_nPosY + COMPOUND_TITLE_TEXT_OFFSETY, 0xFFFFFFFF ); nX = m_nPosX + COMPOUND_DESC_TEXT_SX; nY = m_nPosY + COMPOUND_DESC_TEXT_SY; for( int iDesc = 0; iDesc < m_nStringCount; iDesc++ ) { pDrawPort->PutTextEx( m_strDesc[iDesc], nX , nY, 0xC5C5C5FF ); nY += _pUIFontTexMgr->GetLineHeight(); } // Flush all render text queue pDrawPort->EndTextEx(); }
// ------------------------------------------------------------------------------ // Name : Render // Desc : // ------------------------------------------------------------------------------ void CUIPetItemMix::Render() { CDrawPort* pDrawPort = CUIManager::getSingleton()->GetDrawPort(); // Set skill learn texture pDrawPort->InitTextureData( m_ptdBaseTexture ); // Add render regions ----------------------------------------------------------------------------------------------- // Background up pDrawPort->AddTexture( m_nPosX, m_nPosY, m_nPosX + m_nWidth, m_nPosY + PROCESS_TOP_HEIGHT, m_rtBackgroundTop.U0, m_rtBackgroundTop.V0, m_rtBackgroundTop.U1, m_rtBackgroundTop.V1, 0xFFFFFFFF ); // Background down pDrawPort->AddTexture( m_nPosX, m_nPosY+PROCESS_TOP_HEIGHT, m_nPosX + m_nWidth, m_nPosY + m_nHeight, m_rtBackgroundBtm.U0, m_rtBackgroundBtm.V0, m_rtBackgroundBtm.U1, m_rtBackgroundBtm.V1, 0xFFFFFFFF ); // Render Title Text pDrawPort->PutTextEx( _S( 2459, "제작" ) , m_nPosX + PROCESS_TITLE_TEXT_OFFSETX, m_nPosY + PROCESS_TITLE_TEXT_OFFSETY ); // Render Process Type if( m_nPetType == DRAGON_WEAPON ) pDrawPort->PutTextExCX( _S( 2460, "드래곤 웨폰 제작" ), m_nPosX + 106, m_nPosY + 35, COLOR_TITLE ); else if( m_nPetType == KNIGHT_AMOR ) pDrawPort->PutTextExCX( _S( 2461, "나이트 메어 방어구 제작" ), m_nPosX + 106, m_nPosY + 35, COLOR_TITLE ); // Process Item Scroll bar m_sbProcessItem.Render(); // List box of Need Item Desc m_lbPreconditionDesc.Render(); // Close button m_btnClose.Render(); // Process button ( A, B ) if( m_nPetType == DRAGON_WEAPON ) m_btnOK[0].Render(); else if( m_nPetType == KNIGHT_AMOR ) { m_btnOK[1].Render(); m_btnOK[2].Render(); } // Cancel button m_btnCancel.Render(); pDrawPort->FlushRenderingQueue(); // Render Process Item CTString m_strShortDesc; int nX = SLEARN_SLOT_SX; int nY = SLEARN_SLOT_SY; int iEnd = m_sbProcessItem.GetScrollPos() + PRODUCT_SLOT_ROW; if( iEnd > m_vecIcons.size() ) iEnd = m_vecIcons.size(); for ( int i = m_sbProcessItem.GetScrollPos(); i < iEnd; i++ ) { if( !m_vecIcons[i]->IsEmpty() ) { // render Item m_vecIcons[i]->SetPos ( nX, nY ); m_vecIcons[i]->Render(pDrawPort); // render Item desc CItemData* pItemData = _pNetwork->GetItemData ( m_vecIcons[i]->getIndex() ); const char* szItemName = _pNetwork->GetItemName ( m_vecIcons[i]->getIndex() ); pDrawPort->PutTextExCX( CTString ( szItemName ), m_nPosX + 122, m_nPosY + nY + 8, 0xC3C3C3ff ); nY += SLEARN_SLOT_OFFSETY; } } pDrawPort->FlushBtnRenderingQueue( UBET_ITEM ); // Flush all render text queue pDrawPort->EndTextEx(); pDrawPort->InitTextureData( m_ptdBaseTexture ); nX = SLEARN_SLOT_SX; nY = SLEARN_SLOT_SY; // render sel outline if ( m_nSelectProcessItem != -1 ) { int BoxX, BoxY; int nOffset = m_nSelectProcessItem - m_sbProcessItem.GetScrollPos(); if ( nOffset >= 0 && nOffset < PROCESS_SLOT_ROW ) { BoxX = m_nPosX + nX -1 ; BoxY = m_nPosY + nY + ( SLEARN_SLOT_OFFSETY * nOffset ) -1; pDrawPort->AddTexture( BoxX, BoxY, BoxX + 34, BoxY + 34, m_rtSelOutline.U0, m_rtSelOutline.V0, m_rtSelOutline.U1, m_rtSelOutline.V1, 0xffffffff ); } } pDrawPort->FlushRenderingQueue(); }