示例#1
0
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;
}
示例#2
0
/*
 * 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);
}
示例#3
0
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;
}