📄 fly.c
字号:
/******************************************************************/
/* Copyright (C) 2007 ROCK-CHIPS FUZHOU . All Rights Reserved. */
/*******************************************************************
File : fly.c
Desc : 窗口类使用例程,供参考用
Author : liaochaoyang
Date : 2007-08-27
Notes :
$Log: fly.c,v $
Revision 1.2 2008/06/19 04:42:26 Administrator
代码整理!
Revision 1.1.1.1 2008/05/07 04:14:50 Administrator
no message
Revision 1.1.1.1 2008/03/06 13:28:24 Lingzhaojun
no message
Revision 1.11 2008/01/08 09:49:27 Lingzhaojun
合并蓝魔970代码
Revision 1.10 2008/01/04 08:20:25 Liaochaoyang
修改了设置时的问题
Revision 1.9 2007/12/29 01:55:01 Liaochaoyang
no message
Revision 1.8 2007/11/12 01:13:04 Xiebangwang
修改了按键设置,游戏的时候更人性化
Revision 1.7 2007/11/08 07:50:03 Xiebangwang
修改了游戏按键 根据测试出来的问题进行了更新
Revision 1.6 2007/10/31 12:34:31 Liaochaoyang
修改了玩家选择闪耀的位置 使它更完美
Revision 1.5 2007/10/29 12:50:35 Liaochaoyang
去掉了ARM编译时的warning
修改了板子上运行时不能进入中间选项的bugs
Revision 1.4 2007/10/12 02:47:16 Liaochaoyang
no message
Revision 1.3 2007/10/09 09:17:42 Lingzhaojun
统一整理GUI头文件的包含,只包含"guictrl\Gui.h"即可引用GUI全部资源
Revision 1.2 2007/10/08 02:19:54 Lingzhaojun
添加CVS版本自动注释脚本
*********************************************************************/
/***************************************************************/
#include "include.h"
#include "fly.h"
#include "guictrl\Gui.h"
#include "..\application\game\fly\fly.h"
#include"game.h"
extern WINDOW_PROCREG FlyProcMap[];
extern WINDOW_PROCREG SelectProcMap[];
extern GT_U8 gFly_SelectPlayer;
extern GT_U8 gFly_GameCurLevel;
extern GT_U8 gFly_soundCurState;
extern GT_U8 gFly_soundCurValve;
extern GT_BOOL gFly_Timer;
extern GT_U8 gFly_SaveInfo[FLY_SAVE_FILE_LEN];
#define FLYDESKTIMER 30
HTIMER Flydesktimer;
HTIMER FlySelectTimer;
UINT32 FlySet(WINDOW* win);
UINT32 FlyGlory(WINDOW* win);
UINT32 FlyHelp(WINDOW* win);
UINT32 SelectPlayer(WINDOW* win);
UINT32 FlyStart(WINDOW* win);
//UINT32 FlyPlayerSelectPaint( WINDOW* win , WMPARAM wParam, WLPARAM lParam )
//void SetTransColor(UINT32 COLOR)
/************************************************************************/
/* 颜色处理 */
/************************************************************************/
void SetTransColor(UINT32 COLOR)
{
gGuiDspTranspColor = COLOR;
}
/***************************************************************/
/************************************************************************/
/* 入口函数 */
/************************************************************************/
UINT32 GameStartFly(WINDOW* win , char * filePath , void* param)
{
win = WindowCreate(win ,
WS_FULLSCREEN | WS_TICK,
WID_FlyMain,
0, 0, 320, 240,
0,
BID_Fly_Mission01,
0, 0,
FlyProcMap,
NULL);
return 0;
}
/**************************************************************
说明 : 进入游戏的主界面
输入参数 : win 窗口指针,wParam WM_PAINT 消息, lParam没用
返回值 : 无
版本 日期 作者 改动内容和原因
*------------------------------------------------------
* 1.0 9/10/2007 lcy 基本的功能完成
***********************************************************************/
UINT32 FlyDeskboxPaint(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
W_FlyDeskPic *WdeskObj = (W_FlyDeskPic*)win->Data;
if (!(WIN_NEEDPAIT(win)))
return TRUE;
gGuiDspTranspColor = 0xFF00FF;
DrawPicture(WdeskObj->IconBmp); //游戏的背景图
DrawBmpIdEx(20, 15, BID_Fly_GameTitle, 0, DSPM_Transp); //游戏的标题
DrawBmpIdEx(140, 80, BID_Fly_StartSelect6, 0, DSPM_Transp); //游戏的选项
if (WdeskObj->flag) //游戏功能选择的闪耀处理
{
//DrawPicture(WdeskObj->IconBmp);
//DrawBmpIdEx( 20,15,BID_Fly_GameTitle, 0, DSPM_Transp );
DrawBmpIdEx(140, 80, (INT16U)(BID_Fly_StartSelect1 + WdeskObj->item), 0, DSPM_Transp);
}
WIN_CLEARPAIT(win);
return TRUE;
}
/**************************************************************
说明 : 游戏主窗口的创建
输入参数 : win 窗口指针,wParam WM_CREATE消息, lParam没用
返回值 : 无
版本 日期 作者 改动内容和原因
*------------------------------------------------------
* 1.0 9/10/2007 lcy 基本的功能完成
***********************************************************************/
UINT32 FlyDeskboxCreat(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
W_FlyDeskPic *WdeskObj = NULL;
WdeskObj = MallocClass(W_FlyDeskPic);
if (WdeskObj)
{
WdeskObj->IconBmp.BmpID = win->BmpID;
WdeskObj->IconBmp.X = win->x;
WdeskObj->IconBmp.Y = win->y;
WdeskObj->item = 0;
Flydesktimer = WinStartTimer(win, FLYDESKTIMER);
WdeskObj->flag = 0;
win->Data = WdeskObj;
}
DrawBmpId(0, 0, BID_Block_Back);
WindowInvalidateWindow(win);
return TRUE;
}
/**************************************************************
说明 : 游戏主界面窗口的销毁
输入参数 : win 窗口指针,wParam WM_DESTROY消息,lParam消息没用
返回值 : 无
版本 日期 作者 改动内容和原因
*------------------------------------------------------
* 1.0 9/10/2007 lcy 基本的功能完成
***********************************************************************/
UINT32 FlyDeskboxDestroy(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
W_FlyDeskPic *WdeskObj = (W_FlyDeskPic*)win->Data;
RockStopTimer(Flydesktimer);
FreeClass(WdeskObj);
//DspTskUpdateInit( DTSC_TRANSPS);
return WMPROC_UNHANDLE;
}
/**************************************************************
说明 : 游戏主界面窗口的按键控制
输入参数 : win 窗口指针,wParam WM_KEY消息,lParam消息没用
返回值 : 无
版本 日期 作者 改动内容和原因
*------------------------------------------------------
* 1.0 9/10/2007 lcy 基本的功能完成
***********************************************************************/
UINT32 FlyDeskboxKey(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
W_FlyDeskPic *WpicObj = (W_FlyDeskPic *)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 % 5;
}
break;
case KE_DN_RELEASE:
case KE_PREV_RELEASE:
{
WpicObj->item--;
if (WpicObj->item < 0)
WpicObj->item = 4;
else
WpicObj->item = WpicObj->item % 5;
}
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;
default:
break;
}
WindowInvalidateWindow(win);
return TRUE;
}
/***************************************************************/
UINT32 FlyDeskboxTimer(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
W_FlyDeskPic *WdeskObj = win->Data;
WdeskObj->flag = !WdeskObj->flag;
WindowInvalidateWindow(win);
return TRUE;
}
/**************************************************************
说明 : 游戏主界面窗口的菜单选中
输入参数 : win 窗口指针,wParam WM_COMMAND 消息, lParam没用
返回值 : 无
版本 日期 作者 改动内容和原因
*------------------------------------------------------
* 1.0 9/10/2007 lcy 基本的功能完成
***********************************************************************/
UINT32 FlySETCommandProc(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
INT16U ID = WM_CMD_GETCWID(wParam);
INT16U Event = WM_CMD_GETEVENT(wParam);
W_FlyDeskPic *WdeskObj = (W_FlyDeskPic *)win->Data;
if (EV_ItemSelect == Event)
{
switch (WdeskObj->item)
{
case 0:
SelectPlayer(win); //游戏开始,进入玩家选择界面
break;
case 1:
FlySet(win); //进入游戏设置界面
break;
case 2:
FlyGlory(win); //进入游戏积分排行界面
break;
case 3:
FlyHelp(win); //进入游戏帮助界面
break;
case 4:
WindowDestroy(win); // 退出游戏
break;
default:
break;
}
}
return TRUE;
}
/**************************************************************
说明 : 定义名为FlyProcMap的基本类窗口消息映射表,
每个消息对应一个处理函数。
输入参数 : 无
返回值 : 无
版本 日期 作者 改动内容和原因
*------------------------------------------------------
* 1.0 9/10/2007 lcy 基本的功能完成
***********************************************************************/
BEGIN_CHILDMESSAGE_MAP(FlyProcMap , CW_TYPE_fly)
ON_MESSAGE(WM_PAINT , FlyDeskboxPaint)
ON_MESSAGE(WM_DESTROY , FlyDeskboxDestroy)
ON_MESSAGE(WM_CREATE, FlyDeskboxCreat)
ON_MESSAGE(WM_KEY, FlyDeskboxKey)
ON_MESSAGE(WM_TIMER, FlyDeskboxTimer)
ON_MESSAGE(WM_COMMAND, FlySETCommandProc)
END_MESSAGE_MAP()
/**************************************************************
说明 : 进入玩家选择的界面显示
输入参数 : win 窗口指针,wParam WM_PAINT 消息, lParam没用
返回值 : 无
版本 日期 作者 改动内容和原因
*------------------------------------------------------
* 1.0 9/10/2007 lcy 基本的功能完成
***********************************************************************/
UINT32 FlyPlayerSelectPaint(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
UINT16 y ;
W_FlyPlayerPic *WplayerObj = (W_FlyPlayerPic*)win->Data;
if (!(WIN_NEEDPAIT(win)))
return TRUE;
DrawPicture(WplayerObj->IconBmp); //游戏的背景图
gGuiDspTranspColor = 0xFF00FF;
DrawBmpIdEx(82, 8, (INT16U)(BID_Fly_SelectPlayer1 + WplayerObj->item), 0, DSPM_Transp);
switch (WplayerObj->item)
{
case 0:
y = 106;
break; //第一玩家
case 1:
y = 64;
break; //第二玩家
case 2:
y = 22;
break; //第三玩家
default:
break;
}
if (WplayerObj->flag) //玩家选择的闪耀控制
{
gGuiDspTranspColor = 0xFF00FF;
DrawBmpIdEx(202, y, BID_Fly_SelectPlayer4, 0, DSPM_Transp);
}
else
{
gGuiDspTranspColor = 0xFF00FF;
DrawBmpIdEx(202, y, BID_Fly_SelectPlayer5, 0, DSPM_Transp);
}
WIN_CLEARPAIT(win);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -