static void end_board () { if (currentUiMode == UIMODE_SOUND) { gc_sound_policy_set(sound_policy); gc_sound_bg_resume(); } if(gcomprisBoard!=NULL) { pause_board(TRUE); memory_destroy_all_items(); if (currentMode == MODE_TUX){ if (tux_memory) g_queue_free(tux_memory); tux_memory = NULL; } } g_free(op_add); op_add = NULL; g_free(op_minus); op_minus = NULL; g_free(op_mult); op_mult = NULL; g_free(op_div); op_div = NULL; gcomprisBoard = NULL; }
/* * 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 gboolean item_event (GooCanvasItem *item, GooCanvasItem *target, GdkEventButton *event, MemoryItem *memoryItem) { if(!gcomprisBoard) return FALSE; if (currentUiMode == UIMODE_SOUND) gc_sound_policy_set(PLAY_AND_INTERRUPT); if (event->type != GDK_BUTTON_PRESS || event->button != 1) return FALSE; if (currentMode == MODE_TUX){ if (to_tux || lock_user){ g_warning("He ! it's tux turn !"); return FALSE; } } if (playing_sound){ g_warning("wait a minute, the sound is playing !"); //return FALSE; } if(win_id) return FALSE; if (currentUiMode == UIMODE_NORMAL) gc_sound_play_ogg ("sounds/bleep.wav", NULL); if(secondCard) { display_card(firstCard, ON_BACK); firstCard = NULL; display_card(secondCard, ON_BACK); secondCard = NULL; } if(!firstCard) { firstCard = memoryItem; if (currentMode == MODE_TUX) add_card_in_tux_memory(memoryItem); display_card(memoryItem, ON_FRONT); return TRUE; } else { // Check he/she did not click on the same card twice if(firstCard==memoryItem) return FALSE; secondCard = memoryItem; if (currentMode == MODE_TUX) add_card_in_tux_memory(memoryItem); display_card(memoryItem, ON_FRONT); if (currentUiMode == UIMODE_SOUND) { // Check win is called from callback return // The user lost, make sure she won't play again before tux lock_user = TRUE; return TRUE; } else { check_win(); return TRUE; } } return FALSE; }