[[campaign server improvements]]
* 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
This commit is contained in:
parent
404492ea84
commit
5fb0b2a911
8 changed files with 54 additions and 13 deletions
|
@ -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
|
||||
|
|
|
@ -1278,7 +1278,7 @@ bool game_controller::play_multiplayer()
|
|||
} 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);
|
||||
|
|
|
@ -106,6 +106,7 @@ namespace game_config
|
|||
std::string path = "";
|
||||
#endif
|
||||
#endif
|
||||
std::vector<server_info> server_list;
|
||||
|
||||
void load_config(const config* cfg)
|
||||
{
|
||||
|
@ -175,6 +176,15 @@ namespace game_config
|
|||
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);
|
||||
}
|
||||
}
|
||||
|
||||
const void add_color_info(const config& v){
|
||||
|
|
|
@ -40,6 +40,12 @@ namespace game_config
|
|||
|
||||
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,
|
||||
enemy_ball_image, ally_ball_image, energy_image,
|
||||
|
|
|
@ -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 @@ protected:
|
|||
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 @@ static server_type open_connection(display& disp, const std::string& original_ho
|
|||
}
|
||||
} 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")) {
|
||||
|
|
|
@ -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 @@ void _set_iconize_list(bool sort)
|
|||
prefs["iconize_list"] = "no";
|
||||
}
|
||||
|
||||
const std::string& official_network_host()
|
||||
const std::vector<game_config::server_info>& server_list()
|
||||
{
|
||||
static const std::string host = WESNOTH_DEFAULT_SERVER;
|
||||
return host;
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@ class game_state;
|
|||
class unit_map;
|
||||
class gamemap;
|
||||
|
||||
#include "game_config.hpp"
|
||||
#include "terrain_translation.hpp"
|
||||
|
||||
#include <string>
|
||||
|
@ -115,7 +116,7 @@ namespace preferences {
|
|||
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);
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Add table
Reference in a new issue