⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fullstatesender.cpp

📁 2009 ROBOCUP 仿真2DSERVER 源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    const float quantize_step = .001;    char side = ( p.side() == LEFT ? 'l' : 'r' );    serializer().serializeFSPlayerBegin( transport(),                                         side,                                         p.unum(),                                         false, // goalie info not sent                                         0, // player type info not sent                                         Quantize( p.pos().x,                                                   quantize_step ), //pos_x                                         Quantize( p.pos().y,                                                   quantize_step ), //pos_y                                         Quantize( p.vel().x,                                                   quantize_step ), //vel_x                                         Quantize( p.vel().y,                                                   quantize_step ), //vel_y                                         Quantize( Rad2Deg( p.angleBodyCommitted() ),                                                   quantize_step ),                                         Quantize( Rad2Deg( p.angleNeckCommitted() ),                                                   quantize_step ) ); //neck_angle    serializer().serializeFSPlayerStamina( transport(),                                           int( p.stamina() ),                                           Quantize( p.effort(), .0001 ),                                           Quantize( p.recovery(), .0001 ),                                           p.staminaCapacity() );    serializer().serializeFSPlayerEnd( transport() );}/*!//===================================================================////  CLASS: FullStateSenderPlayerV8////  DESC: version 8 of the full state protocol.////===================================================================*/FullStateSenderPlayerV8::FullStateSenderPlayerV8( const Params & params )    : FullStateSenderPlayerV5( params ){}FullStateSenderPlayerV8::~FullStateSenderPlayerV8(){}voidFullStateSenderPlayerV8::sendSelf(){    rcss::geom::Vector2D arm_vec;    self().arm().getRelDest( rcss::geom::Vector2D ( self().pos().x,                                                    self().pos().y ),                             self().angleBodyCommitted()                             + self().angleNeckCommitted(),                             arm_vec );    serializer().serializeFSCounts( transport(),                                    self().kickCount(),                                    self().dashCount(),                                    self().turnCount(),                                    self().catchCount(),                                    self().moveCount(),                                    self().turnNeckCount(),                                    self().changeViewCount(),                                    self().sayCount() );    serializer().serializeArm( transport(),                               self().arm().getCyclesTillMovable(),                               self().arm().getCyclesTillExpiry(),                               arm_vec.getMag(), Rad2IDegRound( arm_vec.getHead() ),                               self().arm().getCounter() );}voidFullStateSenderPlayerV8::sendScore(){    int left = 0, right = 0;    if ( stadium().teamLeft().enabled() )    {        left = stadium().teamLeft().point();    }    if ( stadium().teamRight().enabled() )    {        right = stadium().teamRight().point();    }    if ( self().side() == RIGHT )    {        std::swap( left, right );    }    serializer().serializeFSScore( transport(),                                   left,                                   right );}voidFullStateSenderPlayerV8::sendBall(){    serializer().serializeFSBall( transport(),                                  stadium().ball().pos().x,                                  stadium().ball().pos().y,                                  stadium().ball().vel().x,                                  stadium().ball().vel().y );}voidFullStateSenderPlayerV8::sendPlayer( const Player & p ){    char side = ( p.team()->side() == LEFT ? 'l' : 'r' );    serializer().serializeFSPlayerBegin( transport(),                                         side,                                         p.unum(),                                         p.isGoalie(),                                         p.playerTypeId(),                                         p.pos().x,                                         p.pos().y,                                         p.vel().x,                                         p.vel().y,                                         Rad2Deg( p.angleBodyCommitted() ),                                         Rad2Deg( p.angleNeckCommitted() ) );    if ( p.arm().isPointing() )    {        rcss::geom::Vector2D arm_vec;        p.arm().getRelDest( rcss::geom::Vector2D( p.pos().x, p.pos().y ),                            p.angleBodyCommitted() + p.angleNeckCommitted(),                            arm_vec );        serializer().serializeFSPlayerArm( transport(),                                           arm_vec.getMag(),                                           arm_vec.getHead() );    }    serializer().serializeFSPlayerStamina( transport(),                                           p.stamina(),                                           p.effort(),                                           p.recovery(),                                           p.staminaCapacity() );    serializer().serializeFSPlayerEnd( transport() );}/*!//===================================================================////  CLASS: FullStateSenderPlayerV13////  DESC: version 13 of the full state protocol. The tackling or//  kikcing information are added.////===================================================================*/FullStateSenderPlayerV13::FullStateSenderPlayerV13( const Params & params )    : FullStateSenderPlayerV8( params ){}FullStateSenderPlayerV13::~FullStateSenderPlayerV13(){}voidFullStateSenderPlayerV13::sendPlayer( const Player & p ){    char side = ( p.team()->side() == LEFT ? 'l' : 'r' );    serializer().serializeFSPlayerBegin( transport(),                                         side,                                         p.unum(),                                         p.isGoalie(),                                         p.playerTypeId(),                                         p.pos().x,                                         p.pos().y,                                         p.vel().x,                                         p.vel().y,                                         Rad2Deg( p.angleBodyCommitted() ),                                         Rad2Deg( p.angleNeckCommitted() ) );    if ( p.arm().isPointing() )    {        rcss::geom::Vector2D arm_vec;        p.arm().getRelDest( rcss::geom::Vector2D( p.pos().x, p.pos().y ),                            p.angleBodyCommitted() + p.angleNeckCommitted(),                            arm_vec );        serializer().serializeFSPlayerArm( transport(),                                           arm_vec.getMag(),                                           arm_vec.getHead() );    }    serializer().serializeFSPlayerStamina( transport(),                                           p.stamina(),                                           p.effort(),                                           p.recovery(),                                           p.staminaCapacity() );    serializer().serializeFSPlayerState( transport(), p );    serializer().serializeFSPlayerEnd( transport() );}/*!//===================================================================////  Register senders for different versions////===================================================================*/namespace fullstatesender {template< typename Sender >FullStateSenderPlayer::Ptrcreate( const FullStateSenderPlayer::Params & params ){    return FullStateSenderPlayer::Ptr( new Sender( params ) );}RegHolder vp1 = FullStateSenderPlayer::factory().autoReg( &create< FullStateSenderPlayerV1 >, 1 );RegHolder vp2 = FullStateSenderPlayer::factory().autoReg( &create< FullStateSenderPlayerV1 >, 2 );RegHolder vp3 = FullStateSenderPlayer::factory().autoReg( &create< FullStateSenderPlayerV1 >, 3 );RegHolder vp4 = FullStateSenderPlayer::factory().autoReg( &create< FullStateSenderPlayerV1 >, 4 );RegHolder vp5 = FullStateSenderPlayer::factory().autoReg( &create< FullStateSenderPlayerV5 >, 5 );RegHolder vp6 = FullStateSenderPlayer::factory().autoReg( &create< FullStateSenderPlayerV5 >, 6 );RegHolder vp7 = FullStateSenderPlayer::factory().autoReg( &create< FullStateSenderPlayerV5 >, 7 );RegHolder vp8 = FullStateSenderPlayer::factory().autoReg( &create< FullStateSenderPlayerV8 >, 8 );RegHolder vp9 = FullStateSenderPlayer::factory().autoReg( &create< FullStateSenderPlayerV8 >, 9 );RegHolder vp10 = FullStateSenderPlayer::factory().autoReg( &create< FullStateSenderPlayerV8 >, 10 );RegHolder vp11 = FullStateSenderPlayer::factory().autoReg( &create< FullStateSenderPlayerV8 >, 11 );RegHolder vp12 = FullStateSenderPlayer::factory().autoReg( &create< FullStateSenderPlayerV8 >, 12 );RegHolder vp13 = FullStateSenderPlayer::factory().autoReg( &create< FullStateSenderPlayerV8 >, 13 );}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -