X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=ball%2Fst_set.c;h=663e9d5ac01ad71786cd21ce6ef31b52f8dcb9c4;hb=9a5b5f027b27b45b4926604f48cf00904b37ec64;hp=c888b25a1f9705a1a91a1054ff458121f282a332;hpb=67156aab90684cabec02e152af202e0e69e063c9;p=neverball diff --git a/ball/st_set.c b/ball/st_set.c index c888b25..663e9d5 100644 --- a/ball/st_set.c +++ b/ball/st_set.c @@ -27,13 +27,17 @@ /*---------------------------------------------------------------------------*/ -#define SET_GROUP 5 /* number of sets in one screen */ +#define SET_STEP 5 -static int last_set = 0; +static int total = 0; +static int first = 0; static int shot_id; static int desc_id; +static int do_init = 1; +static int do_init_audio = 1; + static int set_action(int i) { audio_play(AUD_MENU, 1.0f); @@ -41,65 +45,128 @@ static int set_action(int i) switch (i) { case GUI_BACK: + set_free(); return goto_state(&st_title); + break; case GUI_PREV: - last_set = (last_set / SET_GROUP - 1) * SET_GROUP; + + first -= SET_STEP; + + do_init = 0; return goto_state(&st_set); + break; + case GUI_NEXT: - last_set = (last_set / SET_GROUP + 1) * SET_GROUP; + + first += SET_STEP; + + do_init = 0; return goto_state(&st_set); + break; + + case GUI_OFFIC: + + first = 0; + + config_set_d(CONFIG_SHOW_CONTRIBUTIONS, 0); + + do_init = 1; + do_init_audio = 0; + return goto_state(&st_set); + + break; + + case GUI_CONTRIB: + + first = 0; + + config_set_d(CONFIG_SHOW_CONTRIBUTIONS, 1); + + do_init = 1; + do_init_audio = 0; + return goto_state(&st_set); + + break; + case GUI_NULL: return 1; + break; default: - if (set_exists(i)) + if (set_exists(i, 0)) { - last_set = i; set_goto(i); return goto_state(&st_start); } } + return 1; } -static void gui_set(int id, int i) +static int gui_set(int id, int i) { - const struct set *s = get_set(i); - int jd; - - if (set_completed(s)) - jd = gui_label(id, _(s->name), GUI_SML, GUI_ALL, gui_yel, gui_wht); - else if (set_unlocked(s)) - jd = gui_label(id, _(s->name), GUI_SML, GUI_ALL, gui_grn, gui_wht); + if (set_exists(i, config_get_d(CONFIG_SHOW_CONTRIBUTIONS) + 1)) + { + gui_state(id, set_name(i), GUI_SML, i, 0); + return 1; + } else - jd = gui_label(id, _(s->name), GUI_SML, GUI_ALL, gui_wht, gui_wht); - - gui_active(jd, i, 0); + { + return 0; + } + return 0; } static int set_enter(void) { int w = config_get_d(CONFIG_WIDTH); int h = config_get_d(CONFIG_HEIGHT); - int b = last_set / SET_GROUP; - int i; int id, jd, kd; - set_init(); + int i; + + int j, n; + j = n = 0; + + for(i = 0; i < MAXSET; i++) + { + if (set_exists(i, 2)) + { + n = 1; + break; + } + n = 0; + } - /* Reset last set if it does not exist */ - if (!set_exists(last_set)) + if (do_init) { - b = 0; - last_set = 0; + total = set_init(config_get_d(CONFIG_SHOW_CONTRIBUTIONS)); + if (do_init_audio) + { + audio_music_fade_to(0.5f, "bgm/inter.ogg"); + audio_play(AUD_START, 1.f); + /* We need to recheck for contributions on true initialization */ + for(i = 0; i < MAXSET; i++) + { + if (set_exists(i, 2)) + { + n = 1; + break; + } + n = 0; + } + } } - audio_music_fade_to(0.5f, "bgm/inter.ogg"); - audio_play(AUD_START, 1.f); + if(config_get_d(CONFIG_SHOW_CONTRIBUTIONS)) + n = 1; + + do_init_audio = 1; + do_init = 1; if ((id = gui_vstack(0))) { @@ -107,23 +174,25 @@ static int set_enter(void) { gui_label(jd, _("Level Set"), GUI_SML, GUI_ALL, gui_yel, gui_red); gui_filler(jd); - gui_back_prev_next(jd, b > 0, set_exists((b + 1) * SET_GROUP)); + gui_back_prev_next(jd, first > 0, first + SET_STEP < total, n); } if ((jd = gui_harray(id))) { - shot_id = gui_image(jd, get_set(last_set)->shot, - 7 * w / 16, 7 * h / 16); + shot_id = gui_image(jd, set_shot(first), 7 * w / 16, 7 * h / 16); if ((kd = gui_varray(jd))) { - /* Display sets */ - for (i = b * SET_GROUP; i < (b + 1) * SET_GROUP && set_exists(i); i++) - gui_set(kd, i); - - /* Display empty slots */ - for(; i < (b + 1) * SET_GROUP; i++) - gui_filler(kd); + for (i = first; i < MAXSET; i++) + { + if(j==5) + break; + j += gui_set(kd, i); + } + for (i = 0; i < 5 - j && i < MAXSET; i++) + { + gui_label(kd, "", GUI_SML, GUI_ALL, 0, 0); + } } } @@ -138,15 +207,15 @@ static int set_enter(void) static void set_over(int i) { - gui_set_image(shot_id, get_set(i)->shot); - gui_set_multi(desc_id, _(get_set(i)->desc)); + gui_set_image(shot_id, set_shot(i)); + gui_set_multi(desc_id, set_desc(i)); } static void set_point(int id, int x, int y, int dx, int dy) { int jd = shared_point_basic(id, x, y); int i = gui_token(jd); - if (jd && set_exists(i)) + if (jd && set_exists(i, 0)) set_over(i); } @@ -154,7 +223,7 @@ static void set_stick(int id, int a, int v) { int jd = shared_stick_basic(id, a, v); int i = gui_token(jd); - if (jd && set_exists(i)) + if (jd && set_exists(i, 0)) set_over(i); } @@ -179,6 +248,7 @@ struct state st_set = { shared_timer, set_point, set_stick, + shared_angle, shared_click, NULL, set_buttn,