Added a Use map settings checkbox so sides can use different fog,

...shroud and village gold settings if it is defined in the scenario.
If data for any of the sides is missing it'll be filled with the current
settings selected in mp create.
This commit is contained in:
Jon Daniel 2005-07-25 09:56:25 +00:00
parent 4398a930a1
commit 18f9d28d57
5 changed files with 37 additions and 5 deletions

View file

@ -336,11 +336,18 @@ config connect::side::get_config() const
res["colour"] = lexical_cast<std::string>(colour_ + 1);
res["gold"] = lexical_cast<std::string>(gold_);
res["fog"] = parent_->params_.fog_game ? "yes" : "no";
res["shroud"] = parent_->params_.shroud_game ? "yes" : "no";
if(!parent_->params_.use_map_settings || res["fog"].empty() || (res["fog"] != "yes" && res["fog"] != "no")) {
res["fog"] = parent_->params_.fog_game ? "yes" : "no";
}
if(!parent_->params_.use_map_settings || res["shroud"].empty() || (res["shroud"] != "yes" && res["shroud"] != "no")) {
res["shroud"] = parent_->params_.shroud_game ? "yes" : "no";
}
res["share_maps"] = parent_->params_.share_maps ? "yes" : "no";
res["share_view"] = parent_->params_.share_view ? "yes" : "no";
res["village_gold"] = lexical_cast<std::string>(parent_->params_.village_gold);
if(!parent_->params_.use_map_settings || res["village_gold"].empty())
res["village_gold"] = lexical_cast<std::string>(parent_->params_.village_gold);
res["allow_changes"] = "yes";
} else {

View file

@ -47,6 +47,7 @@ create::create(display& disp, const config &cfg, chat& c, config& gamelist) :
num_players_label_(disp.video(), "", font::SIZE_SMALL, font::LOBBY_COLOUR),
era_label_(disp.video(), _("Era:"), font::SIZE_SMALL, font::LOBBY_COLOUR),
map_label_(disp.video(), _("Map to play:"), font::SIZE_SMALL, font::LOBBY_COLOUR),
use_map_settings_(disp.video(), _("Use map settings"), gui::button::TYPE_CHECK),
fog_game_(disp.video(), _("Fog Of War"), gui::button::TYPE_CHECK),
shroud_game_(disp.video(), _("Shroud"), gui::button::TYPE_CHECK),
observers_game_(disp.video(), _("Observers"), gui::button::TYPE_CHECK),
@ -93,7 +94,10 @@ create::create(display& disp, const config &cfg, chat& c, config& gamelist) :
xp_modifier_slider_.set_value(preferences::xp_modifier());
xp_modifier_slider_.set_increment(10);
xp_modifier_slider_.set_help_string(_("The amount of experience a unit needs to advance"));
use_map_settings_.set_check(preferences::use_map_settings());
use_map_settings_.set_help_string(_("Use scenario specific settings"));
fog_game_.set_check(preferences::fog());
fog_game_.set_help_string(_("Enemy units cannot be seen unless they are in range of your units"));
@ -144,6 +148,7 @@ create::~create()
//Save values for next game
preferences::set_allow_observers(parameters_.allow_observers);
preferences::set_use_map_settings(parameters_.use_map_settings);
preferences::set_fog(parameters_.fog_game);
preferences::set_shroud(parameters_.shroud_game);
preferences::set_turns(parameters_.num_turns);
@ -170,6 +175,7 @@ create::parameters& create::get_parameters()
parameters_.num_turns = turns;
parameters_.village_gold = village_gold_slider_.value();
parameters_.xp_modifier = xp_modifier_slider_.value();
parameters_.use_map_settings = use_map_settings_.checked();
parameters_.fog_game = fog_game_.checked();
parameters_.shroud_game = shroud_game_.checked();
parameters_.allow_observers = observers_game_.checked();
@ -344,6 +350,7 @@ void create::hide_children(bool hide)
era_label_.hide(hide);
map_label_.hide(hide);
use_map_settings_.hide(hide);
fog_game_.hide(hide);
shroud_game_.hide(hide);
observers_game_.hide(hide);
@ -447,6 +454,9 @@ void create::layout_children(const SDL_Rect& rect)
era_combo_.set_location(xpos + era_label_.width() + border_size, ypos);
ypos += era_combo_.height() + border_size;
use_map_settings_.set_location(xpos, ypos);
ypos += use_map_settings_.height() + border_size;
fog_game_.set_location(xpos, ypos);
ypos += fog_game_.height() + border_size;

View file

@ -35,7 +35,7 @@ public:
num_turns = 0;
village_gold = 0;
xp_modifier = 0;
fog_game = shroud_game = allow_observers = share_view = share_maps = false;
use_map_settings = fog_game = shroud_game = allow_observers = share_view = share_maps = false;
scenario_data.clear();
}
@ -48,6 +48,7 @@ public:
int num_turns;
int village_gold;
int xp_modifier;
bool use_map_settings;
bool fog_game;
bool shroud_game;
bool allow_observers;
@ -93,6 +94,7 @@ private:
gui::label era_label_;
gui::label map_label_;
gui::button use_map_settings_;
gui::button fog_game_;
gui::button shroud_game_;
gui::button observers_game_;

View file

@ -489,6 +489,16 @@ void set_allow_observers(bool value)
prefs["allow_observers"] = value ? "yes" : "no";
}
bool use_map_settings()
{
return prefs["mp_use_map_settings"] == "yes";
}
void set_use_map_settings(bool value)
{
prefs["mp_use_map_settings"] = value ? "yes" : "no";
}
bool fog()
{
return prefs["mp_fog"] == "yes";

View file

@ -104,6 +104,9 @@ namespace preferences {
bool allow_observers();
void set_allow_observers(bool value);
bool use_map_settings();
void set_use_map_settings(bool value);
bool fog();
void set_fog(bool value);