📄 ballshow.c
字号:
#define _BALLSHOW_C_
#pragma NOAREGS
#include "general.h"
#include "osdshow.h"
#ifdef OSD_GAME_BREAKOUT
///////////////////////////////////////////////////////////////////////////////
extern void DRS232LogS(char *pcStr);
extern void DRS232LogB(BYTE bV1, BYTE bV2, BYTE bV3, BYTE bV4);
///////////////////////////////////////////////////////////////////////////////
static code BYTE bBallBmpId[] =
{
BMP_BALLBAR,
BMP_EMPTYBALLBAR,
BMP_BALL,
BMP_EMPTYBALL,
BMP_BLUEBLOCK,
BMP_BROWNBLOCK,
BMP_REDBLOCK,
BMP_GREENBLOCK,
BMP_YELLOWBLOCK,
BMP_ROSEBLOCK,
BMP_EMPTYBLOCK
};
void vGameBallDrawBmp(BYTE bBmpId, WORD wx, WORD wy) large
{
bBmpId = bBallBmpId[bBmpId];
_wStartX = wx;
_wStartY = wy;
while (bSharedInfo(SI_OSD_CMD_BUF_FULL));
vPasteBmp(WB_OSD_GAME, bBmpId);
}
void vDrawBlockMap(void) large
{
BYTE i, j;
BYTE temp;
for (i = 0; i < rBlockMap[_bGameGrade].HeightNum; i++)
{
for (j = 0; j < BLOCK_MAP_MAX_WIDTH; j++)
{
switch(rBlockMap[_bGameGrade].BlockMapData[i][j].bType)
{
case GM_BALL_DEST:
vSetBlockfg(j, i);
break;
case GM_BALL_EMPTY:
vClrBlockfg(j, i);
break;
default:
break;
}
vGameBallDrawBmp(rBlockMap[_bGameGrade].BlockMapData[i][j].bBmpId, GetBlockXpos(j), GetBlockYpos(i));
}
}
}
void vClearBlock(BYTE x, BYTE y) large
{
vClrBlockfg(x, y);
vGameBallDrawBmp(EMPTY_BLOCK, GetBlockXpos(x), GetBlockYpos(y)); //EMPTY_BLOCK
}
static code WORD _wBallInfoItemMsg[] =
{
OSD_MSG_NULL,
OSD_MSG_GRADE,
OSD_MSG_SCORE,
OSD_MSG_GAME_TIME,
OSD_MSG_START,
OSD_MSG_PLAYING,
OSD_MSG_PAUSE
};
void vBallShowInfo(BYTE bInfo) large
{
BYTE i;
BYTE bItem;
BYTE bShowStr[6];
for (i = 0; i < BALL_INFO_NS; i++)
{
bItem = 0x01 << i;
if (bInfo & bItem)
{
switch (bItem)
{
case BALL_INFO_PANE:
{
vDrawGameInfoPane();
break;
}
case BALL_INFO_GRADE:
case BALL_INFO_SCORE:
case BALL_INFO_TIME:
{
vSetBtnCol(WB_OSD_GAME, GAME_COL_DARK_GRAY, GAME_COL_DARK_CYAN, GAME_COL_BLACK, GAME_COL_WHITE);
vSetMsgCol4(WB_OSD_GAME, GAME_COL_DARK_CYAN, GAME_COL_DARK_CYAN, GAME_COL_BLACK, GAME_COL_WHITE);
_wStartX = BALL_INFO_BUTTON_START_X1;
_wEndX = BALL_INFO_BUTTON_END_X1;
_wEndY = (BALL_INFO_BUTTON_SPACE + BALL_INFO_BUTTON_HEIGHT1) * i;
_wStartY = _wEndY - BALL_INFO_BUTTON_HEIGHT1;
if (!_fgGmBallButton)
{
vCreateMsgButton(WB_OSD_GAME, i, 4, _wBallInfoItemMsg[i], 8, 4);
vUnselButton(WB_OSD_GAME, i);
}
if(BALL_INFO_GRADE == bItem)
{
vHex2Sring((WORD)(_bGameGrade + 1), bShowStr);
_wStartX = BALL_INFO_VALUE_START_X;
_wStartY += 4;
vOsdShowStr(WB_OSD_GAME, bShowStr);
}
else if(BALL_INFO_SCORE == bItem)
{
vHex2Sring(_wBallScore, bShowStr);
_wStartX = BALL_INFO_VALUE_START_X;
_wStartY += 4;
vOsdShowStr(WB_OSD_GAME, bShowStr);
}
else if(BALL_INFO_TIME == bItem)
{
bShowStr[0] = 5;
bShowStr[1] = (_bBallMinute / 10) % 10 + '0';
bShowStr[2] = _bBallMinute % 10 + '0';
bShowStr[3] = ':',
bShowStr[4] = (_bBallSecond / 10) % 10 + '0';
bShowStr[5] = _bBallSecond % 10 + '0';
_wStartX = BALL_INFO_TIME_START_X;
_wStartY += 4;
vOsdShowStr(WB_OSD_GAME, bShowStr);
}
break;
}
case BALL_INFO_START:
case BALL_INFO_PLAYING:
case BALL_INFO_PAUSE:
{
vSetBtnCol(WB_OSD_GAME, GAME_COL_DARK_GRAY, GAME_COL_DARK_CYAN, GAME_COL_BLACK, GAME_COL_WHITE);
vSetMsgCol4(WB_OSD_GAME, GAME_COL_DARK_CYAN, GAME_COL_DARK_CYAN, GAME_COL_BLACK, GAME_COL_WHITE);
vSetStartEndXY(BALL_INFO_BUTTON_START_X2, BALL_INFO_BUTTON_START_Y2,
BALL_INFO_BUTTON_END_X2, BALL_INFO_BUTTON_END_Y2);
vCreateMsgButton(WB_OSD_GAME, 6, 4, _wBallInfoItemMsg[i], 0xFFFF, 4);
vUnselButton(WB_OSD_GAME, 6);
break;
}
default:
{
break;
}
}
}
}
_fgGmBallButton = FALSE;
}
static code BYTE _bBallMenuItemBn[] =
{
6, // BALL_MENU_START
1 // BALL_MENU_GRADE
};
void vHiliBallMenuItem(BYTE bItem, BYTE bState) large
{
BYTE bShowStr[5];
if(BALL_MENU_GRADE == bItem)
{
if (ITEM_HILI == bState)
{
bState = ITEM_SELECT;
}
}
vHiliGameButton(_bBallMenuItemBn[bItem], bState);
if(BALL_MENU_GRADE == bItem)
{
if (ITEM_SELECT == bState)
{
vSetMsgCol4(WB_OSD_GAME, GAME_COL_DARK_GRAY, GAME_COL_DARK_GRAY, GAME_COL_BLACK, GAME_COL_WHITE);
}
else
{
vSetMsgCol4(WB_OSD_GAME, GAME_COL_DARK_CYAN, GAME_COL_DARK_CYAN, GAME_COL_BLACK, GAME_COL_WHITE);
}
_wStartX = BALL_INFO_VALUE_START_X;
_wStartY = BALL_INFO_BUTTON_SPACE + 4;
vHex2Sring((WORD)(_bGameGrade + 1), bShowStr);
vOsdShowStr(WB_OSD_GAME, bShowStr);
}
}
void vBallShowDialog(void) large
{
switch (_bGameSubState)
{
case BALL_DIALOG_AGAIN_STATE:
{
vShowGameDialog(OSD_MSG_GAME_AGAIN, TRUE);
break;
}
case BALL_DIALOG_NEXT_STATE:
{
vShowGameDialog(OSD_MSG_GAME_NEXT_GRADE, TRUE);
break;
}
default:
{
break;
}
}
}
void vHiliBallDialogItem(BYTE bItem, BYTE bStste) large
{
vHiliGameButton(GAME_DIALOG_YES + bItem, bStste);
}
///////////////////////////////////////////////////////////////////////////////
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -