Author: sapient
Date: Sat Jun  2 06:50:34 2007
New Revision: 18005

URL: http://svn.gna.org/viewcvs/wesnoth?rev=18005&view=rev
Log:
* check game.cfg (currently inside _main.cfg) and preferences.cfg for server 
lists
  instead of using a hard-coded list of official servers.
* added help strings to the View Server List dialog

Modified:
    trunk/data/_main.cfg
    trunk/src/game.cpp
    trunk/src/game_config.cpp
    trunk/src/game_config.hpp
    trunk/src/multiplayer.cpp
    trunk/src/preferences.cpp
    trunk/src/preferences.hpp
    trunk/src/wesconfig.h

Modified: trunk/data/_main.cfg
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/data/_main.cfg?rev=18005&r1=18004&r2=18005&view=diff
==============================================================================
--- trunk/data/_main.cfg (original)
+++ trunk/data/_main.cfg Sat Jun  2 06:50:34 2007
@@ -35,6 +35,15 @@
 [/advanced_preference]
 
 [game_config]
+    [server]
+        name=_"Official Wesnoth Server"
+        address=server.wesnoth.org:14998
+    [/server]
+    [server]
+        name=_"Alternate Wesnoth Server"
+        address=games.tuxfamily.org:14998
+    [/server]
+
     base_income=2
     village_income=1
     poison_amount=8

Modified: trunk/src/game.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/game.cpp?rev=18005&r1=18004&r2=18005&view=diff
==============================================================================
--- trunk/src/game.cpp (original)
+++ trunk/src/game.cpp Sat Jun  2 06:50:34 2007
@@ -1278,7 +1278,7 @@
                } else if(res == 0 || res == 1) {
                        std::string host;
                        if(res == 0) {
-                               host = preferences::official_network_host();
+                               host = preferences::server_list()[0].address;
                        }
 
                        mp::start_client(disp(), game_config_, units_data_, 
host);

Modified: trunk/src/game_config.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/game_config.cpp?rev=18005&r1=18004&r2=18005&view=diff
==============================================================================
--- trunk/src/game_config.cpp (original)
+++ trunk/src/game_config.cpp Sat Jun  2 06:50:34 2007
@@ -106,6 +106,7 @@
        std::string path = "";
 #endif
 #endif
+       std::vector<server_info> server_list;
 
        void load_config(const config* cfg)
        {
@@ -174,6 +175,15 @@
                flag_rgb = v["flag_rgb"];
                if( !flag_rgb.size()){
                        flag_rgb="green";
+               }
+
+               const std::vector<config *> &servers = v.get_children("server");
+               std::vector<config *>::const_iterator server;
+               for(server = servers.begin(); server != servers.end(); 
++server) {
+                       server_info sinf;
+                       sinf.name = (**server)["name"];
+                       sinf.address = (**server)["address"];
+                       server_list.push_back(sinf);
                }
        }
        

Modified: trunk/src/game_config.hpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/game_config.hpp?rev=18005&r1=18004&r2=18005&view=diff
==============================================================================
--- trunk/src/game_config.hpp (original)
+++ trunk/src/game_config.hpp Sat Jun  2 06:50:34 2007
@@ -39,6 +39,12 @@
        extern bool debug, editor, ignore_replay_errors, mp_debug, exit_at_end, 
no_delay, disable_autosave;
 
        extern std::string path;
+
+       struct server_info {
+               std::string name;
+               std::string address; //may include ':' followed by port number
+       };
+       extern std::vector<server_info> server_list;
 
        extern std::string game_icon, game_title, game_logo, title_music,
          moved_ball_image, unmoved_ball_image, partmoved_ball_image,

Modified: trunk/src/multiplayer.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/multiplayer.cpp?rev=18005&r1=18004&r2=18005&view=diff
==============================================================================
--- trunk/src/multiplayer.cpp (original)
+++ trunk/src/multiplayer.cpp Sat Jun  2 06:50:34 2007
@@ -34,6 +34,7 @@
 #include "statistics.hpp"
 #include "serialization/string_utils.hpp"
 #include "upload_log.hpp"
+#include "wml_separators.hpp"
 
 #define LOG_NW LOG_STREAM(info, network)
 
@@ -102,13 +103,14 @@
                gui::dialog server_dialog(dialog()->get_display(), _("List of 
Servers"),
                        _("Choose a known server from the list"), 
gui::OK_CANCEL);
                std::vector<std::string> servers;
-               servers.push_back(preferences::official_network_host());
-               //add alternate servers here...
-               //just a hardcoded list for now
-               servers.push_back("games.tuxfamily.org:14998");
+               const std::vector<game_config::server_info>& pref_servers = 
preferences::server_list();
+               std::vector<game_config::server_info>::const_iterator server;
+               for(server = pref_servers.begin(); server != 
pref_servers.end(); ++server) {
+                       servers.push_back(server->address + 
HELP_STRING_SEPARATOR + server->name);
+               }
                server_dialog.set_menu(servers);
                if(server_dialog.show() >= 0) {
-                       
dialog()->get_textbox().set_text(servers[server_dialog.result()]);
+                       
dialog()->get_textbox().set_text(preferences::server_list()[server_dialog.result()].address);
                }
                dp_info.clear_buttons();
                return gui::CONTINUE_DIALOG;
@@ -244,7 +246,7 @@
                }
        } while(!(data.child("join_lobby") || data.child("join_game")));
 
-       if (h != preferences::official_network_host())
+       if (h != preferences::server_list()[0].address)
                preferences::set_network_host(h);
 
        if (data.child("join_lobby")) {

Modified: trunk/src/preferences.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/preferences.cpp?rev=18005&r1=18004&r2=18005&view=diff
==============================================================================
--- trunk/src/preferences.cpp (original)
+++ trunk/src/preferences.cpp Sat Jun  2 06:50:34 2007
@@ -25,6 +25,7 @@
 #include "sound.hpp"
 #include "util.hpp"
 #include "video.hpp" // non_interactive()
+#include "wassert.hpp"
 #include "wesconfig.h"
 #include "serialization/parser.hpp"
 #include "serialization/string_utils.hpp"
@@ -398,17 +399,30 @@
                prefs["iconize_list"] = "no";
 }
 
-const std::string& official_network_host()
-{
-       static const std::string host = WESNOTH_DEFAULT_SERVER;
-       return host;
+const std::vector<game_config::server_info>& server_list()
+{
+       static std::vector<game_config::server_info> pref_servers;
+       if(pref_servers.empty()) {
+               std::vector<game_config::server_info> &game_servers = 
game_config::server_list;
+               wassert(game_servers.size() > 0);
+               pref_servers.insert(pref_servers.begin(), game_servers.begin(), 
game_servers.end());
+               const std::vector<config *> &user_servers = 
prefs.get_children("server");
+               std::vector<config *>::const_iterator server;
+               for(server = user_servers.begin(); server != 
user_servers.end(); ++server) {
+                       game_config::server_info sinf;
+                       sinf.name = (**server)["name"];
+                       sinf.address = (**server)["address"];
+                       pref_servers.push_back(sinf);
+               }
+       }
+       return pref_servers;
 }
 
 const std::string& network_host()
 {
        t_string& res = prefs["host"];
        if(res.empty())
-               res = WESNOTH_DEFAULT_SERVER;
+               res = server_list()[0].address;
 
        return res;
 }

Modified: trunk/src/preferences.hpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/preferences.hpp?rev=18005&r1=18004&r2=18005&view=diff
==============================================================================
--- trunk/src/preferences.hpp (original)
+++ trunk/src/preferences.hpp Sat Jun  2 06:50:34 2007
@@ -20,6 +20,7 @@
 class unit_map;
 class gamemap;
 
+#include "game_config.hpp"
 #include "terrain_translation.hpp"
 
 #include <string>
@@ -115,7 +116,7 @@
        bool iconize_list();
        void _set_iconize_list(bool show);
 
-       const std::string& official_network_host();
+       const std::vector<game_config::server_info>& server_list();
 
        const std::string& network_host();
        void set_network_host(const std::string& host);

Modified: trunk/src/wesconfig.h
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/wesconfig.h?rev=18005&r1=18004&r2=18005&view=diff
==============================================================================
--- trunk/src/wesconfig.h (original)
+++ trunk/src/wesconfig.h Sat Jun  2 06:50:34 2007
@@ -5,7 +5,6 @@
 # include "config.h"
 #else
 # define VERSION "1.3.3+svn"
-# define WESNOTH_DEFAULT_SERVER "server.wesnoth.org:14998"
 # define PACKAGE "wesnoth"
 # ifndef LOCALEDIR
 #  define LOCALEDIR "translations"


_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits

Reply via email to