diff --git a/data/game.cfg b/data/game.cfg index c27feba3f14..3246c1abe8d 100644 --- a/data/game.cfg +++ b/data/game.cfg @@ -64,6 +64,7 @@ name=Heir to the Throne first_scenario=The_Elves_Besieged difficulties=EASY,NORMAL,HARD + difficulty_descriptions=&elvish-fighter.png,Fighter;*&elvish-hero.png,Hero;&elvish-champion.png,Champion [/campaign] [campaign] diff --git a/src/game.cpp b/src/game.cpp index 78fb48e5245..de434a0dab8 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -488,15 +488,20 @@ int play_game(int argc, char** argv) state.scenario = campaign["first_scenario"]; + const std::string difficulty_descriptions = translate_string_default(campaign["id"] + "_difficulties",campaign["difficulty_descriptions"]); + std::vector difficulty_options = config::split(difficulty_descriptions,';'); + const std::vector difficulties = config::split(campaign["difficulties"]); if(difficulties.empty() == false) { - std::vector options(difficulties.size()); - std::transform(difficulties.begin(),difficulties.end(),options.begin(),translate_string); + if(difficulty_options.size() != difficulties.size()) { + difficulty_options.resize(difficulties.size()); + std::transform(difficulties.begin(),difficulties.end(),difficulty_options.begin(),translate_string); + } const int res = gui::show_dialog(disp,NULL,"", string_table["difficulty_level"], - gui::OK_CANCEL,&options); + gui::OK_CANCEL,&difficulty_options); if(res == -1) continue; diff --git a/src/tools/make_translation.cpp b/src/tools/make_translation.cpp index 00b436488ac..46c68993719 100644 --- a/src/tools/make_translation.cpp +++ b/src/tools/make_translation.cpp @@ -35,7 +35,18 @@ void process_config(const std::string& element_name, const config& cfg, const map& table = cfg.values; const map::const_iterator id = table.find("id"); - if(element_name == "message") { + if(element_name == "campaign") { + const map::const_iterator name = table.find("name"); + const map::const_iterator diff = table.find("difficulty_descriptions"); + if(name != table.end()) { + out.insert(std::pair(id->second,name->second)); + } + + if(diff != table.end()) { + out.insert(std::pair(id->second + "_difficulties",diff->second)); + } + } + else if(element_name == "message") { const map::const_iterator msg = table.find("message"); if(id == table.end()) {