#include #include #include #include "GUI_connect_more.h" #include "GUI_keyboard.h" #include "GUI_common.h" #include "CORE_general.h" #include "gfx/all_gfx.h" /* Possible actions */ #define BACK 0 #define PLAY 1 /******** PRIVATE ********/ static void priv_load_sprites(u8 screen); static void priv_del_sprites(u8 screen); static u8 priv_touched(u8 icon); static u8 priv_selected(u8 icon); /*************************/ /* The connect menu process function */ void gui_connect_more(void){ static connect_more_state_t localstate = CONNECT_MORE_INIT; static char more_pad_num[4] = {0,0,0,0}; switch(localstate){ case CONNECT_MORE_INIT: PA_EasyBgLoad(DSCR, 3, BG_keyboard); keyboard_view(); priv_load_sprites(DSCR); sprintf(more_pad_num, "%d", Env.pad_number); localstate = CONNECT_MORE_FADEIN; break; case CONNECT_MORE_FADEIN: if(fadein(DSCR)) return; localstate = CONNECT_MORE_SELECT; commons_move_in(); break; case CONNECT_MORE_SELECT: keyboard_num_read(more_pad_num, sizeof(more_pad_num), 0); if(priv_selected(BACK)){ Env.next_state = APP_CONNECT; localstate = CONNECT_MORE_MOVEOUT; } else if(priv_selected(PLAY)){ if( (atoi(more_pad_num) > 0) && (atoi(more_pad_num) <= 255) ){ Env_SetPad(atoi(more_pad_num)); Env.next_state = APP_PLAY; if(network_connect(&(Env.network))) localstate = CONNECT_MORE_MOVEOUT; } } break; case CONNECT_MORE_MOVEOUT: commons_move_out(); localstate = CONNECT_MORE_FADEOUT; case CONNECT_MORE_FADEOUT: if(fadeout(DSCR)) return; localstate = CONNECT_MORE_CLEAR; break; case CONNECT_MORE_CLEAR: keyboard_hide(); priv_del_sprites(DSCR); PA_DeleteBg(DSCR, 3); localstate = CONNECT_MORE_INIT; Env.current_state = Env.next_state; break; } return; } /*------------------------------- Private -------------------------------*/ /* Private sprite loading */ static void priv_load_sprites(u8 screen){ buttons_init(BUTTON_BACK, BUTTON_PLAY); title_init(TITLE_CONNECT); return; } /* Private sprite deletting */ static void priv_del_sprites(u8 screen){ commons_delete(); return; } /* Private sprite touch Return 1 touched 0 not touched */ static u8 priv_touched(u8 icon){ switch(icon){ case BACK: return button_touch_l(); break; case PLAY: return button_touch_r(); break; } return 0; } /* Is the item selected? Return 1 selected 0 not selected */ static u8 priv_selected(u8 icon){ return priv_touched(icon); }