Author: zaroth
Date: Thu Jun  9 11:53:21 2011
New Revision: 49823

URL: http://svn.gna.org/viewcvs/wesnoth?rev=49823&view=rev
Log:
Finished moving last option (parm) to commandline_options.

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=49823&r1=49822&r2=49823&view=diff
==============================================================================
--- trunk/src/commandline_options.cpp (original)
+++ trunk/src/commandline_options.cpp Thu Jun  9 11:53:21 2011
@@ -178,6 +178,7 @@
                ("exit-at-end", "exit Wesnoth at the end of the scenario.")
                ("label", po::value<std::string>(), "sets the label for AIs.") 
//TODO is the description precise? this option was undocumented before.
                ("nogui", "runs the game without the GUI.")
+               ("parm", po::value<std::vector<std::string> >()->composing(), 
"sets additional parameters for this side. <arg> should have format 
side:name:value.")
                ("scenario", po::value<std::string>(), "selects a multiplayer 
scenario. The default scenario is \"multiplayer_The_Freelands\".")
                ("side", po::value<std::vector<std::string> >()->composing(), 
"selects a faction of the current era for this side by id. <arg> should have 
format side:value.")
                ("turns", po::value<std::string>(), "sets the number of turns. 
The default is \"50\".")
@@ -295,6 +296,8 @@
                nosound = true;
        if (vm.count("nogui"))
                nogui = true;
+       if (vm.count("parm"))
+               multiplayer_parm = 
parse_to_uint_string_string_tuples_(vm["parm"].as<std::vector<std::string> >());
        if (vm.count("path"))
                path = true;
        if (vm.count("preprocess"))

Modified: trunk/src/game_controller.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/game_controller.cpp?rev=49823&r1=49822&r2=49823&view=diff
==============================================================================
--- trunk/src/game_controller.cpp (original)
+++ trunk/src/game_controller.cpp Thu Jun  9 11:53:21 2011
@@ -512,6 +512,16 @@
                game_config::exit_at_end = true;
        if (cmdline_opts_.multiplayer_label)
                label = *cmdline_opts_.multiplayer_label;
+       if (cmdline_opts_.multiplayer_parm)
+       {
+               for(std::vector<boost::tuple<unsigned int, std::string, 
std::string> >::const_iterator it=cmdline_opts_.multiplayer_parm->begin(); 
it!=cmdline_opts_.multiplayer_parm->end(); ++it)
+               {
+                       const unsigned int side = it->get<0>();
+                       const std::string param_name = it->get<1>();
+                       const std::string param_value = it->get<2>();
+                       side_parameters[side][param_name] = param_value;
+               }
+       }
        if (cmdline_opts_.multiplayer_scenario)
                scenario = *cmdline_opts_.multiplayer_scenario;
        if (cmdline_opts_.multiplayer_side)
@@ -530,40 +540,6 @@
        }
        if (cmdline_opts_.multiplayer_turns)
                turns = *cmdline_opts_.multiplayer_turns;
-
-       for(++arg_; arg_ < argc_; ++arg_) {
-               const std::string val(argv_[arg_]);
-               if(val.empty()) {
-                       continue;
-               }
-
-               std::vector<std::string> name_value = utils::split(val, '=');
-               if(name_value.size() > 2) {
-                       std::cerr << "invalid argument '" << val << "'\n";
-                       return false;
-               } else if(name_value.size() == 2) {
-                       const std::string name = name_value.front();
-                       const std::string value = name_value.back();
-
-                       const std::string name_head = 
name.substr(0,name.size()-1);
-                       const char name_tail = name[name.size()-1];
-                       const bool last_digit = isdigit(name_tail) ? true:false;
-                       const size_t side = name_tail - '0';
-
-                       if(last_digit && name_head == "--parm") {
-                               const std::vector<std::string> name_value = 
utils::split(value, ':');
-                               if(name_value.size() != 2) {
-                                       std::cerr << "argument to '" << name << 
"' must be in the format name:value\n";
-                                       return false;
-                               }
-
-                               side_parameters[side][name_value.front()] = 
name_value.back();
-                       } else {
-                               std::cerr << "unrecognized option: '" << name 
<< "'\n";
-                               return false;
-                       }
-               }
-       }
 
        const config &lvl = game_config().find_child("multiplayer", "id", 
scenario);
        if (!lvl) {

Modified: trunk/src/tests/test_commandline_options.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/tests/test_commandline_options.cpp?rev=49823&r1=49822&r2=49823&view=diff
==============================================================================
--- trunk/src/tests/test_commandline_options.cpp (original)
+++ trunk/src/tests/test_commandline_options.cpp Thu Jun  9 11:53:21 2011
@@ -226,6 +226,8 @@
                "--nomusic",
                "--nosound",
                "--nogui",
+               "--parm=7:parmfoo:valfoo",
+               "--parm=8:parmbar:valbar",
                "--path",
                "--preprocess", "preppathfoo", "preptargfoo",
                "--preprocess-defines=DEFFOO,DEFBAR",
@@ -240,8 +242,8 @@
                "--rng-seed=1234",
                "--scenario=scenfoo",
                "--screenshot", "mapfoo", "outssfoo",
-               "--side=1:sidefoo",
-               "--side=2:sidebar",
+               "--side=9:sidefoo",
+               "--side=10:sidebar",
                "--server=servfoo",
                "--smallgui",
                "--test=testfoo",
@@ -299,12 +301,14 @@
        BOOST_CHECK(co.multiplayer_era && *co.multiplayer_era == "erafoo");
        BOOST_CHECK(co.multiplayer_exit_at_end);
        BOOST_CHECK(co.multiplayer_label && *co.multiplayer_label == 
"labelfoo");
-       BOOST_CHECK(!co.multiplayer_parm);
+       BOOST_CHECK(co.multiplayer_parm);
+       BOOST_CHECK(co.multiplayer_parm->at(0).get<0>() == 7 && 
co.multiplayer_parm->at(0).get<1>() == "parmfoo" && 
co.multiplayer_parm->at(0).get<2>() == "valfoo");
+       BOOST_CHECK(co.multiplayer_parm->at(1).get<0>() == 8 && 
co.multiplayer_parm->at(1).get<1>() == "parmbar" && 
co.multiplayer_parm->at(1).get<2>() == "valbar");
        BOOST_CHECK(co.multiplayer_scenario && *co.multiplayer_scenario == 
"scenfoo");
        BOOST_CHECK(co.multiplayer_side);
        BOOST_CHECK(co.multiplayer_side->size() == 2);
-       BOOST_CHECK(co.multiplayer_side->at(0).get<0>() == 1 && 
co.multiplayer_side->at(0).get<1>() == "sidefoo");
-       BOOST_CHECK(co.multiplayer_side->at(1).get<0>() == 2 && 
co.multiplayer_side->at(1).get<1>() == "sidebar");
+       BOOST_CHECK(co.multiplayer_side->at(0).get<0>() == 9 && 
co.multiplayer_side->at(0).get<1>() == "sidefoo");
+       BOOST_CHECK(co.multiplayer_side->at(1).get<0>() == 10 && 
co.multiplayer_side->at(1).get<1>() == "sidebar");
        BOOST_CHECK(co.multiplayer_turns && *co.multiplayer_turns == "42");
        BOOST_CHECK(co.max_fps && *co.max_fps == 100);
        BOOST_CHECK(co.nocache);


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

Reply via email to