📄 main.cpp
字号:
#include "main.h"
HWND hwnd;
bool ProgramActive;
bool MouseDown=false;
int GameStatus=0;
int mini;
unsigned char *LightTable;
unsigned char *BaseLight;
unsigned char *SmallLight;
int PASCAL WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
if (!CheckMMX( ))
{
MessageBox(hwnd,"你的CPU不支持MMX!", "ERROR!", MB_OK);
return FALSE;
}
InitClass( );
InitLight( );
InitBlock( );
// InitPAK( );
if (!InitWindow( hInstance, nCmdShow ))
{
MessageBox(hwnd,"创建窗口出错!", "ERROR!", MB_OK);
return FALSE;
}
int error_code=InitDDraw( );
switch (error_code)
{
case 0:
MessageBox(hwnd,"创建DDraw对象出错!", "ERROR!", MB_OK);
break;
case 1:
MessageBox(hwnd,"设置DDraw协作级出错!", "ERROR!", MB_OK);
break;
case 2:
MessageBox(hwnd,"进入640x480x32位色出错!", "ERROR!", MB_OK);
break;
case 3:
MessageBox(hwnd,"创建主页面出错!", "ERROR!", MB_OK);
break;
case 4:
MessageBox(hwnd,"创建缓冲页面出错!", "ERROR!", MB_OK);
break;
case 5:
MessageBox(hwnd,"创建离屏页面出错!", "ERROR!", MB_OK);
break;
}
if (error_code!=-1)
return FALSE;
InitSurface( );
GetSurfaceData( );
SetTimer(hwnd, 1, 50, GameTimer);
while(1)
{
if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if ( msg.message==WM_QUIT)
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else if ((ProgramActive)&&(GameStatus==1))
RefreshScreen( );
}
return msg.wParam;
}
static BOOL InitWindow( HINSTANCE hInstance, int nCmdShow )
{
WNDCLASS wc;
wc.style = NULL;
wc.lpfnWndProc = (WNDPROC)WinProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = NULL;
wc.hCursor = NULL;
wc.hbrBackground = NULL;
wc.lpszMenuName = NULL;
wc.lpszClassName = "RPG_DEMO_II";
RegisterClass(&wc);
hwnd = CreateWindow("RPG_DEMO_II",
"RPG DEMO II",
WS_POPUP|WS_MAXIMIZE,0,0,
GetSystemMetrics( SM_CXSCREEN ),
GetSystemMetrics( SM_CYSCREEN ),
NULL,NULL,hInstance,NULL);
if( !hwnd ) return FALSE;
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
return TRUE;
}
LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
{
switch( message )
{
case WM_MOUSEMOVE:
if ((MouseDown==true)&&(GameStatus==1)&&(human[main]->MainStatus!=talking))
{
if (human[main]->FollowID==-1)
human[main]->moveto(LOWORD(lParam)-320+human[main]->x,HIWORD(lParam)-240+human[main]->y);
else
{
mini=FoundHuman(LOWORD(lParam),HIWORD(lParam));
if (mini!=human[main]->FollowID)//鼠标移出范围
{
human[main]->FollowID=-1;
human[main]->moveto(LOWORD(lParam)-320+human[main]->x,HIWORD(lParam)-240+human[main]->y);
}
}
}
break;
case WM_ACTIVATEAPP:
ProgramActive=wParam;
break;
case WM_SETCURSOR:
SetCursor(NULL);
break;
case WM_KEYDOWN:
switch( wParam )
{
case VK_ESCAPE:
Quit();
break;
}
break;
case WM_LBUTTONDOWN:
MouseDown=true;
if ((GameStatus==1)&&(human[main]->MainStatus!=away))
{
if (human[main]->MainStatus==talking)
{
human[main]->MainStatus=normal;
human[human[main]->TalkID]->MainStatus=normal;
human[human[main]->TalkID]->FootStatus=0;
human[human[main]->TalkID]->moveto(human[human[main]->TalkID]->MoveToX,
human[human[main]->TalkID]->MoveToY);
}
else
{
mini=FoundHuman(LOWORD(lParam),HIWORD(lParam));
if (mini<1)
{
human[main]->FollowID=-1;
human[main]->MainStatus=normal;
human[main]->moveto(LOWORD(lParam)-320+human[main]->x,HIWORD(lParam)-240+human[main]->y);
}
else
{
human[main]->FollowID=mini;
if (human[mini]->type==TEnemy)
human[main]->MainStatus=fighting;
else
human[main]->MainStatus=normal;
human[main]->moveto(human[mini]->x,human[mini]->y);
}
}
}
break;
case WM_LBUTTONUP:
MouseDown=false;
break;
case WM_RBUTTONDOWN:
if ( (GameStatus==1) &&
( (human[main]->MainStatus==normal) ||
( (human[main]->CoolDown==0) && (human[main]->MainStatus==fighting) ) ) )
{
human[main]->FootStatus=-1;
human[main]->moveto(LOWORD(lParam)-320+human[main]->x,HIWORD(lParam)-240+human[main]->y);
human[main]->FootStatus=-1;
human[main]->MainStatus=fighting;
human[main]->fight(LOWORD(lParam)-320+human[main]->x,HIWORD(lParam)-240+human[main]->y);
}
break;
}
return DefWindowProc(hWnd, message, wParam, lParam);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -