00001
00002
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00031
00032 #ifndef RCSC_PLAYER_AUDIO_MEMORY_H
00033 #define RCSC_PLAYER_AUDIO_MEMORY_H
00034
00035 #include <rcsc/geom/vector_2d.h>
00036 #include <rcsc/game_time.h>
00037
00038 #include <string>
00039 #include <vector>
00040
00041 namespace rcsc {
00042
00047 class AudioMemory {
00048 public:
00049
00054 struct Ball {
00055 int sender_;
00056 Vector2D pos_;
00057 Vector2D vel_;
00058
00062 Ball( const int sender,
00063 const Vector2D & pos,
00064 const Vector2D & vel )
00065 : sender_( sender )
00066 , pos_( pos )
00067 , vel_( vel )
00068 { }
00069 };
00070
00075 struct Pass {
00076 int sender_;
00077 int receiver_;
00078 Vector2D receive_pos_;
00079
00083 Pass( const int sender,
00084 const int receiver,
00085 const Vector2D & pos )
00086 : sender_( sender )
00087 , receiver_( receiver )
00088 , receive_pos_( pos )
00089 { }
00090 };
00091
00096 struct OurIntercept {
00097 int sender_;
00098 int interceptor_;
00099 int cycle_;
00100
00104 OurIntercept( const int sender,
00105 const int interceptor,
00106 const int cycle )
00107 : sender_( sender )
00108 , interceptor_( interceptor )
00109 , cycle_( cycle )
00110 { }
00111 };
00112
00117 struct OppIntercept {
00118 int sender_;
00119 int interceptor_;
00120 int cycle_;
00121
00125 OppIntercept( const int sender,
00126 const int interceptor,
00127 const int cycle )
00128 : sender_( sender )
00129 , interceptor_( interceptor )
00130 , cycle_( cycle )
00131 { }
00132 };
00133
00138 struct Goalie {
00139 int sender_;
00140 Vector2D pos_;
00141 AngleDeg body_;
00142
00146 Goalie( const int sender,
00147 const Vector2D & pos,
00148 const AngleDeg & body )
00149 : sender_( sender )
00150 , pos_( pos )
00151 , body_( body )
00152 { }
00153 };
00154
00159 struct Player {
00160 int sender_;
00161 int unum_;
00162 Vector2D pos_;
00163 AngleDeg body_;
00164
00168 Player( const int sender,
00169 const int unum,
00170 const Vector2D & pos,
00171 const AngleDeg & body )
00172 : sender_( sender )
00173 , unum_( unum )
00174 , pos_( pos )
00175 , body_( body )
00176 { }
00177 };
00178
00183 struct OffsideLine {
00184 int sender_;
00185 double x_;
00186
00190 OffsideLine( const int sender,
00191 const double & x )
00192 : sender_( sender )
00193 , x_( x )
00194 { }
00195 };
00196
00201 struct DefenseLine {
00202 int sender_;
00203 double x_;
00204
00208 DefenseLine( const int sender,
00209 const double & x )
00210 : sender_( sender )
00211 , x_( x )
00212 { }
00213 };
00214
00219 struct WaitRequest {
00220 int sender_;
00221
00225 WaitRequest( const int sender )
00226 : sender_( sender )
00227 { }
00228 };
00229
00234 struct PassRequest {
00235 int sender_;
00236 Vector2D pos_;
00237
00241 PassRequest( const int sender,
00242 const Vector2D & pos )
00243 : sender_( sender )
00244 , pos_( pos )
00245 { }
00246 };
00247
00252 struct Stamina {
00253 int sender_;
00254 double rate_;
00255
00259 Stamina( const int sender,
00260 const double & rate )
00261 : sender_( sender )
00262 , rate_( rate )
00263 { }
00264 };
00265
00270 struct Recovery {
00271 int sender_;
00272 double rate_;
00273
00277 Recovery( const int sender,
00278 const double & rate )
00279 : sender_( sender )
00280 , rate_( rate )
00281 { }
00282 };
00283
00288 struct Dribble {
00289 int sender_;
00290 Vector2D target_;
00291 int queue_count_;
00292
00296 Dribble( const int sender,
00297 const Vector2D & target,
00298 const int queue_count )
00299 : sender_( sender )
00300 , target_( target )
00301 , queue_count_( queue_count )
00302 { }
00303 };
00304
00309 struct FreeMessage {
00310 int sender_;
00311 std::string message_;
00312
00316 FreeMessage( const int sender,
00317 const std::string & message )
00318 : sender_( sender )
00319 , message_( message )
00320 { }
00321 };
00322
00323 protected:
00324
00325 std::vector< Ball > M_ball;
00326 GameTime M_ball_time;
00327
00328 std::vector< Pass > M_pass;
00329 GameTime M_pass_time;
00330
00331 std::vector< OurIntercept > M_our_intercept;
00332 GameTime M_our_intercept_time;
00333
00334 std::vector< OppIntercept > M_opp_intercept;
00335 GameTime M_opp_intercept_time;
00336
00337 std::vector< Goalie > M_goalie;
00338 GameTime M_goalie_time;
00339
00340 std::vector< Player > M_player;
00341 GameTime M_player_time;
00342
00343 std::vector< OffsideLine > M_offside_line;
00344 GameTime M_offside_line_time;
00345
00346 std::vector< DefenseLine > M_defense_line;
00347 GameTime M_defense_line_time;
00348
00349 std::vector< WaitRequest > M_wait_request;
00350 GameTime M_wait_request_time;
00351
00352 std::vector< PassRequest > M_pass_request;
00353 GameTime M_pass_request_time;
00354
00355 std::vector< Stamina > M_stamina;
00356 GameTime M_stamina_time;
00357
00358 std::vector< Recovery > M_recovery;
00359 GameTime M_recovery_time;
00360
00361 std::vector< Dribble > M_dribble;
00362 GameTime M_dribble_time;
00363
00364 std::vector< FreeMessage > M_free_message;
00365 GameTime M_free_message_time;
00366
00367 private:
00368
00369 AudioMemory( const AudioMemory & );
00370 AudioMemory & operator=( const AudioMemory & );
00371
00372 public:
00373
00377 AudioMemory();
00378
00382 virtual
00383 ~AudioMemory()
00384 { }
00385
00386
00387
00388
00393 const
00394 std::vector< Ball > & ball() const
00395 {
00396 return M_ball;
00397 }
00398
00403 const
00404 GameTime & ballTime() const
00405 {
00406 return M_ball_time;
00407 }
00408
00413 const
00414 std::vector< Pass > & pass() const
00415 {
00416 return M_pass;
00417 }
00418
00423 const
00424 GameTime & passTime() const
00425 {
00426 return M_pass_time;
00427 }
00428
00433 const
00434 std::vector< OurIntercept > & ourIntercept() const
00435 {
00436 return M_our_intercept;
00437 }
00438
00443 const
00444 GameTime & ourInterceptTime() const
00445 {
00446 return M_our_intercept_time;
00447 }
00448
00453 const
00454 std::vector< OppIntercept > & oppIntercept() const
00455 {
00456 return M_opp_intercept;
00457 }
00458
00463 const
00464 GameTime & oppInterceptTime() const
00465 {
00466 return M_opp_intercept_time;
00467 }
00468
00473 const
00474 std::vector< Goalie > & goalie() const
00475 {
00476 return M_goalie;
00477 }
00478
00483 const
00484 GameTime & goalieTime() const
00485 {
00486 return M_goalie_time;
00487 }
00488
00493 const
00494 std::vector< Player > & player() const
00495 {
00496 return M_player;
00497 }
00498
00503 const
00504 GameTime & playerTime() const
00505 {
00506 return M_player_time;
00507 }
00508
00513 const
00514 std::vector< OffsideLine > & offsideLine() const
00515 {
00516 return M_offside_line;
00517 }
00518
00523 const
00524 GameTime & offsideLineTime() const
00525 {
00526 return M_offside_line_time;
00527 }
00528
00533 const
00534 std::vector< DefenseLine > & defenseLine() const
00535 {
00536 return M_defense_line;
00537 }
00538
00543 const
00544 GameTime & defenseLineTime() const
00545 {
00546 return M_defense_line_time;
00547 }
00548
00553 const
00554 std::vector< WaitRequest > & waitRequest() const
00555 {
00556 return M_wait_request;
00557 }
00558
00563 const
00564 GameTime & waitRequestTime() const
00565 {
00566 return M_wait_request_time;
00567 }
00568
00573 const
00574 std::vector< PassRequest > & passRequest() const
00575 {
00576 return M_pass_request;
00577 }
00578
00583 const
00584 GameTime & passRequestTime() const
00585 {
00586 return M_pass_request_time;
00587 }
00588
00593 const
00594 std::vector< Stamina > & stamina() const
00595 {
00596 return M_stamina;
00597 }
00598
00603 const
00604 GameTime & staminaTime() const
00605 {
00606 return M_stamina_time;
00607 }
00608
00613 const
00614 std::vector< Recovery > & recovery() const
00615 {
00616 return M_recovery;
00617 }
00618
00623 const
00624 GameTime & recoveryTime() const
00625 {
00626 return M_recovery_time;
00627 }
00628
00633 const
00634 std::vector< Dribble > & dribble() const
00635 {
00636 return M_dribble;
00637 }
00638
00643 const
00644 GameTime & dribbleTime() const
00645 {
00646 return M_dribble_time;
00647 }
00648
00653 const
00654 std::vector< FreeMessage > & freeMessage() const
00655 {
00656 return M_free_message;
00657 }
00658
00663 const
00664 GameTime & freeMessageTime() const
00665 {
00666 return M_free_message_time;
00667 }
00668
00669
00670
00671
00679 virtual
00680 void setBall( const int sender,
00681 const Vector2D & pos,
00682 const Vector2D & vel,
00683 const GameTime & current );
00684
00692 virtual
00693 void setPass( const int sender,
00694 const int receiver,
00695 const Vector2D & pos,
00696 const GameTime & current );
00697
00704 virtual
00705 void setIntercept( const int sender,
00706 const int interceptor,
00707 const int cycle,
00708 const GameTime & current );
00709
00717 virtual
00718 void setOpponentGoalie( const int sender,
00719 const Vector2D & pos,
00720 const AngleDeg & body,
00721 const GameTime & current );
00722
00731 virtual
00732 void setPlayer( const int sender,
00733 const int unum,
00734 const Vector2D & pos,
00735 const AngleDeg & body,
00736 const GameTime & current );
00737
00744 virtual
00745 void setOffsideLine( const int sender,
00746 const double & offside_line_x,
00747 const GameTime & current );
00748
00755 virtual
00756 void setDefenseLine( const int sender,
00757 const double & defense_line_x,
00758 const GameTime & current );
00759
00765 virtual
00766 void setWaitRequest( const int sender,
00767 const GameTime & current );
00768
00775 virtual
00776 void setPassRequest( const int sender,
00777 const Vector2D & request_pos,
00778 const GameTime & current );
00779
00786 virtual
00787 void setStamina( const int sender,
00788 const double & rate,
00789 const GameTime & current );
00790
00797 virtual
00798 void setRecovery( const int sender,
00799 const double & rate,
00800 const GameTime & current );
00801
00809 virtual
00810 void setDribbleTarget( const int sender,
00811 const Vector2D & pos,
00812 const int queue_count,
00813 const GameTime & current );
00814
00821 virtual
00822 void setFreeMessage( const int sender,
00823 const std::string & msg,
00824 const GameTime & current );
00825
00826 };
00827
00828 }
00829
00830 #endif