📄 mmiballoon.c
字号:
{
win = ((T_MFW_HDR *)own_window)->data;
data = (Balloon_Game *)win->user;
pheader=data->pheader;
pscreenbuffer=(char *)data->pscreenbuffer;
if (data)
{
win_delete (data->win);
}
flash_Gamewrite();
FREE_MEMORY ((void *)pscreenbuffer, (CURSORSIZE*CURSORSIZE*2+2)*sizeof(char));
FREE_MEMORY ((void *)pheader, sizeof (BalloonItemHeader));
FREE_MEMORY ((void *)data, sizeof (Balloon_Game));
g_norejectkeyflag=0;
g_game_win=0;
//set_backlight_on();//2004-03-25 Sunny remove
}
}
/*******************************************************************************
$Function: balloon_start
$Description: This function just creates and inits the new dialog
$Returns:
$Arguments:
*******************************************************************************/
T_MFW_HND balloon_start (T_MFW_HND win_parent,char *character)
{
T_MFW_HND win = balloon_create (win_parent);
TRACE_EVENT("balloon_start");
if (win NEQ NULL)
{
g_norejectkeyflag=1;
#if 0 //2004-03-25 Sunny remove
if( ffs_gamedata.Balloon_Ffskeyload[1].keyCode%40)
set_backlight_off();
#endif
SEND_EVENT(win,balloongame,0,character);//初始化win后由dialog来处理事件
}
return win;
}
/*******************************************************************************
$Function: boxman_dialog
$Description:
$Returns:
$Arguments:
*******************************************************************************/
void balloon_dialog (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data;
Balloon_Game * data = (Balloon_Game *)win_data->user;
TRACE_FUNCTION ("balloon_dialog()");
/*
* In this case the communication is very simple (only one intern event)
*/
switch (event)
{
case balloongame:
winShow(data->win);
break;
default:
return;
}
}
/*******************************************************************************
$Function: boxman_win_cb
$Description: win calback function of boxman
$Returns:
$Arguments:
*******************************************************************************/
static int balloon_win_cb (MfwEvt e, MfwWin *w)
{
Balloon_Game * data = (Balloon_Game *)w->user;
BalloonItemHeader * pheader= data->pheader;
// MapInfo *mapinfo2=data->mapinfo;
if(winIsFocussed(data->win)==0)
{
winfocusout = 1;
#if 0//2004-03-25 Sunny remove
if( ffs_gamedata.Balloon_Ffskeyload[1].keyCode%40)
set_backlight_off();
#endif
}
else
{
winfocusout=0;
#if 0//2004-03-25 Sunny remove
if(!g_lcd_game_flag&&( ffs_gamedata.Balloon_Ffskeyload[1].keyCode%40))
set_backlight_off();
#endif
}
switch (e)
{
case MfwWinVisible:
TRACE_EVENT("balloon_win_cb clear");
switch(l_mode)
{
case BALLOONINITIAL:
Balloon_Mnushow();
if(data->balloonTimeflag==0)
{
timStart(data->bltimer);
data->balloonTimeflag=1;
}
break;
case BALLOONPLAY:
dspl_ClearAll();
if(winfocusout==1)
{
dspl_all(pheader,data->pscreenbuffer);
timStart(data->bltimer);
data->balloonTimeflag=1;
}
break;
case BALLOONWIN:
dspl_ClearAll();
if(pheader->score>149)
Show_Hitin(pheader);
else
Show_Socre(pheader);
break;
case BALLOONEXIT:
dspl_ClearAll();
Draw_Dialog((char *)gameexit);
dsplsoftkey(TxtGameGoon, TxtGameExit);
break;
case BALLOONHELP:
//dspl_ClearAll();
balloon_help();
break;
case BALLOONSETTING:
dspl_ClearAll();
if(Key_Setshow((void *)&keysetting))
{
timStart(data->bltimer);
data->balloonTimeflag=1;
}
break;
case BALLOONSCORE:
//dspl_ClearAll();
Show_Socre(pheader);
break;
}
break;
default:
break;
}
return 1;
}
/*******************************************************************************
$Function: balloon_kbd_cb
$Description:
$Returns:
$Arguments:
*******************************************************************************/
static int balloon_kbd_cb (MfwEvt e, MfwKbd *k)
{
T_MFW_HND win = mfw_parent (mfw_header());
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
Balloon_Game * data = (Balloon_Game *)win_data->user;
char * pscreenbuffer=data->pscreenbuffer;
BalloonItemHeader * pheader=data->pheader;
U8 i;
TRACE_EVENT ("balloon_kbd_cb()");
if((e & KEY_MAKE))
{
switch(l_mode)
{
case BALLOONINITIAL:
switch(k->code)
{
case KCD_1:
l_mode=BALLOONPLAY;
totalscore=0;
if(data->balloonTimeflag==1)
timStop(data->bltimer);
newgame(pheader);
timStart(data->bltimer);
data->balloonTimeflag=1;
winShow(data->win);
break;
case KCD_2:
l_mode=BALLOONSCORE;
winShow(data->win);
break;
case KCD_3:
l_mode=BALLOONSETTING;
Load_Keyset(balloongame);
winShow(data->win);
break;
case KCD_4:
l_mode=BALLOONHELP;
winShow(data->win);
break;
case KCD_RIGHT:
case KCD_HUP:
balloon_destroy(data->win);
break;
default:break;
}
break;
case BALLOONPLAY:
if(k->code== Balloon_Ffskey[2].keyCode)//左移
{
pheader->keycode=1;
movecursorquik(pheader);
showcursor(pscreenbuffer);
return MFW_EVENT_CONSUMED;
}
if(k->code== Balloon_Ffskey[3].keyCode)//右移
{
pheader->keycode=2;
movecursorquik(pheader);
showcursor(pscreenbuffer);
return MFW_EVENT_CONSUMED;
}
if(k->code== Balloon_Ffskey[4].keyCode)//下移
{
pheader->keycode=4;
movecursorquik(pheader);
showcursor(pscreenbuffer);
return MFW_EVENT_CONSUMED;
}
if(k->code== Balloon_Ffskey[5].keyCode)//上移
{
pheader->keycode=3;
movecursorquik(pheader);
showcursor(pscreenbuffer);
return MFW_EVENT_CONSUMED;
}
if(k->code== Balloon_Ffskey[6].keyCode)//开枪
{
pheader->keycode=5;
if(gunshort(pheader))
{
removeelement(pheader);
if(timestoped)
pheader->fireflag=1;
}
return MFW_EVENT_CONSUMED;
}
if(k->code==Balloon_Ffskey[7].keyCode)//退出
{
timStop(data->bltimer);
data->balloonTimeflag=0;
l_mode=BALLOONEXIT;
winShow(data->win);
return MFW_EVENT_CONSUMED;
}
break;
case BALLOONEXIT:
switch(k->code)
{
case KCD_LEFT:
l_mode=BALLOONPLAY;
dspl_ClearAll();
dspl_all(pheader,data->pscreenbuffer);
timStart(data->bltimer);
data->balloonTimeflag=1;
break;
case KCD_RIGHT:
case KCD_HUP:
removeallitem(pheader);
keysetting.gamedifficult=SpeedOne;
timSetTime(data->bltimer, balloontimeout);
l_mode=BALLOONINITIAL;
winShow(data->win);
break;
}
break;
case BALLOONWIN:
switch(k->code)
{
case KCD_LEFT:
if(pheader->score>149)
{
keysetting.gamedifficult++;
}
else
{
totalscore=0;
keysetting.gamedifficult=SpeedOne;
}
l_mode=BALLOONPLAY;
newgame(pheader);
timStart(data->bltimer);
data->balloonTimeflag=1;
winShow(data->win);
break;
case KCD_RIGHT:
case KCD_HUP:
totalscore=0;
keysetting.gamedifficult=SpeedOne;
l_mode=BALLOONINITIAL;
timSetTime(data->bltimer, balloontimeout);
winShow(data->win);
break;
default:
break;
}
break;
case BALLOONHELP:
switch(k->code)
{
case KCD_LEFT:
case KCD_RIGHT:
case KCD_HUP:
l_mode=BALLOONINITIAL;
break;
}
winShow(data->win);
break;
case BALLOONSETTING:
if(Key_Setting_func(balloongame, &keysetting,k))
l_mode=BALLOONINITIAL;
winShow(data->win);
break;
case BALLOONSCORE:
switch(k->code)
{
case KCD_LEFT:
for(i=0;i<5;i++)
{
Blloon_Score->score[i]=0;
}
winShow(data->win);
break;
case KCD_RIGHT:
case KCD_HUP:
l_mode=BALLOONINITIAL;
winShow(data->win);
break;
}
break;
default:break;
}
}
if(!(e&KEY_MAKE))
{
//这里之处理上下左右四个键对于键OK不处理
if(l_mode==BALLOONPLAY)
{
if((k->code== Balloon_Ffskey[2].keyCode)||
(k->code== Balloon_Ffskey[3].keyCode)||
(k->code== Balloon_Ffskey[4].keyCode)||
(k->code== Balloon_Ffskey[5].keyCode)||
(k->code== Balloon_Ffskey[6].keyCode))
pheader->keycode=0;
}
}//end if key_make
return MFW_EVENT_CONSUMED;
}
/*******************************************************************************
$Function: balloon
$Description: Starts the game function on user selection
$Returns:
$Arguments:
*******************************************************************************/
int balloon(MfwMnu* m, MfwMnuItem* i)
{
Balloon_Game * data;
T_MFW_HND parent = mfwParent( mfw_header());
TRACE_EVENT("balloon()");
balloon_start(parent,0);
return MFW_EVENT_CONSUMED; //eat it and won't be deal with in the parent window
}
static int balloon_mnu_cb (MfwEvt e, MfwMnu *m)
{
T_MFW_HND win = mfwParent(mfw_header());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -