Exemple #1
0
void
thinkofgrapples()
{
	struct ship *sp, *sq;
	char friendly;

	foreachship(sp) {
		if (sp->file->captain[0] || sp->file->dir == 0)
			continue;
		foreachship(sq) {
			friendly = sp->nationality == capship(sq)->nationality;
			if (!friendly) {
				if (sp->file->struck || sp->file->captured != 0)
					continue;
				if (range(sp, sq) != 1)
					continue;
				if (grappled2(sp, sq))
					if (toughmelee(sp, sq, 0, 0))
						ungrap(sp, sq);
					else
						grap(sp, sq);
				else if (couldwin(sp, sq)) {
					grap(sp, sq);
					sp->file->loadwith = L_GRAPE;
				}
			} else
				ungrap(sp, sq);
		}
	}
}
Exemple #2
0
thinkofgrapples()
{
	register int n, l, friendly;

	for (n=0; n < scene[game].vessels; n++){
		if (!scene[game].ship[n].file -> captain[0] && pos[n].dir){
			for (l=0; l < scene[game].vessels; l++){
				if ((friendly = scene[game].ship[l].file -> captured) < 0)
					friendly = scene[game].ship[n].nationality == scene[game].ship[l].nationality;
				else
					friendly = scene[game].ship[n].nationality == scene[game].ship[friendly].nationality;
				if (!friendly){
					if (range(n,l) == 1 && !scene[game].ship[n].file -> struck && scene[game].ship[n].file -> captured < 0){
						if (grapple(n,l))
							if (toughmelee(n,l,0,0))
								ungrap(n, l);
							else
								grap(n, l);
						else if (couldwin(n,l)){
							grap(n, l);
							loadwith[n] = GRAPE;
						}
					}
				}
				else
					ungrap(n,l);
			}
		}
	}
}
Exemple #3
0
void controlUC::paintBkColor(HDC hDC)
{
	Gdiplus::Graphics grap(hDC);
	if( m_dwBackColor != 0 ) {
		gtc::drawer::fillRectangle(grap, m_dwBackColor, m_rcItem);
	}
}
Exemple #4
0
void controlUC::paintBkImage(HDC hDC)
{
	assert(hDC);
	gtc::image *pImage = nullptr;
	if (!m_bsBackImage.wsKeyImage.empty() && (pImage = m_pManager->findImage(m_bsBackImage.wsKeyImage)))
	{
		Gdiplus::Graphics grap(hDC);
		gtc::drawer::drawImage(grap, *pImage, m_rcItem, m_bsBackImage.rcScource);
		//gtc::drawer::drawString(grap, L"12431afasfja;", m_rcItem, m_pManager->getDefaultFontInfo()->hFont, BEAlignModeLeftTop, 0xFFFFFFFF);
	}
}
Exemple #5
0
void animateFrameUC::paintStatusImage(HDC hdc)
{
	assert(hdc && m_pManager);
	if(!m_pImage) return;
	if(m_vecFrames.size() <= 0)
	{
		WRITE_LOCK
		m_vecFrames = calculateAreaCell(m_pImage->getImageSize(), rectSize(m_rcItem));
	}
	Gdiplus::Graphics grap(hdc);
	READ_LOCK
	if(m_vecFrames.size() <= 0 || m_iFrame >= (int)m_vecFrames.size() || m_iFrame < 0) return;
	gtc::drawer::drawImage(grap, m_pImage, m_rcItem, m_vecFrames[m_iFrame]);
	m_iFrame = ++m_iFrame % m_vecFrames.size();

}
	Image* BRenderEngineAssist::genScaleImage(LPCTSTR imageFilePath, const SIZE& szImage, const RECT& rcCorner)
	{
		Image image(imageFilePath);
		Bitmap bmp(szImage.cx, szImage.cy);
		Graphics grap(&bmp);
		// 紙崙貧何
		grap.DrawImage(&image, RectF(0, 0, bmp.GetWidth(), bmp.GetHeight()), 0, 0, rcCorner.left, rcCorner.top, UnitPixel);
		grap.DrawImage(&image, RectF(0, 0, bmp.GetWidth(), bmp.GetHeight()), rcCorner.left, 0, image.GetWidth() - rcCorner.left - rcCorner.right, rcCorner.top, UnitPixel);
		grap.DrawImage(&image, RectF(0, 0, bmp.GetWidth(), bmp.GetHeight()), image.GetWidth() - rcCorner.right, 0, rcCorner.right, rcCorner.top, UnitPixel);
		
		// 紙崙嶄何
		grap.DrawImage(&image, RectF(0, 0, bmp.GetWidth(), bmp.GetHeight()), 0, rcCorner.top, rcCorner.left, image.GetHeight() - rcCorner.top - rcCorner.bottom, UnitPixel);
		grap.DrawImage(&image, RectF(0, 0, bmp.GetWidth(), bmp.GetHeight()), rcCorner.left, rcCorner.top, image.GetWidth() - rcCorner.left - rcCorner.right, image.GetHeight() - rcCorner.top - rcCorner.bottom, UnitPixel);
		grap.DrawImage(&image, RectF(0, 0, bmp.GetWidth(), bmp.GetHeight()), image.GetWidth() - rcCorner.right, rcCorner.top, rcCorner.right, image.GetHeight() - rcCorner.top - rcCorner.bottom, UnitPixel);
		
		// 紙崙和何
		grap.DrawImage(&image, RectF(0, 0, bmp.GetWidth(), bmp.GetHeight()), 0, image.GetHeight() - rcCorner.bottom, rcCorner.left, rcCorner.bottom, UnitPixel);
		grap.DrawImage(&image, RectF(0, 0, bmp.GetWidth(), bmp.GetHeight()), rcCorner.left, image.GetHeight() - rcCorner.bottom, image.GetWidth() - rcCorner.left - rcCorner.right, rcCorner.bottom, UnitPixel);
		grap.DrawImage(&image, RectF(0, 0, bmp.GetWidth(), bmp.GetHeight()), image.GetWidth() - rcCorner.right, image.GetHeight() - rcCorner.bottom, rcCorner.right, rcCorner.bottom, UnitPixel);

		return bmp.Clone(0, 0, bmp.GetWidth(), bmp.GetHeight(), PixelFormat32bppARGB);
	}
Exemple #7
0
void comboUC::paintStatusImage(HDC hdc)
{
	if( isFocused() ) m_uButtonState |= UCSTATE_FOCUSED;
	else m_uButtonState &= ~ UCSTATE_FOCUSED;
	if( !isEnabled() ) m_uButtonState |= UCSTATE_DISABLED;
	else m_uButtonState &= ~ UCSTATE_DISABLED;

	Gdiplus::Graphics grap(hdc);
	RECT rcSrc = {0};
	if( (m_uButtonState & UCSTATE_DISABLED) != 0 ) {
		if (getDisabledImage(rcSrc))
		{
			gtc::drawer::drawImage(grap, m_pImage, m_rcItem, rcSrc);
			return;
		}
		//if( !m_sDisabledImage.IsEmpty() ) {
		//	if( !DrawImage(hDC, (LPCTSTR)m_sDisabledImage) ) m_sDisabledImage.Empty();
		//	else return;
		//}
	}
	else if( (m_uButtonState & UCSTATE_PUSHED) != 0 ) {
		if (getPushedImage(rcSrc))
		{
			gtc::drawer::drawImage(grap, m_pImage, m_rcItem, rcSrc);
			return;
		}
		//if( !m_sPushedImage.IsEmpty() ) {
		//	if( !DrawImage(hDC, (LPCTSTR)m_sPushedImage) ) m_sPushedImage.Empty();
		//	else return;
		//}
	}
	else if( (m_uButtonState & UCSTATE_HOT) != 0 ) {
		if (getHotImage(rcSrc))
		{
			gtc::drawer::drawImage(grap, m_pImage, m_rcItem, rcSrc);
			return;
		}
		//if( !m_sHotImage.IsEmpty() ) {
		//	if( !DrawImage(hDC, (LPCTSTR)m_sHotImage) ) m_sHotImage.Empty();
		//	else return;
		//}
	}
	else if( (m_uButtonState & UCSTATE_FOCUSED) != 0 ) {
		if (getFocusedImage(rcSrc))
		{
			gtc::drawer::drawImage(grap, m_pImage, m_rcItem, rcSrc);
			return;
		}
		//if( !m_sFocusedImage.IsEmpty() ) {
		//	if( !DrawImage(hDC, (LPCTSTR)m_sFocusedImage) ) m_sFocusedImage.Empty();
		//	else return;
		//}
	}
	if (getNormalImage(rcSrc))
	{
		gtc::drawer::drawImage(grap, m_pImage, m_rcItem, rcSrc);
	}
	//if( !m_sNormalImage.IsEmpty() ) {
	//	if( !DrawImage(hDC, (LPCTSTR)m_sNormalImage) ) m_sNormalImage.Empty();
	//	else return;
	//}
}
Exemple #8
0
void CDlgTipDetail::OnPaint(CDCHandle dc)
{
    PAINTSTRUCT ps;
    HDC hDC = ::BeginPaint( m_hWnd, &ps );
    Gdiplus::Graphics grap(hDC);
    Gdiplus::Image *pImg = NULL;
    CDC memDC(hDC);
    int nDownHeightPos = m_rcClient.Height() - 27;

    memDC.SetBkMode(TRANSPARENT);

    pImg = BkPngPool::Get(IDP_VUL_TIP_HEAD);
    grap.DrawImage(pImg, 0,0);

    pImg = BkPngPool::Get(IDP_VUL_TIP_DOWN);
    grap.DrawImage(pImg, 0, nDownHeightPos);

    pImg = BkPngPool::Get(IDP_VUL_TIP_CLOSE);
    if (m_nCloseState == -1)
    {
        grap.DrawImage(pImg, m_rcCloseBtn.left, m_rcCloseBtn.top);
    }
    CRect rcGrant(0,84, DEF_VUL_TIP_DETAIL_WIDTH, nDownHeightPos);
    _DrawGradualColorRect(memDC, rcGrant,RGB(0xE4, 0xF0, 0xFE), RGB(0xD7, 0xE6, 0xF9), TRUE);
    
    _DrawLine(memDC, CPoint(0,0), CPoint(0,m_rcClient.Height()), RGB(0x87, 0x98, 0xA8));
    
    _DrawLine(memDC, CPoint(DEF_VUL_TIP_DETAIL_WIDTH - 1, 0), CPoint(DEF_VUL_TIP_DETAIL_WIDTH - 1, m_rcClient.Height()), RGB(0x87, 0x98, 0xA8));

    HFONT hHeadFont = BkFontPool::GetFont(TRUE, FALSE, FALSE, 1);
    HFONT hNormalFont = BkFontPool::GetFont(FALSE, FALSE, FALSE);
    CString strTitle;
    CString strTmp = BkString::Get(IDS_VULFIX_5019);
    FormatKBString(m_pItemData->nID, strTitle);
    strTitle =  strTmp + _T(":") + strTitle;
    CRect rcText(13, 10, 220, 25);
    CRect rcTemp;
    _DrawText(memDC, rcText, strTitle, RGB(0x0, 0x0, 0x0), hHeadFont);

    rcText.SetRect(15, 32, 200, 47);
    strTmp = BkString::Get(IDS_VULFIX_5021);
    strTitle = strTmp + _T(":") + m_pItemData->strPubDate;
    _DrawText(memDC, rcText, strTitle, RGB(0x44, 0x61, 0x83), hNormalFont);
    
    // 大小
    rcText.SetRect(275,32,DEF_VUL_TIP_DETAIL_WIDTH,47);
    FormatSizeString(m_pItemData->nFileSize, strTitle);
    strTmp = BkString::Get(IDS_VULFIX_5124);
    strTitle = strTmp + strTitle;
    _DrawText(memDC, rcText, strTitle, RGB(0x44, 0x61, 0x83), hNormalFont);
 
    // 绘制小点 和 描述文字
    pImg = BkPngPool::Get(IDP_VUL_TIP_POINT);
    CRect rcContent(15, 72, DEF_VUL_TIP_DETAIL_WIDTH, 72 + 15);
    
    if (!m_pItemData->strMSID.IsEmpty())
    {
        grap.DrawImage(pImg, rcContent.left, rcContent.top + 5);
        strTmp = BkString::Get(IDS_VULFIX_5123);
        strTmp += m_pItemData->strMSID;
        rcContent.left += 10;
        _DrawText(memDC, rcContent, strTmp, RGB(0,0,0), hNormalFont);
        rcContent.top += 17;
        rcContent.bottom += 17;
        rcContent.left = 15;
        rcContent.right = DEF_VUL_TIP_DETAIL_WIDTH;
    }

    grap.DrawImage(pImg, rcContent.left, rcContent.top + 5);
    rcContent.left += 10;
    strTmp = BkString::Get(IDS_VULFIX_5125);
    _DrawText(memDC, rcContent, strTmp, RGB(0,0,0), hNormalFont);

    rcContent.left = rcContent.right;
    rcContent.right = DEF_VUL_TIP_DETAIL_WIDTH;
    CString strAff = m_pItemData->strAffects;
    if (strAff.GetLength() < 25)
    {
        _DrawText(memDC, rcContent, strAff, RGB(255, 0, 0), hNormalFont);
    }
    else
    {
        strTmp = strAff.Mid(0, 25);
        _DrawText(memDC, rcContent, strTmp, RGB(255, 0, 0), hNormalFont);
        strAff = strAff.Mid(25);

        while(1)
        {
            if (strAff.GetLength() > 0)
            {
                int len = strAff.GetLength();
                rcContent.top += 17;
                rcContent.bottom += 17;
                rcContent.left = 25;
                rcContent.right = DEF_VUL_TIP_DETAIL_WIDTH;
                if (strAff.GetLength() > 30)
                    len = 30;
                strTmp = strAff.Mid(0, len);
                _DrawText(memDC, rcContent, strTmp, RGB(255, 0, 0), hNormalFont);
                strAff = strAff.Mid(len);
            }
            else
            {
                break;
            }
        }
    }

    // 描述

    rcContent.top += 17;
    rcContent.bottom += 17;
    rcContent.left = 15;
    rcContent.right = DEF_VUL_TIP_DETAIL_WIDTH;

    grap.DrawImage(pImg, rcContent.left, rcContent.top + 5);
    rcContent.left += 10;
    strTmp = BkString::Get(IDS_VULFIX_5172);
    _DrawText(memDC, rcContent, strTmp, RGB(0,0,0), hNormalFont);

    rcContent.left = rcContent.right;
    rcContent.right = DEF_VUL_TIP_DETAIL_WIDTH;
    CString strDes = m_pItemData->strDesc;
    if (strDes.GetLength() < 25)
    {
        _DrawText(memDC, rcContent, strDes, RGB(0, 0, 0), hNormalFont);
    }
    else
    {
        HFONT oldFont = memDC.SelectFont(hNormalFont);;
        int len = 25;
        strTmp = strDes.Mid(0, len);
        int nCount = 0;
        while(1)
        {
            CSize nSize;
            memDC.GetTextExtent(strTmp, -1, &nSize);
            if (rcContent.left + nSize.cx < DEF_VUL_TIP_DETAIL_WIDTH - 30)
            {
                if (len < strDes.GetLength())
                {
                    ++len;
                    strTmp = strDes.Mid(0, len);
                }
                else
                {
                    break;
                }
            }
            else break;
        }
        _DrawText(memDC, rcContent, strTmp, RGB(0, 0, 0), hNormalFont);
        strDes = strDes.Mid(len);

        while(1)
        {
            if (nCount >= 2)
            {
                break;
            }
            if (strDes.GetLength() > 0)
            {
                int len = strDes.GetLength();
                rcContent.left = 25;
                rcContent.right = DEF_VUL_TIP_DETAIL_WIDTH;
                if (strDes.GetLength() > 30)
                    len = 30;
                else 
                    break;
                strTmp = strDes.Mid(0, len);
                // 文字可能是混合的,从个数到计算长度来确定本行的个数。
                while(1)
                {
                    CSize nSize;
                    memDC.GetTextExtent(strTmp, -1, &nSize);
                    if (rcContent.left + nSize.cx < DEF_VUL_TIP_DETAIL_WIDTH - 30)
                    {
                        if (len < strDes.GetLength())
                        {
                            ++len;
                            strTmp = strDes.Mid(0, len);
                        }
                        else
                        {
                            break;
                        }
                    }
                    else break;
                }

                if (len == strDes.GetLength())
                    break;
                rcContent.top += 17;
                rcContent.bottom += 17;
                
                _DrawText(memDC, rcContent, strTmp, RGB(0, 0, 0), hNormalFont);
                strDes = strDes.Mid(len);
            }
            else
            {
                break;
            }
            nCount ++;
        }
        memDC.SelectFont(oldFont);
    }
    CSize nSize;
    rcContent.top += 17;
    rcContent.bottom += 17;
    rcContent.left = 25;
    rcContent.right = DEF_VUL_TIP_DETAIL_WIDTH;
    memDC.GetTextExtent(strDes, -1, &nSize);
    if (rcContent.left + nSize.cx > DEF_VUL_TIP_DETAIL_WIDTH - 90)
        rcContent.right = DEF_VUL_TIP_DETAIL_WIDTH - 90;
    _DrawText(memDC, rcContent, strDes, RGB(0, 0, 0), hNormalFont);

    rcContent.left = rcContent.right;
    rcContent.right = DEF_VUL_TIP_DETAIL_WIDTH;
    _DrawText(memDC, rcContent, BkString::Get(IDS_VULFIX_5128), RGB(0x33, 0x62, 0x9A), BkFontPool::GetFont(FALSE, TRUE ,FALSE));
    ::CopyRect(m_rcDetail, rcContent);
    
    // draw link
    HFONT hLinkFont = BkFontPool::GetFont(FALSE, TRUE, FALSE);
    CRect rcLink;
    COLORREF clrLink = RGB(0x33, 0x62, 0x9A);
    
    rcLink.SetRect(15, m_rcClient.Height() - 20, 300, m_rcClient.Height() - 5);
    _DrawText(memDC, rcLink, BkString::Get(IDS_VULFIX_5170), clrLink, hLinkFont);
    ::CopyRect(m_rcQuestion, rcLink);

    rcLink.left = 250;
    rcLink.right = DEF_VUL_TIP_DETAIL_WIDTH;
    _DrawText(memDC, rcLink, BkString::Get(IDS_VULFIX_5129), clrLink, hLinkFont);
    ::CopyRect(m_rcOfficial, rcLink);

    rcLink.left = 325;
    rcLink.right = DEF_VUL_TIP_DETAIL_WIDTH;
    _DrawText(memDC, rcLink, BkString::Get(IDS_VULFIX_5171), clrLink, hLinkFont);
    ::CopyRect(m_rcIgnoreVul, rcLink);

	::EndPaint( m_hWnd, &ps );
}