📄 fly.c
字号:
return TRUE;
}
/**************************************************************
说明 : 玩家选择窗口的创建
输入参数 : win 窗口指针,wParam WM_CREATE消息, lParam没用
返回值 : 无
版本 日期 作者 改动内容和原因
*------------------------------------------------------
* 1.0 9/10/2007 lcy 基本的功能完成
***********************************************************************/
UINT32 FlyPlayerSelectCreat(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
W_FlyPlayerPic *WplayerObj = NULL;
WplayerObj = MallocClass(W_FlyPlayerPic);
if (WplayerObj)
{
WplayerObj->IconBmp.BmpID = win->BmpID;
WplayerObj->IconBmp.X = win->x;
WplayerObj->IconBmp.Y = win->y;
WplayerObj->item = 0;
WplayerObj->flag = 0;
FlySelectTimer = WinStartTimer(win, 20);
win->Data = WplayerObj;
}
WindowInvalidateWindow(win);
return TRUE;
}
/**************************************************************
说明 : 玩家选择窗口的销毁
输入参数 : win 窗口指针,wParam WM_DESTROY消息, lParam没用
返回值 : 无
版本 日期 作者 改动内容和原因
*------------------------------------------------------
* 1.0 9/10/2007 lcy 基本的功能完成
***********************************************************************/
UINT32 FlyPlayerSelectDestroy(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
W_FlyPlayerPic *WplayerObj = (W_FlyPlayerPic*)win->Data;
RockStopTimer(FlySelectTimer);
FreeClass(WplayerObj);
//DspTskUpdateInit( DTSC_TRANSPS);
return WMPROC_UNHANDLE;
}
/**************************************************************
说明 : 玩家选择窗口的按键控制
输入参数 : win 窗口指针,wParam WM_KEY消息, lParam没用
返回值 : 无
版本 日期 作者 改动内容和原因
*------------------------------------------------------
* 1.0 9/10/2007 lcy 基本的功能完成
***********************************************************************/
UINT32 FlyPlayerSelectKey(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
W_FlyPlayerPic *WpicObj = (W_FlyPlayerPic *)win->Data;
UINT16 keyPress = (UINT16)((wParam) >> 16);
UINT16 KEY_EV = (UINT16)(wParam);
if (keyPress)
return FALSE;
switch (KEY_EV)
{
case KE_UP_RELEASE:
case KE_NEXT_RELEASE:
{
WpicObj->item++;
WpicObj->item = WpicObj->item % 3;
}
break;
case KE_DN_RELEASE:
case KE_PREV_RELEASE:
{
WpicObj->item--;
if (WpicObj->item < 0)
WpicObj->item = 2;
else
WpicObj->item = WpicObj->item % 3;
}
break;
case KE_PLAY_RELEASE:
case KE_MENU_RELEASE:
WinSendCommand(win, EV_ItemSelect); //记录当前选中的菜单
break;
case KE_RETURN_RELEASE:
case KE_EXIT_RELEASE:
WindowDestroy(win);
break;
}
gFly_SelectPlayer = (GT_U8)(WpicObj->item); //记录当前选择的玩家
gFly_Timer = TRUE;
WindowInvalidateWindow(win);
return TRUE;
}
/**************************************************************
说明 : 玩家选择窗口的闪耀控制
输入参数 : win 窗口指针,wParam WM_TICK消息, lParam没用
返回值 : 无
版本 日期 作者 改动内容和原因
*------------------------------------------------------
* 1.0 9/10/2007 lcy 基本的功能完成
***********************************************************************/
UINT32 FlyPlayerSelectTimer(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
W_FlyPlayerPic *WplayerObj = win->Data;
WplayerObj->flag = !WplayerObj->flag; //每秒钟取反一次
WindowInvalidateWindow(win);
return TRUE;
}
/**************************************************************
说明 : 玩家选择窗口的玩家选中
输入参数 : win 窗口指针,wParam WM_COMMANT消息, lParam没用
返回值 : 无
版本 日期 作者 改动内容和原因
*------------------------------------------------------
* 1.0 9/10/2007 lcy 基本的功能完成
***********************************************************************/
UINT32 FlyStartCommandProc(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
INT16U ID = WM_CMD_GETCWID(wParam);
INT16U Event = WM_CMD_GETEVENT(wParam);
W_FlyPlayerPic *WplayerObj = (W_FlyPlayerPic *)win->Data;
if (EV_ItemSelect == Event)
{
switch (WplayerObj->item)
{
case 0:
gFly_SelectPlayer = 0; //第一玩家
break;
case 1:
gFly_SelectPlayer = 1; //第二玩家
break;
case 2:
gFly_SelectPlayer = 2; //第三玩家
break;
default:
break;
}
FlyStart(win); //进入游戏
}
return TRUE;
}
/**************************************************************
说明 : 玩家选择窗口的消息映射表,每条消息对应一个处理函数
输入参数 : 无
返回值 : 无
版本 日期 作者 改动内容和原因
*------------------------------------------------------
* 1.0 9/10/2007 lcy 基本的功能完成
***********************************************************************/
BEGIN_CHILDMESSAGE_MAP(SelectProcMap , CW_TYPE_select)
ON_MESSAGE(WM_PAINT , FlyPlayerSelectPaint)
ON_MESSAGE(WM_DESTROY , FlyPlayerSelectDestroy)
ON_MESSAGE(WM_CREATE, FlyPlayerSelectCreat)
ON_MESSAGE(WM_KEY, FlyPlayerSelectKey)
ON_MESSAGE(WM_TIMER, FlyPlayerSelectTimer)
ON_MESSAGE(WM_COMMAND, FlyStartCommandProc)
END_MESSAGE_MAP()
/**************************************************************
说明 : 玩家选择窗口的创建
返回值 : 无
版本 日期 作者 改动内容和原因
*------------------------------------------------------
* 1.0 9/10/2007 lcy 基本的功能完成
***********************************************************************/
UINT32 SelectPlayer(WINDOW* win)
{
win = WindowCreate(win ,
WS_FULLSCREEN | WS_TICK,
WID_FlyPlayer,
0, 0, 320, 240,
0,
BID_Fly_Mission01,
0, 0,
SelectProcMap,
NULL);
return 0;
}
/**************************************************************
说明 : 游戏设置窗口的显示
输入参数 : win 窗口指针,wParam WM_PAINT 消息, lParam没用
返回值 : 无
版本 日期 作者 改动内容和原因
*------------------------------------------------------
* 1.0 9/10/2007 lcy 基本的功能完成
***********************************************************************/
UINT32 FlySetboxPaint(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
W_PSetPic *WsetObj = (W_PSetPic*)win->Data;
if (!(WIN_NEEDPAIT(win)))
return TRUE;
DrawBmpIdEx(0, 0, BID_Fly_Mission03, 0, DSPM_Normal);
gGuiDspTranspColor = 0xFF00FF;
DrawBmpIdEx(80, 0, BID_Fly_Config1, 0, DSPM_Transp);
DrawBmpIdEx(154, (INT16S)(97 - WsetObj->rankon*40), BID_Fly_Config2, 0, DSPM_Transp);
DrawBmpIdEx(126, (INT16S)(97 - WsetObj->itty*40), BID_Fly_Config2, 0, DSPM_Transp);
DrawBmpIdEx(190, (INT16S)(41 + 5*(13 - WsetObj->rank)), BID_Fly_Config3, 0, DSPM_Normal);
DrawBmpIdEx(178, 111, BID_fly_configrank, 0, DSPM_Normal);
if (WsetObj->itset < 3)
DrawBmpIdEx((INT16S)(122 + WsetObj->itset*30), 122, (INT16U)(BID_Fly_number0 + WsetObj->itset), 0, DSPM_Normal);
if (WsetObj->itset == 3)
DrawBmpIdEx(210 , 94, BID_Fly_number3, 0, DSPM_Normal);
WIN_CLEARPAIT(win);
return TRUE;
}
/**************************************************************
说明 : 游戏设置窗口的创建
输入参数 : win 窗口指针,wParam WM_CREATE 消息, lParam没用
返回值 : 无
版本 日期 作者 改动内容和原因
*------------------------------------------------------
* 1.0 9/10/2007 lcy 基本的功能完成
***********************************************************************/
UINT32 FlySetboxCreat(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
W_PSetPic *WsetObj = NULL;
WsetObj = MallocClass(W_PSetPic);
if (WsetObj)
{
WsetObj->rankon = 0;
WsetObj->rank = 6;
WsetObj->itset = 0;
WsetObj->itty = 0;
win->Data = WsetObj;
}
WindowInvalidateWindow(win);
return TRUE;
}
/**************************************************************
说明 : 游戏设置窗口的销毁
输入参数 : win 窗口指针,wParam WM_DESTROY 消息, lParam没用
返回值 : 无
版本 日期 作者 改动内容和原因
*------------------------------------------------------
* 1.0 9/10/2007 lcy 基本的功能完成
***********************************************************************/
UINT32 FlySetboxDestroy(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
W_PSetPic *WsetObj = (W_PSetPic*)win->Data;
FreeClass(WsetObj);
//DspTskUpdateInit( DTSC_TRANSPS);
return WMPROC_UNHANDLE;
}
/**************************************************************
说明 : 游戏设置窗口的按键控制
输入参数 : win 窗口指针,wParam WM_KEY 消息, lParam没用
返回值 : 无
版本 日期 作者 改动内容和原因
*------------------------------------------------------
* 1.0 9/10/2007 lcy 基本的功能完成
***********************************************************************/
UINT32 FlysetKey(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
W_PSetPic *WsetObj = (W_PSetPic *)win->Data;
UINT16 keyPress = (UINT16)((wParam) >> 16);
UINT16 KEY_EV = (UINT16)(wParam);
if (keyPress)
return FALSE;
switch (KEY_EV)
{
case KE_NEXT_RELEASE:
{
WsetObj->itset++;
WsetObj->itset = WsetObj->itset % 4;
}
break;
case KE_PREV_RELEASE:
{
if (WsetObj->itset > 0)
WsetObj->itset--;
WsetObj->itset = WsetObj->itset % 4;
}
break;
case KE_DN_RELEASE:
case KE_DN_LONGP:
{
if (WsetObj->itset == 0)
{
if (WsetObj->itty > 0)
{
WsetObj->itty--;
WsetObj->itty = WsetObj->itty % 2;
}
else if (WsetObj->itty == 0)
WsetObj->itty = 1;
}
else if (WsetObj->itset == 1)
{
if (WsetObj->rankon > 0)
{
WsetObj->rankon--;
WsetObj->rankon = WsetObj->rankon % 2;
}
else if (WsetObj->rankon == 0)
WsetObj->rankon = 1;
}
if (WsetObj->itset == 2)
if (WsetObj->rank > 0)
{
WsetObj->rank--;
WsetObj->rank = WsetObj->rank % 14;
}
}
break;
case KE_UP_RELEASE:
case KE_UP_LONGP:
{
if (WsetObj->itset == 0)
{
WsetObj->itty++;
WsetObj->itty = WsetObj->itty % 2;
}
else if (WsetObj->itset == 1)
{
WsetObj->rankon++;
WsetObj->rankon = WsetObj->rankon % 2;
}
else if (WsetObj->itset == 2)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -