📄 fullstatesender.cpp
字号:
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 + -