Author: zaroth
Date: Thu Jun  9 11:53:08 2011
New Revision: 49818

URL: http://svn.gna.org/viewcvs/wesnoth?rev=49818&view=rev
Log:
Added campaign, campaign-difficulty and campaign-scenario to
commandline_options. (previous option was --campaign with weird syntax
afterwards)

Modified:
    trunk/src/commandline_options.cpp
    trunk/src/game_controller.cpp
    trunk/src/tests/test_commandline_options.cpp

Modified: trunk/src/commandline_options.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/commandline_options.cpp?rev=49818&r1=49817&r2=49818&view=diff
==============================================================================
--- trunk/src/commandline_options.cpp (original)
+++ trunk/src/commandline_options.cpp Thu Jun  9 11:53:08 2011
@@ -141,6 +141,9 @@
 
        po::options_description campaign_opts("Campaign options");
        campaign_opts.add_options()
+               ("campaign,c", 
po::value<std::string>()->implicit_value(std::string()), "goes directly to the 
campaign with id <arg>. A selection menu will appear if no id was specified")
+               ("campaign-difficulty", po::value<int>(), "the difficulty of 
the specified campaign (1 to max - default is 1)")
+               ("campaign-scenario", po::value<std::string>(),"the id of the 
scenario from the specified campaign")
                ;
 
        po::options_description display_opts("Display options");
@@ -206,6 +209,12 @@
                multiplayer_ai_config = 
parse_to_int_string_tuples_(vm["ai-config"].as<std::vector<std::string> >());
        if (vm.count("bpp"))
                bpp = vm["bpp"].as<int>();
+       if (vm.count("campaign"))
+               campaign = vm["campaign"].as<std::string>();
+       if (vm.count("campaign-difficulty"))
+               campaign_difficulty = vm["campaign-difficulty"].as<int>();
+       if (vm.count("campaign-scenario"))
+               campaign_scenario = vm["campaign-scenario"].as<std::string>();
        if (vm.count("clock"))
                clock = true;
        if (vm.count("config-dir"))

Modified: trunk/src/game_controller.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/game_controller.cpp?rev=49818&r1=49817&r2=49818&view=diff
==============================================================================
--- trunk/src/game_controller.cpp (original)
+++ trunk/src/game_controller.cpp Thu Jun  9 11:53:08 2011
@@ -119,6 +119,23 @@
 
        if (cmdline_opts_.bpp)
                force_bpp_ = *cmdline_opts_.bpp;
+       if (cmdline_opts_.campaign)
+       {
+               jump_to_campaign_.jump_ = true;
+               jump_to_campaign_.campaign_id_ = *cmdline_opts_.campaign;
+               std::cerr<<"selected campaign id: 
["<<jump_to_campaign_.campaign_id_<<"]\n";
+               if (cmdline_opts_.campaign_difficulty)
+                       jump_to_campaign_.difficulty_ = 
*cmdline_opts_.campaign_difficulty;
+               else
+                       jump_to_campaign_.difficulty_ = 1; // it's the default
+               std::cerr<<"selected difficulty: 
["<<jump_to_campaign_.difficulty_<<"]\n";
+
+               if (cmdline_opts_.campaign_scenario)
+               {
+                       jump_to_campaign_.scenario_id_ = 
*cmdline_opts_.campaign_scenario;
+                       std::cerr<<"selected scenario id: 
["<<jump_to_campaign_.scenario_id_<<"]\n";
+               }
+       }
        if (cmdline_opts_.clock)
                gui2::show_debug_clock_button = true;
        if (cmdline_opts_.debug) {
@@ -253,42 +270,6 @@
        if (cmdline_opts_.with_replay)
                game::load_game_exception::show_replay = true;
 
-       for(arg_ = 1; arg_ != argc_; ++arg_) {
-               const std::string val(argv_[arg_]);
-               if(val.empty()) {
-                       continue;
-               }
-               else if(val.find("--campaign") == 0 || val.find("-c") == 0) {
-                       // campaign starting template:
-                       // -c[[<difficulty>] <id_campaign> [<id_scenario>]]
-                       // --campaign[[<difficulty>] <id_campaign> 
[<id_scenario>]]
-                       jump_to_campaign_.jump_ = true;
-
-                       // we don't know if the next argument is from --campaign
-                       // or for setting the data directory, so we assume is 
the latter
-                       if (arg_ + 2 < argc_ && argv_[arg_+1][0] != '-')
-                       {
-                               // we parse difficulty only here, since a 
campaign is supplied from command line
-                               if (isdigit(val[val.size()-1]))
-                                       jump_to_campaign_.difficulty_ = 
lexical_cast<int>(val[val.size()-1]);
-
-                               ++arg_;
-                               jump_to_campaign_.campaign_id_ = 
std::string(argv_[arg_]);
-                               std::cerr<<"selected campaign id: 
["<<jump_to_campaign_.campaign_id_
-                                       <<"] | difficulty: 
["<<jump_to_campaign_.difficulty_<<"]\n";
-                       }
-
-                       if (arg_ + 2 < argc_ && argv_[arg_+1][0] != '-')
-                       {
-                               ++arg_;
-                               jump_to_campaign_.scenario_id_ = 
std::string(argv_[arg_]);
-                               std::cerr<<"selected scenario id: 
["<<jump_to_campaign_.scenario_id_<<"]\n";
-                       }
-               } else if(val[0] == '-') {
-                       std::cerr << "unknown option: " << val << std::endl;
-                       //throw config::error("unknown option"); TODO will be 
unnecessary here once commandline_options is completed
-               }
-       }
        std::cerr << '\n';
        std::cerr << "Data directory: " << game_config::path
                << "\nUser configuration directory: " << get_user_config_dir()

Modified: trunk/src/tests/test_commandline_options.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/tests/test_commandline_options.cpp?rev=49818&r1=49817&r2=49818&view=diff
==============================================================================
--- trunk/src/tests/test_commandline_options.cpp (original)
+++ trunk/src/tests/test_commandline_options.cpp Thu Jun  9 11:53:08 2011
@@ -97,6 +97,7 @@
        const char *argv[] =
        {
                "wesnoth",
+               "--campaign",
                "--editor",
                "--logdomains",
                "--preprocess-output-macros",
@@ -107,7 +108,7 @@
        commandline_options co(argc,const_cast<char**>(argv));
 
        BOOST_CHECK(!co.bpp);
-       BOOST_CHECK(!co.campaign);
+       BOOST_CHECK(co.campaign && co.campaign->empty());
        BOOST_CHECK(!co.campaign_difficulty);
        BOOST_CHECK(!co.campaign_scenario);
        BOOST_CHECK(!co.clock);
@@ -180,6 +181,9 @@
                "--ai-config=1:aifoo",
                "--ai-config=2:aibar",
                "--bpp=32",
+               "--campaign=campfoo",
+               "--campaign-difficulty=16",
+               "--campaign-scenario=scenfoo",
                "--clock",
                "--config-dir=configdirfoo",
                "--config-path",
@@ -236,9 +240,9 @@
        commandline_options co(argc,const_cast<char**>(argv));
 
        BOOST_CHECK(co.bpp && *co.bpp == 32);
-       BOOST_CHECK(!co.campaign);
-       BOOST_CHECK(!co.campaign_difficulty);
-       BOOST_CHECK(!co.campaign_scenario);
+       BOOST_CHECK(co.campaign && *co.campaign == "campfoo");
+       BOOST_CHECK(co.campaign_difficulty && *co.campaign_difficulty == 16);
+       BOOST_CHECK(co.campaign_scenario && *co.campaign_scenario == "scenfoo");
        BOOST_CHECK(co.clock);
        BOOST_CHECK(co.config_path);
        BOOST_CHECK(co.config_dir && *co.config_dir == "configdirfoo");


_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits

Reply via email to