📄 mmirussia.c
字号:
Boolean Result;
Result=False;
/*2003/11/24,talcon modify*/
if(Dummy_Y ==0)
Result=True;
return Result;
}//end JudgeCoordinate
void Draw_Initinterface(T_game_russia *data)
{
U8 i,j;
UINT uOldColor = 0;//2003/11/04,talcon add
//dspl_BitBlt(0, 0, Screen_X, Screen_Y, 0, (void *)Russiaframe, 0);
drawRussiaBkg();
uOldColor = dspl_SetFrgColor(0x587868);
dspl_DrawRect(Frame_X, Frame_Y,
BenchMark_X + DiamondWidth * LINEROW +1,
BenchMark_Y + DiamondWidth * LineNumber +1);
dspl_SetFrgColor(0xb6b6b6);
dspl_DrawLine( BenchMark_X + DiamondWidth * LINEROW + 1,Frame_Y,
BenchMark_X + DiamondWidth * LINEROW + 1,
BenchMark_Y + DiamondWidth * LineNumber+ 1);
dspl_DrawLine( Frame_X, BenchMark_Y + DiamondWidth * LineNumber + 1,
BenchMark_X + DiamondWidth * LINEROW +1,
BenchMark_Y + DiamondWidth * LineNumber +1 );
for (i = 0;i <= LineNumber-1; i++)
for (j =0; j<=LINEROW-1;j++)
DrawDiamond(j,i,RussiaNone,data);
dspl_SetFrgColor(uOldColor); //2003/11/04,talcon add
}//end Draw_Initinterface
//dwar russia background
void drawRussiaBkg()
{
#ifdef RUSSIA_BKG
drawIconByIcnAttr((MfwIcnAttr*)Russia_BkgAttr,0);
#else
U32 color = dspl_SetBkgColor(0x30a0f8);
//dspl_ClearAll();
dspl_Clear(0,0,128,160);
dspl_SetBkgColor(color);
#endif
}//end drawRussiaBkg
void drawRussiaBkgByZone(int posX,int posY,int nWidth,int nHeight)
{
#ifdef RUSSIA_BKG
dspl_BitBlt_ext(posX, posY,posX, posY,
nWidth, nHeight,
Screen_X, Screen_Y,0, (void *)Russiaframe, 0);
#else
U32 color = dspl_SetBkgColor(0x30a0f8);
dspl_Clear(posX,posY,posX + nWidth, posY + nHeight);
dspl_SetBkgColor(color);
#endif
}
void Dspl_terris(T_game_russia *data)
{
U8 i,j,umode;
U32 oldcolor;
char information[6];
umode=dspl_Enable(0);
//dspl_BitBlt(0, 0, Screen_X, Screen_Y, 0, (void *)Russiaframe, 0);
drawRussiaBkg();
oldcolor = dspl_SetFrgColor(0x587868);
dspl_DrawRect(Frame_X, Frame_Y,
BenchMark_X + DiamondWidth * LINEROW,
BenchMark_Y + DiamondWidth * LineNumber);
for (i = 0;i <= LineNumber-1; i++)
for (j =0; j<=LINEROW-1;j++)
{
DrawDiamond(j,i,data->R_Coordinate[j][i],data);
}
Print_Number((char *)information,6,(U32)data->R_Score);
dspl_SetFrgColor(0xff);
dspl_TextOut(CHARXPOS, CHARYPOS,DSPL_TXTATTR_TRANSPARENT, (char *)information);
dspl_SetFrgColor(oldcolor);
Dspl_TotalLines(data->R_LineCount);
/* 2004/06/17 yhf add */
Dspl_Score(data->R_Score);
Dspl_Difficult(data,data->R_Speed);
Draw_PreviewShape(data->R_Nextview,data->R_NextviewColor);
/* end yhf add */
dspl_Enable(umode);
}//end Dspl_terris
void Dspl_Difficult(T_game_russia * data,UBYTE diffcult)
{
char information[3];
//dspl_BitBlt(DIFFCULTXPOS, DIFFCULTYPOS, RECTWIDTH, RECTHEGHT, 0, (void *)Rect1backgrd, 0);
drawRussiaBkgByZone(DIFFCULTXPOS,DIFFCULTYPOS,RECTWIDTH,RECTHEGHT);
Print_Number((char *)information,3,(U32)diffcult);
set_font_type(UNI12X12_FONT);
dspl_TextOut(DIFFCULTXPOS+10, DIFFCULTYPOS-1,DSPL_TXTATTR_TRANSPARENT, (char *)information);
switch(diffcult)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 6:
case 9:
timSetTime(data->timer,100);
break;
case 5:
case 8:
timSetTime(data->timer,130);
break;
case 7:
timSetTime(data->timer,160);
break;
default:break;
}
}//end Dspl_Difficult
void Dspl_TotalLines(int lines)
{
char information[6];
//dspl_BitBlt(DIFFCULTXPOS, DIFFCULTYPOS, RECTWIDTH, RECTHEGHT, 0, (void *)Rect1backgrd, 0);
drawRussiaBkgByZone(LINESXPOS, LINESYPOS,60, RECTHEGHT);
Print_Number((char *)information,6,(U32)lines);
set_font_type(UNI12X12_FONT);
dspl_TextOut(LINESXPOS+(Screen_X - LINESXPOS - strlen(information)*12)/2, LINESYPOS,DSPL_TXTATTR_TRANSPARENT, (char *)information);
}
void Dspl_Score(int score)
{
char information[8];
Print_Number((char *)information,7,(U32)score);
drawRussiaBkgByZone(CHARXPOS, CHARYPOS,40,12);
set_font_type(UNI12X12_FONT);
dspl_TextOut(CHARXPOS, CHARYPOS,DSPL_TXTATTR_TRANSPARENT, (char *)information);
}
void DrawText(U8 uX,U8 uY,U32 uColor,char *pszText)
{
U32 oldcolor;
if (!pszText)return;
oldcolor = dspl_SetFrgColor(uColor);
dspl_TextOut(uX, uY,DSPL_TXTATTR_TRANSPARENT, pszText);
dspl_SetFrgColor(oldcolor);
}//end
U8 Set_Rflect(U8 speed)
{
switch(speed)
{
case 0:
case 1:
case 2:
case 3:
case 4:
return 7-speed;
case 6:
case 5:
return 2;
case 9:
case 8:
case 7:
return 1;
default:break;
}
}//end Set_Rflect
void Russia_Help(void)
{
U32 oldcolor;
oldcolor = dspl_SetBkgColor(0xF6F2CD);
//2004/06/08 yhf modify
dspl_fill_rectangle(0, 0, 128, 160);
//dspl_fill_rectangle(0, 0, 120, 160);
dspl_DrawLine(0,0,0,160);
dspl_SetBkgColor(oldcolor);
//dspl_BitBlt(0,0,120,18,0,(void*)gameTitle,0);
//draw3dbutton(0,0,119,20,(char *)gameexplain,0x80ff,1);
/* 2004/06/19 yhf modify */
dspl_TextOut(44, 1, DSPL_TXTATTR_TRANSPARENT,(char *)MmiRsrcGetText(TxtGameExplain));
dspl_TextOut(0, RUSSIAHELPINIT,DSPL_TXTATTR_TRANSPARENT, (char *)MmiRsrcGetText(TxtTerrisHelp1));
dspl_TextOut(0, RUSSIAHELPINIT+37,DSPL_TXTATTR_TRANSPARENT, (char*)MmiRsrcGetText(TxtPublicHelp1));
dspl_TextOut(0, RUSSIAHELPINIT+55,DSPL_TXTATTR_TRANSPARENT, (char*)MmiRsrcGetText(TxtPublicHelp2));
dspl_TextOut(0, RUSSIAHELPINIT+73,DSPL_TXTATTR_TRANSPARENT, (char*)MmiRsrcGetText(TxtPublicHelp3));
dspl_TextOut(0, RUSSIAHELPINIT+91,DSPL_TXTATTR_TRANSPARENT, (char*)MmiRsrcGetText(TxtPublicHelp4));
/* end yhf modify */
}
void Russia_Mnushow()
{
/*
static U8 bmpnum;
if(bmpnum==1)
{
//dspl_BitBlt(0,0,120,78,0,(void*)russia_mnubmp1,0);
//dspl_BitBlt(0,0,120,160,0,(void*)Russia_EntryBkg,0);
}
else
{
//dspl_BitBlt(0,0,120,78,0,(void*)russia_mnubmp1,0);
//dspl_BitBlt(6,21,108,27,0,(void*)russia_mnubmp2,0);
//dspl_BitBlt(0,0,120,160,0,(void*)Russia_EntryBkg,0);
}
bmpnum = 1 - bmpnum;
*/
#if (MAIN_LCD_SIZE==3)
int posX = 0, posY = 0;
dspl_ClearAll();
dspl_BitBlt(Russia_EntryBkg[0],Russia_EntryBkg[1],Russia_EntryBkg[2],Russia_EntryBkg[3],0,(void*)&Russia_EntryBkg[4],0);
// dspl_TextOut(28, 4, DSPL_TXTATTR_WHITE_EDGE,MmiRsrcGetText(TxtGamestart));
// dspl_TextOut(28, 18, DSPL_TXTATTR_WHITE_EDGE,MmiRsrcGetText(TxtGameselect));
// dspl_TextOut(28, 32, DSPL_TXTATTR_WHITE_EDGE,MmiRsrcGetText(TxtGamehelp));
// dspl_TextOut(28, 46, DSPL_TXTATTR_WHITE_EDGE,MmiRsrcGetText(TxtGameScore));
posX = 50;
posY = 28 + 22 *Current_Select;
dspl_BitBlt(posX, posY, 22, 18, 0, (void *)game_Menu_Finger, DSPL_BMPXOR);//shiheng 288 waiting//游戏手指图
dspl_BitBlt(posX, posY, 22, 18, 0, (void *)game_Menu_Finger_mask, DSPL_BMPAND);
dspl_BitBlt(posX, posY, 22, 18, 0, (void *)game_Menu_Finger, DSPL_BMPXOR);
#endif
//dspl_BitBlt(0,77,120,82,0,(void*)game_mnubmp,0);
}
#ifndef GAME_SUBMENU
/*2003/10/18,talcon add*/
void Russia_MnuItemIcnShow(T_game_russia * data)
{
int nBmpX,nBmpY;
int nPosX,nPosY;
int nInterval = 1;
nBmpY = nBmpX = nPosX = 0;
nPosY = 75 + 17 * data->R_CurSlect;
if(data->R_AnimType == 0)
{
nBmpY = 0;
nPosX = 0;
nBmpX = 25 - data->R_AnimIndx * 5;
data->R_AnimIndx ++;
if(nBmpX < 0)
{
nBmpX = 0;
data->R_AnimType = 1;
data->R_AnimIndx = 0;
}
}
#if(MAIN_LCD_SIZE==4)
dspl_BitBlt_ext(nPosX,nPosY,
nBmpX,nBmpY,
25 - nBmpX, 15 - nBmpY ,
25,15,
0,
(void*) game_MenuAnim,0);
#endif
}
#endif
int GameRussiaEntry(MfwMnu* m, MfwMnuItem* i)
{
T_MFW_HND win = mfw_parent(mfw_header());
T_MFW_HND winCur = GameRussiaStart(win);
#ifdef GAME_SUBMENU
T_MFW_WIN * win_data = ((T_MFW_HDR *)winCur)->data;
T_game_russia * data = (T_game_russia*)win_data->user;
if(winCur)
{
//SEND_EVENT(winCur,Russia_Initstate,0,0);
switch(m->lCursor[m->level])
{
case 0:
l_mode=Russia_Gamestate;
data->CurState=R_Init;
winShow(data->win);
break;
case 1:
l_mode=Russia_Settingstate;
// Load_Keyset(russiagame);
winShow(data->win);
break;
case 2:
l_mode=Russia_Scorestate;
winShow(data->win);
break;
case 3:
l_mode=Russia_Helpstate;
winShow(data->win);
break;
break;
default:
break;
}
}
#endif
return MFW_EVENT_CONSUMED;
}
T_MFW_HND GameRussiaStart (MfwHnd parent)
{
T_MFW_HND win = GameRussiaCreate(parent);
#ifndef GAME_SUBMENU
if ( win != 0 )
SEND_EVENT(win,Russia_Initstate,0,0);
#endif
g_norejectkeyflag=1;
return win;
}
T_MFW_HND GameRussiaCreate( MfwHnd parent )
{
T_MFW_WIN * win;
char * russiatitle;
T_game_russia *data=(T_game_russia *)ALLOC_MEMORY(sizeof(T_game_russia));
TRACE_FUNCTION ("GameRussiaCreate()");
if(data==NULL)
return 0;
/*2003/10/18,talcon add*/
data->R_CurSlect = 0;
data->R_AnimIndx = 0;
data->R_AnimType = 0;
/*end talcon */
data->win=win_create(parent,0,E_WIN_VISIBLE,(T_MFW_CB)GameRussia_win_cb);
if (data->win EQ 0)
{
FREE_MEMORY ((void *)data, sizeof (T_game_russia));
return 0;
}
g_game_win = data->win;
data->mmi_control.dialog = (T_DIALOG_FUNC)GameRussiaDialog;
data->mmi_control.data = data;
win = ((T_MFW_HDR *)data->win)->data;
win->user = (void *) data;
russiatitle=(char *) MmiRsrcGetText(TxtRussiagame); // get the editor title text
data->kbd = kbd_create (data->win,KEY_ALL | KEY_MAKE,(T_MFW_CB)GameRussia_kbd_cb);
data->russiaTimeflag =0;
data->timer = tim_create (data->win,timeout,(T_MFW_CB)GameRussia_tim_cb); // timeout
return data->win;
}
void GameRussiaDialog(T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data;
T_game_russia * data = (T_game_russia *)win_data->user;
game_Rectangle Rectangledata;
char information[20];
U32 oldcolor;
TRACE_FUNCTION ("GameRussiaDialog()");
switch (event)
{
#ifndef GAME_SUBMENU
case Russia_Initstate:
winShow(data->win);
break;
#endif
default:
return;
}
}
static int GameRussia_win_cb (MfwEvt e, MfwWin *w)
{
T_game_russia * data = (T_game_russia*)w->user;
U32 oldcolor;
char information[7];
TRACE_FUNCTION ("GameRussia_win_cb()");
MMI_TRACE_EVENT(("yhf--------------GameRussia_win_cb()"));
/* 2004/06/03 yhf add */
if(winIsFocussed(data->win)==0)
winfocusout = 1;
else
winfocusout=0;
/* end yhf add */
switch (e)
{
case MfwWinVisible:
switch(l_mode)
{
#ifndef GAME_SUBMENU
case Russia_Initstate:
//2003/10/18,talcon add
data->R_AnimIndx = data->R_AnimType = 0;
timSetTime(data->timer,150);
Russia_Mnushow();
//2003/10/18,talcon add
Russia_MnuItemIcnShow(data);
if(data->russiaTimeflag==0)
{
timStart(data->timer);
data->russiaTimeflag=1;
}
break;
#endif
case Russia_Gamestate:
if(data->CurState==R_Init)
{
Draw_Initinterface(data);
data->R_Score=0;
data->R_LineCount = 0; //talcon add
data->R_Speed=0;
data->R_Nextview=rand()%RUSSIASTYTLE+1;
data->R_NextviewColor = rand()%RUSSIACOLOR + 1;
//draw "Next"
{
set_font_type(UNI12X12_FONT);
//dspl_TextOut(PREVIEWXPOS,PREVIEWYPOS-12,DSPL_TXTATTR_TRANSPARENT, (char*)MmiRsrcGetText(TxtGameNext));
}
Draw_PreviewShape(data->R_Nextview,data->R_NextviewColor);
//draw "Speed"
{
set_font_type(UNI12X12_FONT);
dspl_TextOut(DIFFCULTXPOS, DIFFCULTYPOS-12,DSPL_TXTATTR_TRANSPARENT, (char*)MmiRsrcGetText(TxtNull));
}
Dspl_Difficult(data,data->R_Speed);
//draw "Srore"
{
char *txt = (char *)MmiRsrcGetText(TxtNull);
int nStringWidth = get_StringWidth(txt);
set_font_type(UNI12X12_FONT);
dspl_TextOut(CHARXPOS - nStringWidth - 12, CHARYPOS,DSPL_TXTATTR_TRANSPARENT, txt);
set_font_type(UNI12X12_FONT);
//dspl_TextOut(CHARXPOS - 12, CHARYPOS,DSPL_TXTATTR_TRANSPARENT, ":");
}
Dspl_Score(data->R_Score);
//draw "Lines"
{
set_font_type(UNI12X12_FONT);
dspl_TextOut(LINESXPOS, LINESYPOS-12,DSPL_TXTATTR_TRANSPARENT, (char*)MmiRsrcGetText(TxtNull));
}
Dspl_TotalLines(data->R_LineCount);
data->CurState=R_Ready;
}
/* 2004/06/03 yhf add */
if(winfocusout==1)
{
data->Prekeycode = 0;
Dspl_terris(data);
if(data->CurState==R_Start)
{
timStart(data->timer);
data->russiaTimeflag=1;
}
}
/* end yhf add */
break;
case Russia_Settingstate:
dspl_ClearAll();
//if(Key_Setshow((void *)&keysetting))
Key_Setshow(0);
break;
case Russia_Exitstate:
// dspl_ClearAll(); /*2003/12/16, wangyan modify*/
//Draw_Dialog((char *)MmiRsrcGetText(TxtExitGame));
draw_icon_require();
#if(MAIN_LCD_SIZE==3)//jhxu720
ALIGNED_PROMPT(CENTER_RIGHT, DIALOG_HALF_FIRSTSECOND, DSPL_TXTATTR_TRANSPARENT, TxtExitGame);
#else
ALIGNED_PROMPT(CENTER, DIALOG_FIRST_LINE, DSPL_TXTATTR_TRANSPARENT, TxtExitGame);
#endif
dsplsoftkey(TxtGameGoon, TxtGameExit);
break;
case Russia_Overstate:
//Russia_Scoreshow(data->R_Score);
Game_Scoreshow(&ffs_gamedata.Russia_ffsScore,data->R_Score,0,1);
break;
case Russia_Scorestate:
//Russia_Scoreshow(data->R_Score);
Game_Scoreshow(&ffs_gamedata.Russia_ffsScore,-1,0,0);
break;
case Russia_Helpstate:
dspl_ClearAll();
Russia_Help();
break;
default:break;
}
break;
default: return 1;
}
return 1;
}
static int GameRussia_kbd_cb (MfwEvt e, MfwKbd *k)
{
T_MFW_HND win = mfw_parent (mfw_header());
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
T_game_russia * data = (T_game_russia*)win_data->user;
int i,j;
char information[20];
Boolean CanMove;
UBYTE diamondcolor;
U32 oldcolor;
TRACE_EVENT ("GameRussia_kbd_cb()");
#ifndef GAME_SUBMENU
if(l_mode==Russia_Initstate && (e&KEY_MAKE)) //初始状态
{
switch(k->code)
{
case KCD_1:
case KCD_2:
case KCD_3:
case KCD_4:
if(data->R_CurSlect+1 != k->code)
{
data->R_CurSlect = k->code - 1;
data->R_AnimIndx = data->R_AnimType = 0;
timStart(data->timer);
}
//winShow(data->win);
break;
case KCD_MNUDOWN:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -