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