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

📄 game.c

📁 MTK平台中可移植的五子棋游戏
💻 C
📖 第 1 页 / 共 3 页
字号:
    /*----------------------------------------------------------------*/
	
#ifdef __BR_LOW_COST_MODE__
		if( !mmi_settings_allow_changing())
		{
			return;
		}
#endif
    /* load setting */
#if defined(__MMI_GAME__)
    mmi_gfx_load_setting();
#endif 

    EntryNewScreen(SCR_ID_GAME_SETTING, mmi_game_exit_setting_screen, NULL, NULL);

   /***************************************************************************** 
   * Game  
   *****************************************************************************/
#if defined(__MMI_GAME__)
    /* TRUE (1) is on */
#ifdef __MMI_GAME_MULTICHANNEL_SOUND__
    g_mmi_game_cntx.bgm_selected = GFX.is_background_music_on;
    g_mmi_game_cntx.sound_effect_selected = GFX.is_sound_effect_on;
#else /* __MMI_GAME_MULTICHANNEL_SOUND__ */ 
    g_mmi_game_cntx.aud_selected = GFX.is_aud_on;
#endif /* __MMI_GAME_MULTICHANNEL_SOUND__ */ 

    g_mmi_game_cntx.vib_selected = GFX.is_vib_on;

#ifdef __MMI_GAME_MULTICHANNEL_SOUND__
    g_mmi_game_cntx.background_music_str[0] = (UI_string_type) GetString((U16) (STR_GLOBAL_OFF));
    g_mmi_game_cntx.background_music_str[1] = (UI_string_type) GetString((U16) (STR_GLOBAL_ON));
    g_mmi_game_cntx.sound_effect_str[0] = (UI_string_type) GetString((U16) (STR_GLOBAL_OFF));
    g_mmi_game_cntx.sound_effect_str[1] = (UI_string_type) GetString((U16) (STR_GLOBAL_ON));
#else /* __MMI_GAME_MULTICHANNEL_SOUND__ */ 
    g_mmi_game_cntx.aud_str[0] = (UI_string_type) GetString((U16) (STR_GLOBAL_OFF));
    g_mmi_game_cntx.aud_str[1] = (UI_string_type) GetString((U16) (STR_GLOBAL_ON));
#endif /* __MMI_GAME_MULTICHANNEL_SOUND__ */ 
    g_mmi_game_cntx.vib_str[0] = (UI_string_type) GetString((U16) (STR_GLOBAL_OFF));
    g_mmi_game_cntx.vib_str[1] = (UI_string_type) GetString((U16) (STR_GLOBAL_ON));

    memset((void*)g_mmi_game_cntx.inline_game_items, 0, sizeof(InlineItem) * MMI_GAME_SETTING_ITEM_COUNT * 2);

    InitializeCategory57Screen();

#ifdef __MMI_GAME_MULTICHANNEL_SOUND__
    /* background music */
    SetInlineItemCaption(
        &g_mmi_game_cntx.inline_game_items[item_offset++],
        (PU8) GetString((U16) (STR_ID_GAME_SETTING_MULTICHANNEL_BACKGROUND_MUSIC)));

    SetInlineItemActivation(&g_mmi_game_cntx.inline_game_items[item_offset], INLINE_ITEM_ACTIVATE_WITHOUT_KEY_EVENT, 0);

    SetInlineItemSelect(
        &g_mmi_game_cntx.inline_game_items[item_offset++],
        2,
        (U8 **) g_mmi_game_cntx.background_music_str,
        &g_mmi_game_cntx.bgm_selected);

    /* sound effect */
    SetInlineItemCaption(
        &g_mmi_game_cntx.inline_game_items[item_offset++],
        (PU8) GetString((U16) (STR_ID_GAME_SETTING_MULTICHANNEL_SOUND_EFFECT)));

    SetInlineItemActivation(&g_mmi_game_cntx.inline_game_items[item_offset], INLINE_ITEM_ACTIVATE_WITHOUT_KEY_EVENT, 0);

    SetInlineItemSelect(
        &g_mmi_game_cntx.inline_game_items[item_offset++],
        2,
        (U8 **) g_mmi_game_cntx.sound_effect_str,
        &g_mmi_game_cntx.sound_effect_selected);

