📄 addition.cpp
字号:
/****************************************************************************/
//
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Some other Functions I ~~~~~~~~~~~~~~~~~~~~~~~~
// addition.cpp
//
//***************************************************************************/
// Include
#include "ExCaro.h"
//////////////////////////////////////////////////////////////
// Save Avatar to a file
void SaveAvatar()
{
HANDLE hFile;
DWORD dwBW;
TCHAR szBuffer[MAX_PATH]="";
TCHAR szFileType[40]="Anitsoft ExCaro 4.1 Avatar File";
// Create new setting file
strcat(szBuffer,ec.szAppDir);
strcat(szBuffer,"\\avatar.ava");
if(INVALID_HANDLE_VALUE!=(hFile=CreateFile(szBuffer,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL)))
{
// Write Header Data
WriteFile( hFile, &szFileType, sizeof(TCHAR) * 40, &dwBW ,NULL);
WriteFile(hFile,&avatar,sizeof(avatar),&dwBW,NULL);
}
else
// Error
MessageBox(WndMain.hWnd,"Can't save avatar.\nMaybe disk full or protected.",APPNAME,MB_OK|MB_ICONERROR);
CloseHandle(hFile);
}
////////////////////////////////////////////////////////////////////
// Load avatar from a file
void LoadAvatar(char szFileName[])
{
HANDLE hFile;
DWORD dwBR;
TCHAR szBuffer[MAX_PATH]="";
TCHAR szFileType[40];
// Open setting file
strcpy(szBuffer,"");
strcat(szBuffer,ec.szAppDir);
strcat(szBuffer,"\\");
strcat(szBuffer,szFileName);
if(INVALID_HANDLE_VALUE!=(hFile = CreateFile (szBuffer, GENERIC_READ, FILE_SHARE_READ,NULL, OPEN_EXISTING, 0, NULL)))
{
// Read Header Data
ReadFile (hFile, &szFileType, sizeof(TCHAR) * 40, &dwBR, NULL);
// If this file is oldder version setting file or setting file corrupted
if(strcmp(szFileType,"Anitsoft ExCaro 4.1 Avatar File"))
{
wsprintf(szBuffer,"File %s is invalid.\nNo avatar loaded.",szFileName);
MessageBox(WndMain.hWnd,szBuffer,APPNAME,MB_OK|MB_ICONERROR);
} // endif( )
// OK ! Loading now
else
{
ReadFile (hFile,&avatar,sizeof(avatar),&dwBR,NULL);
}//end else
} //endif(INVALID.....
else
{
wsprintf(szBuffer,"File %s not found.\nPlease reinstall this program. If not! no any avatar loaded.",szFileName);
MessageBox(WndMain.hWnd, szBuffer , APPNAME,MB_OK|MB_ICONERROR);
// No any setting file created
}
CloseHandle(hFile);
}
////////////////////////////////////////////////////////////////////
// Set Default Setting
void DefaultSetting()
{
int i, x, y;
char szPName[MAX_PLAYERNAME], szBuffer[MAX_PATH]="";
/***********************************************************/
// Default setting
setting.fWarning = 0;
setting.fSound = 1;
setting.fTime = 0;
setting.iTime = 30;
setting.iRule = 0;
setting.iBlock = 30;
setting.iNormalBlock = setting.iBlock;
strcpy(setting.szSoundFile,"Sound.mid");
setting.iOpacity = 100;
setting.fMenu = 1;
setting.fFullScreen = 0;
setting.fGrip = 1;
setting.iLang = 0;
for(i=0;i<MAX_PLAYER;i++)
{
player[i].iDiff = 2; // Default Difficult is Hard
// Clear icon of all players
for(x=0; x< XBLOCK - 1 ; x++)
for(y=0; y< XBLOCK - 1; y++)
{
avatar[i].fDot[x][y] = 0;
}
int iRand = rand()%10;
switch( iRand )
{
case 0: strcpy(szPName,"Sam"); break;
case 1: strcpy(szPName,"Mike"); break;
case 2: strcpy(szPName,"John"); break;
case 3: strcpy(szPName,"Alex"); break;
case 4: strcpy(szPName,"Tom"); break;
case 5: strcpy(szPName,"Paul"); break;
case 6: strcpy(szPName,"Jack"); break;
case 7: strcpy(szPName,"Mark"); break;
case 8: strcpy(szPName,"Steve"); break;
case 9: strcpy(szPName,"Peter"); break;
}
strcpy(player[i].szName,szPName); // Name of Player
}
if( !strcmp(player[0].szName , player[1].szName ) )
strcpy(player[0].szName,"Vivi");
player[0].fPlay = 0; // P1 is Human
player[1].fPlay = 1; // P2 is Computer
LoadAvatar("default.ava");
}
////////////////////////////////////////////////////////////////////
// Save all setting to a file
void SaveSetting()
{
HANDLE hFile;
DWORD dwBW;
TCHAR szBuffer[MAX_PATH]="";
TCHAR szFileType[40]="Anitsoft ExCaro 4.1 Setting File";
RECT rect;
// Create new setting file
strcat(szBuffer,ec.szAppDir);
strcat(szBuffer,"\\setting.dat");
if(INVALID_HANDLE_VALUE!=(hFile=CreateFile(szBuffer,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL)))
{
// Write Header Data
WriteFile( hFile, &szFileType, sizeof(TCHAR) * 40, &dwBW ,NULL);
GetWindowRect(WndMain.hWnd, &rect );
WriteFile(hFile,&rect,sizeof(RECT),&dwBW,NULL);
WriteFile(hFile,&player,sizeof(player),&dwBW,NULL);
WriteFile(hFile,&setting,sizeof(setting),&dwBW,NULL);
}
else
// Error
MessageBox(WndMain.hWnd,"Can't save setting.\nMaybe disk full or protected.",APPNAME,MB_OK|MB_ICONERROR);
CloseHandle(hFile);
}
////////////////////////////////////////////////////////////////////
// Load all setting from file to memory
void LoadSetting()
{
HANDLE hFile;
DWORD dwBR;
TCHAR szBuffer[MAX_PATH]="";
TCHAR szFileType[40];
RECT rect;
// Open setting file
strcpy(szBuffer,"");
strcat(szBuffer,ec.szAppDir);
strcat(szBuffer,"\\setting.dat");
if(INVALID_HANDLE_VALUE!=(hFile = CreateFile (szBuffer, GENERIC_READ, FILE_SHARE_READ,NULL, OPEN_EXISTING, 0, NULL)))
{
// Read Header Data
ReadFile (hFile, &szFileType, sizeof(TCHAR) * 40, &dwBR, NULL);
// If this file is oldder version setting file or setting file corrupted
if(strcmp(szFileType,"Anitsoft ExCaro 4.1 Setting File"))
{
DefaultSetting();
SaveSetting();
} // endif( )
// OK ! Loading now
else
{
ReadFile (hFile,&rect,sizeof(RECT),&dwBR,NULL);
ReadFile (hFile,&player,sizeof(player),&dwBR,NULL);
ReadFile (hFile, &setting, sizeof(setting), &dwBR, NULL);
if(!setting.fFullScreen) // restore last windows's size
MoveWindow(WndMain.hWnd , rect.left , rect.top , rect.right - rect.left , rect.bottom - rect.top, FALSE );
LoadAvatar("avatar.ava");
}//end else
} //endif(INVALID.....
else
{
DefaultSetting();
SaveSetting();
// No any setting file created
}
CloseHandle(hFile);
}
//////////////////////////////////////////////////////////////////////////////
// Draw Player's Icon into a block
void DrawBlock( int xDraw, int yDraw, char playerTurn, COLORREF crColor )
{
int x, y;
HDC hDC;
hDC = GetDC( WndPlay.hWnd );
if( playerTurn < ( MAX_PLAYER ) )
{
for(x=0; x< XBLOCK -1; x++)
for(y=0; y< XBLOCK -1; y++)
{
if (avatar[ playerTurn ].fDot[x][y] )
{
SetPixel(hDC, xDraw + 1 + x, yDraw + 1 + y, crColor );
}
}
}
else
if( setting.fWarning && play.fWin == FALSE )
{
SetTextColor(hDC, skin.crPColor[playerTurn - MAX_PLAYER]);
SetTextAlign(hDC, TA_CENTER | TA_CENTER );
SetBkMode(hDC, TRANSPARENT );
TextOut(hDC, xDraw + XBLOCK/2 +1, yDraw + XBLOCK/3 -1 ,"!",1);
}
ReleaseDC(WndPlay.hWnd , hDC );
}
///////////////////////////////////////////////////////////////////////
// Re Draw Player Bar
void ReDrawPlayerBar()
{
RECT rect;
// Redraw Player Bar
SetRect(&rect, WndMain.xClient - 95, 20, WndMain.xClient - 5, YHEADER - 10 );
InvalidateRect(WndMain.hWnd, &rect , FALSE );
}
///////////////////////////////////////////////////////////////////////
// Re Draw Player Bar
void ReDrawBanner()
{
RECT rect;
SetRect(&rect, 0, YHEADER - 20, WndMain.xClient, YHEADER );
InvalidateRect(WndMain.hWnd, &rect , FALSE );
ReDrawPlayerBar();
}
////////////////////////////////////////////////////////////////////
// Show Status
void ShowStatus(TCHAR szBuffer[])
{
SetWindowText(WndBtn[ID_STATUS].hWnd,szBuffer);
}
////////////////////////////////////////////////////////////////////
// Check
char pBlock(int x, int y)
{
if (x<0 || y<0 || x>(setting.iBlock -1) || y>(setting.iBlock -1) )
return -1;
else
return *(pMatrix + setting.iBlock * y + x);
}
// Plays MIDI file
void PlaySoundFile(HWND hWnd, char *pszFileName)
{
char szBuffer[MAX_PATH];
mciSendString("close all", 0, 0, hWnd); // Stop Midi
wsprintf(szBuffer, "open \"%s\" type sequencer alias MySound",pszFileName);
mciSendString(szBuffer, 0, 0, hWnd);
mciSendString("play MySound from 0", 0 ,0, hWnd);
}
void GetWindowSize(WNDTYPE *Wnd)
{
RECT rect;
WNDTYPE WndType;
WndType = *Wnd;
GetWindowRect(WndType.hWnd,&rect) ;
WndType.left = rect.left ;
WndType.top = rect.top;
WndType.right = rect.right ;
WndType.bottom = rect.bottom ;
GetClientRect(WndType.hWnd,&rect) ;
WndType.xClient = rect.right - rect.left ;
WndType.yClient = rect.bottom - rect.top ;
*Wnd = WndType;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -