⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 games_main.c

📁 几个嵌入式手机平台小游戏c源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
        

    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 + -