📄 games_main.c
字号:
ARGUMENTS PASSED:
RETURN VALUE:
IMPORTANT NOTES:
==================================================================================================*/
#ifdef GAMES_STARWAR
static void StarwarProcess
(
OP_UINT32 select_item
)
{
switch(select_item)
{
case 0:
App_change_state( &gamesApp_data.app,
(APP_SUBSTATE_STRUCTURE_NAME_T *)&games_substate,
(OP_UINT8) APP_GAMES_STARWAR_ENTER);
break;
case 1:
gamesApp_data.game_id=APP_GAMES_STARWAR;
App_change_state( &gamesApp_data.app,
(APP_SUBSTATE_STRUCTURE_NAME_T *)&games_substate,
(OP_UINT8) APP_GAMES_HELP);
break;
case 2:
gamesApp_data.game_id=APP_GAMES_STARWAR;
App_change_state( &gamesApp_data.app,
(APP_SUBSTATE_STRUCTURE_NAME_T *)&games_substate,
(OP_UINT8) APP_GAMES_HIGHSCORE);
break;
default:
break;
}
}
#endif
/*==================================================================================================
FUNCTION: FruitProcess
DESCRIPTION:
ARGUMENTS PASSED:
RETURN VALUE:
IMPORTANT NOTES:
==================================================================================================*/
#ifdef GAMES_FRUIT
static void FruitProcess
(
OP_UINT32 select_item
)
{
switch(select_item)
{
case 0:
App_change_state( &gamesApp_data.app,
(APP_SUBSTATE_STRUCTURE_NAME_T *)&games_substate,
(OP_UINT8) APP_GAMES_FRUIT_ENTER);
break;
case 1:
gamesApp_data.game_id=APP_GAMES_FRUIT;
App_change_state( &gamesApp_data.app,
(APP_SUBSTATE_STRUCTURE_NAME_T *)&games_substate,
(OP_UINT8) APP_GAMES_HELP);
break;
case 2:
gamesApp_data.game_id=APP_GAMES_FRUIT;
App_change_state( &gamesApp_data.app,
(APP_SUBSTATE_STRUCTURE_NAME_T *)&games_substate,
(OP_UINT8) APP_GAMES_HIGHSCORE);
break;
default:
break;
}
}
#endif
/*==================================================================================================
FUNCTION: tetrisProcess
DESCRIPTION:
ARGUMENTS PASSED:
RETURN VALUE:
IMPORTANT NOTES:
==================================================================================================*/
#ifdef GAMES_TETRIS
static void tetrisProcess
(
OP_UINT32 select_item
)
{
switch(select_item)
{
case 0:
App_change_state( &gamesApp_data.app,
(APP_SUBSTATE_STRUCTURE_NAME_T *)&games_substate,
(OP_UINT8) APP_GAMES_TETRIS_ENTER);
break;
case 1:
gamesApp_data.game_id=APP_GAMES_TETRIS;
App_change_state( &gamesApp_data.app,
(APP_SUBSTATE_STRUCTURE_NAME_T *)&games_substate,
(OP_UINT8) APP_GAMES_HELP);
break;
case 2:
gamesApp_data.game_id=APP_GAMES_TETRIS;
App_change_state( &gamesApp_data.app,
(APP_SUBSTATE_STRUCTURE_NAME_T *)&games_substate,
(OP_UINT8) APP_GAMES_HIGHSCORE);
break;
default:
break;
}
}
#endif
/*==================================================================================================
FUNCTION: setting_games_audio
DESCRIPTION:
Description of this specific function.
ARGUMENTS PASSED:
None
RETURN VALUE:
None
IMPORTANT NOTES:
None
==================================================================================================*/
static void setting_games_audio
(
OP_UINT32 para
)
{
OP_BOOLEAN is_audio_on;
switch (para)
{
case 0 :
is_audio_on = OP_TRUE;
break;
case 1 :
is_audio_on = OP_FALSE;
break;
case 2 :
default :
ds_popup_message(OP_NULL, (OP_UINT8 *)"TBD", DS_POPUP_DEFAULT_MSG_TIME);
return;
}
if ( RM_SetFeature(FEATURE_GAME_AUDIO_TURN_ON, (OP_BOOLEAN *)&is_audio_on) == RM_SUCCESS)
{
gamesApp_data.audio_on = is_audio_on;
}
gamesApp_data.menuControl.current_depth--;
gamesApp_data.menu = gamesApp_data.menuControl.menu_lists[gamesApp_data.menuControl.current_depth];
Games_change_state((OP_UINT8) APP_GAMES_STATE_NOTICE);
}
/*==================================================================================================
FUNCTION: Games_notice_enter
DESCRIPTION:
Entry function of APP_SETTING_STATE_NOTICE state.
Create a message popup.
ARGUMENTS PASSED:
You may omit description of parameters whose name is descriptive enough to understand
by reading the code without reading the description of arguments
RETURN VALUE:
None
IMPORTANT NOTES:NOne
==================================================================================================*/
static void Games_notice_enter
(
void
)
{
if (gamesApp_data.popupwin != OP_NULL)
{
ds_close_popup();
gamesApp_data.popupwin = OP_NULL;
}
/* create notification message popup */
gamesApp_data.popupwin = ds_popup_message_rm(NULL_PMPT, PMPT_MSG_CHANGED, DS_POPUP_DEFAULT_MSG_TIME);
}
/*==================================================================================================
FUNCTION: Games_notice_handler
DESCRIPTION:
Event handler of APP_DISPLAY_STATE_NOTICE state of display application.
ARGUMENTS PASSED:
event ---- the opus event
pMess ---- the message
handle ----
RETURN VALUE:
None
IMPORTANT NOTES:
None
==================================================================================================*/
static void Games_notice_handler
(
OPUS_EVENT_ENUM_TYPE event,
void *pMess,
OP_BOOLEAN *handle
)
{
DS_POPUP_PDEH_RET_ENUM_T popup_ret_state;
*handle = OP_TRUE;
if((event == OPUS_FOCUS_CUST_PAINT) &&
((pMess != OP_NULL) && (*((OP_BOOLEAN *)pMess) == OP_TRUE)))
{
Games_change_state(APP_GAMES_STATE_MENU);
return;
}
popup_ret_state = ds_pass_event_to_popup(gamesApp_data.popupwin, event, pMess);
if ( popup_ret_state == POPUP_CLOSE)
{
op_debug(DEBUG_HIGH,"\nnotice state\n");
OPUS_Stop_Timer(OPUS_TIMER_POPUP_MSG);
gamesApp_data.popupwin = OP_NULL;
if(event != OPUS_FOCUS_CUST_APP_PAUSE)
{
/*
* for CUST_PAUSE & CUST_PAINT pair events, when CUST_PAUSE received, we just close popup and stop timer,
* untill CUST_PAINT with messagebody == OP_TRUE received, when change sub-state to MENU.
*/
Games_change_state(APP_GAMES_STATE_MENU);
}
}
else if ( popup_ret_state != POPUP_PROC_EVENT)
{
*handle = OP_FALSE;
}
}
/*==================================================================================================
FUNCTION: clear_full_screen
DESCRIPTION:
Clear the full screen
ARGUMENTS PASSED:
RETURN VALUE:
IMPORTANT NOTES:
==================================================================================================*/
void clear_full_screen(DS_COLOR color)
{
/*wmemset((OP_UINT16 *)bitmap_buffer, ds.scrnAttr.win.bgColor, sizeof(bitmap_buffer)/sizeof(OP_UINT16));
set_update_region(0,0, LCD_MAX_X-1, LCD_MAX_Y-1);
UPDATESET(AREAMASK_BITMAP);*/
ds_clear_text();
ds_fill_rect(0,0, LCD_MAX_X-1, LCD_TEXT_HIGH-1, color);
}
void close_old_popup(void)
{
KEYEVENT_STRUCT key_end;
key_end.code = KEY_END;
if (gamesApp_data.popupwin!= OP_NULL)
{
if (gamesApp_data.popupwin->type == POPUP_MSG)
{
ds_pass_event_to_popup(gamesApp_data.popupwin, OPUS_TIMER_POPUP_MSG, OP_NULL);
OPUS_Stop_Timer(OPUS_TIMER_POPUP_MSG);
}
else
{
if(gamesApp_data.popupwin->handle != PHANDLE_NONE)
{
gamesApp_data.popupwin->state = PS_NONE_S;
}
ds_pass_event_to_popup(gamesApp_data.popupwin, OPUS_FOCUS_KEYPAD, &key_end);
}
gamesApp_data.popupwin= OP_NULL;
}
}
/*==================================================================================================
GLOBAL FUNCTIONS
==================================================================================================*/
/*==================================================================================================
FUNCTION: Games_change_state
DESCRIPTION:
Display app util function to change state.
ARGUMENTS PASSED:
new_state ---- change to state
RETURN VALUE:
None
IMPORTANT NOTES:
None
==================================================================================================*/
void Games_change_state
(
OP_UINT8 new_state
)
{
App_change_state( (APP_DATA_STRUCTURE_NAME_T *)&gamesApp_data.app,
(APP_SUBSTATE_STRUCTURE_NAME_T *)&games_substate,
new_state);
}
/*==================================================================================================
FUNCTION: GAMES_Start
DESCRIPTION:
ARGUMENTS PASSED:
RETURN VALUE:
IMPORTANT NOTES:
==================================================================================================*/
void GAMES_Start
(
OPUS_EVENT_ENUM_TYPE event,
void *pMess
)
{
/* Initialize App's data */
op_memset(&gamesApp_data, 0x00, sizeof(gamesApp_data));
gamesApp_data.app.app_id = APP_GAMES;
gamesApp_data.app.cur_state = APP_GAMES_MAX_STATE;
gamesApp_data.menu = &games_main_menu_tier;
gamesApp_data.volume = SP_GetVolume( BELL_LEVEL_ID ).LEVEL;
if(RM_GetFeature(FEATURE_GAME_AUDIO_TURN_ON,(OP_BOOLEAN *)&gamesApp_data.audio_on) == RM_SUCCESS)
{
if (gamesApp_data.audio_on == OP_TRUE)
{
games_audio_menu_tier.set_val = 0;
}
else
{
games_audio_menu_tier.set_val = 1;
}
}
op_debug(DEBUG_MED, "GAMES APP STARTED ");
Games_change_state((OP_UINT8) APP_GAMES_STATE_MENU);
/* Set the state to default state */
}
/*==================================================================================================
FUNCTION: GAMES_Exit
DESCRIPTION:
ARGUMENTS PASSED:
RETURN VALUE:
IMPORTANT NOTES:
==================================================================================================*/
void GAMES_Exit( void)
{
op_debug(DEBUG_MED, "GAMES APP EXITED ");
close_old_popup();
App_Exit( (APP_DATA_STRUCTURE_NAME_T *)&gamesApp_data.app,
(APP_SUBSTATE_STRUCTURE_NAME_T *)&games_substate);
}
/*================================================================================================*/
#ifdef __cplusplus
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -