/* * This is called to play sound * */ static gint bar_play_sound (GooCanvasItem *item) { int policy = gc_sound_policy_get(); gchar *str; gc_sound_policy_set(PLAY_ONLY_IF_IDLE); GComprisBarFlags flag = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT (item), "flag")); str = g_strdup_printf("voices/$LOCALE/misc/%s.ogg", bar_flags_to_name(flag)); gc_sound_play_ogg(str, NULL); g_free(str); gc_sound_policy_set(policy); sound_play_id = 0; return (FALSE); }
static void start_board (GcomprisBoard *agcomprisBoard) { if(agcomprisBoard!=NULL) { gcomprisBoard=agcomprisBoard; gcomprisBoard->level = 1; gcomprisBoard->maxlevel = 9; gc_bar_set(GC_BAR_LEVEL); /* Default mode */ if(!gcomprisBoard->mode){ currentMode=MODE_NORMAL; currentUiMode=UIMODE_NORMAL; currentBoardMode=BOARDMODE_NORMAL; } else { if(g_ascii_strcasecmp(gcomprisBoard->mode, "tux")==0){ currentMode=MODE_TUX; currentUiMode=UIMODE_NORMAL; currentBoardMode=BOARDMODE_NORMAL; } else { if(g_ascii_strcasecmp(gcomprisBoard->mode, "sound")==0){ currentMode=MODE_NORMAL; currentUiMode=UIMODE_SOUND; currentBoardMode=BOARDMODE_SOUND; } else { if(g_ascii_strcasecmp(gcomprisBoard->mode, "sound_tux")==0){ currentMode=MODE_TUX; currentUiMode=UIMODE_SOUND; currentBoardMode=BOARDMODE_SOUND; } else { if(g_ascii_strcasecmp(gcomprisBoard->mode, "add")==0){ currentMode=MODE_NORMAL; currentUiMode=UIMODE_NORMAL; currentBoardMode=BOARDMODE_ADD; } else { if(g_ascii_strcasecmp(gcomprisBoard->mode, "add_tux")==0){ currentMode=MODE_TUX; currentUiMode=UIMODE_NORMAL; currentBoardMode=BOARDMODE_ADD; } else { if(g_ascii_strcasecmp(gcomprisBoard->mode, "minus")==0){ currentMode=MODE_NORMAL; currentUiMode=UIMODE_NORMAL; currentBoardMode=BOARDMODE_MINUS; } else { if(g_ascii_strcasecmp(gcomprisBoard->mode, "minus_tux")==0){ currentMode=MODE_TUX; currentUiMode=UIMODE_NORMAL; currentBoardMode=BOARDMODE_MINUS; } else { if(g_ascii_strcasecmp(gcomprisBoard->mode, "mult")==0){ currentMode=MODE_NORMAL; currentUiMode=UIMODE_NORMAL; currentBoardMode=BOARDMODE_MULT; } else { if(g_ascii_strcasecmp(gcomprisBoard->mode, "mult_tux")==0){ currentMode=MODE_TUX; currentUiMode=UIMODE_NORMAL; currentBoardMode=BOARDMODE_MULT; } else { if(g_ascii_strcasecmp(gcomprisBoard->mode, "div")==0){ currentMode=MODE_NORMAL; currentUiMode=UIMODE_NORMAL; currentBoardMode=BOARDMODE_DIV; } else { if(g_ascii_strcasecmp(gcomprisBoard->mode, "div_tux")==0){ currentMode=MODE_TUX; currentUiMode=UIMODE_NORMAL; currentBoardMode=BOARDMODE_DIV; } else { if(g_ascii_strcasecmp(gcomprisBoard->mode, "add_minus")==0){ currentMode=MODE_NORMAL; currentUiMode=UIMODE_NORMAL; currentBoardMode=BOARDMODE_ADD_MINUS; } else { if(g_ascii_strcasecmp(gcomprisBoard->mode, "add_minus_tux")==0){ currentMode=MODE_TUX; currentUiMode=UIMODE_NORMAL; currentBoardMode=BOARDMODE_ADD_MINUS; } else { if(g_ascii_strcasecmp(gcomprisBoard->mode, "mult_div")==0){ currentMode=MODE_NORMAL; currentUiMode=UIMODE_NORMAL; currentBoardMode=BOARDMODE_MULT_DIV; } else { if(g_ascii_strcasecmp(gcomprisBoard->mode, "mult_div_tux")==0){ currentMode=MODE_TUX; currentUiMode=UIMODE_NORMAL; currentBoardMode=BOARDMODE_MULT_DIV; } else { if(g_ascii_strcasecmp(gcomprisBoard->mode, "add_minus_mult_div")==0){ currentMode=MODE_NORMAL; currentUiMode=UIMODE_NORMAL; currentBoardMode=BOARDMODE_ADD_MINUS_MULT_DIV; } else { if(g_ascii_strcasecmp(gcomprisBoard->mode, "add_minus_mult_div_tux")==0){ currentMode=MODE_TUX; currentUiMode=UIMODE_NORMAL; currentBoardMode=BOARDMODE_ADD_MINUS_MULT_DIV; } else { if(g_ascii_strcasecmp(gcomprisBoard->mode, "enumerate")==0){ currentMode=MODE_NORMAL; currentUiMode=UIMODE_NORMAL; currentBoardMode=BOARDMODE_ENUMERATE; } else { if(g_ascii_strcasecmp(gcomprisBoard->mode, "enumerate_tux")==0){ currentMode=MODE_TUX; currentUiMode=UIMODE_NORMAL; currentBoardMode=BOARDMODE_ENUMERATE; } else { if(g_ascii_strcasecmp(gcomprisBoard->mode, "wordnumber")==0){ currentMode=MODE_NORMAL; currentUiMode=UIMODE_NORMAL; currentBoardMode=BOARDMODE_WORDNUMBER; } else { if(g_ascii_strcasecmp(gcomprisBoard->mode, "wordnumber_tux")==0){ currentMode=MODE_TUX; currentUiMode=UIMODE_NORMAL; currentBoardMode=BOARDMODE_WORDNUMBER; } else { currentMode=MODE_NORMAL; currentUiMode=UIMODE_NORMAL; currentBoardMode=BOARDMODE_NORMAL; g_warning("Fallback mode set to images"); } } } } } } } } } } } } } } } } } } } } } } if (currentUiMode == UIMODE_SOUND) { GcomprisProperties *properties = gc_prop_get(); gc_sound_bg_pause(); /* initial state to restore */ sound_policy = gc_sound_policy_get(); // Will set the PLAY_AND_INTERRUPT policy on first // user click so that intro sounds is not gc_set_background(goo_canvas_get_root_item(gcomprisBoard->canvas), "memory/gcompris_band.svg"); base_x1 = BASE_SOUND_X1; base_y1 = BASE_SOUND_Y1; base_x2 = BASE_SOUND_X2; base_y2 = BASE_SOUND_Y2; base_x1_tux = BASE_SOUND_X1_TUX; if(!properties->fx) { gc_dialog(_("Error: this activity cannot be played with the\n" "sound effects disabled.\nGo to the configuration dialog to\n" "enable the sound"), gc_board_stop); return; } } else { if ((currentBoardMode==BOARDMODE_ENUMERATE)||(currentBoardMode==BOARDMODE_WORDNUMBER)) { gcomprisBoard->maxlevel = 6; } gc_set_background(goo_canvas_get_root_item(gcomprisBoard->canvas), "memory/scenery_background.png"); base_x1 = BASE_CARD_X1; base_y1 = BASE_CARD_Y1; base_x2 = BASE_CARD_X2; base_y2 = BASE_CARD_Y2; base_x1_tux = BASE_CARD_X1_TUX; } /* TRANSLATORS: Put here the numbers in your language */ numbers=_("0123456789"); g_assert(g_utf8_validate(numbers,-1,NULL)); // require by all utf8-functions /* TRANSLATORS: Put here the alphabet lowercase in your language */ alphabet_lowercase=_("abcdefghijklmnopqrstuvwxyz"); g_assert(g_utf8_validate(alphabet_lowercase,-1,NULL)); // require by all utf8-functions g_warning("Using lowercase %s", alphabet_lowercase); /* TRANSLATORS: Put here the alphabet uppercase in your language */ alphabet_uppercase=_("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); g_assert(g_utf8_validate(alphabet_uppercase,-1,NULL)); // require by all utf8-functions g_warning("Using uppercase %s", alphabet_uppercase); /* TRANSLATORS: Put here the mathematical operators '+-x/' for your language. */ operators=_("+-×÷"); g_assert(g_utf8_validate(operators,-1,NULL)); // require by all utf8-functions g_warning("Using operators %s", operators); op_add = g_malloc0(2*sizeof(gunichar)); g_utf8_strncpy(op_add, g_utf8_offset_to_pointer (operators,0),1); op_minus = g_malloc0(2*sizeof(gunichar)); g_utf8_strncpy(op_minus, g_utf8_offset_to_pointer (operators,1),1); op_mult = g_malloc0(2*sizeof(gunichar)); g_utf8_strncpy(op_mult, g_utf8_offset_to_pointer (operators,2),1); op_div = g_malloc0(2*sizeof(gunichar)); g_utf8_strncpy(op_div, g_utf8_offset_to_pointer (operators,3),1); g_warning("Using operators %s %s %s %s", op_add, op_minus, op_mult, op_div); if (currentMode == MODE_TUX){ tux_memory_size = tux_memory_sizes[gcomprisBoard->level]; tux_memory = g_queue_new (); } Paused = FALSE; memory_next_level(); } }