| 196 | } |
| 197 | |
| 198 | bool Agent::initImpl(CmdLineParser & cmd_parser) { |
| 199 | bool result = PlayerAgent::initImpl(cmd_parser); |
| 200 | |
| 201 | // read additional options |
| 202 | result &= Strategy::instance().init(cmd_parser); |
| 203 | |
| 204 | rcsc::ParamMap my_params("Additional options"); |
| 205 | my_params.add() |
| 206 | ("numTeammates", "", &num_teammates) |
| 207 | ("numOpponents", "", &num_opponents) |
| 208 | ("playingOffense", "", &playing_offense) |
| 209 | ("serverPort", "", &server_port); |
| 210 | cmd_parser.parse(my_params); |
| 211 | if (cmd_parser.count("help") > 0) { |
| 212 | my_params.printHelp(std::cout); |
| 213 | return false; |
| 214 | } |
| 215 | if (cmd_parser.failed()) { |
| 216 | std::cerr << "player: ***WARNING*** detected unsuppprted options: "; |
| 217 | cmd_parser.print( std::cerr ); |
| 218 | std::cerr << std::endl; |
| 219 | } |
| 220 | |
| 221 | #ifdef ELOG |
| 222 | #else |
| 223 | const std::list<std::string>& args = cmd_parser.args(); |
| 224 | if (std::find(args.begin(), args.end(), "--record") != args.end()) { |
| 225 | std::cerr |
| 226 | << "[Agent Client] ERROR: Action recording requested but no supported." |
| 227 | << " To enable action recording, install https://github.com/mhauskn/librcsc" |
| 228 | << " and recompile with -DELOG. See CMakeLists.txt" |
| 229 | << std::endl; |
| 230 | return false; |
| 231 | } |
| 232 | #endif |
| 233 | |
| 234 | if (!result) { |
| 235 | return false; |
| 236 | } |
| 237 | |
| 238 | if (!Strategy::instance().read(config().configDir())) { |
| 239 | std::cerr << "***ERROR*** Failed to read team strategy." << std::endl; |
| 240 | return false; |
| 241 | } |
| 242 | |
| 243 | if (KickTable::instance().read(config().configDir() + "/kick-table")) { |
| 244 | std::cerr << "Loaded the kick table: [" |
| 245 | << config().configDir() << "/kick-table]" |
| 246 | << std::endl; |
| 247 | } |
| 248 | |
| 249 | assert(num_teammates >= 0); |
| 250 | assert(num_opponents >= 0); |
| 251 | return true; |
| 252 | } |
| 253 | |
| 254 | void Agent::startServer(int server_port) { |
| 255 | std::cout << "[Agent Server] Starting Server on Port " << server_port << std::endl; |