24 #define LOG_NG LOG_STREAM(info, log_engine)
25 #define ERR_NG LOG_STREAM(err, log_engine)
28 : add_(!side[
"carryover_add"].empty() ? side[
"carryover_add"].to_bool() : side[
"add"].to_bool())
29 , current_player_(side[
"current_player"])
30 , gold_(!side[
"carryover_gold"].empty() ? side[
"carryover_gold"].to_int() : side[
"gold"].to_int())
34 , save_id_(side[
"save_id"])
35 , variables_(side.child_or_empty(
"variables"))
48 int cfg_gold = side_cfg[
"gold"].to_int();
50 if(side_cfg[
"gold"].empty()) {
52 side_cfg[
"gold"] = cfg_gold;
56 side_cfg[
"gold"] = cfg_gold +
gold_;
58 else if(
gold_ > cfg_gold){
59 side_cfg[
"gold"] =
gold_;
69 side_cfg[
"previous_recruits"] = can_recruit_str;
86 return can_recruit_str;
90 std::string side =
"";
93 side.append(u_cfg[
"name"].str() +
", ");
101 side[
"gold"] =
gold_;
113 , variables_(cfg.child_or_empty(
"variables"))
116 , next_scenario_(cfg[
"next_scenario"])
117 , next_underlying_unit_id_(cfg[
"next_underlying_unit_id"].to_int(0))
121 if(side[
"lost"].to_bool(
false) || !side[
"persistent"].to_bool(
true) || side[
"save_id"].empty())
125 ERR_NG <<
"found invalid carryover data in saved game, lost='" << side[
"lost"] <<
"' persistent='" << side[
"persistent"] <<
"' save_id='" << side[
"save_id"] <<
"'";
133 if(
item[
"persistent"].to_bool(
true)) {
151 if (it->get_save_id() ==
id) {
170 if(side_cfg[
"save_id"].empty()){
171 side_cfg[
"save_id"] = side_cfg[
"id"];
180 iside->transfer_all_gold_to(side_cfg);
181 iside->transfer_all_recalls_to(side_cfg);
182 iside->transfer_all_recruits_to(side_cfg);
197 if(!
level.has_attribute(
"next_underlying_unit_id"))
206 if ( seed_value.
empty() ) {
211 if(!
level.has_child(
"menu_item")){
247 if(side.get_save_id() == save_id){
static const int default_gold_qty
static lg::log_domain log_engine("engine")
void add_side(const config &cfg)
std::string next_scenario_
the scenario coming next (for campaigns)
std::vector< carryover > & get_all_sides()
void merge_old_carryover(const carryover_info &old_carryover)
std::vector< carryover > carryover_sides_
void transfer_to(config &level)
void transfer_all_to(config &side_cfg)
int next_underlying_unit_id_
carryover * get_side(const std::string &save_id)
std::vector< config > wml_menu_items_
void remove_side(const std::string &id)
void transfer_all_gold_to(config &side_cfg)
std::vector< config > recall_list_
std::string current_player_
const std::string & get_save_id() const
void transfer_all_recruits_to(config &side_cfg)
void transfer_all_recalls_to(config &side_cfg)
std::string get_recruits(bool erase=false)
const std::string to_string()
void to_config(config &cfg)
std::set< std::string > previous_recruits_
Variant for storing WML attributes.
bool empty() const
Tests for an attribute that either was never set or was set to "".
A config object defines a single node in a WML file, with access to child nodes.
void remove_attributes(T... keys)
bool has_attribute(config_key_type key) const
child_itors child_range(config_key_type key)
config & child_or_add(config_key_type key)
Returns a reference to the first child with the given key.
config & add_child(config_key_type key)
std::string get_random_seed_str() const
unsigned int get_random_calls() const
Standard logging facilities (interface).
std::pair< std::string, unsigned > item
void erase(const std::string &key)
std::set< std::string > set_split(const std::string &val, const char c=',', const int flags=REMOVE_EMPTY|STRIP_SPACES)
Splits a (comma-)separated string into a set of pieces.
std::string join(const T &v, const std::string &s=",")
Generates a new string joining container items in a list.
std::string::const_iterator iterator
save_id_equals(const std::string &val)
bool operator()(carryover &v2) const