Author: zaroth
Date: Thu Jun  9 11:53:18 2011
New Revision: 49822

URL: http://svn.gna.org/viewcvs/wesnoth?rev=49822&view=rev
Log:
Added algorithm option 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=49822&r1=49821&r2=49822&view=diff
==============================================================================
--- trunk/src/commandline_options.cpp (original)
+++ trunk/src/commandline_options.cpp Thu Jun  9 11:53:18 2011
@@ -172,6 +172,7 @@
        multiplayer_opts.add_options()
                ("multiplayer,m", "Starts a multiplayer game. There are 
additional options that can be used as explained below:")
                ("ai-config", po::value<std::vector<std::string> 
>()->composing(), "selects a configuration file to load for this side. <arg> 
should have format side:value")
+               ("algorithm", po::value<std::vector<std::string> 
>()->composing(), "selects a non-standard algorithm to be used by the AI 
controller for this side. <arg> should have format side:value")
                ("controller", po::value<std::vector<std::string> 
>()->composing(), "selects the controller for this side. <arg> should have 
format side:value")
                ("era", po::value<std::string>(), "selects the era to be played 
in by its id.")
                ("exit-at-end", "exit Wesnoth at the end of the scenario.")
@@ -216,6 +217,8 @@
 
        if (vm.count("ai-config"))
                multiplayer_ai_config = 
parse_to_uint_string_tuples_(vm["ai-config"].as<std::vector<std::string> >());
+       if (vm.count("algorithm"))
+               multiplayer_algorithm = 
parse_to_uint_string_tuples_(vm["algorithm"].as<std::vector<std::string> >());
        if (vm.count("bpp"))
                bpp = vm["bpp"].as<int>();
        if (vm.count("campaign"))

Modified: trunk/src/game_controller.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/game_controller.cpp?rev=49822&r1=49821&r2=49822&view=diff
==============================================================================
--- trunk/src/game_controller.cpp (original)
+++ trunk/src/game_controller.cpp Thu Jun  9 11:53:18 2011
@@ -478,6 +478,20 @@
                        side_ai_configs[side] = ai_cfg_name;
                }
        }
+       if (cmdline_opts_.multiplayer_algorithm)
+       {
+               for(std::vector<boost::tuple<unsigned int, std::string> 
>::const_iterator it=cmdline_opts_.multiplayer_algorithm->begin(); 
it!=cmdline_opts_.multiplayer_algorithm->end(); ++it)
+               {
+                       const unsigned int side = it->get<0>();
+                       const std::string algorithm_id = it->get<1>();
+                       if (side > sides_counted)
+                       {
+                               std::cerr << "counted sides: " << side << "\n";
+                               sides_counted = side;
+                       }
+                       side_algorithms[side] = algorithm_id;
+               }
+       }
        if (cmdline_opts_.multiplayer_controller)
        {
                for(std::vector<boost::tuple<unsigned int, std::string> 
>::const_iterator it=cmdline_opts_.multiplayer_controller->begin(); 
it!=cmdline_opts_.multiplayer_controller->end(); ++it)
@@ -536,9 +550,7 @@
                        const bool last_digit = isdigit(name_tail) ? true:false;
                        const size_t side = name_tail - '0';
 
-                       if(last_digit && name_head == "--algorithm") {
-                               side_algorithms[side] = value;
-                       } else if(last_digit && name_head == "--parm") {
+                       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";

Modified: trunk/src/tests/test_commandline_options.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/tests/test_commandline_options.cpp?rev=49822&r1=49821&r2=49822&view=diff
==============================================================================
--- trunk/src/tests/test_commandline_options.cpp (original)
+++ trunk/src/tests/test_commandline_options.cpp Thu Jun  9 11:53:18 2011
@@ -184,6 +184,8 @@
                "wesnoth",
                "--ai-config=1:aifoo",
                "--ai-config=2:aibar",
+               "--algorithm=3:algfoo",
+               "--algorithm=4:algbar",
                "--bpp=32",
                "--campaign=campfoo",
                "--campaign-difficulty=16",
@@ -191,8 +193,8 @@
                "--clock",
                "--config-dir=configdirfoo",
                "--config-path",
-               "--controller=1:confoo",
-               "--controller=2:conbar",
+               "--controller=5:confoo",
+               "--controller=6:conbar",
                "--data-dir=datadirfoo",
                "--debug",
 #ifdef DEBUG_WINDOW_LAYOUT_GRAPHS
@@ -288,10 +290,12 @@
        BOOST_CHECK(co.multiplayer_ai_config->size() == 2);
        BOOST_CHECK(co.multiplayer_ai_config->at(0).get<0>() == 1 && 
co.multiplayer_ai_config->at(0).get<1>() == "aifoo");
        BOOST_CHECK(co.multiplayer_ai_config->at(1).get<0>() == 2 && 
co.multiplayer_ai_config->at(1).get<1>() == "aibar");
-       BOOST_CHECK(!co.multiplayer_algorithm);
+       BOOST_CHECK(co.multiplayer_algorithm);
+       BOOST_CHECK(co.multiplayer_algorithm->at(0).get<0>() == 3 && 
co.multiplayer_algorithm->at(0).get<1>() == "algfoo");
+       BOOST_CHECK(co.multiplayer_algorithm->at(1).get<0>() == 4 && 
co.multiplayer_algorithm->at(1).get<1>() == "algbar");
        BOOST_CHECK(co.multiplayer_controller);
-       BOOST_CHECK(co.multiplayer_controller->at(0).get<0>() == 1 && 
co.multiplayer_controller->at(0).get<1>() == "confoo");
-       BOOST_CHECK(co.multiplayer_controller->at(1).get<0>() == 2 && 
co.multiplayer_controller->at(1).get<1>() == "conbar");
+       BOOST_CHECK(co.multiplayer_controller->at(0).get<0>() == 5 && 
co.multiplayer_controller->at(0).get<1>() == "confoo");
+       BOOST_CHECK(co.multiplayer_controller->at(1).get<0>() == 6 && 
co.multiplayer_controller->at(1).get<1>() == "conbar");
        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");


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

Reply via email to