Ich habe versucht in die GoW Source die v19 Taskbar einzubinden, bekomme soweit beim compilen auch keine Errors, jedoch crasht meine Neuz beim Login in die World. Da der Error aus dem Client nicht gerade aussagekräftig ist habe ich meine Neuz mal debuggt und folgende Errors erhalten:
Code:
Neuz.exe!CWndTaskBarInterface::OnDraw() Line 5155 C++ Neuz.exe!CWndTaskBar_HUD_EX1::OnDraw() Line 3672 C++ Neuz.exe!CWndBase::Paint() Line 592 C++ > Neuz.exe!CWndBase::PaintRoot() Line 529 + 0xd C++ Neuz.exe!CNeuzApp::Render() Line 1039 C++ Neuz.exe!CD3DApplication::Render3DEnvironment() Line 1789 + 0x7 C++ Neuz.exe!CD3DApplication::Run() Line 1654 + 0x7 C++ Neuz.exe!_WinMain@16() Line 585 + 0xa C++ Neuz.exe!WinMainCRTStartup() Line 251 + 0x1d C Neuz.exe!WinMainCRTStartup() Line 150 + 0xc C
WndTaskbar.cpp
WndBase.cpp
Code:
void CWndTaskBarInterface::OnDraw( C2DRender* p2DRender )
{
if(IsValidObj(g_pPlayer))
{
CPoint point;
DWORD dwCur = g_tmCurrent;
for( int i = 0; i < MAX_SLOT_ITEM; i++ )
{
if( !m_bCtrlVisible[i] )
continue;
point = CPoint( wndCtrl[i]->rect.left, wndCtrl[i]->rect.top);
LPSHORTCUT lpShortcut = m_pSlotItem[ i ] ;
if( !lpShortcut->IsEmpty() )
{
if( lpShortcut->m_pTexture )
p2DRender->RenderTexture( point, lpShortcut->m_pTexture );
if( lpShortcut->m_dwShortcut == SHORTCUT_ITEM )
{
CItemBase* pItemBase = g_pPlayer->GetItemId( lpShortcut->m_dwId );
CItemElem* pItemElem = (CItemElem*)pItemBase;
if( pItemElem )
{
if( pItemElem->GetProp()->dwPackMax > 1 )
{
CD3DFont* pOldFont = p2DRender->GetFont();
p2DRender->SetFont( CWndBase::m_Theme.m_pFontWndNewTitle );
TCHAR szTemp[ 32 ];
_stprintf( szTemp, "%d", g_pPlayer?g_pPlayer->m_Inventory.GetItemCount( pItemElem->m_dwItemId ): 0 );
CSize size = m_p2DRender->m_pFont->GetTextExtent( szTemp );
p2DRender->TextOut( point.x + 31 - size.cx, point.y + 31 - size.cy + 4, szTemp, 0xFF85FF8A);
p2DRender->SetFont( pOldFont );
}
DWORD dwGroup = g_pPlayer->m_cooltimeMgr.GetGroup( pItemElem->GetProp() );
if( dwGroup )
{
DWORD dwEnd = g_pPlayer->m_cooltimeMgr.GetTime( dwGroup );
if( dwEnd != 0 && dwEnd > dwCur )
{
DWORD dwBase = g_pPlayer->m_cooltimeMgr.GetBase( dwGroup );
RenderRadar( p2DRender, point, dwCur - dwBase, dwEnd - dwBase );
}
}
}
else if( lpShortcut->m_dwShortcut == SHORTCUT_SKILL && lpShortcut->m_dwType != 2 )
{
RenderCollTime( point, lpShortcut->m_dwId, p2DRender );
}
else
lpShortcut->m_dwShortcut = SHORTCUT_NONE;
}
}
}
for( int i = 0; i < 10; i++ )
{
if( !m_bCtrlVisible[i] )
continue;
if( slot1[i] != NULL )
{
slot1[i]->Render( p2DRender, CPoint( wndCtrl[i]->rect.left - 3, wndCtrl[i]->rect.top - 3));
}
if(( m_USEFIRE[i] != NULL )&&( !m_pSlotItem[i]->IsEmpty() ))
{
m_USEFIRE[i]->Render( p2DRender, CPoint( wndCtrl[i]->rect.left, wndCtrl[i]->rect.top), m_USEFireALPHA[i] );
}
}
}
}
Code:
void CWndTaskBar_HUD_EX1::OnDraw( C2DRender* p2DRender )
{
if(IsValidObj(g_pPlayer))
{
CWndTaskBarInterface::OnDraw(p2DRender);
for( int i = 0; i < 10; i++ )
{
CString szTemp;
CPoint point = CPoint( wndCtrl[i]->rect.left, wndCtrl[i]->rect.top);
switch(i)
{
case 0: { szTemp = "A1"; break; }
case 1: { szTemp = "A2"; break; }
case 2: { szTemp = "A3"; break; }
case 3: { szTemp = "A4"; break; }
case 4: { szTemp = "A5"; break; }
case 5: { szTemp = "A6"; break; }
case 6: { szTemp = "A7"; break; }
case 7: { szTemp = "A8"; break; }
case 8: { szTemp = "A9"; break; }
case 9: { szTemp = "A0"; break; }
}
point.x += 2;
CD3DFont* pOldFont = p2DRender->GetFont();
p2DRender->SetFont( CWndBase::m_Theme.m_pFontWndNewTitle );
p2DRender->TextOut( (1 + (point.x / point.x + point.x ) ), point.y - 8, szTemp, D3DCOLOR_ARGB( 255, 246, 204, 77 ));
p2DRender->SetFont( pOldFont );
}
}
}
Code:
void CWndBase::Paint(C2DRender* p2DRender, BOOL bPaintChild)
{
if(m_nWinSize == 2)
m_bFullWnd = TRUE;
m_p2DRender = p2DRender;
if( !IsWndStyle( WBS_NODRAWFRAME ) ) //&& !IsWndStyle( WBS_NOFRAME ))
PaintFrame(p2DRender);
else
if( IsWndStyle( WBS_CAPTION ) )
{
// ¿©±â´Â ÄÜÆ®·ÑÀÇ Å¸ÀÌÆ²À» Ãâ·ÂÇÏ´Â °÷
}
/*#ifdef __NAV_FIX
if(GetWndId() == APP_NAVIGATOR && IsWndStyle(WBS_CAPTION))
{
CRect rect = GetWindowRect();
CD3DFont* pOldFont = p2DRender->GetFont();
p2DRender->SetFont( CWndBase::m_Theme.m_pFontWndNewTitle );
POINT pt = GetStrCenter( p2DRender, m_strTitle );
p2DRender->SetFont( CWndBase::m_Theme.m_pFontWndNewTitle );
p2DRender->TextOut( pt.x, 5, m_strTitle, D3DCOLOR_ARGB(255,246,204,77),0xff000000 );
p2DRender->SetFont(pOldFont);
}
#endif //__NAV_FIX*/
CRectClip rectOld = p2DRender->m_clipRect;
CRectClip rectNew = m_rectCurrentClient;
// rectNew¸¦ rectOld·Î Ŭ¸®ÇÎ ÇÑ´Ù.
if( rectOld.Clipping( rectNew ) )
{
//if( !IsWndStyle( WBS_NODRAWFRAME ) && ( IsWndStyle(WBS_CHILD) == FALSE || IsWndStyle(WBS_DOCKED) == TRUE ) )
//if( !IsWndStyle( WBS_NODRAWFRAME ) )
if( IsWndStyle(WBS_CHILD) == FALSE )
{
p2DRender->SetViewportOrg( m_rectCurrentClient.TopLeft() );
p2DRender->SetViewport( rectNew );
OnEraseBkgnd( p2DRender );
}
#ifdef __IMPROVE_MAP_SYSTEM
p2DRender->SetViewportOrg( m_rectCurrentClient.TopLeft() );
p2DRender->SetViewport( rectNew );
OnDraw(p2DRender);
#endif // __IMPROVE_MAP_SYSTEM
if( bPaintChild )
{
p2DRender->SetViewportOrg( rectOld.TopLeft() );
p2DRender->SetViewport( rectOld );
PaintChild(p2DRender);
}
if( m_nIdWnd == 166 )
{
int a = 0;
}
#ifndef __IMPROVE_MAP_SYSTEM
p2DRender->SetViewportOrg( m_rectCurrentClient.TopLeft() );
p2DRender->SetViewport( rectNew );
OnDraw(p2DRender);
#endif // __IMPROVE_MAP_SYSTEM
}
}
Code:
void CWndBase::PaintRoot( C2DRender* p2DRender )
{
if(m_nWinSize == 2)
m_bFullWnd = TRUE;
m_p2DRender = p2DRender;
CRectClip rectOld = p2DRender->m_clipRect;
CPoint ptViewPortOld = p2DRender->GetViewportOrg();
m_bFullWnd = FALSE;
/*
// ·çÆ® À©µµ ÆäÀÎÆ®
if( IsVisible() )
{
//p2DRender->m_clipRect.OffsetRect(pWnd->m_pParentWnd->m_rectWindow.TopLeft());
p2DRender->m_clipRect = m_rectWindow;
if(rectOld.Clipping(p2DRender->m_clipRect))
{
p2DRender->SetViewportOrg(m_rectWindow.TopLeft());
p2DRender->SetViewport(p2DRender->m_clipRect);
m_rectCurrentWindow = m_rectWindow;
m_rectCurrentClient = m_rectClient;
Paint(p2DRender, FALSE);
}
}
// ¿ùµå À©µµ ÆäÀÎÆ®
if( m_pWndWorld && m_pWndWorld->IsVisible() )
{
//p2DRender->m_clipRect.OffsetRect(pWnd->m_pParentWnd->m_rectWindow.TopLeft());
p2DRender->m_clipRect = m_pWndWorld->m_rectWindow;
if(rectOld.Clipping(p2DRender->m_clipRect))
{
p2DRender->SetViewportOrg(m_pWndWorld->m_rectWindow.TopLeft());
p2DRender->SetViewport(p2DRender->m_clipRect);
m_pWndWorld->m_rectCurrentWindow = m_pWndWorld->m_rectWindow;
m_pWndWorld->m_rectCurrentClient = m_pWndWorld->m_rectClient;
m_pWndWorld->Paint(p2DRender);
}
PaintChild( p2DRender );
}
*/
m_pApp->m_pd3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
m_pApp->m_pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
m_pApp->m_pd3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE );
m_pApp->m_pd3dDevice->SetRenderState( D3DRS_FOGENABLE, FALSE );
// m_wndOrder ¸®½ºÆ®¿¡ ÀÖ´Â À©µµ´Â Â÷Àϵå(Á¾¼Ó) À©µµ°¡ ¾Æ´Ï±â ¶§¹®¿¡
// ÁÂÇ¥°è À̵¿ÀÌ ÇÊ¿ä ¾ø°í ´ÜÁö Ŭ¸³ ¿µ¿ª¸¸ ÁöÁ¤ÇØ ÁÖ¸é µÈ´Ù.
int nSize = m_wndOrder.GetSize();
for( int i = 0; i < nSize; i++ )
{
CWndBase* pWnd = (CWndBase*)m_wndOrder[i];
if( pWnd->IsVisible() )//&& pWnd != this && pWnd != m_pWndWorld )
{
//p2DRender->m_clipRect.OffsetRect(pWnd->m_pParentWnd->m_rectWindow.TopLeft());
p2DRender->m_clipRect = pWnd->m_rectWindow;
if( rectOld.Clipping( p2DRender->m_clipRect ) )
{
//p2DRender->m_clipRect+= rectRoot.TopLeft();
p2DRender->SetViewportOrg( pWnd->m_rectWindow.TopLeft() );
p2DRender->SetViewport( p2DRender->m_clipRect );
pWnd->m_rectCurrentWindow = pWnd->m_rectWindow;
pWnd->m_rectCurrentClient = pWnd->m_rectClient;
pWnd->Paint(p2DRender);
}
}
}
p2DRender->m_clipRect = rectOld;
p2DRender->SetViewportOrg( ptViewPortOld );
p2DRender->SetViewport( m_pApp->GetDeviceRect() );
if( IsForbid() )
{
CPoint point = m_ptForbid;
point.x -= m_pTexForbid->m_size.cx / 2;
point.y -= m_pTexForbid->m_size.cy / 2;
p2DRender->RenderTexture( point, m_pTexForbid );
if( m_timerForbid.TimeOut() )
SetForbid( FALSE );
}
}
mfg. Chiqupon






