void fault_localizationt::localize_linear(lpointst &lpoints) { lpoints_valuet v; v.resize(lpoints.size()); for(size_t i=0; i<lpoints.size(); ++i) v[i]=tvt(tvt::tv_enumt::TV_UNKNOWN); for(size_t i=0; i<v.size(); ++i) { v[i]=tvt(tvt::tv_enumt::TV_TRUE); if(!check(lpoints, v)) update_scores(lpoints, v); v[i]=tvt(tvt::tv_enumt::TV_FALSE); if(!check(lpoints, v)) update_scores(lpoints, v); v[i]=tvt(tvt::tv_enumt::TV_UNKNOWN); } }
/* set initial values for the next level */ static void memory_next_level() { gc_bar_set_level(gcomprisBoard); to_tux = FALSE; if (currentUiMode == UIMODE_SOUND){ /* We play a sound here to cancel any pending sounds callback from a previous play */ playing_sound = TRUE; gc_sound_play_ogg_cb("memory/LRBuddhist_gong_05_LA.ogg",start_callback); } else playing_sound = FALSE; memory_destroy_all_items(); boardRootItem = goo_canvas_group_new (goo_canvas_get_root_item(gcomprisBoard->canvas), NULL); numberOfColumn = levelDescription[gcomprisBoard->level*2]; numberOfLine = levelDescription[gcomprisBoard->level*2+1]; remainingCards = numberOfColumn * numberOfLine; gcomprisBoard->number_of_sublevel=1; gcomprisBoard->sublevel=0; create_item(boardRootItem); lock_user = FALSE; if (currentMode == MODE_TUX){ tux_memory_size = tux_memory_sizes[gcomprisBoard->level]; g_warning("tux_memory_size %d", tux_memory_size ); tux_pairs = 0; player_pairs = 0; update_scores(); } }
/* * Used to hide card after a timer * */ static gint hide_card (GtkWidget *widget, gpointer data) { if (currentMode == MODE_TUX){ GList *list = NULL; GList *to_remove = NULL; for (list = winning_pairs; list != NULL; list=list->next) if ((((WINNING *) list->data)->first == firstCard) || (((WINNING *) list->data)->first == secondCard) || (((WINNING *) list->data)->second == firstCard) || (((WINNING *) list->data)->second == secondCard) ){ to_remove = g_list_append( to_remove, list->data); } for (list = to_remove; list != NULL; list=list->next){ void *data = list->data; winning_pairs = g_list_remove (winning_pairs, list->data); g_free (data); g_warning("Again %d winning pairs in tux list! ", g_list_length(winning_pairs)); } g_list_free(to_remove); if (to_tux) tux_pairs++; else player_pairs++; update_scores(); } if(firstCard!=NULL) { display_card(firstCard, HIDDEN); if (currentMode == MODE_TUX) remove_card_from_tux_memory(firstCard); firstCard = NULL; } if(secondCard!=NULL) { display_card(secondCard, HIDDEN); if (currentMode == MODE_TUX) remove_card_from_tux_memory(secondCard); secondCard = NULL; } win_id = 0; remainingCards -= 2; if(remainingCards<=0){ if (currentMode == MODE_TUX){ if (tux_id){ g_source_remove(tux_id); tux_id = 0; to_tux = FALSE; } } player_win(); } return (FALSE); }