#else /* __MMI_GAME_MULTICHANNEL_SOUND__ */ 
    /* game audio */
    SetInlineItemCaption(
        &g_mmi_game_cntx.inline_game_items[item_offset++],
        (PU8) GetString((U16) (STR_ID_GAME_SETTING_AUD)));

    SetInlineItemActivation(&g_mmi_game_cntx.inline_game_items[item_offset], INLINE_ITEM_ACTIVATE_WITHOUT_KEY_EVENT, 0);

    SetInlineItemSelect(
        &g_mmi_game_cntx.inline_game_items[item_offset++],
        2,
        (U8 **) g_mmi_game_cntx.aud_str,
        &g_mmi_game_cntx.aud_selected);

#endif /* __MMI_GAME_MULTICHANNEL_SOUND__ */ 
    /* game vib */
    SetInlineItemCaption(
        &g_mmi_game_cntx.inline_game_items[item_offset++],
        (PU8) GetString((U16) (STR_ID_GAME_SETTING_VIB)));

    SetInlineItemActivation(&g_mmi_game_cntx.inline_game_items[item_offset], INLINE_ITEM_ACTIVATE_WITHOUT_KEY_EVENT, 0);

    SetInlineItemSelect(
        &g_mmi_game_cntx.inline_game_items[item_offset++],
        2,
        (U8 **) g_mmi_game_cntx.vib_str,
        &g_mmi_game_cntx.vib_selected);

#endif /* defined(__MMI_GAME__) */ 

    guiBuffer = GetCurrGuiBuffer(SCR_ID_GAME_SETTING);
    inputBuffer = GetCurrNInputBuffer(SCR_ID_GAME_SETTING, &inputBufferSize);

    if (inputBuffer != NULL)
    {
        SetCategory57Data(g_mmi_game_cntx.inline_game_items, MMI_GAME_SETTING_ITEM_COUNT * 2, inputBuffer);
    }

    RegisterHighlightHandler(mmi_game_setting_highlight_hdlr);

    /* show category */
    ShowCategory57Screen(
        STR_ID_GAME_SETTING,
        MAIN_MENU_TITLE_FUNANDGAMES_ICON,
        STR_GLOBAL_OK,
        IMG_GLOBAL_OK,
        STR_GLOBAL_BACK,
        IMG_GLOBAL_BACK,
        item_offset,
        item_icons,
        g_mmi_game_cntx.inline_game_items,
        0,
        guiBuffer);

    /* set key hdlr */
    SetCategory57LeftSoftkeyFunction(mmi_game_setting_done_hdlr);
    SetCategory57RightSoftkeyFunctions(GoBackHistory, GoBackHistory);
    DisableCategory57ScreenDone();
#endif /* defined(__MMI_GAME__) */ 
}


/*****************************************************************************
 * FUNCTION
 *  mmi_game_setting_done_hdlr
 * DESCRIPTION
 *  done hdlr for game setting
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
static void mmi_game_setting_done_hdlr(void)
{
#if defined(__MMI_GAME__)
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    /* game effect */
#ifdef __MMI_GAME_MULTICHANNEL_SOUND__
    GFX.is_background_music_on = g_mmi_game_cntx.bgm_selected;
    GFX.is_sound_effect_on = g_mmi_game_cntx.sound_effect_selected;
#else /* __MMI_GAME_MULTICHANNEL_SOUND__ */ 
    GFX.is_aud_on = g_mmi_game_cntx.aud_selected;
#endif /* __MMI_GAME_MULTICHANNEL_SOUND__ */ 
    GFX.is_vib_on = g_mmi_game_cntx.vib_selected;
    mmi_gfx_store_setting();

    DisplayPopup((PU8) GetString(STR_GLOBAL_DONE), IMG_GLOBAL_ACTIVATED, 1, ST_NOTIFYDURATION, SUCCESS_TONE);
    DeleteNHistory(1);
#endif /* defined(__MMI_GAME__) */ 
}


/*****************************************************************************
 * FUNCTION
 *  mmi_game_setting_highlight_hdlr
 * DESCRIPTION
 *  highlight hdlr
 * PARAMETERS
 *  index       [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
static void mmi_game_setting_highlight_hdlr(S32 index)
{
#if defined(__MMI_GAME__)
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    ChangeLeftSoftkey(STR_GLOBAL_OK, IMG_GLOBAL_OK);
    SetCategory57LeftSoftkeyFunction(mmi_game_setting_done_hdlr);
#endif /* defined(__MMI_GAME__) */ 
}


