playerparam.cpp
来自「2009 ROBOCUP 仿真2DSERVER 源码」· C++ 代码 · 共 414 行 · 第 1/2 页
CPP
414 行
&& std::system( ( "ls " + tildeExpand( new_conf ) + " > /dev/null 2>&1" ).c_str() ) != 0 && std::system( "which awk > /dev/null 2>&1" ) == 0 ) { std::cout << "Trying to convert old configuration file '" << PlayerParam::OLD_PLAYER_CONF << "'\n"; char filename[] = "/tmp/rcssplayer-oldconf-XXXXXX"; int fd = mkstemp( filename ); if( fd != -1 ) { close( fd ); std::string command = "awk '/^[ \\t]*$/ {} "; command += "/^[^#]+[:]/ { gsub(/:/, \"=\" ); $1 = \"player::\" $1; } "; command += "/^[ \\t]*[^#:=]+$/ { $1 = \"player::\" $1 \" = true\"; }"; command += "{ print; }' "; command += tildeExpand( PlayerParam::OLD_PLAYER_CONF ); command += " > "; command += filename; if( system( command.c_str() ) == 0 ) { std::cout << "Conversion successful\n"; instance().m_builder->parser()->parse( filename ); } else { std::cout << "Conversion failed\n"; } } else { std::cout << "Conversion failed\n"; } }#endif // not win32}PlayerParam::PlayerParam( rcss::conf::Builder * parent ) : m_builder( new rcss::conf::Builder( parent, VERSION, "player" ) ){ setDefaults(); addParams();}PlayerParam::~PlayerParam(){}voidPlayerParam::addParams(){ addParam( "player_types", player_types, "", 7 ); addParam( "subs_max", subs_max, "", 7 ); addParam( "pt_max", pt_max, "", 7 ); addParam( "player_speed_max_delta_min", player_speed_max_delta_min, "", 7 ); addParam( "player_speed_max_delta_max", player_speed_max_delta_max, "", 7 ); addParam( "stamina_inc_max_delta_factor", stamina_inc_max_delta_factor, "", 7 ); addParam( "player_decay_delta_min", player_decay_delta_min, "", 7 ); addParam( "player_decay_delta_max", player_decay_delta_max, "", 7 ); addParam( "inertia_moment_delta_factor", inertia_moment_delta_factor, "", 7 ); addParam( "dash_power_rate_delta_min", dash_power_rate_delta_min, "", 7 ); addParam( "dash_power_rate_delta_max", dash_power_rate_delta_max, "", 7 ); addParam( "player_size_delta_factor", player_size_delta_factor, "", 7 ); addParam( "kickable_margin_delta_min", kickable_margin_delta_min, "", 7 ); addParam( "kickable_margin_delta_max", kickable_margin_delta_max, "", 7 ); addParam( "kick_rand_delta_factor", kick_rand_delta_factor, "", 7 ); addParam( "extra_stamina_delta_min", extra_stamina_delta_min, "", 7 ); addParam( "extra_stamina_delta_max", extra_stamina_delta_max, "", 7 ); addParam( "effort_max_delta_factor", effort_max_delta_factor, "", 7 ); addParam( "effort_min_delta_factor", effort_min_delta_factor, "", 7 ); addParam( "random_seed", random_seed, "", 8 ); addParam( "new_dash_power_rate_delta_min", new_dash_power_rate_delta_min, "", 8 ); addParam( "new_dash_power_rate_delta_max", new_dash_power_rate_delta_max, "", 8 ); addParam( "new_stamina_inc_max_delta_factor", new_stamina_inc_max_delta_factor, "", 8 ); addParam( "allow_mult_default_type", M_allow_mult_default_type, "", 12 );}template< typename P >voidPlayerParam::addParam( const std::string & name, P & param, const std::string & desc, int version ){ m_builder->addParam( name, param, desc ); m_ver_map[ name ] = version;}template< typename S, typename G >voidPlayerParam::addParam( const std::string& name, const S& setter, const G& getter, const std::string& desc, int version ){ m_builder->addParam( name, setter, getter, desc ); m_ver_map[ name ] = version;}voidPlayerParam::setDefaults(){ player_types = PlayerParam::DEFAULT_PLAYER_TYPES; subs_max = PlayerParam::DEFAULT_SUBS_MAX; pt_max = PlayerParam::DEFAULT_PT_MAX; M_allow_mult_default_type = false; player_speed_max_delta_min = PlayerParam::DEFAULT_PLAYER_SPEED_MAX_DELTA_MIN; player_speed_max_delta_max = PlayerParam::DEFAULT_PLAYER_SPEED_MAX_DELTA_MAX; stamina_inc_max_delta_factor = PlayerParam::DEFAULT_STAMINA_INC_MAX_DELTA_FACTOR; player_decay_delta_min = PlayerParam::DEFAULT_PLAYER_DECAY_DELTA_MIN; player_decay_delta_max = PlayerParam::DEFAULT_PLAYER_DECAY_DELTA_MAX; inertia_moment_delta_factor = PlayerParam::DEFAULT_INERTIA_MOMENT_DELTA_FACTOR; dash_power_rate_delta_min = PlayerParam::DEFAULT_DASH_POWER_RATE_DELTA_MIN; dash_power_rate_delta_max = PlayerParam::DEFAULT_DASH_POWER_RATE_DELTA_MAX; player_size_delta_factor = PlayerParam::DEFAULT_PLAYER_SIZE_DELTA_FACTOR; kickable_margin_delta_min = PlayerParam::DEFAULT_KICKABLE_MARGIN_DELTA_MIN; kickable_margin_delta_max = PlayerParam::DEFAULT_KICKABLE_MARGIN_DELTA_MAX; kick_rand_delta_factor = PlayerParam::DEFAULT_KICK_RAND_DELTA_FACTOR; extra_stamina_delta_min = PlayerParam::DEFAULT_EXTRA_STAMINA_DELTA_MIN; extra_stamina_delta_max = PlayerParam::DEFAULT_EXTRA_STAMINA_DELTA_MAX; effort_max_delta_factor = PlayerParam::DEFAULT_EFFORT_MAX_DELTA_FACTOR; effort_min_delta_factor = PlayerParam::DEFAULT_EFFORT_MIN_DELTA_FACTOR; random_seed = PlayerParam::DEFAULT_RANDOM_SEED; new_dash_power_rate_delta_min = PlayerParam::DEFAULT_NEW_DASH_POWER_RATE_DELTA_MIN; new_dash_power_rate_delta_max = PlayerParam::DEFAULT_NEW_DASH_POWER_RATE_DELTA_MAX; new_stamina_inc_max_delta_factor = PlayerParam::DEFAULT_NEW_STAMINA_INC_MAX_DELTA_FACTOR;}player_params_t PlayerParam::convertToStruct() const{ player_params_t tmp; tmp.player_types = htons( static_cast< Int16 >( player_types ) ); tmp.subs_max = htons( static_cast< Int16 >( subs_max ) ); tmp.pt_max = htons( static_cast< Int16 >( pt_max ) ); tmp.player_speed_max_delta_min = htonl( static_cast< Int32 >( roundint( ( SHOWINFO_SCALE2 * player_speed_max_delta_min ) ) ) ); tmp.player_speed_max_delta_max = htonl( static_cast< Int32 >( roundint( ( SHOWINFO_SCALE2 * player_speed_max_delta_max ) ) ) ); tmp.stamina_inc_max_delta_factor = htonl( static_cast< Int32 >( roundint( ( SHOWINFO_SCALE2 * stamina_inc_max_delta_factor ) ) ) ); tmp.player_decay_delta_min = htonl( static_cast< Int32 >( roundint( ( SHOWINFO_SCALE2 * player_decay_delta_min) ) ) ); tmp.player_decay_delta_max = htonl( static_cast< Int32 >( roundint( ( SHOWINFO_SCALE2 * player_decay_delta_max) ) ) ); tmp.inertia_moment_delta_factor = htonl( static_cast< Int32 >( roundint( ( SHOWINFO_SCALE2 * inertia_moment_delta_factor ) ) ) ); tmp.dash_power_rate_delta_min = htonl( static_cast< Int32 >( roundint( ( SHOWINFO_SCALE2 * dash_power_rate_delta_min ) ) ) ); tmp.dash_power_rate_delta_max = htonl( static_cast< Int32 >( roundint( ( SHOWINFO_SCALE2 * dash_power_rate_delta_max ) ) ) ); tmp.player_size_delta_factor = htonl( static_cast< Int32 >( roundint( ( SHOWINFO_SCALE2 * player_size_delta_factor ) ) ) ); tmp.kickable_margin_delta_min = htonl( static_cast< Int32 >( roundint( ( SHOWINFO_SCALE2 * kickable_margin_delta_min ) ) ) ); tmp.kickable_margin_delta_max = htonl( static_cast< Int32 >( roundint( ( SHOWINFO_SCALE2 * kickable_margin_delta_max ) ) ) ); tmp.kick_rand_delta_factor = htonl( static_cast< Int32 >( roundint( ( SHOWINFO_SCALE2 * kick_rand_delta_factor ) ) ) ); tmp.extra_stamina_delta_min = htonl( static_cast< Int32 >( roundint( ( SHOWINFO_SCALE2 * extra_stamina_delta_min ) ) ) ); tmp.extra_stamina_delta_max = htonl( static_cast< Int32 >( roundint( ( SHOWINFO_SCALE2 * extra_stamina_delta_max ) ) ) ); tmp.effort_max_delta_factor = htonl( static_cast< Int32 >( roundint( ( SHOWINFO_SCALE2 * effort_max_delta_factor ) ) ) ); tmp.effort_min_delta_factor = htonl( static_cast< Int32 >( roundint( ( SHOWINFO_SCALE2 * effort_min_delta_factor ) ) ) ); tmp.random_seed = htonl( static_cast< Int32 >( random_seed ) ); tmp.new_dash_power_rate_delta_min = htonl( static_cast< Int32 >( roundint(( SHOWINFO_SCALE2 * new_dash_power_rate_delta_min ) ) ) ); tmp.new_dash_power_rate_delta_max = htonl( static_cast< Int32 >( roundint( ( SHOWINFO_SCALE2 * new_dash_power_rate_delta_max ) ) ) ); tmp.new_stamina_inc_max_delta_factor = htonl( static_cast< Int32 >( roundint( ( SHOWINFO_SCALE2 * new_stamina_inc_max_delta_factor ) ) ) ); tmp.allow_mult_default_type = htons( static_cast< Int16 >( M_allow_mult_default_type ) ); return tmp;}boolPlayerParam::getInt( const std::string & param, int & value ) const{ return m_builder->get( param, value );}boolPlayerParam::getBool( const std::string & param, bool & value ) const{ return m_builder->get( param, value );}boolPlayerParam::getDoub( const std::string & param, double & value ) const{ return m_builder->get( param, value );}boolPlayerParam::getStr( const std::string & param, std::string & value ) const{ return m_builder->get( param, value );}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?