From 0cb72c814fa839268ed7a09d59d82aa1514a8155 Mon Sep 17 00:00:00 2001 From: Michal Zima Date: Sun, 6 Jun 2010 23:38:37 +0200 Subject: Added 'Reload' button to the server browser --- po/cs_CZ.po | 26 ++++++++------ po/de_DE.po | 24 +++++++------ po/tuxanci.pot | 24 +++++++------ src/screen/browser.c | 98 ++++++++++++++++++++++++++++------------------------ 4 files changed, 95 insertions(+), 77 deletions(-) diff --git a/po/cs_CZ.po b/po/cs_CZ.po index bc923c6..0857ddf 100644 --- a/po/cs_CZ.po +++ b/po/cs_CZ.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: tuxanci\n" "Report-Msgid-Bugs-To: team@tuxanci.org\n" -"POT-Creation-Date: 2010-02-08 22:56+0100\n" -"PO-Revision-Date: 2009-12-28 16:03+0100\n" +"POT-Creation-Date: 2010-06-06 23:32+0200\n" +"PO-Revision-Date: 2010-06-06 23:34+0200\n" "Last-Translator: xHire \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -72,7 +72,7 @@ msgid "Save" msgstr "Uložit" #: src/client/saveDialog.c:80 -#: src/screen/browser.c:714 +#: src/screen/browser.c:692 #: src/screen/credits.c:110 #: src/screen/downArena.c:372 #: src/screen/gameType.c:229 @@ -95,38 +95,42 @@ msgstr "Ne" msgid "OK" msgstr "OK" -#: src/screen/browser.c:715 +#: src/screen/browser.c:693 #: src/screen/gameType.c:230 #: src/screen/choiceArena.c:204 msgid "Play" msgstr "Hraj" -#: src/screen/browser.c:717 +#: src/screen/browser.c:695 msgid "Refresh" msgstr "Obnovit" -#: src/screen/browser.c:721 +#: src/screen/browser.c:698 +msgid "Reload" +msgstr "Znovu načíst" + +#: src/screen/browser.c:702 msgid "Server" msgstr "Server" -#: src/screen/browser.c:722 +#: src/screen/browser.c:703 msgid "Version" msgstr "Verze" -#: src/screen/browser.c:723 +#: src/screen/browser.c:704 #: src/screen/gameType.c:254 msgid "IP" msgstr "IP" -#: src/screen/browser.c:724 +#: src/screen/browser.c:705 msgid "Arena" msgstr "Aréna" -#: src/screen/browser.c:725 +#: src/screen/browser.c:706 msgid "Clients" msgstr "Klienti" -#: src/screen/browser.c:726 +#: src/screen/browser.c:707 msgid "Ping" msgstr "Ping" diff --git a/po/de_DE.po b/po/de_DE.po index 9ce5002..d1cfc7b 100644 --- a/po/de_DE.po +++ b/po/de_DE.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: tuxanci\n" "Report-Msgid-Bugs-To: team@tuxanci.org\n" -"POT-Creation-Date: 2010-02-08 22:56+0100\n" +"POT-Creation-Date: 2010-06-06 23:32+0200\n" "PO-Revision-Date: 2008-12-01 12:31+0100\n" "Last-Translator: Evgeni Golov \n" "Language-Team: GERMAN \n" @@ -74,7 +74,7 @@ msgid "Save" msgstr "" #: src/client/saveDialog.c:80 -#: src/screen/browser.c:714 +#: src/screen/browser.c:692 #: src/screen/credits.c:110 #: src/screen/downArena.c:372 #: src/screen/gameType.c:229 @@ -97,42 +97,46 @@ msgstr "" msgid "OK" msgstr "" -#: src/screen/browser.c:715 +#: src/screen/browser.c:693 #: src/screen/gameType.c:230 #: src/screen/choiceArena.c:204 msgid "Play" msgstr "Spielen" -#: src/screen/browser.c:717 +#: src/screen/browser.c:695 msgid "Refresh" msgstr "Aktualisieren" -#: src/screen/browser.c:721 +#: src/screen/browser.c:698 +msgid "Reload" +msgstr "" + +#: src/screen/browser.c:702 #, fuzzy msgid "Server" msgstr "Server" -#: src/screen/browser.c:722 +#: src/screen/browser.c:703 #, fuzzy msgid "Version" msgstr "Version" -#: src/screen/browser.c:723 +#: src/screen/browser.c:704 #: src/screen/gameType.c:254 msgid "IP" msgstr "IP" -#: src/screen/browser.c:724 +#: src/screen/browser.c:705 #, fuzzy msgid "Arena" msgstr "Arena" -#: src/screen/browser.c:725 +#: src/screen/browser.c:706 #, fuzzy msgid "Clients" msgstr "Clients" -#: src/screen/browser.c:726 +#: src/screen/browser.c:707 #, fuzzy msgid "Ping" msgstr "Ping" diff --git a/po/tuxanci.pot b/po/tuxanci.pot index d251586..962dbef 100644 --- a/po/tuxanci.pot +++ b/po/tuxanci.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: team@tuxanci.org\n" -"POT-Creation-Date: 2010-02-08 22:56+0100\n" +"POT-Creation-Date: 2010-06-06 23:32+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -73,7 +73,7 @@ msgid "Save" msgstr "" #: src/client/saveDialog.c:80 -#: src/screen/browser.c:714 +#: src/screen/browser.c:692 #: src/screen/credits.c:110 #: src/screen/downArena.c:372 #: src/screen/gameType.c:229 @@ -96,38 +96,42 @@ msgstr "" msgid "OK" msgstr "" -#: src/screen/browser.c:715 +#: src/screen/browser.c:693 #: src/screen/gameType.c:230 #: src/screen/choiceArena.c:204 msgid "Play" msgstr "" -#: src/screen/browser.c:717 +#: src/screen/browser.c:695 msgid "Refresh" msgstr "" -#: src/screen/browser.c:721 +#: src/screen/browser.c:698 +msgid "Reload" +msgstr "" + +#: src/screen/browser.c:702 msgid "Server" msgstr "" -#: src/screen/browser.c:722 +#: src/screen/browser.c:703 msgid "Version" msgstr "" -#: src/screen/browser.c:723 +#: src/screen/browser.c:704 #: src/screen/gameType.c:254 msgid "IP" msgstr "" -#: src/screen/browser.c:724 +#: src/screen/browser.c:705 msgid "Arena" msgstr "" -#: src/screen/browser.c:725 +#: src/screen/browser.c:706 msgid "Clients" msgstr "" -#: src/screen/browser.c:726 +#: src/screen/browser.c:707 msgid "Ping" msgstr "" diff --git a/src/screen/browser.c b/src/screen/browser.c index 743a90d..bcbcc9f 100644 --- a/src/screen/browser.c +++ b/src/screen/browser.c @@ -36,7 +36,7 @@ extern int errno; #ifndef NO_SOUND #include "music.h" -#endif +#endif /* NO_SOUND */ #include "gameType.h" #include "browser.h" @@ -54,6 +54,7 @@ static widget_t *image_backgorund; static widget_t *button_play; static widget_t *button_back; static widget_t *button_refresh; +static widget_t *button_reload; static widget_t *label_server; static widget_t *label_version; @@ -70,6 +71,7 @@ static server_t server_list; static int LoadServers(); static int RefreshServers(); static server_t *server_getcurr(); +static void clear_server_list(); static void hotkey_escape() { @@ -80,7 +82,7 @@ void browser_start() { #ifndef NO_SOUND music_play("menu", MUSIC_GROUP_BASE); -#endif +#endif /* NO_SOUND */ hot_key_register(SDLK_ESCAPE, hotkey_escape); @@ -103,6 +105,7 @@ void browser_draw() button_draw(button_play); button_draw(button_back); button_draw(button_refresh); + button_draw(button_reload); } void browser_event() @@ -112,47 +115,16 @@ void browser_event() button_event(button_play); button_event(button_back); button_event(button_refresh); + button_event(button_reload); } void browser_stop() { - unsigned i = 0; - server_t *server; - - /*list_destroy_item(select_server->list, free);*/ - /*select_server->list = list_new();*/ select_remove_all(select_server); hot_key_unregister(SDLK_ESCAPE); - while (1) { - i = 0; - for (server = server_list.next; server != &server_list; server = server->next) { - server->next->prev = server->prev; - server->prev->next = server->next; - - if (server->name) { - free(server->name); - } - - if (server->version) { - free(server->version); - } - - if (server->arena) { - free(server->arena); - } - - free(server); - - i++; - break; - } - - if (!i) { - return; - } - } + clear_server_list(); } static void eventWidget(void *p) @@ -192,6 +164,10 @@ static void eventWidget(void *p) if (button == button_refresh) { RefreshServers(); } + + if (button == button_reload) { + LoadServers(); + } } server_t *server_getcurr() @@ -346,12 +322,12 @@ int server_getinfo(server_t *server) "uptime: D\n" */ - /*unsigned i = 0;*/ int i = 0; while (i < ret) { - if (str[i] == '\n') + if (str[i] == '\n') { str[i] = '\0'; + } i++; } @@ -455,13 +431,18 @@ static int LoadServers() char buf[1025]; + /* first of all ensure the server list is empty */ + clear_server_list(); + select_remove_all(select_server); + /* TODO: TCP macro */ struct sockaddr_in server; char *master_server_ip; master_server_ip = dns_resolv(NET_MASTER_SERVER_DOMAIN); - if (master_server_ip == NULL) { /* master server is down? */ + if (master_server_ip == NULL) { + warning("Did not obtained IP of the MasterServer"); return -1; } @@ -471,8 +452,9 @@ static int LoadServers() free(master_server_ip); - if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) { - return 0; + if ((s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) { + warning("Unable to open socket for connection to MasterServer"); + return -1; } /* Set to nonblocking socket mode */ @@ -558,7 +540,7 @@ static int LoadServers() unsigned ip; } response_head; - while (1) { + for (;;) { response_head *header = (response_head *) ((char *) buf + i); server_t *ctx; @@ -632,10 +614,6 @@ static int LoadServers() static int RefreshServers() { -/* - list_destroy_item(select_server->list, free); - select_server->list = list_new(); -*/ select_remove_all(select_server); struct in_addr srv; @@ -715,8 +693,11 @@ void browser_init() button_play = button_new(_("Play"), WINDOW_SIZE_X - 200, WINDOW_SIZE_Y - 100, eventWidget); button_refresh = button_new(_("Refresh"), - WINDOW_SIZE_X / 2 - 50, WINDOW_SIZE_Y - 100, + WINDOW_SIZE_X / 2 - 130, WINDOW_SIZE_Y - 100, eventWidget); + button_reload = button_new(_("Reload"), + WINDOW_SIZE_X / 2 + 35, WINDOW_SIZE_Y - 100, + eventWidget); label_server = label_new(_("Server"), 120, 145, WIDGET_LABEL_LEFT); label_version = label_new(_("Version"), 290, 145, WIDGET_LABEL_LEFT); @@ -741,6 +722,7 @@ void browser_quit() button_destroy(button_play); button_destroy(button_back); button_destroy(button_refresh); + button_destroy(button_reload); label_destroy(label_server); label_destroy(label_version); @@ -751,3 +733,27 @@ void browser_quit() select_destroy(select_server); } + +static void clear_server_list() +{ + server_t *server; + + for (server = server_list.next; server != &server_list; server = server_list.next) { + server->next->prev = server->prev; + server->prev->next = server->next; + + if (server->name) { + free(server->name); + } + + if (server->version) { + free(server->version); + } + + if (server->arena) { + free(server->arena); + } + + free(server); + } +} -- cgit v1.2.3