DpClient.cpp:
Unter:
Code:
void CDPClient::SendJoin( BYTE nSlot, DWORD dwWorldID, CMover* pMover, CMessenger* pMessenger, u_long uIdofMulti )
#endif // __RT_1025
{
Das:
Code:
#ifdef __FLYFF_INITPAGE_EXT
CWndBase::m_Theme.DestoryTitleWorld();
#endif //__FLYFF_INITPAGE_EXT
Neuz.cpp:
Unter:
Code:
#if __VER >= 15 // __IMPROVE_SYSTEM_VER15
g_toolTipSub1.Process( point, &m_2DRender );
g_toolTipSub2.Process( point, &m_2DRender );
#endif // __IMPROVE_SYSTEM_VER15
g_DamageNumMng.Process();
Das:
Code:
#ifdef __FLYFF_INITPAGE_EXT
if(CWndBase::m_Theme.m_bRenderTitleWorld)
{
g_GameTimer.m_bFixed = TRUE;
g_GameTimer.m_nHour = 10;
}
else
g_GameTimer.Compute();
#else //__FLYFF_INITPAGE_EXT
g_GameTimer.Compute();
#endif //__FLYFF_INITPAGE_EXT
ITheme.cpp:
Unter:
Code:
#ifdef __LANG_1013
#include "langman.h"
#endif // __LANG_1013
Das:
Quote:
#ifdef __FLYFF_INITPAGE_EXT
#include "ResData.h"
#endif //__FLYFF_INITPAGE_EXT
|
Unter:
Code:
CTheme::CTheme()
{
m_pVBTexture = NULL;
m_pVBGauge = NULL;
m_bNudeSkin = FALSE;
//m_pActiveDesktop = NULL;
//m_pd3dsdBackBuffer = NULL;
m_pd3dDevice =NULL;
m_pFontStatus = NULL;
Das:
Code:
#ifdef __FLYFF_INITPAGE_EXT
m_pTitleWorld = NULL;
m_bLoadTerrainScript = FALSE;
m_bRenderTitleWorld = FALSE;
m_dwTexturAlpha1 = 0;
m_dwTexturAlpha2 = 0;
m_dwStartTime = 0;
m_dwEndTime = 0;
m_bStartCameraWork = FALSE;
#endif //__FLYFF_INITPAGE_EXT
Unter:
Code:
#if __VER >= 12 // __SECRET_ROOM
m_mapFont.Lookup( _T("gulim11"), (void*&)m_pFontSRMyGiuld );
m_mapFont.Lookup( _T("gulim9_2"), (void*&)m_pFontSRGiuld );
#endif //__SECRET_ROOM
Das:
Code:
#ifdef __FLYFF_INITPAGE_EXT
ReadTitleWorld();
#endif //__FLYFF_INITPAGE_EXT
Unter:
Code:
#ifdef __GAME_GRADE_SYSTEM
m_GameGradeScreenTexture.DeleteDeviceObjects();
#endif // __GAME_GRADE_SYSTEM
//g_mesh.DeleteDeviceObjects();
POSITION pos = m_mapFont.GetStartPosition();
CString strFont; CD3DFont* pFont;
while(pos)
{
m_mapFont.GetNextAssoc( pos, strFont, (void*&)pFont );
pFont->DeleteDeviceObjects();
SAFE_DELETE( pFont );
}
m_mapFont.RemoveAll();
Das:
Code:
#ifdef __FLYFF_INITPAGE_EXT
if(m_pTitleWorld != NULL)
{
m_pTitleWorld->InvalidateDeviceObjects();
m_pTitleWorld->DeleteDeviceObjects();
SAFE_DELETE(m_pTitleWorld);
}
#endif //__FLYFF_INITPAGE_EXT
Unter dieser Funktion:
Code:
HRESULT CTheme::RestoreDeviceObjects( )
Das:
Code:
#ifdef __FLYFF_INITPAGE_EXT
void CTheme::ReadTitleWorld()
{
if(m_pTitleWorld == NULL)
{
m_pTitleWorld = new CWorld;
if(m_pTitleWorld != NULL)
{
if(!m_bLoadTerrainScript)
m_bLoadTerrainScript = prj.m_terrainMng.LoadScript("terrain.inc");
if(m_bLoadTerrainScript)
{
if(m_pTitleWorld->InitDeviceObjects( m_pd3dDevice ) == S_OK)
{
if(m_pTitleWorld->OpenWorld( MakePath( DIR_WORLD, "WdKebaras" ), TRUE ))
{
D3DXVECTOR3 vecWorld(128.0f, 128.0f, 128.0f);
m_pTitleWorld->ReadWorld(vecWorld);
D3DXVECTOR3 vecPos(149.0f, 105.0f, 170.0f);
D3DXVECTOR3 vecLookat(213.0f, 116.0f, 184.0f);
CCamera camera;
camera.SetPos(vecPos);
camera.m_vLookAt = vecLookat;
m_pTitleWorld->SetCamera(&camera);
/*m_pFlyffLogo = CWndBase::m_textureMng.AddTexture( m_pd3dDevice, MakePath( "Theme\\", ::GetLanguage(), _T( "flyfftitletest.bmp" ) ), 0xffff00ff );
m_pGameGrade = CWndBase::m_textureMng.AddTexture( m_pd3dDevice, MakePath( "Theme\\", ::GetLanguage(), _T( "gamegradetest.bmp" ) ), 0xffff00ff );
m_pAeonLogo = CWndBase::m_textureMng.AddTexture( m_pd3dDevice, MakePath( "Theme\\", ::GetLanguage(), _T( "aeonsoftlogotest.bmp" ) ), 0xffff00ff );
m_pGalaLogo = CWndBase::m_textureMng.AddTexture( m_pd3dDevice, MakePath( "Theme\\", ::GetLanguage(), _T( "galalogotest.bmp" ) ), 0xffff00ff );*/
m_bRenderTitleWorld = TRUE;
}
else
SAFE_DELETE(m_pTitleWorld);
}
}
}
}
}
void CTheme::DestoryTitleWorld()
{
if(m_pTitleWorld != NULL)
{
m_pTitleWorld->InvalidateDeviceObjects();
m_pTitleWorld->DeleteDeviceObjects();
SAFE_DELETE(m_pTitleWorld);
}
m_dwTexturAlpha1 = 0;
m_dwTexturAlpha2 = 0;
}
#endif //__FLYFF_INITPAGE_EXT
Direkt da drunter:
Code:
HRESULT CTheme::FrameMove()
{
#ifdef __FLYFF_INITPAGE_EXT
if(m_pTitleWorld != NULL)
{
m_pTitleWorld->Process();
if(!m_bStartCameraWork)
{
static const DWORD MAX_ALPHA = 255;
static const DWORD EVENT_ALPHA = 155;
static const DWORD EFFECT_ALPHA = 100;
static const float ALPHA_FRAME = 2.0f;
static bool bEffect = false;
if( bEffect == false )
{
if(m_dwTexturAlpha1 < MAX_ALPHA)
{
m_dwTexturAlpha1 += static_cast<DWORD>(ALPHA_FRAME);
if(m_dwTexturAlpha1 > MAX_ALPHA)
m_dwTexturAlpha1 = MAX_ALPHA;
}
if(m_dwTexturAlpha1 > EVENT_ALPHA && m_dwTexturAlpha2 < MAX_ALPHA)
{
m_dwTexturAlpha2 += static_cast<DWORD>(ALPHA_FRAME);
if(m_dwTexturAlpha2 > MAX_ALPHA)
m_dwTexturAlpha2 = MAX_ALPHA;
}
}
else
{
if(m_dwTexturAlpha1 > EFFECT_ALPHA)
{
m_dwTexturAlpha1 -= static_cast<DWORD>(ALPHA_FRAME);
if(m_dwTexturAlpha1 < EFFECT_ALPHA)
m_dwTexturAlpha1 = EFFECT_ALPHA;
}
if(m_dwTexturAlpha2 > EFFECT_ALPHA)
{
m_dwTexturAlpha2 -= static_cast<DWORD>(ALPHA_FRAME);
if(m_dwTexturAlpha2 < EFFECT_ALPHA)
m_dwTexturAlpha2 = EFFECT_ALPHA;
}
}
if( m_dwTexturAlpha1 == MAX_ALPHA && m_dwTexturAlpha2 == MAX_ALPHA )
{
bEffect = true;
}
if( m_dwTexturAlpha1 == EFFECT_ALPHA && m_dwTexturAlpha2 == EFFECT_ALPHA )
{
bEffect = false;
}
}
}
#endif //__FLYFF_INITPAGE_EXT
return S_OK;
}
Diese Funktion ist direkt die zweite nach der letzt bearbeiteten:
Code:
void CTheme::RenderDesktop( C2DRender* p2DRender )
{
#ifdef __FLYFF_INITPAGE_EXT
D3DVIEWPORT9 viewport;
viewport.X = 0;
viewport.Y = 0;
viewport.Width = 1360;
viewport.Height = 768;
viewport.MinZ = 0.0f;
viewport.MaxZ = 1.0f;
// ÇÁ·ÎÁ§¼Ç
FLOAT fAspect = (FLOAT)viewport.Width / (FLOAT)viewport.Height;
float fFov = D3DX_PI / 4.0f;
float fNear = CWorld::m_fNearPlane;
D3DXMatrixPerspectiveFovLH( &m_pTitleWorld->m_matProj, fFov, fAspect, fNear - 0.01f, CWorld::m_fFarPlane );
p2DRender->m_pd3dDevice->SetTransform( D3DTS_PROJECTION, &m_pTitleWorld->m_matProj );
DWORD dwColor = CWorld::GetDiffuseColor();
p2DRender->m_pd3dDevice->Clear(0, NULL, D3DCLEAR_ZBUFFER | D3DCLEAR_TARGET, dwColor /*D3DCOLOR_ARGB( 255, 255, 255, 255 )*/, 1.0f, 0 ) ;
// Çʵå Ãâ·Â
if(m_pTitleWorld != NULL)
{
//static float fCameraPositionX = 445.0f;
//static float fCameraPositionY = 160.0f;
//static float fCameraPositionY = 572.0f;
static const float START_X = 600.0f;
static const float END_X = 700.0f;
static const float START_TO_END_X = END_X - START_X;
static const float START_Y = 200.0f;
static const float END_Y = 200.0f;
static const float START_TO_END_Y = END_Y - START_Y;
static const float START_Z = 600.0f;
static const float END_Z = 700.0f;
static const float START_TO_END_Z = END_Z - START_Z;
static const float SPEED_RATE = 1000.0f;
static float fCameraPositionX = START_X;
static float fCameraSpeedX = START_TO_END_X / SPEED_RATE;
if( fCameraPositionX <= END_X )
{
fCameraPositionX += fCameraSpeedX;
}
static float fCameraPositionY = START_Y;
static float fCameraSpeedY = START_TO_END_Y / SPEED_RATE;
if( fCameraPositionY <= END_Y )
{
fCameraPositionY += fCameraSpeedY;
}
static float fCameraPositionZ = START_Z;
static float fCameraSpeedZ = START_TO_END_Z / SPEED_RATE;
if( fCameraPositionZ <= END_Z )
{
fCameraPositionZ += fCameraSpeedZ;
}
D3DXVECTOR3 vecPos( fCameraPositionX, fCameraPositionY, fCameraPositionZ );
D3DXVECTOR3 vecLookat(530.9f, 123.0f, 503.6f);
CCamera camera;
camera.SetPos(vecPos);
camera.m_vLookAt = vecLookat;
m_pTitleWorld->SetCamera( &camera );
m_pTitleWorld->Render( p2DRender->m_pd3dDevice, m_pFontWorld );
p2DRender->m_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
p2DRender->m_pd3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
p2DRender->m_pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
p2DRender->m_pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, FALSE );
p2DRender->m_pd3dDevice->SetRenderState( D3DRS_ZENABLE, FALSE );
p2DRender->m_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
p2DRender->m_pd3dDevice->SetRenderState( D3DRS_ALPHATESTENABLE, TRUE );
p2DRender->m_pd3dDevice->SetRenderState( D3DRS_ALPHAREF, 0x08 );
if(m_pFlyffLogo != NULL)
{
CPoint ptPos;
ptPos.x = (g_Option.m_nResWidth / 2) - (m_pFlyffLogo->m_size.cx / 2);
ptPos.y = g_Option.m_nResHeight / 9;
m_pFlyffLogo->Render( p2DRender, ptPos, m_dwTexturAlpha1 );
}
if(m_pGameGrade != NULL)
{
CPoint ptPos;
ptPos.x = (g_Option.m_nResWidth - 10) - m_pGameGrade->m_size.cx;
ptPos.y = 20;
m_pGameGrade->Render( p2DRender, ptPos, m_dwTexturAlpha2 );
}
if(m_pAeonLogo != NULL)
{
CPoint ptPos;
ptPos.x = (g_Option.m_nResWidth - 10) - m_pAeonLogo->m_size.cx;
ptPos.y = g_Option.m_nResHeight - m_pAeonLogo->m_size.cy - 10;
m_pAeonLogo->Render( p2DRender, ptPos, m_dwTexturAlpha2 );
}
if(m_pGalaLogo != NULL)
{
CPoint ptPos;
ptPos.x = 10;
ptPos.y = g_Option.m_nResHeight - m_pGalaLogo->m_size.cy - 10;
m_pGalaLogo->Render( p2DRender, ptPos, m_dwTexturAlpha2 );
}
}
#else //__FLYFF_INITPAGE_EXT
#if __VER >= 9 // __CSC_VER9_RESOLUTION
int xOffset = 0;
int rectWidth = 0;
BOOL isWide = FALSE;
#endif //__CSC_VER9_RESOLUTION
CTexture texture
= m_texWallPaper;
texture.SetAutoFree( FALSE );
p2DRender->m_pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, FALSE );
CRect rectWindow = p2DRender->m_clipRect;
if( m_dwWallPaperType == WPT_STRETCH ) // Àüü ´Ã¸®±â
{
#if __VER >= 9 // __CSC_VER9_RESOLUTION
if(rectWindow.Width() == 1280 && (rectWindow.Height() == 720 || rectWindow.Height() == 768 || rectWindow.Height() == 800)) //Wide
{
rectWidth = 960;
isWide = TRUE;
}
else
{
switch(rectWindow.Width())
{
case 1360:
rectWidth = 1024;
isWide = TRUE;
break;
case 1440:
rectWidth = 1200;
isWide = TRUE;
break;
case 1680:
rectWidth = 1400;
isWide = TRUE;
break;
}
}
if(isWide)
{
texture.m_size.cx = rectWidth;
texture.m_size.cy = rectWindow.Height();
xOffset = (rectWindow.Width() - rectWidth) / 2;
}
else
{
texture.m_size.cx = rectWindow.Width();
texture.m_size.cy = rectWindow.Height();
}
p2DRender->m_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET, m_d3dcBackground, 1.0f, 0 ) ;
p2DRender->RenderTexture( CPoint( xOffset, 0 ), &texture );
#else //__CSC_VER9_RESOLUTION
texture.m_size.cx = rectWindow.Width();
texture.m_size.cy = rectWindow.Height();
p2DRender->m_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET, m_d3dcBackground, 1.0f, 0 ) ;
p2DRender->RenderTexture( CPoint( 0, 0 ), &texture );
#endif //__CSC_VER9_RESOLUTION
}
else
if( m_dwWallPaperType == WPT_CENTER ) // Áß¾Ó Á¤·Ä
{
CPoint pt( ( rectWindow.Width() / 2 ) - ( texture.m_size.cx / 2 ), ( rectWindow.Height() / 2 ) - ( texture.m_size.cy / 2 ) );
p2DRender->m_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET, m_d3dcBackground, 1.0f, 0 ) ;
p2DRender->RenderTexture( pt, &texture );
}
else
if( m_dwWallPaperType == WPT_CENTERSTRETCH ) // Áß¾Ó ´Ã¸®±â
{
if(( (int) rectWindow.Width() - texture.m_size.cx ) < ( (int)rectWindow.Height() - texture.m_size.cy ) )
{
// texture.m_size.cx : m_pd3dsdBackBuffer->Width = texture.m_size.cy : y;
texture.m_size.cy = rectWindow.Width() * texture.m_size.cy / texture.m_size.cx;
texture.m_size.cx = rectWindow.Width();
}
else
{
// texture.m_size.cy : m_pd3dsdBackBuffer->Height = texture.m_size.cx : x;
texture.m_size.cx = rectWindow.Height() * texture.m_size.cx / texture.m_size.cy;
texture.m_size.cy = rectWindow.Height();
}
CPoint pt( ( rectWindow.Width() / 2 ) - ( texture.m_size.cx / 2 ), ( rectWindow.Height() / 2 ) - ( texture.m_size.cy / 2 ) );
p2DRender->m_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET, m_d3dcBackground, 1.0f, 0 ) ;
p2DRender->RenderTexture( pt, &texture );
}
else
if( m_dwWallPaperType == WPT_TILE ) // ŸÀÏ Á¤·Ä
{
FLOAT fu = (FLOAT)rectWindow.Width() / texture.m_size.cx;
FLOAT fv = (FLOAT)rectWindow.Height() / texture.m_size.cy;
texture.m_size.cx = rectWindow.Width();
texture.m_size.cy = rectWindow.Height();
texture.m_fuLT = 0.0f; texture.m_fvLT = 0.0f;
texture.m_fuRT = fu ; texture.m_fvRT = 0.0f;
texture.m_fuLB = 0.0f; texture.m_fvLB = fv ;
texture.m_fuRB = fu ; texture.m_fvRB = fv ;
p2DRender->m_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET, m_d3dcBackground, 1.0f, 0 ) ;
p2DRender->RenderTexture( CPoint( 0, 0), &texture );
}
p2DRender->m_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
p2DRender->m_pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );
#if __VER >= 9 // __CSC_VER9_RESOLUTION
p2DRender->TextOut( 1 + xOffset, 1, "Version", 0xffffffff );
p2DRender->TextOut( 50 + xOffset, 1, g_szVersion, 0xffffffff );
#else //__CSC_VER9_RESOLUTION
p2DRender->TextOut( 1, 1, "Version", 0xffffffff );
p2DRender->TextOut( 50, 1, g_szVersion, 0xffffffff );
#endif //__CSC_VER9_RESOLUTION
#endif //__FLYFF_INITPAGE_EXT
}
Zu guter letzt den Kram noch in der VersionCommon.h der Neuz definieren:
Code:
#define __FLYFF_INITPAGE_EXT
___________________________
Den ganzen Kram umändern kannst du in diesen Zeilen:
Code:
if(m_pTitleWorld->OpenWorld( MakePath( DIR_WORLD, "WdKebaras" ), TRUE )) //Welche Welt angezeigt werden soll, hier ist gerade Azria eingetragen.
{
D3DXVECTOR3 vecWorld(128.0f, 128.0f, 128.0f);//Position 1
m_pTitleWorld->ReadWorld(vecWorld);
D3DXVECTOR3 vecPos(149.0f, 105.0f, 170.0f);//Position 2
D3DXVECTOR3 vecLookat(213.0f, 116.0f, 184.0f); // In welche Richtung er schauen soll