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 + -
显示快捷键?