static void end_board () { if(gcomprisBoard!=NULL) { pause_board(TRUE); gc_score_end(); #if GLIB_CHECK_VERSION(2, 31, 0) g_mutex_lock (&items_lock); #else g_static_mutex_lock (&items_lock); #endif wordsgame_destroy_all_items(); #if GLIB_CHECK_VERSION(2, 31, 0) g_mutex_unlock (&items_lock); #else g_static_mutex_unlock (&items_lock); #endif if (preedit_text){ goo_canvas_item_remove(preedit_text); preedit_text=NULL; } gc_im_reset(); gcomprisBoard = NULL; if (gc_wordlist != NULL){ gc_wordlist_free(gc_wordlist); gc_wordlist = NULL; } } gc_locale_set( NULL ); }
/* Called with items_lock locked */ static void wordsgame_next_level_unlocked() { gcomprisBoard->number_of_sublevel = 10 + ((gcomprisBoard->level-1) * 5); gc_score_start(SCORESTYLE_NOTE, BOARDWIDTH - 195, BOARDHEIGHT - 30, gcomprisBoard->number_of_sublevel); gc_bar_set_level(gcomprisBoard); gc_score_set(gcomprisBoard->sublevel); wordsgame_destroy_all_items(); if (preedit_text){ goo_canvas_item_remove(preedit_text); preedit_text=NULL; } gc_im_reset(); items=g_ptr_array_new(); items2del=g_ptr_array_new(); /* Increase speed only after 5 levels */ if(gcomprisBoard->level > 5) { gint temp = fallSpeed-gcomprisBoard->level*200; if (temp > MIN_FALLSPEED) fallSpeed=temp; } pause_board(FALSE); }
static gint key_press(guint keyval, gchar *commit_str, gchar *preedit_str) { gint length_passed, i; if(!gcomprisBoard) return FALSE; /* i suppose even numbers are passed through IM_context */ if ((commit_str == NULL) && (preedit_str == NULL)) return FALSE; gchar *string_passed; if (commit_str) string_passed = commit_str; else string_passed = preedit_str; length_passed = g_utf8_strlen(string_passed, -1); for (i=0; i < length_passed; i++){ gunichar ckey = \ g_unichar_tolower( g_utf8_get_char (string_passed) ); gunichar cright = \ g_unichar_tolower( g_utf8_get_char (right_letter) ); if (ckey == cright){ gamewon = TRUE; process_ok(); gc_im_reset(); return TRUE; } string_passed = g_utf8_next_char (string_passed); } return TRUE; }
static gint key_press(guint keyval, gchar *commit_str, gchar *preedit_str) { gint length_passed, i; gunichar c; gchar list_of_letters[255]; gchar *str; if(!gcomprisBoard) return FALSE; /* i suppose even numbers are passed through IM_context */ if ((commit_str == NULL) && (preedit_str == NULL)) return FALSE; gchar *string_passed; if (commit_str) string_passed = commit_str; else string_passed = preedit_str; str = g_strdup(string_passed); length_passed = g_utf8_strlen(string_passed, -1); for (i=0; i < length_passed; i++){ c = g_utf8_get_char (string_passed); if (is_falling_letter(c)){ gc_im_reset(); return TRUE; } /* if uppercase_only is set we do not care about upper or lower case at all */ gint level_uppercase; if (uppercase_only) level_uppercase = 10; else level_uppercase = 3; /* for 2 (or all) first level don't care abour uppercase/lowercase */ if ((gcomprisBoard->level < level_uppercase) && (is_falling_letter(g_unichar_toupper(c)))){ gc_im_reset(); return TRUE; } string_passed = g_utf8_next_char (string_passed); } list_of_letters[0] = '\0'; /* We have to loop to concat the letters */ g_hash_table_foreach (letters_table, (GHFunc) add_char, list_of_letters); /* Log what happened, what was expected, what we got */ gc_log_set_comment(gcomprisBoard, list_of_letters, str); g_free(str); return TRUE; }