📄 dragon.cpp
字号:
//#include "Language.h" //010215 lsw 林籍贸府.
// 10505 KHS //010605 lms
bool chinese_input;
void CheckChineseInput( HWND hwnd, LPARAM lParam )
{
if( ( lParam & 0x00ff ) == 0x0004 )
{
HRESULT hResult;
chinese_input = true;
if( g_DirectDrawInfo.lpClipper )
{
g_DirectDrawInfo.lpClipper->Release();
g_DirectDrawInfo.lpClipper = NULL;
}
hResult = g_DirectDrawInfo.lpDirectDraw->CreateClipper( 0, &g_DirectDrawInfo.lpClipper, NULL );
if( hResult == DD_OK )
g_DirectDrawInfo.lpClipper->SetHWnd( 0, g_hwndMain );
}
else
{
chinese_input = false;
if( g_DirectDrawInfo.lpClipper )
{
g_DirectDrawInfo.lpClipper->Release();
g_DirectDrawInfo.lpClipper = NULL;
}
}
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hDC;
MINMAXINFO* pMinMax = NULL;
if (EWndMgr.CheckSysKey( message, wParam ) == 0)
{ //021001 lsw
return 0;
}
switch (message)
{
case WM_INPUTLANGCHANGE:
{
CheckChineseInput( hWnd, lParam );
break;
}
case WM_COMMAND:
{
SystemMenuProcess ( wParam );
break;
}
case WM_INITMENU:
{ //soto 030307
#ifdef _DEBUG
MainMenuSelected(wParam,lParam);
#endif
break;
} //soto End.
case WM_CREATE:
{
SetCursor( NULL );
SetTimer( hWnd, 13, 1000, NULL);
break;
}
case WM_TIMER:
{
if (wParam == 13)
{
g_curr_time++;
g_packet_recv_send_checktime++;
}
break;
}
case WM_ACTIVATE:
case WM_ACTIVATEAPP:
{
switch (LOWORD(wParam))
{
case WA_CLICKACTIVE:
{
g_bIsActive = TRUE;
g_FrameMgr.InitTime();
if (g_DirectDrawInfo.lpDirectDraw == NULL)
{
if (!InitDirectDraw(g_hwndMain, &g_DirectDrawInfo))
{
return 0;
}
EraseScreen(&g_DirectDrawInfo, RGB(0,0,0));
}
break;
}
case WA_INACTIVE:
{
g_bIsActive = FALSE;
g_FrameMgr.InitTime();
if (g_DirectDrawInfo.lpDirectDraw != NULL)
{
CleanupDirectDraw(&g_DirectDrawInfo);
}
break;
}
case WA_ACTIVE:
{
g_bIsActive = TRUE;
if (g_DirectDrawInfo.lpDirectDraw == NULL)
{
if (!InitDirectDraw(g_hwndMain, &g_DirectDrawInfo))
{
return 0;
}
EraseScreen(&g_DirectDrawInfo, RGB(0,0,0));
SetCursor(NULL);
}
break;
}
}
SetAcquire(g_bIsActive);
CheckingAccelator_Sub1();
break;
}
case WM_GETMINMAXINFO:
{
pMinMax = (MINMAXINFO*)lParam;
pMinMax->ptMinTrackSize.x = SCREEN_WIDTH + GetSystemMetrics(SM_CXSIZEFRAME) * 2;
pMinMax->ptMinTrackSize.y = SCREEN_HEIGHT + GetSystemMetrics(SM_CYSIZEFRAME) * 2 + GetSystemMetrics(SM_CYMENU);
pMinMax->ptMaxTrackSize.x = pMinMax->ptMinTrackSize.x;
pMinMax->ptMaxTrackSize.y = pMinMax->ptMinTrackSize.y;
break;
}
case WM_MOVE:
case WM_SIZE:
{
if (g_bIsActive)
{
if (g_DirectDrawInfo.bFullscreen)
{
SetRect(&g_DirectDrawInfo.rectPrimarySurface, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN));
}
else
{
GetClientRect(hWnd, &g_DirectDrawInfo.rectPrimarySurface);
ClientToScreen(hWnd, (LPPOINT)&g_DirectDrawInfo.rectPrimarySurface);
ClientToScreen(hWnd, (LPPOINT)&g_DirectDrawInfo.rectPrimarySurface + 1);
}
}
break;
}
case WM_PAINT:
{
if (g_bIsActive)
{
hDC = BeginPaint(hWnd, &ps);
EndPaint(hWnd, &ps);
}
break;
}
case WM_KEYDOWN:
{
DoSomeThingWithKey( wParam, lParam ); // tool.cpp
CheckCharacterFrameOrder( wParam, lParam ); // tool.cpp
switch (wParam)
{
case VK_RETURN:
{
if (!IsChatBoxActive()) // 0601 YGI
{
SetChatMode(CM_MESSAGE);
}
break;
}
}
break;
}
case WM_CHAR:
{
switch (wParam)
{
case VK_RETURN:
case VK_TAB:
{
return 0;
}
}
break;
}
case WM_KEYUP://021008 lsw
{
const int nVirtKey = (int)wParam; // virtual-key code
LPARAM lKeyData = lParam; // key data
switch (nVirtKey)
{
case VK_F1:
case VK_F2:
case VK_F3:
case VK_F4:
case VK_F5:
case VK_F6:
case VK_F7:
case VK_F8:
{
::DoQuickmemoryByKeyInput(nVirtKey,false);
return 0;
}
}
break;
}
case WM_LBUTTONDOWN:
case WM_LBUTTONUP:
case WM_RBUTTONDOWN:
case WM_RBUTTONUP:
case WM_LBUTTONDBLCLK:
case WM_RBUTTONDBLCLK:
{
MouseProcess( message, wParam, lParam);
break;
}
case WM_MOUSEMOVE:
{
MouseProcess( message, wParam, lParam);
break;
}
case MM_MCINOTIFY: // MCI 烹瘤 皋矫瘤甫 罐绰促.
{
if (wParam == MCI_NOTIFY_SUCCESSFUL) // 楷林啊 场车阑锭.
{
PlayBackMusic(g_hwndMain, CurMidi);
}
else if (CurMidi >= 0)
{
PlayBackMusic(g_hwndMain, CurMidi);
}
break;
}
case WM_DESTROY:
{
PostQuitMessage( 0 );
break;
}
}
return DefWindowProc( hWnd, message, wParam, lParam );
}
void CALLBACK TimerProc(HWND hWnd, UINT nMsg, UINT nTimerid, DWORD dwTime)
{ //< CSD-CN-031215
if (nTimerid == g_idSafeTimer)
{ //< PowerZ-030116
HWND hSafeWnd = g_sysSecurity.GetSafeWindowHandle();
if (!IsWindow(hSafeWnd))
{
KillTimer(hWnd, g_idSafeTimer);
PostMessage(hWnd, WM_CLOSE, 0, 0);
}
} //> PowerZ-030116
} //> CSD-CN-031215
BOOL LoadGameInfo( void )
{
GetPrivateProfileString( "network", "host1", "", g_GameInfo.proxy_ip[0], sizeof( g_GameInfo.proxy_ip[0] ), g_szInfoFile );
if ( g_GameInfo.proxy_ip[0][0]== 0 )
{
return FALSE;
}
GetPrivateProfileString( "network", "host2", "", g_GameInfo.proxy_ip[1], sizeof( g_GameInfo.proxy_ip[1] ), g_szInfoFile );
if ( g_GameInfo.proxy_ip[1][0]== 0 )
{
return FALSE;
}
g_GameInfo.version = GetPrivateProfileInt( "network", "ver", 0, g_szInfoFile );
if ( g_GameInfo.version == 0 )
{
return FALSE;
}
else
{
// char temp[ MAX_PATH];
// sprintf( temp, "%d", 400 );
// WritePrivateProfileString( "network", "ver", temp, "dragon.ini" );
}
// 010711 YGI
g_SelectServerIndex = GetPrivateProfileInt( "network", "ServerSet", 0, g_szInfoFile );
//< kjy-040325
// 老胶 急琶 规瘤 敲贰弊甫 dragon.ini颇老肺何磐 涝仿罐绰促.
char szKeySelectYilse[50];
memset( szKeySelectYilse, '\0', 50 );
sprintf( szKeySelectYilse, "name%d_prevent_select_yilse", g_SelectServerIndex+1 );
g_GameInfo.preventSelectYilse = GetPrivateProfileInt( "network", szKeySelectYilse, 0, g_szInfoFile );
//> kjy-040325
//< CSD-040127
//#ifdef KOREA_LOCALIZING_
g_GameInfo.proxy_port = 39204;
//#else
// g_GameInfo.proxy_port = 9000;
//#endif
g_GameInfo.agent_port = 39201;
//> CSD-040127
return TRUE;
}
int LoadingGameData()
{ // eLoadingGameDataStep 甫 荤侩
static int s_iLoadingPos = LGDS_FIRST;
switch (s_iLoadingPos)
{
case LGDS_FIRST:
{
LoadAttackRangeTable(0);
LoadAttackRangeTable(1);
if (SysInfo.notconectserver)
{
s_iLoadingPos = LGDS_STEP1;
return s_iLoadingPos;
}
DWORD StartTime = ::timeGetTime();
ListenCommand = CMD_NONE;
while (true)
{
DWORD Duration = ::timeGetTime( ) - StartTime;
if (Duration > WAIT_TIME_RESPONSE_DURATION) // 030930 kyo
{
s_iLoadingPos = LGDS_FIRST;
return -1;
}
if (HandleRunning(&connections) <= 0)
{
Release(&connections);
s_iLoadingPos = LGDS_FIRST;
return -2;
}
if (ListenCommand == CONNECT_REFUSE)
{
s_iLoadingPos = LGDS_FIRST;
return -3;
}
if (ListenCommand == CMD_CONNECT_INFO)
{
s_iLoadingPos = LGDS_STEP1;
return s_iLoadingPos;
}
}
break;
}
case LGDS_STEP1:
{
HandleRunning(&connections);
g_Volume_Off = 1; // 肺爹捞 场朝 锭鳖瘤 硅版澜厩 捞寇狼 家府 救唱坷霸
if (SysInfo.notconectserver)
{
if (!BuildCharacterList(&g_CharacterList))
{
JustMsg(lan->OutputMessage(6, 8)); //010215 lsw
}
}
s_iLoadingPos = LGDS_STEP2;
break;
}
case LGDS_STEP2:
{
MapBuild(&g_Map, MapName); // map
if (HandleRunning(&connections) <= 0)
{
Release(&connections);
return -2;
}
s_iLoadingPos = LGDS_STEP3;
break;
}
case LGDS_STEP3 :
{
LoadTOI(MapName);
HandleRunning(&connections );
BuildRoofHeader(&g_RoofHeader, MapName); // rof
HandleRunning(&connections);
BuildEventList(MapName); // ent
HandleRunning(&connections);
ReqTacSkillExp(); // 傈眉 琶平 荐摹 啊廉坷扁
HandleRunning(&connections);
AllReqSkillExp(); // 傈眉 胶懦 版氰摹 啊廉坷扁
HandleRunning(&connections);
s_iLoadingPos = LGDS_STEP4;
break;
}
case LGDS_STEP4:
{
LoadMapSource2( MapName ); // sou
HandleRunning( &connections);
s_iLoadingPos = LGDS_STEP5;
break;
}
case LGDS_STEP5:
{
LoadCharSpriteData( "./char/000000.spr", &CharBuf[0], &CharBufLength[0], &CharSpr[0], LD_CHAR_SPRITE_ALL_LOAD);
HandleRunning(&connections);
s_iLoadingPos= LGDS_STEP6;
break;
}
case LGDS_STEP6:
{
LoadCharSpriteData( "./char/001000.spr", &CharBuf[1], &CharBufLength[1], &CharSpr[1], LD_CHAR_SPRITE_ALL_LOAD);
LoadHeroClothAccessoryData( 104, 107 );
char tempfilename[FILENAME_MAX];
const int preloadcharsprite[21] = {29,30,37,38,46,72,79,1005,1006,1017,1018,1019,1020,1027,1028,1041,1060,1061,1075,1083,1092 };
for (int i = 0; i < 21; ++i)
{
int tt = preloadcharsprite[i];
sprintf(tempfilename, "./char/%06d.spr", tt);
LoadCharSpriteData(tempfilename, &CharAccessoryBuf[tt/1000][tt%1000], &CharAccessoryBufLength[ tt/1000][tt%1000], &CharAccessorySpr[tt/1000][tt%1000], LD_CHAR_SPRITE_ALL_LOAD);
HandleRunning(&connections);
}
HandleRunning(&connections);
s_iLoadingPos = LGDS_STEP7;
break;
}
case LGDS_STEP7:
{
LoadClothOrderData();
HandleRunning(&connections);
s_iLoadingPos = LGDS_STEP8;
break;
}
case LGDS_STEP8 :
{
LoadBrightData();
HandleRunning(&connections);
s_iLoadingPos = LGDS_STEP9;
break;
}
case LGDS_STEP9:
{
StartSetView(Hero);
HandleRunning(&connections);
s_iLoadingPos = LGDS_STEP10;
break;
}
case LGDS_STEP10:
{
LoadMenuData(1);
HandleRunning(&connections);
s_iLoadingPos = LGDS_STEP11;
break;
}
case LGDS_STEP11:
{
LoadMenuData(2);
HandleRunning(&connections);
s_iLoadingPos = LGDS_STEP12;
break;
}
case LGDS_STEP12:
{
LoadHongSkillTable();
HandleRunning(&connections);
LoadMenuData(5);
HandleRunning(&connections);
if (CurOpenHouse >= 0)
{
RecvRoofOpen(CurOpenHouse);
}
InitHpUpDown();
HandleRunning(&connections);
s_iLoadingPos = LGDS_FIRST;
return LGDS_END; // 捞巴父 抗寇 贸府
}
}
return s_iLoadingPos;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -