void carryover_info::transfer_to(config& level) { if(!level.has_attribute("next_underlying_unit_id")) { level["next_underlying_unit_id"] = next_underlying_unit_id_; } //if the game has been loaded from a snapshot, variables_ is empty since we cleared it below. level.child_or_add("variables").append(std::move(variables_)); config::attribute_value & seed_value = level["random_seed"]; if ( seed_value.empty() ) { seed_value = rng_.get_random_seed_str(); level["random_calls"] = rng_.get_random_calls(); } if(!level.has_child("menu_item")){ for(config& item : wml_menu_items_) { level.add_child("menu_item").swap(item); } } next_scenario_ = ""; variables_.clear(); wml_menu_items_.clear(); }
void carryover::transfer_all_gold_to(config& side_cfg){ int cfg_gold = side_cfg["gold"].to_int(); if(side_cfg["gold"].empty()) { cfg_gold = default_gold_qty; side_cfg["gold"] = cfg_gold; } if(add_ && gold_ > 0){ side_cfg["gold"] = cfg_gold + gold_; } else if(gold_ > cfg_gold){ side_cfg["gold"] = gold_; } side_cfg.child_or_add("variables").swap(variables_); variables_.clear(); gold_ = 0; }