#include #include #include #include #include "GUI_config_net.h" #include "GUI_common.h" #include "CORE_general.h" #include "CORE_fileio.h" #include "gfx/all_gfx.h" /* Possible actions */ #define BACK 0 #define OK 1 #define LOCAL_PORT 2 #define SERVER_PORT 3 #define SERVER_IP 4 /******** 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_config_net(void){ static config_net_state_t localstate = CONFIG_NET_INIT; char local_port_text[6]; char serv_port_text[6]; char serv_ip_text[16]; sprintf(local_port_text, "%d", tmpEnv->network.local_port); sprintf(serv_port_text, "%d", tmpEnv->network.serv_base_port); network_ip2str(serv_ip_text, sizeof(serv_ip_text), tmpEnv->network.serv_ip); switch(localstate){ case CONFIG_NET_INIT: PA_EasyBgLoad(DSCR, 3, BG_network); priv_load_sprites(DSCR); PA_OutputSimpleText(DSCR, 12, 7, local_port_text); PA_OutputSimpleText(DSCR, 12, 11, serv_port_text); PA_OutputSimpleText(DSCR, 12, 15, serv_ip_text); localstate = CONFIG_NET_FADEIN; break; case CONFIG_NET_FADEIN: if(fadein(DSCR)) return; localstate = CONFIG_NET_SELECT; commons_move_in(); break; case CONFIG_NET_SELECT: if(priv_selected(LOCAL_PORT)){ Env.next_state = APP_CONFIG_NET_LOCALPORT; localstate = CONFIG_NET_MOVEOUT; } else if(priv_selected(SERVER_PORT)){ Env.next_state = APP_CONFIG_NET_SERVPORT; localstate = CONFIG_NET_MOVEOUT; } else if(priv_selected(SERVER_IP)){ Env.next_state = APP_CONFIG_NET_SERVIP; localstate = CONFIG_NET_MOVEOUT; } else if(priv_selected(BACK)){ //undo changes memcpy(&(tmpEnv->network), &(Env.network), sizeof(network_t)); Env.next_state = APP_CONFIG; localstate = CONFIG_NET_MOVEOUT; } else if(priv_selected(OK)){ Env.tmp_has_changed = 1; Env.next_state = APP_CONFIG; localstate = CONFIG_NET_MOVEOUT; } break; case CONFIG_NET_MOVEOUT: commons_move_out(); localstate = CONFIG_NET_FADEOUT; case CONFIG_NET_FADEOUT: if(fadeout(DSCR)) return; localstate = CONFIG_NET_CLEAR; break; case CONFIG_NET_CLEAR: NetCfg.local_port_has_changed = 0; NetCfg.serv_port_has_changed = 0; NetCfg.serv_ip_has_changed = 0; priv_del_sprites(DSCR); PA_ClearTextBg(DSCR); PA_DeleteBg(DSCR, 3); // GFX_CONFIG_NET_dscr localstate = CONFIG_NET_INIT; Env.current_state = Env.next_state; break; } return; } /*------------------------------- Private -------------------------------*/ /* Private sprite loading */ static void priv_load_sprites(u8 screen){ if(NetCfg.local_port_has_changed || NetCfg.serv_port_has_changed || NetCfg.serv_ip_has_changed){ buttons_init(BUTTON_BACK, BUTTON_OK); } else{ button_init_l(BUTTON_BACK); } title_init(TITLE_NETWORK); PA_LoadSpritePal(screen, 4, (void*)spr_edit_Pal); /* LOCAL_PORT */ PA_CreateSprite(screen, 20, (void*)SPR_edit_Sprite, OBJ_SIZE_16X16, 1, 4, 232, 52); /* SERVER_PORT */ PA_CreateSprite(screen, 21, (void*)SPR_edit_Sprite, OBJ_SIZE_16X16, 1, 4, 232, 84); /* SERVER_IP */ PA_CreateSprite(screen, 22, (void*)SPR_edit_Sprite, OBJ_SIZE_16X16, 1, 4, 232, 116); return; } /* Private sprite deletting */ static void priv_del_sprites(u8 screen){ commons_delete(); PA_DeleteSprite(screen, 20); PA_DeleteSprite(screen, 21); PA_DeleteSprite(screen, 22); return; } /* Private sprite touch Return 1 touched 0 not touched */ static u8 priv_touched(u8 icon){ switch(icon){ case LOCAL_PORT: return (PA_SpriteTouched(20) && Stylus.Newpress); break; case SERVER_PORT: return (PA_SpriteTouched(21) && Stylus.Newpress); break; case SERVER_IP: return (PA_SpriteTouched(22) && Stylus.Newpress); break; case BACK: return button_touch_l(); break; case OK: 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); }