/*****************************************************************************
 * FUNCTION
 *  mmi_game_exit_setting_screen
 * DESCRIPTION
 *  exit point for game setting screen
 * PARAMETERS
 *  void
 *  viud(?)     [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
static void mmi_game_exit_setting_screen(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    U16 inputBufferSize;
    history h;
    S16 nHistory = 0;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    h.scrnID = SCR_ID_GAME_SETTING;
    CloseCategory57Screen();
    h.entryFuncPtr = mmi_game_entry_setting_screen;
    pfnUnicodeStrcpy((S8*) h.inputBuffer, (S8*) & nHistory);
    GetCategory57History(h.guiBuffer);
    inputBufferSize = (U16) GetCategory57DataSize();
    GetCategory57Data((U8*) h.inputBuffer);
    AddNHistory(h, inputBufferSize);

}


#ifdef __MMI_GAME_MULTI_LANGUAGE_SUPPORT__
/*****************************************************************************
 * FUNCTION
 *  ColorBall_Get_Current_Language_Index
 * DESCRIPTION
 *  get current language index
 * PARAMETERS
 *  void
 * RETURNS
 * BOOL
 *****************************************************************************/
U16 mmi_gfx_get_current_language_index()
{
    U8 i;
    
    for (i = MMI_GAME_LANGUAGE0 ; i < MMI_GAME_LANGUAGE_TATAL ; i++)
    {
        if(strcmp((PS8)mtk_gLanguageArray[gCurrLangIndex].aLangSSC, (PS8)g_mmi_game_language_mapping_table[i].aLangSSC) == 0)
            return i;
    }

    return 0;
}


/*****************************************************************************
 * FUNCTION
 *  ColorBalls_Get_Current_Language_Image_ID
 * DESCRIPTION
 *  get image id of current language
 * PARAMETERS
 *  void
 *  viod(?)
 * RETURNS
 *  void
 *****************************************************************************/
U16 mmi_gfx_get_multilanguage_image_ID(
        MMI_GAME_MULTI_LANGUAGE_ENUM language, 
        U16 image_ID_base, 
        U16 total_string_count, 
        U16 string_number)
{

    return (image_ID_base + language*total_string_count + string_number);
}


/*****************************************************************************
 * FUNCTION
 *  ColorBalls_Check_Image_Validity
 * DESCRIPTION
 *  check image in current language is valid or not, and get valid language
 * PARAMETERS
 *  void
 *  viod(?)
 * RETURNS
 *  void
 *****************************************************************************/
BOOL mmi_gfx_check_image_get_valid_language(
            U16 *game_language_index, 
            U16 image_ID_base, 
            U16 total_string_count)
{
    U8 *pData = NULL;
    BOOL image_validate = TRUE;
    U8  first_valid_language_index;
    U16 image_handle;
    U8 i;

    for (i = 0 ; i < total_string_count ; i++)
    {
        image_handle = (*game_language_index) * total_string_count + image_ID_base + i;
        pData = (PU8)GetImage(image_handle);    
        if (pData == MMI_GAME_DEFAULT_IMAGE_BMP|| pData == MMI_GAME_EMPTYIMAGE_BMP)
        {
            image_validate = FALSE;
            break;
        }      
    }
    
    if(image_validate == FALSE)
    {
        first_valid_language_index = mmi_gfx_get_fisrt_valid_language_index();
        *game_language_index= first_valid_language_index;
    }
        
    return TRUE;
}


/*****************************************************************************
 * FUNCTION
 *  ColorBalls_Get_Fisrt_Valid_Language_Index
 * DESCRIPTION
 *  get first valid language index
 * PARAMETERS
 *  void
 *  viod(?)
 * RETURNS
 *  void
 *****************************************************************************/
U8 mmi_gfx_get_fisrt_valid_language_index()
{
    U32 i;
        
    for(i = MMI_GAME_LANGUAGE0 ; i < MMI_GAME_LANGUAGE_TATAL ; i++)
    {
        if(strlen((PS8)g_mmi_game_language_mapping_table[i].aLangSSC) != 0)
        {
            return i;
        }
    }

    return MMI_GAME_LANGUAGE0;
}
#endif /* __MMI_GAME_MULTI_LANGUAGE_SUPPORT__ */

#endif /* __MMI_GAME__ */ 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -