📄 sqshow.c
字号:
#define _SQSHOW_C_
#pragma NOAREGS
#include "general.h"
#include "osdshow.h"
#ifdef OSD_GAME_TETRIS
///////////////////////////////////////////////////////////////////////////////
extern void DRS232LogS(char *pcStr);
extern void DRS232LogB(BYTE bV1, BYTE bV2, BYTE bV3, BYTE bV4);
///////////////////////////////////////////////////////////////////////////////
static code WORD _wSqInfoItemMsg[] =
{
OSD_MSG_NULL,
OSD_MSG_NULL,
OSD_MSG_GRADE,
OSD_MSG_SCORE,
OSD_MSG_LINE,
OSD_MSG_START,
OSD_MSG_PLAYING,
OSD_MSG_PAUSE
};
void vSquareShowInfo(BYTE bInfo) large
{
BYTE i;
BYTE bItem;
BYTE bShowStr[5];
for (i = 0; i < SQ_INFO_NS; i++)
{
bItem = 0x01 << i;
if (bInfo & bItem)
{
switch (bItem)
{
case SQ_INFO_PANE:
{
vDrawGameInfoPane();
break;
}
case SQ_INFO_INDICATE:
{
vSetStartEndXY(SQ_INDICATE_RECT_START_X, SQ_INDICATE_RECT_START_Y,
SQ_INDICATE_RECT_END_X - 1, SQ_INDICATE_RECT_END_Y - 1);
vRectangle(WB_OSD_GAME, 2, GAME_COL_DARK_CYAN, TRUE, GAME_COL_BG);
break;
}
case SQ_INFO_GRADE:
case SQ_INFO_SCORE:
case SQ_INFO_LINE:
{
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 = SQ_INFO_BUTTON_START_X1;
_wEndX = SQ_INFO_BUTTON_END_X1;
_wEndY = (SQ_INFO_BUTTON_SPACE + SQ_INFO_BUTTON_HEIGHT1) * (i + 1);
_wStartY = _wEndY - SQ_INFO_BUTTON_HEIGHT1;
vCreateMsgButton(WB_OSD_GAME, i, 4, _wSqInfoItemMsg[i], 8, 4);
vUnselButton(WB_OSD_GAME, i);
if(SQ_INFO_GRADE == bItem)
{
vHex2Sring((WORD)(_bGameGrade + 1), bShowStr);
_wStartX = SQ_INFO_VALUE_START_X;
_wStartY += 4;
vOsdShowStr(WB_OSD_GAME, bShowStr);
}
else if(SQ_INFO_SCORE == bItem)
{
vHex2Sring(_wSqScore, bShowStr);
_wStartX = SQ_INFO_VALUE_START_X;
_wStartY += 4;
vOsdShowStr(WB_OSD_GAME, bShowStr);
}
else if(SQ_INFO_LINE == bItem)
{
vHex2Sring(_wSqLine, bShowStr);
_wStartX = SQ_INFO_VALUE_START_X;
_wStartY += 4;
vOsdShowStr(WB_OSD_GAME, bShowStr);
}
break;
}
case SQ_INFO_START:
case SQ_INFO_PLAYING:
case SQ_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(SQ_INFO_BUTTON_START_X2, SQ_INFO_BUTTON_START_Y2,
SQ_INFO_BUTTON_END_X2, SQ_INFO_BUTTON_END_Y2);
vCreateMsgButton(WB_OSD_GAME, 6, 4, _wSqInfoItemMsg[i], 0xFFFF, 4);
vUnselButton(WB_OSD_GAME, 6);
break;
}
default:
{
break;
}
}
}
}
}
static code BYTE _bSqMenuItemBn[] =
{
6, // BM_MENU_START
2, // BM_MENU_ANSWER
};
void vHiliSquareMenuItem(BYTE bItem, BYTE bState) large
{
BYTE bShowStr[5];
if(SQ_MENU_GRADE == bItem)
{
if (ITEM_HILI == bState)
{
bState = ITEM_SELECT;
}
}
vHiliGameButton(_bSqMenuItemBn[bItem], bState);
if(SQ_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 = SQ_INFO_VALUE_START_X;
_wStartY = (SQ_INFO_BUTTON_SPACE + SQ_INFO_BUTTON_HEIGHT1) * 2 + SQ_INFO_BUTTON_SPACE + 4;
vHex2Sring((WORD)(_bGameGrade + 1), bShowStr);
vOsdShowStr(WB_OSD_GAME, bShowStr);
}
}
static code BYTE _bSqTypeBmp[] =
{
BMP_CYAN, // SHP_LONG_BAR,
BMP_PURPLE, // SHP_T,
BMP_RED, // SHP_TWO,
BMP_BROWN, // SHP_SEVEN ,
BMP_BLUE, // SHP_RE_SEVEN,
BMP_GREEN, // SHP_RE_TWO,
BMP_YELLOW, // SHP_SQUARE,
BMP_EMPTY, // SHP_EMPTY,
BMP_EMPTY, // SHP_END
};
static BYTE bJudgeSquareType(BYTE bNowShape) large
{
return _bSqTypeBmp[bNowShape];
}
void vOsdClrIndiSquare(void) large
{
BYTE i;
while (bSharedInfo(SI_OSD_CMD_BUF_FULL));
for (i = 0; i < 4; i++)
{
_wStartX = GetPosition(rSquareData[bGetSquareType(0, _bNextShape)][i].x)
+ SQ_INDICATE_SHAP_START_X;
_wStartY = GetPosition(rSquareData[bGetSquareType(0, _bNextShape)][i].y)
+ SQ_INDICATE_SHAP_START_Y;
vPasteBmp(WB_OSD_GAME, BMP_EMPTY);
}
}
void vOsdClrWorkSquare(void) large
{
BYTE i;
while (bSharedInfo(SI_OSD_CMD_BUF_FULL));
for (i = 0; i < 4; i++)
{
_wStartX = GetPosition(rSquareData[_bSquareType][i].x + _rNowSquarePos.x);
_wStartY = GetPosition(rSquareData[_bSquareType][i].y + _rNowSquarePos.y);
vPasteBmp(WB_OSD_GAME, BMP_EMPTY);
}
}
void vOsdDrawSquare(BYTE bSquareType) large
{
BYTE i;
while (bSharedInfo(SI_OSD_CMD_BUF_FULL));
for (i = 0; i < 4; i++)
{
if (_fgSquareInit)
{
_wStartX = GetPosition(rSquareData[bGetSquareType(0, _bNextShape)][i].x)
+ SQ_INDICATE_SHAP_START_X;
_wStartY = GetPosition(rSquareData[bGetSquareType(0, _bNextShape)][i].y)
+ SQ_INDICATE_SHAP_START_Y;
vPasteBmp(WB_OSD_GAME, bJudgeSquareType(_bNextShape));
}
_wStartX = GetPosition(rSquareData[bSquareType][i].x + _rNowSquarePos.x);
_wStartY = GetPosition(rSquareData[bSquareType][i].y + _rNowSquarePos.y);
vPasteBmp(WB_OSD_GAME, bJudgeSquareType(_bNowShape));
}
_fgSquareInit = FALSE;
}
void vOsdDrawLine(BYTE bLineNo) large
{
BYTE i;
while (bSharedInfo(SI_OSD_CMD_BUF_FULL));
for (i = 0; i < MAX_WIDTH; i++)
{
_wStartX = GetPosition(i);
_wStartY = GetPosition(bLineNo);
vPasteBmp(WB_OSD_GAME, bJudgeSquareType(bReadSQMap(i, bLineNo)));
}
}
void vOsdClearLine(BYTE bLineNo) large
{
BYTE i;
while (bSharedInfo(SI_OSD_CMD_BUF_FULL));
for ( i = 0; i < MAX_WIDTH; i++)
{
_wStartX = GetPosition(i);
_wStartY = GetPosition(bLineNo);
vPasteBmp(WB_OSD_GAME, BMP_EMPTY);
}
}
void vSquareShowDialog(void) large
{
switch (_bGameSubState)
{
case SQ_DIALOG_AGAIN_STATE:
{
vShowGameDialog(OSD_MSG_GAME_AGAIN, TRUE);
break;
}
case SQ_DIALOG_NEXT_STATE:
{
vShowGameDialog(OSD_MSG_GAME_NEXT_GRADE, TRUE);
break;
}
default:
{
break;
}
}
}
void vHiliSquareDialogItem(BYTE bItem, BYTE bStste) large
{
vHiliGameButton(GAME_DIALOG_YES + bItem, bStste);
}
///////////////////////////////////////////////////////////////////////////////
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -