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