From ad41d7aa205ba3143c9618d9db14b00851d93a96 Mon Sep 17 00:00:00 2001 From: naderzare Date: Mon, 5 Aug 2024 19:05:20 -0300 Subject: [PATCH 01/15] use thrift instead of grpc --- generate.sh | 3 +- idl/soccer_service.thrift | 1165 +++ protos/service.proto | 1208 --- requirements.txt | 3 +- server.py | 132 +- service_pb2.py | 298 - service_pb2.pyi | 2128 ----- service_pb2_grpc.py | 330 - soccer/Game-remote | 173 + soccer/Game.py | 1655 ++++ soccer/__init__.py | 1 + soccer/constants.py | 14 + soccer/ttypes.py | 15222 ++++++++++++++++++++++++++++++++++ src/BHV_Block.py | 29 +- src/DM_NoBall.py | 19 +- src/DM_PlayOn.py | 5 +- src/DM_SetPlay.py | 6 +- src/DM_WithBall.py | 18 +- src/DecisionMaker.py | 17 +- src/FormationStrategy.py | 6 +- src/GEN_Dribble.py | 26 +- src/GEN_Pass.py | 82 +- src/IAgent.py | 47 +- src/IBallAction.py | 69 +- src/IBallActionGenerator.py | 5 +- src/IDecisionMaker.py | 1 - src/IPositionStrategy.py | 4 +- src/SampleCoachAgent.py | 42 +- src/SamplePlayerAgent.py | 23 +- src/SampleTrainerAgent.py | 29 +- src/Tools.py | 22 +- src/_DecisionMaker.py | 4 +- 32 files changed, 18538 insertions(+), 4248 deletions(-) create mode 100644 idl/soccer_service.thrift delete mode 100644 protos/service.proto delete mode 100644 service_pb2.py delete mode 100644 service_pb2.pyi delete mode 100644 service_pb2_grpc.py create mode 100755 soccer/Game-remote create mode 100644 soccer/Game.py create mode 100644 soccer/__init__.py create mode 100644 soccer/constants.py create mode 100644 soccer/ttypes.py diff --git a/generate.sh b/generate.sh index 35b8c55..82de731 100755 --- a/generate.sh +++ b/generate.sh @@ -1 +1,2 @@ -python3 -m grpc_tools.protoc -I./protos --python_out=./ --pyi_out=./ --grpc_python_out=./ ./protos/*.proto \ No newline at end of file +#python3 -m grpc_tools.protoc -I./protos --python_out=./ --pyi_out=./ --grpc_python_out=./ ./protos/*.proto +thrift --gen py -out ./ ./idl/*.thrift \ No newline at end of file diff --git a/idl/soccer_service.thrift b/idl/soccer_service.thrift new file mode 100644 index 0000000..37bbe83 --- /dev/null +++ b/idl/soccer_service.thrift @@ -0,0 +1,1165 @@ +namespace cpp soccer +namespace py soccer + +enum ViewWidth { + NARROW = 0, + NORMAL = 1, + WIDE = 2 +} + +enum AgentType { + PlayerT = 0, + CoachT = 1, + TrainerT = 2 +} + +struct ThriftVector2D { + 1: double x, + 2: double y, + 3: double dist, + 4: double angle +} + +struct Ball { + 1: ThriftVector2D position, + 2: ThriftVector2D relative_position, + 3: ThriftVector2D seen_position, + 4: ThriftVector2D heard_position, + 5: ThriftVector2D velocity, + 6: ThriftVector2D seen_velocity, + 7: ThriftVector2D heard_velocity, + 8: i32 pos_count, + 9: i32 seen_pos_count, + 10: i32 heard_pos_count, + 11: i32 vel_count, + 12: i32 seen_vel_count, + 13: i32 heard_vel_count, + 14: i32 lost_count, + 15: i32 ghost_count, + 16: double dist_from_self, + 17: double angle_from_self +} + +enum Side { + UNKNOWN = 0, + LEFT = 1, + RIGHT = 2 +} + +enum LoggerLevel { + NoneLevel = 0, + SYSTEM = 1, + SENSOR = 2, + WORLD = 4, + ACTION = 8, + INTERCEPT = 16, + KICK = 32, + HOLD = 64, + DRIBBLE = 128, + PASS = 256, + CROSS = 512, + SHOOT = 1024, + CLEAR = 2048, + BLOCK = 4096, + MARK = 8192, + POSITIONING = 16384, + ROLE = 32768, + TEAM = 65536, + COMMUNICATION = 131072, + ANALYZER = 262144, + ACTION_CHAIN = 524288, + PLAN = 1048576 +} + +struct Player { + 1: ThriftVector2D position, + 2: ThriftVector2D seen_position, + 3: ThriftVector2D heard_position, + 4: ThriftVector2D velocity, + 5: ThriftVector2D seen_velocity, + 6: i32 pos_count, + 7: i32 seen_pos_count, + 8: i32 heard_pos_count, + 9: i32 vel_count, + 10: i32 seen_vel_count, + 11: i32 ghost_count, + 12: double dist_from_self, + 13: double angle_from_self, + 14: i32 id, + 15: Side side, + 16: i32 uniform_number, + 17: i32 uniform_number_count, + 18: bool is_goalie, + 19: double body_direction, + 20: i32 body_direction_count, + 21: double face_direction, + 22: i32 face_direction_count, + 23: double point_to_direction, + 24: i32 point_to_direction_count, + 25: bool is_kicking, + 26: double dist_from_ball, + 27: double angle_from_ball, + 28: i32 ball_reach_steps, + 29: bool is_tackling, + 30: i32 type_id +} + +struct Self { + 1: ThriftVector2D position, + 2: ThriftVector2D seen_position, + 3: ThriftVector2D heard_position, + 4: ThriftVector2D velocity, + 5: ThriftVector2D seen_velocity, + 6: i32 pos_count, + 7: i32 seen_pos_count, + 8: i32 heard_pos_count, + 9: i32 vel_count, + 10: i32 seen_vel_count, + 11: i32 ghost_count, + 12: i32 id, + 13: Side side, + 14: i32 uniform_number, + 15: i32 uniform_number_count, + 16: bool is_goalie, + 17: double body_direction, + 18: i32 body_direction_count, + 19: double face_direction, + 20: i32 face_direction_count, + 21: double point_to_direction, + 22: i32 point_to_direction_count, + 23: bool is_kicking, + 24: double dist_from_ball, + 25: double angle_from_ball, + 26: i32 ball_reach_steps, + 27: bool is_tackling, + 28: double relative_neck_direction, + 29: double stamina, + 30: bool is_kickable, + 31: double catch_probability, + 32: double tackle_probability, + 33: double foul_probability, + 34: ViewWidth view_width, + 35: i32 type_id, + 36: double kick_rate +} + +enum InterceptActionType { + UNKNOWN_Intercept_Action_Type = 0, + OMNI_DASH = 1, + TURN_FORWARD_DASH = 2, + TURN_BACKWARD_DASH = 3 +} + +struct InterceptInfo { + 1: InterceptActionType action_type, + 2: i32 turn_steps, + 3: double turn_angle, + 4: i32 dash_steps, + 5: double dash_power, + 6: double dash_dir, + 7: ThriftVector2D final_self_position, + 8: double final_ball_dist, + 9: double final_stamina, + 10: double value +} + +struct InterceptTable { + 1: i32 self_reach_steps, + 2: i32 first_teammate_reach_steps, + 3: i32 second_teammate_reach_steps, + 4: i32 first_opponent_reach_steps, + 5: i32 second_opponent_reach_steps, + 6: i32 first_teammate_id, + 7: i32 second_teammate_id, + 8: i32 first_opponent_id, + 9: i32 second_opponent_id, + 10: list self_intercept_info +} + +enum GameModeType { + BeforeKickOff = 0, + TimeOver = 1, + PlayOn = 2, + KickOff_ = 3, + KickIn_ = 4, + FreeKick_ = 5, + CornerKick_ = 6, + GoalKick_ = 7, + AfterGoal_ = 8, + OffSide_ = 9, + PenaltyKick_ = 10, + FirstHalfOver = 11, + Pause = 12, + Human = 13, + FoulCharge_ = 14, + FoulPush_ = 15, + FoulMultipleAttacker_ = 16, + FoulBallOut_ = 17, + BackPass_ = 18, + FreeKickFault_ = 19, + CatchFault_ = 20, + IndFreeKick_ = 21, + PenaltySetup_ = 22, + PenaltyReady_ = 23, + PenaltyTaken_ = 24, + PenaltyMiss_ = 25, + PenaltyScore_ = 26, + IllegalDefense_ = 27, + PenaltyOnfield_ = 28, + PenaltyFoul_ = 29, + GoalieCatch_ = 30, + ExtendHalf = 31, + MODE_MAX = 32 +} + +struct WorldModel { + 1: InterceptTable intercept_table, + 2: string our_team_name, + 3: string their_team_name, + 4: Side our_side, + 5: i32 last_set_play_start_time, + 6: Self myself, + 7: Ball ball, + 8: list teammates, + 9: list opponents, + 10: list unknowns, + 11: map our_players_dict, + 12: map their_players_dict, + 13: i32 our_goalie_uniform_number, + 14: i32 their_goalie_uniform_number, + 15: double offside_line_x, + 16: i32 offside_line_x_count, + 17: i32 kickable_teammate_id, + 18: i32 kickable_opponent_id, + 19: Side last_kick_side, + 20: i32 last_kicker_uniform_number, + 21: i32 cycle, + 22: GameModeType game_mode_type, + 23: i32 left_team_score, + 24: i32 right_team_score, + 25: bool is_our_set_play, + 26: bool is_their_set_play, + 27: i32 stoped_cycle, + 28: i32 our_team_score, + 29: i32 their_team_score, + 30: bool is_penalty_kick_mode, + 31: map helios_home_positions +} + +struct State { + 1: AgentType agent_type, + 2: WorldModel world_model, + 3: WorldModel full_world_model +} + +struct InitMessage { + 1: AgentType agent_type, + 2: bool debug_mode +} + +struct Dash { + 1: double power, + 2: double relative_direction +} + +struct Turn { + 1: double relative_direction +} + +struct Kick { + 1: double power, + 2: double relative_direction +} + +struct Tackle { + 1: double power_or_dir, + 2: bool foul +} + +struct Catch {} + +struct Move { + 1: double x, + 2: double y +} + +struct TurnNeck { + 1: double moment +} + +struct ChangeView { + 1: ViewWidth view_width +} + +struct BallMessage { + 1: ThriftVector2D ball_position, + 2: ThriftVector2D ball_velocity +} + +struct PassMessage { + 1: i32 receiver_uniform_number, + 2: ThriftVector2D receiver_point, + 3: ThriftVector2D ball_position, + 4: ThriftVector2D ball_velocity +} + +struct InterceptMessage { + 1: bool our, + 2: i32 uniform_number, + 3: i32 cycle +} + +struct GoalieMessage { + 1: i32 goalie_uniform_number, + 2: ThriftVector2D goalie_position, + 3: double goalie_body_direction +} + +struct GoalieAndPlayerMessage { + 1: i32 goalie_uniform_number, + 2: ThriftVector2D goalie_position, + 3: double goalie_body_direction, + 4: i32 player_uniform_number, + 5: ThriftVector2D player_position +} + +struct OffsideLineMessage { + 1: double offside_line_x +} + +struct DefenseLineMessage { + 1: double defense_line_x +} + +struct WaitRequestMessage {} + +struct SetplayMessage { + 1: i32 wait_step +} + +struct PassRequestMessage { + 1: ThriftVector2D target_point +} + +struct StaminaMessage { + 1: double stamina +} + +struct RecoveryMessage { + 1: double recovery +} + +struct StaminaCapacityMessage { + 1: double stamina_capacity +} + +struct DribbleMessage { + 1: ThriftVector2D target_point, + 2: i32 queue_count +} + +struct BallGoalieMessage { + 1: ThriftVector2D ball_position, + 2: ThriftVector2D ball_velocity, + 3: ThriftVector2D goalie_position, + 4: double goalie_body_direction +} + +struct OnePlayerMessage { + 1: i32 uniform_number, + 2: ThriftVector2D position +} + +struct TwoPlayerMessage { + 1: i32 first_uniform_number, + 2: ThriftVector2D first_position, + 3: i32 second_uniform_number, + 4: ThriftVector2D second_position +} + +struct ThreePlayerMessage { + 1: i32 first_uniform_number, + 2: ThriftVector2D first_position, + 3: i32 second_uniform_number, + 4: ThriftVector2D second_position, + 5: i32 third_uniform_number, + 6: ThriftVector2D third_position +} + +struct SelfMessage { + 1: ThriftVector2D self_position, + 2: double self_body_direction, + 3: double self_stamina +} + +struct TeammateMessage { + 1: i32 uniform_number, + 2: ThriftVector2D position, + 3: double body_direction +} + +struct OpponentMessage { + 1: i32 uniform_number, + 2: ThriftVector2D position, + 3: double body_direction +} + +struct BallPlayerMessage { + 1: ThriftVector2D ball_position, + 2: ThriftVector2D ball_velocity, + 3: i32 uniform_number, + 4: ThriftVector2D player_position, + 5: double body_direction +} + +struct Say { + 1: optional BallMessage ball_message, + 2: optional PassMessage pass_message, + 3: optional InterceptMessage intercept_message, + 4: optional GoalieMessage goalie_message, + 5: optional GoalieAndPlayerMessage goalie_and_player_message, + 6: optional OffsideLineMessage offside_line_message, + 7: optional DefenseLineMessage defense_line_message, + 8: optional WaitRequestMessage wait_request_message, + 9: optional SetplayMessage setplay_message, + 10: optional PassRequestMessage pass_request_message, + 11: optional StaminaMessage stamina_message, + 12: optional RecoveryMessage recovery_message, + 13: optional StaminaCapacityMessage stamina_capacity_message, + 14: optional DribbleMessage dribble_message, + 15: optional BallGoalieMessage ball_goalie_message, + 16: optional OnePlayerMessage one_player_message, + 17: optional TwoPlayerMessage two_player_message, + 18: optional ThreePlayerMessage three_player_message, + 19: optional SelfMessage self_message, + 20: optional TeammateMessage teammate_message, + 21: optional OpponentMessage opponent_message, + 22: optional BallPlayerMessage ball_player_message +} + +struct PointTo { + 1: double x, + 2: double y +} + +struct PointToOf {} + +struct AttentionTo { + 1: Side side, + 2: i32 unum +} + +struct AttentionToOf {} + +struct AddText { + 1: LoggerLevel level, + 2: string message +} + +struct AddPoint { + 1: LoggerLevel level, + 2: ThriftVector2D point, + 3: string color +} + +struct AddLine { + 1: LoggerLevel level, + 2: ThriftVector2D start_point, + 3: ThriftVector2D end_point, + 4: string color +} + +struct AddArc { + 1: LoggerLevel level, + 2: ThriftVector2D center, + 3: double radius, + 4: double start_angle, + 5: double span_angel, + 6: string color +} + +struct AddCircle { + 1: LoggerLevel level, + 2: ThriftVector2D center, + 3: double radius, + 4: string color, + 5: bool fill +} + +struct AddTriangle { + 1: LoggerLevel level, + 2: ThriftVector2D point1, + 3: ThriftVector2D point2, + 4: ThriftVector2D point3, + 5: string color, + 6: bool fill +} + +struct AddRectangle { + 1: LoggerLevel level, + 2: double left, + 3: double top, + 4: double length, + 5: double width, + 6: string color, + 7: bool fill +} + +struct AddSector { + 1: LoggerLevel level, + 2: ThriftVector2D center, + 3: double min_radius, + 4: double max_radius, + 5: double start_angle, + 6: double span_angel, + 7: string color, + 8: bool fill +} + +struct AddMessage { + 1: LoggerLevel level, + 2: ThriftVector2D position, + 3: string message, + 4: string color +} + +struct Log { + 1: optional AddText add_text, + 2: optional AddPoint add_point, + 3: optional AddLine add_line, + 4: optional AddArc add_arc, + 5: optional AddCircle add_circle, + 6: optional AddTriangle add_triangle, + 7: optional AddRectangle add_rectangle, + 8: optional AddSector add_sector, + 9: optional AddMessage add_message +} + +struct DebugClient { + 1: string message +} + +struct Body_GoToPoint { + 1: ThriftVector2D target_point, + 2: double distance_threshold, + 3: double max_dash_power +} + +struct Body_SmartKick { + 1: ThriftVector2D target_point, + 2: double first_speed, + 3: double first_speed_threshold, + 4: i32 max_steps +} + +struct Bhv_BeforeKickOff { + 1: ThriftVector2D point +} + +struct Bhv_BodyNeckToBall {} + +struct Bhv_BodyNeckToPoint { + 1: ThriftVector2D point +} + +struct Bhv_Emergency {} + +struct Bhv_GoToPointLookBall { + 1: ThriftVector2D target_point, + 2: double distance_threshold, + 3: double max_dash_power +} + +struct Bhv_NeckBodyToBall { + 1: double angle_buf +} + +struct Bhv_NeckBodyToPoint { + 1: ThriftVector2D point, + 2: double angle_buf +} + +struct Bhv_ScanField {} + +struct Body_AdvanceBall {} + +struct Body_ClearBall {} + +struct Body_Dribble { + 1: ThriftVector2D target_point, + 2: double distance_threshold, + 3: double dash_power, + 4: i32 dash_count, + 5: bool dodge +} + +struct Body_GoToPointDodge { + 1: ThriftVector2D target_point, + 2: double dash_power +} + +struct Body_HoldBall { + 1: bool do_turn, + 2: ThriftVector2D turn_target_point, + 3: ThriftVector2D kick_target_point +} + +struct Body_Intercept { + 1: bool save_recovery, + 2: ThriftVector2D face_point +} + +struct Body_KickOneStep { + 1: ThriftVector2D target_point, + 2: double first_speed, + 3: bool force_mode +} + +struct Body_StopBall {} + +struct Body_StopDash { + 1: bool save_recovery +} + +struct Body_TackleToPoint { + 1: ThriftVector2D target_point, + 2: double min_probability, + 3: double min_speed +} + +struct Body_TurnToAngle { + 1: double angle +} + +struct Body_TurnToBall { + 1: i32 cycle +} + +struct Body_TurnToPoint { + 1: ThriftVector2D target_point, + 2: i32 cycle +} + +struct Focus_MoveToPoint { + 1: ThriftVector2D target_point +} + +struct Focus_Reset {} + +struct Neck_ScanField {} + +struct Neck_ScanPlayers {} + +struct Neck_TurnToBallAndPlayer { + 1: Side side, + 2: i32 uniform_number, + 3: i32 count_threshold +} + +struct Neck_TurnToBallOrScan { + 1: i32 count_threshold +} + +struct Neck_TurnToBall {} + +struct Neck_TurnToGoalieOrScan { + 1: i32 count_threshold +} + +struct Neck_TurnToLowConfTeammate {} + +struct Neck_TurnToPlayerOrScan { + 1: Side side, + 2: i32 uniform_number, + 3: i32 count_threshold +} + +struct Neck_TurnToPoint { + 1: ThriftVector2D target_point +} + +struct Neck_TurnToRelative { + 1: double angle +} + +struct View_ChangeWidth { + 1: ViewWidth view_width +} + +struct View_Normal {} + +struct View_Synch {} + +struct View_Wide {} + +struct HeliosGoalie {} + +struct HeliosGoalieMove {} + +struct HeliosGoalieKick {} + +struct HeliosShoot {} + +struct HeliosChainAction { + 1: bool direct_pass, + 2: bool lead_pass, + 3: bool through_pass, + 4: bool short_dribble, + 5: bool long_dribble, + 6: bool cross, + 7: bool simple_pass, + 8: bool simple_dribble, + 9: bool simple_shoot +} + +struct HeliosBasicOffensive {} + +struct HeliosBasicMove {} + +struct HeliosSetPlay {} + +struct HeliosPenalty {} + +struct HeliosCommunicaion {} + +struct PlayerAction { + 1: optional Dash dash, + 2: optional Turn turn, + 3: optional Kick kick, + 4: optional Tackle tackle, + 5: optional Catch catch_action, + 6: optional Move move, + 7: optional TurnNeck turn_neck, + 8: optional ChangeView change_view, + 9: optional Say say, + 10: optional PointTo point_to, + 11: optional PointToOf point_to_of, + 12: optional AttentionTo attention_to, + 13: optional AttentionToOf attention_to_of, + 14: optional Log log, + 15: optional DebugClient debug_client, + 16: optional Body_GoToPoint body_go_to_point, + 17: optional Body_SmartKick body_smart_kick, + 18: optional Bhv_BeforeKickOff bhv_before_kick_off, + 19: optional Bhv_BodyNeckToBall bhv_body_neck_to_ball, + 20: optional Bhv_BodyNeckToPoint bhv_body_neck_to_point, + 21: optional Bhv_Emergency bhv_emergency, + 22: optional Bhv_GoToPointLookBall bhv_go_to_point_look_ball, + 23: optional Bhv_NeckBodyToBall bhv_neck_body_to_ball, + 24: optional Bhv_NeckBodyToPoint bhv_neck_body_to_point, + 25: optional Bhv_ScanField bhv_scan_field, + 26: optional Body_AdvanceBall body_advance_ball, + 27: optional Body_ClearBall body_clear_ball, + 28: optional Body_Dribble body_dribble, + 29: optional Body_GoToPointDodge body_go_to_point_dodge, + 30: optional Body_HoldBall body_hold_ball, + 31: optional Body_Intercept body_intercept, + 32: optional Body_KickOneStep body_kick_one_step, + 33: optional Body_StopBall body_stop_ball, + 34: optional Body_StopDash body_stop_dash, + 35: optional Body_TackleToPoint body_tackle_to_point, + 36: optional Body_TurnToAngle body_turn_to_angle, + 37: optional Body_TurnToBall body_turn_to_ball, + 38: optional Body_TurnToPoint body_turn_to_point, + 39: optional Focus_MoveToPoint focus_move_to_point, + 40: optional Focus_Reset focus_reset, + 41: optional Neck_ScanField neck_scan_field, + 42: optional Neck_ScanPlayers neck_scan_players, + 43: optional Neck_TurnToBallAndPlayer neck_turn_to_ball_and_player, + 44: optional Neck_TurnToBallOrScan neck_turn_to_ball_or_scan, + 45: optional Neck_TurnToBall neck_turn_to_ball, + 46: optional Neck_TurnToGoalieOrScan neck_turn_to_goalie_or_scan, + 47: optional Neck_TurnToLowConfTeammate neck_turn_to_low_conf_teammate, + 48: optional Neck_TurnToPlayerOrScan neck_turn_to_player_or_scan, + 49: optional Neck_TurnToPoint neck_turn_to_point, + 50: optional Neck_TurnToRelative neck_turn_to_relative, + 51: optional View_ChangeWidth view_change_width, + 52: optional View_Normal view_normal, + 53: optional View_Synch view_synch, + 54: optional View_Wide view_wide, + 55: optional HeliosGoalie helios_goalie, + 56: optional HeliosGoalieMove helios_goalie_move, + 57: optional HeliosGoalieKick helios_goalie_kick, + 58: optional HeliosShoot helios_shoot, + 59: optional HeliosChainAction helios_chain_action, + 60: optional HeliosBasicOffensive helios_basic_offensive, + 61: optional HeliosBasicMove helios_basic_move, + 62: optional HeliosSetPlay helios_set_play, + 63: optional HeliosPenalty helios_penalty, + 64: optional HeliosCommunicaion helios_communication +} + +struct PlayerActions { + 1: list actions +} + +struct ChangePlayerType { + 1: i32 uniform_number, + 2: i32 type +} + +struct DoHeliosSubstitute {} + +struct DoHeliosSayPlayerTypes {} + +struct CoachAction { + 1: optional ChangePlayerType change_player_types, + 2: optional DoHeliosSubstitute do_helios_substitute, + 3: optional DoHeliosSayPlayerTypes do_helios_say_player_types +} + +struct CoachActions { + 1: list actions +} + +struct DoKickOff {} + +struct DoMoveBall { + 1: ThriftVector2D position, + 2: optional ThriftVector2D velocity +} + +struct DoMovePlayer { + 1: bool our_side, + 2: i32 uniform_number, + 3: ThriftVector2D position, + 4: double body_direction +} + +struct DoRecover {} + +struct DoChangeMode { + 1: GameModeType game_mode_type, + 2: Side side +} + +struct DoChangePlayerType { + 1: bool our_side, + 2: i32 uniform_number, + 3: i32 type +} + +struct TrainerAction { + 1: optional DoKickOff do_kick_off, + 2: optional DoMoveBall do_move_ball, + 3: optional DoMovePlayer do_move_player, + 4: optional DoRecover do_recover, + 5: optional DoChangeMode do_change_mode, + 6: optional DoChangePlayerType do_change_player_type +} + +struct TrainerActions { + 1: list actions +} + +struct ServerParam { + 1: AgentType agent_type, + 2: double inertia_moment, + 3: double player_size, + 4: double player_decay, + 5: double player_rand, + 6: double player_weight, + 7: double player_speed_max, + 8: double player_accel_max, + 9: double stamina_max, + 10: double stamina_inc_max, + 11: double recover_init, + 12: double recover_dec_thr, + 13: double recover_min, + 14: double recover_dec, + 15: double effort_init, + 16: double effort_dec_thr, + 17: double effort_min, + 18: double effort_dec, + 19: double effort_inc_thr, + 20: double effort_inc, + 21: double kick_rand, + 22: bool team_actuator_noise, + 23: double player_rand_factor_l, + 24: double player_rand_factor_r, + 25: double kick_rand_factor_l, + 26: double kick_rand_factor_r, + 27: double ball_size, + 28: double ball_decay, + 29: double ball_rand, + 30: double ball_weight, + 31: double ball_speed_max, + 32: double ball_accel_max, + 33: double dash_power_rate, + 34: double kick_power_rate, + 35: double kickable_margin, + 36: double control_radius, + 37: double control_radius_width, + 38: double max_power, + 39: double min_power, + 40: double max_moment, + 41: double min_moment, + 42: double max_neck_moment, + 43: double min_neck_moment, + 44: double max_neck_angle, + 45: double min_neck_angle, + 46: double visible_angle, + 47: double visible_distance, + 48: double wind_dir, + 49: double wind_force, + 50: double wind_angle, + 51: double wind_rand, + 52: double kickable_area, + 53: double catch_area_l, + 54: double catch_area_w, + 55: double catch_probability, + 56: i32 goalie_max_moves, + 57: double corner_kick_margin, + 58: double offside_active_area_size, + 59: bool wind_none, + 60: bool use_wind_random, + 61: i32 coach_say_count_max, + 62: i32 coach_say_msg_size, + 63: i32 clang_win_size, + 64: i32 clang_define_win, + 65: i32 clang_meta_win, + 66: i32 clang_advice_win, + 67: i32 clang_info_win, + 68: i32 clang_mess_delay, + 69: i32 clang_mess_per_cycle, + 70: i32 half_time, + 71: i32 simulator_step, + 72: i32 send_step, + 73: i32 recv_step, + 74: i32 sense_body_step, + 75: i32 lcm_step, + 76: i32 player_say_msg_size, + 77: i32 player_hear_max, + 78: i32 player_hear_inc, + 79: i32 player_hear_decay, + 80: i32 catch_ban_cycle, + 81: i32 slow_down_factor, + 82: bool use_offside, + 83: bool kickoff_offside, + 84: double offside_kick_margin, + 85: double audio_cut_dist, + 86: double dist_quantize_step, + 87: double landmark_dist_quantize_step, + 88: double dir_quantize_step, + 89: double dist_quantize_step_l, + 90: double dist_quantize_step_r, + 91: double landmark_dist_quantize_step_l, + 92: double landmark_dist_quantize_step_r, + 93: double dir_quantize_step_l, + 94: double dir_quantize_step_r, + 95: bool coach_mode, + 96: bool coach_with_referee_mode, + 97: bool use_old_coach_hear, + 98: double slowness_on_top_for_left_team, + 99: double slowness_on_top_for_right_team, + 100: i32 start_goal_l, + 101: i32 start_goal_r, + 102: bool fullstate_l, + 103: bool fullstate_r, + 104: i32 drop_ball_time, + 105: bool synch_mode, + 106: i32 synch_offset, + 107: i32 synch_micro_sleep, + 108: i32 point_to_ban, + 109: i32 point_to_duration, + 110: i32 player_port, + 111: i32 trainer_port, + 112: i32 online_coach_port, + 113: bool verbose_mode, + 114: i32 coach_send_vi_step, + 115: string replay_file, + 116: string landmark_file, + 117: bool send_comms, + 118: bool text_logging, + 119: bool game_logging, + 120: i32 game_log_version, + 121: string text_log_dir, + 122: string game_log_dir, + 123: string text_log_fixed_name, + 124: string game_log_fixed_name, + 125: bool use_text_log_fixed, + 126: bool use_game_log_fixed, + 127: bool use_text_log_dated, + 128: bool use_game_log_dated, + 129: string log_date_format, + 130: bool log_times, + 131: bool record_message, + 132: i32 text_log_compression, + 133: i32 game_log_compression, + 134: bool use_profile, + 135: double tackle_dist, + 136: double tackle_back_dist, + 137: double tackle_width, + 138: double tackle_exponent, + 139: i32 tackle_cycles, + 140: double tackle_power_rate, + 141: i32 freeform_wait_period, + 142: i32 freeform_send_period, + 143: bool free_kick_faults, + 144: bool back_passes, + 145: bool proper_goal_kicks, + 146: double stopped_ball_vel, + 147: i32 max_goal_kicks, + 148: i32 clang_del_win, + 149: i32 clang_rule_win, + 150: bool auto_mode, + 151: i32 kick_off_wait, + 152: i32 connect_wait, + 153: i32 game_over_wait, + 154: string team_l_start, + 155: string team_r_start, + 156: bool keepaway_mode, + 157: double keepaway_length, + 158: double keepaway_width, + 159: bool keepaway_logging, + 160: string keepaway_log_dir, + 161: string keepaway_log_fixed_name, + 162: bool keepaway_log_fixed, + 163: bool keepaway_log_dated, + 164: i32 keepaway_start, + 165: i32 nr_normal_halfs, + 166: i32 nr_extra_halfs, + 167: bool penalty_shoot_outs, + 168: i32 pen_before_setup_wait, + 169: i32 pen_setup_wait, + 170: i32 pen_ready_wait, + 171: i32 pen_taken_wait, + 172: i32 pen_nr_kicks, + 173: i32 pen_max_extra_kicks, + 174: double pen_dist_x, + 175: bool pen_random_winner, + 176: bool pen_allow_mult_kicks, + 177: double pen_max_goalie_dist_x, + 178: bool pen_coach_moves_players, + 179: string module_dir, + 180: double ball_stuck_area, + 181: string coach_msg_file, + 182: double max_tackle_power, + 183: double max_back_tackle_power, + 184: double player_speed_max_min, + 185: double extra_stamina, + 186: i32 synch_see_offset, + 187: i32 extra_half_time, + 188: double stamina_capacity, + 189: double max_dash_angle, + 190: double min_dash_angle, + 191: double dash_angle_step, + 192: double side_dash_rate, + 193: double back_dash_rate, + 194: double max_dash_power, + 195: double min_dash_power, + 196: double tackle_rand_factor, + 197: double foul_detect_probability, + 198: double foul_exponent, + 199: i32 foul_cycles, + 200: bool golden_goal, + 201: double red_card_probability, + 202: i32 illegal_defense_duration, + 203: i32 illegal_defense_number, + 204: double illegal_defense_dist_x, + 205: double illegal_defense_width, + 206: string fixed_teamname_l, + 207: string fixed_teamname_r, + 208: double max_catch_angle, + 209: double min_catch_angle, + 210: i32 random_seed, + 211: double long_kick_power_factor, + 212: i32 long_kick_delay, + 213: i32 max_monitors, + 214: double catchable_area, + 215: double real_speed_max, + 216: double pitch_half_length, + 217: double pitch_half_width, + 218: double our_penalty_area_line_x, + 219: double their_penalty_area_line_x, + 220: double penalty_area_half_width, + 221: double penalty_area_length, + 222: double goal_width +} + +struct PlayerParam { + 1: AgentType agent_type, + 2: i32 player_types, + 3: i32 subs_max, + 4: i32 pt_max, + 5: bool allow_mult_default_type, + 6: double player_speed_max_delta_min, + 7: double player_speed_max_delta_max, + 8: double stamina_inc_max_delta_factor, + 9: double player_decay_delta_min, + 10: double player_decay_delta_max, + 11: double inertia_moment_delta_factor, + 12: double dash_power_rate_delta_min, + 13: double dash_power_rate_delta_max, + 14: double player_size_delta_factor, + 15: double kickable_margin_delta_min, + 16: double kickable_margin_delta_max, + 17: double kick_rand_delta_factor, + 18: double extra_stamina_delta_min, + 19: double extra_stamina_delta_max, + 20: double effort_max_delta_factor, + 21: double effort_min_delta_factor, + 22: i32 random_seed, + 23: double new_dash_power_rate_delta_min, + 24: double new_dash_power_rate_delta_max, + 25: double new_stamina_inc_max_delta_factor, + 26: double kick_power_rate_delta_min, + 27: double kick_power_rate_delta_max, + 28: double foul_detect_probability_delta_factor, + 29: double catchable_area_l_stretch_min, + 30: double catchable_area_l_stretch_max +} + +struct PlayerType { + 1: AgentType agent_type, + 2: i32 id, + 3: double stamina_inc_max, + 4: double player_decay, + 5: double inertia_moment, + 6: double dash_power_rate, + 7: double player_size, + 8: double kickable_margin, + 9: double kick_rand, + 10: double extra_stamina, + 11: double effort_max, + 12: double effort_min, + 13: double kick_power_rate, + 14: double foul_detect_probability, + 15: double catchable_area_l_stretch, + 16: double unum_far_length, + 17: double unum_too_far_length, + 18: double team_far_length, + 19: double team_too_far_length, + 20: double player_max_observation_length, + 21: double ball_vel_far_length, + 22: double ball_vel_too_far_length, + 23: double ball_max_observation_length, + 24: double flag_chg_far_length, + 25: double flag_chg_too_far_length, + 26: double flag_max_observation_length, + 27: double kickable_area, + 28: double reliable_catchable_dist, + 29: double max_catchable_dist, + 30: double real_speed_max, + 31: double player_speed_max2, + 32: double real_speed_max2, + 33: i32 cycles_to_reach_max_speed, + 34: double player_speed_max +} + +struct Empty {} + +struct InitMessageFromServer {} + +service Game { + PlayerActions GetPlayerActions(1: State state), + CoachActions GetCoachActions(1: State state), + TrainerActions GetTrainerActions(1: State state), + void SendInitMessage(1: InitMessage init_message), + void SendServerParams(1: ServerParam server_param), + void SendPlayerParams(1: PlayerParam player_param), + void SendPlayerType(1: PlayerType player_type), + InitMessageFromServer GetInitMessage(1: Empty empty), + void SendByeCommand(1: Empty empty) +} + diff --git a/protos/service.proto b/protos/service.proto deleted file mode 100644 index caea7d9..0000000 --- a/protos/service.proto +++ /dev/null @@ -1,1208 +0,0 @@ -syntax = "proto3"; - -package protos; - -enum ViewWidth { - NARROW = 0; - NORMAL = 1; - WIDE = 2; -} - -message Vector2D { - float x = 1; - float y = 2; - float dist = 3; - float angle = 4; -} - -message Ball { - Vector2D position = 1; - Vector2D relative_position = 2; - Vector2D seen_position = 3; - Vector2D heard_position = 4; - Vector2D velocity = 5; - Vector2D seen_velocity = 6; - Vector2D heard_velocity = 7; - int32 pos_count = 8; - int32 seen_pos_count = 9; - int32 heard_pos_count = 10; - int32 vel_count = 11; - int32 seen_vel_count = 12; - int32 heard_vel_count = 13; - int32 lost_count = 14; - int32 ghost_count = 15; - float dist_from_self = 16; - float angle_from_self = 17; -} - -enum Side { - UNKNOWN = 0; - LEFT = 1; - RIGHT = 2; -} - -enum LoggerLevel{ - None = 0; - SYSTEM = 0x00000001; - SENSOR = 0x00000002; - WORLD = 0x00000004; - ACTION = 0x00000008; - INTERCEPT = 0x00000010; - KICK = 0x00000020; - HOLD = 0x00000040; - DRIBBLE = 0x00000080; - PASS = 0x00000100; - CROSS = 0x00000200; - SHOOT = 0x00000400; - CLEAR = 0x00000800; - BLOCK = 0x00001000; - MARK = 0x00002000; - POSITIONING = 0x00004000; - ROLE = 0x00008000; - TEAM = 0x00010000; - COMMUNICATION = 0x00020000; - ANALYZER = 0x00040000; - ACTION_CHAIN = 0x00080000; - PLAN = 0x00100000; - // TRAINING = 0x80000000; - // LEVEL_ANY = 0xffffffff; -} - -message Player { - Vector2D position = 1; - Vector2D seen_position = 2; - Vector2D heard_position = 3; - Vector2D velocity = 4; - Vector2D seen_velocity = 5; - int32 pos_count = 6; - int32 seen_pos_count = 7; - int32 heard_pos_count = 8; - int32 vel_count = 9; - int32 seen_vel_count = 10; - int32 ghost_count = 11; - float dist_from_self = 12; - float angle_from_self = 13; - int32 id = 14; - Side side = 15; - int32 uniform_number = 16; - int32 uniform_number_count = 17; - bool is_goalie = 18; - float body_direction = 19; - int32 body_direction_count = 20; - float face_direction = 21; - int32 face_direction_count = 22; - float point_to_direction = 23; - int32 point_to_direction_count = 24; - bool is_kicking = 25; - float dist_from_ball = 26; - float angle_from_ball = 27; - int32 ball_reach_steps = 28; - bool is_tackling = 29; - int32 type_id = 30; -} - -message Self { - Vector2D position = 1; - Vector2D seen_position = 2; - Vector2D heard_position = 3; - Vector2D velocity = 4; - Vector2D seen_velocity = 5; - int32 pos_count = 6; - int32 seen_pos_count = 7; - int32 heard_pos_count = 8; - int32 vel_count = 9; - int32 seen_vel_count = 10; - int32 ghost_count = 11; - int32 id = 12; - Side side = 13; - int32 uniform_number = 14; - int32 uniform_number_count = 15; - bool is_goalie = 16; - float body_direction = 17; - int32 body_direction_count = 18; - float face_direction = 19; - int32 face_direction_count = 20; - float point_to_direction = 21; - int32 point_to_direction_count = 22; - bool is_kicking = 23; - float dist_from_ball = 24; - float angle_from_ball = 25; - int32 ball_reach_steps = 26; - bool is_tackling = 27; - float relative_neck_direction = 28; - float stamina = 29; - bool is_kickable = 30; - float catch_probability = 31; - float tackle_probability = 32; - float foul_probability = 33; - ViewWidth view_width = 34; - int32 type_id = 35; - float kick_rate = 36; -} - -enum InterceptActionType { - UNKNOWN_Intercept_Action_Type = 0; - OMNI_DASH = 1; - TURN_FORWARD_DASH = 2; - TURN_BACKWARD_DASH = 3; -} - -message InterceptInfo { - InterceptActionType action_type = 1; - int32 turn_steps = 2; - float turn_angle = 3; - int32 dash_steps = 4; - float dash_power = 5; - float dash_dir = 6; - Vector2D final_self_position = 7; - float final_ball_dist = 8; - float final_stamina = 9; - float value = 10; -} - -message InterceptTable { - int32 self_reach_steps = 1; - int32 first_teammate_reach_steps = 2; - int32 second_teammate_reach_steps = 3; - int32 first_opponent_reach_steps = 4; - int32 second_opponent_reach_steps = 5; - int32 first_teammate_id = 6; - int32 second_teammate_id = 7; - int32 first_opponent_id = 8; - int32 second_opponent_id = 9; - repeated InterceptInfo self_intercept_info = 10; -} - -enum GameModeType { - BeforeKickOff = 0; - TimeOver = 1; - PlayOn = 2; - KickOff_ = 3; - KickIn_ = 4; - FreeKick_ = 5; - CornerKick_ = 6; - GoalKick_ = 7; - AfterGoal_ = 8; - OffSide_ = 9; - PenaltyKick_ = 10; - FirstHalfOver = 11; - Pause = 12; - Human = 13; - FoulCharge_ = 14; - FoulPush_ = 15; - FoulMultipleAttacker_ = 16; - FoulBallOut_ = 17; - BackPass_ = 18; - FreeKickFault_ = 19; - CatchFault_ = 20; - IndFreeKick_ = 21; - PenaltySetup_ = 22; - PenaltyReady_ = 23; - PenaltyTaken_ = 24; - PenaltyMiss_ = 25; - PenaltyScore_ = 26; - IllegalDefense_ = 27; - PenaltyOnfield_ = 28; - PenaltyFoul_ = 29; - GoalieCatch_ = 30; - ExtendHalf = 31; - MODE_MAX = 32; -} - -message WorldModel { - InterceptTable intercept_table = 1; - string our_team_name = 2; - string their_team_name = 3; - Side our_side = 4; - int32 last_set_play_start_time = 5; - Self self = 6; - Ball ball = 7; - repeated Player teammates = 8; - repeated Player opponents = 9; - repeated Player unknowns = 10; - map our_players_dict = 11; - map their_players_dict = 12; - int32 our_goalie_uniform_number = 13; - int32 their_goalie_uniform_number = 14; - float offside_line_x = 15; - int32 ofside_line_x_count = 16; - int32 kickable_teammate_id = 17; - int32 kickable_opponent_id = 18; - Side last_kick_side = 19; - int32 last_kicker_uniform_number = 20; - int32 cycle = 21; - GameModeType game_mode_type = 22; - int32 left_team_score = 23; - int32 right_team_score = 24; - bool is_our_set_play = 25; - bool is_their_set_play = 26; - int32 stoped_cycle = 27; - int32 our_team_score = 28; - int32 their_team_score = 29; - bool is_penalty_kick_mode = 30; - map helios_home_positions = 31; -} - -message State { - AgentType agent_type = 1; - WorldModel world_model = 2; - WorldModel full_world_model = 3; - -} - -enum AgentType { - PlayerT = 0; - CoachT = 1; - TrainerT = 2; -} - -message InitMessage { - AgentType agent_type = 1; - bool debug_mode = 2; -} - -message Dash { - float power = 1; - float relative_direction = 2; -} - -message Turn { - float relative_direction = 1; -} - -message Kick { - float power = 1; - float relative_direction = 2; -} - -message Tackle { - float power_or_dir = 1; - bool foul = 2; -} - -message Catch { - -} - -message Move { - float x = 1; - float y = 2; -} - -message TurnNeck { - float moment = 1; -} - -message ChangeView { - ViewWidth view_width = 1; -} - -message BallMessage { - Vector2D ball_position = 1; - Vector2D ball_velocity = 2; -} - -message PassMessage { - int32 receiver_uniform_number = 1; - Vector2D receiver_point = 2; - Vector2D ball_position = 3; - Vector2D ball_velocity = 4; -} - -message InterceptMessage { - bool our = 1; - int32 uniform_number = 2; - int32 cycle = 3; -} - -message GoalieMessage { - int32 goalie_uniform_number = 1; - Vector2D goalie_position = 2; - float goalie_body_direction = 3; -} - -message GoalieAndPlayerMessage { - int32 goalie_uniform_number = 1; - Vector2D goalie_position = 2; - float goalie_body_direction = 3; - - int32 player_uniform_number = 4; - Vector2D player_position = 5; -} - -message OffsideLineMessage { - float offside_line_x = 1; -} - -message DefenseLineMessage { - float defense_line_x = 1; -} - -message WaitRequestMessage { -} - -message SetplayMessage { - int32 wait_step = 1; -} - -message PassRequestMessage { - Vector2D target_point = 1; -} - -message StaminaMessage { - float stamina = 1; -} - -message RecoveryMessage { - float recovery = 1; -} - -message StaminaCapacityMessage { - float stamina_capacity = 1; -} - -message DribbleMessage { - Vector2D target_point = 1; - int32 queue_count = 2; -} - -message BallGoalieMessage { - Vector2D ball_position = 1; - Vector2D ball_velocity = 2; - - Vector2D goalie_position = 3; - float goalie_body_direction = 4; -} - -message OnePlayerMessage { - int32 uniform_number = 1; - Vector2D position = 2; -} - -message TwoPlayerMessage { - int32 first_uniform_number = 1; - Vector2D first_position = 2; - - int32 second_uniform_number = 3; - Vector2D second_position = 4; -} - -message ThreePlayerMessage { - int32 first_uniform_number = 1; - Vector2D first_position = 2; - - int32 second_uniform_number = 3; - Vector2D second_position = 4; - - int32 third_uniform_number = 5; - Vector2D third_position = 6; -} - -message SelfMessage { - Vector2D self_position = 1; - float self_body_direction = 2; - float self_stamina = 3; -} - -message TeammateMessage { - int32 uniform_number = 1; - Vector2D position = 2; - float body_direction = 3; -} - -message OpponentMessage { - int32 uniform_number = 1; - Vector2D position = 2; - float body_direction = 3; -} - -message BallPlayerMessage { - Vector2D ball_position = 1; - Vector2D ball_velocity = 2; - - int32 uniform_number = 3; - Vector2D player_position = 4; - float body_direction = 5; -} - -message Say { - oneof message { - BallMessage ball_message = 1; - PassMessage pass_message = 2; - InterceptMessage intercept_message = 3; - GoalieMessage goalie_message = 4; - GoalieAndPlayerMessage goalie_and_player_message = 5; - OffsideLineMessage offside_line_message = 6; - DefenseLineMessage defense_line_message = 7; - WaitRequestMessage wait_request_message = 8; - SetplayMessage setplay_message = 9; - PassRequestMessage pass_request_message = 10; - StaminaMessage stamina_message = 11; - RecoveryMessage recovery_message = 12; - StaminaCapacityMessage stamina_capacity_message = 13; - DribbleMessage dribble_message = 14; - BallGoalieMessage ball_goalie_message = 15; - OnePlayerMessage one_player_message = 16; - TwoPlayerMessage two_player_message = 17; - ThreePlayerMessage three_player_message = 18; - SelfMessage self_message = 19; - TeammateMessage teammate_message = 20; - OpponentMessage opponent_message = 21; - BallPlayerMessage ball_player_message = 22; - } -} - -message PointTo { - float x = 1; - float y = 2; -} - -message PointToOf { - -} - -message AttentionTo { - Side side = 1; - int32 unum = 2; -} - -message AttentionToOf { - -} - -message AddText{ - LoggerLevel level = 1; - string message = 2; -} - -message AddPoint{ - LoggerLevel level = 1; - Vector2D point = 2; - string color = 3; -} - -message AddLine{ - LoggerLevel level = 1; - Vector2D start = 2; - Vector2D end = 3; - string color = 4; -} - -message AddArc{ - LoggerLevel level = 1; - Vector2D center = 2; - float radius = 3; - float start_angle = 4; - float span_angel = 5; - string color = 6; -} - -message AddCircle{ - LoggerLevel level = 1; - Vector2D center = 2; - float radius = 3; - string color = 4; - bool fill = 5; -} - -message AddTriangle{ - LoggerLevel level = 1; - Vector2D point1 = 2; - Vector2D point2 = 3; - Vector2D point3 = 4; - string color = 5; - bool fill = 6; -} - -message AddRectangle{ - LoggerLevel level = 1; - float left = 2; - float top = 3; - float length = 4; - float width = 5; - string color = 6; - bool fill = 7; -} - -message AddSector{ - LoggerLevel level = 1; - Vector2D center = 2; - float min_radius = 3; - float max_radius = 4; - float start_angle = 5; - float span_angel = 6; - string color = 7; - bool fill = 8; -} - -message AddMessage{ - LoggerLevel level = 1; - Vector2D position = 2; - string message = 3; - string color = 4; -} - -message Log { - oneof log { - AddText add_text = 1; - AddPoint add_point = 2; - AddLine add_line = 3; - AddArc add_arc = 4; - AddCircle add_circle = 5; - AddTriangle add_triangle = 6; - AddRectangle add_rectangle = 7; - AddSector add_sector = 8; - AddMessage add_message = 9; - } -} - -message DebugClient { - string message = 1; -} - -message Body_GoToPoint { // todo more variables - Vector2D target_point = 1; - float distance_threshold = 2; - float max_dash_power = 3; -} - -message Body_SmartKick { // todo more variables - Vector2D target_point = 1; - float first_speed = 2; - float first_speed_threshold = 3; - int32 max_steps = 4; -} - -message Bhv_BeforeKickOff { - Vector2D point = 1; -} - -message Bhv_BodyNeckToBall { -} - -message Bhv_BodyNeckToPoint { - Vector2D point = 1; -} - -message Bhv_Emergency { -} - -message Bhv_GoToPointLookBall { - Vector2D target_point = 1; - float distance_threshold = 2; - float max_dash_power = 3; -} - -message Bhv_NeckBodyToBall { - float angle_buf = 1; -} - -message Bhv_NeckBodyToPoint { - Vector2D point = 1; - float angle_buf = 2; -} - -message Bhv_ScanField { -} - -message Body_AdvanceBall { -} - -message Body_ClearBall { -} - -message Body_Dribble { - Vector2D target_point = 1; - float distance_threshold = 2; - float dash_power = 3; - int32 dash_count = 4; - bool dodge = 5; -} - -message Body_GoToPointDodge { - Vector2D target_point = 1; - float dash_power = 2; -} - -message Body_HoldBall { - bool do_turn = 1; - Vector2D turn_target_point = 2; - Vector2D kick_target_point = 3; -} - -message Body_Intercept { - bool save_recovery = 1; - Vector2D face_point = 2; -} - -message Body_KickOneStep { - Vector2D target_point = 1; - float first_speed = 2; - bool force_mode = 3; -} - -message Body_StopBall { -} - -message Body_StopDash { - bool save_recovery = 1; -} - -message Body_TackleToPoint { - Vector2D target_point = 1; - float min_probability = 2; - float min_speed = 3; -} - -message Body_TurnToAngle { - float angle = 1; -} - -message Body_TurnToBall { - int32 cycle = 1; -} - -message Body_TurnToPoint { - Vector2D target_point = 1; - int32 cycle = 2; -} - -message Focus_MoveToPoint { - Vector2D target_point = 1; -} - -message Focus_Reset { -} - -message Neck_ScanField { -} - -message Neck_ScanPlayers { // todo min/max_angle -} - -message Neck_TurnToBallAndPlayer { - Side side = 1; - int32 uniform_number = 2; - int32 count_threshold = 3; -} - -message Neck_TurnToBallOrScan { - int32 count_threshold = 1; -} - -message Neck_TurnToBall { -} - -message Neck_TurnToGoalieOrScan { - int32 count_threshold = 1; -} - -message Neck_TurnToLowConfTeammate { -} - -message Neck_TurnToPlayerOrScan { - Side side = 1; - int32 uniform_number = 2; - int32 count_threshold = 3; -} - -message Neck_TurnToPoint { - Vector2D target_point = 1; -} - -message Neck_TurnToRelative { - float angle = 1; -} - -message View_ChangeWidth { - ViewWidth view_width = 1; -} - -message View_Normal { -} - -message View_Synch { -} - -message View_Wide { -} - -message HeliosGoalie {} - -message HeliosGoalieMove {} - -message HeliosGoalieKick {} - -message HeliosShoot {} - -message HeliosChainAction { - bool direct_pass = 1; - bool lead_pass = 2; - bool through_pass = 3; - bool short_dribble = 4; - bool long_dribble = 5; - bool cross = 6; - bool simple_pass = 7; - bool simple_dribble = 8; - bool simple_shoot = 9; -} - -message HeliosBasicOffensive {} - -message HeliosBasicMove {} - -message HeliosSetPlay {} - -message HeliosPenalty {} - -message HeliosCommunicaion {} - -message PlayerAction { - oneof action { - Dash dash = 1; - Turn turn = 2; - Kick kick = 3; - Tackle tackle = 4; - Catch catch = 5; - Move move = 6; - TurnNeck turn_neck = 7; - ChangeView change_view = 8; - Say say = 9; - PointTo point_to = 10; - PointToOf point_to_of = 11; - AttentionTo attention_to = 12; - AttentionToOf attention_to_of = 13; - Log log = 14; - DebugClient debug_client = 15; - Body_GoToPoint body_go_to_point = 16; - Body_SmartKick body_smart_kick = 17; - Bhv_BeforeKickOff bhv_before_kick_off = 18; - Bhv_BodyNeckToBall bhv_body_neck_to_ball = 19; - Bhv_BodyNeckToPoint bhv_body_neck_to_point = 20; - Bhv_Emergency bhv_emergency = 21; - Bhv_GoToPointLookBall bhv_go_to_point_look_ball = 22; - Bhv_NeckBodyToBall bhv_neck_body_to_ball = 23; - Bhv_NeckBodyToPoint bhv_neck_body_to_point = 24; - Bhv_ScanField bhv_scan_field = 25; - Body_AdvanceBall body_advance_ball = 26; - Body_ClearBall body_clear_ball = 27; - Body_Dribble body_dribble = 28; - Body_GoToPointDodge body_go_to_point_dodge = 29; - Body_HoldBall body_hold_ball = 30; - Body_Intercept body_intercept = 31; - Body_KickOneStep body_kick_one_step = 32; - Body_StopBall body_stop_ball = 33; - Body_StopDash body_stop_dash = 34; - Body_TackleToPoint body_tackle_to_point = 35; - Body_TurnToAngle body_turn_to_angle = 36; - Body_TurnToBall body_turn_to_ball = 37; - Body_TurnToPoint body_turn_to_point = 38; - Focus_MoveToPoint focus_move_to_point = 39; - Focus_Reset focus_reset = 40; - Neck_ScanField neck_scan_field = 41; - Neck_ScanPlayers neck_scan_players = 42; - Neck_TurnToBallAndPlayer neck_turn_to_ball_and_player = 43; - Neck_TurnToBallOrScan neck_turn_to_ball_or_scan = 44; - Neck_TurnToBall neck_turn_to_ball = 45; - Neck_TurnToGoalieOrScan neck_turn_to_goalie_or_scan = 46; - Neck_TurnToLowConfTeammate neck_turn_to_low_conf_teammate = 47; - Neck_TurnToPlayerOrScan neck_turn_to_player_or_scan = 48; - Neck_TurnToPoint neck_turn_to_point = 49; - Neck_TurnToRelative neck_turn_to_relative = 50; - View_ChangeWidth view_change_width = 51; - View_Normal view_normal = 52; - View_Synch view_synch = 53; - View_Wide view_wide = 54; - HeliosGoalie helios_goalie = 55; - HeliosGoalieMove helios_goalie_move = 56; - HeliosGoalieKick helios_goalie_kick = 57; - HeliosShoot helios_shoot = 58; - HeliosChainAction helios_chain_action = 59; - HeliosBasicOffensive helios_basic_offensive = 60; - HeliosBasicMove helios_basic_move = 61; - HeliosSetPlay helios_set_play = 62; - HeliosPenalty helios_penalty = 63; - HeliosCommunicaion helios_communication = 64; - } -} - -message PlayerActions { - repeated PlayerAction actions = 1; -} - -message ChangePlayerType { - int32 uniform_number = 1; - int32 type = 2; -} - -message DoHeliosSubstitute {} - -message DoHeliosSayPlayerTypes {} - -message CoachAction { - oneof action { - ChangePlayerType change_player_types = 1; - DoHeliosSubstitute do_helios_substitute = 2; - DoHeliosSayPlayerTypes do_helios_say_player_types = 3; - } -} - -message CoachActions { - repeated CoachAction actions = 1; -} - -message DoKickOff {} - -message DoMoveBall { - Vector2D position = 1; - Vector2D velocity = 2; -} - -message DoMovePlayer { - bool our_side = 1; - int32 uniform_number = 2; - Vector2D position = 3; - float body_direction = 4; -} - -message DoRecover {} - -message DoChangeMode { - GameModeType game_mode_type = 1; - Side side = 2; //some of the game mode need to know the side -} - -message DoChangePlayerType { - bool our_side = 1; - int32 uniform_number = 2; - int32 type = 3; -} - -message TrainerAction { - oneof action { - DoKickOff do_kick_off = 1; - DoMoveBall do_move_ball = 2; - DoMovePlayer do_move_player = 3; - DoRecover do_recover = 4; - DoChangeMode do_change_mode = 5; - DoChangePlayerType do_change_player_type = 6; - } -} - -message TrainerActions { - repeated TrainerAction actions = 1; -} - -message ServerParam { - AgentType agent_type = 1; - float inertia_moment = 2; - float player_size = 3; - float player_decay = 4; - float player_rand = 5; - float player_weight = 6; - float player_speed_max = 7; - float player_accel_max = 8; - float stamina_max = 9; - float stamina_inc_max = 10; - float recover_init = 11; - float recover_dec_thr = 12; - float recover_min = 13; - float recover_dec = 14; - float effort_init = 15; - float effort_dec_thr = 16; - float effort_min = 17; - float effort_dec = 18; - float effort_inc_thr = 19; - float effort_inc = 20; - float kick_rand = 21; - bool team_actuator_noise = 22; - float player_rand_factor_l = 23; - float player_rand_factor_r = 24; - float kick_rand_factor_l = 25; - float kick_rand_factor_r = 26; - float ball_size = 27; - float ball_decay = 28; - float ball_rand = 29; - float ball_weight = 30; - float ball_speed_max = 31; - float ball_accel_max = 32; - float dash_power_rate = 33; - float kick_power_rate = 34; - float kickable_margin = 35; - float control_radius = 36; - float control_radius_width = 37; - float max_power = 38; - float min_power = 39; - float max_moment = 40; - float min_moment = 41; - float max_neck_moment = 42; - float min_neck_moment = 43; - float max_neck_angle = 44; - float min_neck_angle = 45; - float visible_angle = 46; - float visible_distance = 47; - float wind_dir = 48; - float wind_force = 49; - float wind_angle = 50; - float wind_rand = 51; - float kickable_area = 52; - float catch_area_l = 53; - float catch_area_w = 54; - float catch_probability = 55; - int32 goalie_max_moves = 56; - float corner_kick_margin = 57; - float offside_active_area_size = 58; - bool wind_none = 59; - bool use_wind_random = 60; - int32 coach_say_count_max = 61; - int32 coach_say_msg_size = 62; - int32 clang_win_size = 63; - int32 clang_define_win = 64; - int32 clang_meta_win = 65; - int32 clang_advice_win = 66; - int32 clang_info_win = 67; - int32 clang_mess_delay = 68; - int32 clang_mess_per_cycle = 69; - int32 half_time = 70; - int32 simulator_step = 71; - int32 send_step = 72; - int32 recv_step = 73; - int32 sense_body_step = 74; - int32 lcm_step = 75; - int32 player_say_msg_size = 76; - int32 player_hear_max = 77; - int32 player_hear_inc = 78; - int32 player_hear_decay = 79; - int32 catch_ban_cycle = 80; - int32 slow_down_factor = 81; - bool use_offside = 82; - bool kickoff_offside = 83; - float offside_kick_margin = 84; - float audio_cut_dist = 85; - float dist_quantize_step = 86; - float landmark_dist_quantize_step = 87; - float dir_quantize_step = 88; - float dist_quantize_step_l = 89; - float dist_quantize_step_r = 90; - float landmark_dist_quantize_step_l = 91; - float landmark_dist_quantize_step_r = 92; - float dir_quantize_step_l = 93; - float dir_quantize_step_r = 94; - bool coach_mode = 95; - bool coach_with_referee_mode = 96; - bool use_old_coach_hear = 97; - float slowness_on_top_for_left_team = 98; - float slowness_on_top_for_right_team = 99; - int32 start_goal_l = 100; - int32 start_goal_r = 101; - bool fullstate_l = 102; - bool fullstate_r = 103; - int32 drop_ball_time = 104; - bool synch_mode = 105; - int32 synch_offset = 106; - int32 synch_micro_sleep = 107; - int32 point_to_ban = 108; - int32 point_to_duration = 109; - int32 player_port = 110; - int32 trainer_port = 111; - int32 online_coach_port = 112; - bool verbose_mode = 113; - int32 coach_send_vi_step = 114; - string replay_file = 115; - string landmark_file = 116; - bool send_comms = 117; - bool text_logging = 118; - bool game_logging = 119; - int32 game_log_version = 120; - string text_log_dir = 121; - string game_log_dir = 122; - string text_log_fixed_name = 123; - string game_log_fixed_name = 124; - bool use_text_log_fixed = 125; - bool use_game_log_fixed = 126; - bool use_text_log_dated = 127; - bool use_game_log_dated = 128; - string log_date_format = 129; - bool log_times = 130; - bool record_message = 131; - int32 text_log_compression = 132; - int32 game_log_compression = 133; - bool use_profile = 134; - float tackle_dist = 135; - float tackle_back_dist = 136; - float tackle_width = 137; - float tackle_exponent = 138; - int32 tackle_cycles = 139; - float tackle_power_rate = 140; - int32 freeform_wait_period = 141; - int32 freeform_send_period = 142; - bool free_kick_faults = 143; - bool back_passes = 144; - bool proper_goal_kicks = 145; - float stopped_ball_vel = 146; - int32 max_goal_kicks = 147; - int32 clang_del_win = 148; - int32 clang_rule_win = 149; - bool auto_mode = 150; - int32 kick_off_wait = 151; - int32 connect_wait = 152; - int32 game_over_wait = 153; - string team_l_start = 154; - string team_r_start = 155; - bool keepaway_mode = 156; - float keepaway_length = 157; - float keepaway_width = 158; - bool keepaway_logging = 159; - string keepaway_log_dir = 160; - string keepaway_log_fixed_name = 161; - bool keepaway_log_fixed = 162; - bool keepaway_log_dated = 163; - int32 keepaway_start = 164; - int32 nr_normal_halfs = 165; - int32 nr_extra_halfs = 166; - bool penalty_shoot_outs = 167; - int32 pen_before_setup_wait = 168; - int32 pen_setup_wait = 169; - int32 pen_ready_wait = 170; - int32 pen_taken_wait = 171; - int32 pen_nr_kicks = 172; - int32 pen_max_extra_kicks = 173; - float pen_dist_x = 174; - bool pen_random_winner = 175; - bool pen_allow_mult_kicks = 176; - float pen_max_goalie_dist_x = 177; - bool pen_coach_moves_players = 178; - string module_dir = 179; - float ball_stuck_area = 180; - string coach_msg_file = 181; - float max_tackle_power = 182; - float max_back_tackle_power = 183; - float player_speed_max_min = 184; - float extra_stamina = 185; - int32 synch_see_offset = 186; - int32 extra_half_time = 187; - float stamina_capacity = 188; - float max_dash_angle = 189; - float min_dash_angle = 190; - float dash_angle_step = 191; - float side_dash_rate = 192; - float back_dash_rate = 193; - float max_dash_power = 194; - float min_dash_power = 195; - float tackle_rand_factor = 196; - float foul_detect_probability = 197; - float foul_exponent = 198; - int32 foul_cycles = 199; - bool golden_goal = 200; - float red_card_probability = 201; - int32 illegal_defense_duration = 202; - int32 illegal_defense_number = 203; - float illegal_defense_dist_x = 204; - float illegal_defense_width = 205; - string fixed_teamname_l = 206; - string fixed_teamname_r = 207; - float max_catch_angle = 208; - float min_catch_angle = 209; - int32 random_seed = 210; - float long_kick_power_factor = 211; - int32 long_kick_delay = 212; - int32 max_monitors = 213; - float catchable_area = 214; - float real_speed_max = 215; - float pitch_half_length = 216; - float pitch_half_width = 217; - float our_penalty_area_line_x = 218; - float their_penalty_area_line_x = 219; - float penalty_area_half_width = 220; - float penalty_area_length = 221; - float goal_width = 222; -} - -message PlayerParam { - AgentType agent_type = 1; - int32 player_types = 2; - int32 subs_max = 3; - int32 pt_max = 4; - bool allow_mult_default_type = 5; - float player_speed_max_delta_min = 6; - float player_speed_max_delta_max = 7; - float stamina_inc_max_delta_factor = 8; - float player_decay_delta_min = 9; - float player_decay_delta_max = 10; - float inertia_moment_delta_factor = 11; - float dash_power_rate_delta_min = 12; - float dash_power_rate_delta_max = 13; - float player_size_delta_factor = 14; - float kickable_margin_delta_min = 15; - float kickable_margin_delta_max = 16; - float kick_rand_delta_factor = 17; - float extra_stamina_delta_min = 18; - float extra_stamina_delta_max = 19; - float effort_max_delta_factor = 20; - float effort_min_delta_factor = 21; - int32 random_seed = 22; - float new_dash_power_rate_delta_min = 23; - float new_dash_power_rate_delta_max = 24; - float new_stamina_inc_max_delta_factor = 25; - float kick_power_rate_delta_min = 26; - float kick_power_rate_delta_max = 27; - float foul_detect_probability_delta_factor = 28; - float catchable_area_l_stretch_min = 29; - float catchable_area_l_stretch_max = 30; - -} - -message PlayerType { - AgentType agent_type = 1; - int32 id = 2; - float stamina_inc_max = 3; - float player_decay = 4; - float inertia_moment = 5; - float dash_power_rate = 6; - float player_size = 7; - float kickable_margin = 8; - float kick_rand = 9; - float extra_stamina = 10; - float effort_max = 11; - float effort_min = 12; - float kick_power_rate = 13; - float foul_detect_probability = 14; - float catchable_area_l_stretch = 15; - float unum_far_length = 16; - float unum_too_far_length = 17; - float team_far_length = 18; - float team_too_far_length = 19; - float player_max_observation_length = 20; - float ball_vel_far_length = 21; - float ball_vel_too_far_length = 22; - float ball_max_observation_length = 23; - float flag_chg_far_length = 24; - float flag_chg_too_far_length = 25; - float flag_max_observation_length = 26; - float kickable_area = 27; - float reliable_catchable_dist = 28; - float max_catchable_dist = 29; - float real_speed_max = 30; - float player_speed_max2 = 31; - float real_speed_max2 = 32; - int32 cycles_to_reach_max_speed = 33; - float player_speed_max = 34; -} - -message Empty { -} - -message InitMessageFromServer { -} - -service Game { - rpc GetPlayerActions(State) returns (PlayerActions) {} - rpc GetCoachActions(State) returns (CoachActions) {} - rpc GetTrainerActions(State) returns (TrainerActions) {} - rpc SendInitMessage(InitMessage) returns (Empty) {} - rpc SendServerParams(ServerParam) returns (Empty) {} - rpc SendPlayerParams(PlayerParam) returns (Empty) {} - rpc SendPlayerType(PlayerType) returns (Empty) {} //should be PlayerTypes - rpc GetInitMessage(Empty) returns (InitMessageFromServer) {} - rpc SendByeCommand(Empty) returns (Empty) {} -} \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 1d13c87..0fc1d49 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,5 @@ -grpcio==1.60.0 -grpcio-tools==1.60.0 numpy==1.26.3 protobuf==4.25.2 pyrusgeom==0.1.2 scipy==1.11.4 +thrift==0.20.0 diff --git a/server.py b/server.py index e4a129d..c696b69 100644 --- a/server.py +++ b/server.py @@ -1,9 +1,12 @@ +from thrift import Thrift +from thrift.protocol import TBinaryProtocol +from thrift.server import TServer +from thrift.transport import TSocket, TTransport +from soccer import Game +from soccer.ttypes import State, Empty, PlayerActions, CoachActions, TrainerActions, ServerParam, PlayerParam, PlayerType, InitMessage, InitMessageFromServer + from time import sleep -import service_pb2_grpc as pb2_grpc -import service_pb2 as pb2 -import google.protobuf from concurrent import futures -import grpc from src.SamplePlayerAgent import SamplePlayerAgent from src.SampleCoachAgent import SampleCoachAgent from src.SampleTrainerAgent import SampleTrainerAgent @@ -11,7 +14,7 @@ import os -class Game(pb2_grpc.GameServicer): +class GameHandler: def __init__(self): self.player_agent = SamplePlayerAgent() self.coach_agent = SampleCoachAgent() @@ -20,68 +23,79 @@ def __init__(self): self.lock = Semaphore() self.running = Semaphore() - def GetPlayerActions(self, request:pb2.State, context): - actions = self.player_agent.get_actions(request.world_model) - return actions - - def GetCoachActions(self, request:pb2.State, context): - actions = self.coach_agent.get_actions(request.world_model) - return actions - - def GetTrainerActions(self, request:pb2.State, context): - actions = self.trainer_agent.get_actions(request.world_model) - return actions - - def SendServerParams(self, request: pb2.ServerParam, context): - self.player_agent.set_params(request) - self.coach_agent.set_params(request) - self.trainer_agent.set_params(request) - return pb2.Empty() - - def SendPlayerParams(self, request:pb2.PlayerParam, context): - self.player_agent.set_params(request) - self.coach_agent.set_params(request) - self.trainer_agent.set_params(request) - return pb2.Empty() - - def SendPlayerType(self, request: pb2.PlayerType, context): - self.player_agent.set_params(request) - self.coach_agent.set_params(request) - self.trainer_agent.set_params(request) - return pb2.Empty() - - def SendInitMessage(self, request, context): - self.player_agent.set_debug_mode(request.debug_mode) - return pb2.Empty() - - def GetInitMessage(self, request, context): - with self.lock: - self.number_of_connections += 1 - return pb2.InitMessageFromServer() - - def SendByeCommand(self, request, context): + def GetPlayerActions(self, state): + print("GetPlayerActions", state.world_model.cycle) + actions = self.player_agent.get_actions(state.world_model) + return PlayerActions(actions=actions) + + def GetCoachActions(self, state): + print("GetCoachActions", state.world_model.cycle) + actions = self.coach_agent.get_actions(state.world_model) + return CoachActions(actions=actions) + + def GetTrainerActions(self, state): + print("GetTrainerActions", state.world_model.cycle) + actions = self.trainer_agent.get_actions(state.world_model) + return TrainerActions(actions=actions) + + def SendServerParams(self, serverParam): + print("Server params received", serverParam) + self.player_agent.set_params(serverParam) + self.coach_agent.set_params(serverParam) + self.trainer_agent.set_params(serverParam) + return + + def SendPlayerParams(self, playerParam): + print("Player params received", playerParam) + self.player_agent.set_params(playerParam) + self.coach_agent.set_params(playerParam) + self.trainer_agent.set_params(playerParam) + return + + def SendPlayerType(self, playerType): + print("Player type received", playerType) + self.player_agent.set_params(playerType) + self.coach_agent.set_params(playerType) + self.trainer_agent.set_params(playerType) + return + + def SendInitMessage(self, initMessage): + print("Init message received", initMessage) + self.player_agent.set_debug_mode(initMessage.debug_mode) + return + + def GetInitMessage(self, empty): + print("New connection") + # with self.lock: + # self.number_of_connections += 1 + res = InitMessageFromServer() + print(res) + return res + + def SendByeCommand(self, empty): with self.lock: self.number_of_connections -= 1 if self.number_of_connections <= 0: self.running.release() - return pb2.Empty() + return def serve(): - server = grpc.server(futures.ThreadPoolExecutor(max_workers=22)) - game_service = Game() - game_service.running.acquire() - pb2_grpc.add_GameServicer_to_server(game_service, server) - server.add_insecure_port('[::]:50051') - server.start() - print("Server started at port 50051") - - game_service.running.acquire() - print("Stopping server") - sleep(1) - os._exit(0) - server.wait_for_termination() + handler = GameHandler() + processor = Game.Processor(handler) + transport = TSocket.TServerSocket(host='0.0.0.0', port=50051) + tfactory = TTransport.TBufferedTransportFactory() + pfactory = TBinaryProtocol.TBinaryProtocolFactory() + server = TServer.TSimpleServer(processor, transport, tfactory, pfactory) + print("Thrift server started at port 50051") + try: + handler.running.acquire() + server.serve() + except KeyboardInterrupt: + print("Stopping server") + handler.running.release() + os._exit(0) if __name__ == '__main__': serve() diff --git a/service_pb2.py b/service_pb2.py deleted file mode 100644 index ccd7d8d..0000000 --- a/service_pb2.py +++ /dev/null @@ -1,298 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: service.proto -# Protobuf Python Version: 4.25.0 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rservice.proto\x12\x06protos\"=\n\x08Vector2D\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\x0c\n\x04\x64ist\x18\x03 \x01(\x02\x12\r\n\x05\x61ngle\x18\x04 \x01(\x02\"\x83\x04\n\x04\x42\x61ll\x12\"\n\x08position\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\x12+\n\x11relative_position\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\x12\'\n\rseen_position\x18\x03 \x01(\x0b\x32\x10.protos.Vector2D\x12(\n\x0eheard_position\x18\x04 \x01(\x0b\x32\x10.protos.Vector2D\x12\"\n\x08velocity\x18\x05 \x01(\x0b\x32\x10.protos.Vector2D\x12\'\n\rseen_velocity\x18\x06 \x01(\x0b\x32\x10.protos.Vector2D\x12(\n\x0eheard_velocity\x18\x07 \x01(\x0b\x32\x10.protos.Vector2D\x12\x11\n\tpos_count\x18\x08 \x01(\x05\x12\x16\n\x0eseen_pos_count\x18\t \x01(\x05\x12\x17\n\x0fheard_pos_count\x18\n \x01(\x05\x12\x11\n\tvel_count\x18\x0b \x01(\x05\x12\x16\n\x0eseen_vel_count\x18\x0c \x01(\x05\x12\x17\n\x0fheard_vel_count\x18\r \x01(\x05\x12\x12\n\nlost_count\x18\x0e \x01(\x05\x12\x13\n\x0bghost_count\x18\x0f \x01(\x05\x12\x16\n\x0e\x64ist_from_self\x18\x10 \x01(\x02\x12\x17\n\x0f\x61ngle_from_self\x18\x11 \x01(\x02\"\xa1\x06\n\x06Player\x12\"\n\x08position\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\x12\'\n\rseen_position\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\x12(\n\x0eheard_position\x18\x03 \x01(\x0b\x32\x10.protos.Vector2D\x12\"\n\x08velocity\x18\x04 \x01(\x0b\x32\x10.protos.Vector2D\x12\'\n\rseen_velocity\x18\x05 \x01(\x0b\x32\x10.protos.Vector2D\x12\x11\n\tpos_count\x18\x06 \x01(\x05\x12\x16\n\x0eseen_pos_count\x18\x07 \x01(\x05\x12\x17\n\x0fheard_pos_count\x18\x08 \x01(\x05\x12\x11\n\tvel_count\x18\t \x01(\x05\x12\x16\n\x0eseen_vel_count\x18\n \x01(\x05\x12\x13\n\x0bghost_count\x18\x0b \x01(\x05\x12\x16\n\x0e\x64ist_from_self\x18\x0c \x01(\x02\x12\x17\n\x0f\x61ngle_from_self\x18\r \x01(\x02\x12\n\n\x02id\x18\x0e \x01(\x05\x12\x1a\n\x04side\x18\x0f \x01(\x0e\x32\x0c.protos.Side\x12\x16\n\x0euniform_number\x18\x10 \x01(\x05\x12\x1c\n\x14uniform_number_count\x18\x11 \x01(\x05\x12\x11\n\tis_goalie\x18\x12 \x01(\x08\x12\x16\n\x0e\x62ody_direction\x18\x13 \x01(\x02\x12\x1c\n\x14\x62ody_direction_count\x18\x14 \x01(\x05\x12\x16\n\x0e\x66\x61\x63\x65_direction\x18\x15 \x01(\x02\x12\x1c\n\x14\x66\x61\x63\x65_direction_count\x18\x16 \x01(\x05\x12\x1a\n\x12point_to_direction\x18\x17 \x01(\x02\x12 \n\x18point_to_direction_count\x18\x18 \x01(\x05\x12\x12\n\nis_kicking\x18\x19 \x01(\x08\x12\x16\n\x0e\x64ist_from_ball\x18\x1a \x01(\x02\x12\x17\n\x0f\x61ngle_from_ball\x18\x1b \x01(\x02\x12\x18\n\x10\x62\x61ll_reach_steps\x18\x1c \x01(\x05\x12\x13\n\x0bis_tackling\x18\x1d \x01(\x08\x12\x0f\n\x07type_id\x18\x1e \x01(\x05\"\xc0\x07\n\x04Self\x12\"\n\x08position\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\x12\'\n\rseen_position\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\x12(\n\x0eheard_position\x18\x03 \x01(\x0b\x32\x10.protos.Vector2D\x12\"\n\x08velocity\x18\x04 \x01(\x0b\x32\x10.protos.Vector2D\x12\'\n\rseen_velocity\x18\x05 \x01(\x0b\x32\x10.protos.Vector2D\x12\x11\n\tpos_count\x18\x06 \x01(\x05\x12\x16\n\x0eseen_pos_count\x18\x07 \x01(\x05\x12\x17\n\x0fheard_pos_count\x18\x08 \x01(\x05\x12\x11\n\tvel_count\x18\t \x01(\x05\x12\x16\n\x0eseen_vel_count\x18\n \x01(\x05\x12\x13\n\x0bghost_count\x18\x0b \x01(\x05\x12\n\n\x02id\x18\x0c \x01(\x05\x12\x1a\n\x04side\x18\r \x01(\x0e\x32\x0c.protos.Side\x12\x16\n\x0euniform_number\x18\x0e \x01(\x05\x12\x1c\n\x14uniform_number_count\x18\x0f \x01(\x05\x12\x11\n\tis_goalie\x18\x10 \x01(\x08\x12\x16\n\x0e\x62ody_direction\x18\x11 \x01(\x02\x12\x1c\n\x14\x62ody_direction_count\x18\x12 \x01(\x05\x12\x16\n\x0e\x66\x61\x63\x65_direction\x18\x13 \x01(\x02\x12\x1c\n\x14\x66\x61\x63\x65_direction_count\x18\x14 \x01(\x05\x12\x1a\n\x12point_to_direction\x18\x15 \x01(\x02\x12 \n\x18point_to_direction_count\x18\x16 \x01(\x05\x12\x12\n\nis_kicking\x18\x17 \x01(\x08\x12\x16\n\x0e\x64ist_from_ball\x18\x18 \x01(\x02\x12\x17\n\x0f\x61ngle_from_ball\x18\x19 \x01(\x02\x12\x18\n\x10\x62\x61ll_reach_steps\x18\x1a \x01(\x05\x12\x13\n\x0bis_tackling\x18\x1b \x01(\x08\x12\x1f\n\x17relative_neck_direction\x18\x1c \x01(\x02\x12\x0f\n\x07stamina\x18\x1d \x01(\x02\x12\x13\n\x0bis_kickable\x18\x1e \x01(\x08\x12\x19\n\x11\x63\x61tch_probability\x18\x1f \x01(\x02\x12\x1a\n\x12tackle_probability\x18 \x01(\x02\x12\x18\n\x10\x66oul_probability\x18! \x01(\x02\x12%\n\nview_width\x18\" \x01(\x0e\x32\x11.protos.ViewWidth\x12\x0f\n\x07type_id\x18# \x01(\x05\x12\x11\n\tkick_rate\x18$ \x01(\x02\"\x91\x02\n\rInterceptInfo\x12\x30\n\x0b\x61\x63tion_type\x18\x01 \x01(\x0e\x32\x1b.protos.InterceptActionType\x12\x12\n\nturn_steps\x18\x02 \x01(\x05\x12\x12\n\nturn_angle\x18\x03 \x01(\x02\x12\x12\n\ndash_steps\x18\x04 \x01(\x05\x12\x12\n\ndash_power\x18\x05 \x01(\x02\x12\x10\n\x08\x64\x61sh_dir\x18\x06 \x01(\x02\x12-\n\x13\x66inal_self_position\x18\x07 \x01(\x0b\x32\x10.protos.Vector2D\x12\x17\n\x0f\x66inal_ball_dist\x18\x08 \x01(\x02\x12\x15\n\rfinal_stamina\x18\t \x01(\x02\x12\r\n\x05value\x18\n \x01(\x02\"\xde\x02\n\x0eInterceptTable\x12\x18\n\x10self_reach_steps\x18\x01 \x01(\x05\x12\"\n\x1a\x66irst_teammate_reach_steps\x18\x02 \x01(\x05\x12#\n\x1bsecond_teammate_reach_steps\x18\x03 \x01(\x05\x12\"\n\x1a\x66irst_opponent_reach_steps\x18\x04 \x01(\x05\x12#\n\x1bsecond_opponent_reach_steps\x18\x05 \x01(\x05\x12\x19\n\x11\x66irst_teammate_id\x18\x06 \x01(\x05\x12\x1a\n\x12second_teammate_id\x18\x07 \x01(\x05\x12\x19\n\x11\x66irst_opponent_id\x18\x08 \x01(\x05\x12\x1a\n\x12second_opponent_id\x18\t \x01(\x05\x12\x32\n\x13self_intercept_info\x18\n \x03(\x0b\x32\x15.protos.InterceptInfo\"\x8e\n\n\nWorldModel\x12/\n\x0fintercept_table\x18\x01 \x01(\x0b\x32\x16.protos.InterceptTable\x12\x15\n\rour_team_name\x18\x02 \x01(\t\x12\x17\n\x0ftheir_team_name\x18\x03 \x01(\t\x12\x1e\n\x08our_side\x18\x04 \x01(\x0e\x32\x0c.protos.Side\x12 \n\x18last_set_play_start_time\x18\x05 \x01(\x05\x12\x1a\n\x04self\x18\x06 \x01(\x0b\x32\x0c.protos.Self\x12\x1a\n\x04\x62\x61ll\x18\x07 \x01(\x0b\x32\x0c.protos.Ball\x12!\n\tteammates\x18\x08 \x03(\x0b\x32\x0e.protos.Player\x12!\n\topponents\x18\t \x03(\x0b\x32\x0e.protos.Player\x12 \n\x08unknowns\x18\n \x03(\x0b\x32\x0e.protos.Player\x12@\n\x10our_players_dict\x18\x0b \x03(\x0b\x32&.protos.WorldModel.OurPlayersDictEntry\x12\x44\n\x12their_players_dict\x18\x0c \x03(\x0b\x32(.protos.WorldModel.TheirPlayersDictEntry\x12!\n\x19our_goalie_uniform_number\x18\r \x01(\x05\x12#\n\x1btheir_goalie_uniform_number\x18\x0e \x01(\x05\x12\x16\n\x0eoffside_line_x\x18\x0f \x01(\x02\x12\x1b\n\x13ofside_line_x_count\x18\x10 \x01(\x05\x12\x1c\n\x14kickable_teammate_id\x18\x11 \x01(\x05\x12\x1c\n\x14kickable_opponent_id\x18\x12 \x01(\x05\x12$\n\x0elast_kick_side\x18\x13 \x01(\x0e\x32\x0c.protos.Side\x12\"\n\x1alast_kicker_uniform_number\x18\x14 \x01(\x05\x12\r\n\x05\x63ycle\x18\x15 \x01(\x05\x12,\n\x0egame_mode_type\x18\x16 \x01(\x0e\x32\x14.protos.GameModeType\x12\x17\n\x0fleft_team_score\x18\x17 \x01(\x05\x12\x18\n\x10right_team_score\x18\x18 \x01(\x05\x12\x17\n\x0fis_our_set_play\x18\x19 \x01(\x08\x12\x19\n\x11is_their_set_play\x18\x1a \x01(\x08\x12\x14\n\x0cstoped_cycle\x18\x1b \x01(\x05\x12\x16\n\x0eour_team_score\x18\x1c \x01(\x05\x12\x18\n\x10their_team_score\x18\x1d \x01(\x05\x12\x1c\n\x14is_penalty_kick_mode\x18\x1e \x01(\x08\x12J\n\x15helios_home_positions\x18\x1f \x03(\x0b\x32+.protos.WorldModel.HeliosHomePositionsEntry\x1a\x45\n\x13OurPlayersDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.protos.Player:\x02\x38\x01\x1aG\n\x15TheirPlayersDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.protos.Player:\x02\x38\x01\x1aL\n\x18HeliosHomePositionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\x1f\n\x05value\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D:\x02\x38\x01\"\x85\x01\n\x05State\x12%\n\nagent_type\x18\x01 \x01(\x0e\x32\x11.protos.AgentType\x12\'\n\x0bworld_model\x18\x02 \x01(\x0b\x32\x12.protos.WorldModel\x12,\n\x10\x66ull_world_model\x18\x03 \x01(\x0b\x32\x12.protos.WorldModel\"H\n\x0bInitMessage\x12%\n\nagent_type\x18\x01 \x01(\x0e\x32\x11.protos.AgentType\x12\x12\n\ndebug_mode\x18\x02 \x01(\x08\"1\n\x04\x44\x61sh\x12\r\n\x05power\x18\x01 \x01(\x02\x12\x1a\n\x12relative_direction\x18\x02 \x01(\x02\"\"\n\x04Turn\x12\x1a\n\x12relative_direction\x18\x01 \x01(\x02\"1\n\x04Kick\x12\r\n\x05power\x18\x01 \x01(\x02\x12\x1a\n\x12relative_direction\x18\x02 \x01(\x02\",\n\x06Tackle\x12\x14\n\x0cpower_or_dir\x18\x01 \x01(\x02\x12\x0c\n\x04\x66oul\x18\x02 \x01(\x08\"\x07\n\x05\x43\x61tch\"\x1c\n\x04Move\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\"\x1a\n\x08TurnNeck\x12\x0e\n\x06moment\x18\x01 \x01(\x02\"3\n\nChangeView\x12%\n\nview_width\x18\x01 \x01(\x0e\x32\x11.protos.ViewWidth\"_\n\x0b\x42\x61llMessage\x12\'\n\rball_position\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\x12\'\n\rball_velocity\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\"\xaa\x01\n\x0bPassMessage\x12\x1f\n\x17receiver_uniform_number\x18\x01 \x01(\x05\x12(\n\x0ereceiver_point\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\x12\'\n\rball_position\x18\x03 \x01(\x0b\x32\x10.protos.Vector2D\x12\'\n\rball_velocity\x18\x04 \x01(\x0b\x32\x10.protos.Vector2D\"F\n\x10InterceptMessage\x12\x0b\n\x03our\x18\x01 \x01(\x08\x12\x16\n\x0euniform_number\x18\x02 \x01(\x05\x12\r\n\x05\x63ycle\x18\x03 \x01(\x05\"x\n\rGoalieMessage\x12\x1d\n\x15goalie_uniform_number\x18\x01 \x01(\x05\x12)\n\x0fgoalie_position\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\x12\x1d\n\x15goalie_body_direction\x18\x03 \x01(\x02\"\xcb\x01\n\x16GoalieAndPlayerMessage\x12\x1d\n\x15goalie_uniform_number\x18\x01 \x01(\x05\x12)\n\x0fgoalie_position\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\x12\x1d\n\x15goalie_body_direction\x18\x03 \x01(\x02\x12\x1d\n\x15player_uniform_number\x18\x04 \x01(\x05\x12)\n\x0fplayer_position\x18\x05 \x01(\x0b\x32\x10.protos.Vector2D\",\n\x12OffsideLineMessage\x12\x16\n\x0eoffside_line_x\x18\x01 \x01(\x02\",\n\x12\x44\x65\x66\x65nseLineMessage\x12\x16\n\x0e\x64\x65\x66\x65nse_line_x\x18\x01 \x01(\x02\"\x14\n\x12WaitRequestMessage\"#\n\x0eSetplayMessage\x12\x11\n\twait_step\x18\x01 \x01(\x05\"<\n\x12PassRequestMessage\x12&\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\"!\n\x0eStaminaMessage\x12\x0f\n\x07stamina\x18\x01 \x01(\x02\"#\n\x0fRecoveryMessage\x12\x10\n\x08recovery\x18\x01 \x01(\x02\"2\n\x16StaminaCapacityMessage\x12\x18\n\x10stamina_capacity\x18\x01 \x01(\x02\"M\n\x0e\x44ribbleMessage\x12&\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\x12\x13\n\x0bqueue_count\x18\x02 \x01(\x05\"\xaf\x01\n\x11\x42\x61llGoalieMessage\x12\'\n\rball_position\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\x12\'\n\rball_velocity\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\x12)\n\x0fgoalie_position\x18\x03 \x01(\x0b\x32\x10.protos.Vector2D\x12\x1d\n\x15goalie_body_direction\x18\x04 \x01(\x02\"N\n\x10OnePlayerMessage\x12\x16\n\x0euniform_number\x18\x01 \x01(\x05\x12\"\n\x08position\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\"\xa4\x01\n\x10TwoPlayerMessage\x12\x1c\n\x14\x66irst_uniform_number\x18\x01 \x01(\x05\x12(\n\x0e\x66irst_position\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\x12\x1d\n\x15second_uniform_number\x18\x03 \x01(\x05\x12)\n\x0fsecond_position\x18\x04 \x01(\x0b\x32\x10.protos.Vector2D\"\xee\x01\n\x12ThreePlayerMessage\x12\x1c\n\x14\x66irst_uniform_number\x18\x01 \x01(\x05\x12(\n\x0e\x66irst_position\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\x12\x1d\n\x15second_uniform_number\x18\x03 \x01(\x05\x12)\n\x0fsecond_position\x18\x04 \x01(\x0b\x32\x10.protos.Vector2D\x12\x1c\n\x14third_uniform_number\x18\x05 \x01(\x05\x12(\n\x0ethird_position\x18\x06 \x01(\x0b\x32\x10.protos.Vector2D\"i\n\x0bSelfMessage\x12\'\n\rself_position\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\x12\x1b\n\x13self_body_direction\x18\x02 \x01(\x02\x12\x14\n\x0cself_stamina\x18\x03 \x01(\x02\"e\n\x0fTeammateMessage\x12\x16\n\x0euniform_number\x18\x01 \x01(\x05\x12\"\n\x08position\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\x12\x16\n\x0e\x62ody_direction\x18\x03 \x01(\x02\"e\n\x0fOpponentMessage\x12\x16\n\x0euniform_number\x18\x01 \x01(\x05\x12\"\n\x08position\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\x12\x16\n\x0e\x62ody_direction\x18\x03 \x01(\x02\"\xc0\x01\n\x11\x42\x61llPlayerMessage\x12\'\n\rball_position\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\x12\'\n\rball_velocity\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\x12\x16\n\x0euniform_number\x18\x03 \x01(\x05\x12)\n\x0fplayer_position\x18\x04 \x01(\x0b\x32\x10.protos.Vector2D\x12\x16\n\x0e\x62ody_direction\x18\x05 \x01(\x02\"\xd0\t\n\x03Say\x12+\n\x0c\x62\x61ll_message\x18\x01 \x01(\x0b\x32\x13.protos.BallMessageH\x00\x12+\n\x0cpass_message\x18\x02 \x01(\x0b\x32\x13.protos.PassMessageH\x00\x12\x35\n\x11intercept_message\x18\x03 \x01(\x0b\x32\x18.protos.InterceptMessageH\x00\x12/\n\x0egoalie_message\x18\x04 \x01(\x0b\x32\x15.protos.GoalieMessageH\x00\x12\x43\n\x19goalie_and_player_message\x18\x05 \x01(\x0b\x32\x1e.protos.GoalieAndPlayerMessageH\x00\x12:\n\x14offside_line_message\x18\x06 \x01(\x0b\x32\x1a.protos.OffsideLineMessageH\x00\x12:\n\x14\x64\x65\x66\x65nse_line_message\x18\x07 \x01(\x0b\x32\x1a.protos.DefenseLineMessageH\x00\x12:\n\x14wait_request_message\x18\x08 \x01(\x0b\x32\x1a.protos.WaitRequestMessageH\x00\x12\x31\n\x0fsetplay_message\x18\t \x01(\x0b\x32\x16.protos.SetplayMessageH\x00\x12:\n\x14pass_request_message\x18\n \x01(\x0b\x32\x1a.protos.PassRequestMessageH\x00\x12\x31\n\x0fstamina_message\x18\x0b \x01(\x0b\x32\x16.protos.StaminaMessageH\x00\x12\x33\n\x10recovery_message\x18\x0c \x01(\x0b\x32\x17.protos.RecoveryMessageH\x00\x12\x42\n\x18stamina_capacity_message\x18\r \x01(\x0b\x32\x1e.protos.StaminaCapacityMessageH\x00\x12\x31\n\x0f\x64ribble_message\x18\x0e \x01(\x0b\x32\x16.protos.DribbleMessageH\x00\x12\x38\n\x13\x62\x61ll_goalie_message\x18\x0f \x01(\x0b\x32\x19.protos.BallGoalieMessageH\x00\x12\x36\n\x12one_player_message\x18\x10 \x01(\x0b\x32\x18.protos.OnePlayerMessageH\x00\x12\x36\n\x12two_player_message\x18\x11 \x01(\x0b\x32\x18.protos.TwoPlayerMessageH\x00\x12:\n\x14three_player_message\x18\x12 \x01(\x0b\x32\x1a.protos.ThreePlayerMessageH\x00\x12+\n\x0cself_message\x18\x13 \x01(\x0b\x32\x13.protos.SelfMessageH\x00\x12\x33\n\x10teammate_message\x18\x14 \x01(\x0b\x32\x17.protos.TeammateMessageH\x00\x12\x33\n\x10opponent_message\x18\x15 \x01(\x0b\x32\x17.protos.OpponentMessageH\x00\x12\x38\n\x13\x62\x61ll_player_message\x18\x16 \x01(\x0b\x32\x19.protos.BallPlayerMessageH\x00\x42\t\n\x07message\"\x1f\n\x07PointTo\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\"\x0b\n\tPointToOf\"7\n\x0b\x41ttentionTo\x12\x1a\n\x04side\x18\x01 \x01(\x0e\x32\x0c.protos.Side\x12\x0c\n\x04unum\x18\x02 \x01(\x05\"\x0f\n\rAttentionToOf\">\n\x07\x41\x64\x64Text\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12\x0f\n\x07message\x18\x02 \x01(\t\"^\n\x08\x41\x64\x64Point\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12\x1f\n\x05point\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\x12\r\n\x05\x63olor\x18\x03 \x01(\t\"|\n\x07\x41\x64\x64Line\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12\x1f\n\x05start\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\x12\x1d\n\x03\x65nd\x18\x03 \x01(\x0b\x32\x10.protos.Vector2D\x12\r\n\x05\x63olor\x18\x04 \x01(\t\"\x96\x01\n\x06\x41\x64\x64\x41rc\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12 \n\x06\x63\x65nter\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\x12\x0e\n\x06radius\x18\x03 \x01(\x02\x12\x13\n\x0bstart_angle\x18\x04 \x01(\x02\x12\x12\n\nspan_angel\x18\x05 \x01(\x02\x12\r\n\x05\x63olor\x18\x06 \x01(\t\"~\n\tAddCircle\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12 \n\x06\x63\x65nter\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\x12\x0e\n\x06radius\x18\x03 \x01(\x02\x12\r\n\x05\x63olor\x18\x04 \x01(\t\x12\x0c\n\x04\x66ill\x18\x05 \x01(\x08\"\xb4\x01\n\x0b\x41\x64\x64Triangle\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12 \n\x06point1\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\x12 \n\x06point2\x18\x03 \x01(\x0b\x32\x10.protos.Vector2D\x12 \n\x06point3\x18\x04 \x01(\x0b\x32\x10.protos.Vector2D\x12\r\n\x05\x63olor\x18\x05 \x01(\t\x12\x0c\n\x04\x66ill\x18\x06 \x01(\x08\"\x89\x01\n\x0c\x41\x64\x64Rectangle\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12\x0c\n\x04left\x18\x02 \x01(\x02\x12\x0b\n\x03top\x18\x03 \x01(\x02\x12\x0e\n\x06length\x18\x04 \x01(\x02\x12\r\n\x05width\x18\x05 \x01(\x02\x12\r\n\x05\x63olor\x18\x06 \x01(\t\x12\x0c\n\x04\x66ill\x18\x07 \x01(\x08\"\xbf\x01\n\tAddSector\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12 \n\x06\x63\x65nter\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\x12\x12\n\nmin_radius\x18\x03 \x01(\x02\x12\x12\n\nmax_radius\x18\x04 \x01(\x02\x12\x13\n\x0bstart_angle\x18\x05 \x01(\x02\x12\x12\n\nspan_angel\x18\x06 \x01(\x02\x12\r\n\x05\x63olor\x18\x07 \x01(\t\x12\x0c\n\x04\x66ill\x18\x08 \x01(\x08\"t\n\nAddMessage\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12\"\n\x08position\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\x12\x0f\n\x07message\x18\x03 \x01(\t\x12\r\n\x05\x63olor\x18\x04 \x01(\t\"\xf9\x02\n\x03Log\x12#\n\x08\x61\x64\x64_text\x18\x01 \x01(\x0b\x32\x0f.protos.AddTextH\x00\x12%\n\tadd_point\x18\x02 \x01(\x0b\x32\x10.protos.AddPointH\x00\x12#\n\x08\x61\x64\x64_line\x18\x03 \x01(\x0b\x32\x0f.protos.AddLineH\x00\x12!\n\x07\x61\x64\x64_arc\x18\x04 \x01(\x0b\x32\x0e.protos.AddArcH\x00\x12\'\n\nadd_circle\x18\x05 \x01(\x0b\x32\x11.protos.AddCircleH\x00\x12+\n\x0c\x61\x64\x64_triangle\x18\x06 \x01(\x0b\x32\x13.protos.AddTriangleH\x00\x12-\n\radd_rectangle\x18\x07 \x01(\x0b\x32\x14.protos.AddRectangleH\x00\x12\'\n\nadd_sector\x18\x08 \x01(\x0b\x32\x11.protos.AddSectorH\x00\x12)\n\x0b\x61\x64\x64_message\x18\t \x01(\x0b\x32\x12.protos.AddMessageH\x00\x42\x05\n\x03log\"\x1e\n\x0b\x44\x65\x62ugClient\x12\x0f\n\x07message\x18\x01 \x01(\t\"l\n\x0e\x42ody_GoToPoint\x12&\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\x12\x1a\n\x12\x64istance_threshold\x18\x02 \x01(\x02\x12\x16\n\x0emax_dash_power\x18\x03 \x01(\x02\"\x7f\n\x0e\x42ody_SmartKick\x12&\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\x12\x13\n\x0b\x66irst_speed\x18\x02 \x01(\x02\x12\x1d\n\x15\x66irst_speed_threshold\x18\x03 \x01(\x02\x12\x11\n\tmax_steps\x18\x04 \x01(\x05\"4\n\x11\x42hv_BeforeKickOff\x12\x1f\n\x05point\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\"\x14\n\x12\x42hv_BodyNeckToBall\"6\n\x13\x42hv_BodyNeckToPoint\x12\x1f\n\x05point\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\"\x0f\n\rBhv_Emergency\"s\n\x15\x42hv_GoToPointLookBall\x12&\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\x12\x1a\n\x12\x64istance_threshold\x18\x02 \x01(\x02\x12\x16\n\x0emax_dash_power\x18\x03 \x01(\x02\"\'\n\x12\x42hv_NeckBodyToBall\x12\x11\n\tangle_buf\x18\x01 \x01(\x02\"I\n\x13\x42hv_NeckBodyToPoint\x12\x1f\n\x05point\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\x12\x11\n\tangle_buf\x18\x02 \x01(\x02\"\x0f\n\rBhv_ScanField\"\x12\n\x10\x42ody_AdvanceBall\"\x10\n\x0e\x42ody_ClearBall\"\x89\x01\n\x0c\x42ody_Dribble\x12&\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\x12\x1a\n\x12\x64istance_threshold\x18\x02 \x01(\x02\x12\x12\n\ndash_power\x18\x03 \x01(\x02\x12\x12\n\ndash_count\x18\x04 \x01(\x05\x12\r\n\x05\x64odge\x18\x05 \x01(\x08\"Q\n\x13\x42ody_GoToPointDodge\x12&\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\x12\x12\n\ndash_power\x18\x02 \x01(\x02\"z\n\rBody_HoldBall\x12\x0f\n\x07\x64o_turn\x18\x01 \x01(\x08\x12+\n\x11turn_target_point\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\x12+\n\x11kick_target_point\x18\x03 \x01(\x0b\x32\x10.protos.Vector2D\"M\n\x0e\x42ody_Intercept\x12\x15\n\rsave_recovery\x18\x01 \x01(\x08\x12$\n\nface_point\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\"c\n\x10\x42ody_KickOneStep\x12&\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\x12\x13\n\x0b\x66irst_speed\x18\x02 \x01(\x02\x12\x12\n\nforce_mode\x18\x03 \x01(\x08\"\x0f\n\rBody_StopBall\"&\n\rBody_StopDash\x12\x15\n\rsave_recovery\x18\x01 \x01(\x08\"h\n\x12\x42ody_TackleToPoint\x12&\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\x12\x17\n\x0fmin_probability\x18\x02 \x01(\x02\x12\x11\n\tmin_speed\x18\x03 \x01(\x02\"!\n\x10\x42ody_TurnToAngle\x12\r\n\x05\x61ngle\x18\x01 \x01(\x02\" \n\x0f\x42ody_TurnToBall\x12\r\n\x05\x63ycle\x18\x01 \x01(\x05\"I\n\x10\x42ody_TurnToPoint\x12&\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\x12\r\n\x05\x63ycle\x18\x02 \x01(\x05\";\n\x11\x46ocus_MoveToPoint\x12&\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\"\r\n\x0b\x46ocus_Reset\"\x10\n\x0eNeck_ScanField\"\x12\n\x10Neck_ScanPlayers\"g\n\x18Neck_TurnToBallAndPlayer\x12\x1a\n\x04side\x18\x01 \x01(\x0e\x32\x0c.protos.Side\x12\x16\n\x0euniform_number\x18\x02 \x01(\x05\x12\x17\n\x0f\x63ount_threshold\x18\x03 \x01(\x05\"0\n\x15Neck_TurnToBallOrScan\x12\x17\n\x0f\x63ount_threshold\x18\x01 \x01(\x05\"\x11\n\x0fNeck_TurnToBall\"2\n\x17Neck_TurnToGoalieOrScan\x12\x17\n\x0f\x63ount_threshold\x18\x01 \x01(\x05\"\x1c\n\x1aNeck_TurnToLowConfTeammate\"f\n\x17Neck_TurnToPlayerOrScan\x12\x1a\n\x04side\x18\x01 \x01(\x0e\x32\x0c.protos.Side\x12\x16\n\x0euniform_number\x18\x02 \x01(\x05\x12\x17\n\x0f\x63ount_threshold\x18\x03 \x01(\x05\":\n\x10Neck_TurnToPoint\x12&\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\"$\n\x13Neck_TurnToRelative\x12\r\n\x05\x61ngle\x18\x01 \x01(\x02\"9\n\x10View_ChangeWidth\x12%\n\nview_width\x18\x01 \x01(\x0e\x32\x11.protos.ViewWidth\"\r\n\x0bView_Normal\"\x0c\n\nView_Synch\"\x0b\n\tView_Wide\"\x0e\n\x0cHeliosGoalie\"\x12\n\x10HeliosGoalieMove\"\x12\n\x10HeliosGoalieKick\"\r\n\x0bHeliosShoot\"\xd0\x01\n\x11HeliosChainAction\x12\x13\n\x0b\x64irect_pass\x18\x01 \x01(\x08\x12\x11\n\tlead_pass\x18\x02 \x01(\x08\x12\x14\n\x0cthrough_pass\x18\x03 \x01(\x08\x12\x15\n\rshort_dribble\x18\x04 \x01(\x08\x12\x14\n\x0clong_dribble\x18\x05 \x01(\x08\x12\r\n\x05\x63ross\x18\x06 \x01(\x08\x12\x13\n\x0bsimple_pass\x18\x07 \x01(\x08\x12\x16\n\x0esimple_dribble\x18\x08 \x01(\x08\x12\x14\n\x0csimple_shoot\x18\t \x01(\x08\"\x16\n\x14HeliosBasicOffensive\"\x11\n\x0fHeliosBasicMove\"\x0f\n\rHeliosSetPlay\"\x0f\n\rHeliosPenalty\"\x14\n\x12HeliosCommunicaion\"\xe3\x19\n\x0cPlayerAction\x12\x1c\n\x04\x64\x61sh\x18\x01 \x01(\x0b\x32\x0c.protos.DashH\x00\x12\x1c\n\x04turn\x18\x02 \x01(\x0b\x32\x0c.protos.TurnH\x00\x12\x1c\n\x04kick\x18\x03 \x01(\x0b\x32\x0c.protos.KickH\x00\x12 \n\x06tackle\x18\x04 \x01(\x0b\x32\x0e.protos.TackleH\x00\x12\x1e\n\x05\x63\x61tch\x18\x05 \x01(\x0b\x32\r.protos.CatchH\x00\x12\x1c\n\x04move\x18\x06 \x01(\x0b\x32\x0c.protos.MoveH\x00\x12%\n\tturn_neck\x18\x07 \x01(\x0b\x32\x10.protos.TurnNeckH\x00\x12)\n\x0b\x63hange_view\x18\x08 \x01(\x0b\x32\x12.protos.ChangeViewH\x00\x12\x1a\n\x03say\x18\t \x01(\x0b\x32\x0b.protos.SayH\x00\x12#\n\x08point_to\x18\n \x01(\x0b\x32\x0f.protos.PointToH\x00\x12(\n\x0bpoint_to_of\x18\x0b \x01(\x0b\x32\x11.protos.PointToOfH\x00\x12+\n\x0c\x61ttention_to\x18\x0c \x01(\x0b\x32\x13.protos.AttentionToH\x00\x12\x30\n\x0f\x61ttention_to_of\x18\r \x01(\x0b\x32\x15.protos.AttentionToOfH\x00\x12\x1a\n\x03log\x18\x0e \x01(\x0b\x32\x0b.protos.LogH\x00\x12+\n\x0c\x64\x65\x62ug_client\x18\x0f \x01(\x0b\x32\x13.protos.DebugClientH\x00\x12\x32\n\x10\x62ody_go_to_point\x18\x10 \x01(\x0b\x32\x16.protos.Body_GoToPointH\x00\x12\x31\n\x0f\x62ody_smart_kick\x18\x11 \x01(\x0b\x32\x16.protos.Body_SmartKickH\x00\x12\x38\n\x13\x62hv_before_kick_off\x18\x12 \x01(\x0b\x32\x19.protos.Bhv_BeforeKickOffH\x00\x12;\n\x15\x62hv_body_neck_to_ball\x18\x13 \x01(\x0b\x32\x1a.protos.Bhv_BodyNeckToBallH\x00\x12=\n\x16\x62hv_body_neck_to_point\x18\x14 \x01(\x0b\x32\x1b.protos.Bhv_BodyNeckToPointH\x00\x12.\n\rbhv_emergency\x18\x15 \x01(\x0b\x32\x15.protos.Bhv_EmergencyH\x00\x12\x42\n\x19\x62hv_go_to_point_look_ball\x18\x16 \x01(\x0b\x32\x1d.protos.Bhv_GoToPointLookBallH\x00\x12;\n\x15\x62hv_neck_body_to_ball\x18\x17 \x01(\x0b\x32\x1a.protos.Bhv_NeckBodyToBallH\x00\x12=\n\x16\x62hv_neck_body_to_point\x18\x18 \x01(\x0b\x32\x1b.protos.Bhv_NeckBodyToPointH\x00\x12/\n\x0e\x62hv_scan_field\x18\x19 \x01(\x0b\x32\x15.protos.Bhv_ScanFieldH\x00\x12\x35\n\x11\x62ody_advance_ball\x18\x1a \x01(\x0b\x32\x18.protos.Body_AdvanceBallH\x00\x12\x31\n\x0f\x62ody_clear_ball\x18\x1b \x01(\x0b\x32\x16.protos.Body_ClearBallH\x00\x12,\n\x0c\x62ody_dribble\x18\x1c \x01(\x0b\x32\x14.protos.Body_DribbleH\x00\x12=\n\x16\x62ody_go_to_point_dodge\x18\x1d \x01(\x0b\x32\x1b.protos.Body_GoToPointDodgeH\x00\x12/\n\x0e\x62ody_hold_ball\x18\x1e \x01(\x0b\x32\x15.protos.Body_HoldBallH\x00\x12\x30\n\x0e\x62ody_intercept\x18\x1f \x01(\x0b\x32\x16.protos.Body_InterceptH\x00\x12\x36\n\x12\x62ody_kick_one_step\x18 \x01(\x0b\x32\x18.protos.Body_KickOneStepH\x00\x12/\n\x0e\x62ody_stop_ball\x18! \x01(\x0b\x32\x15.protos.Body_StopBallH\x00\x12/\n\x0e\x62ody_stop_dash\x18\" \x01(\x0b\x32\x15.protos.Body_StopDashH\x00\x12:\n\x14\x62ody_tackle_to_point\x18# \x01(\x0b\x32\x1a.protos.Body_TackleToPointH\x00\x12\x36\n\x12\x62ody_turn_to_angle\x18$ \x01(\x0b\x32\x18.protos.Body_TurnToAngleH\x00\x12\x34\n\x11\x62ody_turn_to_ball\x18% \x01(\x0b\x32\x17.protos.Body_TurnToBallH\x00\x12\x36\n\x12\x62ody_turn_to_point\x18& \x01(\x0b\x32\x18.protos.Body_TurnToPointH\x00\x12\x38\n\x13\x66ocus_move_to_point\x18\' \x01(\x0b\x32\x19.protos.Focus_MoveToPointH\x00\x12*\n\x0b\x66ocus_reset\x18( \x01(\x0b\x32\x13.protos.Focus_ResetH\x00\x12\x31\n\x0fneck_scan_field\x18) \x01(\x0b\x32\x16.protos.Neck_ScanFieldH\x00\x12\x35\n\x11neck_scan_players\x18* \x01(\x0b\x32\x18.protos.Neck_ScanPlayersH\x00\x12H\n\x1cneck_turn_to_ball_and_player\x18+ \x01(\x0b\x32 .protos.Neck_TurnToBallAndPlayerH\x00\x12\x42\n\x19neck_turn_to_ball_or_scan\x18, \x01(\x0b\x32\x1d.protos.Neck_TurnToBallOrScanH\x00\x12\x34\n\x11neck_turn_to_ball\x18- \x01(\x0b\x32\x17.protos.Neck_TurnToBallH\x00\x12\x46\n\x1bneck_turn_to_goalie_or_scan\x18. \x01(\x0b\x32\x1f.protos.Neck_TurnToGoalieOrScanH\x00\x12L\n\x1eneck_turn_to_low_conf_teammate\x18/ \x01(\x0b\x32\".protos.Neck_TurnToLowConfTeammateH\x00\x12\x46\n\x1bneck_turn_to_player_or_scan\x18\x30 \x01(\x0b\x32\x1f.protos.Neck_TurnToPlayerOrScanH\x00\x12\x36\n\x12neck_turn_to_point\x18\x31 \x01(\x0b\x32\x18.protos.Neck_TurnToPointH\x00\x12<\n\x15neck_turn_to_relative\x18\x32 \x01(\x0b\x32\x1b.protos.Neck_TurnToRelativeH\x00\x12\x35\n\x11view_change_width\x18\x33 \x01(\x0b\x32\x18.protos.View_ChangeWidthH\x00\x12*\n\x0bview_normal\x18\x34 \x01(\x0b\x32\x13.protos.View_NormalH\x00\x12(\n\nview_synch\x18\x35 \x01(\x0b\x32\x12.protos.View_SynchH\x00\x12&\n\tview_wide\x18\x36 \x01(\x0b\x32\x11.protos.View_WideH\x00\x12-\n\rhelios_goalie\x18\x37 \x01(\x0b\x32\x14.protos.HeliosGoalieH\x00\x12\x36\n\x12helios_goalie_move\x18\x38 \x01(\x0b\x32\x18.protos.HeliosGoalieMoveH\x00\x12\x36\n\x12helios_goalie_kick\x18\x39 \x01(\x0b\x32\x18.protos.HeliosGoalieKickH\x00\x12+\n\x0chelios_shoot\x18: \x01(\x0b\x32\x13.protos.HeliosShootH\x00\x12\x38\n\x13helios_chain_action\x18; \x01(\x0b\x32\x19.protos.HeliosChainActionH\x00\x12>\n\x16helios_basic_offensive\x18< \x01(\x0b\x32\x1c.protos.HeliosBasicOffensiveH\x00\x12\x34\n\x11helios_basic_move\x18= \x01(\x0b\x32\x17.protos.HeliosBasicMoveH\x00\x12\x30\n\x0fhelios_set_play\x18> \x01(\x0b\x32\x15.protos.HeliosSetPlayH\x00\x12/\n\x0ehelios_penalty\x18? \x01(\x0b\x32\x15.protos.HeliosPenaltyH\x00\x12:\n\x14helios_communication\x18@ \x01(\x0b\x32\x1a.protos.HeliosCommunicaionH\x00\x42\x08\n\x06\x61\x63tion\"6\n\rPlayerActions\x12%\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x14.protos.PlayerAction\"8\n\x10\x43hangePlayerType\x12\x16\n\x0euniform_number\x18\x01 \x01(\x05\x12\x0c\n\x04type\x18\x02 \x01(\x05\"\x14\n\x12\x44oHeliosSubstitute\"\x18\n\x16\x44oHeliosSayPlayerTypes\"\xd2\x01\n\x0b\x43oachAction\x12\x37\n\x13\x63hange_player_types\x18\x01 \x01(\x0b\x32\x18.protos.ChangePlayerTypeH\x00\x12:\n\x14\x64o_helios_substitute\x18\x02 \x01(\x0b\x32\x1a.protos.DoHeliosSubstituteH\x00\x12\x44\n\x1a\x64o_helios_say_player_types\x18\x03 \x01(\x0b\x32\x1e.protos.DoHeliosSayPlayerTypesH\x00\x42\x08\n\x06\x61\x63tion\"4\n\x0c\x43oachActions\x12$\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x13.protos.CoachAction\"\x0b\n\tDoKickOff\"T\n\nDoMoveBall\x12\"\n\x08position\x18\x01 \x01(\x0b\x32\x10.protos.Vector2D\x12\"\n\x08velocity\x18\x02 \x01(\x0b\x32\x10.protos.Vector2D\"t\n\x0c\x44oMovePlayer\x12\x10\n\x08our_side\x18\x01 \x01(\x08\x12\x16\n\x0euniform_number\x18\x02 \x01(\x05\x12\"\n\x08position\x18\x03 \x01(\x0b\x32\x10.protos.Vector2D\x12\x16\n\x0e\x62ody_direction\x18\x04 \x01(\x02\"\x0b\n\tDoRecover\"X\n\x0c\x44oChangeMode\x12,\n\x0egame_mode_type\x18\x01 \x01(\x0e\x32\x14.protos.GameModeType\x12\x1a\n\x04side\x18\x02 \x01(\x0e\x32\x0c.protos.Side\"L\n\x12\x44oChangePlayerType\x12\x10\n\x08our_side\x18\x01 \x01(\x08\x12\x16\n\x0euniform_number\x18\x02 \x01(\x05\x12\x0c\n\x04type\x18\x03 \x01(\x05\"\xb5\x02\n\rTrainerAction\x12(\n\x0b\x64o_kick_off\x18\x01 \x01(\x0b\x32\x11.protos.DoKickOffH\x00\x12*\n\x0c\x64o_move_ball\x18\x02 \x01(\x0b\x32\x12.protos.DoMoveBallH\x00\x12.\n\x0e\x64o_move_player\x18\x03 \x01(\x0b\x32\x14.protos.DoMovePlayerH\x00\x12\'\n\ndo_recover\x18\x04 \x01(\x0b\x32\x11.protos.DoRecoverH\x00\x12.\n\x0e\x64o_change_mode\x18\x05 \x01(\x0b\x32\x14.protos.DoChangeModeH\x00\x12;\n\x15\x64o_change_player_type\x18\x06 \x01(\x0b\x32\x1a.protos.DoChangePlayerTypeH\x00\x42\x08\n\x06\x61\x63tion\"8\n\x0eTrainerActions\x12&\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x15.protos.TrainerAction\"\xcf,\n\x0bServerParam\x12%\n\nagent_type\x18\x01 \x01(\x0e\x32\x11.protos.AgentType\x12\x16\n\x0einertia_moment\x18\x02 \x01(\x02\x12\x13\n\x0bplayer_size\x18\x03 \x01(\x02\x12\x14\n\x0cplayer_decay\x18\x04 \x01(\x02\x12\x13\n\x0bplayer_rand\x18\x05 \x01(\x02\x12\x15\n\rplayer_weight\x18\x06 \x01(\x02\x12\x18\n\x10player_speed_max\x18\x07 \x01(\x02\x12\x18\n\x10player_accel_max\x18\x08 \x01(\x02\x12\x13\n\x0bstamina_max\x18\t \x01(\x02\x12\x17\n\x0fstamina_inc_max\x18\n \x01(\x02\x12\x14\n\x0crecover_init\x18\x0b \x01(\x02\x12\x17\n\x0frecover_dec_thr\x18\x0c \x01(\x02\x12\x13\n\x0brecover_min\x18\r \x01(\x02\x12\x13\n\x0brecover_dec\x18\x0e \x01(\x02\x12\x13\n\x0b\x65\x66\x66ort_init\x18\x0f \x01(\x02\x12\x16\n\x0e\x65\x66\x66ort_dec_thr\x18\x10 \x01(\x02\x12\x12\n\neffort_min\x18\x11 \x01(\x02\x12\x12\n\neffort_dec\x18\x12 \x01(\x02\x12\x16\n\x0e\x65\x66\x66ort_inc_thr\x18\x13 \x01(\x02\x12\x12\n\neffort_inc\x18\x14 \x01(\x02\x12\x11\n\tkick_rand\x18\x15 \x01(\x02\x12\x1b\n\x13team_actuator_noise\x18\x16 \x01(\x08\x12\x1c\n\x14player_rand_factor_l\x18\x17 \x01(\x02\x12\x1c\n\x14player_rand_factor_r\x18\x18 \x01(\x02\x12\x1a\n\x12kick_rand_factor_l\x18\x19 \x01(\x02\x12\x1a\n\x12kick_rand_factor_r\x18\x1a \x01(\x02\x12\x11\n\tball_size\x18\x1b \x01(\x02\x12\x12\n\nball_decay\x18\x1c \x01(\x02\x12\x11\n\tball_rand\x18\x1d \x01(\x02\x12\x13\n\x0b\x62\x61ll_weight\x18\x1e \x01(\x02\x12\x16\n\x0e\x62\x61ll_speed_max\x18\x1f \x01(\x02\x12\x16\n\x0e\x62\x61ll_accel_max\x18 \x01(\x02\x12\x17\n\x0f\x64\x61sh_power_rate\x18! \x01(\x02\x12\x17\n\x0fkick_power_rate\x18\" \x01(\x02\x12\x17\n\x0fkickable_margin\x18# \x01(\x02\x12\x16\n\x0e\x63ontrol_radius\x18$ \x01(\x02\x12\x1c\n\x14\x63ontrol_radius_width\x18% \x01(\x02\x12\x11\n\tmax_power\x18& \x01(\x02\x12\x11\n\tmin_power\x18\' \x01(\x02\x12\x12\n\nmax_moment\x18( \x01(\x02\x12\x12\n\nmin_moment\x18) \x01(\x02\x12\x17\n\x0fmax_neck_moment\x18* \x01(\x02\x12\x17\n\x0fmin_neck_moment\x18+ \x01(\x02\x12\x16\n\x0emax_neck_angle\x18, \x01(\x02\x12\x16\n\x0emin_neck_angle\x18- \x01(\x02\x12\x15\n\rvisible_angle\x18. \x01(\x02\x12\x18\n\x10visible_distance\x18/ \x01(\x02\x12\x10\n\x08wind_dir\x18\x30 \x01(\x02\x12\x12\n\nwind_force\x18\x31 \x01(\x02\x12\x12\n\nwind_angle\x18\x32 \x01(\x02\x12\x11\n\twind_rand\x18\x33 \x01(\x02\x12\x15\n\rkickable_area\x18\x34 \x01(\x02\x12\x14\n\x0c\x63\x61tch_area_l\x18\x35 \x01(\x02\x12\x14\n\x0c\x63\x61tch_area_w\x18\x36 \x01(\x02\x12\x19\n\x11\x63\x61tch_probability\x18\x37 \x01(\x02\x12\x18\n\x10goalie_max_moves\x18\x38 \x01(\x05\x12\x1a\n\x12\x63orner_kick_margin\x18\x39 \x01(\x02\x12 \n\x18offside_active_area_size\x18: \x01(\x02\x12\x11\n\twind_none\x18; \x01(\x08\x12\x17\n\x0fuse_wind_random\x18< \x01(\x08\x12\x1b\n\x13\x63oach_say_count_max\x18= \x01(\x05\x12\x1a\n\x12\x63oach_say_msg_size\x18> \x01(\x05\x12\x16\n\x0e\x63lang_win_size\x18? \x01(\x05\x12\x18\n\x10\x63lang_define_win\x18@ \x01(\x05\x12\x16\n\x0e\x63lang_meta_win\x18\x41 \x01(\x05\x12\x18\n\x10\x63lang_advice_win\x18\x42 \x01(\x05\x12\x16\n\x0e\x63lang_info_win\x18\x43 \x01(\x05\x12\x18\n\x10\x63lang_mess_delay\x18\x44 \x01(\x05\x12\x1c\n\x14\x63lang_mess_per_cycle\x18\x45 \x01(\x05\x12\x11\n\thalf_time\x18\x46 \x01(\x05\x12\x16\n\x0esimulator_step\x18G \x01(\x05\x12\x11\n\tsend_step\x18H \x01(\x05\x12\x11\n\trecv_step\x18I \x01(\x05\x12\x17\n\x0fsense_body_step\x18J \x01(\x05\x12\x10\n\x08lcm_step\x18K \x01(\x05\x12\x1b\n\x13player_say_msg_size\x18L \x01(\x05\x12\x17\n\x0fplayer_hear_max\x18M \x01(\x05\x12\x17\n\x0fplayer_hear_inc\x18N \x01(\x05\x12\x19\n\x11player_hear_decay\x18O \x01(\x05\x12\x17\n\x0f\x63\x61tch_ban_cycle\x18P \x01(\x05\x12\x18\n\x10slow_down_factor\x18Q \x01(\x05\x12\x13\n\x0buse_offside\x18R \x01(\x08\x12\x17\n\x0fkickoff_offside\x18S \x01(\x08\x12\x1b\n\x13offside_kick_margin\x18T \x01(\x02\x12\x16\n\x0e\x61udio_cut_dist\x18U \x01(\x02\x12\x1a\n\x12\x64ist_quantize_step\x18V \x01(\x02\x12#\n\x1blandmark_dist_quantize_step\x18W \x01(\x02\x12\x19\n\x11\x64ir_quantize_step\x18X \x01(\x02\x12\x1c\n\x14\x64ist_quantize_step_l\x18Y \x01(\x02\x12\x1c\n\x14\x64ist_quantize_step_r\x18Z \x01(\x02\x12%\n\x1dlandmark_dist_quantize_step_l\x18[ \x01(\x02\x12%\n\x1dlandmark_dist_quantize_step_r\x18\\ \x01(\x02\x12\x1b\n\x13\x64ir_quantize_step_l\x18] \x01(\x02\x12\x1b\n\x13\x64ir_quantize_step_r\x18^ \x01(\x02\x12\x12\n\ncoach_mode\x18_ \x01(\x08\x12\x1f\n\x17\x63oach_with_referee_mode\x18` \x01(\x08\x12\x1a\n\x12use_old_coach_hear\x18\x61 \x01(\x08\x12%\n\x1dslowness_on_top_for_left_team\x18\x62 \x01(\x02\x12&\n\x1eslowness_on_top_for_right_team\x18\x63 \x01(\x02\x12\x14\n\x0cstart_goal_l\x18\x64 \x01(\x05\x12\x14\n\x0cstart_goal_r\x18\x65 \x01(\x05\x12\x13\n\x0b\x66ullstate_l\x18\x66 \x01(\x08\x12\x13\n\x0b\x66ullstate_r\x18g \x01(\x08\x12\x16\n\x0e\x64rop_ball_time\x18h \x01(\x05\x12\x12\n\nsynch_mode\x18i \x01(\x08\x12\x14\n\x0csynch_offset\x18j \x01(\x05\x12\x19\n\x11synch_micro_sleep\x18k \x01(\x05\x12\x14\n\x0cpoint_to_ban\x18l \x01(\x05\x12\x19\n\x11point_to_duration\x18m \x01(\x05\x12\x13\n\x0bplayer_port\x18n \x01(\x05\x12\x14\n\x0ctrainer_port\x18o \x01(\x05\x12\x19\n\x11online_coach_port\x18p \x01(\x05\x12\x14\n\x0cverbose_mode\x18q \x01(\x08\x12\x1a\n\x12\x63oach_send_vi_step\x18r \x01(\x05\x12\x13\n\x0breplay_file\x18s \x01(\t\x12\x15\n\rlandmark_file\x18t \x01(\t\x12\x12\n\nsend_comms\x18u \x01(\x08\x12\x14\n\x0ctext_logging\x18v \x01(\x08\x12\x14\n\x0cgame_logging\x18w \x01(\x08\x12\x18\n\x10game_log_version\x18x \x01(\x05\x12\x14\n\x0ctext_log_dir\x18y \x01(\t\x12\x14\n\x0cgame_log_dir\x18z \x01(\t\x12\x1b\n\x13text_log_fixed_name\x18{ \x01(\t\x12\x1b\n\x13game_log_fixed_name\x18| \x01(\t\x12\x1a\n\x12use_text_log_fixed\x18} \x01(\x08\x12\x1a\n\x12use_game_log_fixed\x18~ \x01(\x08\x12\x1a\n\x12use_text_log_dated\x18\x7f \x01(\x08\x12\x1b\n\x12use_game_log_dated\x18\x80\x01 \x01(\x08\x12\x18\n\x0flog_date_format\x18\x81\x01 \x01(\t\x12\x12\n\tlog_times\x18\x82\x01 \x01(\x08\x12\x17\n\x0erecord_message\x18\x83\x01 \x01(\x08\x12\x1d\n\x14text_log_compression\x18\x84\x01 \x01(\x05\x12\x1d\n\x14game_log_compression\x18\x85\x01 \x01(\x05\x12\x14\n\x0buse_profile\x18\x86\x01 \x01(\x08\x12\x14\n\x0btackle_dist\x18\x87\x01 \x01(\x02\x12\x19\n\x10tackle_back_dist\x18\x88\x01 \x01(\x02\x12\x15\n\x0ctackle_width\x18\x89\x01 \x01(\x02\x12\x18\n\x0ftackle_exponent\x18\x8a\x01 \x01(\x02\x12\x16\n\rtackle_cycles\x18\x8b\x01 \x01(\x05\x12\x1a\n\x11tackle_power_rate\x18\x8c\x01 \x01(\x02\x12\x1d\n\x14\x66reeform_wait_period\x18\x8d\x01 \x01(\x05\x12\x1d\n\x14\x66reeform_send_period\x18\x8e\x01 \x01(\x05\x12\x19\n\x10\x66ree_kick_faults\x18\x8f\x01 \x01(\x08\x12\x14\n\x0b\x62\x61\x63k_passes\x18\x90\x01 \x01(\x08\x12\x1a\n\x11proper_goal_kicks\x18\x91\x01 \x01(\x08\x12\x19\n\x10stopped_ball_vel\x18\x92\x01 \x01(\x02\x12\x17\n\x0emax_goal_kicks\x18\x93\x01 \x01(\x05\x12\x16\n\rclang_del_win\x18\x94\x01 \x01(\x05\x12\x17\n\x0e\x63lang_rule_win\x18\x95\x01 \x01(\x05\x12\x12\n\tauto_mode\x18\x96\x01 \x01(\x08\x12\x16\n\rkick_off_wait\x18\x97\x01 \x01(\x05\x12\x15\n\x0c\x63onnect_wait\x18\x98\x01 \x01(\x05\x12\x17\n\x0egame_over_wait\x18\x99\x01 \x01(\x05\x12\x15\n\x0cteam_l_start\x18\x9a\x01 \x01(\t\x12\x15\n\x0cteam_r_start\x18\x9b\x01 \x01(\t\x12\x16\n\rkeepaway_mode\x18\x9c\x01 \x01(\x08\x12\x18\n\x0fkeepaway_length\x18\x9d\x01 \x01(\x02\x12\x17\n\x0ekeepaway_width\x18\x9e\x01 \x01(\x02\x12\x19\n\x10keepaway_logging\x18\x9f\x01 \x01(\x08\x12\x19\n\x10keepaway_log_dir\x18\xa0\x01 \x01(\t\x12 \n\x17keepaway_log_fixed_name\x18\xa1\x01 \x01(\t\x12\x1b\n\x12keepaway_log_fixed\x18\xa2\x01 \x01(\x08\x12\x1b\n\x12keepaway_log_dated\x18\xa3\x01 \x01(\x08\x12\x17\n\x0ekeepaway_start\x18\xa4\x01 \x01(\x05\x12\x18\n\x0fnr_normal_halfs\x18\xa5\x01 \x01(\x05\x12\x17\n\x0enr_extra_halfs\x18\xa6\x01 \x01(\x05\x12\x1b\n\x12penalty_shoot_outs\x18\xa7\x01 \x01(\x08\x12\x1e\n\x15pen_before_setup_wait\x18\xa8\x01 \x01(\x05\x12\x17\n\x0epen_setup_wait\x18\xa9\x01 \x01(\x05\x12\x17\n\x0epen_ready_wait\x18\xaa\x01 \x01(\x05\x12\x17\n\x0epen_taken_wait\x18\xab\x01 \x01(\x05\x12\x15\n\x0cpen_nr_kicks\x18\xac\x01 \x01(\x05\x12\x1c\n\x13pen_max_extra_kicks\x18\xad\x01 \x01(\x05\x12\x13\n\npen_dist_x\x18\xae\x01 \x01(\x02\x12\x1a\n\x11pen_random_winner\x18\xaf\x01 \x01(\x08\x12\x1d\n\x14pen_allow_mult_kicks\x18\xb0\x01 \x01(\x08\x12\x1e\n\x15pen_max_goalie_dist_x\x18\xb1\x01 \x01(\x02\x12 \n\x17pen_coach_moves_players\x18\xb2\x01 \x01(\x08\x12\x13\n\nmodule_dir\x18\xb3\x01 \x01(\t\x12\x18\n\x0f\x62\x61ll_stuck_area\x18\xb4\x01 \x01(\x02\x12\x17\n\x0e\x63oach_msg_file\x18\xb5\x01 \x01(\t\x12\x19\n\x10max_tackle_power\x18\xb6\x01 \x01(\x02\x12\x1e\n\x15max_back_tackle_power\x18\xb7\x01 \x01(\x02\x12\x1d\n\x14player_speed_max_min\x18\xb8\x01 \x01(\x02\x12\x16\n\rextra_stamina\x18\xb9\x01 \x01(\x02\x12\x19\n\x10synch_see_offset\x18\xba\x01 \x01(\x05\x12\x18\n\x0f\x65xtra_half_time\x18\xbb\x01 \x01(\x05\x12\x19\n\x10stamina_capacity\x18\xbc\x01 \x01(\x02\x12\x17\n\x0emax_dash_angle\x18\xbd\x01 \x01(\x02\x12\x17\n\x0emin_dash_angle\x18\xbe\x01 \x01(\x02\x12\x18\n\x0f\x64\x61sh_angle_step\x18\xbf\x01 \x01(\x02\x12\x17\n\x0eside_dash_rate\x18\xc0\x01 \x01(\x02\x12\x17\n\x0e\x62\x61\x63k_dash_rate\x18\xc1\x01 \x01(\x02\x12\x17\n\x0emax_dash_power\x18\xc2\x01 \x01(\x02\x12\x17\n\x0emin_dash_power\x18\xc3\x01 \x01(\x02\x12\x1b\n\x12tackle_rand_factor\x18\xc4\x01 \x01(\x02\x12 \n\x17\x66oul_detect_probability\x18\xc5\x01 \x01(\x02\x12\x16\n\rfoul_exponent\x18\xc6\x01 \x01(\x02\x12\x14\n\x0b\x66oul_cycles\x18\xc7\x01 \x01(\x05\x12\x14\n\x0bgolden_goal\x18\xc8\x01 \x01(\x08\x12\x1d\n\x14red_card_probability\x18\xc9\x01 \x01(\x02\x12!\n\x18illegal_defense_duration\x18\xca\x01 \x01(\x05\x12\x1f\n\x16illegal_defense_number\x18\xcb\x01 \x01(\x05\x12\x1f\n\x16illegal_defense_dist_x\x18\xcc\x01 \x01(\x02\x12\x1e\n\x15illegal_defense_width\x18\xcd\x01 \x01(\x02\x12\x19\n\x10\x66ixed_teamname_l\x18\xce\x01 \x01(\t\x12\x19\n\x10\x66ixed_teamname_r\x18\xcf\x01 \x01(\t\x12\x18\n\x0fmax_catch_angle\x18\xd0\x01 \x01(\x02\x12\x18\n\x0fmin_catch_angle\x18\xd1\x01 \x01(\x02\x12\x14\n\x0brandom_seed\x18\xd2\x01 \x01(\x05\x12\x1f\n\x16long_kick_power_factor\x18\xd3\x01 \x01(\x02\x12\x18\n\x0flong_kick_delay\x18\xd4\x01 \x01(\x05\x12\x15\n\x0cmax_monitors\x18\xd5\x01 \x01(\x05\x12\x17\n\x0e\x63\x61tchable_area\x18\xd6\x01 \x01(\x02\x12\x17\n\x0ereal_speed_max\x18\xd7\x01 \x01(\x02\x12\x1a\n\x11pitch_half_length\x18\xd8\x01 \x01(\x02\x12\x19\n\x10pitch_half_width\x18\xd9\x01 \x01(\x02\x12 \n\x17our_penalty_area_line_x\x18\xda\x01 \x01(\x02\x12\"\n\x19their_penalty_area_line_x\x18\xdb\x01 \x01(\x02\x12 \n\x17penalty_area_half_width\x18\xdc\x01 \x01(\x02\x12\x1c\n\x13penalty_area_length\x18\xdd\x01 \x01(\x02\x12\x13\n\ngoal_width\x18\xde\x01 \x01(\x02\"\xff\x07\n\x0bPlayerParam\x12%\n\nagent_type\x18\x01 \x01(\x0e\x32\x11.protos.AgentType\x12\x14\n\x0cplayer_types\x18\x02 \x01(\x05\x12\x10\n\x08subs_max\x18\x03 \x01(\x05\x12\x0e\n\x06pt_max\x18\x04 \x01(\x05\x12\x1f\n\x17\x61llow_mult_default_type\x18\x05 \x01(\x08\x12\"\n\x1aplayer_speed_max_delta_min\x18\x06 \x01(\x02\x12\"\n\x1aplayer_speed_max_delta_max\x18\x07 \x01(\x02\x12$\n\x1cstamina_inc_max_delta_factor\x18\x08 \x01(\x02\x12\x1e\n\x16player_decay_delta_min\x18\t \x01(\x02\x12\x1e\n\x16player_decay_delta_max\x18\n \x01(\x02\x12#\n\x1binertia_moment_delta_factor\x18\x0b \x01(\x02\x12!\n\x19\x64\x61sh_power_rate_delta_min\x18\x0c \x01(\x02\x12!\n\x19\x64\x61sh_power_rate_delta_max\x18\r \x01(\x02\x12 \n\x18player_size_delta_factor\x18\x0e \x01(\x02\x12!\n\x19kickable_margin_delta_min\x18\x0f \x01(\x02\x12!\n\x19kickable_margin_delta_max\x18\x10 \x01(\x02\x12\x1e\n\x16kick_rand_delta_factor\x18\x11 \x01(\x02\x12\x1f\n\x17\x65xtra_stamina_delta_min\x18\x12 \x01(\x02\x12\x1f\n\x17\x65xtra_stamina_delta_max\x18\x13 \x01(\x02\x12\x1f\n\x17\x65\x66\x66ort_max_delta_factor\x18\x14 \x01(\x02\x12\x1f\n\x17\x65\x66\x66ort_min_delta_factor\x18\x15 \x01(\x02\x12\x13\n\x0brandom_seed\x18\x16 \x01(\x05\x12%\n\x1dnew_dash_power_rate_delta_min\x18\x17 \x01(\x02\x12%\n\x1dnew_dash_power_rate_delta_max\x18\x18 \x01(\x02\x12(\n new_stamina_inc_max_delta_factor\x18\x19 \x01(\x02\x12!\n\x19kick_power_rate_delta_min\x18\x1a \x01(\x02\x12!\n\x19kick_power_rate_delta_max\x18\x1b \x01(\x02\x12,\n$foul_detect_probability_delta_factor\x18\x1c \x01(\x02\x12$\n\x1c\x63\x61tchable_area_l_stretch_min\x18\x1d \x01(\x02\x12$\n\x1c\x63\x61tchable_area_l_stretch_max\x18\x1e \x01(\x02\"\xb1\x07\n\nPlayerType\x12%\n\nagent_type\x18\x01 \x01(\x0e\x32\x11.protos.AgentType\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x17\n\x0fstamina_inc_max\x18\x03 \x01(\x02\x12\x14\n\x0cplayer_decay\x18\x04 \x01(\x02\x12\x16\n\x0einertia_moment\x18\x05 \x01(\x02\x12\x17\n\x0f\x64\x61sh_power_rate\x18\x06 \x01(\x02\x12\x13\n\x0bplayer_size\x18\x07 \x01(\x02\x12\x17\n\x0fkickable_margin\x18\x08 \x01(\x02\x12\x11\n\tkick_rand\x18\t \x01(\x02\x12\x15\n\rextra_stamina\x18\n \x01(\x02\x12\x12\n\neffort_max\x18\x0b \x01(\x02\x12\x12\n\neffort_min\x18\x0c \x01(\x02\x12\x17\n\x0fkick_power_rate\x18\r \x01(\x02\x12\x1f\n\x17\x66oul_detect_probability\x18\x0e \x01(\x02\x12 \n\x18\x63\x61tchable_area_l_stretch\x18\x0f \x01(\x02\x12\x17\n\x0funum_far_length\x18\x10 \x01(\x02\x12\x1b\n\x13unum_too_far_length\x18\x11 \x01(\x02\x12\x17\n\x0fteam_far_length\x18\x12 \x01(\x02\x12\x1b\n\x13team_too_far_length\x18\x13 \x01(\x02\x12%\n\x1dplayer_max_observation_length\x18\x14 \x01(\x02\x12\x1b\n\x13\x62\x61ll_vel_far_length\x18\x15 \x01(\x02\x12\x1f\n\x17\x62\x61ll_vel_too_far_length\x18\x16 \x01(\x02\x12#\n\x1b\x62\x61ll_max_observation_length\x18\x17 \x01(\x02\x12\x1b\n\x13\x66lag_chg_far_length\x18\x18 \x01(\x02\x12\x1f\n\x17\x66lag_chg_too_far_length\x18\x19 \x01(\x02\x12#\n\x1b\x66lag_max_observation_length\x18\x1a \x01(\x02\x12\x15\n\rkickable_area\x18\x1b \x01(\x02\x12\x1f\n\x17reliable_catchable_dist\x18\x1c \x01(\x02\x12\x1a\n\x12max_catchable_dist\x18\x1d \x01(\x02\x12\x16\n\x0ereal_speed_max\x18\x1e \x01(\x02\x12\x19\n\x11player_speed_max2\x18\x1f \x01(\x02\x12\x17\n\x0freal_speed_max2\x18 \x01(\x02\x12!\n\x19\x63ycles_to_reach_max_speed\x18! \x01(\x05\x12\x18\n\x10player_speed_max\x18\" \x01(\x02\"\x07\n\x05\x45mpty\"\x17\n\x15InitMessageFromServer*-\n\tViewWidth\x12\n\n\x06NARROW\x10\x00\x12\n\n\x06NORMAL\x10\x01\x12\x08\n\x04WIDE\x10\x02*(\n\x04Side\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x08\n\x04LEFT\x10\x01\x12\t\n\x05RIGHT\x10\x02*\xad\x02\n\x0bLoggerLevel\x12\x08\n\x04None\x10\x00\x12\n\n\x06SYSTEM\x10\x01\x12\n\n\x06SENSOR\x10\x02\x12\t\n\x05WORLD\x10\x04\x12\n\n\x06\x41\x43TION\x10\x08\x12\r\n\tINTERCEPT\x10\x10\x12\x08\n\x04KICK\x10 \x12\x08\n\x04HOLD\x10@\x12\x0c\n\x07\x44RIBBLE\x10\x80\x01\x12\t\n\x04PASS\x10\x80\x02\x12\n\n\x05\x43ROSS\x10\x80\x04\x12\n\n\x05SHOOT\x10\x80\x08\x12\n\n\x05\x43LEAR\x10\x80\x10\x12\n\n\x05\x42LOCK\x10\x80 \x12\t\n\x04MARK\x10\x80@\x12\x11\n\x0bPOSITIONING\x10\x80\x80\x01\x12\n\n\x04ROLE\x10\x80\x80\x02\x12\n\n\x04TEAM\x10\x80\x80\x04\x12\x13\n\rCOMMUNICATION\x10\x80\x80\x08\x12\x0e\n\x08\x41NALYZER\x10\x80\x80\x10\x12\x12\n\x0c\x41\x43TION_CHAIN\x10\x80\x80 \x12\n\n\x04PLAN\x10\x80\x80@*v\n\x13InterceptActionType\x12!\n\x1dUNKNOWN_Intercept_Action_Type\x10\x00\x12\r\n\tOMNI_DASH\x10\x01\x12\x15\n\x11TURN_FORWARD_DASH\x10\x02\x12\x16\n\x12TURN_BACKWARD_DASH\x10\x03*\xbb\x04\n\x0cGameModeType\x12\x11\n\rBeforeKickOff\x10\x00\x12\x0c\n\x08TimeOver\x10\x01\x12\n\n\x06PlayOn\x10\x02\x12\x0c\n\x08KickOff_\x10\x03\x12\x0b\n\x07KickIn_\x10\x04\x12\r\n\tFreeKick_\x10\x05\x12\x0f\n\x0b\x43ornerKick_\x10\x06\x12\r\n\tGoalKick_\x10\x07\x12\x0e\n\nAfterGoal_\x10\x08\x12\x0c\n\x08OffSide_\x10\t\x12\x10\n\x0cPenaltyKick_\x10\n\x12\x11\n\rFirstHalfOver\x10\x0b\x12\t\n\x05Pause\x10\x0c\x12\t\n\x05Human\x10\r\x12\x0f\n\x0b\x46oulCharge_\x10\x0e\x12\r\n\tFoulPush_\x10\x0f\x12\x19\n\x15\x46oulMultipleAttacker_\x10\x10\x12\x10\n\x0c\x46oulBallOut_\x10\x11\x12\r\n\tBackPass_\x10\x12\x12\x12\n\x0e\x46reeKickFault_\x10\x13\x12\x0f\n\x0b\x43\x61tchFault_\x10\x14\x12\x10\n\x0cIndFreeKick_\x10\x15\x12\x11\n\rPenaltySetup_\x10\x16\x12\x11\n\rPenaltyReady_\x10\x17\x12\x11\n\rPenaltyTaken_\x10\x18\x12\x10\n\x0cPenaltyMiss_\x10\x19\x12\x11\n\rPenaltyScore_\x10\x1a\x12\x13\n\x0fIllegalDefense_\x10\x1b\x12\x13\n\x0fPenaltyOnfield_\x10\x1c\x12\x10\n\x0cPenaltyFoul_\x10\x1d\x12\x10\n\x0cGoalieCatch_\x10\x1e\x12\x0e\n\nExtendHalf\x10\x1f\x12\x0c\n\x08MODE_MAX\x10 *2\n\tAgentType\x12\x0b\n\x07PlayerT\x10\x00\x12\n\n\x06\x43oachT\x10\x01\x12\x0c\n\x08TrainerT\x10\x02\x32\x92\x04\n\x04Game\x12:\n\x10GetPlayerActions\x12\r.protos.State\x1a\x15.protos.PlayerActions\"\x00\x12\x38\n\x0fGetCoachActions\x12\r.protos.State\x1a\x14.protos.CoachActions\"\x00\x12<\n\x11GetTrainerActions\x12\r.protos.State\x1a\x16.protos.TrainerActions\"\x00\x12\x37\n\x0fSendInitMessage\x12\x13.protos.InitMessage\x1a\r.protos.Empty\"\x00\x12\x38\n\x10SendServerParams\x12\x13.protos.ServerParam\x1a\r.protos.Empty\"\x00\x12\x38\n\x10SendPlayerParams\x12\x13.protos.PlayerParam\x1a\r.protos.Empty\"\x00\x12\x35\n\x0eSendPlayerType\x12\x12.protos.PlayerType\x1a\r.protos.Empty\"\x00\x12@\n\x0eGetInitMessage\x12\r.protos.Empty\x1a\x1d.protos.InitMessageFromServer\"\x00\x12\x30\n\x0eSendByeCommand\x12\r.protos.Empty\x1a\r.protos.Empty\"\x00\x62\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'service_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - DESCRIPTOR._options = None - _globals['_WORLDMODEL_OURPLAYERSDICTENTRY']._options = None - _globals['_WORLDMODEL_OURPLAYERSDICTENTRY']._serialized_options = b'8\001' - _globals['_WORLDMODEL_THEIRPLAYERSDICTENTRY']._options = None - _globals['_WORLDMODEL_THEIRPLAYERSDICTENTRY']._serialized_options = b'8\001' - _globals['_WORLDMODEL_HELIOSHOMEPOSITIONSENTRY']._options = None - _globals['_WORLDMODEL_HELIOSHOMEPOSITIONSENTRY']._serialized_options = b'8\001' - _globals['_VIEWWIDTH']._serialized_start=24827 - _globals['_VIEWWIDTH']._serialized_end=24872 - _globals['_SIDE']._serialized_start=24874 - _globals['_SIDE']._serialized_end=24914 - _globals['_LOGGERLEVEL']._serialized_start=24917 - _globals['_LOGGERLEVEL']._serialized_end=25218 - _globals['_INTERCEPTACTIONTYPE']._serialized_start=25220 - _globals['_INTERCEPTACTIONTYPE']._serialized_end=25338 - _globals['_GAMEMODETYPE']._serialized_start=25341 - _globals['_GAMEMODETYPE']._serialized_end=25912 - _globals['_AGENTTYPE']._serialized_start=25914 - _globals['_AGENTTYPE']._serialized_end=25964 - _globals['_VECTOR2D']._serialized_start=25 - _globals['_VECTOR2D']._serialized_end=86 - _globals['_BALL']._serialized_start=89 - _globals['_BALL']._serialized_end=604 - _globals['_PLAYER']._serialized_start=607 - _globals['_PLAYER']._serialized_end=1408 - _globals['_SELF']._serialized_start=1411 - _globals['_SELF']._serialized_end=2371 - _globals['_INTERCEPTINFO']._serialized_start=2374 - _globals['_INTERCEPTINFO']._serialized_end=2647 - _globals['_INTERCEPTTABLE']._serialized_start=2650 - _globals['_INTERCEPTTABLE']._serialized_end=3000 - _globals['_WORLDMODEL']._serialized_start=3003 - _globals['_WORLDMODEL']._serialized_end=4297 - _globals['_WORLDMODEL_OURPLAYERSDICTENTRY']._serialized_start=4077 - _globals['_WORLDMODEL_OURPLAYERSDICTENTRY']._serialized_end=4146 - _globals['_WORLDMODEL_THEIRPLAYERSDICTENTRY']._serialized_start=4148 - _globals['_WORLDMODEL_THEIRPLAYERSDICTENTRY']._serialized_end=4219 - _globals['_WORLDMODEL_HELIOSHOMEPOSITIONSENTRY']._serialized_start=4221 - _globals['_WORLDMODEL_HELIOSHOMEPOSITIONSENTRY']._serialized_end=4297 - _globals['_STATE']._serialized_start=4300 - _globals['_STATE']._serialized_end=4433 - _globals['_INITMESSAGE']._serialized_start=4435 - _globals['_INITMESSAGE']._serialized_end=4507 - _globals['_DASH']._serialized_start=4509 - _globals['_DASH']._serialized_end=4558 - _globals['_TURN']._serialized_start=4560 - _globals['_TURN']._serialized_end=4594 - _globals['_KICK']._serialized_start=4596 - _globals['_KICK']._serialized_end=4645 - _globals['_TACKLE']._serialized_start=4647 - _globals['_TACKLE']._serialized_end=4691 - _globals['_CATCH']._serialized_start=4693 - _globals['_CATCH']._serialized_end=4700 - _globals['_MOVE']._serialized_start=4702 - _globals['_MOVE']._serialized_end=4730 - _globals['_TURNNECK']._serialized_start=4732 - _globals['_TURNNECK']._serialized_end=4758 - _globals['_CHANGEVIEW']._serialized_start=4760 - _globals['_CHANGEVIEW']._serialized_end=4811 - _globals['_BALLMESSAGE']._serialized_start=4813 - _globals['_BALLMESSAGE']._serialized_end=4908 - _globals['_PASSMESSAGE']._serialized_start=4911 - _globals['_PASSMESSAGE']._serialized_end=5081 - _globals['_INTERCEPTMESSAGE']._serialized_start=5083 - _globals['_INTERCEPTMESSAGE']._serialized_end=5153 - _globals['_GOALIEMESSAGE']._serialized_start=5155 - _globals['_GOALIEMESSAGE']._serialized_end=5275 - _globals['_GOALIEANDPLAYERMESSAGE']._serialized_start=5278 - _globals['_GOALIEANDPLAYERMESSAGE']._serialized_end=5481 - _globals['_OFFSIDELINEMESSAGE']._serialized_start=5483 - _globals['_OFFSIDELINEMESSAGE']._serialized_end=5527 - _globals['_DEFENSELINEMESSAGE']._serialized_start=5529 - _globals['_DEFENSELINEMESSAGE']._serialized_end=5573 - _globals['_WAITREQUESTMESSAGE']._serialized_start=5575 - _globals['_WAITREQUESTMESSAGE']._serialized_end=5595 - _globals['_SETPLAYMESSAGE']._serialized_start=5597 - _globals['_SETPLAYMESSAGE']._serialized_end=5632 - _globals['_PASSREQUESTMESSAGE']._serialized_start=5634 - _globals['_PASSREQUESTMESSAGE']._serialized_end=5694 - _globals['_STAMINAMESSAGE']._serialized_start=5696 - _globals['_STAMINAMESSAGE']._serialized_end=5729 - _globals['_RECOVERYMESSAGE']._serialized_start=5731 - _globals['_RECOVERYMESSAGE']._serialized_end=5766 - _globals['_STAMINACAPACITYMESSAGE']._serialized_start=5768 - _globals['_STAMINACAPACITYMESSAGE']._serialized_end=5818 - _globals['_DRIBBLEMESSAGE']._serialized_start=5820 - _globals['_DRIBBLEMESSAGE']._serialized_end=5897 - _globals['_BALLGOALIEMESSAGE']._serialized_start=5900 - _globals['_BALLGOALIEMESSAGE']._serialized_end=6075 - _globals['_ONEPLAYERMESSAGE']._serialized_start=6077 - _globals['_ONEPLAYERMESSAGE']._serialized_end=6155 - _globals['_TWOPLAYERMESSAGE']._serialized_start=6158 - _globals['_TWOPLAYERMESSAGE']._serialized_end=6322 - _globals['_THREEPLAYERMESSAGE']._serialized_start=6325 - _globals['_THREEPLAYERMESSAGE']._serialized_end=6563 - _globals['_SELFMESSAGE']._serialized_start=6565 - _globals['_SELFMESSAGE']._serialized_end=6670 - _globals['_TEAMMATEMESSAGE']._serialized_start=6672 - _globals['_TEAMMATEMESSAGE']._serialized_end=6773 - _globals['_OPPONENTMESSAGE']._serialized_start=6775 - _globals['_OPPONENTMESSAGE']._serialized_end=6876 - _globals['_BALLPLAYERMESSAGE']._serialized_start=6879 - _globals['_BALLPLAYERMESSAGE']._serialized_end=7071 - _globals['_SAY']._serialized_start=7074 - _globals['_SAY']._serialized_end=8306 - _globals['_POINTTO']._serialized_start=8308 - _globals['_POINTTO']._serialized_end=8339 - _globals['_POINTTOOF']._serialized_start=8341 - _globals['_POINTTOOF']._serialized_end=8352 - _globals['_ATTENTIONTO']._serialized_start=8354 - _globals['_ATTENTIONTO']._serialized_end=8409 - _globals['_ATTENTIONTOOF']._serialized_start=8411 - _globals['_ATTENTIONTOOF']._serialized_end=8426 - _globals['_ADDTEXT']._serialized_start=8428 - _globals['_ADDTEXT']._serialized_end=8490 - _globals['_ADDPOINT']._serialized_start=8492 - _globals['_ADDPOINT']._serialized_end=8586 - _globals['_ADDLINE']._serialized_start=8588 - _globals['_ADDLINE']._serialized_end=8712 - _globals['_ADDARC']._serialized_start=8715 - _globals['_ADDARC']._serialized_end=8865 - _globals['_ADDCIRCLE']._serialized_start=8867 - _globals['_ADDCIRCLE']._serialized_end=8993 - _globals['_ADDTRIANGLE']._serialized_start=8996 - _globals['_ADDTRIANGLE']._serialized_end=9176 - _globals['_ADDRECTANGLE']._serialized_start=9179 - _globals['_ADDRECTANGLE']._serialized_end=9316 - _globals['_ADDSECTOR']._serialized_start=9319 - _globals['_ADDSECTOR']._serialized_end=9510 - _globals['_ADDMESSAGE']._serialized_start=9512 - _globals['_ADDMESSAGE']._serialized_end=9628 - _globals['_LOG']._serialized_start=9631 - _globals['_LOG']._serialized_end=10008 - _globals['_DEBUGCLIENT']._serialized_start=10010 - _globals['_DEBUGCLIENT']._serialized_end=10040 - _globals['_BODY_GOTOPOINT']._serialized_start=10042 - _globals['_BODY_GOTOPOINT']._serialized_end=10150 - _globals['_BODY_SMARTKICK']._serialized_start=10152 - _globals['_BODY_SMARTKICK']._serialized_end=10279 - _globals['_BHV_BEFOREKICKOFF']._serialized_start=10281 - _globals['_BHV_BEFOREKICKOFF']._serialized_end=10333 - _globals['_BHV_BODYNECKTOBALL']._serialized_start=10335 - _globals['_BHV_BODYNECKTOBALL']._serialized_end=10355 - _globals['_BHV_BODYNECKTOPOINT']._serialized_start=10357 - _globals['_BHV_BODYNECKTOPOINT']._serialized_end=10411 - _globals['_BHV_EMERGENCY']._serialized_start=10413 - _globals['_BHV_EMERGENCY']._serialized_end=10428 - _globals['_BHV_GOTOPOINTLOOKBALL']._serialized_start=10430 - _globals['_BHV_GOTOPOINTLOOKBALL']._serialized_end=10545 - _globals['_BHV_NECKBODYTOBALL']._serialized_start=10547 - _globals['_BHV_NECKBODYTOBALL']._serialized_end=10586 - _globals['_BHV_NECKBODYTOPOINT']._serialized_start=10588 - _globals['_BHV_NECKBODYTOPOINT']._serialized_end=10661 - _globals['_BHV_SCANFIELD']._serialized_start=10663 - _globals['_BHV_SCANFIELD']._serialized_end=10678 - _globals['_BODY_ADVANCEBALL']._serialized_start=10680 - _globals['_BODY_ADVANCEBALL']._serialized_end=10698 - _globals['_BODY_CLEARBALL']._serialized_start=10700 - _globals['_BODY_CLEARBALL']._serialized_end=10716 - _globals['_BODY_DRIBBLE']._serialized_start=10719 - _globals['_BODY_DRIBBLE']._serialized_end=10856 - _globals['_BODY_GOTOPOINTDODGE']._serialized_start=10858 - _globals['_BODY_GOTOPOINTDODGE']._serialized_end=10939 - _globals['_BODY_HOLDBALL']._serialized_start=10941 - _globals['_BODY_HOLDBALL']._serialized_end=11063 - _globals['_BODY_INTERCEPT']._serialized_start=11065 - _globals['_BODY_INTERCEPT']._serialized_end=11142 - _globals['_BODY_KICKONESTEP']._serialized_start=11144 - _globals['_BODY_KICKONESTEP']._serialized_end=11243 - _globals['_BODY_STOPBALL']._serialized_start=11245 - _globals['_BODY_STOPBALL']._serialized_end=11260 - _globals['_BODY_STOPDASH']._serialized_start=11262 - _globals['_BODY_STOPDASH']._serialized_end=11300 - _globals['_BODY_TACKLETOPOINT']._serialized_start=11302 - _globals['_BODY_TACKLETOPOINT']._serialized_end=11406 - _globals['_BODY_TURNTOANGLE']._serialized_start=11408 - _globals['_BODY_TURNTOANGLE']._serialized_end=11441 - _globals['_BODY_TURNTOBALL']._serialized_start=11443 - _globals['_BODY_TURNTOBALL']._serialized_end=11475 - _globals['_BODY_TURNTOPOINT']._serialized_start=11477 - _globals['_BODY_TURNTOPOINT']._serialized_end=11550 - _globals['_FOCUS_MOVETOPOINT']._serialized_start=11552 - _globals['_FOCUS_MOVETOPOINT']._serialized_end=11611 - _globals['_FOCUS_RESET']._serialized_start=11613 - _globals['_FOCUS_RESET']._serialized_end=11626 - _globals['_NECK_SCANFIELD']._serialized_start=11628 - _globals['_NECK_SCANFIELD']._serialized_end=11644 - _globals['_NECK_SCANPLAYERS']._serialized_start=11646 - _globals['_NECK_SCANPLAYERS']._serialized_end=11664 - _globals['_NECK_TURNTOBALLANDPLAYER']._serialized_start=11666 - _globals['_NECK_TURNTOBALLANDPLAYER']._serialized_end=11769 - _globals['_NECK_TURNTOBALLORSCAN']._serialized_start=11771 - _globals['_NECK_TURNTOBALLORSCAN']._serialized_end=11819 - _globals['_NECK_TURNTOBALL']._serialized_start=11821 - _globals['_NECK_TURNTOBALL']._serialized_end=11838 - _globals['_NECK_TURNTOGOALIEORSCAN']._serialized_start=11840 - _globals['_NECK_TURNTOGOALIEORSCAN']._serialized_end=11890 - _globals['_NECK_TURNTOLOWCONFTEAMMATE']._serialized_start=11892 - _globals['_NECK_TURNTOLOWCONFTEAMMATE']._serialized_end=11920 - _globals['_NECK_TURNTOPLAYERORSCAN']._serialized_start=11922 - _globals['_NECK_TURNTOPLAYERORSCAN']._serialized_end=12024 - _globals['_NECK_TURNTOPOINT']._serialized_start=12026 - _globals['_NECK_TURNTOPOINT']._serialized_end=12084 - _globals['_NECK_TURNTORELATIVE']._serialized_start=12086 - _globals['_NECK_TURNTORELATIVE']._serialized_end=12122 - _globals['_VIEW_CHANGEWIDTH']._serialized_start=12124 - _globals['_VIEW_CHANGEWIDTH']._serialized_end=12181 - _globals['_VIEW_NORMAL']._serialized_start=12183 - _globals['_VIEW_NORMAL']._serialized_end=12196 - _globals['_VIEW_SYNCH']._serialized_start=12198 - _globals['_VIEW_SYNCH']._serialized_end=12210 - _globals['_VIEW_WIDE']._serialized_start=12212 - _globals['_VIEW_WIDE']._serialized_end=12223 - _globals['_HELIOSGOALIE']._serialized_start=12225 - _globals['_HELIOSGOALIE']._serialized_end=12239 - _globals['_HELIOSGOALIEMOVE']._serialized_start=12241 - _globals['_HELIOSGOALIEMOVE']._serialized_end=12259 - _globals['_HELIOSGOALIEKICK']._serialized_start=12261 - _globals['_HELIOSGOALIEKICK']._serialized_end=12279 - _globals['_HELIOSSHOOT']._serialized_start=12281 - _globals['_HELIOSSHOOT']._serialized_end=12294 - _globals['_HELIOSCHAINACTION']._serialized_start=12297 - _globals['_HELIOSCHAINACTION']._serialized_end=12505 - _globals['_HELIOSBASICOFFENSIVE']._serialized_start=12507 - _globals['_HELIOSBASICOFFENSIVE']._serialized_end=12529 - _globals['_HELIOSBASICMOVE']._serialized_start=12531 - _globals['_HELIOSBASICMOVE']._serialized_end=12548 - _globals['_HELIOSSETPLAY']._serialized_start=12550 - _globals['_HELIOSSETPLAY']._serialized_end=12565 - _globals['_HELIOSPENALTY']._serialized_start=12567 - _globals['_HELIOSPENALTY']._serialized_end=12582 - _globals['_HELIOSCOMMUNICAION']._serialized_start=12584 - _globals['_HELIOSCOMMUNICAION']._serialized_end=12604 - _globals['_PLAYERACTION']._serialized_start=12607 - _globals['_PLAYERACTION']._serialized_end=15906 - _globals['_PLAYERACTIONS']._serialized_start=15908 - _globals['_PLAYERACTIONS']._serialized_end=15962 - _globals['_CHANGEPLAYERTYPE']._serialized_start=15964 - _globals['_CHANGEPLAYERTYPE']._serialized_end=16020 - _globals['_DOHELIOSSUBSTITUTE']._serialized_start=16022 - _globals['_DOHELIOSSUBSTITUTE']._serialized_end=16042 - _globals['_DOHELIOSSAYPLAYERTYPES']._serialized_start=16044 - _globals['_DOHELIOSSAYPLAYERTYPES']._serialized_end=16068 - _globals['_COACHACTION']._serialized_start=16071 - _globals['_COACHACTION']._serialized_end=16281 - _globals['_COACHACTIONS']._serialized_start=16283 - _globals['_COACHACTIONS']._serialized_end=16335 - _globals['_DOKICKOFF']._serialized_start=16337 - _globals['_DOKICKOFF']._serialized_end=16348 - _globals['_DOMOVEBALL']._serialized_start=16350 - _globals['_DOMOVEBALL']._serialized_end=16434 - _globals['_DOMOVEPLAYER']._serialized_start=16436 - _globals['_DOMOVEPLAYER']._serialized_end=16552 - _globals['_DORECOVER']._serialized_start=16554 - _globals['_DORECOVER']._serialized_end=16565 - _globals['_DOCHANGEMODE']._serialized_start=16567 - _globals['_DOCHANGEMODE']._serialized_end=16655 - _globals['_DOCHANGEPLAYERTYPE']._serialized_start=16657 - _globals['_DOCHANGEPLAYERTYPE']._serialized_end=16733 - _globals['_TRAINERACTION']._serialized_start=16736 - _globals['_TRAINERACTION']._serialized_end=17045 - _globals['_TRAINERACTIONS']._serialized_start=17047 - _globals['_TRAINERACTIONS']._serialized_end=17103 - _globals['_SERVERPARAM']._serialized_start=17106 - _globals['_SERVERPARAM']._serialized_end=22817 - _globals['_PLAYERPARAM']._serialized_start=22820 - _globals['_PLAYERPARAM']._serialized_end=23843 - _globals['_PLAYERTYPE']._serialized_start=23846 - _globals['_PLAYERTYPE']._serialized_end=24791 - _globals['_EMPTY']._serialized_start=24793 - _globals['_EMPTY']._serialized_end=24800 - _globals['_INITMESSAGEFROMSERVER']._serialized_start=24802 - _globals['_INITMESSAGEFROMSERVER']._serialized_end=24825 - _globals['_GAME']._serialized_start=25967 - _globals['_GAME']._serialized_end=26497 -# @@protoc_insertion_point(module_scope) diff --git a/service_pb2.pyi b/service_pb2.pyi deleted file mode 100644 index 38856b4..0000000 --- a/service_pb2.pyi +++ /dev/null @@ -1,2128 +0,0 @@ -from google.protobuf.internal import containers as _containers -from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union - -DESCRIPTOR: _descriptor.FileDescriptor - -class ViewWidth(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () - NARROW: _ClassVar[ViewWidth] - NORMAL: _ClassVar[ViewWidth] - WIDE: _ClassVar[ViewWidth] - -class Side(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () - UNKNOWN: _ClassVar[Side] - LEFT: _ClassVar[Side] - RIGHT: _ClassVar[Side] - -class LoggerLevel(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () - None: _ClassVar[LoggerLevel] - SYSTEM: _ClassVar[LoggerLevel] - SENSOR: _ClassVar[LoggerLevel] - WORLD: _ClassVar[LoggerLevel] - ACTION: _ClassVar[LoggerLevel] - INTERCEPT: _ClassVar[LoggerLevel] - KICK: _ClassVar[LoggerLevel] - HOLD: _ClassVar[LoggerLevel] - DRIBBLE: _ClassVar[LoggerLevel] - PASS: _ClassVar[LoggerLevel] - CROSS: _ClassVar[LoggerLevel] - SHOOT: _ClassVar[LoggerLevel] - CLEAR: _ClassVar[LoggerLevel] - BLOCK: _ClassVar[LoggerLevel] - MARK: _ClassVar[LoggerLevel] - POSITIONING: _ClassVar[LoggerLevel] - ROLE: _ClassVar[LoggerLevel] - TEAM: _ClassVar[LoggerLevel] - COMMUNICATION: _ClassVar[LoggerLevel] - ANALYZER: _ClassVar[LoggerLevel] - ACTION_CHAIN: _ClassVar[LoggerLevel] - PLAN: _ClassVar[LoggerLevel] - -class InterceptActionType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () - UNKNOWN_Intercept_Action_Type: _ClassVar[InterceptActionType] - OMNI_DASH: _ClassVar[InterceptActionType] - TURN_FORWARD_DASH: _ClassVar[InterceptActionType] - TURN_BACKWARD_DASH: _ClassVar[InterceptActionType] - -class GameModeType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () - BeforeKickOff: _ClassVar[GameModeType] - TimeOver: _ClassVar[GameModeType] - PlayOn: _ClassVar[GameModeType] - KickOff_: _ClassVar[GameModeType] - KickIn_: _ClassVar[GameModeType] - FreeKick_: _ClassVar[GameModeType] - CornerKick_: _ClassVar[GameModeType] - GoalKick_: _ClassVar[GameModeType] - AfterGoal_: _ClassVar[GameModeType] - OffSide_: _ClassVar[GameModeType] - PenaltyKick_: _ClassVar[GameModeType] - FirstHalfOver: _ClassVar[GameModeType] - Pause: _ClassVar[GameModeType] - Human: _ClassVar[GameModeType] - FoulCharge_: _ClassVar[GameModeType] - FoulPush_: _ClassVar[GameModeType] - FoulMultipleAttacker_: _ClassVar[GameModeType] - FoulBallOut_: _ClassVar[GameModeType] - BackPass_: _ClassVar[GameModeType] - FreeKickFault_: _ClassVar[GameModeType] - CatchFault_: _ClassVar[GameModeType] - IndFreeKick_: _ClassVar[GameModeType] - PenaltySetup_: _ClassVar[GameModeType] - PenaltyReady_: _ClassVar[GameModeType] - PenaltyTaken_: _ClassVar[GameModeType] - PenaltyMiss_: _ClassVar[GameModeType] - PenaltyScore_: _ClassVar[GameModeType] - IllegalDefense_: _ClassVar[GameModeType] - PenaltyOnfield_: _ClassVar[GameModeType] - PenaltyFoul_: _ClassVar[GameModeType] - GoalieCatch_: _ClassVar[GameModeType] - ExtendHalf: _ClassVar[GameModeType] - MODE_MAX: _ClassVar[GameModeType] - -class AgentType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () - PlayerT: _ClassVar[AgentType] - CoachT: _ClassVar[AgentType] - TrainerT: _ClassVar[AgentType] -NARROW: ViewWidth -NORMAL: ViewWidth -WIDE: ViewWidth -UNKNOWN: Side -LEFT: Side -RIGHT: Side -None: LoggerLevel -SYSTEM: LoggerLevel -SENSOR: LoggerLevel -WORLD: LoggerLevel -ACTION: LoggerLevel -INTERCEPT: LoggerLevel -KICK: LoggerLevel -HOLD: LoggerLevel -DRIBBLE: LoggerLevel -PASS: LoggerLevel -CROSS: LoggerLevel -SHOOT: LoggerLevel -CLEAR: LoggerLevel -BLOCK: LoggerLevel -MARK: LoggerLevel -POSITIONING: LoggerLevel -ROLE: LoggerLevel -TEAM: LoggerLevel -COMMUNICATION: LoggerLevel -ANALYZER: LoggerLevel -ACTION_CHAIN: LoggerLevel -PLAN: LoggerLevel -UNKNOWN_Intercept_Action_Type: InterceptActionType -OMNI_DASH: InterceptActionType -TURN_FORWARD_DASH: InterceptActionType -TURN_BACKWARD_DASH: InterceptActionType -BeforeKickOff: GameModeType -TimeOver: GameModeType -PlayOn: GameModeType -KickOff_: GameModeType -KickIn_: GameModeType -FreeKick_: GameModeType -CornerKick_: GameModeType -GoalKick_: GameModeType -AfterGoal_: GameModeType -OffSide_: GameModeType -PenaltyKick_: GameModeType -FirstHalfOver: GameModeType -Pause: GameModeType -Human: GameModeType -FoulCharge_: GameModeType -FoulPush_: GameModeType -FoulMultipleAttacker_: GameModeType -FoulBallOut_: GameModeType -BackPass_: GameModeType -FreeKickFault_: GameModeType -CatchFault_: GameModeType -IndFreeKick_: GameModeType -PenaltySetup_: GameModeType -PenaltyReady_: GameModeType -PenaltyTaken_: GameModeType -PenaltyMiss_: GameModeType -PenaltyScore_: GameModeType -IllegalDefense_: GameModeType -PenaltyOnfield_: GameModeType -PenaltyFoul_: GameModeType -GoalieCatch_: GameModeType -ExtendHalf: GameModeType -MODE_MAX: GameModeType -PlayerT: AgentType -CoachT: AgentType -TrainerT: AgentType - -class Vector2D(_message.Message): - __slots__ = ("x", "y", "dist", "angle") - X_FIELD_NUMBER: _ClassVar[int] - Y_FIELD_NUMBER: _ClassVar[int] - DIST_FIELD_NUMBER: _ClassVar[int] - ANGLE_FIELD_NUMBER: _ClassVar[int] - x: float - y: float - dist: float - angle: float - def __init__(self, x: _Optional[float] = ..., y: _Optional[float] = ..., dist: _Optional[float] = ..., angle: _Optional[float] = ...) -> None: ... - -class Ball(_message.Message): - __slots__ = ("position", "relative_position", "seen_position", "heard_position", "velocity", "seen_velocity", "heard_velocity", "pos_count", "seen_pos_count", "heard_pos_count", "vel_count", "seen_vel_count", "heard_vel_count", "lost_count", "ghost_count", "dist_from_self", "angle_from_self") - POSITION_FIELD_NUMBER: _ClassVar[int] - RELATIVE_POSITION_FIELD_NUMBER: _ClassVar[int] - SEEN_POSITION_FIELD_NUMBER: _ClassVar[int] - HEARD_POSITION_FIELD_NUMBER: _ClassVar[int] - VELOCITY_FIELD_NUMBER: _ClassVar[int] - SEEN_VELOCITY_FIELD_NUMBER: _ClassVar[int] - HEARD_VELOCITY_FIELD_NUMBER: _ClassVar[int] - POS_COUNT_FIELD_NUMBER: _ClassVar[int] - SEEN_POS_COUNT_FIELD_NUMBER: _ClassVar[int] - HEARD_POS_COUNT_FIELD_NUMBER: _ClassVar[int] - VEL_COUNT_FIELD_NUMBER: _ClassVar[int] - SEEN_VEL_COUNT_FIELD_NUMBER: _ClassVar[int] - HEARD_VEL_COUNT_FIELD_NUMBER: _ClassVar[int] - LOST_COUNT_FIELD_NUMBER: _ClassVar[int] - GHOST_COUNT_FIELD_NUMBER: _ClassVar[int] - DIST_FROM_SELF_FIELD_NUMBER: _ClassVar[int] - ANGLE_FROM_SELF_FIELD_NUMBER: _ClassVar[int] - position: Vector2D - relative_position: Vector2D - seen_position: Vector2D - heard_position: Vector2D - velocity: Vector2D - seen_velocity: Vector2D - heard_velocity: Vector2D - pos_count: int - seen_pos_count: int - heard_pos_count: int - vel_count: int - seen_vel_count: int - heard_vel_count: int - lost_count: int - ghost_count: int - dist_from_self: float - angle_from_self: float - def __init__(self, position: _Optional[_Union[Vector2D, _Mapping]] = ..., relative_position: _Optional[_Union[Vector2D, _Mapping]] = ..., seen_position: _Optional[_Union[Vector2D, _Mapping]] = ..., heard_position: _Optional[_Union[Vector2D, _Mapping]] = ..., velocity: _Optional[_Union[Vector2D, _Mapping]] = ..., seen_velocity: _Optional[_Union[Vector2D, _Mapping]] = ..., heard_velocity: _Optional[_Union[Vector2D, _Mapping]] = ..., pos_count: _Optional[int] = ..., seen_pos_count: _Optional[int] = ..., heard_pos_count: _Optional[int] = ..., vel_count: _Optional[int] = ..., seen_vel_count: _Optional[int] = ..., heard_vel_count: _Optional[int] = ..., lost_count: _Optional[int] = ..., ghost_count: _Optional[int] = ..., dist_from_self: _Optional[float] = ..., angle_from_self: _Optional[float] = ...) -> None: ... - -class Player(_message.Message): - __slots__ = ("position", "seen_position", "heard_position", "velocity", "seen_velocity", "pos_count", "seen_pos_count", "heard_pos_count", "vel_count", "seen_vel_count", "ghost_count", "dist_from_self", "angle_from_self", "id", "side", "uniform_number", "uniform_number_count", "is_goalie", "body_direction", "body_direction_count", "face_direction", "face_direction_count", "point_to_direction", "point_to_direction_count", "is_kicking", "dist_from_ball", "angle_from_ball", "ball_reach_steps", "is_tackling", "type_id") - POSITION_FIELD_NUMBER: _ClassVar[int] - SEEN_POSITION_FIELD_NUMBER: _ClassVar[int] - HEARD_POSITION_FIELD_NUMBER: _ClassVar[int] - VELOCITY_FIELD_NUMBER: _ClassVar[int] - SEEN_VELOCITY_FIELD_NUMBER: _ClassVar[int] - POS_COUNT_FIELD_NUMBER: _ClassVar[int] - SEEN_POS_COUNT_FIELD_NUMBER: _ClassVar[int] - HEARD_POS_COUNT_FIELD_NUMBER: _ClassVar[int] - VEL_COUNT_FIELD_NUMBER: _ClassVar[int] - SEEN_VEL_COUNT_FIELD_NUMBER: _ClassVar[int] - GHOST_COUNT_FIELD_NUMBER: _ClassVar[int] - DIST_FROM_SELF_FIELD_NUMBER: _ClassVar[int] - ANGLE_FROM_SELF_FIELD_NUMBER: _ClassVar[int] - ID_FIELD_NUMBER: _ClassVar[int] - SIDE_FIELD_NUMBER: _ClassVar[int] - UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - UNIFORM_NUMBER_COUNT_FIELD_NUMBER: _ClassVar[int] - IS_GOALIE_FIELD_NUMBER: _ClassVar[int] - BODY_DIRECTION_FIELD_NUMBER: _ClassVar[int] - BODY_DIRECTION_COUNT_FIELD_NUMBER: _ClassVar[int] - FACE_DIRECTION_FIELD_NUMBER: _ClassVar[int] - FACE_DIRECTION_COUNT_FIELD_NUMBER: _ClassVar[int] - POINT_TO_DIRECTION_FIELD_NUMBER: _ClassVar[int] - POINT_TO_DIRECTION_COUNT_FIELD_NUMBER: _ClassVar[int] - IS_KICKING_FIELD_NUMBER: _ClassVar[int] - DIST_FROM_BALL_FIELD_NUMBER: _ClassVar[int] - ANGLE_FROM_BALL_FIELD_NUMBER: _ClassVar[int] - BALL_REACH_STEPS_FIELD_NUMBER: _ClassVar[int] - IS_TACKLING_FIELD_NUMBER: _ClassVar[int] - TYPE_ID_FIELD_NUMBER: _ClassVar[int] - position: Vector2D - seen_position: Vector2D - heard_position: Vector2D - velocity: Vector2D - seen_velocity: Vector2D - pos_count: int - seen_pos_count: int - heard_pos_count: int - vel_count: int - seen_vel_count: int - ghost_count: int - dist_from_self: float - angle_from_self: float - id: int - side: Side - uniform_number: int - uniform_number_count: int - is_goalie: bool - body_direction: float - body_direction_count: int - face_direction: float - face_direction_count: int - point_to_direction: float - point_to_direction_count: int - is_kicking: bool - dist_from_ball: float - angle_from_ball: float - ball_reach_steps: int - is_tackling: bool - type_id: int - def __init__(self, position: _Optional[_Union[Vector2D, _Mapping]] = ..., seen_position: _Optional[_Union[Vector2D, _Mapping]] = ..., heard_position: _Optional[_Union[Vector2D, _Mapping]] = ..., velocity: _Optional[_Union[Vector2D, _Mapping]] = ..., seen_velocity: _Optional[_Union[Vector2D, _Mapping]] = ..., pos_count: _Optional[int] = ..., seen_pos_count: _Optional[int] = ..., heard_pos_count: _Optional[int] = ..., vel_count: _Optional[int] = ..., seen_vel_count: _Optional[int] = ..., ghost_count: _Optional[int] = ..., dist_from_self: _Optional[float] = ..., angle_from_self: _Optional[float] = ..., id: _Optional[int] = ..., side: _Optional[_Union[Side, str]] = ..., uniform_number: _Optional[int] = ..., uniform_number_count: _Optional[int] = ..., is_goalie: bool = ..., body_direction: _Optional[float] = ..., body_direction_count: _Optional[int] = ..., face_direction: _Optional[float] = ..., face_direction_count: _Optional[int] = ..., point_to_direction: _Optional[float] = ..., point_to_direction_count: _Optional[int] = ..., is_kicking: bool = ..., dist_from_ball: _Optional[float] = ..., angle_from_ball: _Optional[float] = ..., ball_reach_steps: _Optional[int] = ..., is_tackling: bool = ..., type_id: _Optional[int] = ...) -> None: ... - -class Self(_message.Message): - __slots__ = ("position", "seen_position", "heard_position", "velocity", "seen_velocity", "pos_count", "seen_pos_count", "heard_pos_count", "vel_count", "seen_vel_count", "ghost_count", "id", "side", "uniform_number", "uniform_number_count", "is_goalie", "body_direction", "body_direction_count", "face_direction", "face_direction_count", "point_to_direction", "point_to_direction_count", "is_kicking", "dist_from_ball", "angle_from_ball", "ball_reach_steps", "is_tackling", "relative_neck_direction", "stamina", "is_kickable", "catch_probability", "tackle_probability", "foul_probability", "view_width", "type_id", "kick_rate") - POSITION_FIELD_NUMBER: _ClassVar[int] - SEEN_POSITION_FIELD_NUMBER: _ClassVar[int] - HEARD_POSITION_FIELD_NUMBER: _ClassVar[int] - VELOCITY_FIELD_NUMBER: _ClassVar[int] - SEEN_VELOCITY_FIELD_NUMBER: _ClassVar[int] - POS_COUNT_FIELD_NUMBER: _ClassVar[int] - SEEN_POS_COUNT_FIELD_NUMBER: _ClassVar[int] - HEARD_POS_COUNT_FIELD_NUMBER: _ClassVar[int] - VEL_COUNT_FIELD_NUMBER: _ClassVar[int] - SEEN_VEL_COUNT_FIELD_NUMBER: _ClassVar[int] - GHOST_COUNT_FIELD_NUMBER: _ClassVar[int] - ID_FIELD_NUMBER: _ClassVar[int] - SIDE_FIELD_NUMBER: _ClassVar[int] - UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - UNIFORM_NUMBER_COUNT_FIELD_NUMBER: _ClassVar[int] - IS_GOALIE_FIELD_NUMBER: _ClassVar[int] - BODY_DIRECTION_FIELD_NUMBER: _ClassVar[int] - BODY_DIRECTION_COUNT_FIELD_NUMBER: _ClassVar[int] - FACE_DIRECTION_FIELD_NUMBER: _ClassVar[int] - FACE_DIRECTION_COUNT_FIELD_NUMBER: _ClassVar[int] - POINT_TO_DIRECTION_FIELD_NUMBER: _ClassVar[int] - POINT_TO_DIRECTION_COUNT_FIELD_NUMBER: _ClassVar[int] - IS_KICKING_FIELD_NUMBER: _ClassVar[int] - DIST_FROM_BALL_FIELD_NUMBER: _ClassVar[int] - ANGLE_FROM_BALL_FIELD_NUMBER: _ClassVar[int] - BALL_REACH_STEPS_FIELD_NUMBER: _ClassVar[int] - IS_TACKLING_FIELD_NUMBER: _ClassVar[int] - RELATIVE_NECK_DIRECTION_FIELD_NUMBER: _ClassVar[int] - STAMINA_FIELD_NUMBER: _ClassVar[int] - IS_KICKABLE_FIELD_NUMBER: _ClassVar[int] - CATCH_PROBABILITY_FIELD_NUMBER: _ClassVar[int] - TACKLE_PROBABILITY_FIELD_NUMBER: _ClassVar[int] - FOUL_PROBABILITY_FIELD_NUMBER: _ClassVar[int] - VIEW_WIDTH_FIELD_NUMBER: _ClassVar[int] - TYPE_ID_FIELD_NUMBER: _ClassVar[int] - KICK_RATE_FIELD_NUMBER: _ClassVar[int] - position: Vector2D - seen_position: Vector2D - heard_position: Vector2D - velocity: Vector2D - seen_velocity: Vector2D - pos_count: int - seen_pos_count: int - heard_pos_count: int - vel_count: int - seen_vel_count: int - ghost_count: int - id: int - side: Side - uniform_number: int - uniform_number_count: int - is_goalie: bool - body_direction: float - body_direction_count: int - face_direction: float - face_direction_count: int - point_to_direction: float - point_to_direction_count: int - is_kicking: bool - dist_from_ball: float - angle_from_ball: float - ball_reach_steps: int - is_tackling: bool - relative_neck_direction: float - stamina: float - is_kickable: bool - catch_probability: float - tackle_probability: float - foul_probability: float - view_width: ViewWidth - type_id: int - kick_rate: float - def __init__(self, position: _Optional[_Union[Vector2D, _Mapping]] = ..., seen_position: _Optional[_Union[Vector2D, _Mapping]] = ..., heard_position: _Optional[_Union[Vector2D, _Mapping]] = ..., velocity: _Optional[_Union[Vector2D, _Mapping]] = ..., seen_velocity: _Optional[_Union[Vector2D, _Mapping]] = ..., pos_count: _Optional[int] = ..., seen_pos_count: _Optional[int] = ..., heard_pos_count: _Optional[int] = ..., vel_count: _Optional[int] = ..., seen_vel_count: _Optional[int] = ..., ghost_count: _Optional[int] = ..., id: _Optional[int] = ..., side: _Optional[_Union[Side, str]] = ..., uniform_number: _Optional[int] = ..., uniform_number_count: _Optional[int] = ..., is_goalie: bool = ..., body_direction: _Optional[float] = ..., body_direction_count: _Optional[int] = ..., face_direction: _Optional[float] = ..., face_direction_count: _Optional[int] = ..., point_to_direction: _Optional[float] = ..., point_to_direction_count: _Optional[int] = ..., is_kicking: bool = ..., dist_from_ball: _Optional[float] = ..., angle_from_ball: _Optional[float] = ..., ball_reach_steps: _Optional[int] = ..., is_tackling: bool = ..., relative_neck_direction: _Optional[float] = ..., stamina: _Optional[float] = ..., is_kickable: bool = ..., catch_probability: _Optional[float] = ..., tackle_probability: _Optional[float] = ..., foul_probability: _Optional[float] = ..., view_width: _Optional[_Union[ViewWidth, str]] = ..., type_id: _Optional[int] = ..., kick_rate: _Optional[float] = ...) -> None: ... - -class InterceptInfo(_message.Message): - __slots__ = ("action_type", "turn_steps", "turn_angle", "dash_steps", "dash_power", "dash_dir", "final_self_position", "final_ball_dist", "final_stamina", "value") - ACTION_TYPE_FIELD_NUMBER: _ClassVar[int] - TURN_STEPS_FIELD_NUMBER: _ClassVar[int] - TURN_ANGLE_FIELD_NUMBER: _ClassVar[int] - DASH_STEPS_FIELD_NUMBER: _ClassVar[int] - DASH_POWER_FIELD_NUMBER: _ClassVar[int] - DASH_DIR_FIELD_NUMBER: _ClassVar[int] - FINAL_SELF_POSITION_FIELD_NUMBER: _ClassVar[int] - FINAL_BALL_DIST_FIELD_NUMBER: _ClassVar[int] - FINAL_STAMINA_FIELD_NUMBER: _ClassVar[int] - VALUE_FIELD_NUMBER: _ClassVar[int] - action_type: InterceptActionType - turn_steps: int - turn_angle: float - dash_steps: int - dash_power: float - dash_dir: float - final_self_position: Vector2D - final_ball_dist: float - final_stamina: float - value: float - def __init__(self, action_type: _Optional[_Union[InterceptActionType, str]] = ..., turn_steps: _Optional[int] = ..., turn_angle: _Optional[float] = ..., dash_steps: _Optional[int] = ..., dash_power: _Optional[float] = ..., dash_dir: _Optional[float] = ..., final_self_position: _Optional[_Union[Vector2D, _Mapping]] = ..., final_ball_dist: _Optional[float] = ..., final_stamina: _Optional[float] = ..., value: _Optional[float] = ...) -> None: ... - -class InterceptTable(_message.Message): - __slots__ = ("self_reach_steps", "first_teammate_reach_steps", "second_teammate_reach_steps", "first_opponent_reach_steps", "second_opponent_reach_steps", "first_teammate_id", "second_teammate_id", "first_opponent_id", "second_opponent_id", "self_intercept_info") - SELF_REACH_STEPS_FIELD_NUMBER: _ClassVar[int] - FIRST_TEAMMATE_REACH_STEPS_FIELD_NUMBER: _ClassVar[int] - SECOND_TEAMMATE_REACH_STEPS_FIELD_NUMBER: _ClassVar[int] - FIRST_OPPONENT_REACH_STEPS_FIELD_NUMBER: _ClassVar[int] - SECOND_OPPONENT_REACH_STEPS_FIELD_NUMBER: _ClassVar[int] - FIRST_TEAMMATE_ID_FIELD_NUMBER: _ClassVar[int] - SECOND_TEAMMATE_ID_FIELD_NUMBER: _ClassVar[int] - FIRST_OPPONENT_ID_FIELD_NUMBER: _ClassVar[int] - SECOND_OPPONENT_ID_FIELD_NUMBER: _ClassVar[int] - SELF_INTERCEPT_INFO_FIELD_NUMBER: _ClassVar[int] - self_reach_steps: int - first_teammate_reach_steps: int - second_teammate_reach_steps: int - first_opponent_reach_steps: int - second_opponent_reach_steps: int - first_teammate_id: int - second_teammate_id: int - first_opponent_id: int - second_opponent_id: int - self_intercept_info: _containers.RepeatedCompositeFieldContainer[InterceptInfo] - def __init__(self, self_reach_steps: _Optional[int] = ..., first_teammate_reach_steps: _Optional[int] = ..., second_teammate_reach_steps: _Optional[int] = ..., first_opponent_reach_steps: _Optional[int] = ..., second_opponent_reach_steps: _Optional[int] = ..., first_teammate_id: _Optional[int] = ..., second_teammate_id: _Optional[int] = ..., first_opponent_id: _Optional[int] = ..., second_opponent_id: _Optional[int] = ..., self_intercept_info: _Optional[_Iterable[_Union[InterceptInfo, _Mapping]]] = ...) -> None: ... - -class WorldModel(_message.Message): - __slots__ = ("intercept_table", "our_team_name", "their_team_name", "our_side", "last_set_play_start_time", "self", "ball", "teammates", "opponents", "unknowns", "our_players_dict", "their_players_dict", "our_goalie_uniform_number", "their_goalie_uniform_number", "offside_line_x", "ofside_line_x_count", "kickable_teammate_id", "kickable_opponent_id", "last_kick_side", "last_kicker_uniform_number", "cycle", "game_mode_type", "left_team_score", "right_team_score", "is_our_set_play", "is_their_set_play", "stoped_cycle", "our_team_score", "their_team_score", "is_penalty_kick_mode", "helios_home_positions") - class OurPlayersDictEntry(_message.Message): - __slots__ = ("key", "value") - KEY_FIELD_NUMBER: _ClassVar[int] - VALUE_FIELD_NUMBER: _ClassVar[int] - key: int - value: Player - def __init__(self, key: _Optional[int] = ..., value: _Optional[_Union[Player, _Mapping]] = ...) -> None: ... - class TheirPlayersDictEntry(_message.Message): - __slots__ = ("key", "value") - KEY_FIELD_NUMBER: _ClassVar[int] - VALUE_FIELD_NUMBER: _ClassVar[int] - key: int - value: Player - def __init__(self, key: _Optional[int] = ..., value: _Optional[_Union[Player, _Mapping]] = ...) -> None: ... - class HeliosHomePositionsEntry(_message.Message): - __slots__ = ("key", "value") - KEY_FIELD_NUMBER: _ClassVar[int] - VALUE_FIELD_NUMBER: _ClassVar[int] - key: int - value: Vector2D - def __init__(self, key: _Optional[int] = ..., value: _Optional[_Union[Vector2D, _Mapping]] = ...) -> None: ... - INTERCEPT_TABLE_FIELD_NUMBER: _ClassVar[int] - OUR_TEAM_NAME_FIELD_NUMBER: _ClassVar[int] - THEIR_TEAM_NAME_FIELD_NUMBER: _ClassVar[int] - OUR_SIDE_FIELD_NUMBER: _ClassVar[int] - LAST_SET_PLAY_START_TIME_FIELD_NUMBER: _ClassVar[int] - SELF_FIELD_NUMBER: _ClassVar[int] - BALL_FIELD_NUMBER: _ClassVar[int] - TEAMMATES_FIELD_NUMBER: _ClassVar[int] - OPPONENTS_FIELD_NUMBER: _ClassVar[int] - UNKNOWNS_FIELD_NUMBER: _ClassVar[int] - OUR_PLAYERS_DICT_FIELD_NUMBER: _ClassVar[int] - THEIR_PLAYERS_DICT_FIELD_NUMBER: _ClassVar[int] - OUR_GOALIE_UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - THEIR_GOALIE_UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - OFFSIDE_LINE_X_FIELD_NUMBER: _ClassVar[int] - OFSIDE_LINE_X_COUNT_FIELD_NUMBER: _ClassVar[int] - KICKABLE_TEAMMATE_ID_FIELD_NUMBER: _ClassVar[int] - KICKABLE_OPPONENT_ID_FIELD_NUMBER: _ClassVar[int] - LAST_KICK_SIDE_FIELD_NUMBER: _ClassVar[int] - LAST_KICKER_UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - CYCLE_FIELD_NUMBER: _ClassVar[int] - GAME_MODE_TYPE_FIELD_NUMBER: _ClassVar[int] - LEFT_TEAM_SCORE_FIELD_NUMBER: _ClassVar[int] - RIGHT_TEAM_SCORE_FIELD_NUMBER: _ClassVar[int] - IS_OUR_SET_PLAY_FIELD_NUMBER: _ClassVar[int] - IS_THEIR_SET_PLAY_FIELD_NUMBER: _ClassVar[int] - STOPED_CYCLE_FIELD_NUMBER: _ClassVar[int] - OUR_TEAM_SCORE_FIELD_NUMBER: _ClassVar[int] - THEIR_TEAM_SCORE_FIELD_NUMBER: _ClassVar[int] - IS_PENALTY_KICK_MODE_FIELD_NUMBER: _ClassVar[int] - HELIOS_HOME_POSITIONS_FIELD_NUMBER: _ClassVar[int] - intercept_table: InterceptTable - our_team_name: str - their_team_name: str - our_side: Side - last_set_play_start_time: int - self: Self - ball: Ball - teammates: _containers.RepeatedCompositeFieldContainer[Player] - opponents: _containers.RepeatedCompositeFieldContainer[Player] - unknowns: _containers.RepeatedCompositeFieldContainer[Player] - our_players_dict: _containers.MessageMap[int, Player] - their_players_dict: _containers.MessageMap[int, Player] - our_goalie_uniform_number: int - their_goalie_uniform_number: int - offside_line_x: float - ofside_line_x_count: int - kickable_teammate_id: int - kickable_opponent_id: int - last_kick_side: Side - last_kicker_uniform_number: int - cycle: int - game_mode_type: GameModeType - left_team_score: int - right_team_score: int - is_our_set_play: bool - is_their_set_play: bool - stoped_cycle: int - our_team_score: int - their_team_score: int - is_penalty_kick_mode: bool - helios_home_positions: _containers.MessageMap[int, Vector2D] - def __init__(self, intercept_table: _Optional[_Union[InterceptTable, _Mapping]] = ..., our_team_name: _Optional[str] = ..., their_team_name: _Optional[str] = ..., our_side: _Optional[_Union[Side, str]] = ..., last_set_play_start_time: _Optional[int] = ..., self: _Optional[_Union[Self, _Mapping]] = ..., ball: _Optional[_Union[Ball, _Mapping]] = ..., teammates: _Optional[_Iterable[_Union[Player, _Mapping]]] = ..., opponents: _Optional[_Iterable[_Union[Player, _Mapping]]] = ..., unknowns: _Optional[_Iterable[_Union[Player, _Mapping]]] = ..., our_players_dict: _Optional[_Mapping[int, Player]] = ..., their_players_dict: _Optional[_Mapping[int, Player]] = ..., our_goalie_uniform_number: _Optional[int] = ..., their_goalie_uniform_number: _Optional[int] = ..., offside_line_x: _Optional[float] = ..., ofside_line_x_count: _Optional[int] = ..., kickable_teammate_id: _Optional[int] = ..., kickable_opponent_id: _Optional[int] = ..., last_kick_side: _Optional[_Union[Side, str]] = ..., last_kicker_uniform_number: _Optional[int] = ..., cycle: _Optional[int] = ..., game_mode_type: _Optional[_Union[GameModeType, str]] = ..., left_team_score: _Optional[int] = ..., right_team_score: _Optional[int] = ..., is_our_set_play: bool = ..., is_their_set_play: bool = ..., stoped_cycle: _Optional[int] = ..., our_team_score: _Optional[int] = ..., their_team_score: _Optional[int] = ..., is_penalty_kick_mode: bool = ..., helios_home_positions: _Optional[_Mapping[int, Vector2D]] = ...) -> None: ... - -class State(_message.Message): - __slots__ = ("agent_type", "world_model", "full_world_model") - AGENT_TYPE_FIELD_NUMBER: _ClassVar[int] - WORLD_MODEL_FIELD_NUMBER: _ClassVar[int] - FULL_WORLD_MODEL_FIELD_NUMBER: _ClassVar[int] - agent_type: AgentType - world_model: WorldModel - full_world_model: WorldModel - def __init__(self, agent_type: _Optional[_Union[AgentType, str]] = ..., world_model: _Optional[_Union[WorldModel, _Mapping]] = ..., full_world_model: _Optional[_Union[WorldModel, _Mapping]] = ...) -> None: ... - -class InitMessage(_message.Message): - __slots__ = ("agent_type", "debug_mode") - AGENT_TYPE_FIELD_NUMBER: _ClassVar[int] - DEBUG_MODE_FIELD_NUMBER: _ClassVar[int] - agent_type: AgentType - debug_mode: bool - def __init__(self, agent_type: _Optional[_Union[AgentType, str]] = ..., debug_mode: bool = ...) -> None: ... - -class Dash(_message.Message): - __slots__ = ("power", "relative_direction") - POWER_FIELD_NUMBER: _ClassVar[int] - RELATIVE_DIRECTION_FIELD_NUMBER: _ClassVar[int] - power: float - relative_direction: float - def __init__(self, power: _Optional[float] = ..., relative_direction: _Optional[float] = ...) -> None: ... - -class Turn(_message.Message): - __slots__ = ("relative_direction",) - RELATIVE_DIRECTION_FIELD_NUMBER: _ClassVar[int] - relative_direction: float - def __init__(self, relative_direction: _Optional[float] = ...) -> None: ... - -class Kick(_message.Message): - __slots__ = ("power", "relative_direction") - POWER_FIELD_NUMBER: _ClassVar[int] - RELATIVE_DIRECTION_FIELD_NUMBER: _ClassVar[int] - power: float - relative_direction: float - def __init__(self, power: _Optional[float] = ..., relative_direction: _Optional[float] = ...) -> None: ... - -class Tackle(_message.Message): - __slots__ = ("power_or_dir", "foul") - POWER_OR_DIR_FIELD_NUMBER: _ClassVar[int] - FOUL_FIELD_NUMBER: _ClassVar[int] - power_or_dir: float - foul: bool - def __init__(self, power_or_dir: _Optional[float] = ..., foul: bool = ...) -> None: ... - -class Catch(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class Move(_message.Message): - __slots__ = ("x", "y") - X_FIELD_NUMBER: _ClassVar[int] - Y_FIELD_NUMBER: _ClassVar[int] - x: float - y: float - def __init__(self, x: _Optional[float] = ..., y: _Optional[float] = ...) -> None: ... - -class TurnNeck(_message.Message): - __slots__ = ("moment",) - MOMENT_FIELD_NUMBER: _ClassVar[int] - moment: float - def __init__(self, moment: _Optional[float] = ...) -> None: ... - -class ChangeView(_message.Message): - __slots__ = ("view_width",) - VIEW_WIDTH_FIELD_NUMBER: _ClassVar[int] - view_width: ViewWidth - def __init__(self, view_width: _Optional[_Union[ViewWidth, str]] = ...) -> None: ... - -class BallMessage(_message.Message): - __slots__ = ("ball_position", "ball_velocity") - BALL_POSITION_FIELD_NUMBER: _ClassVar[int] - BALL_VELOCITY_FIELD_NUMBER: _ClassVar[int] - ball_position: Vector2D - ball_velocity: Vector2D - def __init__(self, ball_position: _Optional[_Union[Vector2D, _Mapping]] = ..., ball_velocity: _Optional[_Union[Vector2D, _Mapping]] = ...) -> None: ... - -class PassMessage(_message.Message): - __slots__ = ("receiver_uniform_number", "receiver_point", "ball_position", "ball_velocity") - RECEIVER_UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - RECEIVER_POINT_FIELD_NUMBER: _ClassVar[int] - BALL_POSITION_FIELD_NUMBER: _ClassVar[int] - BALL_VELOCITY_FIELD_NUMBER: _ClassVar[int] - receiver_uniform_number: int - receiver_point: Vector2D - ball_position: Vector2D - ball_velocity: Vector2D - def __init__(self, receiver_uniform_number: _Optional[int] = ..., receiver_point: _Optional[_Union[Vector2D, _Mapping]] = ..., ball_position: _Optional[_Union[Vector2D, _Mapping]] = ..., ball_velocity: _Optional[_Union[Vector2D, _Mapping]] = ...) -> None: ... - -class InterceptMessage(_message.Message): - __slots__ = ("our", "uniform_number", "cycle") - OUR_FIELD_NUMBER: _ClassVar[int] - UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - CYCLE_FIELD_NUMBER: _ClassVar[int] - our: bool - uniform_number: int - cycle: int - def __init__(self, our: bool = ..., uniform_number: _Optional[int] = ..., cycle: _Optional[int] = ...) -> None: ... - -class GoalieMessage(_message.Message): - __slots__ = ("goalie_uniform_number", "goalie_position", "goalie_body_direction") - GOALIE_UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - GOALIE_POSITION_FIELD_NUMBER: _ClassVar[int] - GOALIE_BODY_DIRECTION_FIELD_NUMBER: _ClassVar[int] - goalie_uniform_number: int - goalie_position: Vector2D - goalie_body_direction: float - def __init__(self, goalie_uniform_number: _Optional[int] = ..., goalie_position: _Optional[_Union[Vector2D, _Mapping]] = ..., goalie_body_direction: _Optional[float] = ...) -> None: ... - -class GoalieAndPlayerMessage(_message.Message): - __slots__ = ("goalie_uniform_number", "goalie_position", "goalie_body_direction", "player_uniform_number", "player_position") - GOALIE_UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - GOALIE_POSITION_FIELD_NUMBER: _ClassVar[int] - GOALIE_BODY_DIRECTION_FIELD_NUMBER: _ClassVar[int] - PLAYER_UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - PLAYER_POSITION_FIELD_NUMBER: _ClassVar[int] - goalie_uniform_number: int - goalie_position: Vector2D - goalie_body_direction: float - player_uniform_number: int - player_position: Vector2D - def __init__(self, goalie_uniform_number: _Optional[int] = ..., goalie_position: _Optional[_Union[Vector2D, _Mapping]] = ..., goalie_body_direction: _Optional[float] = ..., player_uniform_number: _Optional[int] = ..., player_position: _Optional[_Union[Vector2D, _Mapping]] = ...) -> None: ... - -class OffsideLineMessage(_message.Message): - __slots__ = ("offside_line_x",) - OFFSIDE_LINE_X_FIELD_NUMBER: _ClassVar[int] - offside_line_x: float - def __init__(self, offside_line_x: _Optional[float] = ...) -> None: ... - -class DefenseLineMessage(_message.Message): - __slots__ = ("defense_line_x",) - DEFENSE_LINE_X_FIELD_NUMBER: _ClassVar[int] - defense_line_x: float - def __init__(self, defense_line_x: _Optional[float] = ...) -> None: ... - -class WaitRequestMessage(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class SetplayMessage(_message.Message): - __slots__ = ("wait_step",) - WAIT_STEP_FIELD_NUMBER: _ClassVar[int] - wait_step: int - def __init__(self, wait_step: _Optional[int] = ...) -> None: ... - -class PassRequestMessage(_message.Message): - __slots__ = ("target_point",) - TARGET_POINT_FIELD_NUMBER: _ClassVar[int] - target_point: Vector2D - def __init__(self, target_point: _Optional[_Union[Vector2D, _Mapping]] = ...) -> None: ... - -class StaminaMessage(_message.Message): - __slots__ = ("stamina",) - STAMINA_FIELD_NUMBER: _ClassVar[int] - stamina: float - def __init__(self, stamina: _Optional[float] = ...) -> None: ... - -class RecoveryMessage(_message.Message): - __slots__ = ("recovery",) - RECOVERY_FIELD_NUMBER: _ClassVar[int] - recovery: float - def __init__(self, recovery: _Optional[float] = ...) -> None: ... - -class StaminaCapacityMessage(_message.Message): - __slots__ = ("stamina_capacity",) - STAMINA_CAPACITY_FIELD_NUMBER: _ClassVar[int] - stamina_capacity: float - def __init__(self, stamina_capacity: _Optional[float] = ...) -> None: ... - -class DribbleMessage(_message.Message): - __slots__ = ("target_point", "queue_count") - TARGET_POINT_FIELD_NUMBER: _ClassVar[int] - QUEUE_COUNT_FIELD_NUMBER: _ClassVar[int] - target_point: Vector2D - queue_count: int - def __init__(self, target_point: _Optional[_Union[Vector2D, _Mapping]] = ..., queue_count: _Optional[int] = ...) -> None: ... - -class BallGoalieMessage(_message.Message): - __slots__ = ("ball_position", "ball_velocity", "goalie_position", "goalie_body_direction") - BALL_POSITION_FIELD_NUMBER: _ClassVar[int] - BALL_VELOCITY_FIELD_NUMBER: _ClassVar[int] - GOALIE_POSITION_FIELD_NUMBER: _ClassVar[int] - GOALIE_BODY_DIRECTION_FIELD_NUMBER: _ClassVar[int] - ball_position: Vector2D - ball_velocity: Vector2D - goalie_position: Vector2D - goalie_body_direction: float - def __init__(self, ball_position: _Optional[_Union[Vector2D, _Mapping]] = ..., ball_velocity: _Optional[_Union[Vector2D, _Mapping]] = ..., goalie_position: _Optional[_Union[Vector2D, _Mapping]] = ..., goalie_body_direction: _Optional[float] = ...) -> None: ... - -class OnePlayerMessage(_message.Message): - __slots__ = ("uniform_number", "position") - UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - POSITION_FIELD_NUMBER: _ClassVar[int] - uniform_number: int - position: Vector2D - def __init__(self, uniform_number: _Optional[int] = ..., position: _Optional[_Union[Vector2D, _Mapping]] = ...) -> None: ... - -class TwoPlayerMessage(_message.Message): - __slots__ = ("first_uniform_number", "first_position", "second_uniform_number", "second_position") - FIRST_UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - FIRST_POSITION_FIELD_NUMBER: _ClassVar[int] - SECOND_UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - SECOND_POSITION_FIELD_NUMBER: _ClassVar[int] - first_uniform_number: int - first_position: Vector2D - second_uniform_number: int - second_position: Vector2D - def __init__(self, first_uniform_number: _Optional[int] = ..., first_position: _Optional[_Union[Vector2D, _Mapping]] = ..., second_uniform_number: _Optional[int] = ..., second_position: _Optional[_Union[Vector2D, _Mapping]] = ...) -> None: ... - -class ThreePlayerMessage(_message.Message): - __slots__ = ("first_uniform_number", "first_position", "second_uniform_number", "second_position", "third_uniform_number", "third_position") - FIRST_UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - FIRST_POSITION_FIELD_NUMBER: _ClassVar[int] - SECOND_UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - SECOND_POSITION_FIELD_NUMBER: _ClassVar[int] - THIRD_UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - THIRD_POSITION_FIELD_NUMBER: _ClassVar[int] - first_uniform_number: int - first_position: Vector2D - second_uniform_number: int - second_position: Vector2D - third_uniform_number: int - third_position: Vector2D - def __init__(self, first_uniform_number: _Optional[int] = ..., first_position: _Optional[_Union[Vector2D, _Mapping]] = ..., second_uniform_number: _Optional[int] = ..., second_position: _Optional[_Union[Vector2D, _Mapping]] = ..., third_uniform_number: _Optional[int] = ..., third_position: _Optional[_Union[Vector2D, _Mapping]] = ...) -> None: ... - -class SelfMessage(_message.Message): - __slots__ = ("self_position", "self_body_direction", "self_stamina") - SELF_POSITION_FIELD_NUMBER: _ClassVar[int] - SELF_BODY_DIRECTION_FIELD_NUMBER: _ClassVar[int] - SELF_STAMINA_FIELD_NUMBER: _ClassVar[int] - self_position: Vector2D - self_body_direction: float - self_stamina: float - def __init__(self, self_position: _Optional[_Union[Vector2D, _Mapping]] = ..., self_body_direction: _Optional[float] = ..., self_stamina: _Optional[float] = ...) -> None: ... - -class TeammateMessage(_message.Message): - __slots__ = ("uniform_number", "position", "body_direction") - UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - POSITION_FIELD_NUMBER: _ClassVar[int] - BODY_DIRECTION_FIELD_NUMBER: _ClassVar[int] - uniform_number: int - position: Vector2D - body_direction: float - def __init__(self, uniform_number: _Optional[int] = ..., position: _Optional[_Union[Vector2D, _Mapping]] = ..., body_direction: _Optional[float] = ...) -> None: ... - -class OpponentMessage(_message.Message): - __slots__ = ("uniform_number", "position", "body_direction") - UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - POSITION_FIELD_NUMBER: _ClassVar[int] - BODY_DIRECTION_FIELD_NUMBER: _ClassVar[int] - uniform_number: int - position: Vector2D - body_direction: float - def __init__(self, uniform_number: _Optional[int] = ..., position: _Optional[_Union[Vector2D, _Mapping]] = ..., body_direction: _Optional[float] = ...) -> None: ... - -class BallPlayerMessage(_message.Message): - __slots__ = ("ball_position", "ball_velocity", "uniform_number", "player_position", "body_direction") - BALL_POSITION_FIELD_NUMBER: _ClassVar[int] - BALL_VELOCITY_FIELD_NUMBER: _ClassVar[int] - UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - PLAYER_POSITION_FIELD_NUMBER: _ClassVar[int] - BODY_DIRECTION_FIELD_NUMBER: _ClassVar[int] - ball_position: Vector2D - ball_velocity: Vector2D - uniform_number: int - player_position: Vector2D - body_direction: float - def __init__(self, ball_position: _Optional[_Union[Vector2D, _Mapping]] = ..., ball_velocity: _Optional[_Union[Vector2D, _Mapping]] = ..., uniform_number: _Optional[int] = ..., player_position: _Optional[_Union[Vector2D, _Mapping]] = ..., body_direction: _Optional[float] = ...) -> None: ... - -class Say(_message.Message): - __slots__ = ("ball_message", "pass_message", "intercept_message", "goalie_message", "goalie_and_player_message", "offside_line_message", "defense_line_message", "wait_request_message", "setplay_message", "pass_request_message", "stamina_message", "recovery_message", "stamina_capacity_message", "dribble_message", "ball_goalie_message", "one_player_message", "two_player_message", "three_player_message", "self_message", "teammate_message", "opponent_message", "ball_player_message") - BALL_MESSAGE_FIELD_NUMBER: _ClassVar[int] - PASS_MESSAGE_FIELD_NUMBER: _ClassVar[int] - INTERCEPT_MESSAGE_FIELD_NUMBER: _ClassVar[int] - GOALIE_MESSAGE_FIELD_NUMBER: _ClassVar[int] - GOALIE_AND_PLAYER_MESSAGE_FIELD_NUMBER: _ClassVar[int] - OFFSIDE_LINE_MESSAGE_FIELD_NUMBER: _ClassVar[int] - DEFENSE_LINE_MESSAGE_FIELD_NUMBER: _ClassVar[int] - WAIT_REQUEST_MESSAGE_FIELD_NUMBER: _ClassVar[int] - SETPLAY_MESSAGE_FIELD_NUMBER: _ClassVar[int] - PASS_REQUEST_MESSAGE_FIELD_NUMBER: _ClassVar[int] - STAMINA_MESSAGE_FIELD_NUMBER: _ClassVar[int] - RECOVERY_MESSAGE_FIELD_NUMBER: _ClassVar[int] - STAMINA_CAPACITY_MESSAGE_FIELD_NUMBER: _ClassVar[int] - DRIBBLE_MESSAGE_FIELD_NUMBER: _ClassVar[int] - BALL_GOALIE_MESSAGE_FIELD_NUMBER: _ClassVar[int] - ONE_PLAYER_MESSAGE_FIELD_NUMBER: _ClassVar[int] - TWO_PLAYER_MESSAGE_FIELD_NUMBER: _ClassVar[int] - THREE_PLAYER_MESSAGE_FIELD_NUMBER: _ClassVar[int] - SELF_MESSAGE_FIELD_NUMBER: _ClassVar[int] - TEAMMATE_MESSAGE_FIELD_NUMBER: _ClassVar[int] - OPPONENT_MESSAGE_FIELD_NUMBER: _ClassVar[int] - BALL_PLAYER_MESSAGE_FIELD_NUMBER: _ClassVar[int] - ball_message: BallMessage - pass_message: PassMessage - intercept_message: InterceptMessage - goalie_message: GoalieMessage - goalie_and_player_message: GoalieAndPlayerMessage - offside_line_message: OffsideLineMessage - defense_line_message: DefenseLineMessage - wait_request_message: WaitRequestMessage - setplay_message: SetplayMessage - pass_request_message: PassRequestMessage - stamina_message: StaminaMessage - recovery_message: RecoveryMessage - stamina_capacity_message: StaminaCapacityMessage - dribble_message: DribbleMessage - ball_goalie_message: BallGoalieMessage - one_player_message: OnePlayerMessage - two_player_message: TwoPlayerMessage - three_player_message: ThreePlayerMessage - self_message: SelfMessage - teammate_message: TeammateMessage - opponent_message: OpponentMessage - ball_player_message: BallPlayerMessage - def __init__(self, ball_message: _Optional[_Union[BallMessage, _Mapping]] = ..., pass_message: _Optional[_Union[PassMessage, _Mapping]] = ..., intercept_message: _Optional[_Union[InterceptMessage, _Mapping]] = ..., goalie_message: _Optional[_Union[GoalieMessage, _Mapping]] = ..., goalie_and_player_message: _Optional[_Union[GoalieAndPlayerMessage, _Mapping]] = ..., offside_line_message: _Optional[_Union[OffsideLineMessage, _Mapping]] = ..., defense_line_message: _Optional[_Union[DefenseLineMessage, _Mapping]] = ..., wait_request_message: _Optional[_Union[WaitRequestMessage, _Mapping]] = ..., setplay_message: _Optional[_Union[SetplayMessage, _Mapping]] = ..., pass_request_message: _Optional[_Union[PassRequestMessage, _Mapping]] = ..., stamina_message: _Optional[_Union[StaminaMessage, _Mapping]] = ..., recovery_message: _Optional[_Union[RecoveryMessage, _Mapping]] = ..., stamina_capacity_message: _Optional[_Union[StaminaCapacityMessage, _Mapping]] = ..., dribble_message: _Optional[_Union[DribbleMessage, _Mapping]] = ..., ball_goalie_message: _Optional[_Union[BallGoalieMessage, _Mapping]] = ..., one_player_message: _Optional[_Union[OnePlayerMessage, _Mapping]] = ..., two_player_message: _Optional[_Union[TwoPlayerMessage, _Mapping]] = ..., three_player_message: _Optional[_Union[ThreePlayerMessage, _Mapping]] = ..., self_message: _Optional[_Union[SelfMessage, _Mapping]] = ..., teammate_message: _Optional[_Union[TeammateMessage, _Mapping]] = ..., opponent_message: _Optional[_Union[OpponentMessage, _Mapping]] = ..., ball_player_message: _Optional[_Union[BallPlayerMessage, _Mapping]] = ...) -> None: ... - -class PointTo(_message.Message): - __slots__ = ("x", "y") - X_FIELD_NUMBER: _ClassVar[int] - Y_FIELD_NUMBER: _ClassVar[int] - x: float - y: float - def __init__(self, x: _Optional[float] = ..., y: _Optional[float] = ...) -> None: ... - -class PointToOf(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class AttentionTo(_message.Message): - __slots__ = ("side", "unum") - SIDE_FIELD_NUMBER: _ClassVar[int] - UNUM_FIELD_NUMBER: _ClassVar[int] - side: Side - unum: int - def __init__(self, side: _Optional[_Union[Side, str]] = ..., unum: _Optional[int] = ...) -> None: ... - -class AttentionToOf(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class AddText(_message.Message): - __slots__ = ("level", "message") - LEVEL_FIELD_NUMBER: _ClassVar[int] - MESSAGE_FIELD_NUMBER: _ClassVar[int] - level: LoggerLevel - message: str - def __init__(self, level: _Optional[_Union[LoggerLevel, str]] = ..., message: _Optional[str] = ...) -> None: ... - -class AddPoint(_message.Message): - __slots__ = ("level", "point", "color") - LEVEL_FIELD_NUMBER: _ClassVar[int] - POINT_FIELD_NUMBER: _ClassVar[int] - COLOR_FIELD_NUMBER: _ClassVar[int] - level: LoggerLevel - point: Vector2D - color: str - def __init__(self, level: _Optional[_Union[LoggerLevel, str]] = ..., point: _Optional[_Union[Vector2D, _Mapping]] = ..., color: _Optional[str] = ...) -> None: ... - -class AddLine(_message.Message): - __slots__ = ("level", "start", "end", "color") - LEVEL_FIELD_NUMBER: _ClassVar[int] - START_FIELD_NUMBER: _ClassVar[int] - END_FIELD_NUMBER: _ClassVar[int] - COLOR_FIELD_NUMBER: _ClassVar[int] - level: LoggerLevel - start: Vector2D - end: Vector2D - color: str - def __init__(self, level: _Optional[_Union[LoggerLevel, str]] = ..., start: _Optional[_Union[Vector2D, _Mapping]] = ..., end: _Optional[_Union[Vector2D, _Mapping]] = ..., color: _Optional[str] = ...) -> None: ... - -class AddArc(_message.Message): - __slots__ = ("level", "center", "radius", "start_angle", "span_angel", "color") - LEVEL_FIELD_NUMBER: _ClassVar[int] - CENTER_FIELD_NUMBER: _ClassVar[int] - RADIUS_FIELD_NUMBER: _ClassVar[int] - START_ANGLE_FIELD_NUMBER: _ClassVar[int] - SPAN_ANGEL_FIELD_NUMBER: _ClassVar[int] - COLOR_FIELD_NUMBER: _ClassVar[int] - level: LoggerLevel - center: Vector2D - radius: float - start_angle: float - span_angel: float - color: str - def __init__(self, level: _Optional[_Union[LoggerLevel, str]] = ..., center: _Optional[_Union[Vector2D, _Mapping]] = ..., radius: _Optional[float] = ..., start_angle: _Optional[float] = ..., span_angel: _Optional[float] = ..., color: _Optional[str] = ...) -> None: ... - -class AddCircle(_message.Message): - __slots__ = ("level", "center", "radius", "color", "fill") - LEVEL_FIELD_NUMBER: _ClassVar[int] - CENTER_FIELD_NUMBER: _ClassVar[int] - RADIUS_FIELD_NUMBER: _ClassVar[int] - COLOR_FIELD_NUMBER: _ClassVar[int] - FILL_FIELD_NUMBER: _ClassVar[int] - level: LoggerLevel - center: Vector2D - radius: float - color: str - fill: bool - def __init__(self, level: _Optional[_Union[LoggerLevel, str]] = ..., center: _Optional[_Union[Vector2D, _Mapping]] = ..., radius: _Optional[float] = ..., color: _Optional[str] = ..., fill: bool = ...) -> None: ... - -class AddTriangle(_message.Message): - __slots__ = ("level", "point1", "point2", "point3", "color", "fill") - LEVEL_FIELD_NUMBER: _ClassVar[int] - POINT1_FIELD_NUMBER: _ClassVar[int] - POINT2_FIELD_NUMBER: _ClassVar[int] - POINT3_FIELD_NUMBER: _ClassVar[int] - COLOR_FIELD_NUMBER: _ClassVar[int] - FILL_FIELD_NUMBER: _ClassVar[int] - level: LoggerLevel - point1: Vector2D - point2: Vector2D - point3: Vector2D - color: str - fill: bool - def __init__(self, level: _Optional[_Union[LoggerLevel, str]] = ..., point1: _Optional[_Union[Vector2D, _Mapping]] = ..., point2: _Optional[_Union[Vector2D, _Mapping]] = ..., point3: _Optional[_Union[Vector2D, _Mapping]] = ..., color: _Optional[str] = ..., fill: bool = ...) -> None: ... - -class AddRectangle(_message.Message): - __slots__ = ("level", "left", "top", "length", "width", "color", "fill") - LEVEL_FIELD_NUMBER: _ClassVar[int] - LEFT_FIELD_NUMBER: _ClassVar[int] - TOP_FIELD_NUMBER: _ClassVar[int] - LENGTH_FIELD_NUMBER: _ClassVar[int] - WIDTH_FIELD_NUMBER: _ClassVar[int] - COLOR_FIELD_NUMBER: _ClassVar[int] - FILL_FIELD_NUMBER: _ClassVar[int] - level: LoggerLevel - left: float - top: float - length: float - width: float - color: str - fill: bool - def __init__(self, level: _Optional[_Union[LoggerLevel, str]] = ..., left: _Optional[float] = ..., top: _Optional[float] = ..., length: _Optional[float] = ..., width: _Optional[float] = ..., color: _Optional[str] = ..., fill: bool = ...) -> None: ... - -class AddSector(_message.Message): - __slots__ = ("level", "center", "min_radius", "max_radius", "start_angle", "span_angel", "color", "fill") - LEVEL_FIELD_NUMBER: _ClassVar[int] - CENTER_FIELD_NUMBER: _ClassVar[int] - MIN_RADIUS_FIELD_NUMBER: _ClassVar[int] - MAX_RADIUS_FIELD_NUMBER: _ClassVar[int] - START_ANGLE_FIELD_NUMBER: _ClassVar[int] - SPAN_ANGEL_FIELD_NUMBER: _ClassVar[int] - COLOR_FIELD_NUMBER: _ClassVar[int] - FILL_FIELD_NUMBER: _ClassVar[int] - level: LoggerLevel - center: Vector2D - min_radius: float - max_radius: float - start_angle: float - span_angel: float - color: str - fill: bool - def __init__(self, level: _Optional[_Union[LoggerLevel, str]] = ..., center: _Optional[_Union[Vector2D, _Mapping]] = ..., min_radius: _Optional[float] = ..., max_radius: _Optional[float] = ..., start_angle: _Optional[float] = ..., span_angel: _Optional[float] = ..., color: _Optional[str] = ..., fill: bool = ...) -> None: ... - -class AddMessage(_message.Message): - __slots__ = ("level", "position", "message", "color") - LEVEL_FIELD_NUMBER: _ClassVar[int] - POSITION_FIELD_NUMBER: _ClassVar[int] - MESSAGE_FIELD_NUMBER: _ClassVar[int] - COLOR_FIELD_NUMBER: _ClassVar[int] - level: LoggerLevel - position: Vector2D - message: str - color: str - def __init__(self, level: _Optional[_Union[LoggerLevel, str]] = ..., position: _Optional[_Union[Vector2D, _Mapping]] = ..., message: _Optional[str] = ..., color: _Optional[str] = ...) -> None: ... - -class Log(_message.Message): - __slots__ = ("add_text", "add_point", "add_line", "add_arc", "add_circle", "add_triangle", "add_rectangle", "add_sector", "add_message") - ADD_TEXT_FIELD_NUMBER: _ClassVar[int] - ADD_POINT_FIELD_NUMBER: _ClassVar[int] - ADD_LINE_FIELD_NUMBER: _ClassVar[int] - ADD_ARC_FIELD_NUMBER: _ClassVar[int] - ADD_CIRCLE_FIELD_NUMBER: _ClassVar[int] - ADD_TRIANGLE_FIELD_NUMBER: _ClassVar[int] - ADD_RECTANGLE_FIELD_NUMBER: _ClassVar[int] - ADD_SECTOR_FIELD_NUMBER: _ClassVar[int] - ADD_MESSAGE_FIELD_NUMBER: _ClassVar[int] - add_text: AddText - add_point: AddPoint - add_line: AddLine - add_arc: AddArc - add_circle: AddCircle - add_triangle: AddTriangle - add_rectangle: AddRectangle - add_sector: AddSector - add_message: AddMessage - def __init__(self, add_text: _Optional[_Union[AddText, _Mapping]] = ..., add_point: _Optional[_Union[AddPoint, _Mapping]] = ..., add_line: _Optional[_Union[AddLine, _Mapping]] = ..., add_arc: _Optional[_Union[AddArc, _Mapping]] = ..., add_circle: _Optional[_Union[AddCircle, _Mapping]] = ..., add_triangle: _Optional[_Union[AddTriangle, _Mapping]] = ..., add_rectangle: _Optional[_Union[AddRectangle, _Mapping]] = ..., add_sector: _Optional[_Union[AddSector, _Mapping]] = ..., add_message: _Optional[_Union[AddMessage, _Mapping]] = ...) -> None: ... - -class DebugClient(_message.Message): - __slots__ = ("message",) - MESSAGE_FIELD_NUMBER: _ClassVar[int] - message: str - def __init__(self, message: _Optional[str] = ...) -> None: ... - -class Body_GoToPoint(_message.Message): - __slots__ = ("target_point", "distance_threshold", "max_dash_power") - TARGET_POINT_FIELD_NUMBER: _ClassVar[int] - DISTANCE_THRESHOLD_FIELD_NUMBER: _ClassVar[int] - MAX_DASH_POWER_FIELD_NUMBER: _ClassVar[int] - target_point: Vector2D - distance_threshold: float - max_dash_power: float - def __init__(self, target_point: _Optional[_Union[Vector2D, _Mapping]] = ..., distance_threshold: _Optional[float] = ..., max_dash_power: _Optional[float] = ...) -> None: ... - -class Body_SmartKick(_message.Message): - __slots__ = ("target_point", "first_speed", "first_speed_threshold", "max_steps") - TARGET_POINT_FIELD_NUMBER: _ClassVar[int] - FIRST_SPEED_FIELD_NUMBER: _ClassVar[int] - FIRST_SPEED_THRESHOLD_FIELD_NUMBER: _ClassVar[int] - MAX_STEPS_FIELD_NUMBER: _ClassVar[int] - target_point: Vector2D - first_speed: float - first_speed_threshold: float - max_steps: int - def __init__(self, target_point: _Optional[_Union[Vector2D, _Mapping]] = ..., first_speed: _Optional[float] = ..., first_speed_threshold: _Optional[float] = ..., max_steps: _Optional[int] = ...) -> None: ... - -class Bhv_BeforeKickOff(_message.Message): - __slots__ = ("point",) - POINT_FIELD_NUMBER: _ClassVar[int] - point: Vector2D - def __init__(self, point: _Optional[_Union[Vector2D, _Mapping]] = ...) -> None: ... - -class Bhv_BodyNeckToBall(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class Bhv_BodyNeckToPoint(_message.Message): - __slots__ = ("point",) - POINT_FIELD_NUMBER: _ClassVar[int] - point: Vector2D - def __init__(self, point: _Optional[_Union[Vector2D, _Mapping]] = ...) -> None: ... - -class Bhv_Emergency(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class Bhv_GoToPointLookBall(_message.Message): - __slots__ = ("target_point", "distance_threshold", "max_dash_power") - TARGET_POINT_FIELD_NUMBER: _ClassVar[int] - DISTANCE_THRESHOLD_FIELD_NUMBER: _ClassVar[int] - MAX_DASH_POWER_FIELD_NUMBER: _ClassVar[int] - target_point: Vector2D - distance_threshold: float - max_dash_power: float - def __init__(self, target_point: _Optional[_Union[Vector2D, _Mapping]] = ..., distance_threshold: _Optional[float] = ..., max_dash_power: _Optional[float] = ...) -> None: ... - -class Bhv_NeckBodyToBall(_message.Message): - __slots__ = ("angle_buf",) - ANGLE_BUF_FIELD_NUMBER: _ClassVar[int] - angle_buf: float - def __init__(self, angle_buf: _Optional[float] = ...) -> None: ... - -class Bhv_NeckBodyToPoint(_message.Message): - __slots__ = ("point", "angle_buf") - POINT_FIELD_NUMBER: _ClassVar[int] - ANGLE_BUF_FIELD_NUMBER: _ClassVar[int] - point: Vector2D - angle_buf: float - def __init__(self, point: _Optional[_Union[Vector2D, _Mapping]] = ..., angle_buf: _Optional[float] = ...) -> None: ... - -class Bhv_ScanField(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class Body_AdvanceBall(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class Body_ClearBall(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class Body_Dribble(_message.Message): - __slots__ = ("target_point", "distance_threshold", "dash_power", "dash_count", "dodge") - TARGET_POINT_FIELD_NUMBER: _ClassVar[int] - DISTANCE_THRESHOLD_FIELD_NUMBER: _ClassVar[int] - DASH_POWER_FIELD_NUMBER: _ClassVar[int] - DASH_COUNT_FIELD_NUMBER: _ClassVar[int] - DODGE_FIELD_NUMBER: _ClassVar[int] - target_point: Vector2D - distance_threshold: float - dash_power: float - dash_count: int - dodge: bool - def __init__(self, target_point: _Optional[_Union[Vector2D, _Mapping]] = ..., distance_threshold: _Optional[float] = ..., dash_power: _Optional[float] = ..., dash_count: _Optional[int] = ..., dodge: bool = ...) -> None: ... - -class Body_GoToPointDodge(_message.Message): - __slots__ = ("target_point", "dash_power") - TARGET_POINT_FIELD_NUMBER: _ClassVar[int] - DASH_POWER_FIELD_NUMBER: _ClassVar[int] - target_point: Vector2D - dash_power: float - def __init__(self, target_point: _Optional[_Union[Vector2D, _Mapping]] = ..., dash_power: _Optional[float] = ...) -> None: ... - -class Body_HoldBall(_message.Message): - __slots__ = ("do_turn", "turn_target_point", "kick_target_point") - DO_TURN_FIELD_NUMBER: _ClassVar[int] - TURN_TARGET_POINT_FIELD_NUMBER: _ClassVar[int] - KICK_TARGET_POINT_FIELD_NUMBER: _ClassVar[int] - do_turn: bool - turn_target_point: Vector2D - kick_target_point: Vector2D - def __init__(self, do_turn: bool = ..., turn_target_point: _Optional[_Union[Vector2D, _Mapping]] = ..., kick_target_point: _Optional[_Union[Vector2D, _Mapping]] = ...) -> None: ... - -class Body_Intercept(_message.Message): - __slots__ = ("save_recovery", "face_point") - SAVE_RECOVERY_FIELD_NUMBER: _ClassVar[int] - FACE_POINT_FIELD_NUMBER: _ClassVar[int] - save_recovery: bool - face_point: Vector2D - def __init__(self, save_recovery: bool = ..., face_point: _Optional[_Union[Vector2D, _Mapping]] = ...) -> None: ... - -class Body_KickOneStep(_message.Message): - __slots__ = ("target_point", "first_speed", "force_mode") - TARGET_POINT_FIELD_NUMBER: _ClassVar[int] - FIRST_SPEED_FIELD_NUMBER: _ClassVar[int] - FORCE_MODE_FIELD_NUMBER: _ClassVar[int] - target_point: Vector2D - first_speed: float - force_mode: bool - def __init__(self, target_point: _Optional[_Union[Vector2D, _Mapping]] = ..., first_speed: _Optional[float] = ..., force_mode: bool = ...) -> None: ... - -class Body_StopBall(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class Body_StopDash(_message.Message): - __slots__ = ("save_recovery",) - SAVE_RECOVERY_FIELD_NUMBER: _ClassVar[int] - save_recovery: bool - def __init__(self, save_recovery: bool = ...) -> None: ... - -class Body_TackleToPoint(_message.Message): - __slots__ = ("target_point", "min_probability", "min_speed") - TARGET_POINT_FIELD_NUMBER: _ClassVar[int] - MIN_PROBABILITY_FIELD_NUMBER: _ClassVar[int] - MIN_SPEED_FIELD_NUMBER: _ClassVar[int] - target_point: Vector2D - min_probability: float - min_speed: float - def __init__(self, target_point: _Optional[_Union[Vector2D, _Mapping]] = ..., min_probability: _Optional[float] = ..., min_speed: _Optional[float] = ...) -> None: ... - -class Body_TurnToAngle(_message.Message): - __slots__ = ("angle",) - ANGLE_FIELD_NUMBER: _ClassVar[int] - angle: float - def __init__(self, angle: _Optional[float] = ...) -> None: ... - -class Body_TurnToBall(_message.Message): - __slots__ = ("cycle",) - CYCLE_FIELD_NUMBER: _ClassVar[int] - cycle: int - def __init__(self, cycle: _Optional[int] = ...) -> None: ... - -class Body_TurnToPoint(_message.Message): - __slots__ = ("target_point", "cycle") - TARGET_POINT_FIELD_NUMBER: _ClassVar[int] - CYCLE_FIELD_NUMBER: _ClassVar[int] - target_point: Vector2D - cycle: int - def __init__(self, target_point: _Optional[_Union[Vector2D, _Mapping]] = ..., cycle: _Optional[int] = ...) -> None: ... - -class Focus_MoveToPoint(_message.Message): - __slots__ = ("target_point",) - TARGET_POINT_FIELD_NUMBER: _ClassVar[int] - target_point: Vector2D - def __init__(self, target_point: _Optional[_Union[Vector2D, _Mapping]] = ...) -> None: ... - -class Focus_Reset(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class Neck_ScanField(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class Neck_ScanPlayers(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class Neck_TurnToBallAndPlayer(_message.Message): - __slots__ = ("side", "uniform_number", "count_threshold") - SIDE_FIELD_NUMBER: _ClassVar[int] - UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - COUNT_THRESHOLD_FIELD_NUMBER: _ClassVar[int] - side: Side - uniform_number: int - count_threshold: int - def __init__(self, side: _Optional[_Union[Side, str]] = ..., uniform_number: _Optional[int] = ..., count_threshold: _Optional[int] = ...) -> None: ... - -class Neck_TurnToBallOrScan(_message.Message): - __slots__ = ("count_threshold",) - COUNT_THRESHOLD_FIELD_NUMBER: _ClassVar[int] - count_threshold: int - def __init__(self, count_threshold: _Optional[int] = ...) -> None: ... - -class Neck_TurnToBall(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class Neck_TurnToGoalieOrScan(_message.Message): - __slots__ = ("count_threshold",) - COUNT_THRESHOLD_FIELD_NUMBER: _ClassVar[int] - count_threshold: int - def __init__(self, count_threshold: _Optional[int] = ...) -> None: ... - -class Neck_TurnToLowConfTeammate(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class Neck_TurnToPlayerOrScan(_message.Message): - __slots__ = ("side", "uniform_number", "count_threshold") - SIDE_FIELD_NUMBER: _ClassVar[int] - UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - COUNT_THRESHOLD_FIELD_NUMBER: _ClassVar[int] - side: Side - uniform_number: int - count_threshold: int - def __init__(self, side: _Optional[_Union[Side, str]] = ..., uniform_number: _Optional[int] = ..., count_threshold: _Optional[int] = ...) -> None: ... - -class Neck_TurnToPoint(_message.Message): - __slots__ = ("target_point",) - TARGET_POINT_FIELD_NUMBER: _ClassVar[int] - target_point: Vector2D - def __init__(self, target_point: _Optional[_Union[Vector2D, _Mapping]] = ...) -> None: ... - -class Neck_TurnToRelative(_message.Message): - __slots__ = ("angle",) - ANGLE_FIELD_NUMBER: _ClassVar[int] - angle: float - def __init__(self, angle: _Optional[float] = ...) -> None: ... - -class View_ChangeWidth(_message.Message): - __slots__ = ("view_width",) - VIEW_WIDTH_FIELD_NUMBER: _ClassVar[int] - view_width: ViewWidth - def __init__(self, view_width: _Optional[_Union[ViewWidth, str]] = ...) -> None: ... - -class View_Normal(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class View_Synch(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class View_Wide(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class HeliosGoalie(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class HeliosGoalieMove(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class HeliosGoalieKick(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class HeliosShoot(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class HeliosChainAction(_message.Message): - __slots__ = ("direct_pass", "lead_pass", "through_pass", "short_dribble", "long_dribble", "cross", "simple_pass", "simple_dribble", "simple_shoot") - DIRECT_PASS_FIELD_NUMBER: _ClassVar[int] - LEAD_PASS_FIELD_NUMBER: _ClassVar[int] - THROUGH_PASS_FIELD_NUMBER: _ClassVar[int] - SHORT_DRIBBLE_FIELD_NUMBER: _ClassVar[int] - LONG_DRIBBLE_FIELD_NUMBER: _ClassVar[int] - CROSS_FIELD_NUMBER: _ClassVar[int] - SIMPLE_PASS_FIELD_NUMBER: _ClassVar[int] - SIMPLE_DRIBBLE_FIELD_NUMBER: _ClassVar[int] - SIMPLE_SHOOT_FIELD_NUMBER: _ClassVar[int] - direct_pass: bool - lead_pass: bool - through_pass: bool - short_dribble: bool - long_dribble: bool - cross: bool - simple_pass: bool - simple_dribble: bool - simple_shoot: bool - def __init__(self, direct_pass: bool = ..., lead_pass: bool = ..., through_pass: bool = ..., short_dribble: bool = ..., long_dribble: bool = ..., cross: bool = ..., simple_pass: bool = ..., simple_dribble: bool = ..., simple_shoot: bool = ...) -> None: ... - -class HeliosBasicOffensive(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class HeliosBasicMove(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class HeliosSetPlay(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class HeliosPenalty(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class HeliosCommunicaion(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class PlayerAction(_message.Message): - __slots__ = ("dash", "turn", "kick", "tackle", "catch", "move", "turn_neck", "change_view", "say", "point_to", "point_to_of", "attention_to", "attention_to_of", "log", "debug_client", "body_go_to_point", "body_smart_kick", "bhv_before_kick_off", "bhv_body_neck_to_ball", "bhv_body_neck_to_point", "bhv_emergency", "bhv_go_to_point_look_ball", "bhv_neck_body_to_ball", "bhv_neck_body_to_point", "bhv_scan_field", "body_advance_ball", "body_clear_ball", "body_dribble", "body_go_to_point_dodge", "body_hold_ball", "body_intercept", "body_kick_one_step", "body_stop_ball", "body_stop_dash", "body_tackle_to_point", "body_turn_to_angle", "body_turn_to_ball", "body_turn_to_point", "focus_move_to_point", "focus_reset", "neck_scan_field", "neck_scan_players", "neck_turn_to_ball_and_player", "neck_turn_to_ball_or_scan", "neck_turn_to_ball", "neck_turn_to_goalie_or_scan", "neck_turn_to_low_conf_teammate", "neck_turn_to_player_or_scan", "neck_turn_to_point", "neck_turn_to_relative", "view_change_width", "view_normal", "view_synch", "view_wide", "helios_goalie", "helios_goalie_move", "helios_goalie_kick", "helios_shoot", "helios_chain_action", "helios_basic_offensive", "helios_basic_move", "helios_set_play", "helios_penalty", "helios_communication") - DASH_FIELD_NUMBER: _ClassVar[int] - TURN_FIELD_NUMBER: _ClassVar[int] - KICK_FIELD_NUMBER: _ClassVar[int] - TACKLE_FIELD_NUMBER: _ClassVar[int] - CATCH_FIELD_NUMBER: _ClassVar[int] - MOVE_FIELD_NUMBER: _ClassVar[int] - TURN_NECK_FIELD_NUMBER: _ClassVar[int] - CHANGE_VIEW_FIELD_NUMBER: _ClassVar[int] - SAY_FIELD_NUMBER: _ClassVar[int] - POINT_TO_FIELD_NUMBER: _ClassVar[int] - POINT_TO_OF_FIELD_NUMBER: _ClassVar[int] - ATTENTION_TO_FIELD_NUMBER: _ClassVar[int] - ATTENTION_TO_OF_FIELD_NUMBER: _ClassVar[int] - LOG_FIELD_NUMBER: _ClassVar[int] - DEBUG_CLIENT_FIELD_NUMBER: _ClassVar[int] - BODY_GO_TO_POINT_FIELD_NUMBER: _ClassVar[int] - BODY_SMART_KICK_FIELD_NUMBER: _ClassVar[int] - BHV_BEFORE_KICK_OFF_FIELD_NUMBER: _ClassVar[int] - BHV_BODY_NECK_TO_BALL_FIELD_NUMBER: _ClassVar[int] - BHV_BODY_NECK_TO_POINT_FIELD_NUMBER: _ClassVar[int] - BHV_EMERGENCY_FIELD_NUMBER: _ClassVar[int] - BHV_GO_TO_POINT_LOOK_BALL_FIELD_NUMBER: _ClassVar[int] - BHV_NECK_BODY_TO_BALL_FIELD_NUMBER: _ClassVar[int] - BHV_NECK_BODY_TO_POINT_FIELD_NUMBER: _ClassVar[int] - BHV_SCAN_FIELD_FIELD_NUMBER: _ClassVar[int] - BODY_ADVANCE_BALL_FIELD_NUMBER: _ClassVar[int] - BODY_CLEAR_BALL_FIELD_NUMBER: _ClassVar[int] - BODY_DRIBBLE_FIELD_NUMBER: _ClassVar[int] - BODY_GO_TO_POINT_DODGE_FIELD_NUMBER: _ClassVar[int] - BODY_HOLD_BALL_FIELD_NUMBER: _ClassVar[int] - BODY_INTERCEPT_FIELD_NUMBER: _ClassVar[int] - BODY_KICK_ONE_STEP_FIELD_NUMBER: _ClassVar[int] - BODY_STOP_BALL_FIELD_NUMBER: _ClassVar[int] - BODY_STOP_DASH_FIELD_NUMBER: _ClassVar[int] - BODY_TACKLE_TO_POINT_FIELD_NUMBER: _ClassVar[int] - BODY_TURN_TO_ANGLE_FIELD_NUMBER: _ClassVar[int] - BODY_TURN_TO_BALL_FIELD_NUMBER: _ClassVar[int] - BODY_TURN_TO_POINT_FIELD_NUMBER: _ClassVar[int] - FOCUS_MOVE_TO_POINT_FIELD_NUMBER: _ClassVar[int] - FOCUS_RESET_FIELD_NUMBER: _ClassVar[int] - NECK_SCAN_FIELD_FIELD_NUMBER: _ClassVar[int] - NECK_SCAN_PLAYERS_FIELD_NUMBER: _ClassVar[int] - NECK_TURN_TO_BALL_AND_PLAYER_FIELD_NUMBER: _ClassVar[int] - NECK_TURN_TO_BALL_OR_SCAN_FIELD_NUMBER: _ClassVar[int] - NECK_TURN_TO_BALL_FIELD_NUMBER: _ClassVar[int] - NECK_TURN_TO_GOALIE_OR_SCAN_FIELD_NUMBER: _ClassVar[int] - NECK_TURN_TO_LOW_CONF_TEAMMATE_FIELD_NUMBER: _ClassVar[int] - NECK_TURN_TO_PLAYER_OR_SCAN_FIELD_NUMBER: _ClassVar[int] - NECK_TURN_TO_POINT_FIELD_NUMBER: _ClassVar[int] - NECK_TURN_TO_RELATIVE_FIELD_NUMBER: _ClassVar[int] - VIEW_CHANGE_WIDTH_FIELD_NUMBER: _ClassVar[int] - VIEW_NORMAL_FIELD_NUMBER: _ClassVar[int] - VIEW_SYNCH_FIELD_NUMBER: _ClassVar[int] - VIEW_WIDE_FIELD_NUMBER: _ClassVar[int] - HELIOS_GOALIE_FIELD_NUMBER: _ClassVar[int] - HELIOS_GOALIE_MOVE_FIELD_NUMBER: _ClassVar[int] - HELIOS_GOALIE_KICK_FIELD_NUMBER: _ClassVar[int] - HELIOS_SHOOT_FIELD_NUMBER: _ClassVar[int] - HELIOS_CHAIN_ACTION_FIELD_NUMBER: _ClassVar[int] - HELIOS_BASIC_OFFENSIVE_FIELD_NUMBER: _ClassVar[int] - HELIOS_BASIC_MOVE_FIELD_NUMBER: _ClassVar[int] - HELIOS_SET_PLAY_FIELD_NUMBER: _ClassVar[int] - HELIOS_PENALTY_FIELD_NUMBER: _ClassVar[int] - HELIOS_COMMUNICATION_FIELD_NUMBER: _ClassVar[int] - dash: Dash - turn: Turn - kick: Kick - tackle: Tackle - catch: Catch - move: Move - turn_neck: TurnNeck - change_view: ChangeView - say: Say - point_to: PointTo - point_to_of: PointToOf - attention_to: AttentionTo - attention_to_of: AttentionToOf - log: Log - debug_client: DebugClient - body_go_to_point: Body_GoToPoint - body_smart_kick: Body_SmartKick - bhv_before_kick_off: Bhv_BeforeKickOff - bhv_body_neck_to_ball: Bhv_BodyNeckToBall - bhv_body_neck_to_point: Bhv_BodyNeckToPoint - bhv_emergency: Bhv_Emergency - bhv_go_to_point_look_ball: Bhv_GoToPointLookBall - bhv_neck_body_to_ball: Bhv_NeckBodyToBall - bhv_neck_body_to_point: Bhv_NeckBodyToPoint - bhv_scan_field: Bhv_ScanField - body_advance_ball: Body_AdvanceBall - body_clear_ball: Body_ClearBall - body_dribble: Body_Dribble - body_go_to_point_dodge: Body_GoToPointDodge - body_hold_ball: Body_HoldBall - body_intercept: Body_Intercept - body_kick_one_step: Body_KickOneStep - body_stop_ball: Body_StopBall - body_stop_dash: Body_StopDash - body_tackle_to_point: Body_TackleToPoint - body_turn_to_angle: Body_TurnToAngle - body_turn_to_ball: Body_TurnToBall - body_turn_to_point: Body_TurnToPoint - focus_move_to_point: Focus_MoveToPoint - focus_reset: Focus_Reset - neck_scan_field: Neck_ScanField - neck_scan_players: Neck_ScanPlayers - neck_turn_to_ball_and_player: Neck_TurnToBallAndPlayer - neck_turn_to_ball_or_scan: Neck_TurnToBallOrScan - neck_turn_to_ball: Neck_TurnToBall - neck_turn_to_goalie_or_scan: Neck_TurnToGoalieOrScan - neck_turn_to_low_conf_teammate: Neck_TurnToLowConfTeammate - neck_turn_to_player_or_scan: Neck_TurnToPlayerOrScan - neck_turn_to_point: Neck_TurnToPoint - neck_turn_to_relative: Neck_TurnToRelative - view_change_width: View_ChangeWidth - view_normal: View_Normal - view_synch: View_Synch - view_wide: View_Wide - helios_goalie: HeliosGoalie - helios_goalie_move: HeliosGoalieMove - helios_goalie_kick: HeliosGoalieKick - helios_shoot: HeliosShoot - helios_chain_action: HeliosChainAction - helios_basic_offensive: HeliosBasicOffensive - helios_basic_move: HeliosBasicMove - helios_set_play: HeliosSetPlay - helios_penalty: HeliosPenalty - helios_communication: HeliosCommunicaion - def __init__(self, dash: _Optional[_Union[Dash, _Mapping]] = ..., turn: _Optional[_Union[Turn, _Mapping]] = ..., kick: _Optional[_Union[Kick, _Mapping]] = ..., tackle: _Optional[_Union[Tackle, _Mapping]] = ..., catch: _Optional[_Union[Catch, _Mapping]] = ..., move: _Optional[_Union[Move, _Mapping]] = ..., turn_neck: _Optional[_Union[TurnNeck, _Mapping]] = ..., change_view: _Optional[_Union[ChangeView, _Mapping]] = ..., say: _Optional[_Union[Say, _Mapping]] = ..., point_to: _Optional[_Union[PointTo, _Mapping]] = ..., point_to_of: _Optional[_Union[PointToOf, _Mapping]] = ..., attention_to: _Optional[_Union[AttentionTo, _Mapping]] = ..., attention_to_of: _Optional[_Union[AttentionToOf, _Mapping]] = ..., log: _Optional[_Union[Log, _Mapping]] = ..., debug_client: _Optional[_Union[DebugClient, _Mapping]] = ..., body_go_to_point: _Optional[_Union[Body_GoToPoint, _Mapping]] = ..., body_smart_kick: _Optional[_Union[Body_SmartKick, _Mapping]] = ..., bhv_before_kick_off: _Optional[_Union[Bhv_BeforeKickOff, _Mapping]] = ..., bhv_body_neck_to_ball: _Optional[_Union[Bhv_BodyNeckToBall, _Mapping]] = ..., bhv_body_neck_to_point: _Optional[_Union[Bhv_BodyNeckToPoint, _Mapping]] = ..., bhv_emergency: _Optional[_Union[Bhv_Emergency, _Mapping]] = ..., bhv_go_to_point_look_ball: _Optional[_Union[Bhv_GoToPointLookBall, _Mapping]] = ..., bhv_neck_body_to_ball: _Optional[_Union[Bhv_NeckBodyToBall, _Mapping]] = ..., bhv_neck_body_to_point: _Optional[_Union[Bhv_NeckBodyToPoint, _Mapping]] = ..., bhv_scan_field: _Optional[_Union[Bhv_ScanField, _Mapping]] = ..., body_advance_ball: _Optional[_Union[Body_AdvanceBall, _Mapping]] = ..., body_clear_ball: _Optional[_Union[Body_ClearBall, _Mapping]] = ..., body_dribble: _Optional[_Union[Body_Dribble, _Mapping]] = ..., body_go_to_point_dodge: _Optional[_Union[Body_GoToPointDodge, _Mapping]] = ..., body_hold_ball: _Optional[_Union[Body_HoldBall, _Mapping]] = ..., body_intercept: _Optional[_Union[Body_Intercept, _Mapping]] = ..., body_kick_one_step: _Optional[_Union[Body_KickOneStep, _Mapping]] = ..., body_stop_ball: _Optional[_Union[Body_StopBall, _Mapping]] = ..., body_stop_dash: _Optional[_Union[Body_StopDash, _Mapping]] = ..., body_tackle_to_point: _Optional[_Union[Body_TackleToPoint, _Mapping]] = ..., body_turn_to_angle: _Optional[_Union[Body_TurnToAngle, _Mapping]] = ..., body_turn_to_ball: _Optional[_Union[Body_TurnToBall, _Mapping]] = ..., body_turn_to_point: _Optional[_Union[Body_TurnToPoint, _Mapping]] = ..., focus_move_to_point: _Optional[_Union[Focus_MoveToPoint, _Mapping]] = ..., focus_reset: _Optional[_Union[Focus_Reset, _Mapping]] = ..., neck_scan_field: _Optional[_Union[Neck_ScanField, _Mapping]] = ..., neck_scan_players: _Optional[_Union[Neck_ScanPlayers, _Mapping]] = ..., neck_turn_to_ball_and_player: _Optional[_Union[Neck_TurnToBallAndPlayer, _Mapping]] = ..., neck_turn_to_ball_or_scan: _Optional[_Union[Neck_TurnToBallOrScan, _Mapping]] = ..., neck_turn_to_ball: _Optional[_Union[Neck_TurnToBall, _Mapping]] = ..., neck_turn_to_goalie_or_scan: _Optional[_Union[Neck_TurnToGoalieOrScan, _Mapping]] = ..., neck_turn_to_low_conf_teammate: _Optional[_Union[Neck_TurnToLowConfTeammate, _Mapping]] = ..., neck_turn_to_player_or_scan: _Optional[_Union[Neck_TurnToPlayerOrScan, _Mapping]] = ..., neck_turn_to_point: _Optional[_Union[Neck_TurnToPoint, _Mapping]] = ..., neck_turn_to_relative: _Optional[_Union[Neck_TurnToRelative, _Mapping]] = ..., view_change_width: _Optional[_Union[View_ChangeWidth, _Mapping]] = ..., view_normal: _Optional[_Union[View_Normal, _Mapping]] = ..., view_synch: _Optional[_Union[View_Synch, _Mapping]] = ..., view_wide: _Optional[_Union[View_Wide, _Mapping]] = ..., helios_goalie: _Optional[_Union[HeliosGoalie, _Mapping]] = ..., helios_goalie_move: _Optional[_Union[HeliosGoalieMove, _Mapping]] = ..., helios_goalie_kick: _Optional[_Union[HeliosGoalieKick, _Mapping]] = ..., helios_shoot: _Optional[_Union[HeliosShoot, _Mapping]] = ..., helios_chain_action: _Optional[_Union[HeliosChainAction, _Mapping]] = ..., helios_basic_offensive: _Optional[_Union[HeliosBasicOffensive, _Mapping]] = ..., helios_basic_move: _Optional[_Union[HeliosBasicMove, _Mapping]] = ..., helios_set_play: _Optional[_Union[HeliosSetPlay, _Mapping]] = ..., helios_penalty: _Optional[_Union[HeliosPenalty, _Mapping]] = ..., helios_communication: _Optional[_Union[HeliosCommunicaion, _Mapping]] = ...) -> None: ... - -class PlayerActions(_message.Message): - __slots__ = ("actions",) - ACTIONS_FIELD_NUMBER: _ClassVar[int] - actions: _containers.RepeatedCompositeFieldContainer[PlayerAction] - def __init__(self, actions: _Optional[_Iterable[_Union[PlayerAction, _Mapping]]] = ...) -> None: ... - -class ChangePlayerType(_message.Message): - __slots__ = ("uniform_number", "type") - UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - TYPE_FIELD_NUMBER: _ClassVar[int] - uniform_number: int - type: int - def __init__(self, uniform_number: _Optional[int] = ..., type: _Optional[int] = ...) -> None: ... - -class DoHeliosSubstitute(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class DoHeliosSayPlayerTypes(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class CoachAction(_message.Message): - __slots__ = ("change_player_types", "do_helios_substitute", "do_helios_say_player_types") - CHANGE_PLAYER_TYPES_FIELD_NUMBER: _ClassVar[int] - DO_HELIOS_SUBSTITUTE_FIELD_NUMBER: _ClassVar[int] - DO_HELIOS_SAY_PLAYER_TYPES_FIELD_NUMBER: _ClassVar[int] - change_player_types: ChangePlayerType - do_helios_substitute: DoHeliosSubstitute - do_helios_say_player_types: DoHeliosSayPlayerTypes - def __init__(self, change_player_types: _Optional[_Union[ChangePlayerType, _Mapping]] = ..., do_helios_substitute: _Optional[_Union[DoHeliosSubstitute, _Mapping]] = ..., do_helios_say_player_types: _Optional[_Union[DoHeliosSayPlayerTypes, _Mapping]] = ...) -> None: ... - -class CoachActions(_message.Message): - __slots__ = ("actions",) - ACTIONS_FIELD_NUMBER: _ClassVar[int] - actions: _containers.RepeatedCompositeFieldContainer[CoachAction] - def __init__(self, actions: _Optional[_Iterable[_Union[CoachAction, _Mapping]]] = ...) -> None: ... - -class DoKickOff(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class DoMoveBall(_message.Message): - __slots__ = ("position", "velocity") - POSITION_FIELD_NUMBER: _ClassVar[int] - VELOCITY_FIELD_NUMBER: _ClassVar[int] - position: Vector2D - velocity: Vector2D - def __init__(self, position: _Optional[_Union[Vector2D, _Mapping]] = ..., velocity: _Optional[_Union[Vector2D, _Mapping]] = ...) -> None: ... - -class DoMovePlayer(_message.Message): - __slots__ = ("our_side", "uniform_number", "position", "body_direction") - OUR_SIDE_FIELD_NUMBER: _ClassVar[int] - UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - POSITION_FIELD_NUMBER: _ClassVar[int] - BODY_DIRECTION_FIELD_NUMBER: _ClassVar[int] - our_side: bool - uniform_number: int - position: Vector2D - body_direction: float - def __init__(self, our_side: bool = ..., uniform_number: _Optional[int] = ..., position: _Optional[_Union[Vector2D, _Mapping]] = ..., body_direction: _Optional[float] = ...) -> None: ... - -class DoRecover(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class DoChangeMode(_message.Message): - __slots__ = ("game_mode_type", "side") - GAME_MODE_TYPE_FIELD_NUMBER: _ClassVar[int] - SIDE_FIELD_NUMBER: _ClassVar[int] - game_mode_type: GameModeType - side: Side - def __init__(self, game_mode_type: _Optional[_Union[GameModeType, str]] = ..., side: _Optional[_Union[Side, str]] = ...) -> None: ... - -class DoChangePlayerType(_message.Message): - __slots__ = ("our_side", "uniform_number", "type") - OUR_SIDE_FIELD_NUMBER: _ClassVar[int] - UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] - TYPE_FIELD_NUMBER: _ClassVar[int] - our_side: bool - uniform_number: int - type: int - def __init__(self, our_side: bool = ..., uniform_number: _Optional[int] = ..., type: _Optional[int] = ...) -> None: ... - -class TrainerAction(_message.Message): - __slots__ = ("do_kick_off", "do_move_ball", "do_move_player", "do_recover", "do_change_mode", "do_change_player_type") - DO_KICK_OFF_FIELD_NUMBER: _ClassVar[int] - DO_MOVE_BALL_FIELD_NUMBER: _ClassVar[int] - DO_MOVE_PLAYER_FIELD_NUMBER: _ClassVar[int] - DO_RECOVER_FIELD_NUMBER: _ClassVar[int] - DO_CHANGE_MODE_FIELD_NUMBER: _ClassVar[int] - DO_CHANGE_PLAYER_TYPE_FIELD_NUMBER: _ClassVar[int] - do_kick_off: DoKickOff - do_move_ball: DoMoveBall - do_move_player: DoMovePlayer - do_recover: DoRecover - do_change_mode: DoChangeMode - do_change_player_type: DoChangePlayerType - def __init__(self, do_kick_off: _Optional[_Union[DoKickOff, _Mapping]] = ..., do_move_ball: _Optional[_Union[DoMoveBall, _Mapping]] = ..., do_move_player: _Optional[_Union[DoMovePlayer, _Mapping]] = ..., do_recover: _Optional[_Union[DoRecover, _Mapping]] = ..., do_change_mode: _Optional[_Union[DoChangeMode, _Mapping]] = ..., do_change_player_type: _Optional[_Union[DoChangePlayerType, _Mapping]] = ...) -> None: ... - -class TrainerActions(_message.Message): - __slots__ = ("actions",) - ACTIONS_FIELD_NUMBER: _ClassVar[int] - actions: _containers.RepeatedCompositeFieldContainer[TrainerAction] - def __init__(self, actions: _Optional[_Iterable[_Union[TrainerAction, _Mapping]]] = ...) -> None: ... - -class ServerParam(_message.Message): - __slots__ = ("agent_type", "inertia_moment", "player_size", "player_decay", "player_rand", "player_weight", "player_speed_max", "player_accel_max", "stamina_max", "stamina_inc_max", "recover_init", "recover_dec_thr", "recover_min", "recover_dec", "effort_init", "effort_dec_thr", "effort_min", "effort_dec", "effort_inc_thr", "effort_inc", "kick_rand", "team_actuator_noise", "player_rand_factor_l", "player_rand_factor_r", "kick_rand_factor_l", "kick_rand_factor_r", "ball_size", "ball_decay", "ball_rand", "ball_weight", "ball_speed_max", "ball_accel_max", "dash_power_rate", "kick_power_rate", "kickable_margin", "control_radius", "control_radius_width", "max_power", "min_power", "max_moment", "min_moment", "max_neck_moment", "min_neck_moment", "max_neck_angle", "min_neck_angle", "visible_angle", "visible_distance", "wind_dir", "wind_force", "wind_angle", "wind_rand", "kickable_area", "catch_area_l", "catch_area_w", "catch_probability", "goalie_max_moves", "corner_kick_margin", "offside_active_area_size", "wind_none", "use_wind_random", "coach_say_count_max", "coach_say_msg_size", "clang_win_size", "clang_define_win", "clang_meta_win", "clang_advice_win", "clang_info_win", "clang_mess_delay", "clang_mess_per_cycle", "half_time", "simulator_step", "send_step", "recv_step", "sense_body_step", "lcm_step", "player_say_msg_size", "player_hear_max", "player_hear_inc", "player_hear_decay", "catch_ban_cycle", "slow_down_factor", "use_offside", "kickoff_offside", "offside_kick_margin", "audio_cut_dist", "dist_quantize_step", "landmark_dist_quantize_step", "dir_quantize_step", "dist_quantize_step_l", "dist_quantize_step_r", "landmark_dist_quantize_step_l", "landmark_dist_quantize_step_r", "dir_quantize_step_l", "dir_quantize_step_r", "coach_mode", "coach_with_referee_mode", "use_old_coach_hear", "slowness_on_top_for_left_team", "slowness_on_top_for_right_team", "start_goal_l", "start_goal_r", "fullstate_l", "fullstate_r", "drop_ball_time", "synch_mode", "synch_offset", "synch_micro_sleep", "point_to_ban", "point_to_duration", "player_port", "trainer_port", "online_coach_port", "verbose_mode", "coach_send_vi_step", "replay_file", "landmark_file", "send_comms", "text_logging", "game_logging", "game_log_version", "text_log_dir", "game_log_dir", "text_log_fixed_name", "game_log_fixed_name", "use_text_log_fixed", "use_game_log_fixed", "use_text_log_dated", "use_game_log_dated", "log_date_format", "log_times", "record_message", "text_log_compression", "game_log_compression", "use_profile", "tackle_dist", "tackle_back_dist", "tackle_width", "tackle_exponent", "tackle_cycles", "tackle_power_rate", "freeform_wait_period", "freeform_send_period", "free_kick_faults", "back_passes", "proper_goal_kicks", "stopped_ball_vel", "max_goal_kicks", "clang_del_win", "clang_rule_win", "auto_mode", "kick_off_wait", "connect_wait", "game_over_wait", "team_l_start", "team_r_start", "keepaway_mode", "keepaway_length", "keepaway_width", "keepaway_logging", "keepaway_log_dir", "keepaway_log_fixed_name", "keepaway_log_fixed", "keepaway_log_dated", "keepaway_start", "nr_normal_halfs", "nr_extra_halfs", "penalty_shoot_outs", "pen_before_setup_wait", "pen_setup_wait", "pen_ready_wait", "pen_taken_wait", "pen_nr_kicks", "pen_max_extra_kicks", "pen_dist_x", "pen_random_winner", "pen_allow_mult_kicks", "pen_max_goalie_dist_x", "pen_coach_moves_players", "module_dir", "ball_stuck_area", "coach_msg_file", "max_tackle_power", "max_back_tackle_power", "player_speed_max_min", "extra_stamina", "synch_see_offset", "extra_half_time", "stamina_capacity", "max_dash_angle", "min_dash_angle", "dash_angle_step", "side_dash_rate", "back_dash_rate", "max_dash_power", "min_dash_power", "tackle_rand_factor", "foul_detect_probability", "foul_exponent", "foul_cycles", "golden_goal", "red_card_probability", "illegal_defense_duration", "illegal_defense_number", "illegal_defense_dist_x", "illegal_defense_width", "fixed_teamname_l", "fixed_teamname_r", "max_catch_angle", "min_catch_angle", "random_seed", "long_kick_power_factor", "long_kick_delay", "max_monitors", "catchable_area", "real_speed_max", "pitch_half_length", "pitch_half_width", "our_penalty_area_line_x", "their_penalty_area_line_x", "penalty_area_half_width", "penalty_area_length", "goal_width") - AGENT_TYPE_FIELD_NUMBER: _ClassVar[int] - INERTIA_MOMENT_FIELD_NUMBER: _ClassVar[int] - PLAYER_SIZE_FIELD_NUMBER: _ClassVar[int] - PLAYER_DECAY_FIELD_NUMBER: _ClassVar[int] - PLAYER_RAND_FIELD_NUMBER: _ClassVar[int] - PLAYER_WEIGHT_FIELD_NUMBER: _ClassVar[int] - PLAYER_SPEED_MAX_FIELD_NUMBER: _ClassVar[int] - PLAYER_ACCEL_MAX_FIELD_NUMBER: _ClassVar[int] - STAMINA_MAX_FIELD_NUMBER: _ClassVar[int] - STAMINA_INC_MAX_FIELD_NUMBER: _ClassVar[int] - RECOVER_INIT_FIELD_NUMBER: _ClassVar[int] - RECOVER_DEC_THR_FIELD_NUMBER: _ClassVar[int] - RECOVER_MIN_FIELD_NUMBER: _ClassVar[int] - RECOVER_DEC_FIELD_NUMBER: _ClassVar[int] - EFFORT_INIT_FIELD_NUMBER: _ClassVar[int] - EFFORT_DEC_THR_FIELD_NUMBER: _ClassVar[int] - EFFORT_MIN_FIELD_NUMBER: _ClassVar[int] - EFFORT_DEC_FIELD_NUMBER: _ClassVar[int] - EFFORT_INC_THR_FIELD_NUMBER: _ClassVar[int] - EFFORT_INC_FIELD_NUMBER: _ClassVar[int] - KICK_RAND_FIELD_NUMBER: _ClassVar[int] - TEAM_ACTUATOR_NOISE_FIELD_NUMBER: _ClassVar[int] - PLAYER_RAND_FACTOR_L_FIELD_NUMBER: _ClassVar[int] - PLAYER_RAND_FACTOR_R_FIELD_NUMBER: _ClassVar[int] - KICK_RAND_FACTOR_L_FIELD_NUMBER: _ClassVar[int] - KICK_RAND_FACTOR_R_FIELD_NUMBER: _ClassVar[int] - BALL_SIZE_FIELD_NUMBER: _ClassVar[int] - BALL_DECAY_FIELD_NUMBER: _ClassVar[int] - BALL_RAND_FIELD_NUMBER: _ClassVar[int] - BALL_WEIGHT_FIELD_NUMBER: _ClassVar[int] - BALL_SPEED_MAX_FIELD_NUMBER: _ClassVar[int] - BALL_ACCEL_MAX_FIELD_NUMBER: _ClassVar[int] - DASH_POWER_RATE_FIELD_NUMBER: _ClassVar[int] - KICK_POWER_RATE_FIELD_NUMBER: _ClassVar[int] - KICKABLE_MARGIN_FIELD_NUMBER: _ClassVar[int] - CONTROL_RADIUS_FIELD_NUMBER: _ClassVar[int] - CONTROL_RADIUS_WIDTH_FIELD_NUMBER: _ClassVar[int] - MAX_POWER_FIELD_NUMBER: _ClassVar[int] - MIN_POWER_FIELD_NUMBER: _ClassVar[int] - MAX_MOMENT_FIELD_NUMBER: _ClassVar[int] - MIN_MOMENT_FIELD_NUMBER: _ClassVar[int] - MAX_NECK_MOMENT_FIELD_NUMBER: _ClassVar[int] - MIN_NECK_MOMENT_FIELD_NUMBER: _ClassVar[int] - MAX_NECK_ANGLE_FIELD_NUMBER: _ClassVar[int] - MIN_NECK_ANGLE_FIELD_NUMBER: _ClassVar[int] - VISIBLE_ANGLE_FIELD_NUMBER: _ClassVar[int] - VISIBLE_DISTANCE_FIELD_NUMBER: _ClassVar[int] - WIND_DIR_FIELD_NUMBER: _ClassVar[int] - WIND_FORCE_FIELD_NUMBER: _ClassVar[int] - WIND_ANGLE_FIELD_NUMBER: _ClassVar[int] - WIND_RAND_FIELD_NUMBER: _ClassVar[int] - KICKABLE_AREA_FIELD_NUMBER: _ClassVar[int] - CATCH_AREA_L_FIELD_NUMBER: _ClassVar[int] - CATCH_AREA_W_FIELD_NUMBER: _ClassVar[int] - CATCH_PROBABILITY_FIELD_NUMBER: _ClassVar[int] - GOALIE_MAX_MOVES_FIELD_NUMBER: _ClassVar[int] - CORNER_KICK_MARGIN_FIELD_NUMBER: _ClassVar[int] - OFFSIDE_ACTIVE_AREA_SIZE_FIELD_NUMBER: _ClassVar[int] - WIND_NONE_FIELD_NUMBER: _ClassVar[int] - USE_WIND_RANDOM_FIELD_NUMBER: _ClassVar[int] - COACH_SAY_COUNT_MAX_FIELD_NUMBER: _ClassVar[int] - COACH_SAY_MSG_SIZE_FIELD_NUMBER: _ClassVar[int] - CLANG_WIN_SIZE_FIELD_NUMBER: _ClassVar[int] - CLANG_DEFINE_WIN_FIELD_NUMBER: _ClassVar[int] - CLANG_META_WIN_FIELD_NUMBER: _ClassVar[int] - CLANG_ADVICE_WIN_FIELD_NUMBER: _ClassVar[int] - CLANG_INFO_WIN_FIELD_NUMBER: _ClassVar[int] - CLANG_MESS_DELAY_FIELD_NUMBER: _ClassVar[int] - CLANG_MESS_PER_CYCLE_FIELD_NUMBER: _ClassVar[int] - HALF_TIME_FIELD_NUMBER: _ClassVar[int] - SIMULATOR_STEP_FIELD_NUMBER: _ClassVar[int] - SEND_STEP_FIELD_NUMBER: _ClassVar[int] - RECV_STEP_FIELD_NUMBER: _ClassVar[int] - SENSE_BODY_STEP_FIELD_NUMBER: _ClassVar[int] - LCM_STEP_FIELD_NUMBER: _ClassVar[int] - PLAYER_SAY_MSG_SIZE_FIELD_NUMBER: _ClassVar[int] - PLAYER_HEAR_MAX_FIELD_NUMBER: _ClassVar[int] - PLAYER_HEAR_INC_FIELD_NUMBER: _ClassVar[int] - PLAYER_HEAR_DECAY_FIELD_NUMBER: _ClassVar[int] - CATCH_BAN_CYCLE_FIELD_NUMBER: _ClassVar[int] - SLOW_DOWN_FACTOR_FIELD_NUMBER: _ClassVar[int] - USE_OFFSIDE_FIELD_NUMBER: _ClassVar[int] - KICKOFF_OFFSIDE_FIELD_NUMBER: _ClassVar[int] - OFFSIDE_KICK_MARGIN_FIELD_NUMBER: _ClassVar[int] - AUDIO_CUT_DIST_FIELD_NUMBER: _ClassVar[int] - DIST_QUANTIZE_STEP_FIELD_NUMBER: _ClassVar[int] - LANDMARK_DIST_QUANTIZE_STEP_FIELD_NUMBER: _ClassVar[int] - DIR_QUANTIZE_STEP_FIELD_NUMBER: _ClassVar[int] - DIST_QUANTIZE_STEP_L_FIELD_NUMBER: _ClassVar[int] - DIST_QUANTIZE_STEP_R_FIELD_NUMBER: _ClassVar[int] - LANDMARK_DIST_QUANTIZE_STEP_L_FIELD_NUMBER: _ClassVar[int] - LANDMARK_DIST_QUANTIZE_STEP_R_FIELD_NUMBER: _ClassVar[int] - DIR_QUANTIZE_STEP_L_FIELD_NUMBER: _ClassVar[int] - DIR_QUANTIZE_STEP_R_FIELD_NUMBER: _ClassVar[int] - COACH_MODE_FIELD_NUMBER: _ClassVar[int] - COACH_WITH_REFEREE_MODE_FIELD_NUMBER: _ClassVar[int] - USE_OLD_COACH_HEAR_FIELD_NUMBER: _ClassVar[int] - SLOWNESS_ON_TOP_FOR_LEFT_TEAM_FIELD_NUMBER: _ClassVar[int] - SLOWNESS_ON_TOP_FOR_RIGHT_TEAM_FIELD_NUMBER: _ClassVar[int] - START_GOAL_L_FIELD_NUMBER: _ClassVar[int] - START_GOAL_R_FIELD_NUMBER: _ClassVar[int] - FULLSTATE_L_FIELD_NUMBER: _ClassVar[int] - FULLSTATE_R_FIELD_NUMBER: _ClassVar[int] - DROP_BALL_TIME_FIELD_NUMBER: _ClassVar[int] - SYNCH_MODE_FIELD_NUMBER: _ClassVar[int] - SYNCH_OFFSET_FIELD_NUMBER: _ClassVar[int] - SYNCH_MICRO_SLEEP_FIELD_NUMBER: _ClassVar[int] - POINT_TO_BAN_FIELD_NUMBER: _ClassVar[int] - POINT_TO_DURATION_FIELD_NUMBER: _ClassVar[int] - PLAYER_PORT_FIELD_NUMBER: _ClassVar[int] - TRAINER_PORT_FIELD_NUMBER: _ClassVar[int] - ONLINE_COACH_PORT_FIELD_NUMBER: _ClassVar[int] - VERBOSE_MODE_FIELD_NUMBER: _ClassVar[int] - COACH_SEND_VI_STEP_FIELD_NUMBER: _ClassVar[int] - REPLAY_FILE_FIELD_NUMBER: _ClassVar[int] - LANDMARK_FILE_FIELD_NUMBER: _ClassVar[int] - SEND_COMMS_FIELD_NUMBER: _ClassVar[int] - TEXT_LOGGING_FIELD_NUMBER: _ClassVar[int] - GAME_LOGGING_FIELD_NUMBER: _ClassVar[int] - GAME_LOG_VERSION_FIELD_NUMBER: _ClassVar[int] - TEXT_LOG_DIR_FIELD_NUMBER: _ClassVar[int] - GAME_LOG_DIR_FIELD_NUMBER: _ClassVar[int] - TEXT_LOG_FIXED_NAME_FIELD_NUMBER: _ClassVar[int] - GAME_LOG_FIXED_NAME_FIELD_NUMBER: _ClassVar[int] - USE_TEXT_LOG_FIXED_FIELD_NUMBER: _ClassVar[int] - USE_GAME_LOG_FIXED_FIELD_NUMBER: _ClassVar[int] - USE_TEXT_LOG_DATED_FIELD_NUMBER: _ClassVar[int] - USE_GAME_LOG_DATED_FIELD_NUMBER: _ClassVar[int] - LOG_DATE_FORMAT_FIELD_NUMBER: _ClassVar[int] - LOG_TIMES_FIELD_NUMBER: _ClassVar[int] - RECORD_MESSAGE_FIELD_NUMBER: _ClassVar[int] - TEXT_LOG_COMPRESSION_FIELD_NUMBER: _ClassVar[int] - GAME_LOG_COMPRESSION_FIELD_NUMBER: _ClassVar[int] - USE_PROFILE_FIELD_NUMBER: _ClassVar[int] - TACKLE_DIST_FIELD_NUMBER: _ClassVar[int] - TACKLE_BACK_DIST_FIELD_NUMBER: _ClassVar[int] - TACKLE_WIDTH_FIELD_NUMBER: _ClassVar[int] - TACKLE_EXPONENT_FIELD_NUMBER: _ClassVar[int] - TACKLE_CYCLES_FIELD_NUMBER: _ClassVar[int] - TACKLE_POWER_RATE_FIELD_NUMBER: _ClassVar[int] - FREEFORM_WAIT_PERIOD_FIELD_NUMBER: _ClassVar[int] - FREEFORM_SEND_PERIOD_FIELD_NUMBER: _ClassVar[int] - FREE_KICK_FAULTS_FIELD_NUMBER: _ClassVar[int] - BACK_PASSES_FIELD_NUMBER: _ClassVar[int] - PROPER_GOAL_KICKS_FIELD_NUMBER: _ClassVar[int] - STOPPED_BALL_VEL_FIELD_NUMBER: _ClassVar[int] - MAX_GOAL_KICKS_FIELD_NUMBER: _ClassVar[int] - CLANG_DEL_WIN_FIELD_NUMBER: _ClassVar[int] - CLANG_RULE_WIN_FIELD_NUMBER: _ClassVar[int] - AUTO_MODE_FIELD_NUMBER: _ClassVar[int] - KICK_OFF_WAIT_FIELD_NUMBER: _ClassVar[int] - CONNECT_WAIT_FIELD_NUMBER: _ClassVar[int] - GAME_OVER_WAIT_FIELD_NUMBER: _ClassVar[int] - TEAM_L_START_FIELD_NUMBER: _ClassVar[int] - TEAM_R_START_FIELD_NUMBER: _ClassVar[int] - KEEPAWAY_MODE_FIELD_NUMBER: _ClassVar[int] - KEEPAWAY_LENGTH_FIELD_NUMBER: _ClassVar[int] - KEEPAWAY_WIDTH_FIELD_NUMBER: _ClassVar[int] - KEEPAWAY_LOGGING_FIELD_NUMBER: _ClassVar[int] - KEEPAWAY_LOG_DIR_FIELD_NUMBER: _ClassVar[int] - KEEPAWAY_LOG_FIXED_NAME_FIELD_NUMBER: _ClassVar[int] - KEEPAWAY_LOG_FIXED_FIELD_NUMBER: _ClassVar[int] - KEEPAWAY_LOG_DATED_FIELD_NUMBER: _ClassVar[int] - KEEPAWAY_START_FIELD_NUMBER: _ClassVar[int] - NR_NORMAL_HALFS_FIELD_NUMBER: _ClassVar[int] - NR_EXTRA_HALFS_FIELD_NUMBER: _ClassVar[int] - PENALTY_SHOOT_OUTS_FIELD_NUMBER: _ClassVar[int] - PEN_BEFORE_SETUP_WAIT_FIELD_NUMBER: _ClassVar[int] - PEN_SETUP_WAIT_FIELD_NUMBER: _ClassVar[int] - PEN_READY_WAIT_FIELD_NUMBER: _ClassVar[int] - PEN_TAKEN_WAIT_FIELD_NUMBER: _ClassVar[int] - PEN_NR_KICKS_FIELD_NUMBER: _ClassVar[int] - PEN_MAX_EXTRA_KICKS_FIELD_NUMBER: _ClassVar[int] - PEN_DIST_X_FIELD_NUMBER: _ClassVar[int] - PEN_RANDOM_WINNER_FIELD_NUMBER: _ClassVar[int] - PEN_ALLOW_MULT_KICKS_FIELD_NUMBER: _ClassVar[int] - PEN_MAX_GOALIE_DIST_X_FIELD_NUMBER: _ClassVar[int] - PEN_COACH_MOVES_PLAYERS_FIELD_NUMBER: _ClassVar[int] - MODULE_DIR_FIELD_NUMBER: _ClassVar[int] - BALL_STUCK_AREA_FIELD_NUMBER: _ClassVar[int] - COACH_MSG_FILE_FIELD_NUMBER: _ClassVar[int] - MAX_TACKLE_POWER_FIELD_NUMBER: _ClassVar[int] - MAX_BACK_TACKLE_POWER_FIELD_NUMBER: _ClassVar[int] - PLAYER_SPEED_MAX_MIN_FIELD_NUMBER: _ClassVar[int] - EXTRA_STAMINA_FIELD_NUMBER: _ClassVar[int] - SYNCH_SEE_OFFSET_FIELD_NUMBER: _ClassVar[int] - EXTRA_HALF_TIME_FIELD_NUMBER: _ClassVar[int] - STAMINA_CAPACITY_FIELD_NUMBER: _ClassVar[int] - MAX_DASH_ANGLE_FIELD_NUMBER: _ClassVar[int] - MIN_DASH_ANGLE_FIELD_NUMBER: _ClassVar[int] - DASH_ANGLE_STEP_FIELD_NUMBER: _ClassVar[int] - SIDE_DASH_RATE_FIELD_NUMBER: _ClassVar[int] - BACK_DASH_RATE_FIELD_NUMBER: _ClassVar[int] - MAX_DASH_POWER_FIELD_NUMBER: _ClassVar[int] - MIN_DASH_POWER_FIELD_NUMBER: _ClassVar[int] - TACKLE_RAND_FACTOR_FIELD_NUMBER: _ClassVar[int] - FOUL_DETECT_PROBABILITY_FIELD_NUMBER: _ClassVar[int] - FOUL_EXPONENT_FIELD_NUMBER: _ClassVar[int] - FOUL_CYCLES_FIELD_NUMBER: _ClassVar[int] - GOLDEN_GOAL_FIELD_NUMBER: _ClassVar[int] - RED_CARD_PROBABILITY_FIELD_NUMBER: _ClassVar[int] - ILLEGAL_DEFENSE_DURATION_FIELD_NUMBER: _ClassVar[int] - ILLEGAL_DEFENSE_NUMBER_FIELD_NUMBER: _ClassVar[int] - ILLEGAL_DEFENSE_DIST_X_FIELD_NUMBER: _ClassVar[int] - ILLEGAL_DEFENSE_WIDTH_FIELD_NUMBER: _ClassVar[int] - FIXED_TEAMNAME_L_FIELD_NUMBER: _ClassVar[int] - FIXED_TEAMNAME_R_FIELD_NUMBER: _ClassVar[int] - MAX_CATCH_ANGLE_FIELD_NUMBER: _ClassVar[int] - MIN_CATCH_ANGLE_FIELD_NUMBER: _ClassVar[int] - RANDOM_SEED_FIELD_NUMBER: _ClassVar[int] - LONG_KICK_POWER_FACTOR_FIELD_NUMBER: _ClassVar[int] - LONG_KICK_DELAY_FIELD_NUMBER: _ClassVar[int] - MAX_MONITORS_FIELD_NUMBER: _ClassVar[int] - CATCHABLE_AREA_FIELD_NUMBER: _ClassVar[int] - REAL_SPEED_MAX_FIELD_NUMBER: _ClassVar[int] - PITCH_HALF_LENGTH_FIELD_NUMBER: _ClassVar[int] - PITCH_HALF_WIDTH_FIELD_NUMBER: _ClassVar[int] - OUR_PENALTY_AREA_LINE_X_FIELD_NUMBER: _ClassVar[int] - THEIR_PENALTY_AREA_LINE_X_FIELD_NUMBER: _ClassVar[int] - PENALTY_AREA_HALF_WIDTH_FIELD_NUMBER: _ClassVar[int] - PENALTY_AREA_LENGTH_FIELD_NUMBER: _ClassVar[int] - GOAL_WIDTH_FIELD_NUMBER: _ClassVar[int] - agent_type: AgentType - inertia_moment: float - player_size: float - player_decay: float - player_rand: float - player_weight: float - player_speed_max: float - player_accel_max: float - stamina_max: float - stamina_inc_max: float - recover_init: float - recover_dec_thr: float - recover_min: float - recover_dec: float - effort_init: float - effort_dec_thr: float - effort_min: float - effort_dec: float - effort_inc_thr: float - effort_inc: float - kick_rand: float - team_actuator_noise: bool - player_rand_factor_l: float - player_rand_factor_r: float - kick_rand_factor_l: float - kick_rand_factor_r: float - ball_size: float - ball_decay: float - ball_rand: float - ball_weight: float - ball_speed_max: float - ball_accel_max: float - dash_power_rate: float - kick_power_rate: float - kickable_margin: float - control_radius: float - control_radius_width: float - max_power: float - min_power: float - max_moment: float - min_moment: float - max_neck_moment: float - min_neck_moment: float - max_neck_angle: float - min_neck_angle: float - visible_angle: float - visible_distance: float - wind_dir: float - wind_force: float - wind_angle: float - wind_rand: float - kickable_area: float - catch_area_l: float - catch_area_w: float - catch_probability: float - goalie_max_moves: int - corner_kick_margin: float - offside_active_area_size: float - wind_none: bool - use_wind_random: bool - coach_say_count_max: int - coach_say_msg_size: int - clang_win_size: int - clang_define_win: int - clang_meta_win: int - clang_advice_win: int - clang_info_win: int - clang_mess_delay: int - clang_mess_per_cycle: int - half_time: int - simulator_step: int - send_step: int - recv_step: int - sense_body_step: int - lcm_step: int - player_say_msg_size: int - player_hear_max: int - player_hear_inc: int - player_hear_decay: int - catch_ban_cycle: int - slow_down_factor: int - use_offside: bool - kickoff_offside: bool - offside_kick_margin: float - audio_cut_dist: float - dist_quantize_step: float - landmark_dist_quantize_step: float - dir_quantize_step: float - dist_quantize_step_l: float - dist_quantize_step_r: float - landmark_dist_quantize_step_l: float - landmark_dist_quantize_step_r: float - dir_quantize_step_l: float - dir_quantize_step_r: float - coach_mode: bool - coach_with_referee_mode: bool - use_old_coach_hear: bool - slowness_on_top_for_left_team: float - slowness_on_top_for_right_team: float - start_goal_l: int - start_goal_r: int - fullstate_l: bool - fullstate_r: bool - drop_ball_time: int - synch_mode: bool - synch_offset: int - synch_micro_sleep: int - point_to_ban: int - point_to_duration: int - player_port: int - trainer_port: int - online_coach_port: int - verbose_mode: bool - coach_send_vi_step: int - replay_file: str - landmark_file: str - send_comms: bool - text_logging: bool - game_logging: bool - game_log_version: int - text_log_dir: str - game_log_dir: str - text_log_fixed_name: str - game_log_fixed_name: str - use_text_log_fixed: bool - use_game_log_fixed: bool - use_text_log_dated: bool - use_game_log_dated: bool - log_date_format: str - log_times: bool - record_message: bool - text_log_compression: int - game_log_compression: int - use_profile: bool - tackle_dist: float - tackle_back_dist: float - tackle_width: float - tackle_exponent: float - tackle_cycles: int - tackle_power_rate: float - freeform_wait_period: int - freeform_send_period: int - free_kick_faults: bool - back_passes: bool - proper_goal_kicks: bool - stopped_ball_vel: float - max_goal_kicks: int - clang_del_win: int - clang_rule_win: int - auto_mode: bool - kick_off_wait: int - connect_wait: int - game_over_wait: int - team_l_start: str - team_r_start: str - keepaway_mode: bool - keepaway_length: float - keepaway_width: float - keepaway_logging: bool - keepaway_log_dir: str - keepaway_log_fixed_name: str - keepaway_log_fixed: bool - keepaway_log_dated: bool - keepaway_start: int - nr_normal_halfs: int - nr_extra_halfs: int - penalty_shoot_outs: bool - pen_before_setup_wait: int - pen_setup_wait: int - pen_ready_wait: int - pen_taken_wait: int - pen_nr_kicks: int - pen_max_extra_kicks: int - pen_dist_x: float - pen_random_winner: bool - pen_allow_mult_kicks: bool - pen_max_goalie_dist_x: float - pen_coach_moves_players: bool - module_dir: str - ball_stuck_area: float - coach_msg_file: str - max_tackle_power: float - max_back_tackle_power: float - player_speed_max_min: float - extra_stamina: float - synch_see_offset: int - extra_half_time: int - stamina_capacity: float - max_dash_angle: float - min_dash_angle: float - dash_angle_step: float - side_dash_rate: float - back_dash_rate: float - max_dash_power: float - min_dash_power: float - tackle_rand_factor: float - foul_detect_probability: float - foul_exponent: float - foul_cycles: int - golden_goal: bool - red_card_probability: float - illegal_defense_duration: int - illegal_defense_number: int - illegal_defense_dist_x: float - illegal_defense_width: float - fixed_teamname_l: str - fixed_teamname_r: str - max_catch_angle: float - min_catch_angle: float - random_seed: int - long_kick_power_factor: float - long_kick_delay: int - max_monitors: int - catchable_area: float - real_speed_max: float - pitch_half_length: float - pitch_half_width: float - our_penalty_area_line_x: float - their_penalty_area_line_x: float - penalty_area_half_width: float - penalty_area_length: float - goal_width: float - def __init__(self, agent_type: _Optional[_Union[AgentType, str]] = ..., inertia_moment: _Optional[float] = ..., player_size: _Optional[float] = ..., player_decay: _Optional[float] = ..., player_rand: _Optional[float] = ..., player_weight: _Optional[float] = ..., player_speed_max: _Optional[float] = ..., player_accel_max: _Optional[float] = ..., stamina_max: _Optional[float] = ..., stamina_inc_max: _Optional[float] = ..., recover_init: _Optional[float] = ..., recover_dec_thr: _Optional[float] = ..., recover_min: _Optional[float] = ..., recover_dec: _Optional[float] = ..., effort_init: _Optional[float] = ..., effort_dec_thr: _Optional[float] = ..., effort_min: _Optional[float] = ..., effort_dec: _Optional[float] = ..., effort_inc_thr: _Optional[float] = ..., effort_inc: _Optional[float] = ..., kick_rand: _Optional[float] = ..., team_actuator_noise: bool = ..., player_rand_factor_l: _Optional[float] = ..., player_rand_factor_r: _Optional[float] = ..., kick_rand_factor_l: _Optional[float] = ..., kick_rand_factor_r: _Optional[float] = ..., ball_size: _Optional[float] = ..., ball_decay: _Optional[float] = ..., ball_rand: _Optional[float] = ..., ball_weight: _Optional[float] = ..., ball_speed_max: _Optional[float] = ..., ball_accel_max: _Optional[float] = ..., dash_power_rate: _Optional[float] = ..., kick_power_rate: _Optional[float] = ..., kickable_margin: _Optional[float] = ..., control_radius: _Optional[float] = ..., control_radius_width: _Optional[float] = ..., max_power: _Optional[float] = ..., min_power: _Optional[float] = ..., max_moment: _Optional[float] = ..., min_moment: _Optional[float] = ..., max_neck_moment: _Optional[float] = ..., min_neck_moment: _Optional[float] = ..., max_neck_angle: _Optional[float] = ..., min_neck_angle: _Optional[float] = ..., visible_angle: _Optional[float] = ..., visible_distance: _Optional[float] = ..., wind_dir: _Optional[float] = ..., wind_force: _Optional[float] = ..., wind_angle: _Optional[float] = ..., wind_rand: _Optional[float] = ..., kickable_area: _Optional[float] = ..., catch_area_l: _Optional[float] = ..., catch_area_w: _Optional[float] = ..., catch_probability: _Optional[float] = ..., goalie_max_moves: _Optional[int] = ..., corner_kick_margin: _Optional[float] = ..., offside_active_area_size: _Optional[float] = ..., wind_none: bool = ..., use_wind_random: bool = ..., coach_say_count_max: _Optional[int] = ..., coach_say_msg_size: _Optional[int] = ..., clang_win_size: _Optional[int] = ..., clang_define_win: _Optional[int] = ..., clang_meta_win: _Optional[int] = ..., clang_advice_win: _Optional[int] = ..., clang_info_win: _Optional[int] = ..., clang_mess_delay: _Optional[int] = ..., clang_mess_per_cycle: _Optional[int] = ..., half_time: _Optional[int] = ..., simulator_step: _Optional[int] = ..., send_step: _Optional[int] = ..., recv_step: _Optional[int] = ..., sense_body_step: _Optional[int] = ..., lcm_step: _Optional[int] = ..., player_say_msg_size: _Optional[int] = ..., player_hear_max: _Optional[int] = ..., player_hear_inc: _Optional[int] = ..., player_hear_decay: _Optional[int] = ..., catch_ban_cycle: _Optional[int] = ..., slow_down_factor: _Optional[int] = ..., use_offside: bool = ..., kickoff_offside: bool = ..., offside_kick_margin: _Optional[float] = ..., audio_cut_dist: _Optional[float] = ..., dist_quantize_step: _Optional[float] = ..., landmark_dist_quantize_step: _Optional[float] = ..., dir_quantize_step: _Optional[float] = ..., dist_quantize_step_l: _Optional[float] = ..., dist_quantize_step_r: _Optional[float] = ..., landmark_dist_quantize_step_l: _Optional[float] = ..., landmark_dist_quantize_step_r: _Optional[float] = ..., dir_quantize_step_l: _Optional[float] = ..., dir_quantize_step_r: _Optional[float] = ..., coach_mode: bool = ..., coach_with_referee_mode: bool = ..., use_old_coach_hear: bool = ..., slowness_on_top_for_left_team: _Optional[float] = ..., slowness_on_top_for_right_team: _Optional[float] = ..., start_goal_l: _Optional[int] = ..., start_goal_r: _Optional[int] = ..., fullstate_l: bool = ..., fullstate_r: bool = ..., drop_ball_time: _Optional[int] = ..., synch_mode: bool = ..., synch_offset: _Optional[int] = ..., synch_micro_sleep: _Optional[int] = ..., point_to_ban: _Optional[int] = ..., point_to_duration: _Optional[int] = ..., player_port: _Optional[int] = ..., trainer_port: _Optional[int] = ..., online_coach_port: _Optional[int] = ..., verbose_mode: bool = ..., coach_send_vi_step: _Optional[int] = ..., replay_file: _Optional[str] = ..., landmark_file: _Optional[str] = ..., send_comms: bool = ..., text_logging: bool = ..., game_logging: bool = ..., game_log_version: _Optional[int] = ..., text_log_dir: _Optional[str] = ..., game_log_dir: _Optional[str] = ..., text_log_fixed_name: _Optional[str] = ..., game_log_fixed_name: _Optional[str] = ..., use_text_log_fixed: bool = ..., use_game_log_fixed: bool = ..., use_text_log_dated: bool = ..., use_game_log_dated: bool = ..., log_date_format: _Optional[str] = ..., log_times: bool = ..., record_message: bool = ..., text_log_compression: _Optional[int] = ..., game_log_compression: _Optional[int] = ..., use_profile: bool = ..., tackle_dist: _Optional[float] = ..., tackle_back_dist: _Optional[float] = ..., tackle_width: _Optional[float] = ..., tackle_exponent: _Optional[float] = ..., tackle_cycles: _Optional[int] = ..., tackle_power_rate: _Optional[float] = ..., freeform_wait_period: _Optional[int] = ..., freeform_send_period: _Optional[int] = ..., free_kick_faults: bool = ..., back_passes: bool = ..., proper_goal_kicks: bool = ..., stopped_ball_vel: _Optional[float] = ..., max_goal_kicks: _Optional[int] = ..., clang_del_win: _Optional[int] = ..., clang_rule_win: _Optional[int] = ..., auto_mode: bool = ..., kick_off_wait: _Optional[int] = ..., connect_wait: _Optional[int] = ..., game_over_wait: _Optional[int] = ..., team_l_start: _Optional[str] = ..., team_r_start: _Optional[str] = ..., keepaway_mode: bool = ..., keepaway_length: _Optional[float] = ..., keepaway_width: _Optional[float] = ..., keepaway_logging: bool = ..., keepaway_log_dir: _Optional[str] = ..., keepaway_log_fixed_name: _Optional[str] = ..., keepaway_log_fixed: bool = ..., keepaway_log_dated: bool = ..., keepaway_start: _Optional[int] = ..., nr_normal_halfs: _Optional[int] = ..., nr_extra_halfs: _Optional[int] = ..., penalty_shoot_outs: bool = ..., pen_before_setup_wait: _Optional[int] = ..., pen_setup_wait: _Optional[int] = ..., pen_ready_wait: _Optional[int] = ..., pen_taken_wait: _Optional[int] = ..., pen_nr_kicks: _Optional[int] = ..., pen_max_extra_kicks: _Optional[int] = ..., pen_dist_x: _Optional[float] = ..., pen_random_winner: bool = ..., pen_allow_mult_kicks: bool = ..., pen_max_goalie_dist_x: _Optional[float] = ..., pen_coach_moves_players: bool = ..., module_dir: _Optional[str] = ..., ball_stuck_area: _Optional[float] = ..., coach_msg_file: _Optional[str] = ..., max_tackle_power: _Optional[float] = ..., max_back_tackle_power: _Optional[float] = ..., player_speed_max_min: _Optional[float] = ..., extra_stamina: _Optional[float] = ..., synch_see_offset: _Optional[int] = ..., extra_half_time: _Optional[int] = ..., stamina_capacity: _Optional[float] = ..., max_dash_angle: _Optional[float] = ..., min_dash_angle: _Optional[float] = ..., dash_angle_step: _Optional[float] = ..., side_dash_rate: _Optional[float] = ..., back_dash_rate: _Optional[float] = ..., max_dash_power: _Optional[float] = ..., min_dash_power: _Optional[float] = ..., tackle_rand_factor: _Optional[float] = ..., foul_detect_probability: _Optional[float] = ..., foul_exponent: _Optional[float] = ..., foul_cycles: _Optional[int] = ..., golden_goal: bool = ..., red_card_probability: _Optional[float] = ..., illegal_defense_duration: _Optional[int] = ..., illegal_defense_number: _Optional[int] = ..., illegal_defense_dist_x: _Optional[float] = ..., illegal_defense_width: _Optional[float] = ..., fixed_teamname_l: _Optional[str] = ..., fixed_teamname_r: _Optional[str] = ..., max_catch_angle: _Optional[float] = ..., min_catch_angle: _Optional[float] = ..., random_seed: _Optional[int] = ..., long_kick_power_factor: _Optional[float] = ..., long_kick_delay: _Optional[int] = ..., max_monitors: _Optional[int] = ..., catchable_area: _Optional[float] = ..., real_speed_max: _Optional[float] = ..., pitch_half_length: _Optional[float] = ..., pitch_half_width: _Optional[float] = ..., our_penalty_area_line_x: _Optional[float] = ..., their_penalty_area_line_x: _Optional[float] = ..., penalty_area_half_width: _Optional[float] = ..., penalty_area_length: _Optional[float] = ..., goal_width: _Optional[float] = ...) -> None: ... - -class PlayerParam(_message.Message): - __slots__ = ("agent_type", "player_types", "subs_max", "pt_max", "allow_mult_default_type", "player_speed_max_delta_min", "player_speed_max_delta_max", "stamina_inc_max_delta_factor", "player_decay_delta_min", "player_decay_delta_max", "inertia_moment_delta_factor", "dash_power_rate_delta_min", "dash_power_rate_delta_max", "player_size_delta_factor", "kickable_margin_delta_min", "kickable_margin_delta_max", "kick_rand_delta_factor", "extra_stamina_delta_min", "extra_stamina_delta_max", "effort_max_delta_factor", "effort_min_delta_factor", "random_seed", "new_dash_power_rate_delta_min", "new_dash_power_rate_delta_max", "new_stamina_inc_max_delta_factor", "kick_power_rate_delta_min", "kick_power_rate_delta_max", "foul_detect_probability_delta_factor", "catchable_area_l_stretch_min", "catchable_area_l_stretch_max") - AGENT_TYPE_FIELD_NUMBER: _ClassVar[int] - PLAYER_TYPES_FIELD_NUMBER: _ClassVar[int] - SUBS_MAX_FIELD_NUMBER: _ClassVar[int] - PT_MAX_FIELD_NUMBER: _ClassVar[int] - ALLOW_MULT_DEFAULT_TYPE_FIELD_NUMBER: _ClassVar[int] - PLAYER_SPEED_MAX_DELTA_MIN_FIELD_NUMBER: _ClassVar[int] - PLAYER_SPEED_MAX_DELTA_MAX_FIELD_NUMBER: _ClassVar[int] - STAMINA_INC_MAX_DELTA_FACTOR_FIELD_NUMBER: _ClassVar[int] - PLAYER_DECAY_DELTA_MIN_FIELD_NUMBER: _ClassVar[int] - PLAYER_DECAY_DELTA_MAX_FIELD_NUMBER: _ClassVar[int] - INERTIA_MOMENT_DELTA_FACTOR_FIELD_NUMBER: _ClassVar[int] - DASH_POWER_RATE_DELTA_MIN_FIELD_NUMBER: _ClassVar[int] - DASH_POWER_RATE_DELTA_MAX_FIELD_NUMBER: _ClassVar[int] - PLAYER_SIZE_DELTA_FACTOR_FIELD_NUMBER: _ClassVar[int] - KICKABLE_MARGIN_DELTA_MIN_FIELD_NUMBER: _ClassVar[int] - KICKABLE_MARGIN_DELTA_MAX_FIELD_NUMBER: _ClassVar[int] - KICK_RAND_DELTA_FACTOR_FIELD_NUMBER: _ClassVar[int] - EXTRA_STAMINA_DELTA_MIN_FIELD_NUMBER: _ClassVar[int] - EXTRA_STAMINA_DELTA_MAX_FIELD_NUMBER: _ClassVar[int] - EFFORT_MAX_DELTA_FACTOR_FIELD_NUMBER: _ClassVar[int] - EFFORT_MIN_DELTA_FACTOR_FIELD_NUMBER: _ClassVar[int] - RANDOM_SEED_FIELD_NUMBER: _ClassVar[int] - NEW_DASH_POWER_RATE_DELTA_MIN_FIELD_NUMBER: _ClassVar[int] - NEW_DASH_POWER_RATE_DELTA_MAX_FIELD_NUMBER: _ClassVar[int] - NEW_STAMINA_INC_MAX_DELTA_FACTOR_FIELD_NUMBER: _ClassVar[int] - KICK_POWER_RATE_DELTA_MIN_FIELD_NUMBER: _ClassVar[int] - KICK_POWER_RATE_DELTA_MAX_FIELD_NUMBER: _ClassVar[int] - FOUL_DETECT_PROBABILITY_DELTA_FACTOR_FIELD_NUMBER: _ClassVar[int] - CATCHABLE_AREA_L_STRETCH_MIN_FIELD_NUMBER: _ClassVar[int] - CATCHABLE_AREA_L_STRETCH_MAX_FIELD_NUMBER: _ClassVar[int] - agent_type: AgentType - player_types: int - subs_max: int - pt_max: int - allow_mult_default_type: bool - player_speed_max_delta_min: float - player_speed_max_delta_max: float - stamina_inc_max_delta_factor: float - player_decay_delta_min: float - player_decay_delta_max: float - inertia_moment_delta_factor: float - dash_power_rate_delta_min: float - dash_power_rate_delta_max: float - player_size_delta_factor: float - kickable_margin_delta_min: float - kickable_margin_delta_max: float - kick_rand_delta_factor: float - extra_stamina_delta_min: float - extra_stamina_delta_max: float - effort_max_delta_factor: float - effort_min_delta_factor: float - random_seed: int - new_dash_power_rate_delta_min: float - new_dash_power_rate_delta_max: float - new_stamina_inc_max_delta_factor: float - kick_power_rate_delta_min: float - kick_power_rate_delta_max: float - foul_detect_probability_delta_factor: float - catchable_area_l_stretch_min: float - catchable_area_l_stretch_max: float - def __init__(self, agent_type: _Optional[_Union[AgentType, str]] = ..., player_types: _Optional[int] = ..., subs_max: _Optional[int] = ..., pt_max: _Optional[int] = ..., allow_mult_default_type: bool = ..., player_speed_max_delta_min: _Optional[float] = ..., player_speed_max_delta_max: _Optional[float] = ..., stamina_inc_max_delta_factor: _Optional[float] = ..., player_decay_delta_min: _Optional[float] = ..., player_decay_delta_max: _Optional[float] = ..., inertia_moment_delta_factor: _Optional[float] = ..., dash_power_rate_delta_min: _Optional[float] = ..., dash_power_rate_delta_max: _Optional[float] = ..., player_size_delta_factor: _Optional[float] = ..., kickable_margin_delta_min: _Optional[float] = ..., kickable_margin_delta_max: _Optional[float] = ..., kick_rand_delta_factor: _Optional[float] = ..., extra_stamina_delta_min: _Optional[float] = ..., extra_stamina_delta_max: _Optional[float] = ..., effort_max_delta_factor: _Optional[float] = ..., effort_min_delta_factor: _Optional[float] = ..., random_seed: _Optional[int] = ..., new_dash_power_rate_delta_min: _Optional[float] = ..., new_dash_power_rate_delta_max: _Optional[float] = ..., new_stamina_inc_max_delta_factor: _Optional[float] = ..., kick_power_rate_delta_min: _Optional[float] = ..., kick_power_rate_delta_max: _Optional[float] = ..., foul_detect_probability_delta_factor: _Optional[float] = ..., catchable_area_l_stretch_min: _Optional[float] = ..., catchable_area_l_stretch_max: _Optional[float] = ...) -> None: ... - -class PlayerType(_message.Message): - __slots__ = ("agent_type", "id", "stamina_inc_max", "player_decay", "inertia_moment", "dash_power_rate", "player_size", "kickable_margin", "kick_rand", "extra_stamina", "effort_max", "effort_min", "kick_power_rate", "foul_detect_probability", "catchable_area_l_stretch", "unum_far_length", "unum_too_far_length", "team_far_length", "team_too_far_length", "player_max_observation_length", "ball_vel_far_length", "ball_vel_too_far_length", "ball_max_observation_length", "flag_chg_far_length", "flag_chg_too_far_length", "flag_max_observation_length", "kickable_area", "reliable_catchable_dist", "max_catchable_dist", "real_speed_max", "player_speed_max2", "real_speed_max2", "cycles_to_reach_max_speed", "player_speed_max") - AGENT_TYPE_FIELD_NUMBER: _ClassVar[int] - ID_FIELD_NUMBER: _ClassVar[int] - STAMINA_INC_MAX_FIELD_NUMBER: _ClassVar[int] - PLAYER_DECAY_FIELD_NUMBER: _ClassVar[int] - INERTIA_MOMENT_FIELD_NUMBER: _ClassVar[int] - DASH_POWER_RATE_FIELD_NUMBER: _ClassVar[int] - PLAYER_SIZE_FIELD_NUMBER: _ClassVar[int] - KICKABLE_MARGIN_FIELD_NUMBER: _ClassVar[int] - KICK_RAND_FIELD_NUMBER: _ClassVar[int] - EXTRA_STAMINA_FIELD_NUMBER: _ClassVar[int] - EFFORT_MAX_FIELD_NUMBER: _ClassVar[int] - EFFORT_MIN_FIELD_NUMBER: _ClassVar[int] - KICK_POWER_RATE_FIELD_NUMBER: _ClassVar[int] - FOUL_DETECT_PROBABILITY_FIELD_NUMBER: _ClassVar[int] - CATCHABLE_AREA_L_STRETCH_FIELD_NUMBER: _ClassVar[int] - UNUM_FAR_LENGTH_FIELD_NUMBER: _ClassVar[int] - UNUM_TOO_FAR_LENGTH_FIELD_NUMBER: _ClassVar[int] - TEAM_FAR_LENGTH_FIELD_NUMBER: _ClassVar[int] - TEAM_TOO_FAR_LENGTH_FIELD_NUMBER: _ClassVar[int] - PLAYER_MAX_OBSERVATION_LENGTH_FIELD_NUMBER: _ClassVar[int] - BALL_VEL_FAR_LENGTH_FIELD_NUMBER: _ClassVar[int] - BALL_VEL_TOO_FAR_LENGTH_FIELD_NUMBER: _ClassVar[int] - BALL_MAX_OBSERVATION_LENGTH_FIELD_NUMBER: _ClassVar[int] - FLAG_CHG_FAR_LENGTH_FIELD_NUMBER: _ClassVar[int] - FLAG_CHG_TOO_FAR_LENGTH_FIELD_NUMBER: _ClassVar[int] - FLAG_MAX_OBSERVATION_LENGTH_FIELD_NUMBER: _ClassVar[int] - KICKABLE_AREA_FIELD_NUMBER: _ClassVar[int] - RELIABLE_CATCHABLE_DIST_FIELD_NUMBER: _ClassVar[int] - MAX_CATCHABLE_DIST_FIELD_NUMBER: _ClassVar[int] - REAL_SPEED_MAX_FIELD_NUMBER: _ClassVar[int] - PLAYER_SPEED_MAX2_FIELD_NUMBER: _ClassVar[int] - REAL_SPEED_MAX2_FIELD_NUMBER: _ClassVar[int] - CYCLES_TO_REACH_MAX_SPEED_FIELD_NUMBER: _ClassVar[int] - PLAYER_SPEED_MAX_FIELD_NUMBER: _ClassVar[int] - agent_type: AgentType - id: int - stamina_inc_max: float - player_decay: float - inertia_moment: float - dash_power_rate: float - player_size: float - kickable_margin: float - kick_rand: float - extra_stamina: float - effort_max: float - effort_min: float - kick_power_rate: float - foul_detect_probability: float - catchable_area_l_stretch: float - unum_far_length: float - unum_too_far_length: float - team_far_length: float - team_too_far_length: float - player_max_observation_length: float - ball_vel_far_length: float - ball_vel_too_far_length: float - ball_max_observation_length: float - flag_chg_far_length: float - flag_chg_too_far_length: float - flag_max_observation_length: float - kickable_area: float - reliable_catchable_dist: float - max_catchable_dist: float - real_speed_max: float - player_speed_max2: float - real_speed_max2: float - cycles_to_reach_max_speed: int - player_speed_max: float - def __init__(self, agent_type: _Optional[_Union[AgentType, str]] = ..., id: _Optional[int] = ..., stamina_inc_max: _Optional[float] = ..., player_decay: _Optional[float] = ..., inertia_moment: _Optional[float] = ..., dash_power_rate: _Optional[float] = ..., player_size: _Optional[float] = ..., kickable_margin: _Optional[float] = ..., kick_rand: _Optional[float] = ..., extra_stamina: _Optional[float] = ..., effort_max: _Optional[float] = ..., effort_min: _Optional[float] = ..., kick_power_rate: _Optional[float] = ..., foul_detect_probability: _Optional[float] = ..., catchable_area_l_stretch: _Optional[float] = ..., unum_far_length: _Optional[float] = ..., unum_too_far_length: _Optional[float] = ..., team_far_length: _Optional[float] = ..., team_too_far_length: _Optional[float] = ..., player_max_observation_length: _Optional[float] = ..., ball_vel_far_length: _Optional[float] = ..., ball_vel_too_far_length: _Optional[float] = ..., ball_max_observation_length: _Optional[float] = ..., flag_chg_far_length: _Optional[float] = ..., flag_chg_too_far_length: _Optional[float] = ..., flag_max_observation_length: _Optional[float] = ..., kickable_area: _Optional[float] = ..., reliable_catchable_dist: _Optional[float] = ..., max_catchable_dist: _Optional[float] = ..., real_speed_max: _Optional[float] = ..., player_speed_max2: _Optional[float] = ..., real_speed_max2: _Optional[float] = ..., cycles_to_reach_max_speed: _Optional[int] = ..., player_speed_max: _Optional[float] = ...) -> None: ... - -class Empty(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class InitMessageFromServer(_message.Message): - __slots__ = () - def __init__(self) -> None: ... diff --git a/service_pb2_grpc.py b/service_pb2_grpc.py deleted file mode 100644 index be0b1ca..0000000 --- a/service_pb2_grpc.py +++ /dev/null @@ -1,330 +0,0 @@ -# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! -"""Client and server classes corresponding to protobuf-defined services.""" -import grpc - -import service_pb2 as service__pb2 - - -class GameStub(object): - """Missing associated documentation comment in .proto file.""" - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.GetPlayerActions = channel.unary_unary( - '/protos.Game/GetPlayerActions', - request_serializer=service__pb2.State.SerializeToString, - response_deserializer=service__pb2.PlayerActions.FromString, - ) - self.GetCoachActions = channel.unary_unary( - '/protos.Game/GetCoachActions', - request_serializer=service__pb2.State.SerializeToString, - response_deserializer=service__pb2.CoachActions.FromString, - ) - self.GetTrainerActions = channel.unary_unary( - '/protos.Game/GetTrainerActions', - request_serializer=service__pb2.State.SerializeToString, - response_deserializer=service__pb2.TrainerActions.FromString, - ) - self.SendInitMessage = channel.unary_unary( - '/protos.Game/SendInitMessage', - request_serializer=service__pb2.InitMessage.SerializeToString, - response_deserializer=service__pb2.Empty.FromString, - ) - self.SendServerParams = channel.unary_unary( - '/protos.Game/SendServerParams', - request_serializer=service__pb2.ServerParam.SerializeToString, - response_deserializer=service__pb2.Empty.FromString, - ) - self.SendPlayerParams = channel.unary_unary( - '/protos.Game/SendPlayerParams', - request_serializer=service__pb2.PlayerParam.SerializeToString, - response_deserializer=service__pb2.Empty.FromString, - ) - self.SendPlayerType = channel.unary_unary( - '/protos.Game/SendPlayerType', - request_serializer=service__pb2.PlayerType.SerializeToString, - response_deserializer=service__pb2.Empty.FromString, - ) - self.GetInitMessage = channel.unary_unary( - '/protos.Game/GetInitMessage', - request_serializer=service__pb2.Empty.SerializeToString, - response_deserializer=service__pb2.InitMessageFromServer.FromString, - ) - self.SendByeCommand = channel.unary_unary( - '/protos.Game/SendByeCommand', - request_serializer=service__pb2.Empty.SerializeToString, - response_deserializer=service__pb2.Empty.FromString, - ) - - -class GameServicer(object): - """Missing associated documentation comment in .proto file.""" - - def GetPlayerActions(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def GetCoachActions(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def GetTrainerActions(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def SendInitMessage(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def SendServerParams(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def SendPlayerParams(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def SendPlayerType(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def GetInitMessage(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def SendByeCommand(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_GameServicer_to_server(servicer, server): - rpc_method_handlers = { - 'GetPlayerActions': grpc.unary_unary_rpc_method_handler( - servicer.GetPlayerActions, - request_deserializer=service__pb2.State.FromString, - response_serializer=service__pb2.PlayerActions.SerializeToString, - ), - 'GetCoachActions': grpc.unary_unary_rpc_method_handler( - servicer.GetCoachActions, - request_deserializer=service__pb2.State.FromString, - response_serializer=service__pb2.CoachActions.SerializeToString, - ), - 'GetTrainerActions': grpc.unary_unary_rpc_method_handler( - servicer.GetTrainerActions, - request_deserializer=service__pb2.State.FromString, - response_serializer=service__pb2.TrainerActions.SerializeToString, - ), - 'SendInitMessage': grpc.unary_unary_rpc_method_handler( - servicer.SendInitMessage, - request_deserializer=service__pb2.InitMessage.FromString, - response_serializer=service__pb2.Empty.SerializeToString, - ), - 'SendServerParams': grpc.unary_unary_rpc_method_handler( - servicer.SendServerParams, - request_deserializer=service__pb2.ServerParam.FromString, - response_serializer=service__pb2.Empty.SerializeToString, - ), - 'SendPlayerParams': grpc.unary_unary_rpc_method_handler( - servicer.SendPlayerParams, - request_deserializer=service__pb2.PlayerParam.FromString, - response_serializer=service__pb2.Empty.SerializeToString, - ), - 'SendPlayerType': grpc.unary_unary_rpc_method_handler( - servicer.SendPlayerType, - request_deserializer=service__pb2.PlayerType.FromString, - response_serializer=service__pb2.Empty.SerializeToString, - ), - 'GetInitMessage': grpc.unary_unary_rpc_method_handler( - servicer.GetInitMessage, - request_deserializer=service__pb2.Empty.FromString, - response_serializer=service__pb2.InitMessageFromServer.SerializeToString, - ), - 'SendByeCommand': grpc.unary_unary_rpc_method_handler( - servicer.SendByeCommand, - request_deserializer=service__pb2.Empty.FromString, - response_serializer=service__pb2.Empty.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'protos.Game', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) - - - # This class is part of an EXPERIMENTAL API. -class Game(object): - """Missing associated documentation comment in .proto file.""" - - @staticmethod - def GetPlayerActions(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/protos.Game/GetPlayerActions', - service__pb2.State.SerializeToString, - service__pb2.PlayerActions.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) - - @staticmethod - def GetCoachActions(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/protos.Game/GetCoachActions', - service__pb2.State.SerializeToString, - service__pb2.CoachActions.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) - - @staticmethod - def GetTrainerActions(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/protos.Game/GetTrainerActions', - service__pb2.State.SerializeToString, - service__pb2.TrainerActions.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) - - @staticmethod - def SendInitMessage(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/protos.Game/SendInitMessage', - service__pb2.InitMessage.SerializeToString, - service__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) - - @staticmethod - def SendServerParams(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/protos.Game/SendServerParams', - service__pb2.ServerParam.SerializeToString, - service__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) - - @staticmethod - def SendPlayerParams(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/protos.Game/SendPlayerParams', - service__pb2.PlayerParam.SerializeToString, - service__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) - - @staticmethod - def SendPlayerType(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/protos.Game/SendPlayerType', - service__pb2.PlayerType.SerializeToString, - service__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) - - @staticmethod - def GetInitMessage(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/protos.Game/GetInitMessage', - service__pb2.Empty.SerializeToString, - service__pb2.InitMessageFromServer.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) - - @staticmethod - def SendByeCommand(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/protos.Game/SendByeCommand', - service__pb2.Empty.SerializeToString, - service__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/soccer/Game-remote b/soccer/Game-remote new file mode 100755 index 0000000..5e678a1 --- /dev/null +++ b/soccer/Game-remote @@ -0,0 +1,173 @@ +#!/usr/bin/env python +# +# Autogenerated by Thrift Compiler (0.16.0) +# +# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING +# +# options string: py +# + +import sys +import pprint +if sys.version_info[0] > 2: + from urllib.parse import urlparse +else: + from urlparse import urlparse +from thrift.transport import TTransport, TSocket, TSSLSocket, THttpClient +from thrift.protocol.TBinaryProtocol import TBinaryProtocol + +from soccer import Game +from soccer.ttypes import * + +if len(sys.argv) <= 1 or sys.argv[1] == '--help': + print('') + print('Usage: ' + sys.argv[0] + ' [-h host[:port]] [-u url] [-f[ramed]] [-s[sl]] [-novalidate] [-ca_certs certs] [-keyfile keyfile] [-certfile certfile] function [arg1 [arg2...]]') + print('') + print('Functions:') + print(' PlayerActions GetPlayerActions(State state)') + print(' CoachActions GetCoachActions(State state)') + print(' TrainerActions GetTrainerActions(State state)') + print(' void SendInitMessage(InitMessage init_message)') + print(' void SendServerParams(ServerParam server_param)') + print(' void SendPlayerParams(PlayerParam player_param)') + print(' void SendPlayerType(PlayerType player_type)') + print(' InitMessageFromServer GetInitMessage(Empty empty)') + print(' void SendByeCommand(Empty empty)') + print('') + sys.exit(0) + +pp = pprint.PrettyPrinter(indent=2) +host = 'localhost' +port = 9090 +uri = '' +framed = False +ssl = False +validate = True +ca_certs = None +keyfile = None +certfile = None +http = False +argi = 1 + +if sys.argv[argi] == '-h': + parts = sys.argv[argi + 1].split(':') + host = parts[0] + if len(parts) > 1: + port = int(parts[1]) + argi += 2 + +if sys.argv[argi] == '-u': + url = urlparse(sys.argv[argi + 1]) + parts = url[1].split(':') + host = parts[0] + if len(parts) > 1: + port = int(parts[1]) + else: + port = 80 + uri = url[2] + if url[4]: + uri += '?%s' % url[4] + http = True + argi += 2 + +if sys.argv[argi] == '-f' or sys.argv[argi] == '-framed': + framed = True + argi += 1 + +if sys.argv[argi] == '-s' or sys.argv[argi] == '-ssl': + ssl = True + argi += 1 + +if sys.argv[argi] == '-novalidate': + validate = False + argi += 1 + +if sys.argv[argi] == '-ca_certs': + ca_certs = sys.argv[argi+1] + argi += 2 + +if sys.argv[argi] == '-keyfile': + keyfile = sys.argv[argi+1] + argi += 2 + +if sys.argv[argi] == '-certfile': + certfile = sys.argv[argi+1] + argi += 2 + +cmd = sys.argv[argi] +args = sys.argv[argi + 1:] + +if http: + transport = THttpClient.THttpClient(host, port, uri) +else: + if ssl: + socket = TSSLSocket.TSSLSocket(host, port, validate=validate, ca_certs=ca_certs, keyfile=keyfile, certfile=certfile) + else: + socket = TSocket.TSocket(host, port) + if framed: + transport = TTransport.TFramedTransport(socket) + else: + transport = TTransport.TBufferedTransport(socket) +protocol = TBinaryProtocol(transport) +client = Game.Client(protocol) +transport.open() + +if cmd == 'GetPlayerActions': + if len(args) != 1: + print('GetPlayerActions requires 1 args') + sys.exit(1) + pp.pprint(client.GetPlayerActions(eval(args[0]),)) + +elif cmd == 'GetCoachActions': + if len(args) != 1: + print('GetCoachActions requires 1 args') + sys.exit(1) + pp.pprint(client.GetCoachActions(eval(args[0]),)) + +elif cmd == 'GetTrainerActions': + if len(args) != 1: + print('GetTrainerActions requires 1 args') + sys.exit(1) + pp.pprint(client.GetTrainerActions(eval(args[0]),)) + +elif cmd == 'SendInitMessage': + if len(args) != 1: + print('SendInitMessage requires 1 args') + sys.exit(1) + pp.pprint(client.SendInitMessage(eval(args[0]),)) + +elif cmd == 'SendServerParams': + if len(args) != 1: + print('SendServerParams requires 1 args') + sys.exit(1) + pp.pprint(client.SendServerParams(eval(args[0]),)) + +elif cmd == 'SendPlayerParams': + if len(args) != 1: + print('SendPlayerParams requires 1 args') + sys.exit(1) + pp.pprint(client.SendPlayerParams(eval(args[0]),)) + +elif cmd == 'SendPlayerType': + if len(args) != 1: + print('SendPlayerType requires 1 args') + sys.exit(1) + pp.pprint(client.SendPlayerType(eval(args[0]),)) + +elif cmd == 'GetInitMessage': + if len(args) != 1: + print('GetInitMessage requires 1 args') + sys.exit(1) + pp.pprint(client.GetInitMessage(eval(args[0]),)) + +elif cmd == 'SendByeCommand': + if len(args) != 1: + print('SendByeCommand requires 1 args') + sys.exit(1) + pp.pprint(client.SendByeCommand(eval(args[0]),)) + +else: + print('Unrecognized method %s' % cmd) + sys.exit(1) + +transport.close() diff --git a/soccer/Game.py b/soccer/Game.py new file mode 100644 index 0000000..75467da --- /dev/null +++ b/soccer/Game.py @@ -0,0 +1,1655 @@ +# +# Autogenerated by Thrift Compiler (0.16.0) +# +# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING +# +# options string: py +# + +from thrift.Thrift import TType, TMessageType, TFrozenDict, TException, TApplicationException +from thrift.protocol.TProtocol import TProtocolException +from thrift.TRecursive import fix_spec + +import sys +import logging +from .ttypes import * +from thrift.Thrift import TProcessor +from thrift.transport import TTransport +all_structs = [] + + +class Iface(object): + def GetPlayerActions(self, state): + """ + Parameters: + - state + + """ + pass + + def GetCoachActions(self, state): + """ + Parameters: + - state + + """ + pass + + def GetTrainerActions(self, state): + """ + Parameters: + - state + + """ + pass + + def SendInitMessage(self, init_message): + """ + Parameters: + - init_message + + """ + pass + + def SendServerParams(self, server_param): + """ + Parameters: + - server_param + + """ + pass + + def SendPlayerParams(self, player_param): + """ + Parameters: + - player_param + + """ + pass + + def SendPlayerType(self, player_type): + """ + Parameters: + - player_type + + """ + pass + + def GetInitMessage(self, empty): + """ + Parameters: + - empty + + """ + pass + + def SendByeCommand(self, empty): + """ + Parameters: + - empty + + """ + pass + + +class Client(Iface): + def __init__(self, iprot, oprot=None): + self._iprot = self._oprot = iprot + if oprot is not None: + self._oprot = oprot + self._seqid = 0 + + def GetPlayerActions(self, state): + """ + Parameters: + - state + + """ + self.send_GetPlayerActions(state) + return self.recv_GetPlayerActions() + + def send_GetPlayerActions(self, state): + self._oprot.writeMessageBegin('GetPlayerActions', TMessageType.CALL, self._seqid) + args = GetPlayerActions_args() + args.state = state + args.write(self._oprot) + self._oprot.writeMessageEnd() + self._oprot.trans.flush() + + def recv_GetPlayerActions(self): + iprot = self._iprot + (fname, mtype, rseqid) = iprot.readMessageBegin() + if mtype == TMessageType.EXCEPTION: + x = TApplicationException() + x.read(iprot) + iprot.readMessageEnd() + raise x + result = GetPlayerActions_result() + result.read(iprot) + iprot.readMessageEnd() + if result.success is not None: + return result.success + raise TApplicationException(TApplicationException.MISSING_RESULT, "GetPlayerActions failed: unknown result") + + def GetCoachActions(self, state): + """ + Parameters: + - state + + """ + self.send_GetCoachActions(state) + return self.recv_GetCoachActions() + + def send_GetCoachActions(self, state): + self._oprot.writeMessageBegin('GetCoachActions', TMessageType.CALL, self._seqid) + args = GetCoachActions_args() + args.state = state + args.write(self._oprot) + self._oprot.writeMessageEnd() + self._oprot.trans.flush() + + def recv_GetCoachActions(self): + iprot = self._iprot + (fname, mtype, rseqid) = iprot.readMessageBegin() + if mtype == TMessageType.EXCEPTION: + x = TApplicationException() + x.read(iprot) + iprot.readMessageEnd() + raise x + result = GetCoachActions_result() + result.read(iprot) + iprot.readMessageEnd() + if result.success is not None: + return result.success + raise TApplicationException(TApplicationException.MISSING_RESULT, "GetCoachActions failed: unknown result") + + def GetTrainerActions(self, state): + """ + Parameters: + - state + + """ + self.send_GetTrainerActions(state) + return self.recv_GetTrainerActions() + + def send_GetTrainerActions(self, state): + self._oprot.writeMessageBegin('GetTrainerActions', TMessageType.CALL, self._seqid) + args = GetTrainerActions_args() + args.state = state + args.write(self._oprot) + self._oprot.writeMessageEnd() + self._oprot.trans.flush() + + def recv_GetTrainerActions(self): + iprot = self._iprot + (fname, mtype, rseqid) = iprot.readMessageBegin() + if mtype == TMessageType.EXCEPTION: + x = TApplicationException() + x.read(iprot) + iprot.readMessageEnd() + raise x + result = GetTrainerActions_result() + result.read(iprot) + iprot.readMessageEnd() + if result.success is not None: + return result.success + raise TApplicationException(TApplicationException.MISSING_RESULT, "GetTrainerActions failed: unknown result") + + def SendInitMessage(self, init_message): + """ + Parameters: + - init_message + + """ + self.send_SendInitMessage(init_message) + self.recv_SendInitMessage() + + def send_SendInitMessage(self, init_message): + self._oprot.writeMessageBegin('SendInitMessage', TMessageType.CALL, self._seqid) + args = SendInitMessage_args() + args.init_message = init_message + args.write(self._oprot) + self._oprot.writeMessageEnd() + self._oprot.trans.flush() + + def recv_SendInitMessage(self): + iprot = self._iprot + (fname, mtype, rseqid) = iprot.readMessageBegin() + if mtype == TMessageType.EXCEPTION: + x = TApplicationException() + x.read(iprot) + iprot.readMessageEnd() + raise x + result = SendInitMessage_result() + result.read(iprot) + iprot.readMessageEnd() + return + + def SendServerParams(self, server_param): + """ + Parameters: + - server_param + + """ + self.send_SendServerParams(server_param) + self.recv_SendServerParams() + + def send_SendServerParams(self, server_param): + self._oprot.writeMessageBegin('SendServerParams', TMessageType.CALL, self._seqid) + args = SendServerParams_args() + args.server_param = server_param + args.write(self._oprot) + self._oprot.writeMessageEnd() + self._oprot.trans.flush() + + def recv_SendServerParams(self): + iprot = self._iprot + (fname, mtype, rseqid) = iprot.readMessageBegin() + if mtype == TMessageType.EXCEPTION: + x = TApplicationException() + x.read(iprot) + iprot.readMessageEnd() + raise x + result = SendServerParams_result() + result.read(iprot) + iprot.readMessageEnd() + return + + def SendPlayerParams(self, player_param): + """ + Parameters: + - player_param + + """ + self.send_SendPlayerParams(player_param) + self.recv_SendPlayerParams() + + def send_SendPlayerParams(self, player_param): + self._oprot.writeMessageBegin('SendPlayerParams', TMessageType.CALL, self._seqid) + args = SendPlayerParams_args() + args.player_param = player_param + args.write(self._oprot) + self._oprot.writeMessageEnd() + self._oprot.trans.flush() + + def recv_SendPlayerParams(self): + iprot = self._iprot + (fname, mtype, rseqid) = iprot.readMessageBegin() + if mtype == TMessageType.EXCEPTION: + x = TApplicationException() + x.read(iprot) + iprot.readMessageEnd() + raise x + result = SendPlayerParams_result() + result.read(iprot) + iprot.readMessageEnd() + return + + def SendPlayerType(self, player_type): + """ + Parameters: + - player_type + + """ + self.send_SendPlayerType(player_type) + self.recv_SendPlayerType() + + def send_SendPlayerType(self, player_type): + self._oprot.writeMessageBegin('SendPlayerType', TMessageType.CALL, self._seqid) + args = SendPlayerType_args() + args.player_type = player_type + args.write(self._oprot) + self._oprot.writeMessageEnd() + self._oprot.trans.flush() + + def recv_SendPlayerType(self): + iprot = self._iprot + (fname, mtype, rseqid) = iprot.readMessageBegin() + if mtype == TMessageType.EXCEPTION: + x = TApplicationException() + x.read(iprot) + iprot.readMessageEnd() + raise x + result = SendPlayerType_result() + result.read(iprot) + iprot.readMessageEnd() + return + + def GetInitMessage(self, empty): + """ + Parameters: + - empty + + """ + self.send_GetInitMessage(empty) + return self.recv_GetInitMessage() + + def send_GetInitMessage(self, empty): + self._oprot.writeMessageBegin('GetInitMessage', TMessageType.CALL, self._seqid) + args = GetInitMessage_args() + args.empty = empty + args.write(self._oprot) + self._oprot.writeMessageEnd() + self._oprot.trans.flush() + + def recv_GetInitMessage(self): + iprot = self._iprot + (fname, mtype, rseqid) = iprot.readMessageBegin() + if mtype == TMessageType.EXCEPTION: + x = TApplicationException() + x.read(iprot) + iprot.readMessageEnd() + raise x + result = GetInitMessage_result() + result.read(iprot) + iprot.readMessageEnd() + if result.success is not None: + return result.success + raise TApplicationException(TApplicationException.MISSING_RESULT, "GetInitMessage failed: unknown result") + + def SendByeCommand(self, empty): + """ + Parameters: + - empty + + """ + self.send_SendByeCommand(empty) + self.recv_SendByeCommand() + + def send_SendByeCommand(self, empty): + self._oprot.writeMessageBegin('SendByeCommand', TMessageType.CALL, self._seqid) + args = SendByeCommand_args() + args.empty = empty + args.write(self._oprot) + self._oprot.writeMessageEnd() + self._oprot.trans.flush() + + def recv_SendByeCommand(self): + iprot = self._iprot + (fname, mtype, rseqid) = iprot.readMessageBegin() + if mtype == TMessageType.EXCEPTION: + x = TApplicationException() + x.read(iprot) + iprot.readMessageEnd() + raise x + result = SendByeCommand_result() + result.read(iprot) + iprot.readMessageEnd() + return + + +class Processor(Iface, TProcessor): + def __init__(self, handler): + self._handler = handler + self._processMap = {} + self._processMap["GetPlayerActions"] = Processor.process_GetPlayerActions + self._processMap["GetCoachActions"] = Processor.process_GetCoachActions + self._processMap["GetTrainerActions"] = Processor.process_GetTrainerActions + self._processMap["SendInitMessage"] = Processor.process_SendInitMessage + self._processMap["SendServerParams"] = Processor.process_SendServerParams + self._processMap["SendPlayerParams"] = Processor.process_SendPlayerParams + self._processMap["SendPlayerType"] = Processor.process_SendPlayerType + self._processMap["GetInitMessage"] = Processor.process_GetInitMessage + self._processMap["SendByeCommand"] = Processor.process_SendByeCommand + self._on_message_begin = None + + def on_message_begin(self, func): + self._on_message_begin = func + + def process(self, iprot, oprot): + (name, type, seqid) = iprot.readMessageBegin() + if self._on_message_begin: + self._on_message_begin(name, type, seqid) + if name not in self._processMap: + iprot.skip(TType.STRUCT) + iprot.readMessageEnd() + x = TApplicationException(TApplicationException.UNKNOWN_METHOD, 'Unknown function %s' % (name)) + oprot.writeMessageBegin(name, TMessageType.EXCEPTION, seqid) + x.write(oprot) + oprot.writeMessageEnd() + oprot.trans.flush() + return + else: + self._processMap[name](self, seqid, iprot, oprot) + return True + + def process_GetPlayerActions(self, seqid, iprot, oprot): + args = GetPlayerActions_args() + args.read(iprot) + iprot.readMessageEnd() + result = GetPlayerActions_result() + try: + result.success = self._handler.GetPlayerActions(args.state) + msg_type = TMessageType.REPLY + except TTransport.TTransportException: + raise + except TApplicationException as ex: + logging.exception('TApplication exception in handler') + msg_type = TMessageType.EXCEPTION + result = ex + except Exception: + logging.exception('Unexpected exception in handler') + msg_type = TMessageType.EXCEPTION + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') + oprot.writeMessageBegin("GetPlayerActions", msg_type, seqid) + result.write(oprot) + oprot.writeMessageEnd() + oprot.trans.flush() + + def process_GetCoachActions(self, seqid, iprot, oprot): + args = GetCoachActions_args() + args.read(iprot) + iprot.readMessageEnd() + result = GetCoachActions_result() + try: + result.success = self._handler.GetCoachActions(args.state) + msg_type = TMessageType.REPLY + except TTransport.TTransportException: + raise + except TApplicationException as ex: + logging.exception('TApplication exception in handler') + msg_type = TMessageType.EXCEPTION + result = ex + except Exception: + logging.exception('Unexpected exception in handler') + msg_type = TMessageType.EXCEPTION + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') + oprot.writeMessageBegin("GetCoachActions", msg_type, seqid) + result.write(oprot) + oprot.writeMessageEnd() + oprot.trans.flush() + + def process_GetTrainerActions(self, seqid, iprot, oprot): + args = GetTrainerActions_args() + args.read(iprot) + iprot.readMessageEnd() + result = GetTrainerActions_result() + try: + result.success = self._handler.GetTrainerActions(args.state) + msg_type = TMessageType.REPLY + except TTransport.TTransportException: + raise + except TApplicationException as ex: + logging.exception('TApplication exception in handler') + msg_type = TMessageType.EXCEPTION + result = ex + except Exception: + logging.exception('Unexpected exception in handler') + msg_type = TMessageType.EXCEPTION + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') + oprot.writeMessageBegin("GetTrainerActions", msg_type, seqid) + result.write(oprot) + oprot.writeMessageEnd() + oprot.trans.flush() + + def process_SendInitMessage(self, seqid, iprot, oprot): + args = SendInitMessage_args() + args.read(iprot) + iprot.readMessageEnd() + result = SendInitMessage_result() + try: + self._handler.SendInitMessage(args.init_message) + msg_type = TMessageType.REPLY + except TTransport.TTransportException: + raise + except TApplicationException as ex: + logging.exception('TApplication exception in handler') + msg_type = TMessageType.EXCEPTION + result = ex + except Exception: + logging.exception('Unexpected exception in handler') + msg_type = TMessageType.EXCEPTION + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') + oprot.writeMessageBegin("SendInitMessage", msg_type, seqid) + result.write(oprot) + oprot.writeMessageEnd() + oprot.trans.flush() + + def process_SendServerParams(self, seqid, iprot, oprot): + args = SendServerParams_args() + args.read(iprot) + iprot.readMessageEnd() + result = SendServerParams_result() + try: + self._handler.SendServerParams(args.server_param) + msg_type = TMessageType.REPLY + except TTransport.TTransportException: + raise + except TApplicationException as ex: + logging.exception('TApplication exception in handler') + msg_type = TMessageType.EXCEPTION + result = ex + except Exception: + logging.exception('Unexpected exception in handler') + msg_type = TMessageType.EXCEPTION + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') + oprot.writeMessageBegin("SendServerParams", msg_type, seqid) + result.write(oprot) + oprot.writeMessageEnd() + oprot.trans.flush() + + def process_SendPlayerParams(self, seqid, iprot, oprot): + args = SendPlayerParams_args() + args.read(iprot) + iprot.readMessageEnd() + result = SendPlayerParams_result() + try: + self._handler.SendPlayerParams(args.player_param) + msg_type = TMessageType.REPLY + except TTransport.TTransportException: + raise + except TApplicationException as ex: + logging.exception('TApplication exception in handler') + msg_type = TMessageType.EXCEPTION + result = ex + except Exception: + logging.exception('Unexpected exception in handler') + msg_type = TMessageType.EXCEPTION + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') + oprot.writeMessageBegin("SendPlayerParams", msg_type, seqid) + result.write(oprot) + oprot.writeMessageEnd() + oprot.trans.flush() + + def process_SendPlayerType(self, seqid, iprot, oprot): + args = SendPlayerType_args() + args.read(iprot) + iprot.readMessageEnd() + result = SendPlayerType_result() + try: + self._handler.SendPlayerType(args.player_type) + msg_type = TMessageType.REPLY + except TTransport.TTransportException: + raise + except TApplicationException as ex: + logging.exception('TApplication exception in handler') + msg_type = TMessageType.EXCEPTION + result = ex + except Exception: + logging.exception('Unexpected exception in handler') + msg_type = TMessageType.EXCEPTION + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') + oprot.writeMessageBegin("SendPlayerType", msg_type, seqid) + result.write(oprot) + oprot.writeMessageEnd() + oprot.trans.flush() + + def process_GetInitMessage(self, seqid, iprot, oprot): + args = GetInitMessage_args() + args.read(iprot) + iprot.readMessageEnd() + result = GetInitMessage_result() + try: + result.success = self._handler.GetInitMessage(args.empty) + msg_type = TMessageType.REPLY + except TTransport.TTransportException: + raise + except TApplicationException as ex: + logging.exception('TApplication exception in handler') + msg_type = TMessageType.EXCEPTION + result = ex + except Exception: + logging.exception('Unexpected exception in handler') + msg_type = TMessageType.EXCEPTION + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') + oprot.writeMessageBegin("GetInitMessage", msg_type, seqid) + result.write(oprot) + oprot.writeMessageEnd() + oprot.trans.flush() + + def process_SendByeCommand(self, seqid, iprot, oprot): + args = SendByeCommand_args() + args.read(iprot) + iprot.readMessageEnd() + result = SendByeCommand_result() + try: + self._handler.SendByeCommand(args.empty) + msg_type = TMessageType.REPLY + except TTransport.TTransportException: + raise + except TApplicationException as ex: + logging.exception('TApplication exception in handler') + msg_type = TMessageType.EXCEPTION + result = ex + except Exception: + logging.exception('Unexpected exception in handler') + msg_type = TMessageType.EXCEPTION + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') + oprot.writeMessageBegin("SendByeCommand", msg_type, seqid) + result.write(oprot) + oprot.writeMessageEnd() + oprot.trans.flush() + +# HELPER FUNCTIONS AND STRUCTURES + + +class GetPlayerActions_args(object): + """ + Attributes: + - state + + """ + + + def __init__(self, state=None,): + self.state = state + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.state = State() + self.state.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('GetPlayerActions_args') + if self.state is not None: + oprot.writeFieldBegin('state', TType.STRUCT, 1) + self.state.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) +all_structs.append(GetPlayerActions_args) +GetPlayerActions_args.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'state', [State, None], None, ), # 1 +) + + +class GetPlayerActions_result(object): + """ + Attributes: + - success + + """ + + + def __init__(self, success=None,): + self.success = success + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 0: + if ftype == TType.STRUCT: + self.success = PlayerActions() + self.success.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('GetPlayerActions_result') + if self.success is not None: + oprot.writeFieldBegin('success', TType.STRUCT, 0) + self.success.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) +all_structs.append(GetPlayerActions_result) +GetPlayerActions_result.thrift_spec = ( + (0, TType.STRUCT, 'success', [PlayerActions, None], None, ), # 0 +) + + +class GetCoachActions_args(object): + """ + Attributes: + - state + + """ + + + def __init__(self, state=None,): + self.state = state + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.state = State() + self.state.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('GetCoachActions_args') + if self.state is not None: + oprot.writeFieldBegin('state', TType.STRUCT, 1) + self.state.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) +all_structs.append(GetCoachActions_args) +GetCoachActions_args.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'state', [State, None], None, ), # 1 +) + + +class GetCoachActions_result(object): + """ + Attributes: + - success + + """ + + + def __init__(self, success=None,): + self.success = success + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 0: + if ftype == TType.STRUCT: + self.success = CoachActions() + self.success.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('GetCoachActions_result') + if self.success is not None: + oprot.writeFieldBegin('success', TType.STRUCT, 0) + self.success.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) +all_structs.append(GetCoachActions_result) +GetCoachActions_result.thrift_spec = ( + (0, TType.STRUCT, 'success', [CoachActions, None], None, ), # 0 +) + + +class GetTrainerActions_args(object): + """ + Attributes: + - state + + """ + + + def __init__(self, state=None,): + self.state = state + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.state = State() + self.state.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('GetTrainerActions_args') + if self.state is not None: + oprot.writeFieldBegin('state', TType.STRUCT, 1) + self.state.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) +all_structs.append(GetTrainerActions_args) +GetTrainerActions_args.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'state', [State, None], None, ), # 1 +) + + +class GetTrainerActions_result(object): + """ + Attributes: + - success + + """ + + + def __init__(self, success=None,): + self.success = success + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 0: + if ftype == TType.STRUCT: + self.success = TrainerActions() + self.success.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('GetTrainerActions_result') + if self.success is not None: + oprot.writeFieldBegin('success', TType.STRUCT, 0) + self.success.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) +all_structs.append(GetTrainerActions_result) +GetTrainerActions_result.thrift_spec = ( + (0, TType.STRUCT, 'success', [TrainerActions, None], None, ), # 0 +) + + +class SendInitMessage_args(object): + """ + Attributes: + - init_message + + """ + + + def __init__(self, init_message=None,): + self.init_message = init_message + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.init_message = InitMessage() + self.init_message.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('SendInitMessage_args') + if self.init_message is not None: + oprot.writeFieldBegin('init_message', TType.STRUCT, 1) + self.init_message.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) +all_structs.append(SendInitMessage_args) +SendInitMessage_args.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'init_message', [InitMessage, None], None, ), # 1 +) + + +class SendInitMessage_result(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('SendInitMessage_result') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) +all_structs.append(SendInitMessage_result) +SendInitMessage_result.thrift_spec = ( +) + + +class SendServerParams_args(object): + """ + Attributes: + - server_param + + """ + + + def __init__(self, server_param=None,): + self.server_param = server_param + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.server_param = ServerParam() + self.server_param.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('SendServerParams_args') + if self.server_param is not None: + oprot.writeFieldBegin('server_param', TType.STRUCT, 1) + self.server_param.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) +all_structs.append(SendServerParams_args) +SendServerParams_args.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'server_param', [ServerParam, None], None, ), # 1 +) + + +class SendServerParams_result(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('SendServerParams_result') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) +all_structs.append(SendServerParams_result) +SendServerParams_result.thrift_spec = ( +) + + +class SendPlayerParams_args(object): + """ + Attributes: + - player_param + + """ + + + def __init__(self, player_param=None,): + self.player_param = player_param + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.player_param = PlayerParam() + self.player_param.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('SendPlayerParams_args') + if self.player_param is not None: + oprot.writeFieldBegin('player_param', TType.STRUCT, 1) + self.player_param.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) +all_structs.append(SendPlayerParams_args) +SendPlayerParams_args.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'player_param', [PlayerParam, None], None, ), # 1 +) + + +class SendPlayerParams_result(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('SendPlayerParams_result') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) +all_structs.append(SendPlayerParams_result) +SendPlayerParams_result.thrift_spec = ( +) + + +class SendPlayerType_args(object): + """ + Attributes: + - player_type + + """ + + + def __init__(self, player_type=None,): + self.player_type = player_type + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.player_type = PlayerType() + self.player_type.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('SendPlayerType_args') + if self.player_type is not None: + oprot.writeFieldBegin('player_type', TType.STRUCT, 1) + self.player_type.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) +all_structs.append(SendPlayerType_args) +SendPlayerType_args.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'player_type', [PlayerType, None], None, ), # 1 +) + + +class SendPlayerType_result(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('SendPlayerType_result') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) +all_structs.append(SendPlayerType_result) +SendPlayerType_result.thrift_spec = ( +) + + +class GetInitMessage_args(object): + """ + Attributes: + - empty + + """ + + + def __init__(self, empty=None,): + self.empty = empty + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.empty = Empty() + self.empty.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('GetInitMessage_args') + if self.empty is not None: + oprot.writeFieldBegin('empty', TType.STRUCT, 1) + self.empty.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) +all_structs.append(GetInitMessage_args) +GetInitMessage_args.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'empty', [Empty, None], None, ), # 1 +) + + +class GetInitMessage_result(object): + """ + Attributes: + - success + + """ + + + def __init__(self, success=None,): + self.success = success + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 0: + if ftype == TType.STRUCT: + self.success = InitMessageFromServer() + self.success.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('GetInitMessage_result') + if self.success is not None: + oprot.writeFieldBegin('success', TType.STRUCT, 0) + self.success.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) +all_structs.append(GetInitMessage_result) +GetInitMessage_result.thrift_spec = ( + (0, TType.STRUCT, 'success', [InitMessageFromServer, None], None, ), # 0 +) + + +class SendByeCommand_args(object): + """ + Attributes: + - empty + + """ + + + def __init__(self, empty=None,): + self.empty = empty + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.empty = Empty() + self.empty.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('SendByeCommand_args') + if self.empty is not None: + oprot.writeFieldBegin('empty', TType.STRUCT, 1) + self.empty.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) +all_structs.append(SendByeCommand_args) +SendByeCommand_args.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'empty', [Empty, None], None, ), # 1 +) + + +class SendByeCommand_result(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('SendByeCommand_result') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) +all_structs.append(SendByeCommand_result) +SendByeCommand_result.thrift_spec = ( +) +fix_spec(all_structs) +del all_structs diff --git a/soccer/__init__.py b/soccer/__init__.py new file mode 100644 index 0000000..c47c88b --- /dev/null +++ b/soccer/__init__.py @@ -0,0 +1 @@ +__all__ = ['ttypes', 'constants', 'Game'] diff --git a/soccer/constants.py b/soccer/constants.py new file mode 100644 index 0000000..82c674e --- /dev/null +++ b/soccer/constants.py @@ -0,0 +1,14 @@ +# +# Autogenerated by Thrift Compiler (0.16.0) +# +# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING +# +# options string: py +# + +from thrift.Thrift import TType, TMessageType, TFrozenDict, TException, TApplicationException +from thrift.protocol.TProtocol import TProtocolException +from thrift.TRecursive import fix_spec + +import sys +from .ttypes import * diff --git a/soccer/ttypes.py b/soccer/ttypes.py new file mode 100644 index 0000000..48aa0d5 --- /dev/null +++ b/soccer/ttypes.py @@ -0,0 +1,15222 @@ +# +# Autogenerated by Thrift Compiler (0.16.0) +# +# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING +# +# options string: py +# + +from thrift.Thrift import TType, TMessageType, TFrozenDict, TException, TApplicationException +from thrift.protocol.TProtocol import TProtocolException +from thrift.TRecursive import fix_spec + +import sys + +from thrift.transport import TTransport +all_structs = [] + + +class ViewWidth(object): + NARROW = 0 + NORMAL = 1 + WIDE = 2 + + _VALUES_TO_NAMES = { + 0: "NARROW", + 1: "NORMAL", + 2: "WIDE", + } + + _NAMES_TO_VALUES = { + "NARROW": 0, + "NORMAL": 1, + "WIDE": 2, + } + + +class AgentType(object): + PlayerT = 0 + CoachT = 1 + TrainerT = 2 + + _VALUES_TO_NAMES = { + 0: "PlayerT", + 1: "CoachT", + 2: "TrainerT", + } + + _NAMES_TO_VALUES = { + "PlayerT": 0, + "CoachT": 1, + "TrainerT": 2, + } + + +class Side(object): + UNKNOWN = 0 + LEFT = 1 + RIGHT = 2 + + _VALUES_TO_NAMES = { + 0: "UNKNOWN", + 1: "LEFT", + 2: "RIGHT", + } + + _NAMES_TO_VALUES = { + "UNKNOWN": 0, + "LEFT": 1, + "RIGHT": 2, + } + + +class LoggerLevel(object): + NoneLevel = 0 + SYSTEM = 1 + SENSOR = 2 + WORLD = 4 + ACTION = 8 + INTERCEPT = 16 + KICK = 32 + HOLD = 64 + DRIBBLE = 128 + PASS = 256 + CROSS = 512 + SHOOT = 1024 + CLEAR = 2048 + BLOCK = 4096 + MARK = 8192 + POSITIONING = 16384 + ROLE = 32768 + TEAM = 65536 + COMMUNICATION = 131072 + ANALYZER = 262144 + ACTION_CHAIN = 524288 + PLAN = 1048576 + + _VALUES_TO_NAMES = { + 0: "NoneLevel", + 1: "SYSTEM", + 2: "SENSOR", + 4: "WORLD", + 8: "ACTION", + 16: "INTERCEPT", + 32: "KICK", + 64: "HOLD", + 128: "DRIBBLE", + 256: "PASS", + 512: "CROSS", + 1024: "SHOOT", + 2048: "CLEAR", + 4096: "BLOCK", + 8192: "MARK", + 16384: "POSITIONING", + 32768: "ROLE", + 65536: "TEAM", + 131072: "COMMUNICATION", + 262144: "ANALYZER", + 524288: "ACTION_CHAIN", + 1048576: "PLAN", + } + + _NAMES_TO_VALUES = { + "NoneLevel": 0, + "SYSTEM": 1, + "SENSOR": 2, + "WORLD": 4, + "ACTION": 8, + "INTERCEPT": 16, + "KICK": 32, + "HOLD": 64, + "DRIBBLE": 128, + "PASS": 256, + "CROSS": 512, + "SHOOT": 1024, + "CLEAR": 2048, + "BLOCK": 4096, + "MARK": 8192, + "POSITIONING": 16384, + "ROLE": 32768, + "TEAM": 65536, + "COMMUNICATION": 131072, + "ANALYZER": 262144, + "ACTION_CHAIN": 524288, + "PLAN": 1048576, + } + + +class InterceptActionType(object): + UNKNOWN_Intercept_Action_Type = 0 + OMNI_DASH = 1 + TURN_FORWARD_DASH = 2 + TURN_BACKWARD_DASH = 3 + + _VALUES_TO_NAMES = { + 0: "UNKNOWN_Intercept_Action_Type", + 1: "OMNI_DASH", + 2: "TURN_FORWARD_DASH", + 3: "TURN_BACKWARD_DASH", + } + + _NAMES_TO_VALUES = { + "UNKNOWN_Intercept_Action_Type": 0, + "OMNI_DASH": 1, + "TURN_FORWARD_DASH": 2, + "TURN_BACKWARD_DASH": 3, + } + + +class GameModeType(object): + BeforeKickOff = 0 + TimeOver = 1 + PlayOn = 2 + KickOff_ = 3 + KickIn_ = 4 + FreeKick_ = 5 + CornerKick_ = 6 + GoalKick_ = 7 + AfterGoal_ = 8 + OffSide_ = 9 + PenaltyKick_ = 10 + FirstHalfOver = 11 + Pause = 12 + Human = 13 + FoulCharge_ = 14 + FoulPush_ = 15 + FoulMultipleAttacker_ = 16 + FoulBallOut_ = 17 + BackPass_ = 18 + FreeKickFault_ = 19 + CatchFault_ = 20 + IndFreeKick_ = 21 + PenaltySetup_ = 22 + PenaltyReady_ = 23 + PenaltyTaken_ = 24 + PenaltyMiss_ = 25 + PenaltyScore_ = 26 + IllegalDefense_ = 27 + PenaltyOnfield_ = 28 + PenaltyFoul_ = 29 + GoalieCatch_ = 30 + ExtendHalf = 31 + MODE_MAX = 32 + + _VALUES_TO_NAMES = { + 0: "BeforeKickOff", + 1: "TimeOver", + 2: "PlayOn", + 3: "KickOff_", + 4: "KickIn_", + 5: "FreeKick_", + 6: "CornerKick_", + 7: "GoalKick_", + 8: "AfterGoal_", + 9: "OffSide_", + 10: "PenaltyKick_", + 11: "FirstHalfOver", + 12: "Pause", + 13: "Human", + 14: "FoulCharge_", + 15: "FoulPush_", + 16: "FoulMultipleAttacker_", + 17: "FoulBallOut_", + 18: "BackPass_", + 19: "FreeKickFault_", + 20: "CatchFault_", + 21: "IndFreeKick_", + 22: "PenaltySetup_", + 23: "PenaltyReady_", + 24: "PenaltyTaken_", + 25: "PenaltyMiss_", + 26: "PenaltyScore_", + 27: "IllegalDefense_", + 28: "PenaltyOnfield_", + 29: "PenaltyFoul_", + 30: "GoalieCatch_", + 31: "ExtendHalf", + 32: "MODE_MAX", + } + + _NAMES_TO_VALUES = { + "BeforeKickOff": 0, + "TimeOver": 1, + "PlayOn": 2, + "KickOff_": 3, + "KickIn_": 4, + "FreeKick_": 5, + "CornerKick_": 6, + "GoalKick_": 7, + "AfterGoal_": 8, + "OffSide_": 9, + "PenaltyKick_": 10, + "FirstHalfOver": 11, + "Pause": 12, + "Human": 13, + "FoulCharge_": 14, + "FoulPush_": 15, + "FoulMultipleAttacker_": 16, + "FoulBallOut_": 17, + "BackPass_": 18, + "FreeKickFault_": 19, + "CatchFault_": 20, + "IndFreeKick_": 21, + "PenaltySetup_": 22, + "PenaltyReady_": 23, + "PenaltyTaken_": 24, + "PenaltyMiss_": 25, + "PenaltyScore_": 26, + "IllegalDefense_": 27, + "PenaltyOnfield_": 28, + "PenaltyFoul_": 29, + "GoalieCatch_": 30, + "ExtendHalf": 31, + "MODE_MAX": 32, + } + + +class ThriftVector2D(object): + """ + Attributes: + - x + - y + - dist + - angle + + """ + + + def __init__(self, x=None, y=None, dist=None, angle=None,): + self.x = x + self.y = y + self.dist = dist + self.angle = angle + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.DOUBLE: + self.x = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.DOUBLE: + self.y = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.DOUBLE: + self.dist = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.DOUBLE: + self.angle = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('ThriftVector2D') + if self.x is not None: + oprot.writeFieldBegin('x', TType.DOUBLE, 1) + oprot.writeDouble(self.x) + oprot.writeFieldEnd() + if self.y is not None: + oprot.writeFieldBegin('y', TType.DOUBLE, 2) + oprot.writeDouble(self.y) + oprot.writeFieldEnd() + if self.dist is not None: + oprot.writeFieldBegin('dist', TType.DOUBLE, 3) + oprot.writeDouble(self.dist) + oprot.writeFieldEnd() + if self.angle is not None: + oprot.writeFieldBegin('angle', TType.DOUBLE, 4) + oprot.writeDouble(self.angle) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Ball(object): + """ + Attributes: + - position + - relative_position + - seen_position + - heard_position + - velocity + - seen_velocity + - heard_velocity + - pos_count + - seen_pos_count + - heard_pos_count + - vel_count + - seen_vel_count + - heard_vel_count + - lost_count + - ghost_count + - dist_from_self + - angle_from_self + + """ + + + def __init__(self, position=None, relative_position=None, seen_position=None, heard_position=None, velocity=None, seen_velocity=None, heard_velocity=None, pos_count=None, seen_pos_count=None, heard_pos_count=None, vel_count=None, seen_vel_count=None, heard_vel_count=None, lost_count=None, ghost_count=None, dist_from_self=None, angle_from_self=None,): + self.position = position + self.relative_position = relative_position + self.seen_position = seen_position + self.heard_position = heard_position + self.velocity = velocity + self.seen_velocity = seen_velocity + self.heard_velocity = heard_velocity + self.pos_count = pos_count + self.seen_pos_count = seen_pos_count + self.heard_pos_count = heard_pos_count + self.vel_count = vel_count + self.seen_vel_count = seen_vel_count + self.heard_vel_count = heard_vel_count + self.lost_count = lost_count + self.ghost_count = ghost_count + self.dist_from_self = dist_from_self + self.angle_from_self = angle_from_self + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.position = ThriftVector2D() + self.position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.relative_position = ThriftVector2D() + self.relative_position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRUCT: + self.seen_position = ThriftVector2D() + self.seen_position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRUCT: + self.heard_position = ThriftVector2D() + self.heard_position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.STRUCT: + self.velocity = ThriftVector2D() + self.velocity.read(iprot) + else: + iprot.skip(ftype) + elif fid == 6: + if ftype == TType.STRUCT: + self.seen_velocity = ThriftVector2D() + self.seen_velocity.read(iprot) + else: + iprot.skip(ftype) + elif fid == 7: + if ftype == TType.STRUCT: + self.heard_velocity = ThriftVector2D() + self.heard_velocity.read(iprot) + else: + iprot.skip(ftype) + elif fid == 8: + if ftype == TType.I32: + self.pos_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 9: + if ftype == TType.I32: + self.seen_pos_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 10: + if ftype == TType.I32: + self.heard_pos_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 11: + if ftype == TType.I32: + self.vel_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 12: + if ftype == TType.I32: + self.seen_vel_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 13: + if ftype == TType.I32: + self.heard_vel_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 14: + if ftype == TType.I32: + self.lost_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 15: + if ftype == TType.I32: + self.ghost_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 16: + if ftype == TType.DOUBLE: + self.dist_from_self = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 17: + if ftype == TType.DOUBLE: + self.angle_from_self = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Ball') + if self.position is not None: + oprot.writeFieldBegin('position', TType.STRUCT, 1) + self.position.write(oprot) + oprot.writeFieldEnd() + if self.relative_position is not None: + oprot.writeFieldBegin('relative_position', TType.STRUCT, 2) + self.relative_position.write(oprot) + oprot.writeFieldEnd() + if self.seen_position is not None: + oprot.writeFieldBegin('seen_position', TType.STRUCT, 3) + self.seen_position.write(oprot) + oprot.writeFieldEnd() + if self.heard_position is not None: + oprot.writeFieldBegin('heard_position', TType.STRUCT, 4) + self.heard_position.write(oprot) + oprot.writeFieldEnd() + if self.velocity is not None: + oprot.writeFieldBegin('velocity', TType.STRUCT, 5) + self.velocity.write(oprot) + oprot.writeFieldEnd() + if self.seen_velocity is not None: + oprot.writeFieldBegin('seen_velocity', TType.STRUCT, 6) + self.seen_velocity.write(oprot) + oprot.writeFieldEnd() + if self.heard_velocity is not None: + oprot.writeFieldBegin('heard_velocity', TType.STRUCT, 7) + self.heard_velocity.write(oprot) + oprot.writeFieldEnd() + if self.pos_count is not None: + oprot.writeFieldBegin('pos_count', TType.I32, 8) + oprot.writeI32(self.pos_count) + oprot.writeFieldEnd() + if self.seen_pos_count is not None: + oprot.writeFieldBegin('seen_pos_count', TType.I32, 9) + oprot.writeI32(self.seen_pos_count) + oprot.writeFieldEnd() + if self.heard_pos_count is not None: + oprot.writeFieldBegin('heard_pos_count', TType.I32, 10) + oprot.writeI32(self.heard_pos_count) + oprot.writeFieldEnd() + if self.vel_count is not None: + oprot.writeFieldBegin('vel_count', TType.I32, 11) + oprot.writeI32(self.vel_count) + oprot.writeFieldEnd() + if self.seen_vel_count is not None: + oprot.writeFieldBegin('seen_vel_count', TType.I32, 12) + oprot.writeI32(self.seen_vel_count) + oprot.writeFieldEnd() + if self.heard_vel_count is not None: + oprot.writeFieldBegin('heard_vel_count', TType.I32, 13) + oprot.writeI32(self.heard_vel_count) + oprot.writeFieldEnd() + if self.lost_count is not None: + oprot.writeFieldBegin('lost_count', TType.I32, 14) + oprot.writeI32(self.lost_count) + oprot.writeFieldEnd() + if self.ghost_count is not None: + oprot.writeFieldBegin('ghost_count', TType.I32, 15) + oprot.writeI32(self.ghost_count) + oprot.writeFieldEnd() + if self.dist_from_self is not None: + oprot.writeFieldBegin('dist_from_self', TType.DOUBLE, 16) + oprot.writeDouble(self.dist_from_self) + oprot.writeFieldEnd() + if self.angle_from_self is not None: + oprot.writeFieldBegin('angle_from_self', TType.DOUBLE, 17) + oprot.writeDouble(self.angle_from_self) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Player(object): + """ + Attributes: + - position + - seen_position + - heard_position + - velocity + - seen_velocity + - pos_count + - seen_pos_count + - heard_pos_count + - vel_count + - seen_vel_count + - ghost_count + - dist_from_self + - angle_from_self + - id + - side + - uniform_number + - uniform_number_count + - is_goalie + - body_direction + - body_direction_count + - face_direction + - face_direction_count + - point_to_direction + - point_to_direction_count + - is_kicking + - dist_from_ball + - angle_from_ball + - ball_reach_steps + - is_tackling + - type_id + + """ + + + def __init__(self, position=None, seen_position=None, heard_position=None, velocity=None, seen_velocity=None, pos_count=None, seen_pos_count=None, heard_pos_count=None, vel_count=None, seen_vel_count=None, ghost_count=None, dist_from_self=None, angle_from_self=None, id=None, side=None, uniform_number=None, uniform_number_count=None, is_goalie=None, body_direction=None, body_direction_count=None, face_direction=None, face_direction_count=None, point_to_direction=None, point_to_direction_count=None, is_kicking=None, dist_from_ball=None, angle_from_ball=None, ball_reach_steps=None, is_tackling=None, type_id=None,): + self.position = position + self.seen_position = seen_position + self.heard_position = heard_position + self.velocity = velocity + self.seen_velocity = seen_velocity + self.pos_count = pos_count + self.seen_pos_count = seen_pos_count + self.heard_pos_count = heard_pos_count + self.vel_count = vel_count + self.seen_vel_count = seen_vel_count + self.ghost_count = ghost_count + self.dist_from_self = dist_from_self + self.angle_from_self = angle_from_self + self.id = id + self.side = side + self.uniform_number = uniform_number + self.uniform_number_count = uniform_number_count + self.is_goalie = is_goalie + self.body_direction = body_direction + self.body_direction_count = body_direction_count + self.face_direction = face_direction + self.face_direction_count = face_direction_count + self.point_to_direction = point_to_direction + self.point_to_direction_count = point_to_direction_count + self.is_kicking = is_kicking + self.dist_from_ball = dist_from_ball + self.angle_from_ball = angle_from_ball + self.ball_reach_steps = ball_reach_steps + self.is_tackling = is_tackling + self.type_id = type_id + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.position = ThriftVector2D() + self.position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.seen_position = ThriftVector2D() + self.seen_position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRUCT: + self.heard_position = ThriftVector2D() + self.heard_position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRUCT: + self.velocity = ThriftVector2D() + self.velocity.read(iprot) + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.STRUCT: + self.seen_velocity = ThriftVector2D() + self.seen_velocity.read(iprot) + else: + iprot.skip(ftype) + elif fid == 6: + if ftype == TType.I32: + self.pos_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 7: + if ftype == TType.I32: + self.seen_pos_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 8: + if ftype == TType.I32: + self.heard_pos_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 9: + if ftype == TType.I32: + self.vel_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 10: + if ftype == TType.I32: + self.seen_vel_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 11: + if ftype == TType.I32: + self.ghost_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 12: + if ftype == TType.DOUBLE: + self.dist_from_self = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 13: + if ftype == TType.DOUBLE: + self.angle_from_self = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 14: + if ftype == TType.I32: + self.id = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 15: + if ftype == TType.I32: + self.side = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 16: + if ftype == TType.I32: + self.uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 17: + if ftype == TType.I32: + self.uniform_number_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 18: + if ftype == TType.BOOL: + self.is_goalie = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 19: + if ftype == TType.DOUBLE: + self.body_direction = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 20: + if ftype == TType.I32: + self.body_direction_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 21: + if ftype == TType.DOUBLE: + self.face_direction = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 22: + if ftype == TType.I32: + self.face_direction_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 23: + if ftype == TType.DOUBLE: + self.point_to_direction = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 24: + if ftype == TType.I32: + self.point_to_direction_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 25: + if ftype == TType.BOOL: + self.is_kicking = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 26: + if ftype == TType.DOUBLE: + self.dist_from_ball = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 27: + if ftype == TType.DOUBLE: + self.angle_from_ball = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 28: + if ftype == TType.I32: + self.ball_reach_steps = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 29: + if ftype == TType.BOOL: + self.is_tackling = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 30: + if ftype == TType.I32: + self.type_id = iprot.readI32() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Player') + if self.position is not None: + oprot.writeFieldBegin('position', TType.STRUCT, 1) + self.position.write(oprot) + oprot.writeFieldEnd() + if self.seen_position is not None: + oprot.writeFieldBegin('seen_position', TType.STRUCT, 2) + self.seen_position.write(oprot) + oprot.writeFieldEnd() + if self.heard_position is not None: + oprot.writeFieldBegin('heard_position', TType.STRUCT, 3) + self.heard_position.write(oprot) + oprot.writeFieldEnd() + if self.velocity is not None: + oprot.writeFieldBegin('velocity', TType.STRUCT, 4) + self.velocity.write(oprot) + oprot.writeFieldEnd() + if self.seen_velocity is not None: + oprot.writeFieldBegin('seen_velocity', TType.STRUCT, 5) + self.seen_velocity.write(oprot) + oprot.writeFieldEnd() + if self.pos_count is not None: + oprot.writeFieldBegin('pos_count', TType.I32, 6) + oprot.writeI32(self.pos_count) + oprot.writeFieldEnd() + if self.seen_pos_count is not None: + oprot.writeFieldBegin('seen_pos_count', TType.I32, 7) + oprot.writeI32(self.seen_pos_count) + oprot.writeFieldEnd() + if self.heard_pos_count is not None: + oprot.writeFieldBegin('heard_pos_count', TType.I32, 8) + oprot.writeI32(self.heard_pos_count) + oprot.writeFieldEnd() + if self.vel_count is not None: + oprot.writeFieldBegin('vel_count', TType.I32, 9) + oprot.writeI32(self.vel_count) + oprot.writeFieldEnd() + if self.seen_vel_count is not None: + oprot.writeFieldBegin('seen_vel_count', TType.I32, 10) + oprot.writeI32(self.seen_vel_count) + oprot.writeFieldEnd() + if self.ghost_count is not None: + oprot.writeFieldBegin('ghost_count', TType.I32, 11) + oprot.writeI32(self.ghost_count) + oprot.writeFieldEnd() + if self.dist_from_self is not None: + oprot.writeFieldBegin('dist_from_self', TType.DOUBLE, 12) + oprot.writeDouble(self.dist_from_self) + oprot.writeFieldEnd() + if self.angle_from_self is not None: + oprot.writeFieldBegin('angle_from_self', TType.DOUBLE, 13) + oprot.writeDouble(self.angle_from_self) + oprot.writeFieldEnd() + if self.id is not None: + oprot.writeFieldBegin('id', TType.I32, 14) + oprot.writeI32(self.id) + oprot.writeFieldEnd() + if self.side is not None: + oprot.writeFieldBegin('side', TType.I32, 15) + oprot.writeI32(self.side) + oprot.writeFieldEnd() + if self.uniform_number is not None: + oprot.writeFieldBegin('uniform_number', TType.I32, 16) + oprot.writeI32(self.uniform_number) + oprot.writeFieldEnd() + if self.uniform_number_count is not None: + oprot.writeFieldBegin('uniform_number_count', TType.I32, 17) + oprot.writeI32(self.uniform_number_count) + oprot.writeFieldEnd() + if self.is_goalie is not None: + oprot.writeFieldBegin('is_goalie', TType.BOOL, 18) + oprot.writeBool(self.is_goalie) + oprot.writeFieldEnd() + if self.body_direction is not None: + oprot.writeFieldBegin('body_direction', TType.DOUBLE, 19) + oprot.writeDouble(self.body_direction) + oprot.writeFieldEnd() + if self.body_direction_count is not None: + oprot.writeFieldBegin('body_direction_count', TType.I32, 20) + oprot.writeI32(self.body_direction_count) + oprot.writeFieldEnd() + if self.face_direction is not None: + oprot.writeFieldBegin('face_direction', TType.DOUBLE, 21) + oprot.writeDouble(self.face_direction) + oprot.writeFieldEnd() + if self.face_direction_count is not None: + oprot.writeFieldBegin('face_direction_count', TType.I32, 22) + oprot.writeI32(self.face_direction_count) + oprot.writeFieldEnd() + if self.point_to_direction is not None: + oprot.writeFieldBegin('point_to_direction', TType.DOUBLE, 23) + oprot.writeDouble(self.point_to_direction) + oprot.writeFieldEnd() + if self.point_to_direction_count is not None: + oprot.writeFieldBegin('point_to_direction_count', TType.I32, 24) + oprot.writeI32(self.point_to_direction_count) + oprot.writeFieldEnd() + if self.is_kicking is not None: + oprot.writeFieldBegin('is_kicking', TType.BOOL, 25) + oprot.writeBool(self.is_kicking) + oprot.writeFieldEnd() + if self.dist_from_ball is not None: + oprot.writeFieldBegin('dist_from_ball', TType.DOUBLE, 26) + oprot.writeDouble(self.dist_from_ball) + oprot.writeFieldEnd() + if self.angle_from_ball is not None: + oprot.writeFieldBegin('angle_from_ball', TType.DOUBLE, 27) + oprot.writeDouble(self.angle_from_ball) + oprot.writeFieldEnd() + if self.ball_reach_steps is not None: + oprot.writeFieldBegin('ball_reach_steps', TType.I32, 28) + oprot.writeI32(self.ball_reach_steps) + oprot.writeFieldEnd() + if self.is_tackling is not None: + oprot.writeFieldBegin('is_tackling', TType.BOOL, 29) + oprot.writeBool(self.is_tackling) + oprot.writeFieldEnd() + if self.type_id is not None: + oprot.writeFieldBegin('type_id', TType.I32, 30) + oprot.writeI32(self.type_id) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Self(object): + """ + Attributes: + - position + - seen_position + - heard_position + - velocity + - seen_velocity + - pos_count + - seen_pos_count + - heard_pos_count + - vel_count + - seen_vel_count + - ghost_count + - id + - side + - uniform_number + - uniform_number_count + - is_goalie + - body_direction + - body_direction_count + - face_direction + - face_direction_count + - point_to_direction + - point_to_direction_count + - is_kicking + - dist_from_ball + - angle_from_ball + - ball_reach_steps + - is_tackling + - relative_neck_direction + - stamina + - is_kickable + - catch_probability + - tackle_probability + - foul_probability + - view_width + - type_id + - kick_rate + + """ + + + def __init__(self, position=None, seen_position=None, heard_position=None, velocity=None, seen_velocity=None, pos_count=None, seen_pos_count=None, heard_pos_count=None, vel_count=None, seen_vel_count=None, ghost_count=None, id=None, side=None, uniform_number=None, uniform_number_count=None, is_goalie=None, body_direction=None, body_direction_count=None, face_direction=None, face_direction_count=None, point_to_direction=None, point_to_direction_count=None, is_kicking=None, dist_from_ball=None, angle_from_ball=None, ball_reach_steps=None, is_tackling=None, relative_neck_direction=None, stamina=None, is_kickable=None, catch_probability=None, tackle_probability=None, foul_probability=None, view_width=None, type_id=None, kick_rate=None,): + self.position = position + self.seen_position = seen_position + self.heard_position = heard_position + self.velocity = velocity + self.seen_velocity = seen_velocity + self.pos_count = pos_count + self.seen_pos_count = seen_pos_count + self.heard_pos_count = heard_pos_count + self.vel_count = vel_count + self.seen_vel_count = seen_vel_count + self.ghost_count = ghost_count + self.id = id + self.side = side + self.uniform_number = uniform_number + self.uniform_number_count = uniform_number_count + self.is_goalie = is_goalie + self.body_direction = body_direction + self.body_direction_count = body_direction_count + self.face_direction = face_direction + self.face_direction_count = face_direction_count + self.point_to_direction = point_to_direction + self.point_to_direction_count = point_to_direction_count + self.is_kicking = is_kicking + self.dist_from_ball = dist_from_ball + self.angle_from_ball = angle_from_ball + self.ball_reach_steps = ball_reach_steps + self.is_tackling = is_tackling + self.relative_neck_direction = relative_neck_direction + self.stamina = stamina + self.is_kickable = is_kickable + self.catch_probability = catch_probability + self.tackle_probability = tackle_probability + self.foul_probability = foul_probability + self.view_width = view_width + self.type_id = type_id + self.kick_rate = kick_rate + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.position = ThriftVector2D() + self.position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.seen_position = ThriftVector2D() + self.seen_position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRUCT: + self.heard_position = ThriftVector2D() + self.heard_position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRUCT: + self.velocity = ThriftVector2D() + self.velocity.read(iprot) + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.STRUCT: + self.seen_velocity = ThriftVector2D() + self.seen_velocity.read(iprot) + else: + iprot.skip(ftype) + elif fid == 6: + if ftype == TType.I32: + self.pos_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 7: + if ftype == TType.I32: + self.seen_pos_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 8: + if ftype == TType.I32: + self.heard_pos_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 9: + if ftype == TType.I32: + self.vel_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 10: + if ftype == TType.I32: + self.seen_vel_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 11: + if ftype == TType.I32: + self.ghost_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 12: + if ftype == TType.I32: + self.id = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 13: + if ftype == TType.I32: + self.side = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 14: + if ftype == TType.I32: + self.uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 15: + if ftype == TType.I32: + self.uniform_number_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 16: + if ftype == TType.BOOL: + self.is_goalie = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 17: + if ftype == TType.DOUBLE: + self.body_direction = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 18: + if ftype == TType.I32: + self.body_direction_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 19: + if ftype == TType.DOUBLE: + self.face_direction = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 20: + if ftype == TType.I32: + self.face_direction_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 21: + if ftype == TType.DOUBLE: + self.point_to_direction = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 22: + if ftype == TType.I32: + self.point_to_direction_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 23: + if ftype == TType.BOOL: + self.is_kicking = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 24: + if ftype == TType.DOUBLE: + self.dist_from_ball = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 25: + if ftype == TType.DOUBLE: + self.angle_from_ball = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 26: + if ftype == TType.I32: + self.ball_reach_steps = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 27: + if ftype == TType.BOOL: + self.is_tackling = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 28: + if ftype == TType.DOUBLE: + self.relative_neck_direction = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 29: + if ftype == TType.DOUBLE: + self.stamina = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 30: + if ftype == TType.BOOL: + self.is_kickable = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 31: + if ftype == TType.DOUBLE: + self.catch_probability = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 32: + if ftype == TType.DOUBLE: + self.tackle_probability = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 33: + if ftype == TType.DOUBLE: + self.foul_probability = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 34: + if ftype == TType.I32: + self.view_width = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 35: + if ftype == TType.I32: + self.type_id = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 36: + if ftype == TType.DOUBLE: + self.kick_rate = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Self') + if self.position is not None: + oprot.writeFieldBegin('position', TType.STRUCT, 1) + self.position.write(oprot) + oprot.writeFieldEnd() + if self.seen_position is not None: + oprot.writeFieldBegin('seen_position', TType.STRUCT, 2) + self.seen_position.write(oprot) + oprot.writeFieldEnd() + if self.heard_position is not None: + oprot.writeFieldBegin('heard_position', TType.STRUCT, 3) + self.heard_position.write(oprot) + oprot.writeFieldEnd() + if self.velocity is not None: + oprot.writeFieldBegin('velocity', TType.STRUCT, 4) + self.velocity.write(oprot) + oprot.writeFieldEnd() + if self.seen_velocity is not None: + oprot.writeFieldBegin('seen_velocity', TType.STRUCT, 5) + self.seen_velocity.write(oprot) + oprot.writeFieldEnd() + if self.pos_count is not None: + oprot.writeFieldBegin('pos_count', TType.I32, 6) + oprot.writeI32(self.pos_count) + oprot.writeFieldEnd() + if self.seen_pos_count is not None: + oprot.writeFieldBegin('seen_pos_count', TType.I32, 7) + oprot.writeI32(self.seen_pos_count) + oprot.writeFieldEnd() + if self.heard_pos_count is not None: + oprot.writeFieldBegin('heard_pos_count', TType.I32, 8) + oprot.writeI32(self.heard_pos_count) + oprot.writeFieldEnd() + if self.vel_count is not None: + oprot.writeFieldBegin('vel_count', TType.I32, 9) + oprot.writeI32(self.vel_count) + oprot.writeFieldEnd() + if self.seen_vel_count is not None: + oprot.writeFieldBegin('seen_vel_count', TType.I32, 10) + oprot.writeI32(self.seen_vel_count) + oprot.writeFieldEnd() + if self.ghost_count is not None: + oprot.writeFieldBegin('ghost_count', TType.I32, 11) + oprot.writeI32(self.ghost_count) + oprot.writeFieldEnd() + if self.id is not None: + oprot.writeFieldBegin('id', TType.I32, 12) + oprot.writeI32(self.id) + oprot.writeFieldEnd() + if self.side is not None: + oprot.writeFieldBegin('side', TType.I32, 13) + oprot.writeI32(self.side) + oprot.writeFieldEnd() + if self.uniform_number is not None: + oprot.writeFieldBegin('uniform_number', TType.I32, 14) + oprot.writeI32(self.uniform_number) + oprot.writeFieldEnd() + if self.uniform_number_count is not None: + oprot.writeFieldBegin('uniform_number_count', TType.I32, 15) + oprot.writeI32(self.uniform_number_count) + oprot.writeFieldEnd() + if self.is_goalie is not None: + oprot.writeFieldBegin('is_goalie', TType.BOOL, 16) + oprot.writeBool(self.is_goalie) + oprot.writeFieldEnd() + if self.body_direction is not None: + oprot.writeFieldBegin('body_direction', TType.DOUBLE, 17) + oprot.writeDouble(self.body_direction) + oprot.writeFieldEnd() + if self.body_direction_count is not None: + oprot.writeFieldBegin('body_direction_count', TType.I32, 18) + oprot.writeI32(self.body_direction_count) + oprot.writeFieldEnd() + if self.face_direction is not None: + oprot.writeFieldBegin('face_direction', TType.DOUBLE, 19) + oprot.writeDouble(self.face_direction) + oprot.writeFieldEnd() + if self.face_direction_count is not None: + oprot.writeFieldBegin('face_direction_count', TType.I32, 20) + oprot.writeI32(self.face_direction_count) + oprot.writeFieldEnd() + if self.point_to_direction is not None: + oprot.writeFieldBegin('point_to_direction', TType.DOUBLE, 21) + oprot.writeDouble(self.point_to_direction) + oprot.writeFieldEnd() + if self.point_to_direction_count is not None: + oprot.writeFieldBegin('point_to_direction_count', TType.I32, 22) + oprot.writeI32(self.point_to_direction_count) + oprot.writeFieldEnd() + if self.is_kicking is not None: + oprot.writeFieldBegin('is_kicking', TType.BOOL, 23) + oprot.writeBool(self.is_kicking) + oprot.writeFieldEnd() + if self.dist_from_ball is not None: + oprot.writeFieldBegin('dist_from_ball', TType.DOUBLE, 24) + oprot.writeDouble(self.dist_from_ball) + oprot.writeFieldEnd() + if self.angle_from_ball is not None: + oprot.writeFieldBegin('angle_from_ball', TType.DOUBLE, 25) + oprot.writeDouble(self.angle_from_ball) + oprot.writeFieldEnd() + if self.ball_reach_steps is not None: + oprot.writeFieldBegin('ball_reach_steps', TType.I32, 26) + oprot.writeI32(self.ball_reach_steps) + oprot.writeFieldEnd() + if self.is_tackling is not None: + oprot.writeFieldBegin('is_tackling', TType.BOOL, 27) + oprot.writeBool(self.is_tackling) + oprot.writeFieldEnd() + if self.relative_neck_direction is not None: + oprot.writeFieldBegin('relative_neck_direction', TType.DOUBLE, 28) + oprot.writeDouble(self.relative_neck_direction) + oprot.writeFieldEnd() + if self.stamina is not None: + oprot.writeFieldBegin('stamina', TType.DOUBLE, 29) + oprot.writeDouble(self.stamina) + oprot.writeFieldEnd() + if self.is_kickable is not None: + oprot.writeFieldBegin('is_kickable', TType.BOOL, 30) + oprot.writeBool(self.is_kickable) + oprot.writeFieldEnd() + if self.catch_probability is not None: + oprot.writeFieldBegin('catch_probability', TType.DOUBLE, 31) + oprot.writeDouble(self.catch_probability) + oprot.writeFieldEnd() + if self.tackle_probability is not None: + oprot.writeFieldBegin('tackle_probability', TType.DOUBLE, 32) + oprot.writeDouble(self.tackle_probability) + oprot.writeFieldEnd() + if self.foul_probability is not None: + oprot.writeFieldBegin('foul_probability', TType.DOUBLE, 33) + oprot.writeDouble(self.foul_probability) + oprot.writeFieldEnd() + if self.view_width is not None: + oprot.writeFieldBegin('view_width', TType.I32, 34) + oprot.writeI32(self.view_width) + oprot.writeFieldEnd() + if self.type_id is not None: + oprot.writeFieldBegin('type_id', TType.I32, 35) + oprot.writeI32(self.type_id) + oprot.writeFieldEnd() + if self.kick_rate is not None: + oprot.writeFieldBegin('kick_rate', TType.DOUBLE, 36) + oprot.writeDouble(self.kick_rate) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class InterceptInfo(object): + """ + Attributes: + - action_type + - turn_steps + - turn_angle + - dash_steps + - dash_power + - dash_dir + - final_self_position + - final_ball_dist + - final_stamina + - value + + """ + + + def __init__(self, action_type=None, turn_steps=None, turn_angle=None, dash_steps=None, dash_power=None, dash_dir=None, final_self_position=None, final_ball_dist=None, final_stamina=None, value=None,): + self.action_type = action_type + self.turn_steps = turn_steps + self.turn_angle = turn_angle + self.dash_steps = dash_steps + self.dash_power = dash_power + self.dash_dir = dash_dir + self.final_self_position = final_self_position + self.final_ball_dist = final_ball_dist + self.final_stamina = final_stamina + self.value = value + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.action_type = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.I32: + self.turn_steps = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.DOUBLE: + self.turn_angle = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.I32: + self.dash_steps = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.DOUBLE: + self.dash_power = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 6: + if ftype == TType.DOUBLE: + self.dash_dir = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 7: + if ftype == TType.STRUCT: + self.final_self_position = ThriftVector2D() + self.final_self_position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 8: + if ftype == TType.DOUBLE: + self.final_ball_dist = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 9: + if ftype == TType.DOUBLE: + self.final_stamina = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 10: + if ftype == TType.DOUBLE: + self.value = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('InterceptInfo') + if self.action_type is not None: + oprot.writeFieldBegin('action_type', TType.I32, 1) + oprot.writeI32(self.action_type) + oprot.writeFieldEnd() + if self.turn_steps is not None: + oprot.writeFieldBegin('turn_steps', TType.I32, 2) + oprot.writeI32(self.turn_steps) + oprot.writeFieldEnd() + if self.turn_angle is not None: + oprot.writeFieldBegin('turn_angle', TType.DOUBLE, 3) + oprot.writeDouble(self.turn_angle) + oprot.writeFieldEnd() + if self.dash_steps is not None: + oprot.writeFieldBegin('dash_steps', TType.I32, 4) + oprot.writeI32(self.dash_steps) + oprot.writeFieldEnd() + if self.dash_power is not None: + oprot.writeFieldBegin('dash_power', TType.DOUBLE, 5) + oprot.writeDouble(self.dash_power) + oprot.writeFieldEnd() + if self.dash_dir is not None: + oprot.writeFieldBegin('dash_dir', TType.DOUBLE, 6) + oprot.writeDouble(self.dash_dir) + oprot.writeFieldEnd() + if self.final_self_position is not None: + oprot.writeFieldBegin('final_self_position', TType.STRUCT, 7) + self.final_self_position.write(oprot) + oprot.writeFieldEnd() + if self.final_ball_dist is not None: + oprot.writeFieldBegin('final_ball_dist', TType.DOUBLE, 8) + oprot.writeDouble(self.final_ball_dist) + oprot.writeFieldEnd() + if self.final_stamina is not None: + oprot.writeFieldBegin('final_stamina', TType.DOUBLE, 9) + oprot.writeDouble(self.final_stamina) + oprot.writeFieldEnd() + if self.value is not None: + oprot.writeFieldBegin('value', TType.DOUBLE, 10) + oprot.writeDouble(self.value) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class InterceptTable(object): + """ + Attributes: + - self_reach_steps + - first_teammate_reach_steps + - second_teammate_reach_steps + - first_opponent_reach_steps + - second_opponent_reach_steps + - first_teammate_id + - second_teammate_id + - first_opponent_id + - second_opponent_id + - self_intercept_info + + """ + + + def __init__(self, self_reach_steps=None, first_teammate_reach_steps=None, second_teammate_reach_steps=None, first_opponent_reach_steps=None, second_opponent_reach_steps=None, first_teammate_id=None, second_teammate_id=None, first_opponent_id=None, second_opponent_id=None, self_intercept_info=None,): + self.self_reach_steps = self_reach_steps + self.first_teammate_reach_steps = first_teammate_reach_steps + self.second_teammate_reach_steps = second_teammate_reach_steps + self.first_opponent_reach_steps = first_opponent_reach_steps + self.second_opponent_reach_steps = second_opponent_reach_steps + self.first_teammate_id = first_teammate_id + self.second_teammate_id = second_teammate_id + self.first_opponent_id = first_opponent_id + self.second_opponent_id = second_opponent_id + self.self_intercept_info = self_intercept_info + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.self_reach_steps = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.I32: + self.first_teammate_reach_steps = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.I32: + self.second_teammate_reach_steps = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.I32: + self.first_opponent_reach_steps = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.I32: + self.second_opponent_reach_steps = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 6: + if ftype == TType.I32: + self.first_teammate_id = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 7: + if ftype == TType.I32: + self.second_teammate_id = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 8: + if ftype == TType.I32: + self.first_opponent_id = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 9: + if ftype == TType.I32: + self.second_opponent_id = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 10: + if ftype == TType.LIST: + self.self_intercept_info = [] + (_etype3, _size0) = iprot.readListBegin() + for _i4 in range(_size0): + _elem5 = InterceptInfo() + _elem5.read(iprot) + self.self_intercept_info.append(_elem5) + iprot.readListEnd() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('InterceptTable') + if self.self_reach_steps is not None: + oprot.writeFieldBegin('self_reach_steps', TType.I32, 1) + oprot.writeI32(self.self_reach_steps) + oprot.writeFieldEnd() + if self.first_teammate_reach_steps is not None: + oprot.writeFieldBegin('first_teammate_reach_steps', TType.I32, 2) + oprot.writeI32(self.first_teammate_reach_steps) + oprot.writeFieldEnd() + if self.second_teammate_reach_steps is not None: + oprot.writeFieldBegin('second_teammate_reach_steps', TType.I32, 3) + oprot.writeI32(self.second_teammate_reach_steps) + oprot.writeFieldEnd() + if self.first_opponent_reach_steps is not None: + oprot.writeFieldBegin('first_opponent_reach_steps', TType.I32, 4) + oprot.writeI32(self.first_opponent_reach_steps) + oprot.writeFieldEnd() + if self.second_opponent_reach_steps is not None: + oprot.writeFieldBegin('second_opponent_reach_steps', TType.I32, 5) + oprot.writeI32(self.second_opponent_reach_steps) + oprot.writeFieldEnd() + if self.first_teammate_id is not None: + oprot.writeFieldBegin('first_teammate_id', TType.I32, 6) + oprot.writeI32(self.first_teammate_id) + oprot.writeFieldEnd() + if self.second_teammate_id is not None: + oprot.writeFieldBegin('second_teammate_id', TType.I32, 7) + oprot.writeI32(self.second_teammate_id) + oprot.writeFieldEnd() + if self.first_opponent_id is not None: + oprot.writeFieldBegin('first_opponent_id', TType.I32, 8) + oprot.writeI32(self.first_opponent_id) + oprot.writeFieldEnd() + if self.second_opponent_id is not None: + oprot.writeFieldBegin('second_opponent_id', TType.I32, 9) + oprot.writeI32(self.second_opponent_id) + oprot.writeFieldEnd() + if self.self_intercept_info is not None: + oprot.writeFieldBegin('self_intercept_info', TType.LIST, 10) + oprot.writeListBegin(TType.STRUCT, len(self.self_intercept_info)) + for iter6 in self.self_intercept_info: + iter6.write(oprot) + oprot.writeListEnd() + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class WorldModel(object): + """ + Attributes: + - intercept_table + - our_team_name + - their_team_name + - our_side + - last_set_play_start_time + - myself + - ball + - teammates + - opponents + - unknowns + - our_players_dict + - their_players_dict + - our_goalie_uniform_number + - their_goalie_uniform_number + - offside_line_x + - offside_line_x_count + - kickable_teammate_id + - kickable_opponent_id + - last_kick_side + - last_kicker_uniform_number + - cycle + - game_mode_type + - left_team_score + - right_team_score + - is_our_set_play + - is_their_set_play + - stoped_cycle + - our_team_score + - their_team_score + - is_penalty_kick_mode + - helios_home_positions + + """ + + + def __init__(self, intercept_table=None, our_team_name=None, their_team_name=None, our_side=None, last_set_play_start_time=None, myself=None, ball=None, teammates=None, opponents=None, unknowns=None, our_players_dict=None, their_players_dict=None, our_goalie_uniform_number=None, their_goalie_uniform_number=None, offside_line_x=None, offside_line_x_count=None, kickable_teammate_id=None, kickable_opponent_id=None, last_kick_side=None, last_kicker_uniform_number=None, cycle=None, game_mode_type=None, left_team_score=None, right_team_score=None, is_our_set_play=None, is_their_set_play=None, stoped_cycle=None, our_team_score=None, their_team_score=None, is_penalty_kick_mode=None, helios_home_positions=None,): + self.intercept_table = intercept_table + self.our_team_name = our_team_name + self.their_team_name = their_team_name + self.our_side = our_side + self.last_set_play_start_time = last_set_play_start_time + self.myself = myself + self.ball = ball + self.teammates = teammates + self.opponents = opponents + self.unknowns = unknowns + self.our_players_dict = our_players_dict + self.their_players_dict = their_players_dict + self.our_goalie_uniform_number = our_goalie_uniform_number + self.their_goalie_uniform_number = their_goalie_uniform_number + self.offside_line_x = offside_line_x + self.offside_line_x_count = offside_line_x_count + self.kickable_teammate_id = kickable_teammate_id + self.kickable_opponent_id = kickable_opponent_id + self.last_kick_side = last_kick_side + self.last_kicker_uniform_number = last_kicker_uniform_number + self.cycle = cycle + self.game_mode_type = game_mode_type + self.left_team_score = left_team_score + self.right_team_score = right_team_score + self.is_our_set_play = is_our_set_play + self.is_their_set_play = is_their_set_play + self.stoped_cycle = stoped_cycle + self.our_team_score = our_team_score + self.their_team_score = their_team_score + self.is_penalty_kick_mode = is_penalty_kick_mode + self.helios_home_positions = helios_home_positions + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.intercept_table = InterceptTable() + self.intercept_table.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRING: + self.our_team_name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRING: + self.their_team_name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.I32: + self.our_side = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.I32: + self.last_set_play_start_time = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 6: + if ftype == TType.STRUCT: + self.myself = Self() + self.myself.read(iprot) + else: + iprot.skip(ftype) + elif fid == 7: + if ftype == TType.STRUCT: + self.ball = Ball() + self.ball.read(iprot) + else: + iprot.skip(ftype) + elif fid == 8: + if ftype == TType.LIST: + self.teammates = [] + (_etype10, _size7) = iprot.readListBegin() + for _i11 in range(_size7): + _elem12 = Player() + _elem12.read(iprot) + self.teammates.append(_elem12) + iprot.readListEnd() + else: + iprot.skip(ftype) + elif fid == 9: + if ftype == TType.LIST: + self.opponents = [] + (_etype16, _size13) = iprot.readListBegin() + for _i17 in range(_size13): + _elem18 = Player() + _elem18.read(iprot) + self.opponents.append(_elem18) + iprot.readListEnd() + else: + iprot.skip(ftype) + elif fid == 10: + if ftype == TType.LIST: + self.unknowns = [] + (_etype22, _size19) = iprot.readListBegin() + for _i23 in range(_size19): + _elem24 = Player() + _elem24.read(iprot) + self.unknowns.append(_elem24) + iprot.readListEnd() + else: + iprot.skip(ftype) + elif fid == 11: + if ftype == TType.MAP: + self.our_players_dict = {} + (_ktype26, _vtype27, _size25) = iprot.readMapBegin() + for _i29 in range(_size25): + _key30 = iprot.readI32() + _val31 = Player() + _val31.read(iprot) + self.our_players_dict[_key30] = _val31 + iprot.readMapEnd() + else: + iprot.skip(ftype) + elif fid == 12: + if ftype == TType.MAP: + self.their_players_dict = {} + (_ktype33, _vtype34, _size32) = iprot.readMapBegin() + for _i36 in range(_size32): + _key37 = iprot.readI32() + _val38 = Player() + _val38.read(iprot) + self.their_players_dict[_key37] = _val38 + iprot.readMapEnd() + else: + iprot.skip(ftype) + elif fid == 13: + if ftype == TType.I32: + self.our_goalie_uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 14: + if ftype == TType.I32: + self.their_goalie_uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 15: + if ftype == TType.DOUBLE: + self.offside_line_x = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 16: + if ftype == TType.I32: + self.offside_line_x_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 17: + if ftype == TType.I32: + self.kickable_teammate_id = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 18: + if ftype == TType.I32: + self.kickable_opponent_id = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 19: + if ftype == TType.I32: + self.last_kick_side = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 20: + if ftype == TType.I32: + self.last_kicker_uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 21: + if ftype == TType.I32: + self.cycle = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 22: + if ftype == TType.I32: + self.game_mode_type = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 23: + if ftype == TType.I32: + self.left_team_score = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 24: + if ftype == TType.I32: + self.right_team_score = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 25: + if ftype == TType.BOOL: + self.is_our_set_play = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 26: + if ftype == TType.BOOL: + self.is_their_set_play = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 27: + if ftype == TType.I32: + self.stoped_cycle = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 28: + if ftype == TType.I32: + self.our_team_score = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 29: + if ftype == TType.I32: + self.their_team_score = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 30: + if ftype == TType.BOOL: + self.is_penalty_kick_mode = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 31: + if ftype == TType.MAP: + self.helios_home_positions = {} + (_ktype40, _vtype41, _size39) = iprot.readMapBegin() + for _i43 in range(_size39): + _key44 = iprot.readI32() + _val45 = ThriftVector2D() + _val45.read(iprot) + self.helios_home_positions[_key44] = _val45 + iprot.readMapEnd() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('WorldModel') + if self.intercept_table is not None: + oprot.writeFieldBegin('intercept_table', TType.STRUCT, 1) + self.intercept_table.write(oprot) + oprot.writeFieldEnd() + if self.our_team_name is not None: + oprot.writeFieldBegin('our_team_name', TType.STRING, 2) + oprot.writeString(self.our_team_name.encode('utf-8') if sys.version_info[0] == 2 else self.our_team_name) + oprot.writeFieldEnd() + if self.their_team_name is not None: + oprot.writeFieldBegin('their_team_name', TType.STRING, 3) + oprot.writeString(self.their_team_name.encode('utf-8') if sys.version_info[0] == 2 else self.their_team_name) + oprot.writeFieldEnd() + if self.our_side is not None: + oprot.writeFieldBegin('our_side', TType.I32, 4) + oprot.writeI32(self.our_side) + oprot.writeFieldEnd() + if self.last_set_play_start_time is not None: + oprot.writeFieldBegin('last_set_play_start_time', TType.I32, 5) + oprot.writeI32(self.last_set_play_start_time) + oprot.writeFieldEnd() + if self.myself is not None: + oprot.writeFieldBegin('myself', TType.STRUCT, 6) + self.myself.write(oprot) + oprot.writeFieldEnd() + if self.ball is not None: + oprot.writeFieldBegin('ball', TType.STRUCT, 7) + self.ball.write(oprot) + oprot.writeFieldEnd() + if self.teammates is not None: + oprot.writeFieldBegin('teammates', TType.LIST, 8) + oprot.writeListBegin(TType.STRUCT, len(self.teammates)) + for iter46 in self.teammates: + iter46.write(oprot) + oprot.writeListEnd() + oprot.writeFieldEnd() + if self.opponents is not None: + oprot.writeFieldBegin('opponents', TType.LIST, 9) + oprot.writeListBegin(TType.STRUCT, len(self.opponents)) + for iter47 in self.opponents: + iter47.write(oprot) + oprot.writeListEnd() + oprot.writeFieldEnd() + if self.unknowns is not None: + oprot.writeFieldBegin('unknowns', TType.LIST, 10) + oprot.writeListBegin(TType.STRUCT, len(self.unknowns)) + for iter48 in self.unknowns: + iter48.write(oprot) + oprot.writeListEnd() + oprot.writeFieldEnd() + if self.our_players_dict is not None: + oprot.writeFieldBegin('our_players_dict', TType.MAP, 11) + oprot.writeMapBegin(TType.I32, TType.STRUCT, len(self.our_players_dict)) + for kiter49, viter50 in self.our_players_dict.items(): + oprot.writeI32(kiter49) + viter50.write(oprot) + oprot.writeMapEnd() + oprot.writeFieldEnd() + if self.their_players_dict is not None: + oprot.writeFieldBegin('their_players_dict', TType.MAP, 12) + oprot.writeMapBegin(TType.I32, TType.STRUCT, len(self.their_players_dict)) + for kiter51, viter52 in self.their_players_dict.items(): + oprot.writeI32(kiter51) + viter52.write(oprot) + oprot.writeMapEnd() + oprot.writeFieldEnd() + if self.our_goalie_uniform_number is not None: + oprot.writeFieldBegin('our_goalie_uniform_number', TType.I32, 13) + oprot.writeI32(self.our_goalie_uniform_number) + oprot.writeFieldEnd() + if self.their_goalie_uniform_number is not None: + oprot.writeFieldBegin('their_goalie_uniform_number', TType.I32, 14) + oprot.writeI32(self.their_goalie_uniform_number) + oprot.writeFieldEnd() + if self.offside_line_x is not None: + oprot.writeFieldBegin('offside_line_x', TType.DOUBLE, 15) + oprot.writeDouble(self.offside_line_x) + oprot.writeFieldEnd() + if self.offside_line_x_count is not None: + oprot.writeFieldBegin('offside_line_x_count', TType.I32, 16) + oprot.writeI32(self.offside_line_x_count) + oprot.writeFieldEnd() + if self.kickable_teammate_id is not None: + oprot.writeFieldBegin('kickable_teammate_id', TType.I32, 17) + oprot.writeI32(self.kickable_teammate_id) + oprot.writeFieldEnd() + if self.kickable_opponent_id is not None: + oprot.writeFieldBegin('kickable_opponent_id', TType.I32, 18) + oprot.writeI32(self.kickable_opponent_id) + oprot.writeFieldEnd() + if self.last_kick_side is not None: + oprot.writeFieldBegin('last_kick_side', TType.I32, 19) + oprot.writeI32(self.last_kick_side) + oprot.writeFieldEnd() + if self.last_kicker_uniform_number is not None: + oprot.writeFieldBegin('last_kicker_uniform_number', TType.I32, 20) + oprot.writeI32(self.last_kicker_uniform_number) + oprot.writeFieldEnd() + if self.cycle is not None: + oprot.writeFieldBegin('cycle', TType.I32, 21) + oprot.writeI32(self.cycle) + oprot.writeFieldEnd() + if self.game_mode_type is not None: + oprot.writeFieldBegin('game_mode_type', TType.I32, 22) + oprot.writeI32(self.game_mode_type) + oprot.writeFieldEnd() + if self.left_team_score is not None: + oprot.writeFieldBegin('left_team_score', TType.I32, 23) + oprot.writeI32(self.left_team_score) + oprot.writeFieldEnd() + if self.right_team_score is not None: + oprot.writeFieldBegin('right_team_score', TType.I32, 24) + oprot.writeI32(self.right_team_score) + oprot.writeFieldEnd() + if self.is_our_set_play is not None: + oprot.writeFieldBegin('is_our_set_play', TType.BOOL, 25) + oprot.writeBool(self.is_our_set_play) + oprot.writeFieldEnd() + if self.is_their_set_play is not None: + oprot.writeFieldBegin('is_their_set_play', TType.BOOL, 26) + oprot.writeBool(self.is_their_set_play) + oprot.writeFieldEnd() + if self.stoped_cycle is not None: + oprot.writeFieldBegin('stoped_cycle', TType.I32, 27) + oprot.writeI32(self.stoped_cycle) + oprot.writeFieldEnd() + if self.our_team_score is not None: + oprot.writeFieldBegin('our_team_score', TType.I32, 28) + oprot.writeI32(self.our_team_score) + oprot.writeFieldEnd() + if self.their_team_score is not None: + oprot.writeFieldBegin('their_team_score', TType.I32, 29) + oprot.writeI32(self.their_team_score) + oprot.writeFieldEnd() + if self.is_penalty_kick_mode is not None: + oprot.writeFieldBegin('is_penalty_kick_mode', TType.BOOL, 30) + oprot.writeBool(self.is_penalty_kick_mode) + oprot.writeFieldEnd() + if self.helios_home_positions is not None: + oprot.writeFieldBegin('helios_home_positions', TType.MAP, 31) + oprot.writeMapBegin(TType.I32, TType.STRUCT, len(self.helios_home_positions)) + for kiter53, viter54 in self.helios_home_positions.items(): + oprot.writeI32(kiter53) + viter54.write(oprot) + oprot.writeMapEnd() + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class State(object): + """ + Attributes: + - agent_type + - world_model + - full_world_model + + """ + + + def __init__(self, agent_type=None, world_model=None, full_world_model=None,): + self.agent_type = agent_type + self.world_model = world_model + self.full_world_model = full_world_model + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.agent_type = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.world_model = WorldModel() + self.world_model.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRUCT: + self.full_world_model = WorldModel() + self.full_world_model.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('State') + if self.agent_type is not None: + oprot.writeFieldBegin('agent_type', TType.I32, 1) + oprot.writeI32(self.agent_type) + oprot.writeFieldEnd() + if self.world_model is not None: + oprot.writeFieldBegin('world_model', TType.STRUCT, 2) + self.world_model.write(oprot) + oprot.writeFieldEnd() + if self.full_world_model is not None: + oprot.writeFieldBegin('full_world_model', TType.STRUCT, 3) + self.full_world_model.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class InitMessage(object): + """ + Attributes: + - agent_type + - debug_mode + + """ + + + def __init__(self, agent_type=None, debug_mode=None,): + self.agent_type = agent_type + self.debug_mode = debug_mode + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.agent_type = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.BOOL: + self.debug_mode = iprot.readBool() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('InitMessage') + if self.agent_type is not None: + oprot.writeFieldBegin('agent_type', TType.I32, 1) + oprot.writeI32(self.agent_type) + oprot.writeFieldEnd() + if self.debug_mode is not None: + oprot.writeFieldBegin('debug_mode', TType.BOOL, 2) + oprot.writeBool(self.debug_mode) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Dash(object): + """ + Attributes: + - power + - relative_direction + + """ + + + def __init__(self, power=None, relative_direction=None,): + self.power = power + self.relative_direction = relative_direction + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.DOUBLE: + self.power = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.DOUBLE: + self.relative_direction = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Dash') + if self.power is not None: + oprot.writeFieldBegin('power', TType.DOUBLE, 1) + oprot.writeDouble(self.power) + oprot.writeFieldEnd() + if self.relative_direction is not None: + oprot.writeFieldBegin('relative_direction', TType.DOUBLE, 2) + oprot.writeDouble(self.relative_direction) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Turn(object): + """ + Attributes: + - relative_direction + + """ + + + def __init__(self, relative_direction=None,): + self.relative_direction = relative_direction + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.DOUBLE: + self.relative_direction = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Turn') + if self.relative_direction is not None: + oprot.writeFieldBegin('relative_direction', TType.DOUBLE, 1) + oprot.writeDouble(self.relative_direction) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Kick(object): + """ + Attributes: + - power + - relative_direction + + """ + + + def __init__(self, power=None, relative_direction=None,): + self.power = power + self.relative_direction = relative_direction + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.DOUBLE: + self.power = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.DOUBLE: + self.relative_direction = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Kick') + if self.power is not None: + oprot.writeFieldBegin('power', TType.DOUBLE, 1) + oprot.writeDouble(self.power) + oprot.writeFieldEnd() + if self.relative_direction is not None: + oprot.writeFieldBegin('relative_direction', TType.DOUBLE, 2) + oprot.writeDouble(self.relative_direction) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Tackle(object): + """ + Attributes: + - power_or_dir + - foul + + """ + + + def __init__(self, power_or_dir=None, foul=None,): + self.power_or_dir = power_or_dir + self.foul = foul + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.DOUBLE: + self.power_or_dir = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.BOOL: + self.foul = iprot.readBool() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Tackle') + if self.power_or_dir is not None: + oprot.writeFieldBegin('power_or_dir', TType.DOUBLE, 1) + oprot.writeDouble(self.power_or_dir) + oprot.writeFieldEnd() + if self.foul is not None: + oprot.writeFieldBegin('foul', TType.BOOL, 2) + oprot.writeBool(self.foul) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Catch(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Catch') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Move(object): + """ + Attributes: + - x + - y + + """ + + + def __init__(self, x=None, y=None,): + self.x = x + self.y = y + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.DOUBLE: + self.x = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.DOUBLE: + self.y = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Move') + if self.x is not None: + oprot.writeFieldBegin('x', TType.DOUBLE, 1) + oprot.writeDouble(self.x) + oprot.writeFieldEnd() + if self.y is not None: + oprot.writeFieldBegin('y', TType.DOUBLE, 2) + oprot.writeDouble(self.y) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class TurnNeck(object): + """ + Attributes: + - moment + + """ + + + def __init__(self, moment=None,): + self.moment = moment + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.DOUBLE: + self.moment = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('TurnNeck') + if self.moment is not None: + oprot.writeFieldBegin('moment', TType.DOUBLE, 1) + oprot.writeDouble(self.moment) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class ChangeView(object): + """ + Attributes: + - view_width + + """ + + + def __init__(self, view_width=None,): + self.view_width = view_width + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.view_width = iprot.readI32() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('ChangeView') + if self.view_width is not None: + oprot.writeFieldBegin('view_width', TType.I32, 1) + oprot.writeI32(self.view_width) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class BallMessage(object): + """ + Attributes: + - ball_position + - ball_velocity + + """ + + + def __init__(self, ball_position=None, ball_velocity=None,): + self.ball_position = ball_position + self.ball_velocity = ball_velocity + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.ball_position = ThriftVector2D() + self.ball_position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.ball_velocity = ThriftVector2D() + self.ball_velocity.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('BallMessage') + if self.ball_position is not None: + oprot.writeFieldBegin('ball_position', TType.STRUCT, 1) + self.ball_position.write(oprot) + oprot.writeFieldEnd() + if self.ball_velocity is not None: + oprot.writeFieldBegin('ball_velocity', TType.STRUCT, 2) + self.ball_velocity.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class PassMessage(object): + """ + Attributes: + - receiver_uniform_number + - receiver_point + - ball_position + - ball_velocity + + """ + + + def __init__(self, receiver_uniform_number=None, receiver_point=None, ball_position=None, ball_velocity=None,): + self.receiver_uniform_number = receiver_uniform_number + self.receiver_point = receiver_point + self.ball_position = ball_position + self.ball_velocity = ball_velocity + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.receiver_uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.receiver_point = ThriftVector2D() + self.receiver_point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRUCT: + self.ball_position = ThriftVector2D() + self.ball_position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRUCT: + self.ball_velocity = ThriftVector2D() + self.ball_velocity.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('PassMessage') + if self.receiver_uniform_number is not None: + oprot.writeFieldBegin('receiver_uniform_number', TType.I32, 1) + oprot.writeI32(self.receiver_uniform_number) + oprot.writeFieldEnd() + if self.receiver_point is not None: + oprot.writeFieldBegin('receiver_point', TType.STRUCT, 2) + self.receiver_point.write(oprot) + oprot.writeFieldEnd() + if self.ball_position is not None: + oprot.writeFieldBegin('ball_position', TType.STRUCT, 3) + self.ball_position.write(oprot) + oprot.writeFieldEnd() + if self.ball_velocity is not None: + oprot.writeFieldBegin('ball_velocity', TType.STRUCT, 4) + self.ball_velocity.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class InterceptMessage(object): + """ + Attributes: + - our + - uniform_number + - cycle + + """ + + + def __init__(self, our=None, uniform_number=None, cycle=None,): + self.our = our + self.uniform_number = uniform_number + self.cycle = cycle + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.BOOL: + self.our = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.I32: + self.uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.I32: + self.cycle = iprot.readI32() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('InterceptMessage') + if self.our is not None: + oprot.writeFieldBegin('our', TType.BOOL, 1) + oprot.writeBool(self.our) + oprot.writeFieldEnd() + if self.uniform_number is not None: + oprot.writeFieldBegin('uniform_number', TType.I32, 2) + oprot.writeI32(self.uniform_number) + oprot.writeFieldEnd() + if self.cycle is not None: + oprot.writeFieldBegin('cycle', TType.I32, 3) + oprot.writeI32(self.cycle) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class GoalieMessage(object): + """ + Attributes: + - goalie_uniform_number + - goalie_position + - goalie_body_direction + + """ + + + def __init__(self, goalie_uniform_number=None, goalie_position=None, goalie_body_direction=None,): + self.goalie_uniform_number = goalie_uniform_number + self.goalie_position = goalie_position + self.goalie_body_direction = goalie_body_direction + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.goalie_uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.goalie_position = ThriftVector2D() + self.goalie_position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.DOUBLE: + self.goalie_body_direction = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('GoalieMessage') + if self.goalie_uniform_number is not None: + oprot.writeFieldBegin('goalie_uniform_number', TType.I32, 1) + oprot.writeI32(self.goalie_uniform_number) + oprot.writeFieldEnd() + if self.goalie_position is not None: + oprot.writeFieldBegin('goalie_position', TType.STRUCT, 2) + self.goalie_position.write(oprot) + oprot.writeFieldEnd() + if self.goalie_body_direction is not None: + oprot.writeFieldBegin('goalie_body_direction', TType.DOUBLE, 3) + oprot.writeDouble(self.goalie_body_direction) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class GoalieAndPlayerMessage(object): + """ + Attributes: + - goalie_uniform_number + - goalie_position + - goalie_body_direction + - player_uniform_number + - player_position + + """ + + + def __init__(self, goalie_uniform_number=None, goalie_position=None, goalie_body_direction=None, player_uniform_number=None, player_position=None,): + self.goalie_uniform_number = goalie_uniform_number + self.goalie_position = goalie_position + self.goalie_body_direction = goalie_body_direction + self.player_uniform_number = player_uniform_number + self.player_position = player_position + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.goalie_uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.goalie_position = ThriftVector2D() + self.goalie_position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.DOUBLE: + self.goalie_body_direction = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.I32: + self.player_uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.STRUCT: + self.player_position = ThriftVector2D() + self.player_position.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('GoalieAndPlayerMessage') + if self.goalie_uniform_number is not None: + oprot.writeFieldBegin('goalie_uniform_number', TType.I32, 1) + oprot.writeI32(self.goalie_uniform_number) + oprot.writeFieldEnd() + if self.goalie_position is not None: + oprot.writeFieldBegin('goalie_position', TType.STRUCT, 2) + self.goalie_position.write(oprot) + oprot.writeFieldEnd() + if self.goalie_body_direction is not None: + oprot.writeFieldBegin('goalie_body_direction', TType.DOUBLE, 3) + oprot.writeDouble(self.goalie_body_direction) + oprot.writeFieldEnd() + if self.player_uniform_number is not None: + oprot.writeFieldBegin('player_uniform_number', TType.I32, 4) + oprot.writeI32(self.player_uniform_number) + oprot.writeFieldEnd() + if self.player_position is not None: + oprot.writeFieldBegin('player_position', TType.STRUCT, 5) + self.player_position.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class OffsideLineMessage(object): + """ + Attributes: + - offside_line_x + + """ + + + def __init__(self, offside_line_x=None,): + self.offside_line_x = offside_line_x + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.DOUBLE: + self.offside_line_x = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('OffsideLineMessage') + if self.offside_line_x is not None: + oprot.writeFieldBegin('offside_line_x', TType.DOUBLE, 1) + oprot.writeDouble(self.offside_line_x) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class DefenseLineMessage(object): + """ + Attributes: + - defense_line_x + + """ + + + def __init__(self, defense_line_x=None,): + self.defense_line_x = defense_line_x + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.DOUBLE: + self.defense_line_x = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('DefenseLineMessage') + if self.defense_line_x is not None: + oprot.writeFieldBegin('defense_line_x', TType.DOUBLE, 1) + oprot.writeDouble(self.defense_line_x) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class WaitRequestMessage(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('WaitRequestMessage') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class SetplayMessage(object): + """ + Attributes: + - wait_step + + """ + + + def __init__(self, wait_step=None,): + self.wait_step = wait_step + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.wait_step = iprot.readI32() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('SetplayMessage') + if self.wait_step is not None: + oprot.writeFieldBegin('wait_step', TType.I32, 1) + oprot.writeI32(self.wait_step) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class PassRequestMessage(object): + """ + Attributes: + - target_point + + """ + + + def __init__(self, target_point=None,): + self.target_point = target_point + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.target_point = ThriftVector2D() + self.target_point.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('PassRequestMessage') + if self.target_point is not None: + oprot.writeFieldBegin('target_point', TType.STRUCT, 1) + self.target_point.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class StaminaMessage(object): + """ + Attributes: + - stamina + + """ + + + def __init__(self, stamina=None,): + self.stamina = stamina + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.DOUBLE: + self.stamina = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('StaminaMessage') + if self.stamina is not None: + oprot.writeFieldBegin('stamina', TType.DOUBLE, 1) + oprot.writeDouble(self.stamina) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class RecoveryMessage(object): + """ + Attributes: + - recovery + + """ + + + def __init__(self, recovery=None,): + self.recovery = recovery + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.DOUBLE: + self.recovery = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('RecoveryMessage') + if self.recovery is not None: + oprot.writeFieldBegin('recovery', TType.DOUBLE, 1) + oprot.writeDouble(self.recovery) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class StaminaCapacityMessage(object): + """ + Attributes: + - stamina_capacity + + """ + + + def __init__(self, stamina_capacity=None,): + self.stamina_capacity = stamina_capacity + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.DOUBLE: + self.stamina_capacity = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('StaminaCapacityMessage') + if self.stamina_capacity is not None: + oprot.writeFieldBegin('stamina_capacity', TType.DOUBLE, 1) + oprot.writeDouble(self.stamina_capacity) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class DribbleMessage(object): + """ + Attributes: + - target_point + - queue_count + + """ + + + def __init__(self, target_point=None, queue_count=None,): + self.target_point = target_point + self.queue_count = queue_count + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.target_point = ThriftVector2D() + self.target_point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.I32: + self.queue_count = iprot.readI32() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('DribbleMessage') + if self.target_point is not None: + oprot.writeFieldBegin('target_point', TType.STRUCT, 1) + self.target_point.write(oprot) + oprot.writeFieldEnd() + if self.queue_count is not None: + oprot.writeFieldBegin('queue_count', TType.I32, 2) + oprot.writeI32(self.queue_count) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class BallGoalieMessage(object): + """ + Attributes: + - ball_position + - ball_velocity + - goalie_position + - goalie_body_direction + + """ + + + def __init__(self, ball_position=None, ball_velocity=None, goalie_position=None, goalie_body_direction=None,): + self.ball_position = ball_position + self.ball_velocity = ball_velocity + self.goalie_position = goalie_position + self.goalie_body_direction = goalie_body_direction + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.ball_position = ThriftVector2D() + self.ball_position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.ball_velocity = ThriftVector2D() + self.ball_velocity.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRUCT: + self.goalie_position = ThriftVector2D() + self.goalie_position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.DOUBLE: + self.goalie_body_direction = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('BallGoalieMessage') + if self.ball_position is not None: + oprot.writeFieldBegin('ball_position', TType.STRUCT, 1) + self.ball_position.write(oprot) + oprot.writeFieldEnd() + if self.ball_velocity is not None: + oprot.writeFieldBegin('ball_velocity', TType.STRUCT, 2) + self.ball_velocity.write(oprot) + oprot.writeFieldEnd() + if self.goalie_position is not None: + oprot.writeFieldBegin('goalie_position', TType.STRUCT, 3) + self.goalie_position.write(oprot) + oprot.writeFieldEnd() + if self.goalie_body_direction is not None: + oprot.writeFieldBegin('goalie_body_direction', TType.DOUBLE, 4) + oprot.writeDouble(self.goalie_body_direction) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class OnePlayerMessage(object): + """ + Attributes: + - uniform_number + - position + + """ + + + def __init__(self, uniform_number=None, position=None,): + self.uniform_number = uniform_number + self.position = position + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.position = ThriftVector2D() + self.position.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('OnePlayerMessage') + if self.uniform_number is not None: + oprot.writeFieldBegin('uniform_number', TType.I32, 1) + oprot.writeI32(self.uniform_number) + oprot.writeFieldEnd() + if self.position is not None: + oprot.writeFieldBegin('position', TType.STRUCT, 2) + self.position.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class TwoPlayerMessage(object): + """ + Attributes: + - first_uniform_number + - first_position + - second_uniform_number + - second_position + + """ + + + def __init__(self, first_uniform_number=None, first_position=None, second_uniform_number=None, second_position=None,): + self.first_uniform_number = first_uniform_number + self.first_position = first_position + self.second_uniform_number = second_uniform_number + self.second_position = second_position + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.first_uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.first_position = ThriftVector2D() + self.first_position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.I32: + self.second_uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRUCT: + self.second_position = ThriftVector2D() + self.second_position.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('TwoPlayerMessage') + if self.first_uniform_number is not None: + oprot.writeFieldBegin('first_uniform_number', TType.I32, 1) + oprot.writeI32(self.first_uniform_number) + oprot.writeFieldEnd() + if self.first_position is not None: + oprot.writeFieldBegin('first_position', TType.STRUCT, 2) + self.first_position.write(oprot) + oprot.writeFieldEnd() + if self.second_uniform_number is not None: + oprot.writeFieldBegin('second_uniform_number', TType.I32, 3) + oprot.writeI32(self.second_uniform_number) + oprot.writeFieldEnd() + if self.second_position is not None: + oprot.writeFieldBegin('second_position', TType.STRUCT, 4) + self.second_position.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class ThreePlayerMessage(object): + """ + Attributes: + - first_uniform_number + - first_position + - second_uniform_number + - second_position + - third_uniform_number + - third_position + + """ + + + def __init__(self, first_uniform_number=None, first_position=None, second_uniform_number=None, second_position=None, third_uniform_number=None, third_position=None,): + self.first_uniform_number = first_uniform_number + self.first_position = first_position + self.second_uniform_number = second_uniform_number + self.second_position = second_position + self.third_uniform_number = third_uniform_number + self.third_position = third_position + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.first_uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.first_position = ThriftVector2D() + self.first_position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.I32: + self.second_uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRUCT: + self.second_position = ThriftVector2D() + self.second_position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.I32: + self.third_uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 6: + if ftype == TType.STRUCT: + self.third_position = ThriftVector2D() + self.third_position.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('ThreePlayerMessage') + if self.first_uniform_number is not None: + oprot.writeFieldBegin('first_uniform_number', TType.I32, 1) + oprot.writeI32(self.first_uniform_number) + oprot.writeFieldEnd() + if self.first_position is not None: + oprot.writeFieldBegin('first_position', TType.STRUCT, 2) + self.first_position.write(oprot) + oprot.writeFieldEnd() + if self.second_uniform_number is not None: + oprot.writeFieldBegin('second_uniform_number', TType.I32, 3) + oprot.writeI32(self.second_uniform_number) + oprot.writeFieldEnd() + if self.second_position is not None: + oprot.writeFieldBegin('second_position', TType.STRUCT, 4) + self.second_position.write(oprot) + oprot.writeFieldEnd() + if self.third_uniform_number is not None: + oprot.writeFieldBegin('third_uniform_number', TType.I32, 5) + oprot.writeI32(self.third_uniform_number) + oprot.writeFieldEnd() + if self.third_position is not None: + oprot.writeFieldBegin('third_position', TType.STRUCT, 6) + self.third_position.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class SelfMessage(object): + """ + Attributes: + - self_position + - self_body_direction + - self_stamina + + """ + + + def __init__(self, self_position=None, self_body_direction=None, self_stamina=None,): + self.self_position = self_position + self.self_body_direction = self_body_direction + self.self_stamina = self_stamina + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.self_position = ThriftVector2D() + self.self_position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.DOUBLE: + self.self_body_direction = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.DOUBLE: + self.self_stamina = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('SelfMessage') + if self.self_position is not None: + oprot.writeFieldBegin('self_position', TType.STRUCT, 1) + self.self_position.write(oprot) + oprot.writeFieldEnd() + if self.self_body_direction is not None: + oprot.writeFieldBegin('self_body_direction', TType.DOUBLE, 2) + oprot.writeDouble(self.self_body_direction) + oprot.writeFieldEnd() + if self.self_stamina is not None: + oprot.writeFieldBegin('self_stamina', TType.DOUBLE, 3) + oprot.writeDouble(self.self_stamina) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class TeammateMessage(object): + """ + Attributes: + - uniform_number + - position + - body_direction + + """ + + + def __init__(self, uniform_number=None, position=None, body_direction=None,): + self.uniform_number = uniform_number + self.position = position + self.body_direction = body_direction + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.position = ThriftVector2D() + self.position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.DOUBLE: + self.body_direction = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('TeammateMessage') + if self.uniform_number is not None: + oprot.writeFieldBegin('uniform_number', TType.I32, 1) + oprot.writeI32(self.uniform_number) + oprot.writeFieldEnd() + if self.position is not None: + oprot.writeFieldBegin('position', TType.STRUCT, 2) + self.position.write(oprot) + oprot.writeFieldEnd() + if self.body_direction is not None: + oprot.writeFieldBegin('body_direction', TType.DOUBLE, 3) + oprot.writeDouble(self.body_direction) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class OpponentMessage(object): + """ + Attributes: + - uniform_number + - position + - body_direction + + """ + + + def __init__(self, uniform_number=None, position=None, body_direction=None,): + self.uniform_number = uniform_number + self.position = position + self.body_direction = body_direction + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.position = ThriftVector2D() + self.position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.DOUBLE: + self.body_direction = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('OpponentMessage') + if self.uniform_number is not None: + oprot.writeFieldBegin('uniform_number', TType.I32, 1) + oprot.writeI32(self.uniform_number) + oprot.writeFieldEnd() + if self.position is not None: + oprot.writeFieldBegin('position', TType.STRUCT, 2) + self.position.write(oprot) + oprot.writeFieldEnd() + if self.body_direction is not None: + oprot.writeFieldBegin('body_direction', TType.DOUBLE, 3) + oprot.writeDouble(self.body_direction) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class BallPlayerMessage(object): + """ + Attributes: + - ball_position + - ball_velocity + - uniform_number + - player_position + - body_direction + + """ + + + def __init__(self, ball_position=None, ball_velocity=None, uniform_number=None, player_position=None, body_direction=None,): + self.ball_position = ball_position + self.ball_velocity = ball_velocity + self.uniform_number = uniform_number + self.player_position = player_position + self.body_direction = body_direction + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.ball_position = ThriftVector2D() + self.ball_position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.ball_velocity = ThriftVector2D() + self.ball_velocity.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.I32: + self.uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRUCT: + self.player_position = ThriftVector2D() + self.player_position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.DOUBLE: + self.body_direction = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('BallPlayerMessage') + if self.ball_position is not None: + oprot.writeFieldBegin('ball_position', TType.STRUCT, 1) + self.ball_position.write(oprot) + oprot.writeFieldEnd() + if self.ball_velocity is not None: + oprot.writeFieldBegin('ball_velocity', TType.STRUCT, 2) + self.ball_velocity.write(oprot) + oprot.writeFieldEnd() + if self.uniform_number is not None: + oprot.writeFieldBegin('uniform_number', TType.I32, 3) + oprot.writeI32(self.uniform_number) + oprot.writeFieldEnd() + if self.player_position is not None: + oprot.writeFieldBegin('player_position', TType.STRUCT, 4) + self.player_position.write(oprot) + oprot.writeFieldEnd() + if self.body_direction is not None: + oprot.writeFieldBegin('body_direction', TType.DOUBLE, 5) + oprot.writeDouble(self.body_direction) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Say(object): + """ + Attributes: + - ball_message + - pass_message + - intercept_message + - goalie_message + - goalie_and_player_message + - offside_line_message + - defense_line_message + - wait_request_message + - setplay_message + - pass_request_message + - stamina_message + - recovery_message + - stamina_capacity_message + - dribble_message + - ball_goalie_message + - one_player_message + - two_player_message + - three_player_message + - self_message + - teammate_message + - opponent_message + - ball_player_message + + """ + + + def __init__(self, ball_message=None, pass_message=None, intercept_message=None, goalie_message=None, goalie_and_player_message=None, offside_line_message=None, defense_line_message=None, wait_request_message=None, setplay_message=None, pass_request_message=None, stamina_message=None, recovery_message=None, stamina_capacity_message=None, dribble_message=None, ball_goalie_message=None, one_player_message=None, two_player_message=None, three_player_message=None, self_message=None, teammate_message=None, opponent_message=None, ball_player_message=None,): + self.ball_message = ball_message + self.pass_message = pass_message + self.intercept_message = intercept_message + self.goalie_message = goalie_message + self.goalie_and_player_message = goalie_and_player_message + self.offside_line_message = offside_line_message + self.defense_line_message = defense_line_message + self.wait_request_message = wait_request_message + self.setplay_message = setplay_message + self.pass_request_message = pass_request_message + self.stamina_message = stamina_message + self.recovery_message = recovery_message + self.stamina_capacity_message = stamina_capacity_message + self.dribble_message = dribble_message + self.ball_goalie_message = ball_goalie_message + self.one_player_message = one_player_message + self.two_player_message = two_player_message + self.three_player_message = three_player_message + self.self_message = self_message + self.teammate_message = teammate_message + self.opponent_message = opponent_message + self.ball_player_message = ball_player_message + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.ball_message = BallMessage() + self.ball_message.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.pass_message = PassMessage() + self.pass_message.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRUCT: + self.intercept_message = InterceptMessage() + self.intercept_message.read(iprot) + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRUCT: + self.goalie_message = GoalieMessage() + self.goalie_message.read(iprot) + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.STRUCT: + self.goalie_and_player_message = GoalieAndPlayerMessage() + self.goalie_and_player_message.read(iprot) + else: + iprot.skip(ftype) + elif fid == 6: + if ftype == TType.STRUCT: + self.offside_line_message = OffsideLineMessage() + self.offside_line_message.read(iprot) + else: + iprot.skip(ftype) + elif fid == 7: + if ftype == TType.STRUCT: + self.defense_line_message = DefenseLineMessage() + self.defense_line_message.read(iprot) + else: + iprot.skip(ftype) + elif fid == 8: + if ftype == TType.STRUCT: + self.wait_request_message = WaitRequestMessage() + self.wait_request_message.read(iprot) + else: + iprot.skip(ftype) + elif fid == 9: + if ftype == TType.STRUCT: + self.setplay_message = SetplayMessage() + self.setplay_message.read(iprot) + else: + iprot.skip(ftype) + elif fid == 10: + if ftype == TType.STRUCT: + self.pass_request_message = PassRequestMessage() + self.pass_request_message.read(iprot) + else: + iprot.skip(ftype) + elif fid == 11: + if ftype == TType.STRUCT: + self.stamina_message = StaminaMessage() + self.stamina_message.read(iprot) + else: + iprot.skip(ftype) + elif fid == 12: + if ftype == TType.STRUCT: + self.recovery_message = RecoveryMessage() + self.recovery_message.read(iprot) + else: + iprot.skip(ftype) + elif fid == 13: + if ftype == TType.STRUCT: + self.stamina_capacity_message = StaminaCapacityMessage() + self.stamina_capacity_message.read(iprot) + else: + iprot.skip(ftype) + elif fid == 14: + if ftype == TType.STRUCT: + self.dribble_message = DribbleMessage() + self.dribble_message.read(iprot) + else: + iprot.skip(ftype) + elif fid == 15: + if ftype == TType.STRUCT: + self.ball_goalie_message = BallGoalieMessage() + self.ball_goalie_message.read(iprot) + else: + iprot.skip(ftype) + elif fid == 16: + if ftype == TType.STRUCT: + self.one_player_message = OnePlayerMessage() + self.one_player_message.read(iprot) + else: + iprot.skip(ftype) + elif fid == 17: + if ftype == TType.STRUCT: + self.two_player_message = TwoPlayerMessage() + self.two_player_message.read(iprot) + else: + iprot.skip(ftype) + elif fid == 18: + if ftype == TType.STRUCT: + self.three_player_message = ThreePlayerMessage() + self.three_player_message.read(iprot) + else: + iprot.skip(ftype) + elif fid == 19: + if ftype == TType.STRUCT: + self.self_message = SelfMessage() + self.self_message.read(iprot) + else: + iprot.skip(ftype) + elif fid == 20: + if ftype == TType.STRUCT: + self.teammate_message = TeammateMessage() + self.teammate_message.read(iprot) + else: + iprot.skip(ftype) + elif fid == 21: + if ftype == TType.STRUCT: + self.opponent_message = OpponentMessage() + self.opponent_message.read(iprot) + else: + iprot.skip(ftype) + elif fid == 22: + if ftype == TType.STRUCT: + self.ball_player_message = BallPlayerMessage() + self.ball_player_message.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Say') + if self.ball_message is not None: + oprot.writeFieldBegin('ball_message', TType.STRUCT, 1) + self.ball_message.write(oprot) + oprot.writeFieldEnd() + if self.pass_message is not None: + oprot.writeFieldBegin('pass_message', TType.STRUCT, 2) + self.pass_message.write(oprot) + oprot.writeFieldEnd() + if self.intercept_message is not None: + oprot.writeFieldBegin('intercept_message', TType.STRUCT, 3) + self.intercept_message.write(oprot) + oprot.writeFieldEnd() + if self.goalie_message is not None: + oprot.writeFieldBegin('goalie_message', TType.STRUCT, 4) + self.goalie_message.write(oprot) + oprot.writeFieldEnd() + if self.goalie_and_player_message is not None: + oprot.writeFieldBegin('goalie_and_player_message', TType.STRUCT, 5) + self.goalie_and_player_message.write(oprot) + oprot.writeFieldEnd() + if self.offside_line_message is not None: + oprot.writeFieldBegin('offside_line_message', TType.STRUCT, 6) + self.offside_line_message.write(oprot) + oprot.writeFieldEnd() + if self.defense_line_message is not None: + oprot.writeFieldBegin('defense_line_message', TType.STRUCT, 7) + self.defense_line_message.write(oprot) + oprot.writeFieldEnd() + if self.wait_request_message is not None: + oprot.writeFieldBegin('wait_request_message', TType.STRUCT, 8) + self.wait_request_message.write(oprot) + oprot.writeFieldEnd() + if self.setplay_message is not None: + oprot.writeFieldBegin('setplay_message', TType.STRUCT, 9) + self.setplay_message.write(oprot) + oprot.writeFieldEnd() + if self.pass_request_message is not None: + oprot.writeFieldBegin('pass_request_message', TType.STRUCT, 10) + self.pass_request_message.write(oprot) + oprot.writeFieldEnd() + if self.stamina_message is not None: + oprot.writeFieldBegin('stamina_message', TType.STRUCT, 11) + self.stamina_message.write(oprot) + oprot.writeFieldEnd() + if self.recovery_message is not None: + oprot.writeFieldBegin('recovery_message', TType.STRUCT, 12) + self.recovery_message.write(oprot) + oprot.writeFieldEnd() + if self.stamina_capacity_message is not None: + oprot.writeFieldBegin('stamina_capacity_message', TType.STRUCT, 13) + self.stamina_capacity_message.write(oprot) + oprot.writeFieldEnd() + if self.dribble_message is not None: + oprot.writeFieldBegin('dribble_message', TType.STRUCT, 14) + self.dribble_message.write(oprot) + oprot.writeFieldEnd() + if self.ball_goalie_message is not None: + oprot.writeFieldBegin('ball_goalie_message', TType.STRUCT, 15) + self.ball_goalie_message.write(oprot) + oprot.writeFieldEnd() + if self.one_player_message is not None: + oprot.writeFieldBegin('one_player_message', TType.STRUCT, 16) + self.one_player_message.write(oprot) + oprot.writeFieldEnd() + if self.two_player_message is not None: + oprot.writeFieldBegin('two_player_message', TType.STRUCT, 17) + self.two_player_message.write(oprot) + oprot.writeFieldEnd() + if self.three_player_message is not None: + oprot.writeFieldBegin('three_player_message', TType.STRUCT, 18) + self.three_player_message.write(oprot) + oprot.writeFieldEnd() + if self.self_message is not None: + oprot.writeFieldBegin('self_message', TType.STRUCT, 19) + self.self_message.write(oprot) + oprot.writeFieldEnd() + if self.teammate_message is not None: + oprot.writeFieldBegin('teammate_message', TType.STRUCT, 20) + self.teammate_message.write(oprot) + oprot.writeFieldEnd() + if self.opponent_message is not None: + oprot.writeFieldBegin('opponent_message', TType.STRUCT, 21) + self.opponent_message.write(oprot) + oprot.writeFieldEnd() + if self.ball_player_message is not None: + oprot.writeFieldBegin('ball_player_message', TType.STRUCT, 22) + self.ball_player_message.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class PointTo(object): + """ + Attributes: + - x + - y + + """ + + + def __init__(self, x=None, y=None,): + self.x = x + self.y = y + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.DOUBLE: + self.x = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.DOUBLE: + self.y = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('PointTo') + if self.x is not None: + oprot.writeFieldBegin('x', TType.DOUBLE, 1) + oprot.writeDouble(self.x) + oprot.writeFieldEnd() + if self.y is not None: + oprot.writeFieldBegin('y', TType.DOUBLE, 2) + oprot.writeDouble(self.y) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class PointToOf(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('PointToOf') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class AttentionTo(object): + """ + Attributes: + - side + - unum + + """ + + + def __init__(self, side=None, unum=None,): + self.side = side + self.unum = unum + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.side = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.I32: + self.unum = iprot.readI32() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('AttentionTo') + if self.side is not None: + oprot.writeFieldBegin('side', TType.I32, 1) + oprot.writeI32(self.side) + oprot.writeFieldEnd() + if self.unum is not None: + oprot.writeFieldBegin('unum', TType.I32, 2) + oprot.writeI32(self.unum) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class AttentionToOf(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('AttentionToOf') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class AddText(object): + """ + Attributes: + - level + - message + + """ + + + def __init__(self, level=None, message=None,): + self.level = level + self.message = message + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.level = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRING: + self.message = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('AddText') + if self.level is not None: + oprot.writeFieldBegin('level', TType.I32, 1) + oprot.writeI32(self.level) + oprot.writeFieldEnd() + if self.message is not None: + oprot.writeFieldBegin('message', TType.STRING, 2) + oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class AddPoint(object): + """ + Attributes: + - level + - point + - color + + """ + + + def __init__(self, level=None, point=None, color=None,): + self.level = level + self.point = point + self.color = color + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.level = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.point = ThriftVector2D() + self.point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRING: + self.color = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('AddPoint') + if self.level is not None: + oprot.writeFieldBegin('level', TType.I32, 1) + oprot.writeI32(self.level) + oprot.writeFieldEnd() + if self.point is not None: + oprot.writeFieldBegin('point', TType.STRUCT, 2) + self.point.write(oprot) + oprot.writeFieldEnd() + if self.color is not None: + oprot.writeFieldBegin('color', TType.STRING, 3) + oprot.writeString(self.color.encode('utf-8') if sys.version_info[0] == 2 else self.color) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class AddLine(object): + """ + Attributes: + - level + - start_point + - end_point + - color + + """ + + + def __init__(self, level=None, start_point=None, end_point=None, color=None,): + self.level = level + self.start_point = start_point + self.end_point = end_point + self.color = color + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.level = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.start_point = ThriftVector2D() + self.start_point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRUCT: + self.end_point = ThriftVector2D() + self.end_point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRING: + self.color = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('AddLine') + if self.level is not None: + oprot.writeFieldBegin('level', TType.I32, 1) + oprot.writeI32(self.level) + oprot.writeFieldEnd() + if self.start_point is not None: + oprot.writeFieldBegin('start_point', TType.STRUCT, 2) + self.start_point.write(oprot) + oprot.writeFieldEnd() + if self.end_point is not None: + oprot.writeFieldBegin('end_point', TType.STRUCT, 3) + self.end_point.write(oprot) + oprot.writeFieldEnd() + if self.color is not None: + oprot.writeFieldBegin('color', TType.STRING, 4) + oprot.writeString(self.color.encode('utf-8') if sys.version_info[0] == 2 else self.color) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class AddArc(object): + """ + Attributes: + - level + - center + - radius + - start_angle + - span_angel + - color + + """ + + + def __init__(self, level=None, center=None, radius=None, start_angle=None, span_angel=None, color=None,): + self.level = level + self.center = center + self.radius = radius + self.start_angle = start_angle + self.span_angel = span_angel + self.color = color + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.level = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.center = ThriftVector2D() + self.center.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.DOUBLE: + self.radius = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.DOUBLE: + self.start_angle = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.DOUBLE: + self.span_angel = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 6: + if ftype == TType.STRING: + self.color = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('AddArc') + if self.level is not None: + oprot.writeFieldBegin('level', TType.I32, 1) + oprot.writeI32(self.level) + oprot.writeFieldEnd() + if self.center is not None: + oprot.writeFieldBegin('center', TType.STRUCT, 2) + self.center.write(oprot) + oprot.writeFieldEnd() + if self.radius is not None: + oprot.writeFieldBegin('radius', TType.DOUBLE, 3) + oprot.writeDouble(self.radius) + oprot.writeFieldEnd() + if self.start_angle is not None: + oprot.writeFieldBegin('start_angle', TType.DOUBLE, 4) + oprot.writeDouble(self.start_angle) + oprot.writeFieldEnd() + if self.span_angel is not None: + oprot.writeFieldBegin('span_angel', TType.DOUBLE, 5) + oprot.writeDouble(self.span_angel) + oprot.writeFieldEnd() + if self.color is not None: + oprot.writeFieldBegin('color', TType.STRING, 6) + oprot.writeString(self.color.encode('utf-8') if sys.version_info[0] == 2 else self.color) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class AddCircle(object): + """ + Attributes: + - level + - center + - radius + - color + - fill + + """ + + + def __init__(self, level=None, center=None, radius=None, color=None, fill=None,): + self.level = level + self.center = center + self.radius = radius + self.color = color + self.fill = fill + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.level = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.center = ThriftVector2D() + self.center.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.DOUBLE: + self.radius = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRING: + self.color = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.BOOL: + self.fill = iprot.readBool() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('AddCircle') + if self.level is not None: + oprot.writeFieldBegin('level', TType.I32, 1) + oprot.writeI32(self.level) + oprot.writeFieldEnd() + if self.center is not None: + oprot.writeFieldBegin('center', TType.STRUCT, 2) + self.center.write(oprot) + oprot.writeFieldEnd() + if self.radius is not None: + oprot.writeFieldBegin('radius', TType.DOUBLE, 3) + oprot.writeDouble(self.radius) + oprot.writeFieldEnd() + if self.color is not None: + oprot.writeFieldBegin('color', TType.STRING, 4) + oprot.writeString(self.color.encode('utf-8') if sys.version_info[0] == 2 else self.color) + oprot.writeFieldEnd() + if self.fill is not None: + oprot.writeFieldBegin('fill', TType.BOOL, 5) + oprot.writeBool(self.fill) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class AddTriangle(object): + """ + Attributes: + - level + - point1 + - point2 + - point3 + - color + - fill + + """ + + + def __init__(self, level=None, point1=None, point2=None, point3=None, color=None, fill=None,): + self.level = level + self.point1 = point1 + self.point2 = point2 + self.point3 = point3 + self.color = color + self.fill = fill + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.level = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.point1 = ThriftVector2D() + self.point1.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRUCT: + self.point2 = ThriftVector2D() + self.point2.read(iprot) + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRUCT: + self.point3 = ThriftVector2D() + self.point3.read(iprot) + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.STRING: + self.color = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 6: + if ftype == TType.BOOL: + self.fill = iprot.readBool() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('AddTriangle') + if self.level is not None: + oprot.writeFieldBegin('level', TType.I32, 1) + oprot.writeI32(self.level) + oprot.writeFieldEnd() + if self.point1 is not None: + oprot.writeFieldBegin('point1', TType.STRUCT, 2) + self.point1.write(oprot) + oprot.writeFieldEnd() + if self.point2 is not None: + oprot.writeFieldBegin('point2', TType.STRUCT, 3) + self.point2.write(oprot) + oprot.writeFieldEnd() + if self.point3 is not None: + oprot.writeFieldBegin('point3', TType.STRUCT, 4) + self.point3.write(oprot) + oprot.writeFieldEnd() + if self.color is not None: + oprot.writeFieldBegin('color', TType.STRING, 5) + oprot.writeString(self.color.encode('utf-8') if sys.version_info[0] == 2 else self.color) + oprot.writeFieldEnd() + if self.fill is not None: + oprot.writeFieldBegin('fill', TType.BOOL, 6) + oprot.writeBool(self.fill) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class AddRectangle(object): + """ + Attributes: + - level + - left + - top + - length + - width + - color + - fill + + """ + + + def __init__(self, level=None, left=None, top=None, length=None, width=None, color=None, fill=None,): + self.level = level + self.left = left + self.top = top + self.length = length + self.width = width + self.color = color + self.fill = fill + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.level = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.DOUBLE: + self.left = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.DOUBLE: + self.top = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.DOUBLE: + self.length = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.DOUBLE: + self.width = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 6: + if ftype == TType.STRING: + self.color = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 7: + if ftype == TType.BOOL: + self.fill = iprot.readBool() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('AddRectangle') + if self.level is not None: + oprot.writeFieldBegin('level', TType.I32, 1) + oprot.writeI32(self.level) + oprot.writeFieldEnd() + if self.left is not None: + oprot.writeFieldBegin('left', TType.DOUBLE, 2) + oprot.writeDouble(self.left) + oprot.writeFieldEnd() + if self.top is not None: + oprot.writeFieldBegin('top', TType.DOUBLE, 3) + oprot.writeDouble(self.top) + oprot.writeFieldEnd() + if self.length is not None: + oprot.writeFieldBegin('length', TType.DOUBLE, 4) + oprot.writeDouble(self.length) + oprot.writeFieldEnd() + if self.width is not None: + oprot.writeFieldBegin('width', TType.DOUBLE, 5) + oprot.writeDouble(self.width) + oprot.writeFieldEnd() + if self.color is not None: + oprot.writeFieldBegin('color', TType.STRING, 6) + oprot.writeString(self.color.encode('utf-8') if sys.version_info[0] == 2 else self.color) + oprot.writeFieldEnd() + if self.fill is not None: + oprot.writeFieldBegin('fill', TType.BOOL, 7) + oprot.writeBool(self.fill) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class AddSector(object): + """ + Attributes: + - level + - center + - min_radius + - max_radius + - start_angle + - span_angel + - color + - fill + + """ + + + def __init__(self, level=None, center=None, min_radius=None, max_radius=None, start_angle=None, span_angel=None, color=None, fill=None,): + self.level = level + self.center = center + self.min_radius = min_radius + self.max_radius = max_radius + self.start_angle = start_angle + self.span_angel = span_angel + self.color = color + self.fill = fill + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.level = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.center = ThriftVector2D() + self.center.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.DOUBLE: + self.min_radius = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.DOUBLE: + self.max_radius = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.DOUBLE: + self.start_angle = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 6: + if ftype == TType.DOUBLE: + self.span_angel = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 7: + if ftype == TType.STRING: + self.color = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 8: + if ftype == TType.BOOL: + self.fill = iprot.readBool() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('AddSector') + if self.level is not None: + oprot.writeFieldBegin('level', TType.I32, 1) + oprot.writeI32(self.level) + oprot.writeFieldEnd() + if self.center is not None: + oprot.writeFieldBegin('center', TType.STRUCT, 2) + self.center.write(oprot) + oprot.writeFieldEnd() + if self.min_radius is not None: + oprot.writeFieldBegin('min_radius', TType.DOUBLE, 3) + oprot.writeDouble(self.min_radius) + oprot.writeFieldEnd() + if self.max_radius is not None: + oprot.writeFieldBegin('max_radius', TType.DOUBLE, 4) + oprot.writeDouble(self.max_radius) + oprot.writeFieldEnd() + if self.start_angle is not None: + oprot.writeFieldBegin('start_angle', TType.DOUBLE, 5) + oprot.writeDouble(self.start_angle) + oprot.writeFieldEnd() + if self.span_angel is not None: + oprot.writeFieldBegin('span_angel', TType.DOUBLE, 6) + oprot.writeDouble(self.span_angel) + oprot.writeFieldEnd() + if self.color is not None: + oprot.writeFieldBegin('color', TType.STRING, 7) + oprot.writeString(self.color.encode('utf-8') if sys.version_info[0] == 2 else self.color) + oprot.writeFieldEnd() + if self.fill is not None: + oprot.writeFieldBegin('fill', TType.BOOL, 8) + oprot.writeBool(self.fill) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class AddMessage(object): + """ + Attributes: + - level + - position + - message + - color + + """ + + + def __init__(self, level=None, position=None, message=None, color=None,): + self.level = level + self.position = position + self.message = message + self.color = color + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.level = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.position = ThriftVector2D() + self.position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRING: + self.message = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRING: + self.color = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('AddMessage') + if self.level is not None: + oprot.writeFieldBegin('level', TType.I32, 1) + oprot.writeI32(self.level) + oprot.writeFieldEnd() + if self.position is not None: + oprot.writeFieldBegin('position', TType.STRUCT, 2) + self.position.write(oprot) + oprot.writeFieldEnd() + if self.message is not None: + oprot.writeFieldBegin('message', TType.STRING, 3) + oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message) + oprot.writeFieldEnd() + if self.color is not None: + oprot.writeFieldBegin('color', TType.STRING, 4) + oprot.writeString(self.color.encode('utf-8') if sys.version_info[0] == 2 else self.color) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Log(object): + """ + Attributes: + - add_text + - add_point + - add_line + - add_arc + - add_circle + - add_triangle + - add_rectangle + - add_sector + - add_message + + """ + + + def __init__(self, add_text=None, add_point=None, add_line=None, add_arc=None, add_circle=None, add_triangle=None, add_rectangle=None, add_sector=None, add_message=None,): + self.add_text = add_text + self.add_point = add_point + self.add_line = add_line + self.add_arc = add_arc + self.add_circle = add_circle + self.add_triangle = add_triangle + self.add_rectangle = add_rectangle + self.add_sector = add_sector + self.add_message = add_message + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.add_text = AddText() + self.add_text.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.add_point = AddPoint() + self.add_point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRUCT: + self.add_line = AddLine() + self.add_line.read(iprot) + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRUCT: + self.add_arc = AddArc() + self.add_arc.read(iprot) + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.STRUCT: + self.add_circle = AddCircle() + self.add_circle.read(iprot) + else: + iprot.skip(ftype) + elif fid == 6: + if ftype == TType.STRUCT: + self.add_triangle = AddTriangle() + self.add_triangle.read(iprot) + else: + iprot.skip(ftype) + elif fid == 7: + if ftype == TType.STRUCT: + self.add_rectangle = AddRectangle() + self.add_rectangle.read(iprot) + else: + iprot.skip(ftype) + elif fid == 8: + if ftype == TType.STRUCT: + self.add_sector = AddSector() + self.add_sector.read(iprot) + else: + iprot.skip(ftype) + elif fid == 9: + if ftype == TType.STRUCT: + self.add_message = AddMessage() + self.add_message.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Log') + if self.add_text is not None: + oprot.writeFieldBegin('add_text', TType.STRUCT, 1) + self.add_text.write(oprot) + oprot.writeFieldEnd() + if self.add_point is not None: + oprot.writeFieldBegin('add_point', TType.STRUCT, 2) + self.add_point.write(oprot) + oprot.writeFieldEnd() + if self.add_line is not None: + oprot.writeFieldBegin('add_line', TType.STRUCT, 3) + self.add_line.write(oprot) + oprot.writeFieldEnd() + if self.add_arc is not None: + oprot.writeFieldBegin('add_arc', TType.STRUCT, 4) + self.add_arc.write(oprot) + oprot.writeFieldEnd() + if self.add_circle is not None: + oprot.writeFieldBegin('add_circle', TType.STRUCT, 5) + self.add_circle.write(oprot) + oprot.writeFieldEnd() + if self.add_triangle is not None: + oprot.writeFieldBegin('add_triangle', TType.STRUCT, 6) + self.add_triangle.write(oprot) + oprot.writeFieldEnd() + if self.add_rectangle is not None: + oprot.writeFieldBegin('add_rectangle', TType.STRUCT, 7) + self.add_rectangle.write(oprot) + oprot.writeFieldEnd() + if self.add_sector is not None: + oprot.writeFieldBegin('add_sector', TType.STRUCT, 8) + self.add_sector.write(oprot) + oprot.writeFieldEnd() + if self.add_message is not None: + oprot.writeFieldBegin('add_message', TType.STRUCT, 9) + self.add_message.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class DebugClient(object): + """ + Attributes: + - message + + """ + + + def __init__(self, message=None,): + self.message = message + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRING: + self.message = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('DebugClient') + if self.message is not None: + oprot.writeFieldBegin('message', TType.STRING, 1) + oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Body_GoToPoint(object): + """ + Attributes: + - target_point + - distance_threshold + - max_dash_power + + """ + + + def __init__(self, target_point=None, distance_threshold=None, max_dash_power=None,): + self.target_point = target_point + self.distance_threshold = distance_threshold + self.max_dash_power = max_dash_power + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.target_point = ThriftVector2D() + self.target_point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.DOUBLE: + self.distance_threshold = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.DOUBLE: + self.max_dash_power = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Body_GoToPoint') + if self.target_point is not None: + oprot.writeFieldBegin('target_point', TType.STRUCT, 1) + self.target_point.write(oprot) + oprot.writeFieldEnd() + if self.distance_threshold is not None: + oprot.writeFieldBegin('distance_threshold', TType.DOUBLE, 2) + oprot.writeDouble(self.distance_threshold) + oprot.writeFieldEnd() + if self.max_dash_power is not None: + oprot.writeFieldBegin('max_dash_power', TType.DOUBLE, 3) + oprot.writeDouble(self.max_dash_power) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Body_SmartKick(object): + """ + Attributes: + - target_point + - first_speed + - first_speed_threshold + - max_steps + + """ + + + def __init__(self, target_point=None, first_speed=None, first_speed_threshold=None, max_steps=None,): + self.target_point = target_point + self.first_speed = first_speed + self.first_speed_threshold = first_speed_threshold + self.max_steps = max_steps + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.target_point = ThriftVector2D() + self.target_point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.DOUBLE: + self.first_speed = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.DOUBLE: + self.first_speed_threshold = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.I32: + self.max_steps = iprot.readI32() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Body_SmartKick') + if self.target_point is not None: + oprot.writeFieldBegin('target_point', TType.STRUCT, 1) + self.target_point.write(oprot) + oprot.writeFieldEnd() + if self.first_speed is not None: + oprot.writeFieldBegin('first_speed', TType.DOUBLE, 2) + oprot.writeDouble(self.first_speed) + oprot.writeFieldEnd() + if self.first_speed_threshold is not None: + oprot.writeFieldBegin('first_speed_threshold', TType.DOUBLE, 3) + oprot.writeDouble(self.first_speed_threshold) + oprot.writeFieldEnd() + if self.max_steps is not None: + oprot.writeFieldBegin('max_steps', TType.I32, 4) + oprot.writeI32(self.max_steps) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Bhv_BeforeKickOff(object): + """ + Attributes: + - point + + """ + + + def __init__(self, point=None,): + self.point = point + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.point = ThriftVector2D() + self.point.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Bhv_BeforeKickOff') + if self.point is not None: + oprot.writeFieldBegin('point', TType.STRUCT, 1) + self.point.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Bhv_BodyNeckToBall(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Bhv_BodyNeckToBall') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Bhv_BodyNeckToPoint(object): + """ + Attributes: + - point + + """ + + + def __init__(self, point=None,): + self.point = point + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.point = ThriftVector2D() + self.point.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Bhv_BodyNeckToPoint') + if self.point is not None: + oprot.writeFieldBegin('point', TType.STRUCT, 1) + self.point.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Bhv_Emergency(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Bhv_Emergency') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Bhv_GoToPointLookBall(object): + """ + Attributes: + - target_point + - distance_threshold + - max_dash_power + + """ + + + def __init__(self, target_point=None, distance_threshold=None, max_dash_power=None,): + self.target_point = target_point + self.distance_threshold = distance_threshold + self.max_dash_power = max_dash_power + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.target_point = ThriftVector2D() + self.target_point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.DOUBLE: + self.distance_threshold = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.DOUBLE: + self.max_dash_power = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Bhv_GoToPointLookBall') + if self.target_point is not None: + oprot.writeFieldBegin('target_point', TType.STRUCT, 1) + self.target_point.write(oprot) + oprot.writeFieldEnd() + if self.distance_threshold is not None: + oprot.writeFieldBegin('distance_threshold', TType.DOUBLE, 2) + oprot.writeDouble(self.distance_threshold) + oprot.writeFieldEnd() + if self.max_dash_power is not None: + oprot.writeFieldBegin('max_dash_power', TType.DOUBLE, 3) + oprot.writeDouble(self.max_dash_power) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Bhv_NeckBodyToBall(object): + """ + Attributes: + - angle_buf + + """ + + + def __init__(self, angle_buf=None,): + self.angle_buf = angle_buf + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.DOUBLE: + self.angle_buf = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Bhv_NeckBodyToBall') + if self.angle_buf is not None: + oprot.writeFieldBegin('angle_buf', TType.DOUBLE, 1) + oprot.writeDouble(self.angle_buf) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Bhv_NeckBodyToPoint(object): + """ + Attributes: + - point + - angle_buf + + """ + + + def __init__(self, point=None, angle_buf=None,): + self.point = point + self.angle_buf = angle_buf + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.point = ThriftVector2D() + self.point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.DOUBLE: + self.angle_buf = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Bhv_NeckBodyToPoint') + if self.point is not None: + oprot.writeFieldBegin('point', TType.STRUCT, 1) + self.point.write(oprot) + oprot.writeFieldEnd() + if self.angle_buf is not None: + oprot.writeFieldBegin('angle_buf', TType.DOUBLE, 2) + oprot.writeDouble(self.angle_buf) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Bhv_ScanField(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Bhv_ScanField') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Body_AdvanceBall(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Body_AdvanceBall') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Body_ClearBall(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Body_ClearBall') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Body_Dribble(object): + """ + Attributes: + - target_point + - distance_threshold + - dash_power + - dash_count + - dodge + + """ + + + def __init__(self, target_point=None, distance_threshold=None, dash_power=None, dash_count=None, dodge=None,): + self.target_point = target_point + self.distance_threshold = distance_threshold + self.dash_power = dash_power + self.dash_count = dash_count + self.dodge = dodge + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.target_point = ThriftVector2D() + self.target_point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.DOUBLE: + self.distance_threshold = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.DOUBLE: + self.dash_power = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.I32: + self.dash_count = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.BOOL: + self.dodge = iprot.readBool() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Body_Dribble') + if self.target_point is not None: + oprot.writeFieldBegin('target_point', TType.STRUCT, 1) + self.target_point.write(oprot) + oprot.writeFieldEnd() + if self.distance_threshold is not None: + oprot.writeFieldBegin('distance_threshold', TType.DOUBLE, 2) + oprot.writeDouble(self.distance_threshold) + oprot.writeFieldEnd() + if self.dash_power is not None: + oprot.writeFieldBegin('dash_power', TType.DOUBLE, 3) + oprot.writeDouble(self.dash_power) + oprot.writeFieldEnd() + if self.dash_count is not None: + oprot.writeFieldBegin('dash_count', TType.I32, 4) + oprot.writeI32(self.dash_count) + oprot.writeFieldEnd() + if self.dodge is not None: + oprot.writeFieldBegin('dodge', TType.BOOL, 5) + oprot.writeBool(self.dodge) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Body_GoToPointDodge(object): + """ + Attributes: + - target_point + - dash_power + + """ + + + def __init__(self, target_point=None, dash_power=None,): + self.target_point = target_point + self.dash_power = dash_power + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.target_point = ThriftVector2D() + self.target_point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.DOUBLE: + self.dash_power = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Body_GoToPointDodge') + if self.target_point is not None: + oprot.writeFieldBegin('target_point', TType.STRUCT, 1) + self.target_point.write(oprot) + oprot.writeFieldEnd() + if self.dash_power is not None: + oprot.writeFieldBegin('dash_power', TType.DOUBLE, 2) + oprot.writeDouble(self.dash_power) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Body_HoldBall(object): + """ + Attributes: + - do_turn + - turn_target_point + - kick_target_point + + """ + + + def __init__(self, do_turn=None, turn_target_point=None, kick_target_point=None,): + self.do_turn = do_turn + self.turn_target_point = turn_target_point + self.kick_target_point = kick_target_point + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.BOOL: + self.do_turn = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.turn_target_point = ThriftVector2D() + self.turn_target_point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRUCT: + self.kick_target_point = ThriftVector2D() + self.kick_target_point.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Body_HoldBall') + if self.do_turn is not None: + oprot.writeFieldBegin('do_turn', TType.BOOL, 1) + oprot.writeBool(self.do_turn) + oprot.writeFieldEnd() + if self.turn_target_point is not None: + oprot.writeFieldBegin('turn_target_point', TType.STRUCT, 2) + self.turn_target_point.write(oprot) + oprot.writeFieldEnd() + if self.kick_target_point is not None: + oprot.writeFieldBegin('kick_target_point', TType.STRUCT, 3) + self.kick_target_point.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Body_Intercept(object): + """ + Attributes: + - save_recovery + - face_point + + """ + + + def __init__(self, save_recovery=None, face_point=None,): + self.save_recovery = save_recovery + self.face_point = face_point + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.BOOL: + self.save_recovery = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.face_point = ThriftVector2D() + self.face_point.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Body_Intercept') + if self.save_recovery is not None: + oprot.writeFieldBegin('save_recovery', TType.BOOL, 1) + oprot.writeBool(self.save_recovery) + oprot.writeFieldEnd() + if self.face_point is not None: + oprot.writeFieldBegin('face_point', TType.STRUCT, 2) + self.face_point.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Body_KickOneStep(object): + """ + Attributes: + - target_point + - first_speed + - force_mode + + """ + + + def __init__(self, target_point=None, first_speed=None, force_mode=None,): + self.target_point = target_point + self.first_speed = first_speed + self.force_mode = force_mode + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.target_point = ThriftVector2D() + self.target_point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.DOUBLE: + self.first_speed = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.BOOL: + self.force_mode = iprot.readBool() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Body_KickOneStep') + if self.target_point is not None: + oprot.writeFieldBegin('target_point', TType.STRUCT, 1) + self.target_point.write(oprot) + oprot.writeFieldEnd() + if self.first_speed is not None: + oprot.writeFieldBegin('first_speed', TType.DOUBLE, 2) + oprot.writeDouble(self.first_speed) + oprot.writeFieldEnd() + if self.force_mode is not None: + oprot.writeFieldBegin('force_mode', TType.BOOL, 3) + oprot.writeBool(self.force_mode) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Body_StopBall(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Body_StopBall') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Body_StopDash(object): + """ + Attributes: + - save_recovery + + """ + + + def __init__(self, save_recovery=None,): + self.save_recovery = save_recovery + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.BOOL: + self.save_recovery = iprot.readBool() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Body_StopDash') + if self.save_recovery is not None: + oprot.writeFieldBegin('save_recovery', TType.BOOL, 1) + oprot.writeBool(self.save_recovery) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Body_TackleToPoint(object): + """ + Attributes: + - target_point + - min_probability + - min_speed + + """ + + + def __init__(self, target_point=None, min_probability=None, min_speed=None,): + self.target_point = target_point + self.min_probability = min_probability + self.min_speed = min_speed + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.target_point = ThriftVector2D() + self.target_point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.DOUBLE: + self.min_probability = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.DOUBLE: + self.min_speed = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Body_TackleToPoint') + if self.target_point is not None: + oprot.writeFieldBegin('target_point', TType.STRUCT, 1) + self.target_point.write(oprot) + oprot.writeFieldEnd() + if self.min_probability is not None: + oprot.writeFieldBegin('min_probability', TType.DOUBLE, 2) + oprot.writeDouble(self.min_probability) + oprot.writeFieldEnd() + if self.min_speed is not None: + oprot.writeFieldBegin('min_speed', TType.DOUBLE, 3) + oprot.writeDouble(self.min_speed) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Body_TurnToAngle(object): + """ + Attributes: + - angle + + """ + + + def __init__(self, angle=None,): + self.angle = angle + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.DOUBLE: + self.angle = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Body_TurnToAngle') + if self.angle is not None: + oprot.writeFieldBegin('angle', TType.DOUBLE, 1) + oprot.writeDouble(self.angle) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Body_TurnToBall(object): + """ + Attributes: + - cycle + + """ + + + def __init__(self, cycle=None,): + self.cycle = cycle + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.cycle = iprot.readI32() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Body_TurnToBall') + if self.cycle is not None: + oprot.writeFieldBegin('cycle', TType.I32, 1) + oprot.writeI32(self.cycle) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Body_TurnToPoint(object): + """ + Attributes: + - target_point + - cycle + + """ + + + def __init__(self, target_point=None, cycle=None,): + self.target_point = target_point + self.cycle = cycle + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.target_point = ThriftVector2D() + self.target_point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.I32: + self.cycle = iprot.readI32() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Body_TurnToPoint') + if self.target_point is not None: + oprot.writeFieldBegin('target_point', TType.STRUCT, 1) + self.target_point.write(oprot) + oprot.writeFieldEnd() + if self.cycle is not None: + oprot.writeFieldBegin('cycle', TType.I32, 2) + oprot.writeI32(self.cycle) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Focus_MoveToPoint(object): + """ + Attributes: + - target_point + + """ + + + def __init__(self, target_point=None,): + self.target_point = target_point + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.target_point = ThriftVector2D() + self.target_point.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Focus_MoveToPoint') + if self.target_point is not None: + oprot.writeFieldBegin('target_point', TType.STRUCT, 1) + self.target_point.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Focus_Reset(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Focus_Reset') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Neck_ScanField(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Neck_ScanField') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Neck_ScanPlayers(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Neck_ScanPlayers') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Neck_TurnToBallAndPlayer(object): + """ + Attributes: + - side + - uniform_number + - count_threshold + + """ + + + def __init__(self, side=None, uniform_number=None, count_threshold=None,): + self.side = side + self.uniform_number = uniform_number + self.count_threshold = count_threshold + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.side = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.I32: + self.uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.I32: + self.count_threshold = iprot.readI32() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Neck_TurnToBallAndPlayer') + if self.side is not None: + oprot.writeFieldBegin('side', TType.I32, 1) + oprot.writeI32(self.side) + oprot.writeFieldEnd() + if self.uniform_number is not None: + oprot.writeFieldBegin('uniform_number', TType.I32, 2) + oprot.writeI32(self.uniform_number) + oprot.writeFieldEnd() + if self.count_threshold is not None: + oprot.writeFieldBegin('count_threshold', TType.I32, 3) + oprot.writeI32(self.count_threshold) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Neck_TurnToBallOrScan(object): + """ + Attributes: + - count_threshold + + """ + + + def __init__(self, count_threshold=None,): + self.count_threshold = count_threshold + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.count_threshold = iprot.readI32() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Neck_TurnToBallOrScan') + if self.count_threshold is not None: + oprot.writeFieldBegin('count_threshold', TType.I32, 1) + oprot.writeI32(self.count_threshold) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Neck_TurnToBall(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Neck_TurnToBall') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Neck_TurnToGoalieOrScan(object): + """ + Attributes: + - count_threshold + + """ + + + def __init__(self, count_threshold=None,): + self.count_threshold = count_threshold + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.count_threshold = iprot.readI32() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Neck_TurnToGoalieOrScan') + if self.count_threshold is not None: + oprot.writeFieldBegin('count_threshold', TType.I32, 1) + oprot.writeI32(self.count_threshold) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Neck_TurnToLowConfTeammate(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Neck_TurnToLowConfTeammate') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Neck_TurnToPlayerOrScan(object): + """ + Attributes: + - side + - uniform_number + - count_threshold + + """ + + + def __init__(self, side=None, uniform_number=None, count_threshold=None,): + self.side = side + self.uniform_number = uniform_number + self.count_threshold = count_threshold + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.side = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.I32: + self.uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.I32: + self.count_threshold = iprot.readI32() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Neck_TurnToPlayerOrScan') + if self.side is not None: + oprot.writeFieldBegin('side', TType.I32, 1) + oprot.writeI32(self.side) + oprot.writeFieldEnd() + if self.uniform_number is not None: + oprot.writeFieldBegin('uniform_number', TType.I32, 2) + oprot.writeI32(self.uniform_number) + oprot.writeFieldEnd() + if self.count_threshold is not None: + oprot.writeFieldBegin('count_threshold', TType.I32, 3) + oprot.writeI32(self.count_threshold) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Neck_TurnToPoint(object): + """ + Attributes: + - target_point + + """ + + + def __init__(self, target_point=None,): + self.target_point = target_point + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.target_point = ThriftVector2D() + self.target_point.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Neck_TurnToPoint') + if self.target_point is not None: + oprot.writeFieldBegin('target_point', TType.STRUCT, 1) + self.target_point.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Neck_TurnToRelative(object): + """ + Attributes: + - angle + + """ + + + def __init__(self, angle=None,): + self.angle = angle + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.DOUBLE: + self.angle = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Neck_TurnToRelative') + if self.angle is not None: + oprot.writeFieldBegin('angle', TType.DOUBLE, 1) + oprot.writeDouble(self.angle) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class View_ChangeWidth(object): + """ + Attributes: + - view_width + + """ + + + def __init__(self, view_width=None,): + self.view_width = view_width + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.view_width = iprot.readI32() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('View_ChangeWidth') + if self.view_width is not None: + oprot.writeFieldBegin('view_width', TType.I32, 1) + oprot.writeI32(self.view_width) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class View_Normal(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('View_Normal') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class View_Synch(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('View_Synch') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class View_Wide(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('View_Wide') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class HeliosGoalie(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('HeliosGoalie') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class HeliosGoalieMove(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('HeliosGoalieMove') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class HeliosGoalieKick(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('HeliosGoalieKick') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class HeliosShoot(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('HeliosShoot') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class HeliosChainAction(object): + """ + Attributes: + - direct_pass + - lead_pass + - through_pass + - short_dribble + - long_dribble + - cross + - simple_pass + - simple_dribble + - simple_shoot + + """ + + + def __init__(self, direct_pass=None, lead_pass=None, through_pass=None, short_dribble=None, long_dribble=None, cross=None, simple_pass=None, simple_dribble=None, simple_shoot=None,): + self.direct_pass = direct_pass + self.lead_pass = lead_pass + self.through_pass = through_pass + self.short_dribble = short_dribble + self.long_dribble = long_dribble + self.cross = cross + self.simple_pass = simple_pass + self.simple_dribble = simple_dribble + self.simple_shoot = simple_shoot + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.BOOL: + self.direct_pass = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.BOOL: + self.lead_pass = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.BOOL: + self.through_pass = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.BOOL: + self.short_dribble = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.BOOL: + self.long_dribble = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 6: + if ftype == TType.BOOL: + self.cross = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 7: + if ftype == TType.BOOL: + self.simple_pass = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 8: + if ftype == TType.BOOL: + self.simple_dribble = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 9: + if ftype == TType.BOOL: + self.simple_shoot = iprot.readBool() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('HeliosChainAction') + if self.direct_pass is not None: + oprot.writeFieldBegin('direct_pass', TType.BOOL, 1) + oprot.writeBool(self.direct_pass) + oprot.writeFieldEnd() + if self.lead_pass is not None: + oprot.writeFieldBegin('lead_pass', TType.BOOL, 2) + oprot.writeBool(self.lead_pass) + oprot.writeFieldEnd() + if self.through_pass is not None: + oprot.writeFieldBegin('through_pass', TType.BOOL, 3) + oprot.writeBool(self.through_pass) + oprot.writeFieldEnd() + if self.short_dribble is not None: + oprot.writeFieldBegin('short_dribble', TType.BOOL, 4) + oprot.writeBool(self.short_dribble) + oprot.writeFieldEnd() + if self.long_dribble is not None: + oprot.writeFieldBegin('long_dribble', TType.BOOL, 5) + oprot.writeBool(self.long_dribble) + oprot.writeFieldEnd() + if self.cross is not None: + oprot.writeFieldBegin('cross', TType.BOOL, 6) + oprot.writeBool(self.cross) + oprot.writeFieldEnd() + if self.simple_pass is not None: + oprot.writeFieldBegin('simple_pass', TType.BOOL, 7) + oprot.writeBool(self.simple_pass) + oprot.writeFieldEnd() + if self.simple_dribble is not None: + oprot.writeFieldBegin('simple_dribble', TType.BOOL, 8) + oprot.writeBool(self.simple_dribble) + oprot.writeFieldEnd() + if self.simple_shoot is not None: + oprot.writeFieldBegin('simple_shoot', TType.BOOL, 9) + oprot.writeBool(self.simple_shoot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class HeliosBasicOffensive(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('HeliosBasicOffensive') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class HeliosBasicMove(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('HeliosBasicMove') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class HeliosSetPlay(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('HeliosSetPlay') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class HeliosPenalty(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('HeliosPenalty') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class HeliosCommunicaion(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('HeliosCommunicaion') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class PlayerAction(object): + """ + Attributes: + - dash + - turn + - kick + - tackle + - catch_action + - move + - turn_neck + - change_view + - say + - point_to + - point_to_of + - attention_to + - attention_to_of + - log + - debug_client + - body_go_to_point + - body_smart_kick + - bhv_before_kick_off + - bhv_body_neck_to_ball + - bhv_body_neck_to_point + - bhv_emergency + - bhv_go_to_point_look_ball + - bhv_neck_body_to_ball + - bhv_neck_body_to_point + - bhv_scan_field + - body_advance_ball + - body_clear_ball + - body_dribble + - body_go_to_point_dodge + - body_hold_ball + - body_intercept + - body_kick_one_step + - body_stop_ball + - body_stop_dash + - body_tackle_to_point + - body_turn_to_angle + - body_turn_to_ball + - body_turn_to_point + - focus_move_to_point + - focus_reset + - neck_scan_field + - neck_scan_players + - neck_turn_to_ball_and_player + - neck_turn_to_ball_or_scan + - neck_turn_to_ball + - neck_turn_to_goalie_or_scan + - neck_turn_to_low_conf_teammate + - neck_turn_to_player_or_scan + - neck_turn_to_point + - neck_turn_to_relative + - view_change_width + - view_normal + - view_synch + - view_wide + - helios_goalie + - helios_goalie_move + - helios_goalie_kick + - helios_shoot + - helios_chain_action + - helios_basic_offensive + - helios_basic_move + - helios_set_play + - helios_penalty + - helios_communication + + """ + + + def __init__(self, dash=None, turn=None, kick=None, tackle=None, catch_action=None, move=None, turn_neck=None, change_view=None, say=None, point_to=None, point_to_of=None, attention_to=None, attention_to_of=None, log=None, debug_client=None, body_go_to_point=None, body_smart_kick=None, bhv_before_kick_off=None, bhv_body_neck_to_ball=None, bhv_body_neck_to_point=None, bhv_emergency=None, bhv_go_to_point_look_ball=None, bhv_neck_body_to_ball=None, bhv_neck_body_to_point=None, bhv_scan_field=None, body_advance_ball=None, body_clear_ball=None, body_dribble=None, body_go_to_point_dodge=None, body_hold_ball=None, body_intercept=None, body_kick_one_step=None, body_stop_ball=None, body_stop_dash=None, body_tackle_to_point=None, body_turn_to_angle=None, body_turn_to_ball=None, body_turn_to_point=None, focus_move_to_point=None, focus_reset=None, neck_scan_field=None, neck_scan_players=None, neck_turn_to_ball_and_player=None, neck_turn_to_ball_or_scan=None, neck_turn_to_ball=None, neck_turn_to_goalie_or_scan=None, neck_turn_to_low_conf_teammate=None, neck_turn_to_player_or_scan=None, neck_turn_to_point=None, neck_turn_to_relative=None, view_change_width=None, view_normal=None, view_synch=None, view_wide=None, helios_goalie=None, helios_goalie_move=None, helios_goalie_kick=None, helios_shoot=None, helios_chain_action=None, helios_basic_offensive=None, helios_basic_move=None, helios_set_play=None, helios_penalty=None, helios_communication=None,): + self.dash = dash + self.turn = turn + self.kick = kick + self.tackle = tackle + self.catch_action = catch_action + self.move = move + self.turn_neck = turn_neck + self.change_view = change_view + self.say = say + self.point_to = point_to + self.point_to_of = point_to_of + self.attention_to = attention_to + self.attention_to_of = attention_to_of + self.log = log + self.debug_client = debug_client + self.body_go_to_point = body_go_to_point + self.body_smart_kick = body_smart_kick + self.bhv_before_kick_off = bhv_before_kick_off + self.bhv_body_neck_to_ball = bhv_body_neck_to_ball + self.bhv_body_neck_to_point = bhv_body_neck_to_point + self.bhv_emergency = bhv_emergency + self.bhv_go_to_point_look_ball = bhv_go_to_point_look_ball + self.bhv_neck_body_to_ball = bhv_neck_body_to_ball + self.bhv_neck_body_to_point = bhv_neck_body_to_point + self.bhv_scan_field = bhv_scan_field + self.body_advance_ball = body_advance_ball + self.body_clear_ball = body_clear_ball + self.body_dribble = body_dribble + self.body_go_to_point_dodge = body_go_to_point_dodge + self.body_hold_ball = body_hold_ball + self.body_intercept = body_intercept + self.body_kick_one_step = body_kick_one_step + self.body_stop_ball = body_stop_ball + self.body_stop_dash = body_stop_dash + self.body_tackle_to_point = body_tackle_to_point + self.body_turn_to_angle = body_turn_to_angle + self.body_turn_to_ball = body_turn_to_ball + self.body_turn_to_point = body_turn_to_point + self.focus_move_to_point = focus_move_to_point + self.focus_reset = focus_reset + self.neck_scan_field = neck_scan_field + self.neck_scan_players = neck_scan_players + self.neck_turn_to_ball_and_player = neck_turn_to_ball_and_player + self.neck_turn_to_ball_or_scan = neck_turn_to_ball_or_scan + self.neck_turn_to_ball = neck_turn_to_ball + self.neck_turn_to_goalie_or_scan = neck_turn_to_goalie_or_scan + self.neck_turn_to_low_conf_teammate = neck_turn_to_low_conf_teammate + self.neck_turn_to_player_or_scan = neck_turn_to_player_or_scan + self.neck_turn_to_point = neck_turn_to_point + self.neck_turn_to_relative = neck_turn_to_relative + self.view_change_width = view_change_width + self.view_normal = view_normal + self.view_synch = view_synch + self.view_wide = view_wide + self.helios_goalie = helios_goalie + self.helios_goalie_move = helios_goalie_move + self.helios_goalie_kick = helios_goalie_kick + self.helios_shoot = helios_shoot + self.helios_chain_action = helios_chain_action + self.helios_basic_offensive = helios_basic_offensive + self.helios_basic_move = helios_basic_move + self.helios_set_play = helios_set_play + self.helios_penalty = helios_penalty + self.helios_communication = helios_communication + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.dash = Dash() + self.dash.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.turn = Turn() + self.turn.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRUCT: + self.kick = Kick() + self.kick.read(iprot) + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRUCT: + self.tackle = Tackle() + self.tackle.read(iprot) + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.STRUCT: + self.catch_action = Catch() + self.catch_action.read(iprot) + else: + iprot.skip(ftype) + elif fid == 6: + if ftype == TType.STRUCT: + self.move = Move() + self.move.read(iprot) + else: + iprot.skip(ftype) + elif fid == 7: + if ftype == TType.STRUCT: + self.turn_neck = TurnNeck() + self.turn_neck.read(iprot) + else: + iprot.skip(ftype) + elif fid == 8: + if ftype == TType.STRUCT: + self.change_view = ChangeView() + self.change_view.read(iprot) + else: + iprot.skip(ftype) + elif fid == 9: + if ftype == TType.STRUCT: + self.say = Say() + self.say.read(iprot) + else: + iprot.skip(ftype) + elif fid == 10: + if ftype == TType.STRUCT: + self.point_to = PointTo() + self.point_to.read(iprot) + else: + iprot.skip(ftype) + elif fid == 11: + if ftype == TType.STRUCT: + self.point_to_of = PointToOf() + self.point_to_of.read(iprot) + else: + iprot.skip(ftype) + elif fid == 12: + if ftype == TType.STRUCT: + self.attention_to = AttentionTo() + self.attention_to.read(iprot) + else: + iprot.skip(ftype) + elif fid == 13: + if ftype == TType.STRUCT: + self.attention_to_of = AttentionToOf() + self.attention_to_of.read(iprot) + else: + iprot.skip(ftype) + elif fid == 14: + if ftype == TType.STRUCT: + self.log = Log() + self.log.read(iprot) + else: + iprot.skip(ftype) + elif fid == 15: + if ftype == TType.STRUCT: + self.debug_client = DebugClient() + self.debug_client.read(iprot) + else: + iprot.skip(ftype) + elif fid == 16: + if ftype == TType.STRUCT: + self.body_go_to_point = Body_GoToPoint() + self.body_go_to_point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 17: + if ftype == TType.STRUCT: + self.body_smart_kick = Body_SmartKick() + self.body_smart_kick.read(iprot) + else: + iprot.skip(ftype) + elif fid == 18: + if ftype == TType.STRUCT: + self.bhv_before_kick_off = Bhv_BeforeKickOff() + self.bhv_before_kick_off.read(iprot) + else: + iprot.skip(ftype) + elif fid == 19: + if ftype == TType.STRUCT: + self.bhv_body_neck_to_ball = Bhv_BodyNeckToBall() + self.bhv_body_neck_to_ball.read(iprot) + else: + iprot.skip(ftype) + elif fid == 20: + if ftype == TType.STRUCT: + self.bhv_body_neck_to_point = Bhv_BodyNeckToPoint() + self.bhv_body_neck_to_point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 21: + if ftype == TType.STRUCT: + self.bhv_emergency = Bhv_Emergency() + self.bhv_emergency.read(iprot) + else: + iprot.skip(ftype) + elif fid == 22: + if ftype == TType.STRUCT: + self.bhv_go_to_point_look_ball = Bhv_GoToPointLookBall() + self.bhv_go_to_point_look_ball.read(iprot) + else: + iprot.skip(ftype) + elif fid == 23: + if ftype == TType.STRUCT: + self.bhv_neck_body_to_ball = Bhv_NeckBodyToBall() + self.bhv_neck_body_to_ball.read(iprot) + else: + iprot.skip(ftype) + elif fid == 24: + if ftype == TType.STRUCT: + self.bhv_neck_body_to_point = Bhv_NeckBodyToPoint() + self.bhv_neck_body_to_point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 25: + if ftype == TType.STRUCT: + self.bhv_scan_field = Bhv_ScanField() + self.bhv_scan_field.read(iprot) + else: + iprot.skip(ftype) + elif fid == 26: + if ftype == TType.STRUCT: + self.body_advance_ball = Body_AdvanceBall() + self.body_advance_ball.read(iprot) + else: + iprot.skip(ftype) + elif fid == 27: + if ftype == TType.STRUCT: + self.body_clear_ball = Body_ClearBall() + self.body_clear_ball.read(iprot) + else: + iprot.skip(ftype) + elif fid == 28: + if ftype == TType.STRUCT: + self.body_dribble = Body_Dribble() + self.body_dribble.read(iprot) + else: + iprot.skip(ftype) + elif fid == 29: + if ftype == TType.STRUCT: + self.body_go_to_point_dodge = Body_GoToPointDodge() + self.body_go_to_point_dodge.read(iprot) + else: + iprot.skip(ftype) + elif fid == 30: + if ftype == TType.STRUCT: + self.body_hold_ball = Body_HoldBall() + self.body_hold_ball.read(iprot) + else: + iprot.skip(ftype) + elif fid == 31: + if ftype == TType.STRUCT: + self.body_intercept = Body_Intercept() + self.body_intercept.read(iprot) + else: + iprot.skip(ftype) + elif fid == 32: + if ftype == TType.STRUCT: + self.body_kick_one_step = Body_KickOneStep() + self.body_kick_one_step.read(iprot) + else: + iprot.skip(ftype) + elif fid == 33: + if ftype == TType.STRUCT: + self.body_stop_ball = Body_StopBall() + self.body_stop_ball.read(iprot) + else: + iprot.skip(ftype) + elif fid == 34: + if ftype == TType.STRUCT: + self.body_stop_dash = Body_StopDash() + self.body_stop_dash.read(iprot) + else: + iprot.skip(ftype) + elif fid == 35: + if ftype == TType.STRUCT: + self.body_tackle_to_point = Body_TackleToPoint() + self.body_tackle_to_point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 36: + if ftype == TType.STRUCT: + self.body_turn_to_angle = Body_TurnToAngle() + self.body_turn_to_angle.read(iprot) + else: + iprot.skip(ftype) + elif fid == 37: + if ftype == TType.STRUCT: + self.body_turn_to_ball = Body_TurnToBall() + self.body_turn_to_ball.read(iprot) + else: + iprot.skip(ftype) + elif fid == 38: + if ftype == TType.STRUCT: + self.body_turn_to_point = Body_TurnToPoint() + self.body_turn_to_point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 39: + if ftype == TType.STRUCT: + self.focus_move_to_point = Focus_MoveToPoint() + self.focus_move_to_point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 40: + if ftype == TType.STRUCT: + self.focus_reset = Focus_Reset() + self.focus_reset.read(iprot) + else: + iprot.skip(ftype) + elif fid == 41: + if ftype == TType.STRUCT: + self.neck_scan_field = Neck_ScanField() + self.neck_scan_field.read(iprot) + else: + iprot.skip(ftype) + elif fid == 42: + if ftype == TType.STRUCT: + self.neck_scan_players = Neck_ScanPlayers() + self.neck_scan_players.read(iprot) + else: + iprot.skip(ftype) + elif fid == 43: + if ftype == TType.STRUCT: + self.neck_turn_to_ball_and_player = Neck_TurnToBallAndPlayer() + self.neck_turn_to_ball_and_player.read(iprot) + else: + iprot.skip(ftype) + elif fid == 44: + if ftype == TType.STRUCT: + self.neck_turn_to_ball_or_scan = Neck_TurnToBallOrScan() + self.neck_turn_to_ball_or_scan.read(iprot) + else: + iprot.skip(ftype) + elif fid == 45: + if ftype == TType.STRUCT: + self.neck_turn_to_ball = Neck_TurnToBall() + self.neck_turn_to_ball.read(iprot) + else: + iprot.skip(ftype) + elif fid == 46: + if ftype == TType.STRUCT: + self.neck_turn_to_goalie_or_scan = Neck_TurnToGoalieOrScan() + self.neck_turn_to_goalie_or_scan.read(iprot) + else: + iprot.skip(ftype) + elif fid == 47: + if ftype == TType.STRUCT: + self.neck_turn_to_low_conf_teammate = Neck_TurnToLowConfTeammate() + self.neck_turn_to_low_conf_teammate.read(iprot) + else: + iprot.skip(ftype) + elif fid == 48: + if ftype == TType.STRUCT: + self.neck_turn_to_player_or_scan = Neck_TurnToPlayerOrScan() + self.neck_turn_to_player_or_scan.read(iprot) + else: + iprot.skip(ftype) + elif fid == 49: + if ftype == TType.STRUCT: + self.neck_turn_to_point = Neck_TurnToPoint() + self.neck_turn_to_point.read(iprot) + else: + iprot.skip(ftype) + elif fid == 50: + if ftype == TType.STRUCT: + self.neck_turn_to_relative = Neck_TurnToRelative() + self.neck_turn_to_relative.read(iprot) + else: + iprot.skip(ftype) + elif fid == 51: + if ftype == TType.STRUCT: + self.view_change_width = View_ChangeWidth() + self.view_change_width.read(iprot) + else: + iprot.skip(ftype) + elif fid == 52: + if ftype == TType.STRUCT: + self.view_normal = View_Normal() + self.view_normal.read(iprot) + else: + iprot.skip(ftype) + elif fid == 53: + if ftype == TType.STRUCT: + self.view_synch = View_Synch() + self.view_synch.read(iprot) + else: + iprot.skip(ftype) + elif fid == 54: + if ftype == TType.STRUCT: + self.view_wide = View_Wide() + self.view_wide.read(iprot) + else: + iprot.skip(ftype) + elif fid == 55: + if ftype == TType.STRUCT: + self.helios_goalie = HeliosGoalie() + self.helios_goalie.read(iprot) + else: + iprot.skip(ftype) + elif fid == 56: + if ftype == TType.STRUCT: + self.helios_goalie_move = HeliosGoalieMove() + self.helios_goalie_move.read(iprot) + else: + iprot.skip(ftype) + elif fid == 57: + if ftype == TType.STRUCT: + self.helios_goalie_kick = HeliosGoalieKick() + self.helios_goalie_kick.read(iprot) + else: + iprot.skip(ftype) + elif fid == 58: + if ftype == TType.STRUCT: + self.helios_shoot = HeliosShoot() + self.helios_shoot.read(iprot) + else: + iprot.skip(ftype) + elif fid == 59: + if ftype == TType.STRUCT: + self.helios_chain_action = HeliosChainAction() + self.helios_chain_action.read(iprot) + else: + iprot.skip(ftype) + elif fid == 60: + if ftype == TType.STRUCT: + self.helios_basic_offensive = HeliosBasicOffensive() + self.helios_basic_offensive.read(iprot) + else: + iprot.skip(ftype) + elif fid == 61: + if ftype == TType.STRUCT: + self.helios_basic_move = HeliosBasicMove() + self.helios_basic_move.read(iprot) + else: + iprot.skip(ftype) + elif fid == 62: + if ftype == TType.STRUCT: + self.helios_set_play = HeliosSetPlay() + self.helios_set_play.read(iprot) + else: + iprot.skip(ftype) + elif fid == 63: + if ftype == TType.STRUCT: + self.helios_penalty = HeliosPenalty() + self.helios_penalty.read(iprot) + else: + iprot.skip(ftype) + elif fid == 64: + if ftype == TType.STRUCT: + self.helios_communication = HeliosCommunicaion() + self.helios_communication.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('PlayerAction') + if self.dash is not None: + oprot.writeFieldBegin('dash', TType.STRUCT, 1) + self.dash.write(oprot) + oprot.writeFieldEnd() + if self.turn is not None: + oprot.writeFieldBegin('turn', TType.STRUCT, 2) + self.turn.write(oprot) + oprot.writeFieldEnd() + if self.kick is not None: + oprot.writeFieldBegin('kick', TType.STRUCT, 3) + self.kick.write(oprot) + oprot.writeFieldEnd() + if self.tackle is not None: + oprot.writeFieldBegin('tackle', TType.STRUCT, 4) + self.tackle.write(oprot) + oprot.writeFieldEnd() + if self.catch_action is not None: + oprot.writeFieldBegin('catch_action', TType.STRUCT, 5) + self.catch_action.write(oprot) + oprot.writeFieldEnd() + if self.move is not None: + oprot.writeFieldBegin('move', TType.STRUCT, 6) + self.move.write(oprot) + oprot.writeFieldEnd() + if self.turn_neck is not None: + oprot.writeFieldBegin('turn_neck', TType.STRUCT, 7) + self.turn_neck.write(oprot) + oprot.writeFieldEnd() + if self.change_view is not None: + oprot.writeFieldBegin('change_view', TType.STRUCT, 8) + self.change_view.write(oprot) + oprot.writeFieldEnd() + if self.say is not None: + oprot.writeFieldBegin('say', TType.STRUCT, 9) + self.say.write(oprot) + oprot.writeFieldEnd() + if self.point_to is not None: + oprot.writeFieldBegin('point_to', TType.STRUCT, 10) + self.point_to.write(oprot) + oprot.writeFieldEnd() + if self.point_to_of is not None: + oprot.writeFieldBegin('point_to_of', TType.STRUCT, 11) + self.point_to_of.write(oprot) + oprot.writeFieldEnd() + if self.attention_to is not None: + oprot.writeFieldBegin('attention_to', TType.STRUCT, 12) + self.attention_to.write(oprot) + oprot.writeFieldEnd() + if self.attention_to_of is not None: + oprot.writeFieldBegin('attention_to_of', TType.STRUCT, 13) + self.attention_to_of.write(oprot) + oprot.writeFieldEnd() + if self.log is not None: + oprot.writeFieldBegin('log', TType.STRUCT, 14) + self.log.write(oprot) + oprot.writeFieldEnd() + if self.debug_client is not None: + oprot.writeFieldBegin('debug_client', TType.STRUCT, 15) + self.debug_client.write(oprot) + oprot.writeFieldEnd() + if self.body_go_to_point is not None: + oprot.writeFieldBegin('body_go_to_point', TType.STRUCT, 16) + self.body_go_to_point.write(oprot) + oprot.writeFieldEnd() + if self.body_smart_kick is not None: + oprot.writeFieldBegin('body_smart_kick', TType.STRUCT, 17) + self.body_smart_kick.write(oprot) + oprot.writeFieldEnd() + if self.bhv_before_kick_off is not None: + oprot.writeFieldBegin('bhv_before_kick_off', TType.STRUCT, 18) + self.bhv_before_kick_off.write(oprot) + oprot.writeFieldEnd() + if self.bhv_body_neck_to_ball is not None: + oprot.writeFieldBegin('bhv_body_neck_to_ball', TType.STRUCT, 19) + self.bhv_body_neck_to_ball.write(oprot) + oprot.writeFieldEnd() + if self.bhv_body_neck_to_point is not None: + oprot.writeFieldBegin('bhv_body_neck_to_point', TType.STRUCT, 20) + self.bhv_body_neck_to_point.write(oprot) + oprot.writeFieldEnd() + if self.bhv_emergency is not None: + oprot.writeFieldBegin('bhv_emergency', TType.STRUCT, 21) + self.bhv_emergency.write(oprot) + oprot.writeFieldEnd() + if self.bhv_go_to_point_look_ball is not None: + oprot.writeFieldBegin('bhv_go_to_point_look_ball', TType.STRUCT, 22) + self.bhv_go_to_point_look_ball.write(oprot) + oprot.writeFieldEnd() + if self.bhv_neck_body_to_ball is not None: + oprot.writeFieldBegin('bhv_neck_body_to_ball', TType.STRUCT, 23) + self.bhv_neck_body_to_ball.write(oprot) + oprot.writeFieldEnd() + if self.bhv_neck_body_to_point is not None: + oprot.writeFieldBegin('bhv_neck_body_to_point', TType.STRUCT, 24) + self.bhv_neck_body_to_point.write(oprot) + oprot.writeFieldEnd() + if self.bhv_scan_field is not None: + oprot.writeFieldBegin('bhv_scan_field', TType.STRUCT, 25) + self.bhv_scan_field.write(oprot) + oprot.writeFieldEnd() + if self.body_advance_ball is not None: + oprot.writeFieldBegin('body_advance_ball', TType.STRUCT, 26) + self.body_advance_ball.write(oprot) + oprot.writeFieldEnd() + if self.body_clear_ball is not None: + oprot.writeFieldBegin('body_clear_ball', TType.STRUCT, 27) + self.body_clear_ball.write(oprot) + oprot.writeFieldEnd() + if self.body_dribble is not None: + oprot.writeFieldBegin('body_dribble', TType.STRUCT, 28) + self.body_dribble.write(oprot) + oprot.writeFieldEnd() + if self.body_go_to_point_dodge is not None: + oprot.writeFieldBegin('body_go_to_point_dodge', TType.STRUCT, 29) + self.body_go_to_point_dodge.write(oprot) + oprot.writeFieldEnd() + if self.body_hold_ball is not None: + oprot.writeFieldBegin('body_hold_ball', TType.STRUCT, 30) + self.body_hold_ball.write(oprot) + oprot.writeFieldEnd() + if self.body_intercept is not None: + oprot.writeFieldBegin('body_intercept', TType.STRUCT, 31) + self.body_intercept.write(oprot) + oprot.writeFieldEnd() + if self.body_kick_one_step is not None: + oprot.writeFieldBegin('body_kick_one_step', TType.STRUCT, 32) + self.body_kick_one_step.write(oprot) + oprot.writeFieldEnd() + if self.body_stop_ball is not None: + oprot.writeFieldBegin('body_stop_ball', TType.STRUCT, 33) + self.body_stop_ball.write(oprot) + oprot.writeFieldEnd() + if self.body_stop_dash is not None: + oprot.writeFieldBegin('body_stop_dash', TType.STRUCT, 34) + self.body_stop_dash.write(oprot) + oprot.writeFieldEnd() + if self.body_tackle_to_point is not None: + oprot.writeFieldBegin('body_tackle_to_point', TType.STRUCT, 35) + self.body_tackle_to_point.write(oprot) + oprot.writeFieldEnd() + if self.body_turn_to_angle is not None: + oprot.writeFieldBegin('body_turn_to_angle', TType.STRUCT, 36) + self.body_turn_to_angle.write(oprot) + oprot.writeFieldEnd() + if self.body_turn_to_ball is not None: + oprot.writeFieldBegin('body_turn_to_ball', TType.STRUCT, 37) + self.body_turn_to_ball.write(oprot) + oprot.writeFieldEnd() + if self.body_turn_to_point is not None: + oprot.writeFieldBegin('body_turn_to_point', TType.STRUCT, 38) + self.body_turn_to_point.write(oprot) + oprot.writeFieldEnd() + if self.focus_move_to_point is not None: + oprot.writeFieldBegin('focus_move_to_point', TType.STRUCT, 39) + self.focus_move_to_point.write(oprot) + oprot.writeFieldEnd() + if self.focus_reset is not None: + oprot.writeFieldBegin('focus_reset', TType.STRUCT, 40) + self.focus_reset.write(oprot) + oprot.writeFieldEnd() + if self.neck_scan_field is not None: + oprot.writeFieldBegin('neck_scan_field', TType.STRUCT, 41) + self.neck_scan_field.write(oprot) + oprot.writeFieldEnd() + if self.neck_scan_players is not None: + oprot.writeFieldBegin('neck_scan_players', TType.STRUCT, 42) + self.neck_scan_players.write(oprot) + oprot.writeFieldEnd() + if self.neck_turn_to_ball_and_player is not None: + oprot.writeFieldBegin('neck_turn_to_ball_and_player', TType.STRUCT, 43) + self.neck_turn_to_ball_and_player.write(oprot) + oprot.writeFieldEnd() + if self.neck_turn_to_ball_or_scan is not None: + oprot.writeFieldBegin('neck_turn_to_ball_or_scan', TType.STRUCT, 44) + self.neck_turn_to_ball_or_scan.write(oprot) + oprot.writeFieldEnd() + if self.neck_turn_to_ball is not None: + oprot.writeFieldBegin('neck_turn_to_ball', TType.STRUCT, 45) + self.neck_turn_to_ball.write(oprot) + oprot.writeFieldEnd() + if self.neck_turn_to_goalie_or_scan is not None: + oprot.writeFieldBegin('neck_turn_to_goalie_or_scan', TType.STRUCT, 46) + self.neck_turn_to_goalie_or_scan.write(oprot) + oprot.writeFieldEnd() + if self.neck_turn_to_low_conf_teammate is not None: + oprot.writeFieldBegin('neck_turn_to_low_conf_teammate', TType.STRUCT, 47) + self.neck_turn_to_low_conf_teammate.write(oprot) + oprot.writeFieldEnd() + if self.neck_turn_to_player_or_scan is not None: + oprot.writeFieldBegin('neck_turn_to_player_or_scan', TType.STRUCT, 48) + self.neck_turn_to_player_or_scan.write(oprot) + oprot.writeFieldEnd() + if self.neck_turn_to_point is not None: + oprot.writeFieldBegin('neck_turn_to_point', TType.STRUCT, 49) + self.neck_turn_to_point.write(oprot) + oprot.writeFieldEnd() + if self.neck_turn_to_relative is not None: + oprot.writeFieldBegin('neck_turn_to_relative', TType.STRUCT, 50) + self.neck_turn_to_relative.write(oprot) + oprot.writeFieldEnd() + if self.view_change_width is not None: + oprot.writeFieldBegin('view_change_width', TType.STRUCT, 51) + self.view_change_width.write(oprot) + oprot.writeFieldEnd() + if self.view_normal is not None: + oprot.writeFieldBegin('view_normal', TType.STRUCT, 52) + self.view_normal.write(oprot) + oprot.writeFieldEnd() + if self.view_synch is not None: + oprot.writeFieldBegin('view_synch', TType.STRUCT, 53) + self.view_synch.write(oprot) + oprot.writeFieldEnd() + if self.view_wide is not None: + oprot.writeFieldBegin('view_wide', TType.STRUCT, 54) + self.view_wide.write(oprot) + oprot.writeFieldEnd() + if self.helios_goalie is not None: + oprot.writeFieldBegin('helios_goalie', TType.STRUCT, 55) + self.helios_goalie.write(oprot) + oprot.writeFieldEnd() + if self.helios_goalie_move is not None: + oprot.writeFieldBegin('helios_goalie_move', TType.STRUCT, 56) + self.helios_goalie_move.write(oprot) + oprot.writeFieldEnd() + if self.helios_goalie_kick is not None: + oprot.writeFieldBegin('helios_goalie_kick', TType.STRUCT, 57) + self.helios_goalie_kick.write(oprot) + oprot.writeFieldEnd() + if self.helios_shoot is not None: + oprot.writeFieldBegin('helios_shoot', TType.STRUCT, 58) + self.helios_shoot.write(oprot) + oprot.writeFieldEnd() + if self.helios_chain_action is not None: + oprot.writeFieldBegin('helios_chain_action', TType.STRUCT, 59) + self.helios_chain_action.write(oprot) + oprot.writeFieldEnd() + if self.helios_basic_offensive is not None: + oprot.writeFieldBegin('helios_basic_offensive', TType.STRUCT, 60) + self.helios_basic_offensive.write(oprot) + oprot.writeFieldEnd() + if self.helios_basic_move is not None: + oprot.writeFieldBegin('helios_basic_move', TType.STRUCT, 61) + self.helios_basic_move.write(oprot) + oprot.writeFieldEnd() + if self.helios_set_play is not None: + oprot.writeFieldBegin('helios_set_play', TType.STRUCT, 62) + self.helios_set_play.write(oprot) + oprot.writeFieldEnd() + if self.helios_penalty is not None: + oprot.writeFieldBegin('helios_penalty', TType.STRUCT, 63) + self.helios_penalty.write(oprot) + oprot.writeFieldEnd() + if self.helios_communication is not None: + oprot.writeFieldBegin('helios_communication', TType.STRUCT, 64) + self.helios_communication.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class PlayerActions(object): + """ + Attributes: + - actions + + """ + + + def __init__(self, actions=None,): + self.actions = actions + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.LIST: + self.actions = [] + (_etype58, _size55) = iprot.readListBegin() + for _i59 in range(_size55): + _elem60 = PlayerAction() + _elem60.read(iprot) + self.actions.append(_elem60) + iprot.readListEnd() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('PlayerActions') + if self.actions is not None: + oprot.writeFieldBegin('actions', TType.LIST, 1) + oprot.writeListBegin(TType.STRUCT, len(self.actions)) + for iter61 in self.actions: + iter61.write(oprot) + oprot.writeListEnd() + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class ChangePlayerType(object): + """ + Attributes: + - uniform_number + - type + + """ + + + def __init__(self, uniform_number=None, type=None,): + self.uniform_number = uniform_number + self.type = type + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.I32: + self.type = iprot.readI32() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('ChangePlayerType') + if self.uniform_number is not None: + oprot.writeFieldBegin('uniform_number', TType.I32, 1) + oprot.writeI32(self.uniform_number) + oprot.writeFieldEnd() + if self.type is not None: + oprot.writeFieldBegin('type', TType.I32, 2) + oprot.writeI32(self.type) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class DoHeliosSubstitute(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('DoHeliosSubstitute') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class DoHeliosSayPlayerTypes(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('DoHeliosSayPlayerTypes') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class CoachAction(object): + """ + Attributes: + - change_player_types + - do_helios_substitute + - do_helios_say_player_types + + """ + + + def __init__(self, change_player_types=None, do_helios_substitute=None, do_helios_say_player_types=None,): + self.change_player_types = change_player_types + self.do_helios_substitute = do_helios_substitute + self.do_helios_say_player_types = do_helios_say_player_types + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.change_player_types = ChangePlayerType() + self.change_player_types.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.do_helios_substitute = DoHeliosSubstitute() + self.do_helios_substitute.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRUCT: + self.do_helios_say_player_types = DoHeliosSayPlayerTypes() + self.do_helios_say_player_types.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('CoachAction') + if self.change_player_types is not None: + oprot.writeFieldBegin('change_player_types', TType.STRUCT, 1) + self.change_player_types.write(oprot) + oprot.writeFieldEnd() + if self.do_helios_substitute is not None: + oprot.writeFieldBegin('do_helios_substitute', TType.STRUCT, 2) + self.do_helios_substitute.write(oprot) + oprot.writeFieldEnd() + if self.do_helios_say_player_types is not None: + oprot.writeFieldBegin('do_helios_say_player_types', TType.STRUCT, 3) + self.do_helios_say_player_types.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class CoachActions(object): + """ + Attributes: + - actions + + """ + + + def __init__(self, actions=None,): + self.actions = actions + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.LIST: + self.actions = [] + (_etype65, _size62) = iprot.readListBegin() + for _i66 in range(_size62): + _elem67 = CoachAction() + _elem67.read(iprot) + self.actions.append(_elem67) + iprot.readListEnd() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('CoachActions') + if self.actions is not None: + oprot.writeFieldBegin('actions', TType.LIST, 1) + oprot.writeListBegin(TType.STRUCT, len(self.actions)) + for iter68 in self.actions: + iter68.write(oprot) + oprot.writeListEnd() + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class DoKickOff(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('DoKickOff') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class DoMoveBall(object): + """ + Attributes: + - position + - velocity + + """ + + + def __init__(self, position=None, velocity=None,): + self.position = position + self.velocity = velocity + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.position = ThriftVector2D() + self.position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.velocity = ThriftVector2D() + self.velocity.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('DoMoveBall') + if self.position is not None: + oprot.writeFieldBegin('position', TType.STRUCT, 1) + self.position.write(oprot) + oprot.writeFieldEnd() + if self.velocity is not None: + oprot.writeFieldBegin('velocity', TType.STRUCT, 2) + self.velocity.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class DoMovePlayer(object): + """ + Attributes: + - our_side + - uniform_number + - position + - body_direction + + """ + + + def __init__(self, our_side=None, uniform_number=None, position=None, body_direction=None,): + self.our_side = our_side + self.uniform_number = uniform_number + self.position = position + self.body_direction = body_direction + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.BOOL: + self.our_side = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.I32: + self.uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRUCT: + self.position = ThriftVector2D() + self.position.read(iprot) + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.DOUBLE: + self.body_direction = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('DoMovePlayer') + if self.our_side is not None: + oprot.writeFieldBegin('our_side', TType.BOOL, 1) + oprot.writeBool(self.our_side) + oprot.writeFieldEnd() + if self.uniform_number is not None: + oprot.writeFieldBegin('uniform_number', TType.I32, 2) + oprot.writeI32(self.uniform_number) + oprot.writeFieldEnd() + if self.position is not None: + oprot.writeFieldBegin('position', TType.STRUCT, 3) + self.position.write(oprot) + oprot.writeFieldEnd() + if self.body_direction is not None: + oprot.writeFieldBegin('body_direction', TType.DOUBLE, 4) + oprot.writeDouble(self.body_direction) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class DoRecover(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('DoRecover') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class DoChangeMode(object): + """ + Attributes: + - game_mode_type + - side + + """ + + + def __init__(self, game_mode_type=None, side=None,): + self.game_mode_type = game_mode_type + self.side = side + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.game_mode_type = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.I32: + self.side = iprot.readI32() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('DoChangeMode') + if self.game_mode_type is not None: + oprot.writeFieldBegin('game_mode_type', TType.I32, 1) + oprot.writeI32(self.game_mode_type) + oprot.writeFieldEnd() + if self.side is not None: + oprot.writeFieldBegin('side', TType.I32, 2) + oprot.writeI32(self.side) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class DoChangePlayerType(object): + """ + Attributes: + - our_side + - uniform_number + - type + + """ + + + def __init__(self, our_side=None, uniform_number=None, type=None,): + self.our_side = our_side + self.uniform_number = uniform_number + self.type = type + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.BOOL: + self.our_side = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.I32: + self.uniform_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.I32: + self.type = iprot.readI32() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('DoChangePlayerType') + if self.our_side is not None: + oprot.writeFieldBegin('our_side', TType.BOOL, 1) + oprot.writeBool(self.our_side) + oprot.writeFieldEnd() + if self.uniform_number is not None: + oprot.writeFieldBegin('uniform_number', TType.I32, 2) + oprot.writeI32(self.uniform_number) + oprot.writeFieldEnd() + if self.type is not None: + oprot.writeFieldBegin('type', TType.I32, 3) + oprot.writeI32(self.type) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class TrainerAction(object): + """ + Attributes: + - do_kick_off + - do_move_ball + - do_move_player + - do_recover + - do_change_mode + - do_change_player_type + + """ + + + def __init__(self, do_kick_off=None, do_move_ball=None, do_move_player=None, do_recover=None, do_change_mode=None, do_change_player_type=None,): + self.do_kick_off = do_kick_off + self.do_move_ball = do_move_ball + self.do_move_player = do_move_player + self.do_recover = do_recover + self.do_change_mode = do_change_mode + self.do_change_player_type = do_change_player_type + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRUCT: + self.do_kick_off = DoKickOff() + self.do_kick_off.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.do_move_ball = DoMoveBall() + self.do_move_ball.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRUCT: + self.do_move_player = DoMovePlayer() + self.do_move_player.read(iprot) + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRUCT: + self.do_recover = DoRecover() + self.do_recover.read(iprot) + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.STRUCT: + self.do_change_mode = DoChangeMode() + self.do_change_mode.read(iprot) + else: + iprot.skip(ftype) + elif fid == 6: + if ftype == TType.STRUCT: + self.do_change_player_type = DoChangePlayerType() + self.do_change_player_type.read(iprot) + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('TrainerAction') + if self.do_kick_off is not None: + oprot.writeFieldBegin('do_kick_off', TType.STRUCT, 1) + self.do_kick_off.write(oprot) + oprot.writeFieldEnd() + if self.do_move_ball is not None: + oprot.writeFieldBegin('do_move_ball', TType.STRUCT, 2) + self.do_move_ball.write(oprot) + oprot.writeFieldEnd() + if self.do_move_player is not None: + oprot.writeFieldBegin('do_move_player', TType.STRUCT, 3) + self.do_move_player.write(oprot) + oprot.writeFieldEnd() + if self.do_recover is not None: + oprot.writeFieldBegin('do_recover', TType.STRUCT, 4) + self.do_recover.write(oprot) + oprot.writeFieldEnd() + if self.do_change_mode is not None: + oprot.writeFieldBegin('do_change_mode', TType.STRUCT, 5) + self.do_change_mode.write(oprot) + oprot.writeFieldEnd() + if self.do_change_player_type is not None: + oprot.writeFieldBegin('do_change_player_type', TType.STRUCT, 6) + self.do_change_player_type.write(oprot) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class TrainerActions(object): + """ + Attributes: + - actions + + """ + + + def __init__(self, actions=None,): + self.actions = actions + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.LIST: + self.actions = [] + (_etype72, _size69) = iprot.readListBegin() + for _i73 in range(_size69): + _elem74 = TrainerAction() + _elem74.read(iprot) + self.actions.append(_elem74) + iprot.readListEnd() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('TrainerActions') + if self.actions is not None: + oprot.writeFieldBegin('actions', TType.LIST, 1) + oprot.writeListBegin(TType.STRUCT, len(self.actions)) + for iter75 in self.actions: + iter75.write(oprot) + oprot.writeListEnd() + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class ServerParam(object): + """ + Attributes: + - agent_type + - inertia_moment + - player_size + - player_decay + - player_rand + - player_weight + - player_speed_max + - player_accel_max + - stamina_max + - stamina_inc_max + - recover_init + - recover_dec_thr + - recover_min + - recover_dec + - effort_init + - effort_dec_thr + - effort_min + - effort_dec + - effort_inc_thr + - effort_inc + - kick_rand + - team_actuator_noise + - player_rand_factor_l + - player_rand_factor_r + - kick_rand_factor_l + - kick_rand_factor_r + - ball_size + - ball_decay + - ball_rand + - ball_weight + - ball_speed_max + - ball_accel_max + - dash_power_rate + - kick_power_rate + - kickable_margin + - control_radius + - control_radius_width + - max_power + - min_power + - max_moment + - min_moment + - max_neck_moment + - min_neck_moment + - max_neck_angle + - min_neck_angle + - visible_angle + - visible_distance + - wind_dir + - wind_force + - wind_angle + - wind_rand + - kickable_area + - catch_area_l + - catch_area_w + - catch_probability + - goalie_max_moves + - corner_kick_margin + - offside_active_area_size + - wind_none + - use_wind_random + - coach_say_count_max + - coach_say_msg_size + - clang_win_size + - clang_define_win + - clang_meta_win + - clang_advice_win + - clang_info_win + - clang_mess_delay + - clang_mess_per_cycle + - half_time + - simulator_step + - send_step + - recv_step + - sense_body_step + - lcm_step + - player_say_msg_size + - player_hear_max + - player_hear_inc + - player_hear_decay + - catch_ban_cycle + - slow_down_factor + - use_offside + - kickoff_offside + - offside_kick_margin + - audio_cut_dist + - dist_quantize_step + - landmark_dist_quantize_step + - dir_quantize_step + - dist_quantize_step_l + - dist_quantize_step_r + - landmark_dist_quantize_step_l + - landmark_dist_quantize_step_r + - dir_quantize_step_l + - dir_quantize_step_r + - coach_mode + - coach_with_referee_mode + - use_old_coach_hear + - slowness_on_top_for_left_team + - slowness_on_top_for_right_team + - start_goal_l + - start_goal_r + - fullstate_l + - fullstate_r + - drop_ball_time + - synch_mode + - synch_offset + - synch_micro_sleep + - point_to_ban + - point_to_duration + - player_port + - trainer_port + - online_coach_port + - verbose_mode + - coach_send_vi_step + - replay_file + - landmark_file + - send_comms + - text_logging + - game_logging + - game_log_version + - text_log_dir + - game_log_dir + - text_log_fixed_name + - game_log_fixed_name + - use_text_log_fixed + - use_game_log_fixed + - use_text_log_dated + - use_game_log_dated + - log_date_format + - log_times + - record_message + - text_log_compression + - game_log_compression + - use_profile + - tackle_dist + - tackle_back_dist + - tackle_width + - tackle_exponent + - tackle_cycles + - tackle_power_rate + - freeform_wait_period + - freeform_send_period + - free_kick_faults + - back_passes + - proper_goal_kicks + - stopped_ball_vel + - max_goal_kicks + - clang_del_win + - clang_rule_win + - auto_mode + - kick_off_wait + - connect_wait + - game_over_wait + - team_l_start + - team_r_start + - keepaway_mode + - keepaway_length + - keepaway_width + - keepaway_logging + - keepaway_log_dir + - keepaway_log_fixed_name + - keepaway_log_fixed + - keepaway_log_dated + - keepaway_start + - nr_normal_halfs + - nr_extra_halfs + - penalty_shoot_outs + - pen_before_setup_wait + - pen_setup_wait + - pen_ready_wait + - pen_taken_wait + - pen_nr_kicks + - pen_max_extra_kicks + - pen_dist_x + - pen_random_winner + - pen_allow_mult_kicks + - pen_max_goalie_dist_x + - pen_coach_moves_players + - module_dir + - ball_stuck_area + - coach_msg_file + - max_tackle_power + - max_back_tackle_power + - player_speed_max_min + - extra_stamina + - synch_see_offset + - extra_half_time + - stamina_capacity + - max_dash_angle + - min_dash_angle + - dash_angle_step + - side_dash_rate + - back_dash_rate + - max_dash_power + - min_dash_power + - tackle_rand_factor + - foul_detect_probability + - foul_exponent + - foul_cycles + - golden_goal + - red_card_probability + - illegal_defense_duration + - illegal_defense_number + - illegal_defense_dist_x + - illegal_defense_width + - fixed_teamname_l + - fixed_teamname_r + - max_catch_angle + - min_catch_angle + - random_seed + - long_kick_power_factor + - long_kick_delay + - max_monitors + - catchable_area + - real_speed_max + - pitch_half_length + - pitch_half_width + - our_penalty_area_line_x + - their_penalty_area_line_x + - penalty_area_half_width + - penalty_area_length + - goal_width + + """ + + + def __init__(self, agent_type=None, inertia_moment=None, player_size=None, player_decay=None, player_rand=None, player_weight=None, player_speed_max=None, player_accel_max=None, stamina_max=None, stamina_inc_max=None, recover_init=None, recover_dec_thr=None, recover_min=None, recover_dec=None, effort_init=None, effort_dec_thr=None, effort_min=None, effort_dec=None, effort_inc_thr=None, effort_inc=None, kick_rand=None, team_actuator_noise=None, player_rand_factor_l=None, player_rand_factor_r=None, kick_rand_factor_l=None, kick_rand_factor_r=None, ball_size=None, ball_decay=None, ball_rand=None, ball_weight=None, ball_speed_max=None, ball_accel_max=None, dash_power_rate=None, kick_power_rate=None, kickable_margin=None, control_radius=None, control_radius_width=None, max_power=None, min_power=None, max_moment=None, min_moment=None, max_neck_moment=None, min_neck_moment=None, max_neck_angle=None, min_neck_angle=None, visible_angle=None, visible_distance=None, wind_dir=None, wind_force=None, wind_angle=None, wind_rand=None, kickable_area=None, catch_area_l=None, catch_area_w=None, catch_probability=None, goalie_max_moves=None, corner_kick_margin=None, offside_active_area_size=None, wind_none=None, use_wind_random=None, coach_say_count_max=None, coach_say_msg_size=None, clang_win_size=None, clang_define_win=None, clang_meta_win=None, clang_advice_win=None, clang_info_win=None, clang_mess_delay=None, clang_mess_per_cycle=None, half_time=None, simulator_step=None, send_step=None, recv_step=None, sense_body_step=None, lcm_step=None, player_say_msg_size=None, player_hear_max=None, player_hear_inc=None, player_hear_decay=None, catch_ban_cycle=None, slow_down_factor=None, use_offside=None, kickoff_offside=None, offside_kick_margin=None, audio_cut_dist=None, dist_quantize_step=None, landmark_dist_quantize_step=None, dir_quantize_step=None, dist_quantize_step_l=None, dist_quantize_step_r=None, landmark_dist_quantize_step_l=None, landmark_dist_quantize_step_r=None, dir_quantize_step_l=None, dir_quantize_step_r=None, coach_mode=None, coach_with_referee_mode=None, use_old_coach_hear=None, slowness_on_top_for_left_team=None, slowness_on_top_for_right_team=None, start_goal_l=None, start_goal_r=None, fullstate_l=None, fullstate_r=None, drop_ball_time=None, synch_mode=None, synch_offset=None, synch_micro_sleep=None, point_to_ban=None, point_to_duration=None, player_port=None, trainer_port=None, online_coach_port=None, verbose_mode=None, coach_send_vi_step=None, replay_file=None, landmark_file=None, send_comms=None, text_logging=None, game_logging=None, game_log_version=None, text_log_dir=None, game_log_dir=None, text_log_fixed_name=None, game_log_fixed_name=None, use_text_log_fixed=None, use_game_log_fixed=None, use_text_log_dated=None, use_game_log_dated=None, log_date_format=None, log_times=None, record_message=None, text_log_compression=None, game_log_compression=None, use_profile=None, tackle_dist=None, tackle_back_dist=None, tackle_width=None, tackle_exponent=None, tackle_cycles=None, tackle_power_rate=None, freeform_wait_period=None, freeform_send_period=None, free_kick_faults=None, back_passes=None, proper_goal_kicks=None, stopped_ball_vel=None, max_goal_kicks=None, clang_del_win=None, clang_rule_win=None, auto_mode=None, kick_off_wait=None, connect_wait=None, game_over_wait=None, team_l_start=None, team_r_start=None, keepaway_mode=None, keepaway_length=None, keepaway_width=None, keepaway_logging=None, keepaway_log_dir=None, keepaway_log_fixed_name=None, keepaway_log_fixed=None, keepaway_log_dated=None, keepaway_start=None, nr_normal_halfs=None, nr_extra_halfs=None, penalty_shoot_outs=None, pen_before_setup_wait=None, pen_setup_wait=None, pen_ready_wait=None, pen_taken_wait=None, pen_nr_kicks=None, pen_max_extra_kicks=None, pen_dist_x=None, pen_random_winner=None, pen_allow_mult_kicks=None, pen_max_goalie_dist_x=None, pen_coach_moves_players=None, module_dir=None, ball_stuck_area=None, coach_msg_file=None, max_tackle_power=None, max_back_tackle_power=None, player_speed_max_min=None, extra_stamina=None, synch_see_offset=None, extra_half_time=None, stamina_capacity=None, max_dash_angle=None, min_dash_angle=None, dash_angle_step=None, side_dash_rate=None, back_dash_rate=None, max_dash_power=None, min_dash_power=None, tackle_rand_factor=None, foul_detect_probability=None, foul_exponent=None, foul_cycles=None, golden_goal=None, red_card_probability=None, illegal_defense_duration=None, illegal_defense_number=None, illegal_defense_dist_x=None, illegal_defense_width=None, fixed_teamname_l=None, fixed_teamname_r=None, max_catch_angle=None, min_catch_angle=None, random_seed=None, long_kick_power_factor=None, long_kick_delay=None, max_monitors=None, catchable_area=None, real_speed_max=None, pitch_half_length=None, pitch_half_width=None, our_penalty_area_line_x=None, their_penalty_area_line_x=None, penalty_area_half_width=None, penalty_area_length=None, goal_width=None,): + self.agent_type = agent_type + self.inertia_moment = inertia_moment + self.player_size = player_size + self.player_decay = player_decay + self.player_rand = player_rand + self.player_weight = player_weight + self.player_speed_max = player_speed_max + self.player_accel_max = player_accel_max + self.stamina_max = stamina_max + self.stamina_inc_max = stamina_inc_max + self.recover_init = recover_init + self.recover_dec_thr = recover_dec_thr + self.recover_min = recover_min + self.recover_dec = recover_dec + self.effort_init = effort_init + self.effort_dec_thr = effort_dec_thr + self.effort_min = effort_min + self.effort_dec = effort_dec + self.effort_inc_thr = effort_inc_thr + self.effort_inc = effort_inc + self.kick_rand = kick_rand + self.team_actuator_noise = team_actuator_noise + self.player_rand_factor_l = player_rand_factor_l + self.player_rand_factor_r = player_rand_factor_r + self.kick_rand_factor_l = kick_rand_factor_l + self.kick_rand_factor_r = kick_rand_factor_r + self.ball_size = ball_size + self.ball_decay = ball_decay + self.ball_rand = ball_rand + self.ball_weight = ball_weight + self.ball_speed_max = ball_speed_max + self.ball_accel_max = ball_accel_max + self.dash_power_rate = dash_power_rate + self.kick_power_rate = kick_power_rate + self.kickable_margin = kickable_margin + self.control_radius = control_radius + self.control_radius_width = control_radius_width + self.max_power = max_power + self.min_power = min_power + self.max_moment = max_moment + self.min_moment = min_moment + self.max_neck_moment = max_neck_moment + self.min_neck_moment = min_neck_moment + self.max_neck_angle = max_neck_angle + self.min_neck_angle = min_neck_angle + self.visible_angle = visible_angle + self.visible_distance = visible_distance + self.wind_dir = wind_dir + self.wind_force = wind_force + self.wind_angle = wind_angle + self.wind_rand = wind_rand + self.kickable_area = kickable_area + self.catch_area_l = catch_area_l + self.catch_area_w = catch_area_w + self.catch_probability = catch_probability + self.goalie_max_moves = goalie_max_moves + self.corner_kick_margin = corner_kick_margin + self.offside_active_area_size = offside_active_area_size + self.wind_none = wind_none + self.use_wind_random = use_wind_random + self.coach_say_count_max = coach_say_count_max + self.coach_say_msg_size = coach_say_msg_size + self.clang_win_size = clang_win_size + self.clang_define_win = clang_define_win + self.clang_meta_win = clang_meta_win + self.clang_advice_win = clang_advice_win + self.clang_info_win = clang_info_win + self.clang_mess_delay = clang_mess_delay + self.clang_mess_per_cycle = clang_mess_per_cycle + self.half_time = half_time + self.simulator_step = simulator_step + self.send_step = send_step + self.recv_step = recv_step + self.sense_body_step = sense_body_step + self.lcm_step = lcm_step + self.player_say_msg_size = player_say_msg_size + self.player_hear_max = player_hear_max + self.player_hear_inc = player_hear_inc + self.player_hear_decay = player_hear_decay + self.catch_ban_cycle = catch_ban_cycle + self.slow_down_factor = slow_down_factor + self.use_offside = use_offside + self.kickoff_offside = kickoff_offside + self.offside_kick_margin = offside_kick_margin + self.audio_cut_dist = audio_cut_dist + self.dist_quantize_step = dist_quantize_step + self.landmark_dist_quantize_step = landmark_dist_quantize_step + self.dir_quantize_step = dir_quantize_step + self.dist_quantize_step_l = dist_quantize_step_l + self.dist_quantize_step_r = dist_quantize_step_r + self.landmark_dist_quantize_step_l = landmark_dist_quantize_step_l + self.landmark_dist_quantize_step_r = landmark_dist_quantize_step_r + self.dir_quantize_step_l = dir_quantize_step_l + self.dir_quantize_step_r = dir_quantize_step_r + self.coach_mode = coach_mode + self.coach_with_referee_mode = coach_with_referee_mode + self.use_old_coach_hear = use_old_coach_hear + self.slowness_on_top_for_left_team = slowness_on_top_for_left_team + self.slowness_on_top_for_right_team = slowness_on_top_for_right_team + self.start_goal_l = start_goal_l + self.start_goal_r = start_goal_r + self.fullstate_l = fullstate_l + self.fullstate_r = fullstate_r + self.drop_ball_time = drop_ball_time + self.synch_mode = synch_mode + self.synch_offset = synch_offset + self.synch_micro_sleep = synch_micro_sleep + self.point_to_ban = point_to_ban + self.point_to_duration = point_to_duration + self.player_port = player_port + self.trainer_port = trainer_port + self.online_coach_port = online_coach_port + self.verbose_mode = verbose_mode + self.coach_send_vi_step = coach_send_vi_step + self.replay_file = replay_file + self.landmark_file = landmark_file + self.send_comms = send_comms + self.text_logging = text_logging + self.game_logging = game_logging + self.game_log_version = game_log_version + self.text_log_dir = text_log_dir + self.game_log_dir = game_log_dir + self.text_log_fixed_name = text_log_fixed_name + self.game_log_fixed_name = game_log_fixed_name + self.use_text_log_fixed = use_text_log_fixed + self.use_game_log_fixed = use_game_log_fixed + self.use_text_log_dated = use_text_log_dated + self.use_game_log_dated = use_game_log_dated + self.log_date_format = log_date_format + self.log_times = log_times + self.record_message = record_message + self.text_log_compression = text_log_compression + self.game_log_compression = game_log_compression + self.use_profile = use_profile + self.tackle_dist = tackle_dist + self.tackle_back_dist = tackle_back_dist + self.tackle_width = tackle_width + self.tackle_exponent = tackle_exponent + self.tackle_cycles = tackle_cycles + self.tackle_power_rate = tackle_power_rate + self.freeform_wait_period = freeform_wait_period + self.freeform_send_period = freeform_send_period + self.free_kick_faults = free_kick_faults + self.back_passes = back_passes + self.proper_goal_kicks = proper_goal_kicks + self.stopped_ball_vel = stopped_ball_vel + self.max_goal_kicks = max_goal_kicks + self.clang_del_win = clang_del_win + self.clang_rule_win = clang_rule_win + self.auto_mode = auto_mode + self.kick_off_wait = kick_off_wait + self.connect_wait = connect_wait + self.game_over_wait = game_over_wait + self.team_l_start = team_l_start + self.team_r_start = team_r_start + self.keepaway_mode = keepaway_mode + self.keepaway_length = keepaway_length + self.keepaway_width = keepaway_width + self.keepaway_logging = keepaway_logging + self.keepaway_log_dir = keepaway_log_dir + self.keepaway_log_fixed_name = keepaway_log_fixed_name + self.keepaway_log_fixed = keepaway_log_fixed + self.keepaway_log_dated = keepaway_log_dated + self.keepaway_start = keepaway_start + self.nr_normal_halfs = nr_normal_halfs + self.nr_extra_halfs = nr_extra_halfs + self.penalty_shoot_outs = penalty_shoot_outs + self.pen_before_setup_wait = pen_before_setup_wait + self.pen_setup_wait = pen_setup_wait + self.pen_ready_wait = pen_ready_wait + self.pen_taken_wait = pen_taken_wait + self.pen_nr_kicks = pen_nr_kicks + self.pen_max_extra_kicks = pen_max_extra_kicks + self.pen_dist_x = pen_dist_x + self.pen_random_winner = pen_random_winner + self.pen_allow_mult_kicks = pen_allow_mult_kicks + self.pen_max_goalie_dist_x = pen_max_goalie_dist_x + self.pen_coach_moves_players = pen_coach_moves_players + self.module_dir = module_dir + self.ball_stuck_area = ball_stuck_area + self.coach_msg_file = coach_msg_file + self.max_tackle_power = max_tackle_power + self.max_back_tackle_power = max_back_tackle_power + self.player_speed_max_min = player_speed_max_min + self.extra_stamina = extra_stamina + self.synch_see_offset = synch_see_offset + self.extra_half_time = extra_half_time + self.stamina_capacity = stamina_capacity + self.max_dash_angle = max_dash_angle + self.min_dash_angle = min_dash_angle + self.dash_angle_step = dash_angle_step + self.side_dash_rate = side_dash_rate + self.back_dash_rate = back_dash_rate + self.max_dash_power = max_dash_power + self.min_dash_power = min_dash_power + self.tackle_rand_factor = tackle_rand_factor + self.foul_detect_probability = foul_detect_probability + self.foul_exponent = foul_exponent + self.foul_cycles = foul_cycles + self.golden_goal = golden_goal + self.red_card_probability = red_card_probability + self.illegal_defense_duration = illegal_defense_duration + self.illegal_defense_number = illegal_defense_number + self.illegal_defense_dist_x = illegal_defense_dist_x + self.illegal_defense_width = illegal_defense_width + self.fixed_teamname_l = fixed_teamname_l + self.fixed_teamname_r = fixed_teamname_r + self.max_catch_angle = max_catch_angle + self.min_catch_angle = min_catch_angle + self.random_seed = random_seed + self.long_kick_power_factor = long_kick_power_factor + self.long_kick_delay = long_kick_delay + self.max_monitors = max_monitors + self.catchable_area = catchable_area + self.real_speed_max = real_speed_max + self.pitch_half_length = pitch_half_length + self.pitch_half_width = pitch_half_width + self.our_penalty_area_line_x = our_penalty_area_line_x + self.their_penalty_area_line_x = their_penalty_area_line_x + self.penalty_area_half_width = penalty_area_half_width + self.penalty_area_length = penalty_area_length + self.goal_width = goal_width + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.agent_type = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.DOUBLE: + self.inertia_moment = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.DOUBLE: + self.player_size = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.DOUBLE: + self.player_decay = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.DOUBLE: + self.player_rand = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 6: + if ftype == TType.DOUBLE: + self.player_weight = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 7: + if ftype == TType.DOUBLE: + self.player_speed_max = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 8: + if ftype == TType.DOUBLE: + self.player_accel_max = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 9: + if ftype == TType.DOUBLE: + self.stamina_max = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 10: + if ftype == TType.DOUBLE: + self.stamina_inc_max = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 11: + if ftype == TType.DOUBLE: + self.recover_init = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 12: + if ftype == TType.DOUBLE: + self.recover_dec_thr = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 13: + if ftype == TType.DOUBLE: + self.recover_min = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 14: + if ftype == TType.DOUBLE: + self.recover_dec = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 15: + if ftype == TType.DOUBLE: + self.effort_init = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 16: + if ftype == TType.DOUBLE: + self.effort_dec_thr = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 17: + if ftype == TType.DOUBLE: + self.effort_min = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 18: + if ftype == TType.DOUBLE: + self.effort_dec = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 19: + if ftype == TType.DOUBLE: + self.effort_inc_thr = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 20: + if ftype == TType.DOUBLE: + self.effort_inc = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 21: + if ftype == TType.DOUBLE: + self.kick_rand = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 22: + if ftype == TType.BOOL: + self.team_actuator_noise = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 23: + if ftype == TType.DOUBLE: + self.player_rand_factor_l = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 24: + if ftype == TType.DOUBLE: + self.player_rand_factor_r = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 25: + if ftype == TType.DOUBLE: + self.kick_rand_factor_l = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 26: + if ftype == TType.DOUBLE: + self.kick_rand_factor_r = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 27: + if ftype == TType.DOUBLE: + self.ball_size = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 28: + if ftype == TType.DOUBLE: + self.ball_decay = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 29: + if ftype == TType.DOUBLE: + self.ball_rand = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 30: + if ftype == TType.DOUBLE: + self.ball_weight = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 31: + if ftype == TType.DOUBLE: + self.ball_speed_max = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 32: + if ftype == TType.DOUBLE: + self.ball_accel_max = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 33: + if ftype == TType.DOUBLE: + self.dash_power_rate = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 34: + if ftype == TType.DOUBLE: + self.kick_power_rate = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 35: + if ftype == TType.DOUBLE: + self.kickable_margin = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 36: + if ftype == TType.DOUBLE: + self.control_radius = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 37: + if ftype == TType.DOUBLE: + self.control_radius_width = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 38: + if ftype == TType.DOUBLE: + self.max_power = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 39: + if ftype == TType.DOUBLE: + self.min_power = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 40: + if ftype == TType.DOUBLE: + self.max_moment = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 41: + if ftype == TType.DOUBLE: + self.min_moment = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 42: + if ftype == TType.DOUBLE: + self.max_neck_moment = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 43: + if ftype == TType.DOUBLE: + self.min_neck_moment = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 44: + if ftype == TType.DOUBLE: + self.max_neck_angle = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 45: + if ftype == TType.DOUBLE: + self.min_neck_angle = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 46: + if ftype == TType.DOUBLE: + self.visible_angle = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 47: + if ftype == TType.DOUBLE: + self.visible_distance = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 48: + if ftype == TType.DOUBLE: + self.wind_dir = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 49: + if ftype == TType.DOUBLE: + self.wind_force = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 50: + if ftype == TType.DOUBLE: + self.wind_angle = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 51: + if ftype == TType.DOUBLE: + self.wind_rand = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 52: + if ftype == TType.DOUBLE: + self.kickable_area = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 53: + if ftype == TType.DOUBLE: + self.catch_area_l = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 54: + if ftype == TType.DOUBLE: + self.catch_area_w = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 55: + if ftype == TType.DOUBLE: + self.catch_probability = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 56: + if ftype == TType.I32: + self.goalie_max_moves = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 57: + if ftype == TType.DOUBLE: + self.corner_kick_margin = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 58: + if ftype == TType.DOUBLE: + self.offside_active_area_size = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 59: + if ftype == TType.BOOL: + self.wind_none = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 60: + if ftype == TType.BOOL: + self.use_wind_random = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 61: + if ftype == TType.I32: + self.coach_say_count_max = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 62: + if ftype == TType.I32: + self.coach_say_msg_size = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 63: + if ftype == TType.I32: + self.clang_win_size = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 64: + if ftype == TType.I32: + self.clang_define_win = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 65: + if ftype == TType.I32: + self.clang_meta_win = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 66: + if ftype == TType.I32: + self.clang_advice_win = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 67: + if ftype == TType.I32: + self.clang_info_win = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 68: + if ftype == TType.I32: + self.clang_mess_delay = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 69: + if ftype == TType.I32: + self.clang_mess_per_cycle = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 70: + if ftype == TType.I32: + self.half_time = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 71: + if ftype == TType.I32: + self.simulator_step = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 72: + if ftype == TType.I32: + self.send_step = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 73: + if ftype == TType.I32: + self.recv_step = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 74: + if ftype == TType.I32: + self.sense_body_step = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 75: + if ftype == TType.I32: + self.lcm_step = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 76: + if ftype == TType.I32: + self.player_say_msg_size = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 77: + if ftype == TType.I32: + self.player_hear_max = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 78: + if ftype == TType.I32: + self.player_hear_inc = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 79: + if ftype == TType.I32: + self.player_hear_decay = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 80: + if ftype == TType.I32: + self.catch_ban_cycle = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 81: + if ftype == TType.I32: + self.slow_down_factor = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 82: + if ftype == TType.BOOL: + self.use_offside = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 83: + if ftype == TType.BOOL: + self.kickoff_offside = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 84: + if ftype == TType.DOUBLE: + self.offside_kick_margin = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 85: + if ftype == TType.DOUBLE: + self.audio_cut_dist = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 86: + if ftype == TType.DOUBLE: + self.dist_quantize_step = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 87: + if ftype == TType.DOUBLE: + self.landmark_dist_quantize_step = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 88: + if ftype == TType.DOUBLE: + self.dir_quantize_step = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 89: + if ftype == TType.DOUBLE: + self.dist_quantize_step_l = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 90: + if ftype == TType.DOUBLE: + self.dist_quantize_step_r = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 91: + if ftype == TType.DOUBLE: + self.landmark_dist_quantize_step_l = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 92: + if ftype == TType.DOUBLE: + self.landmark_dist_quantize_step_r = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 93: + if ftype == TType.DOUBLE: + self.dir_quantize_step_l = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 94: + if ftype == TType.DOUBLE: + self.dir_quantize_step_r = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 95: + if ftype == TType.BOOL: + self.coach_mode = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 96: + if ftype == TType.BOOL: + self.coach_with_referee_mode = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 97: + if ftype == TType.BOOL: + self.use_old_coach_hear = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 98: + if ftype == TType.DOUBLE: + self.slowness_on_top_for_left_team = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 99: + if ftype == TType.DOUBLE: + self.slowness_on_top_for_right_team = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 100: + if ftype == TType.I32: + self.start_goal_l = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 101: + if ftype == TType.I32: + self.start_goal_r = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 102: + if ftype == TType.BOOL: + self.fullstate_l = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 103: + if ftype == TType.BOOL: + self.fullstate_r = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 104: + if ftype == TType.I32: + self.drop_ball_time = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 105: + if ftype == TType.BOOL: + self.synch_mode = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 106: + if ftype == TType.I32: + self.synch_offset = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 107: + if ftype == TType.I32: + self.synch_micro_sleep = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 108: + if ftype == TType.I32: + self.point_to_ban = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 109: + if ftype == TType.I32: + self.point_to_duration = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 110: + if ftype == TType.I32: + self.player_port = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 111: + if ftype == TType.I32: + self.trainer_port = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 112: + if ftype == TType.I32: + self.online_coach_port = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 113: + if ftype == TType.BOOL: + self.verbose_mode = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 114: + if ftype == TType.I32: + self.coach_send_vi_step = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 115: + if ftype == TType.STRING: + self.replay_file = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 116: + if ftype == TType.STRING: + self.landmark_file = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 117: + if ftype == TType.BOOL: + self.send_comms = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 118: + if ftype == TType.BOOL: + self.text_logging = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 119: + if ftype == TType.BOOL: + self.game_logging = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 120: + if ftype == TType.I32: + self.game_log_version = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 121: + if ftype == TType.STRING: + self.text_log_dir = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 122: + if ftype == TType.STRING: + self.game_log_dir = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 123: + if ftype == TType.STRING: + self.text_log_fixed_name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 124: + if ftype == TType.STRING: + self.game_log_fixed_name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 125: + if ftype == TType.BOOL: + self.use_text_log_fixed = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 126: + if ftype == TType.BOOL: + self.use_game_log_fixed = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 127: + if ftype == TType.BOOL: + self.use_text_log_dated = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 128: + if ftype == TType.BOOL: + self.use_game_log_dated = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 129: + if ftype == TType.STRING: + self.log_date_format = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 130: + if ftype == TType.BOOL: + self.log_times = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 131: + if ftype == TType.BOOL: + self.record_message = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 132: + if ftype == TType.I32: + self.text_log_compression = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 133: + if ftype == TType.I32: + self.game_log_compression = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 134: + if ftype == TType.BOOL: + self.use_profile = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 135: + if ftype == TType.DOUBLE: + self.tackle_dist = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 136: + if ftype == TType.DOUBLE: + self.tackle_back_dist = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 137: + if ftype == TType.DOUBLE: + self.tackle_width = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 138: + if ftype == TType.DOUBLE: + self.tackle_exponent = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 139: + if ftype == TType.I32: + self.tackle_cycles = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 140: + if ftype == TType.DOUBLE: + self.tackle_power_rate = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 141: + if ftype == TType.I32: + self.freeform_wait_period = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 142: + if ftype == TType.I32: + self.freeform_send_period = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 143: + if ftype == TType.BOOL: + self.free_kick_faults = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 144: + if ftype == TType.BOOL: + self.back_passes = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 145: + if ftype == TType.BOOL: + self.proper_goal_kicks = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 146: + if ftype == TType.DOUBLE: + self.stopped_ball_vel = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 147: + if ftype == TType.I32: + self.max_goal_kicks = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 148: + if ftype == TType.I32: + self.clang_del_win = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 149: + if ftype == TType.I32: + self.clang_rule_win = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 150: + if ftype == TType.BOOL: + self.auto_mode = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 151: + if ftype == TType.I32: + self.kick_off_wait = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 152: + if ftype == TType.I32: + self.connect_wait = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 153: + if ftype == TType.I32: + self.game_over_wait = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 154: + if ftype == TType.STRING: + self.team_l_start = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 155: + if ftype == TType.STRING: + self.team_r_start = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 156: + if ftype == TType.BOOL: + self.keepaway_mode = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 157: + if ftype == TType.DOUBLE: + self.keepaway_length = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 158: + if ftype == TType.DOUBLE: + self.keepaway_width = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 159: + if ftype == TType.BOOL: + self.keepaway_logging = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 160: + if ftype == TType.STRING: + self.keepaway_log_dir = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 161: + if ftype == TType.STRING: + self.keepaway_log_fixed_name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 162: + if ftype == TType.BOOL: + self.keepaway_log_fixed = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 163: + if ftype == TType.BOOL: + self.keepaway_log_dated = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 164: + if ftype == TType.I32: + self.keepaway_start = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 165: + if ftype == TType.I32: + self.nr_normal_halfs = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 166: + if ftype == TType.I32: + self.nr_extra_halfs = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 167: + if ftype == TType.BOOL: + self.penalty_shoot_outs = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 168: + if ftype == TType.I32: + self.pen_before_setup_wait = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 169: + if ftype == TType.I32: + self.pen_setup_wait = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 170: + if ftype == TType.I32: + self.pen_ready_wait = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 171: + if ftype == TType.I32: + self.pen_taken_wait = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 172: + if ftype == TType.I32: + self.pen_nr_kicks = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 173: + if ftype == TType.I32: + self.pen_max_extra_kicks = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 174: + if ftype == TType.DOUBLE: + self.pen_dist_x = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 175: + if ftype == TType.BOOL: + self.pen_random_winner = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 176: + if ftype == TType.BOOL: + self.pen_allow_mult_kicks = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 177: + if ftype == TType.DOUBLE: + self.pen_max_goalie_dist_x = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 178: + if ftype == TType.BOOL: + self.pen_coach_moves_players = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 179: + if ftype == TType.STRING: + self.module_dir = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 180: + if ftype == TType.DOUBLE: + self.ball_stuck_area = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 181: + if ftype == TType.STRING: + self.coach_msg_file = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 182: + if ftype == TType.DOUBLE: + self.max_tackle_power = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 183: + if ftype == TType.DOUBLE: + self.max_back_tackle_power = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 184: + if ftype == TType.DOUBLE: + self.player_speed_max_min = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 185: + if ftype == TType.DOUBLE: + self.extra_stamina = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 186: + if ftype == TType.I32: + self.synch_see_offset = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 187: + if ftype == TType.I32: + self.extra_half_time = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 188: + if ftype == TType.DOUBLE: + self.stamina_capacity = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 189: + if ftype == TType.DOUBLE: + self.max_dash_angle = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 190: + if ftype == TType.DOUBLE: + self.min_dash_angle = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 191: + if ftype == TType.DOUBLE: + self.dash_angle_step = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 192: + if ftype == TType.DOUBLE: + self.side_dash_rate = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 193: + if ftype == TType.DOUBLE: + self.back_dash_rate = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 194: + if ftype == TType.DOUBLE: + self.max_dash_power = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 195: + if ftype == TType.DOUBLE: + self.min_dash_power = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 196: + if ftype == TType.DOUBLE: + self.tackle_rand_factor = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 197: + if ftype == TType.DOUBLE: + self.foul_detect_probability = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 198: + if ftype == TType.DOUBLE: + self.foul_exponent = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 199: + if ftype == TType.I32: + self.foul_cycles = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 200: + if ftype == TType.BOOL: + self.golden_goal = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 201: + if ftype == TType.DOUBLE: + self.red_card_probability = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 202: + if ftype == TType.I32: + self.illegal_defense_duration = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 203: + if ftype == TType.I32: + self.illegal_defense_number = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 204: + if ftype == TType.DOUBLE: + self.illegal_defense_dist_x = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 205: + if ftype == TType.DOUBLE: + self.illegal_defense_width = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 206: + if ftype == TType.STRING: + self.fixed_teamname_l = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 207: + if ftype == TType.STRING: + self.fixed_teamname_r = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 208: + if ftype == TType.DOUBLE: + self.max_catch_angle = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 209: + if ftype == TType.DOUBLE: + self.min_catch_angle = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 210: + if ftype == TType.I32: + self.random_seed = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 211: + if ftype == TType.DOUBLE: + self.long_kick_power_factor = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 212: + if ftype == TType.I32: + self.long_kick_delay = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 213: + if ftype == TType.I32: + self.max_monitors = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 214: + if ftype == TType.DOUBLE: + self.catchable_area = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 215: + if ftype == TType.DOUBLE: + self.real_speed_max = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 216: + if ftype == TType.DOUBLE: + self.pitch_half_length = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 217: + if ftype == TType.DOUBLE: + self.pitch_half_width = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 218: + if ftype == TType.DOUBLE: + self.our_penalty_area_line_x = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 219: + if ftype == TType.DOUBLE: + self.their_penalty_area_line_x = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 220: + if ftype == TType.DOUBLE: + self.penalty_area_half_width = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 221: + if ftype == TType.DOUBLE: + self.penalty_area_length = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 222: + if ftype == TType.DOUBLE: + self.goal_width = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('ServerParam') + if self.agent_type is not None: + oprot.writeFieldBegin('agent_type', TType.I32, 1) + oprot.writeI32(self.agent_type) + oprot.writeFieldEnd() + if self.inertia_moment is not None: + oprot.writeFieldBegin('inertia_moment', TType.DOUBLE, 2) + oprot.writeDouble(self.inertia_moment) + oprot.writeFieldEnd() + if self.player_size is not None: + oprot.writeFieldBegin('player_size', TType.DOUBLE, 3) + oprot.writeDouble(self.player_size) + oprot.writeFieldEnd() + if self.player_decay is not None: + oprot.writeFieldBegin('player_decay', TType.DOUBLE, 4) + oprot.writeDouble(self.player_decay) + oprot.writeFieldEnd() + if self.player_rand is not None: + oprot.writeFieldBegin('player_rand', TType.DOUBLE, 5) + oprot.writeDouble(self.player_rand) + oprot.writeFieldEnd() + if self.player_weight is not None: + oprot.writeFieldBegin('player_weight', TType.DOUBLE, 6) + oprot.writeDouble(self.player_weight) + oprot.writeFieldEnd() + if self.player_speed_max is not None: + oprot.writeFieldBegin('player_speed_max', TType.DOUBLE, 7) + oprot.writeDouble(self.player_speed_max) + oprot.writeFieldEnd() + if self.player_accel_max is not None: + oprot.writeFieldBegin('player_accel_max', TType.DOUBLE, 8) + oprot.writeDouble(self.player_accel_max) + oprot.writeFieldEnd() + if self.stamina_max is not None: + oprot.writeFieldBegin('stamina_max', TType.DOUBLE, 9) + oprot.writeDouble(self.stamina_max) + oprot.writeFieldEnd() + if self.stamina_inc_max is not None: + oprot.writeFieldBegin('stamina_inc_max', TType.DOUBLE, 10) + oprot.writeDouble(self.stamina_inc_max) + oprot.writeFieldEnd() + if self.recover_init is not None: + oprot.writeFieldBegin('recover_init', TType.DOUBLE, 11) + oprot.writeDouble(self.recover_init) + oprot.writeFieldEnd() + if self.recover_dec_thr is not None: + oprot.writeFieldBegin('recover_dec_thr', TType.DOUBLE, 12) + oprot.writeDouble(self.recover_dec_thr) + oprot.writeFieldEnd() + if self.recover_min is not None: + oprot.writeFieldBegin('recover_min', TType.DOUBLE, 13) + oprot.writeDouble(self.recover_min) + oprot.writeFieldEnd() + if self.recover_dec is not None: + oprot.writeFieldBegin('recover_dec', TType.DOUBLE, 14) + oprot.writeDouble(self.recover_dec) + oprot.writeFieldEnd() + if self.effort_init is not None: + oprot.writeFieldBegin('effort_init', TType.DOUBLE, 15) + oprot.writeDouble(self.effort_init) + oprot.writeFieldEnd() + if self.effort_dec_thr is not None: + oprot.writeFieldBegin('effort_dec_thr', TType.DOUBLE, 16) + oprot.writeDouble(self.effort_dec_thr) + oprot.writeFieldEnd() + if self.effort_min is not None: + oprot.writeFieldBegin('effort_min', TType.DOUBLE, 17) + oprot.writeDouble(self.effort_min) + oprot.writeFieldEnd() + if self.effort_dec is not None: + oprot.writeFieldBegin('effort_dec', TType.DOUBLE, 18) + oprot.writeDouble(self.effort_dec) + oprot.writeFieldEnd() + if self.effort_inc_thr is not None: + oprot.writeFieldBegin('effort_inc_thr', TType.DOUBLE, 19) + oprot.writeDouble(self.effort_inc_thr) + oprot.writeFieldEnd() + if self.effort_inc is not None: + oprot.writeFieldBegin('effort_inc', TType.DOUBLE, 20) + oprot.writeDouble(self.effort_inc) + oprot.writeFieldEnd() + if self.kick_rand is not None: + oprot.writeFieldBegin('kick_rand', TType.DOUBLE, 21) + oprot.writeDouble(self.kick_rand) + oprot.writeFieldEnd() + if self.team_actuator_noise is not None: + oprot.writeFieldBegin('team_actuator_noise', TType.BOOL, 22) + oprot.writeBool(self.team_actuator_noise) + oprot.writeFieldEnd() + if self.player_rand_factor_l is not None: + oprot.writeFieldBegin('player_rand_factor_l', TType.DOUBLE, 23) + oprot.writeDouble(self.player_rand_factor_l) + oprot.writeFieldEnd() + if self.player_rand_factor_r is not None: + oprot.writeFieldBegin('player_rand_factor_r', TType.DOUBLE, 24) + oprot.writeDouble(self.player_rand_factor_r) + oprot.writeFieldEnd() + if self.kick_rand_factor_l is not None: + oprot.writeFieldBegin('kick_rand_factor_l', TType.DOUBLE, 25) + oprot.writeDouble(self.kick_rand_factor_l) + oprot.writeFieldEnd() + if self.kick_rand_factor_r is not None: + oprot.writeFieldBegin('kick_rand_factor_r', TType.DOUBLE, 26) + oprot.writeDouble(self.kick_rand_factor_r) + oprot.writeFieldEnd() + if self.ball_size is not None: + oprot.writeFieldBegin('ball_size', TType.DOUBLE, 27) + oprot.writeDouble(self.ball_size) + oprot.writeFieldEnd() + if self.ball_decay is not None: + oprot.writeFieldBegin('ball_decay', TType.DOUBLE, 28) + oprot.writeDouble(self.ball_decay) + oprot.writeFieldEnd() + if self.ball_rand is not None: + oprot.writeFieldBegin('ball_rand', TType.DOUBLE, 29) + oprot.writeDouble(self.ball_rand) + oprot.writeFieldEnd() + if self.ball_weight is not None: + oprot.writeFieldBegin('ball_weight', TType.DOUBLE, 30) + oprot.writeDouble(self.ball_weight) + oprot.writeFieldEnd() + if self.ball_speed_max is not None: + oprot.writeFieldBegin('ball_speed_max', TType.DOUBLE, 31) + oprot.writeDouble(self.ball_speed_max) + oprot.writeFieldEnd() + if self.ball_accel_max is not None: + oprot.writeFieldBegin('ball_accel_max', TType.DOUBLE, 32) + oprot.writeDouble(self.ball_accel_max) + oprot.writeFieldEnd() + if self.dash_power_rate is not None: + oprot.writeFieldBegin('dash_power_rate', TType.DOUBLE, 33) + oprot.writeDouble(self.dash_power_rate) + oprot.writeFieldEnd() + if self.kick_power_rate is not None: + oprot.writeFieldBegin('kick_power_rate', TType.DOUBLE, 34) + oprot.writeDouble(self.kick_power_rate) + oprot.writeFieldEnd() + if self.kickable_margin is not None: + oprot.writeFieldBegin('kickable_margin', TType.DOUBLE, 35) + oprot.writeDouble(self.kickable_margin) + oprot.writeFieldEnd() + if self.control_radius is not None: + oprot.writeFieldBegin('control_radius', TType.DOUBLE, 36) + oprot.writeDouble(self.control_radius) + oprot.writeFieldEnd() + if self.control_radius_width is not None: + oprot.writeFieldBegin('control_radius_width', TType.DOUBLE, 37) + oprot.writeDouble(self.control_radius_width) + oprot.writeFieldEnd() + if self.max_power is not None: + oprot.writeFieldBegin('max_power', TType.DOUBLE, 38) + oprot.writeDouble(self.max_power) + oprot.writeFieldEnd() + if self.min_power is not None: + oprot.writeFieldBegin('min_power', TType.DOUBLE, 39) + oprot.writeDouble(self.min_power) + oprot.writeFieldEnd() + if self.max_moment is not None: + oprot.writeFieldBegin('max_moment', TType.DOUBLE, 40) + oprot.writeDouble(self.max_moment) + oprot.writeFieldEnd() + if self.min_moment is not None: + oprot.writeFieldBegin('min_moment', TType.DOUBLE, 41) + oprot.writeDouble(self.min_moment) + oprot.writeFieldEnd() + if self.max_neck_moment is not None: + oprot.writeFieldBegin('max_neck_moment', TType.DOUBLE, 42) + oprot.writeDouble(self.max_neck_moment) + oprot.writeFieldEnd() + if self.min_neck_moment is not None: + oprot.writeFieldBegin('min_neck_moment', TType.DOUBLE, 43) + oprot.writeDouble(self.min_neck_moment) + oprot.writeFieldEnd() + if self.max_neck_angle is not None: + oprot.writeFieldBegin('max_neck_angle', TType.DOUBLE, 44) + oprot.writeDouble(self.max_neck_angle) + oprot.writeFieldEnd() + if self.min_neck_angle is not None: + oprot.writeFieldBegin('min_neck_angle', TType.DOUBLE, 45) + oprot.writeDouble(self.min_neck_angle) + oprot.writeFieldEnd() + if self.visible_angle is not None: + oprot.writeFieldBegin('visible_angle', TType.DOUBLE, 46) + oprot.writeDouble(self.visible_angle) + oprot.writeFieldEnd() + if self.visible_distance is not None: + oprot.writeFieldBegin('visible_distance', TType.DOUBLE, 47) + oprot.writeDouble(self.visible_distance) + oprot.writeFieldEnd() + if self.wind_dir is not None: + oprot.writeFieldBegin('wind_dir', TType.DOUBLE, 48) + oprot.writeDouble(self.wind_dir) + oprot.writeFieldEnd() + if self.wind_force is not None: + oprot.writeFieldBegin('wind_force', TType.DOUBLE, 49) + oprot.writeDouble(self.wind_force) + oprot.writeFieldEnd() + if self.wind_angle is not None: + oprot.writeFieldBegin('wind_angle', TType.DOUBLE, 50) + oprot.writeDouble(self.wind_angle) + oprot.writeFieldEnd() + if self.wind_rand is not None: + oprot.writeFieldBegin('wind_rand', TType.DOUBLE, 51) + oprot.writeDouble(self.wind_rand) + oprot.writeFieldEnd() + if self.kickable_area is not None: + oprot.writeFieldBegin('kickable_area', TType.DOUBLE, 52) + oprot.writeDouble(self.kickable_area) + oprot.writeFieldEnd() + if self.catch_area_l is not None: + oprot.writeFieldBegin('catch_area_l', TType.DOUBLE, 53) + oprot.writeDouble(self.catch_area_l) + oprot.writeFieldEnd() + if self.catch_area_w is not None: + oprot.writeFieldBegin('catch_area_w', TType.DOUBLE, 54) + oprot.writeDouble(self.catch_area_w) + oprot.writeFieldEnd() + if self.catch_probability is not None: + oprot.writeFieldBegin('catch_probability', TType.DOUBLE, 55) + oprot.writeDouble(self.catch_probability) + oprot.writeFieldEnd() + if self.goalie_max_moves is not None: + oprot.writeFieldBegin('goalie_max_moves', TType.I32, 56) + oprot.writeI32(self.goalie_max_moves) + oprot.writeFieldEnd() + if self.corner_kick_margin is not None: + oprot.writeFieldBegin('corner_kick_margin', TType.DOUBLE, 57) + oprot.writeDouble(self.corner_kick_margin) + oprot.writeFieldEnd() + if self.offside_active_area_size is not None: + oprot.writeFieldBegin('offside_active_area_size', TType.DOUBLE, 58) + oprot.writeDouble(self.offside_active_area_size) + oprot.writeFieldEnd() + if self.wind_none is not None: + oprot.writeFieldBegin('wind_none', TType.BOOL, 59) + oprot.writeBool(self.wind_none) + oprot.writeFieldEnd() + if self.use_wind_random is not None: + oprot.writeFieldBegin('use_wind_random', TType.BOOL, 60) + oprot.writeBool(self.use_wind_random) + oprot.writeFieldEnd() + if self.coach_say_count_max is not None: + oprot.writeFieldBegin('coach_say_count_max', TType.I32, 61) + oprot.writeI32(self.coach_say_count_max) + oprot.writeFieldEnd() + if self.coach_say_msg_size is not None: + oprot.writeFieldBegin('coach_say_msg_size', TType.I32, 62) + oprot.writeI32(self.coach_say_msg_size) + oprot.writeFieldEnd() + if self.clang_win_size is not None: + oprot.writeFieldBegin('clang_win_size', TType.I32, 63) + oprot.writeI32(self.clang_win_size) + oprot.writeFieldEnd() + if self.clang_define_win is not None: + oprot.writeFieldBegin('clang_define_win', TType.I32, 64) + oprot.writeI32(self.clang_define_win) + oprot.writeFieldEnd() + if self.clang_meta_win is not None: + oprot.writeFieldBegin('clang_meta_win', TType.I32, 65) + oprot.writeI32(self.clang_meta_win) + oprot.writeFieldEnd() + if self.clang_advice_win is not None: + oprot.writeFieldBegin('clang_advice_win', TType.I32, 66) + oprot.writeI32(self.clang_advice_win) + oprot.writeFieldEnd() + if self.clang_info_win is not None: + oprot.writeFieldBegin('clang_info_win', TType.I32, 67) + oprot.writeI32(self.clang_info_win) + oprot.writeFieldEnd() + if self.clang_mess_delay is not None: + oprot.writeFieldBegin('clang_mess_delay', TType.I32, 68) + oprot.writeI32(self.clang_mess_delay) + oprot.writeFieldEnd() + if self.clang_mess_per_cycle is not None: + oprot.writeFieldBegin('clang_mess_per_cycle', TType.I32, 69) + oprot.writeI32(self.clang_mess_per_cycle) + oprot.writeFieldEnd() + if self.half_time is not None: + oprot.writeFieldBegin('half_time', TType.I32, 70) + oprot.writeI32(self.half_time) + oprot.writeFieldEnd() + if self.simulator_step is not None: + oprot.writeFieldBegin('simulator_step', TType.I32, 71) + oprot.writeI32(self.simulator_step) + oprot.writeFieldEnd() + if self.send_step is not None: + oprot.writeFieldBegin('send_step', TType.I32, 72) + oprot.writeI32(self.send_step) + oprot.writeFieldEnd() + if self.recv_step is not None: + oprot.writeFieldBegin('recv_step', TType.I32, 73) + oprot.writeI32(self.recv_step) + oprot.writeFieldEnd() + if self.sense_body_step is not None: + oprot.writeFieldBegin('sense_body_step', TType.I32, 74) + oprot.writeI32(self.sense_body_step) + oprot.writeFieldEnd() + if self.lcm_step is not None: + oprot.writeFieldBegin('lcm_step', TType.I32, 75) + oprot.writeI32(self.lcm_step) + oprot.writeFieldEnd() + if self.player_say_msg_size is not None: + oprot.writeFieldBegin('player_say_msg_size', TType.I32, 76) + oprot.writeI32(self.player_say_msg_size) + oprot.writeFieldEnd() + if self.player_hear_max is not None: + oprot.writeFieldBegin('player_hear_max', TType.I32, 77) + oprot.writeI32(self.player_hear_max) + oprot.writeFieldEnd() + if self.player_hear_inc is not None: + oprot.writeFieldBegin('player_hear_inc', TType.I32, 78) + oprot.writeI32(self.player_hear_inc) + oprot.writeFieldEnd() + if self.player_hear_decay is not None: + oprot.writeFieldBegin('player_hear_decay', TType.I32, 79) + oprot.writeI32(self.player_hear_decay) + oprot.writeFieldEnd() + if self.catch_ban_cycle is not None: + oprot.writeFieldBegin('catch_ban_cycle', TType.I32, 80) + oprot.writeI32(self.catch_ban_cycle) + oprot.writeFieldEnd() + if self.slow_down_factor is not None: + oprot.writeFieldBegin('slow_down_factor', TType.I32, 81) + oprot.writeI32(self.slow_down_factor) + oprot.writeFieldEnd() + if self.use_offside is not None: + oprot.writeFieldBegin('use_offside', TType.BOOL, 82) + oprot.writeBool(self.use_offside) + oprot.writeFieldEnd() + if self.kickoff_offside is not None: + oprot.writeFieldBegin('kickoff_offside', TType.BOOL, 83) + oprot.writeBool(self.kickoff_offside) + oprot.writeFieldEnd() + if self.offside_kick_margin is not None: + oprot.writeFieldBegin('offside_kick_margin', TType.DOUBLE, 84) + oprot.writeDouble(self.offside_kick_margin) + oprot.writeFieldEnd() + if self.audio_cut_dist is not None: + oprot.writeFieldBegin('audio_cut_dist', TType.DOUBLE, 85) + oprot.writeDouble(self.audio_cut_dist) + oprot.writeFieldEnd() + if self.dist_quantize_step is not None: + oprot.writeFieldBegin('dist_quantize_step', TType.DOUBLE, 86) + oprot.writeDouble(self.dist_quantize_step) + oprot.writeFieldEnd() + if self.landmark_dist_quantize_step is not None: + oprot.writeFieldBegin('landmark_dist_quantize_step', TType.DOUBLE, 87) + oprot.writeDouble(self.landmark_dist_quantize_step) + oprot.writeFieldEnd() + if self.dir_quantize_step is not None: + oprot.writeFieldBegin('dir_quantize_step', TType.DOUBLE, 88) + oprot.writeDouble(self.dir_quantize_step) + oprot.writeFieldEnd() + if self.dist_quantize_step_l is not None: + oprot.writeFieldBegin('dist_quantize_step_l', TType.DOUBLE, 89) + oprot.writeDouble(self.dist_quantize_step_l) + oprot.writeFieldEnd() + if self.dist_quantize_step_r is not None: + oprot.writeFieldBegin('dist_quantize_step_r', TType.DOUBLE, 90) + oprot.writeDouble(self.dist_quantize_step_r) + oprot.writeFieldEnd() + if self.landmark_dist_quantize_step_l is not None: + oprot.writeFieldBegin('landmark_dist_quantize_step_l', TType.DOUBLE, 91) + oprot.writeDouble(self.landmark_dist_quantize_step_l) + oprot.writeFieldEnd() + if self.landmark_dist_quantize_step_r is not None: + oprot.writeFieldBegin('landmark_dist_quantize_step_r', TType.DOUBLE, 92) + oprot.writeDouble(self.landmark_dist_quantize_step_r) + oprot.writeFieldEnd() + if self.dir_quantize_step_l is not None: + oprot.writeFieldBegin('dir_quantize_step_l', TType.DOUBLE, 93) + oprot.writeDouble(self.dir_quantize_step_l) + oprot.writeFieldEnd() + if self.dir_quantize_step_r is not None: + oprot.writeFieldBegin('dir_quantize_step_r', TType.DOUBLE, 94) + oprot.writeDouble(self.dir_quantize_step_r) + oprot.writeFieldEnd() + if self.coach_mode is not None: + oprot.writeFieldBegin('coach_mode', TType.BOOL, 95) + oprot.writeBool(self.coach_mode) + oprot.writeFieldEnd() + if self.coach_with_referee_mode is not None: + oprot.writeFieldBegin('coach_with_referee_mode', TType.BOOL, 96) + oprot.writeBool(self.coach_with_referee_mode) + oprot.writeFieldEnd() + if self.use_old_coach_hear is not None: + oprot.writeFieldBegin('use_old_coach_hear', TType.BOOL, 97) + oprot.writeBool(self.use_old_coach_hear) + oprot.writeFieldEnd() + if self.slowness_on_top_for_left_team is not None: + oprot.writeFieldBegin('slowness_on_top_for_left_team', TType.DOUBLE, 98) + oprot.writeDouble(self.slowness_on_top_for_left_team) + oprot.writeFieldEnd() + if self.slowness_on_top_for_right_team is not None: + oprot.writeFieldBegin('slowness_on_top_for_right_team', TType.DOUBLE, 99) + oprot.writeDouble(self.slowness_on_top_for_right_team) + oprot.writeFieldEnd() + if self.start_goal_l is not None: + oprot.writeFieldBegin('start_goal_l', TType.I32, 100) + oprot.writeI32(self.start_goal_l) + oprot.writeFieldEnd() + if self.start_goal_r is not None: + oprot.writeFieldBegin('start_goal_r', TType.I32, 101) + oprot.writeI32(self.start_goal_r) + oprot.writeFieldEnd() + if self.fullstate_l is not None: + oprot.writeFieldBegin('fullstate_l', TType.BOOL, 102) + oprot.writeBool(self.fullstate_l) + oprot.writeFieldEnd() + if self.fullstate_r is not None: + oprot.writeFieldBegin('fullstate_r', TType.BOOL, 103) + oprot.writeBool(self.fullstate_r) + oprot.writeFieldEnd() + if self.drop_ball_time is not None: + oprot.writeFieldBegin('drop_ball_time', TType.I32, 104) + oprot.writeI32(self.drop_ball_time) + oprot.writeFieldEnd() + if self.synch_mode is not None: + oprot.writeFieldBegin('synch_mode', TType.BOOL, 105) + oprot.writeBool(self.synch_mode) + oprot.writeFieldEnd() + if self.synch_offset is not None: + oprot.writeFieldBegin('synch_offset', TType.I32, 106) + oprot.writeI32(self.synch_offset) + oprot.writeFieldEnd() + if self.synch_micro_sleep is not None: + oprot.writeFieldBegin('synch_micro_sleep', TType.I32, 107) + oprot.writeI32(self.synch_micro_sleep) + oprot.writeFieldEnd() + if self.point_to_ban is not None: + oprot.writeFieldBegin('point_to_ban', TType.I32, 108) + oprot.writeI32(self.point_to_ban) + oprot.writeFieldEnd() + if self.point_to_duration is not None: + oprot.writeFieldBegin('point_to_duration', TType.I32, 109) + oprot.writeI32(self.point_to_duration) + oprot.writeFieldEnd() + if self.player_port is not None: + oprot.writeFieldBegin('player_port', TType.I32, 110) + oprot.writeI32(self.player_port) + oprot.writeFieldEnd() + if self.trainer_port is not None: + oprot.writeFieldBegin('trainer_port', TType.I32, 111) + oprot.writeI32(self.trainer_port) + oprot.writeFieldEnd() + if self.online_coach_port is not None: + oprot.writeFieldBegin('online_coach_port', TType.I32, 112) + oprot.writeI32(self.online_coach_port) + oprot.writeFieldEnd() + if self.verbose_mode is not None: + oprot.writeFieldBegin('verbose_mode', TType.BOOL, 113) + oprot.writeBool(self.verbose_mode) + oprot.writeFieldEnd() + if self.coach_send_vi_step is not None: + oprot.writeFieldBegin('coach_send_vi_step', TType.I32, 114) + oprot.writeI32(self.coach_send_vi_step) + oprot.writeFieldEnd() + if self.replay_file is not None: + oprot.writeFieldBegin('replay_file', TType.STRING, 115) + oprot.writeString(self.replay_file.encode('utf-8') if sys.version_info[0] == 2 else self.replay_file) + oprot.writeFieldEnd() + if self.landmark_file is not None: + oprot.writeFieldBegin('landmark_file', TType.STRING, 116) + oprot.writeString(self.landmark_file.encode('utf-8') if sys.version_info[0] == 2 else self.landmark_file) + oprot.writeFieldEnd() + if self.send_comms is not None: + oprot.writeFieldBegin('send_comms', TType.BOOL, 117) + oprot.writeBool(self.send_comms) + oprot.writeFieldEnd() + if self.text_logging is not None: + oprot.writeFieldBegin('text_logging', TType.BOOL, 118) + oprot.writeBool(self.text_logging) + oprot.writeFieldEnd() + if self.game_logging is not None: + oprot.writeFieldBegin('game_logging', TType.BOOL, 119) + oprot.writeBool(self.game_logging) + oprot.writeFieldEnd() + if self.game_log_version is not None: + oprot.writeFieldBegin('game_log_version', TType.I32, 120) + oprot.writeI32(self.game_log_version) + oprot.writeFieldEnd() + if self.text_log_dir is not None: + oprot.writeFieldBegin('text_log_dir', TType.STRING, 121) + oprot.writeString(self.text_log_dir.encode('utf-8') if sys.version_info[0] == 2 else self.text_log_dir) + oprot.writeFieldEnd() + if self.game_log_dir is not None: + oprot.writeFieldBegin('game_log_dir', TType.STRING, 122) + oprot.writeString(self.game_log_dir.encode('utf-8') if sys.version_info[0] == 2 else self.game_log_dir) + oprot.writeFieldEnd() + if self.text_log_fixed_name is not None: + oprot.writeFieldBegin('text_log_fixed_name', TType.STRING, 123) + oprot.writeString(self.text_log_fixed_name.encode('utf-8') if sys.version_info[0] == 2 else self.text_log_fixed_name) + oprot.writeFieldEnd() + if self.game_log_fixed_name is not None: + oprot.writeFieldBegin('game_log_fixed_name', TType.STRING, 124) + oprot.writeString(self.game_log_fixed_name.encode('utf-8') if sys.version_info[0] == 2 else self.game_log_fixed_name) + oprot.writeFieldEnd() + if self.use_text_log_fixed is not None: + oprot.writeFieldBegin('use_text_log_fixed', TType.BOOL, 125) + oprot.writeBool(self.use_text_log_fixed) + oprot.writeFieldEnd() + if self.use_game_log_fixed is not None: + oprot.writeFieldBegin('use_game_log_fixed', TType.BOOL, 126) + oprot.writeBool(self.use_game_log_fixed) + oprot.writeFieldEnd() + if self.use_text_log_dated is not None: + oprot.writeFieldBegin('use_text_log_dated', TType.BOOL, 127) + oprot.writeBool(self.use_text_log_dated) + oprot.writeFieldEnd() + if self.use_game_log_dated is not None: + oprot.writeFieldBegin('use_game_log_dated', TType.BOOL, 128) + oprot.writeBool(self.use_game_log_dated) + oprot.writeFieldEnd() + if self.log_date_format is not None: + oprot.writeFieldBegin('log_date_format', TType.STRING, 129) + oprot.writeString(self.log_date_format.encode('utf-8') if sys.version_info[0] == 2 else self.log_date_format) + oprot.writeFieldEnd() + if self.log_times is not None: + oprot.writeFieldBegin('log_times', TType.BOOL, 130) + oprot.writeBool(self.log_times) + oprot.writeFieldEnd() + if self.record_message is not None: + oprot.writeFieldBegin('record_message', TType.BOOL, 131) + oprot.writeBool(self.record_message) + oprot.writeFieldEnd() + if self.text_log_compression is not None: + oprot.writeFieldBegin('text_log_compression', TType.I32, 132) + oprot.writeI32(self.text_log_compression) + oprot.writeFieldEnd() + if self.game_log_compression is not None: + oprot.writeFieldBegin('game_log_compression', TType.I32, 133) + oprot.writeI32(self.game_log_compression) + oprot.writeFieldEnd() + if self.use_profile is not None: + oprot.writeFieldBegin('use_profile', TType.BOOL, 134) + oprot.writeBool(self.use_profile) + oprot.writeFieldEnd() + if self.tackle_dist is not None: + oprot.writeFieldBegin('tackle_dist', TType.DOUBLE, 135) + oprot.writeDouble(self.tackle_dist) + oprot.writeFieldEnd() + if self.tackle_back_dist is not None: + oprot.writeFieldBegin('tackle_back_dist', TType.DOUBLE, 136) + oprot.writeDouble(self.tackle_back_dist) + oprot.writeFieldEnd() + if self.tackle_width is not None: + oprot.writeFieldBegin('tackle_width', TType.DOUBLE, 137) + oprot.writeDouble(self.tackle_width) + oprot.writeFieldEnd() + if self.tackle_exponent is not None: + oprot.writeFieldBegin('tackle_exponent', TType.DOUBLE, 138) + oprot.writeDouble(self.tackle_exponent) + oprot.writeFieldEnd() + if self.tackle_cycles is not None: + oprot.writeFieldBegin('tackle_cycles', TType.I32, 139) + oprot.writeI32(self.tackle_cycles) + oprot.writeFieldEnd() + if self.tackle_power_rate is not None: + oprot.writeFieldBegin('tackle_power_rate', TType.DOUBLE, 140) + oprot.writeDouble(self.tackle_power_rate) + oprot.writeFieldEnd() + if self.freeform_wait_period is not None: + oprot.writeFieldBegin('freeform_wait_period', TType.I32, 141) + oprot.writeI32(self.freeform_wait_period) + oprot.writeFieldEnd() + if self.freeform_send_period is not None: + oprot.writeFieldBegin('freeform_send_period', TType.I32, 142) + oprot.writeI32(self.freeform_send_period) + oprot.writeFieldEnd() + if self.free_kick_faults is not None: + oprot.writeFieldBegin('free_kick_faults', TType.BOOL, 143) + oprot.writeBool(self.free_kick_faults) + oprot.writeFieldEnd() + if self.back_passes is not None: + oprot.writeFieldBegin('back_passes', TType.BOOL, 144) + oprot.writeBool(self.back_passes) + oprot.writeFieldEnd() + if self.proper_goal_kicks is not None: + oprot.writeFieldBegin('proper_goal_kicks', TType.BOOL, 145) + oprot.writeBool(self.proper_goal_kicks) + oprot.writeFieldEnd() + if self.stopped_ball_vel is not None: + oprot.writeFieldBegin('stopped_ball_vel', TType.DOUBLE, 146) + oprot.writeDouble(self.stopped_ball_vel) + oprot.writeFieldEnd() + if self.max_goal_kicks is not None: + oprot.writeFieldBegin('max_goal_kicks', TType.I32, 147) + oprot.writeI32(self.max_goal_kicks) + oprot.writeFieldEnd() + if self.clang_del_win is not None: + oprot.writeFieldBegin('clang_del_win', TType.I32, 148) + oprot.writeI32(self.clang_del_win) + oprot.writeFieldEnd() + if self.clang_rule_win is not None: + oprot.writeFieldBegin('clang_rule_win', TType.I32, 149) + oprot.writeI32(self.clang_rule_win) + oprot.writeFieldEnd() + if self.auto_mode is not None: + oprot.writeFieldBegin('auto_mode', TType.BOOL, 150) + oprot.writeBool(self.auto_mode) + oprot.writeFieldEnd() + if self.kick_off_wait is not None: + oprot.writeFieldBegin('kick_off_wait', TType.I32, 151) + oprot.writeI32(self.kick_off_wait) + oprot.writeFieldEnd() + if self.connect_wait is not None: + oprot.writeFieldBegin('connect_wait', TType.I32, 152) + oprot.writeI32(self.connect_wait) + oprot.writeFieldEnd() + if self.game_over_wait is not None: + oprot.writeFieldBegin('game_over_wait', TType.I32, 153) + oprot.writeI32(self.game_over_wait) + oprot.writeFieldEnd() + if self.team_l_start is not None: + oprot.writeFieldBegin('team_l_start', TType.STRING, 154) + oprot.writeString(self.team_l_start.encode('utf-8') if sys.version_info[0] == 2 else self.team_l_start) + oprot.writeFieldEnd() + if self.team_r_start is not None: + oprot.writeFieldBegin('team_r_start', TType.STRING, 155) + oprot.writeString(self.team_r_start.encode('utf-8') if sys.version_info[0] == 2 else self.team_r_start) + oprot.writeFieldEnd() + if self.keepaway_mode is not None: + oprot.writeFieldBegin('keepaway_mode', TType.BOOL, 156) + oprot.writeBool(self.keepaway_mode) + oprot.writeFieldEnd() + if self.keepaway_length is not None: + oprot.writeFieldBegin('keepaway_length', TType.DOUBLE, 157) + oprot.writeDouble(self.keepaway_length) + oprot.writeFieldEnd() + if self.keepaway_width is not None: + oprot.writeFieldBegin('keepaway_width', TType.DOUBLE, 158) + oprot.writeDouble(self.keepaway_width) + oprot.writeFieldEnd() + if self.keepaway_logging is not None: + oprot.writeFieldBegin('keepaway_logging', TType.BOOL, 159) + oprot.writeBool(self.keepaway_logging) + oprot.writeFieldEnd() + if self.keepaway_log_dir is not None: + oprot.writeFieldBegin('keepaway_log_dir', TType.STRING, 160) + oprot.writeString(self.keepaway_log_dir.encode('utf-8') if sys.version_info[0] == 2 else self.keepaway_log_dir) + oprot.writeFieldEnd() + if self.keepaway_log_fixed_name is not None: + oprot.writeFieldBegin('keepaway_log_fixed_name', TType.STRING, 161) + oprot.writeString(self.keepaway_log_fixed_name.encode('utf-8') if sys.version_info[0] == 2 else self.keepaway_log_fixed_name) + oprot.writeFieldEnd() + if self.keepaway_log_fixed is not None: + oprot.writeFieldBegin('keepaway_log_fixed', TType.BOOL, 162) + oprot.writeBool(self.keepaway_log_fixed) + oprot.writeFieldEnd() + if self.keepaway_log_dated is not None: + oprot.writeFieldBegin('keepaway_log_dated', TType.BOOL, 163) + oprot.writeBool(self.keepaway_log_dated) + oprot.writeFieldEnd() + if self.keepaway_start is not None: + oprot.writeFieldBegin('keepaway_start', TType.I32, 164) + oprot.writeI32(self.keepaway_start) + oprot.writeFieldEnd() + if self.nr_normal_halfs is not None: + oprot.writeFieldBegin('nr_normal_halfs', TType.I32, 165) + oprot.writeI32(self.nr_normal_halfs) + oprot.writeFieldEnd() + if self.nr_extra_halfs is not None: + oprot.writeFieldBegin('nr_extra_halfs', TType.I32, 166) + oprot.writeI32(self.nr_extra_halfs) + oprot.writeFieldEnd() + if self.penalty_shoot_outs is not None: + oprot.writeFieldBegin('penalty_shoot_outs', TType.BOOL, 167) + oprot.writeBool(self.penalty_shoot_outs) + oprot.writeFieldEnd() + if self.pen_before_setup_wait is not None: + oprot.writeFieldBegin('pen_before_setup_wait', TType.I32, 168) + oprot.writeI32(self.pen_before_setup_wait) + oprot.writeFieldEnd() + if self.pen_setup_wait is not None: + oprot.writeFieldBegin('pen_setup_wait', TType.I32, 169) + oprot.writeI32(self.pen_setup_wait) + oprot.writeFieldEnd() + if self.pen_ready_wait is not None: + oprot.writeFieldBegin('pen_ready_wait', TType.I32, 170) + oprot.writeI32(self.pen_ready_wait) + oprot.writeFieldEnd() + if self.pen_taken_wait is not None: + oprot.writeFieldBegin('pen_taken_wait', TType.I32, 171) + oprot.writeI32(self.pen_taken_wait) + oprot.writeFieldEnd() + if self.pen_nr_kicks is not None: + oprot.writeFieldBegin('pen_nr_kicks', TType.I32, 172) + oprot.writeI32(self.pen_nr_kicks) + oprot.writeFieldEnd() + if self.pen_max_extra_kicks is not None: + oprot.writeFieldBegin('pen_max_extra_kicks', TType.I32, 173) + oprot.writeI32(self.pen_max_extra_kicks) + oprot.writeFieldEnd() + if self.pen_dist_x is not None: + oprot.writeFieldBegin('pen_dist_x', TType.DOUBLE, 174) + oprot.writeDouble(self.pen_dist_x) + oprot.writeFieldEnd() + if self.pen_random_winner is not None: + oprot.writeFieldBegin('pen_random_winner', TType.BOOL, 175) + oprot.writeBool(self.pen_random_winner) + oprot.writeFieldEnd() + if self.pen_allow_mult_kicks is not None: + oprot.writeFieldBegin('pen_allow_mult_kicks', TType.BOOL, 176) + oprot.writeBool(self.pen_allow_mult_kicks) + oprot.writeFieldEnd() + if self.pen_max_goalie_dist_x is not None: + oprot.writeFieldBegin('pen_max_goalie_dist_x', TType.DOUBLE, 177) + oprot.writeDouble(self.pen_max_goalie_dist_x) + oprot.writeFieldEnd() + if self.pen_coach_moves_players is not None: + oprot.writeFieldBegin('pen_coach_moves_players', TType.BOOL, 178) + oprot.writeBool(self.pen_coach_moves_players) + oprot.writeFieldEnd() + if self.module_dir is not None: + oprot.writeFieldBegin('module_dir', TType.STRING, 179) + oprot.writeString(self.module_dir.encode('utf-8') if sys.version_info[0] == 2 else self.module_dir) + oprot.writeFieldEnd() + if self.ball_stuck_area is not None: + oprot.writeFieldBegin('ball_stuck_area', TType.DOUBLE, 180) + oprot.writeDouble(self.ball_stuck_area) + oprot.writeFieldEnd() + if self.coach_msg_file is not None: + oprot.writeFieldBegin('coach_msg_file', TType.STRING, 181) + oprot.writeString(self.coach_msg_file.encode('utf-8') if sys.version_info[0] == 2 else self.coach_msg_file) + oprot.writeFieldEnd() + if self.max_tackle_power is not None: + oprot.writeFieldBegin('max_tackle_power', TType.DOUBLE, 182) + oprot.writeDouble(self.max_tackle_power) + oprot.writeFieldEnd() + if self.max_back_tackle_power is not None: + oprot.writeFieldBegin('max_back_tackle_power', TType.DOUBLE, 183) + oprot.writeDouble(self.max_back_tackle_power) + oprot.writeFieldEnd() + if self.player_speed_max_min is not None: + oprot.writeFieldBegin('player_speed_max_min', TType.DOUBLE, 184) + oprot.writeDouble(self.player_speed_max_min) + oprot.writeFieldEnd() + if self.extra_stamina is not None: + oprot.writeFieldBegin('extra_stamina', TType.DOUBLE, 185) + oprot.writeDouble(self.extra_stamina) + oprot.writeFieldEnd() + if self.synch_see_offset is not None: + oprot.writeFieldBegin('synch_see_offset', TType.I32, 186) + oprot.writeI32(self.synch_see_offset) + oprot.writeFieldEnd() + if self.extra_half_time is not None: + oprot.writeFieldBegin('extra_half_time', TType.I32, 187) + oprot.writeI32(self.extra_half_time) + oprot.writeFieldEnd() + if self.stamina_capacity is not None: + oprot.writeFieldBegin('stamina_capacity', TType.DOUBLE, 188) + oprot.writeDouble(self.stamina_capacity) + oprot.writeFieldEnd() + if self.max_dash_angle is not None: + oprot.writeFieldBegin('max_dash_angle', TType.DOUBLE, 189) + oprot.writeDouble(self.max_dash_angle) + oprot.writeFieldEnd() + if self.min_dash_angle is not None: + oprot.writeFieldBegin('min_dash_angle', TType.DOUBLE, 190) + oprot.writeDouble(self.min_dash_angle) + oprot.writeFieldEnd() + if self.dash_angle_step is not None: + oprot.writeFieldBegin('dash_angle_step', TType.DOUBLE, 191) + oprot.writeDouble(self.dash_angle_step) + oprot.writeFieldEnd() + if self.side_dash_rate is not None: + oprot.writeFieldBegin('side_dash_rate', TType.DOUBLE, 192) + oprot.writeDouble(self.side_dash_rate) + oprot.writeFieldEnd() + if self.back_dash_rate is not None: + oprot.writeFieldBegin('back_dash_rate', TType.DOUBLE, 193) + oprot.writeDouble(self.back_dash_rate) + oprot.writeFieldEnd() + if self.max_dash_power is not None: + oprot.writeFieldBegin('max_dash_power', TType.DOUBLE, 194) + oprot.writeDouble(self.max_dash_power) + oprot.writeFieldEnd() + if self.min_dash_power is not None: + oprot.writeFieldBegin('min_dash_power', TType.DOUBLE, 195) + oprot.writeDouble(self.min_dash_power) + oprot.writeFieldEnd() + if self.tackle_rand_factor is not None: + oprot.writeFieldBegin('tackle_rand_factor', TType.DOUBLE, 196) + oprot.writeDouble(self.tackle_rand_factor) + oprot.writeFieldEnd() + if self.foul_detect_probability is not None: + oprot.writeFieldBegin('foul_detect_probability', TType.DOUBLE, 197) + oprot.writeDouble(self.foul_detect_probability) + oprot.writeFieldEnd() + if self.foul_exponent is not None: + oprot.writeFieldBegin('foul_exponent', TType.DOUBLE, 198) + oprot.writeDouble(self.foul_exponent) + oprot.writeFieldEnd() + if self.foul_cycles is not None: + oprot.writeFieldBegin('foul_cycles', TType.I32, 199) + oprot.writeI32(self.foul_cycles) + oprot.writeFieldEnd() + if self.golden_goal is not None: + oprot.writeFieldBegin('golden_goal', TType.BOOL, 200) + oprot.writeBool(self.golden_goal) + oprot.writeFieldEnd() + if self.red_card_probability is not None: + oprot.writeFieldBegin('red_card_probability', TType.DOUBLE, 201) + oprot.writeDouble(self.red_card_probability) + oprot.writeFieldEnd() + if self.illegal_defense_duration is not None: + oprot.writeFieldBegin('illegal_defense_duration', TType.I32, 202) + oprot.writeI32(self.illegal_defense_duration) + oprot.writeFieldEnd() + if self.illegal_defense_number is not None: + oprot.writeFieldBegin('illegal_defense_number', TType.I32, 203) + oprot.writeI32(self.illegal_defense_number) + oprot.writeFieldEnd() + if self.illegal_defense_dist_x is not None: + oprot.writeFieldBegin('illegal_defense_dist_x', TType.DOUBLE, 204) + oprot.writeDouble(self.illegal_defense_dist_x) + oprot.writeFieldEnd() + if self.illegal_defense_width is not None: + oprot.writeFieldBegin('illegal_defense_width', TType.DOUBLE, 205) + oprot.writeDouble(self.illegal_defense_width) + oprot.writeFieldEnd() + if self.fixed_teamname_l is not None: + oprot.writeFieldBegin('fixed_teamname_l', TType.STRING, 206) + oprot.writeString(self.fixed_teamname_l.encode('utf-8') if sys.version_info[0] == 2 else self.fixed_teamname_l) + oprot.writeFieldEnd() + if self.fixed_teamname_r is not None: + oprot.writeFieldBegin('fixed_teamname_r', TType.STRING, 207) + oprot.writeString(self.fixed_teamname_r.encode('utf-8') if sys.version_info[0] == 2 else self.fixed_teamname_r) + oprot.writeFieldEnd() + if self.max_catch_angle is not None: + oprot.writeFieldBegin('max_catch_angle', TType.DOUBLE, 208) + oprot.writeDouble(self.max_catch_angle) + oprot.writeFieldEnd() + if self.min_catch_angle is not None: + oprot.writeFieldBegin('min_catch_angle', TType.DOUBLE, 209) + oprot.writeDouble(self.min_catch_angle) + oprot.writeFieldEnd() + if self.random_seed is not None: + oprot.writeFieldBegin('random_seed', TType.I32, 210) + oprot.writeI32(self.random_seed) + oprot.writeFieldEnd() + if self.long_kick_power_factor is not None: + oprot.writeFieldBegin('long_kick_power_factor', TType.DOUBLE, 211) + oprot.writeDouble(self.long_kick_power_factor) + oprot.writeFieldEnd() + if self.long_kick_delay is not None: + oprot.writeFieldBegin('long_kick_delay', TType.I32, 212) + oprot.writeI32(self.long_kick_delay) + oprot.writeFieldEnd() + if self.max_monitors is not None: + oprot.writeFieldBegin('max_monitors', TType.I32, 213) + oprot.writeI32(self.max_monitors) + oprot.writeFieldEnd() + if self.catchable_area is not None: + oprot.writeFieldBegin('catchable_area', TType.DOUBLE, 214) + oprot.writeDouble(self.catchable_area) + oprot.writeFieldEnd() + if self.real_speed_max is not None: + oprot.writeFieldBegin('real_speed_max', TType.DOUBLE, 215) + oprot.writeDouble(self.real_speed_max) + oprot.writeFieldEnd() + if self.pitch_half_length is not None: + oprot.writeFieldBegin('pitch_half_length', TType.DOUBLE, 216) + oprot.writeDouble(self.pitch_half_length) + oprot.writeFieldEnd() + if self.pitch_half_width is not None: + oprot.writeFieldBegin('pitch_half_width', TType.DOUBLE, 217) + oprot.writeDouble(self.pitch_half_width) + oprot.writeFieldEnd() + if self.our_penalty_area_line_x is not None: + oprot.writeFieldBegin('our_penalty_area_line_x', TType.DOUBLE, 218) + oprot.writeDouble(self.our_penalty_area_line_x) + oprot.writeFieldEnd() + if self.their_penalty_area_line_x is not None: + oprot.writeFieldBegin('their_penalty_area_line_x', TType.DOUBLE, 219) + oprot.writeDouble(self.their_penalty_area_line_x) + oprot.writeFieldEnd() + if self.penalty_area_half_width is not None: + oprot.writeFieldBegin('penalty_area_half_width', TType.DOUBLE, 220) + oprot.writeDouble(self.penalty_area_half_width) + oprot.writeFieldEnd() + if self.penalty_area_length is not None: + oprot.writeFieldBegin('penalty_area_length', TType.DOUBLE, 221) + oprot.writeDouble(self.penalty_area_length) + oprot.writeFieldEnd() + if self.goal_width is not None: + oprot.writeFieldBegin('goal_width', TType.DOUBLE, 222) + oprot.writeDouble(self.goal_width) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class PlayerParam(object): + """ + Attributes: + - agent_type + - player_types + - subs_max + - pt_max + - allow_mult_default_type + - player_speed_max_delta_min + - player_speed_max_delta_max + - stamina_inc_max_delta_factor + - player_decay_delta_min + - player_decay_delta_max + - inertia_moment_delta_factor + - dash_power_rate_delta_min + - dash_power_rate_delta_max + - player_size_delta_factor + - kickable_margin_delta_min + - kickable_margin_delta_max + - kick_rand_delta_factor + - extra_stamina_delta_min + - extra_stamina_delta_max + - effort_max_delta_factor + - effort_min_delta_factor + - random_seed + - new_dash_power_rate_delta_min + - new_dash_power_rate_delta_max + - new_stamina_inc_max_delta_factor + - kick_power_rate_delta_min + - kick_power_rate_delta_max + - foul_detect_probability_delta_factor + - catchable_area_l_stretch_min + - catchable_area_l_stretch_max + + """ + + + def __init__(self, agent_type=None, player_types=None, subs_max=None, pt_max=None, allow_mult_default_type=None, player_speed_max_delta_min=None, player_speed_max_delta_max=None, stamina_inc_max_delta_factor=None, player_decay_delta_min=None, player_decay_delta_max=None, inertia_moment_delta_factor=None, dash_power_rate_delta_min=None, dash_power_rate_delta_max=None, player_size_delta_factor=None, kickable_margin_delta_min=None, kickable_margin_delta_max=None, kick_rand_delta_factor=None, extra_stamina_delta_min=None, extra_stamina_delta_max=None, effort_max_delta_factor=None, effort_min_delta_factor=None, random_seed=None, new_dash_power_rate_delta_min=None, new_dash_power_rate_delta_max=None, new_stamina_inc_max_delta_factor=None, kick_power_rate_delta_min=None, kick_power_rate_delta_max=None, foul_detect_probability_delta_factor=None, catchable_area_l_stretch_min=None, catchable_area_l_stretch_max=None,): + self.agent_type = agent_type + self.player_types = player_types + self.subs_max = subs_max + self.pt_max = pt_max + self.allow_mult_default_type = allow_mult_default_type + self.player_speed_max_delta_min = player_speed_max_delta_min + self.player_speed_max_delta_max = player_speed_max_delta_max + self.stamina_inc_max_delta_factor = stamina_inc_max_delta_factor + self.player_decay_delta_min = player_decay_delta_min + self.player_decay_delta_max = player_decay_delta_max + self.inertia_moment_delta_factor = inertia_moment_delta_factor + self.dash_power_rate_delta_min = dash_power_rate_delta_min + self.dash_power_rate_delta_max = dash_power_rate_delta_max + self.player_size_delta_factor = player_size_delta_factor + self.kickable_margin_delta_min = kickable_margin_delta_min + self.kickable_margin_delta_max = kickable_margin_delta_max + self.kick_rand_delta_factor = kick_rand_delta_factor + self.extra_stamina_delta_min = extra_stamina_delta_min + self.extra_stamina_delta_max = extra_stamina_delta_max + self.effort_max_delta_factor = effort_max_delta_factor + self.effort_min_delta_factor = effort_min_delta_factor + self.random_seed = random_seed + self.new_dash_power_rate_delta_min = new_dash_power_rate_delta_min + self.new_dash_power_rate_delta_max = new_dash_power_rate_delta_max + self.new_stamina_inc_max_delta_factor = new_stamina_inc_max_delta_factor + self.kick_power_rate_delta_min = kick_power_rate_delta_min + self.kick_power_rate_delta_max = kick_power_rate_delta_max + self.foul_detect_probability_delta_factor = foul_detect_probability_delta_factor + self.catchable_area_l_stretch_min = catchable_area_l_stretch_min + self.catchable_area_l_stretch_max = catchable_area_l_stretch_max + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.agent_type = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.I32: + self.player_types = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.I32: + self.subs_max = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.I32: + self.pt_max = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.BOOL: + self.allow_mult_default_type = iprot.readBool() + else: + iprot.skip(ftype) + elif fid == 6: + if ftype == TType.DOUBLE: + self.player_speed_max_delta_min = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 7: + if ftype == TType.DOUBLE: + self.player_speed_max_delta_max = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 8: + if ftype == TType.DOUBLE: + self.stamina_inc_max_delta_factor = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 9: + if ftype == TType.DOUBLE: + self.player_decay_delta_min = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 10: + if ftype == TType.DOUBLE: + self.player_decay_delta_max = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 11: + if ftype == TType.DOUBLE: + self.inertia_moment_delta_factor = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 12: + if ftype == TType.DOUBLE: + self.dash_power_rate_delta_min = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 13: + if ftype == TType.DOUBLE: + self.dash_power_rate_delta_max = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 14: + if ftype == TType.DOUBLE: + self.player_size_delta_factor = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 15: + if ftype == TType.DOUBLE: + self.kickable_margin_delta_min = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 16: + if ftype == TType.DOUBLE: + self.kickable_margin_delta_max = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 17: + if ftype == TType.DOUBLE: + self.kick_rand_delta_factor = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 18: + if ftype == TType.DOUBLE: + self.extra_stamina_delta_min = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 19: + if ftype == TType.DOUBLE: + self.extra_stamina_delta_max = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 20: + if ftype == TType.DOUBLE: + self.effort_max_delta_factor = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 21: + if ftype == TType.DOUBLE: + self.effort_min_delta_factor = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 22: + if ftype == TType.I32: + self.random_seed = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 23: + if ftype == TType.DOUBLE: + self.new_dash_power_rate_delta_min = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 24: + if ftype == TType.DOUBLE: + self.new_dash_power_rate_delta_max = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 25: + if ftype == TType.DOUBLE: + self.new_stamina_inc_max_delta_factor = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 26: + if ftype == TType.DOUBLE: + self.kick_power_rate_delta_min = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 27: + if ftype == TType.DOUBLE: + self.kick_power_rate_delta_max = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 28: + if ftype == TType.DOUBLE: + self.foul_detect_probability_delta_factor = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 29: + if ftype == TType.DOUBLE: + self.catchable_area_l_stretch_min = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 30: + if ftype == TType.DOUBLE: + self.catchable_area_l_stretch_max = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('PlayerParam') + if self.agent_type is not None: + oprot.writeFieldBegin('agent_type', TType.I32, 1) + oprot.writeI32(self.agent_type) + oprot.writeFieldEnd() + if self.player_types is not None: + oprot.writeFieldBegin('player_types', TType.I32, 2) + oprot.writeI32(self.player_types) + oprot.writeFieldEnd() + if self.subs_max is not None: + oprot.writeFieldBegin('subs_max', TType.I32, 3) + oprot.writeI32(self.subs_max) + oprot.writeFieldEnd() + if self.pt_max is not None: + oprot.writeFieldBegin('pt_max', TType.I32, 4) + oprot.writeI32(self.pt_max) + oprot.writeFieldEnd() + if self.allow_mult_default_type is not None: + oprot.writeFieldBegin('allow_mult_default_type', TType.BOOL, 5) + oprot.writeBool(self.allow_mult_default_type) + oprot.writeFieldEnd() + if self.player_speed_max_delta_min is not None: + oprot.writeFieldBegin('player_speed_max_delta_min', TType.DOUBLE, 6) + oprot.writeDouble(self.player_speed_max_delta_min) + oprot.writeFieldEnd() + if self.player_speed_max_delta_max is not None: + oprot.writeFieldBegin('player_speed_max_delta_max', TType.DOUBLE, 7) + oprot.writeDouble(self.player_speed_max_delta_max) + oprot.writeFieldEnd() + if self.stamina_inc_max_delta_factor is not None: + oprot.writeFieldBegin('stamina_inc_max_delta_factor', TType.DOUBLE, 8) + oprot.writeDouble(self.stamina_inc_max_delta_factor) + oprot.writeFieldEnd() + if self.player_decay_delta_min is not None: + oprot.writeFieldBegin('player_decay_delta_min', TType.DOUBLE, 9) + oprot.writeDouble(self.player_decay_delta_min) + oprot.writeFieldEnd() + if self.player_decay_delta_max is not None: + oprot.writeFieldBegin('player_decay_delta_max', TType.DOUBLE, 10) + oprot.writeDouble(self.player_decay_delta_max) + oprot.writeFieldEnd() + if self.inertia_moment_delta_factor is not None: + oprot.writeFieldBegin('inertia_moment_delta_factor', TType.DOUBLE, 11) + oprot.writeDouble(self.inertia_moment_delta_factor) + oprot.writeFieldEnd() + if self.dash_power_rate_delta_min is not None: + oprot.writeFieldBegin('dash_power_rate_delta_min', TType.DOUBLE, 12) + oprot.writeDouble(self.dash_power_rate_delta_min) + oprot.writeFieldEnd() + if self.dash_power_rate_delta_max is not None: + oprot.writeFieldBegin('dash_power_rate_delta_max', TType.DOUBLE, 13) + oprot.writeDouble(self.dash_power_rate_delta_max) + oprot.writeFieldEnd() + if self.player_size_delta_factor is not None: + oprot.writeFieldBegin('player_size_delta_factor', TType.DOUBLE, 14) + oprot.writeDouble(self.player_size_delta_factor) + oprot.writeFieldEnd() + if self.kickable_margin_delta_min is not None: + oprot.writeFieldBegin('kickable_margin_delta_min', TType.DOUBLE, 15) + oprot.writeDouble(self.kickable_margin_delta_min) + oprot.writeFieldEnd() + if self.kickable_margin_delta_max is not None: + oprot.writeFieldBegin('kickable_margin_delta_max', TType.DOUBLE, 16) + oprot.writeDouble(self.kickable_margin_delta_max) + oprot.writeFieldEnd() + if self.kick_rand_delta_factor is not None: + oprot.writeFieldBegin('kick_rand_delta_factor', TType.DOUBLE, 17) + oprot.writeDouble(self.kick_rand_delta_factor) + oprot.writeFieldEnd() + if self.extra_stamina_delta_min is not None: + oprot.writeFieldBegin('extra_stamina_delta_min', TType.DOUBLE, 18) + oprot.writeDouble(self.extra_stamina_delta_min) + oprot.writeFieldEnd() + if self.extra_stamina_delta_max is not None: + oprot.writeFieldBegin('extra_stamina_delta_max', TType.DOUBLE, 19) + oprot.writeDouble(self.extra_stamina_delta_max) + oprot.writeFieldEnd() + if self.effort_max_delta_factor is not None: + oprot.writeFieldBegin('effort_max_delta_factor', TType.DOUBLE, 20) + oprot.writeDouble(self.effort_max_delta_factor) + oprot.writeFieldEnd() + if self.effort_min_delta_factor is not None: + oprot.writeFieldBegin('effort_min_delta_factor', TType.DOUBLE, 21) + oprot.writeDouble(self.effort_min_delta_factor) + oprot.writeFieldEnd() + if self.random_seed is not None: + oprot.writeFieldBegin('random_seed', TType.I32, 22) + oprot.writeI32(self.random_seed) + oprot.writeFieldEnd() + if self.new_dash_power_rate_delta_min is not None: + oprot.writeFieldBegin('new_dash_power_rate_delta_min', TType.DOUBLE, 23) + oprot.writeDouble(self.new_dash_power_rate_delta_min) + oprot.writeFieldEnd() + if self.new_dash_power_rate_delta_max is not None: + oprot.writeFieldBegin('new_dash_power_rate_delta_max', TType.DOUBLE, 24) + oprot.writeDouble(self.new_dash_power_rate_delta_max) + oprot.writeFieldEnd() + if self.new_stamina_inc_max_delta_factor is not None: + oprot.writeFieldBegin('new_stamina_inc_max_delta_factor', TType.DOUBLE, 25) + oprot.writeDouble(self.new_stamina_inc_max_delta_factor) + oprot.writeFieldEnd() + if self.kick_power_rate_delta_min is not None: + oprot.writeFieldBegin('kick_power_rate_delta_min', TType.DOUBLE, 26) + oprot.writeDouble(self.kick_power_rate_delta_min) + oprot.writeFieldEnd() + if self.kick_power_rate_delta_max is not None: + oprot.writeFieldBegin('kick_power_rate_delta_max', TType.DOUBLE, 27) + oprot.writeDouble(self.kick_power_rate_delta_max) + oprot.writeFieldEnd() + if self.foul_detect_probability_delta_factor is not None: + oprot.writeFieldBegin('foul_detect_probability_delta_factor', TType.DOUBLE, 28) + oprot.writeDouble(self.foul_detect_probability_delta_factor) + oprot.writeFieldEnd() + if self.catchable_area_l_stretch_min is not None: + oprot.writeFieldBegin('catchable_area_l_stretch_min', TType.DOUBLE, 29) + oprot.writeDouble(self.catchable_area_l_stretch_min) + oprot.writeFieldEnd() + if self.catchable_area_l_stretch_max is not None: + oprot.writeFieldBegin('catchable_area_l_stretch_max', TType.DOUBLE, 30) + oprot.writeDouble(self.catchable_area_l_stretch_max) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class PlayerType(object): + """ + Attributes: + - agent_type + - id + - stamina_inc_max + - player_decay + - inertia_moment + - dash_power_rate + - player_size + - kickable_margin + - kick_rand + - extra_stamina + - effort_max + - effort_min + - kick_power_rate + - foul_detect_probability + - catchable_area_l_stretch + - unum_far_length + - unum_too_far_length + - team_far_length + - team_too_far_length + - player_max_observation_length + - ball_vel_far_length + - ball_vel_too_far_length + - ball_max_observation_length + - flag_chg_far_length + - flag_chg_too_far_length + - flag_max_observation_length + - kickable_area + - reliable_catchable_dist + - max_catchable_dist + - real_speed_max + - player_speed_max2 + - real_speed_max2 + - cycles_to_reach_max_speed + - player_speed_max + + """ + + + def __init__(self, agent_type=None, id=None, stamina_inc_max=None, player_decay=None, inertia_moment=None, dash_power_rate=None, player_size=None, kickable_margin=None, kick_rand=None, extra_stamina=None, effort_max=None, effort_min=None, kick_power_rate=None, foul_detect_probability=None, catchable_area_l_stretch=None, unum_far_length=None, unum_too_far_length=None, team_far_length=None, team_too_far_length=None, player_max_observation_length=None, ball_vel_far_length=None, ball_vel_too_far_length=None, ball_max_observation_length=None, flag_chg_far_length=None, flag_chg_too_far_length=None, flag_max_observation_length=None, kickable_area=None, reliable_catchable_dist=None, max_catchable_dist=None, real_speed_max=None, player_speed_max2=None, real_speed_max2=None, cycles_to_reach_max_speed=None, player_speed_max=None,): + self.agent_type = agent_type + self.id = id + self.stamina_inc_max = stamina_inc_max + self.player_decay = player_decay + self.inertia_moment = inertia_moment + self.dash_power_rate = dash_power_rate + self.player_size = player_size + self.kickable_margin = kickable_margin + self.kick_rand = kick_rand + self.extra_stamina = extra_stamina + self.effort_max = effort_max + self.effort_min = effort_min + self.kick_power_rate = kick_power_rate + self.foul_detect_probability = foul_detect_probability + self.catchable_area_l_stretch = catchable_area_l_stretch + self.unum_far_length = unum_far_length + self.unum_too_far_length = unum_too_far_length + self.team_far_length = team_far_length + self.team_too_far_length = team_too_far_length + self.player_max_observation_length = player_max_observation_length + self.ball_vel_far_length = ball_vel_far_length + self.ball_vel_too_far_length = ball_vel_too_far_length + self.ball_max_observation_length = ball_max_observation_length + self.flag_chg_far_length = flag_chg_far_length + self.flag_chg_too_far_length = flag_chg_too_far_length + self.flag_max_observation_length = flag_max_observation_length + self.kickable_area = kickable_area + self.reliable_catchable_dist = reliable_catchable_dist + self.max_catchable_dist = max_catchable_dist + self.real_speed_max = real_speed_max + self.player_speed_max2 = player_speed_max2 + self.real_speed_max2 = real_speed_max2 + self.cycles_to_reach_max_speed = cycles_to_reach_max_speed + self.player_speed_max = player_speed_max + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.agent_type = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.I32: + self.id = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.DOUBLE: + self.stamina_inc_max = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.DOUBLE: + self.player_decay = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.DOUBLE: + self.inertia_moment = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 6: + if ftype == TType.DOUBLE: + self.dash_power_rate = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 7: + if ftype == TType.DOUBLE: + self.player_size = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 8: + if ftype == TType.DOUBLE: + self.kickable_margin = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 9: + if ftype == TType.DOUBLE: + self.kick_rand = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 10: + if ftype == TType.DOUBLE: + self.extra_stamina = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 11: + if ftype == TType.DOUBLE: + self.effort_max = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 12: + if ftype == TType.DOUBLE: + self.effort_min = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 13: + if ftype == TType.DOUBLE: + self.kick_power_rate = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 14: + if ftype == TType.DOUBLE: + self.foul_detect_probability = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 15: + if ftype == TType.DOUBLE: + self.catchable_area_l_stretch = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 16: + if ftype == TType.DOUBLE: + self.unum_far_length = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 17: + if ftype == TType.DOUBLE: + self.unum_too_far_length = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 18: + if ftype == TType.DOUBLE: + self.team_far_length = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 19: + if ftype == TType.DOUBLE: + self.team_too_far_length = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 20: + if ftype == TType.DOUBLE: + self.player_max_observation_length = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 21: + if ftype == TType.DOUBLE: + self.ball_vel_far_length = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 22: + if ftype == TType.DOUBLE: + self.ball_vel_too_far_length = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 23: + if ftype == TType.DOUBLE: + self.ball_max_observation_length = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 24: + if ftype == TType.DOUBLE: + self.flag_chg_far_length = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 25: + if ftype == TType.DOUBLE: + self.flag_chg_too_far_length = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 26: + if ftype == TType.DOUBLE: + self.flag_max_observation_length = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 27: + if ftype == TType.DOUBLE: + self.kickable_area = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 28: + if ftype == TType.DOUBLE: + self.reliable_catchable_dist = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 29: + if ftype == TType.DOUBLE: + self.max_catchable_dist = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 30: + if ftype == TType.DOUBLE: + self.real_speed_max = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 31: + if ftype == TType.DOUBLE: + self.player_speed_max2 = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 32: + if ftype == TType.DOUBLE: + self.real_speed_max2 = iprot.readDouble() + else: + iprot.skip(ftype) + elif fid == 33: + if ftype == TType.I32: + self.cycles_to_reach_max_speed = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 34: + if ftype == TType.DOUBLE: + self.player_speed_max = iprot.readDouble() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('PlayerType') + if self.agent_type is not None: + oprot.writeFieldBegin('agent_type', TType.I32, 1) + oprot.writeI32(self.agent_type) + oprot.writeFieldEnd() + if self.id is not None: + oprot.writeFieldBegin('id', TType.I32, 2) + oprot.writeI32(self.id) + oprot.writeFieldEnd() + if self.stamina_inc_max is not None: + oprot.writeFieldBegin('stamina_inc_max', TType.DOUBLE, 3) + oprot.writeDouble(self.stamina_inc_max) + oprot.writeFieldEnd() + if self.player_decay is not None: + oprot.writeFieldBegin('player_decay', TType.DOUBLE, 4) + oprot.writeDouble(self.player_decay) + oprot.writeFieldEnd() + if self.inertia_moment is not None: + oprot.writeFieldBegin('inertia_moment', TType.DOUBLE, 5) + oprot.writeDouble(self.inertia_moment) + oprot.writeFieldEnd() + if self.dash_power_rate is not None: + oprot.writeFieldBegin('dash_power_rate', TType.DOUBLE, 6) + oprot.writeDouble(self.dash_power_rate) + oprot.writeFieldEnd() + if self.player_size is not None: + oprot.writeFieldBegin('player_size', TType.DOUBLE, 7) + oprot.writeDouble(self.player_size) + oprot.writeFieldEnd() + if self.kickable_margin is not None: + oprot.writeFieldBegin('kickable_margin', TType.DOUBLE, 8) + oprot.writeDouble(self.kickable_margin) + oprot.writeFieldEnd() + if self.kick_rand is not None: + oprot.writeFieldBegin('kick_rand', TType.DOUBLE, 9) + oprot.writeDouble(self.kick_rand) + oprot.writeFieldEnd() + if self.extra_stamina is not None: + oprot.writeFieldBegin('extra_stamina', TType.DOUBLE, 10) + oprot.writeDouble(self.extra_stamina) + oprot.writeFieldEnd() + if self.effort_max is not None: + oprot.writeFieldBegin('effort_max', TType.DOUBLE, 11) + oprot.writeDouble(self.effort_max) + oprot.writeFieldEnd() + if self.effort_min is not None: + oprot.writeFieldBegin('effort_min', TType.DOUBLE, 12) + oprot.writeDouble(self.effort_min) + oprot.writeFieldEnd() + if self.kick_power_rate is not None: + oprot.writeFieldBegin('kick_power_rate', TType.DOUBLE, 13) + oprot.writeDouble(self.kick_power_rate) + oprot.writeFieldEnd() + if self.foul_detect_probability is not None: + oprot.writeFieldBegin('foul_detect_probability', TType.DOUBLE, 14) + oprot.writeDouble(self.foul_detect_probability) + oprot.writeFieldEnd() + if self.catchable_area_l_stretch is not None: + oprot.writeFieldBegin('catchable_area_l_stretch', TType.DOUBLE, 15) + oprot.writeDouble(self.catchable_area_l_stretch) + oprot.writeFieldEnd() + if self.unum_far_length is not None: + oprot.writeFieldBegin('unum_far_length', TType.DOUBLE, 16) + oprot.writeDouble(self.unum_far_length) + oprot.writeFieldEnd() + if self.unum_too_far_length is not None: + oprot.writeFieldBegin('unum_too_far_length', TType.DOUBLE, 17) + oprot.writeDouble(self.unum_too_far_length) + oprot.writeFieldEnd() + if self.team_far_length is not None: + oprot.writeFieldBegin('team_far_length', TType.DOUBLE, 18) + oprot.writeDouble(self.team_far_length) + oprot.writeFieldEnd() + if self.team_too_far_length is not None: + oprot.writeFieldBegin('team_too_far_length', TType.DOUBLE, 19) + oprot.writeDouble(self.team_too_far_length) + oprot.writeFieldEnd() + if self.player_max_observation_length is not None: + oprot.writeFieldBegin('player_max_observation_length', TType.DOUBLE, 20) + oprot.writeDouble(self.player_max_observation_length) + oprot.writeFieldEnd() + if self.ball_vel_far_length is not None: + oprot.writeFieldBegin('ball_vel_far_length', TType.DOUBLE, 21) + oprot.writeDouble(self.ball_vel_far_length) + oprot.writeFieldEnd() + if self.ball_vel_too_far_length is not None: + oprot.writeFieldBegin('ball_vel_too_far_length', TType.DOUBLE, 22) + oprot.writeDouble(self.ball_vel_too_far_length) + oprot.writeFieldEnd() + if self.ball_max_observation_length is not None: + oprot.writeFieldBegin('ball_max_observation_length', TType.DOUBLE, 23) + oprot.writeDouble(self.ball_max_observation_length) + oprot.writeFieldEnd() + if self.flag_chg_far_length is not None: + oprot.writeFieldBegin('flag_chg_far_length', TType.DOUBLE, 24) + oprot.writeDouble(self.flag_chg_far_length) + oprot.writeFieldEnd() + if self.flag_chg_too_far_length is not None: + oprot.writeFieldBegin('flag_chg_too_far_length', TType.DOUBLE, 25) + oprot.writeDouble(self.flag_chg_too_far_length) + oprot.writeFieldEnd() + if self.flag_max_observation_length is not None: + oprot.writeFieldBegin('flag_max_observation_length', TType.DOUBLE, 26) + oprot.writeDouble(self.flag_max_observation_length) + oprot.writeFieldEnd() + if self.kickable_area is not None: + oprot.writeFieldBegin('kickable_area', TType.DOUBLE, 27) + oprot.writeDouble(self.kickable_area) + oprot.writeFieldEnd() + if self.reliable_catchable_dist is not None: + oprot.writeFieldBegin('reliable_catchable_dist', TType.DOUBLE, 28) + oprot.writeDouble(self.reliable_catchable_dist) + oprot.writeFieldEnd() + if self.max_catchable_dist is not None: + oprot.writeFieldBegin('max_catchable_dist', TType.DOUBLE, 29) + oprot.writeDouble(self.max_catchable_dist) + oprot.writeFieldEnd() + if self.real_speed_max is not None: + oprot.writeFieldBegin('real_speed_max', TType.DOUBLE, 30) + oprot.writeDouble(self.real_speed_max) + oprot.writeFieldEnd() + if self.player_speed_max2 is not None: + oprot.writeFieldBegin('player_speed_max2', TType.DOUBLE, 31) + oprot.writeDouble(self.player_speed_max2) + oprot.writeFieldEnd() + if self.real_speed_max2 is not None: + oprot.writeFieldBegin('real_speed_max2', TType.DOUBLE, 32) + oprot.writeDouble(self.real_speed_max2) + oprot.writeFieldEnd() + if self.cycles_to_reach_max_speed is not None: + oprot.writeFieldBegin('cycles_to_reach_max_speed', TType.I32, 33) + oprot.writeI32(self.cycles_to_reach_max_speed) + oprot.writeFieldEnd() + if self.player_speed_max is not None: + oprot.writeFieldBegin('player_speed_max', TType.DOUBLE, 34) + oprot.writeDouble(self.player_speed_max) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class Empty(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('Empty') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class InitMessageFromServer(object): + + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('InitMessageFromServer') + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) +all_structs.append(ThriftVector2D) +ThriftVector2D.thrift_spec = ( + None, # 0 + (1, TType.DOUBLE, 'x', None, None, ), # 1 + (2, TType.DOUBLE, 'y', None, None, ), # 2 + (3, TType.DOUBLE, 'dist', None, None, ), # 3 + (4, TType.DOUBLE, 'angle', None, None, ), # 4 +) +all_structs.append(Ball) +Ball.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'position', [ThriftVector2D, None], None, ), # 1 + (2, TType.STRUCT, 'relative_position', [ThriftVector2D, None], None, ), # 2 + (3, TType.STRUCT, 'seen_position', [ThriftVector2D, None], None, ), # 3 + (4, TType.STRUCT, 'heard_position', [ThriftVector2D, None], None, ), # 4 + (5, TType.STRUCT, 'velocity', [ThriftVector2D, None], None, ), # 5 + (6, TType.STRUCT, 'seen_velocity', [ThriftVector2D, None], None, ), # 6 + (7, TType.STRUCT, 'heard_velocity', [ThriftVector2D, None], None, ), # 7 + (8, TType.I32, 'pos_count', None, None, ), # 8 + (9, TType.I32, 'seen_pos_count', None, None, ), # 9 + (10, TType.I32, 'heard_pos_count', None, None, ), # 10 + (11, TType.I32, 'vel_count', None, None, ), # 11 + (12, TType.I32, 'seen_vel_count', None, None, ), # 12 + (13, TType.I32, 'heard_vel_count', None, None, ), # 13 + (14, TType.I32, 'lost_count', None, None, ), # 14 + (15, TType.I32, 'ghost_count', None, None, ), # 15 + (16, TType.DOUBLE, 'dist_from_self', None, None, ), # 16 + (17, TType.DOUBLE, 'angle_from_self', None, None, ), # 17 +) +all_structs.append(Player) +Player.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'position', [ThriftVector2D, None], None, ), # 1 + (2, TType.STRUCT, 'seen_position', [ThriftVector2D, None], None, ), # 2 + (3, TType.STRUCT, 'heard_position', [ThriftVector2D, None], None, ), # 3 + (4, TType.STRUCT, 'velocity', [ThriftVector2D, None], None, ), # 4 + (5, TType.STRUCT, 'seen_velocity', [ThriftVector2D, None], None, ), # 5 + (6, TType.I32, 'pos_count', None, None, ), # 6 + (7, TType.I32, 'seen_pos_count', None, None, ), # 7 + (8, TType.I32, 'heard_pos_count', None, None, ), # 8 + (9, TType.I32, 'vel_count', None, None, ), # 9 + (10, TType.I32, 'seen_vel_count', None, None, ), # 10 + (11, TType.I32, 'ghost_count', None, None, ), # 11 + (12, TType.DOUBLE, 'dist_from_self', None, None, ), # 12 + (13, TType.DOUBLE, 'angle_from_self', None, None, ), # 13 + (14, TType.I32, 'id', None, None, ), # 14 + (15, TType.I32, 'side', None, None, ), # 15 + (16, TType.I32, 'uniform_number', None, None, ), # 16 + (17, TType.I32, 'uniform_number_count', None, None, ), # 17 + (18, TType.BOOL, 'is_goalie', None, None, ), # 18 + (19, TType.DOUBLE, 'body_direction', None, None, ), # 19 + (20, TType.I32, 'body_direction_count', None, None, ), # 20 + (21, TType.DOUBLE, 'face_direction', None, None, ), # 21 + (22, TType.I32, 'face_direction_count', None, None, ), # 22 + (23, TType.DOUBLE, 'point_to_direction', None, None, ), # 23 + (24, TType.I32, 'point_to_direction_count', None, None, ), # 24 + (25, TType.BOOL, 'is_kicking', None, None, ), # 25 + (26, TType.DOUBLE, 'dist_from_ball', None, None, ), # 26 + (27, TType.DOUBLE, 'angle_from_ball', None, None, ), # 27 + (28, TType.I32, 'ball_reach_steps', None, None, ), # 28 + (29, TType.BOOL, 'is_tackling', None, None, ), # 29 + (30, TType.I32, 'type_id', None, None, ), # 30 +) +all_structs.append(Self) +Self.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'position', [ThriftVector2D, None], None, ), # 1 + (2, TType.STRUCT, 'seen_position', [ThriftVector2D, None], None, ), # 2 + (3, TType.STRUCT, 'heard_position', [ThriftVector2D, None], None, ), # 3 + (4, TType.STRUCT, 'velocity', [ThriftVector2D, None], None, ), # 4 + (5, TType.STRUCT, 'seen_velocity', [ThriftVector2D, None], None, ), # 5 + (6, TType.I32, 'pos_count', None, None, ), # 6 + (7, TType.I32, 'seen_pos_count', None, None, ), # 7 + (8, TType.I32, 'heard_pos_count', None, None, ), # 8 + (9, TType.I32, 'vel_count', None, None, ), # 9 + (10, TType.I32, 'seen_vel_count', None, None, ), # 10 + (11, TType.I32, 'ghost_count', None, None, ), # 11 + (12, TType.I32, 'id', None, None, ), # 12 + (13, TType.I32, 'side', None, None, ), # 13 + (14, TType.I32, 'uniform_number', None, None, ), # 14 + (15, TType.I32, 'uniform_number_count', None, None, ), # 15 + (16, TType.BOOL, 'is_goalie', None, None, ), # 16 + (17, TType.DOUBLE, 'body_direction', None, None, ), # 17 + (18, TType.I32, 'body_direction_count', None, None, ), # 18 + (19, TType.DOUBLE, 'face_direction', None, None, ), # 19 + (20, TType.I32, 'face_direction_count', None, None, ), # 20 + (21, TType.DOUBLE, 'point_to_direction', None, None, ), # 21 + (22, TType.I32, 'point_to_direction_count', None, None, ), # 22 + (23, TType.BOOL, 'is_kicking', None, None, ), # 23 + (24, TType.DOUBLE, 'dist_from_ball', None, None, ), # 24 + (25, TType.DOUBLE, 'angle_from_ball', None, None, ), # 25 + (26, TType.I32, 'ball_reach_steps', None, None, ), # 26 + (27, TType.BOOL, 'is_tackling', None, None, ), # 27 + (28, TType.DOUBLE, 'relative_neck_direction', None, None, ), # 28 + (29, TType.DOUBLE, 'stamina', None, None, ), # 29 + (30, TType.BOOL, 'is_kickable', None, None, ), # 30 + (31, TType.DOUBLE, 'catch_probability', None, None, ), # 31 + (32, TType.DOUBLE, 'tackle_probability', None, None, ), # 32 + (33, TType.DOUBLE, 'foul_probability', None, None, ), # 33 + (34, TType.I32, 'view_width', None, None, ), # 34 + (35, TType.I32, 'type_id', None, None, ), # 35 + (36, TType.DOUBLE, 'kick_rate', None, None, ), # 36 +) +all_structs.append(InterceptInfo) +InterceptInfo.thrift_spec = ( + None, # 0 + (1, TType.I32, 'action_type', None, None, ), # 1 + (2, TType.I32, 'turn_steps', None, None, ), # 2 + (3, TType.DOUBLE, 'turn_angle', None, None, ), # 3 + (4, TType.I32, 'dash_steps', None, None, ), # 4 + (5, TType.DOUBLE, 'dash_power', None, None, ), # 5 + (6, TType.DOUBLE, 'dash_dir', None, None, ), # 6 + (7, TType.STRUCT, 'final_self_position', [ThriftVector2D, None], None, ), # 7 + (8, TType.DOUBLE, 'final_ball_dist', None, None, ), # 8 + (9, TType.DOUBLE, 'final_stamina', None, None, ), # 9 + (10, TType.DOUBLE, 'value', None, None, ), # 10 +) +all_structs.append(InterceptTable) +InterceptTable.thrift_spec = ( + None, # 0 + (1, TType.I32, 'self_reach_steps', None, None, ), # 1 + (2, TType.I32, 'first_teammate_reach_steps', None, None, ), # 2 + (3, TType.I32, 'second_teammate_reach_steps', None, None, ), # 3 + (4, TType.I32, 'first_opponent_reach_steps', None, None, ), # 4 + (5, TType.I32, 'second_opponent_reach_steps', None, None, ), # 5 + (6, TType.I32, 'first_teammate_id', None, None, ), # 6 + (7, TType.I32, 'second_teammate_id', None, None, ), # 7 + (8, TType.I32, 'first_opponent_id', None, None, ), # 8 + (9, TType.I32, 'second_opponent_id', None, None, ), # 9 + (10, TType.LIST, 'self_intercept_info', (TType.STRUCT, [InterceptInfo, None], False), None, ), # 10 +) +all_structs.append(WorldModel) +WorldModel.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'intercept_table', [InterceptTable, None], None, ), # 1 + (2, TType.STRING, 'our_team_name', 'UTF8', None, ), # 2 + (3, TType.STRING, 'their_team_name', 'UTF8', None, ), # 3 + (4, TType.I32, 'our_side', None, None, ), # 4 + (5, TType.I32, 'last_set_play_start_time', None, None, ), # 5 + (6, TType.STRUCT, 'myself', [Self, None], None, ), # 6 + (7, TType.STRUCT, 'ball', [Ball, None], None, ), # 7 + (8, TType.LIST, 'teammates', (TType.STRUCT, [Player, None], False), None, ), # 8 + (9, TType.LIST, 'opponents', (TType.STRUCT, [Player, None], False), None, ), # 9 + (10, TType.LIST, 'unknowns', (TType.STRUCT, [Player, None], False), None, ), # 10 + (11, TType.MAP, 'our_players_dict', (TType.I32, None, TType.STRUCT, [Player, None], False), None, ), # 11 + (12, TType.MAP, 'their_players_dict', (TType.I32, None, TType.STRUCT, [Player, None], False), None, ), # 12 + (13, TType.I32, 'our_goalie_uniform_number', None, None, ), # 13 + (14, TType.I32, 'their_goalie_uniform_number', None, None, ), # 14 + (15, TType.DOUBLE, 'offside_line_x', None, None, ), # 15 + (16, TType.I32, 'offside_line_x_count', None, None, ), # 16 + (17, TType.I32, 'kickable_teammate_id', None, None, ), # 17 + (18, TType.I32, 'kickable_opponent_id', None, None, ), # 18 + (19, TType.I32, 'last_kick_side', None, None, ), # 19 + (20, TType.I32, 'last_kicker_uniform_number', None, None, ), # 20 + (21, TType.I32, 'cycle', None, None, ), # 21 + (22, TType.I32, 'game_mode_type', None, None, ), # 22 + (23, TType.I32, 'left_team_score', None, None, ), # 23 + (24, TType.I32, 'right_team_score', None, None, ), # 24 + (25, TType.BOOL, 'is_our_set_play', None, None, ), # 25 + (26, TType.BOOL, 'is_their_set_play', None, None, ), # 26 + (27, TType.I32, 'stoped_cycle', None, None, ), # 27 + (28, TType.I32, 'our_team_score', None, None, ), # 28 + (29, TType.I32, 'their_team_score', None, None, ), # 29 + (30, TType.BOOL, 'is_penalty_kick_mode', None, None, ), # 30 + (31, TType.MAP, 'helios_home_positions', (TType.I32, None, TType.STRUCT, [ThriftVector2D, None], False), None, ), # 31 +) +all_structs.append(State) +State.thrift_spec = ( + None, # 0 + (1, TType.I32, 'agent_type', None, None, ), # 1 + (2, TType.STRUCT, 'world_model', [WorldModel, None], None, ), # 2 + (3, TType.STRUCT, 'full_world_model', [WorldModel, None], None, ), # 3 +) +all_structs.append(InitMessage) +InitMessage.thrift_spec = ( + None, # 0 + (1, TType.I32, 'agent_type', None, None, ), # 1 + (2, TType.BOOL, 'debug_mode', None, None, ), # 2 +) +all_structs.append(Dash) +Dash.thrift_spec = ( + None, # 0 + (1, TType.DOUBLE, 'power', None, None, ), # 1 + (2, TType.DOUBLE, 'relative_direction', None, None, ), # 2 +) +all_structs.append(Turn) +Turn.thrift_spec = ( + None, # 0 + (1, TType.DOUBLE, 'relative_direction', None, None, ), # 1 +) +all_structs.append(Kick) +Kick.thrift_spec = ( + None, # 0 + (1, TType.DOUBLE, 'power', None, None, ), # 1 + (2, TType.DOUBLE, 'relative_direction', None, None, ), # 2 +) +all_structs.append(Tackle) +Tackle.thrift_spec = ( + None, # 0 + (1, TType.DOUBLE, 'power_or_dir', None, None, ), # 1 + (2, TType.BOOL, 'foul', None, None, ), # 2 +) +all_structs.append(Catch) +Catch.thrift_spec = ( +) +all_structs.append(Move) +Move.thrift_spec = ( + None, # 0 + (1, TType.DOUBLE, 'x', None, None, ), # 1 + (2, TType.DOUBLE, 'y', None, None, ), # 2 +) +all_structs.append(TurnNeck) +TurnNeck.thrift_spec = ( + None, # 0 + (1, TType.DOUBLE, 'moment', None, None, ), # 1 +) +all_structs.append(ChangeView) +ChangeView.thrift_spec = ( + None, # 0 + (1, TType.I32, 'view_width', None, None, ), # 1 +) +all_structs.append(BallMessage) +BallMessage.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'ball_position', [ThriftVector2D, None], None, ), # 1 + (2, TType.STRUCT, 'ball_velocity', [ThriftVector2D, None], None, ), # 2 +) +all_structs.append(PassMessage) +PassMessage.thrift_spec = ( + None, # 0 + (1, TType.I32, 'receiver_uniform_number', None, None, ), # 1 + (2, TType.STRUCT, 'receiver_point', [ThriftVector2D, None], None, ), # 2 + (3, TType.STRUCT, 'ball_position', [ThriftVector2D, None], None, ), # 3 + (4, TType.STRUCT, 'ball_velocity', [ThriftVector2D, None], None, ), # 4 +) +all_structs.append(InterceptMessage) +InterceptMessage.thrift_spec = ( + None, # 0 + (1, TType.BOOL, 'our', None, None, ), # 1 + (2, TType.I32, 'uniform_number', None, None, ), # 2 + (3, TType.I32, 'cycle', None, None, ), # 3 +) +all_structs.append(GoalieMessage) +GoalieMessage.thrift_spec = ( + None, # 0 + (1, TType.I32, 'goalie_uniform_number', None, None, ), # 1 + (2, TType.STRUCT, 'goalie_position', [ThriftVector2D, None], None, ), # 2 + (3, TType.DOUBLE, 'goalie_body_direction', None, None, ), # 3 +) +all_structs.append(GoalieAndPlayerMessage) +GoalieAndPlayerMessage.thrift_spec = ( + None, # 0 + (1, TType.I32, 'goalie_uniform_number', None, None, ), # 1 + (2, TType.STRUCT, 'goalie_position', [ThriftVector2D, None], None, ), # 2 + (3, TType.DOUBLE, 'goalie_body_direction', None, None, ), # 3 + (4, TType.I32, 'player_uniform_number', None, None, ), # 4 + (5, TType.STRUCT, 'player_position', [ThriftVector2D, None], None, ), # 5 +) +all_structs.append(OffsideLineMessage) +OffsideLineMessage.thrift_spec = ( + None, # 0 + (1, TType.DOUBLE, 'offside_line_x', None, None, ), # 1 +) +all_structs.append(DefenseLineMessage) +DefenseLineMessage.thrift_spec = ( + None, # 0 + (1, TType.DOUBLE, 'defense_line_x', None, None, ), # 1 +) +all_structs.append(WaitRequestMessage) +WaitRequestMessage.thrift_spec = ( +) +all_structs.append(SetplayMessage) +SetplayMessage.thrift_spec = ( + None, # 0 + (1, TType.I32, 'wait_step', None, None, ), # 1 +) +all_structs.append(PassRequestMessage) +PassRequestMessage.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 +) +all_structs.append(StaminaMessage) +StaminaMessage.thrift_spec = ( + None, # 0 + (1, TType.DOUBLE, 'stamina', None, None, ), # 1 +) +all_structs.append(RecoveryMessage) +RecoveryMessage.thrift_spec = ( + None, # 0 + (1, TType.DOUBLE, 'recovery', None, None, ), # 1 +) +all_structs.append(StaminaCapacityMessage) +StaminaCapacityMessage.thrift_spec = ( + None, # 0 + (1, TType.DOUBLE, 'stamina_capacity', None, None, ), # 1 +) +all_structs.append(DribbleMessage) +DribbleMessage.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 + (2, TType.I32, 'queue_count', None, None, ), # 2 +) +all_structs.append(BallGoalieMessage) +BallGoalieMessage.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'ball_position', [ThriftVector2D, None], None, ), # 1 + (2, TType.STRUCT, 'ball_velocity', [ThriftVector2D, None], None, ), # 2 + (3, TType.STRUCT, 'goalie_position', [ThriftVector2D, None], None, ), # 3 + (4, TType.DOUBLE, 'goalie_body_direction', None, None, ), # 4 +) +all_structs.append(OnePlayerMessage) +OnePlayerMessage.thrift_spec = ( + None, # 0 + (1, TType.I32, 'uniform_number', None, None, ), # 1 + (2, TType.STRUCT, 'position', [ThriftVector2D, None], None, ), # 2 +) +all_structs.append(TwoPlayerMessage) +TwoPlayerMessage.thrift_spec = ( + None, # 0 + (1, TType.I32, 'first_uniform_number', None, None, ), # 1 + (2, TType.STRUCT, 'first_position', [ThriftVector2D, None], None, ), # 2 + (3, TType.I32, 'second_uniform_number', None, None, ), # 3 + (4, TType.STRUCT, 'second_position', [ThriftVector2D, None], None, ), # 4 +) +all_structs.append(ThreePlayerMessage) +ThreePlayerMessage.thrift_spec = ( + None, # 0 + (1, TType.I32, 'first_uniform_number', None, None, ), # 1 + (2, TType.STRUCT, 'first_position', [ThriftVector2D, None], None, ), # 2 + (3, TType.I32, 'second_uniform_number', None, None, ), # 3 + (4, TType.STRUCT, 'second_position', [ThriftVector2D, None], None, ), # 4 + (5, TType.I32, 'third_uniform_number', None, None, ), # 5 + (6, TType.STRUCT, 'third_position', [ThriftVector2D, None], None, ), # 6 +) +all_structs.append(SelfMessage) +SelfMessage.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'self_position', [ThriftVector2D, None], None, ), # 1 + (2, TType.DOUBLE, 'self_body_direction', None, None, ), # 2 + (3, TType.DOUBLE, 'self_stamina', None, None, ), # 3 +) +all_structs.append(TeammateMessage) +TeammateMessage.thrift_spec = ( + None, # 0 + (1, TType.I32, 'uniform_number', None, None, ), # 1 + (2, TType.STRUCT, 'position', [ThriftVector2D, None], None, ), # 2 + (3, TType.DOUBLE, 'body_direction', None, None, ), # 3 +) +all_structs.append(OpponentMessage) +OpponentMessage.thrift_spec = ( + None, # 0 + (1, TType.I32, 'uniform_number', None, None, ), # 1 + (2, TType.STRUCT, 'position', [ThriftVector2D, None], None, ), # 2 + (3, TType.DOUBLE, 'body_direction', None, None, ), # 3 +) +all_structs.append(BallPlayerMessage) +BallPlayerMessage.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'ball_position', [ThriftVector2D, None], None, ), # 1 + (2, TType.STRUCT, 'ball_velocity', [ThriftVector2D, None], None, ), # 2 + (3, TType.I32, 'uniform_number', None, None, ), # 3 + (4, TType.STRUCT, 'player_position', [ThriftVector2D, None], None, ), # 4 + (5, TType.DOUBLE, 'body_direction', None, None, ), # 5 +) +all_structs.append(Say) +Say.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'ball_message', [BallMessage, None], None, ), # 1 + (2, TType.STRUCT, 'pass_message', [PassMessage, None], None, ), # 2 + (3, TType.STRUCT, 'intercept_message', [InterceptMessage, None], None, ), # 3 + (4, TType.STRUCT, 'goalie_message', [GoalieMessage, None], None, ), # 4 + (5, TType.STRUCT, 'goalie_and_player_message', [GoalieAndPlayerMessage, None], None, ), # 5 + (6, TType.STRUCT, 'offside_line_message', [OffsideLineMessage, None], None, ), # 6 + (7, TType.STRUCT, 'defense_line_message', [DefenseLineMessage, None], None, ), # 7 + (8, TType.STRUCT, 'wait_request_message', [WaitRequestMessage, None], None, ), # 8 + (9, TType.STRUCT, 'setplay_message', [SetplayMessage, None], None, ), # 9 + (10, TType.STRUCT, 'pass_request_message', [PassRequestMessage, None], None, ), # 10 + (11, TType.STRUCT, 'stamina_message', [StaminaMessage, None], None, ), # 11 + (12, TType.STRUCT, 'recovery_message', [RecoveryMessage, None], None, ), # 12 + (13, TType.STRUCT, 'stamina_capacity_message', [StaminaCapacityMessage, None], None, ), # 13 + (14, TType.STRUCT, 'dribble_message', [DribbleMessage, None], None, ), # 14 + (15, TType.STRUCT, 'ball_goalie_message', [BallGoalieMessage, None], None, ), # 15 + (16, TType.STRUCT, 'one_player_message', [OnePlayerMessage, None], None, ), # 16 + (17, TType.STRUCT, 'two_player_message', [TwoPlayerMessage, None], None, ), # 17 + (18, TType.STRUCT, 'three_player_message', [ThreePlayerMessage, None], None, ), # 18 + (19, TType.STRUCT, 'self_message', [SelfMessage, None], None, ), # 19 + (20, TType.STRUCT, 'teammate_message', [TeammateMessage, None], None, ), # 20 + (21, TType.STRUCT, 'opponent_message', [OpponentMessage, None], None, ), # 21 + (22, TType.STRUCT, 'ball_player_message', [BallPlayerMessage, None], None, ), # 22 +) +all_structs.append(PointTo) +PointTo.thrift_spec = ( + None, # 0 + (1, TType.DOUBLE, 'x', None, None, ), # 1 + (2, TType.DOUBLE, 'y', None, None, ), # 2 +) +all_structs.append(PointToOf) +PointToOf.thrift_spec = ( +) +all_structs.append(AttentionTo) +AttentionTo.thrift_spec = ( + None, # 0 + (1, TType.I32, 'side', None, None, ), # 1 + (2, TType.I32, 'unum', None, None, ), # 2 +) +all_structs.append(AttentionToOf) +AttentionToOf.thrift_spec = ( +) +all_structs.append(AddText) +AddText.thrift_spec = ( + None, # 0 + (1, TType.I32, 'level', None, None, ), # 1 + (2, TType.STRING, 'message', 'UTF8', None, ), # 2 +) +all_structs.append(AddPoint) +AddPoint.thrift_spec = ( + None, # 0 + (1, TType.I32, 'level', None, None, ), # 1 + (2, TType.STRUCT, 'point', [ThriftVector2D, None], None, ), # 2 + (3, TType.STRING, 'color', 'UTF8', None, ), # 3 +) +all_structs.append(AddLine) +AddLine.thrift_spec = ( + None, # 0 + (1, TType.I32, 'level', None, None, ), # 1 + (2, TType.STRUCT, 'start_point', [ThriftVector2D, None], None, ), # 2 + (3, TType.STRUCT, 'end_point', [ThriftVector2D, None], None, ), # 3 + (4, TType.STRING, 'color', 'UTF8', None, ), # 4 +) +all_structs.append(AddArc) +AddArc.thrift_spec = ( + None, # 0 + (1, TType.I32, 'level', None, None, ), # 1 + (2, TType.STRUCT, 'center', [ThriftVector2D, None], None, ), # 2 + (3, TType.DOUBLE, 'radius', None, None, ), # 3 + (4, TType.DOUBLE, 'start_angle', None, None, ), # 4 + (5, TType.DOUBLE, 'span_angel', None, None, ), # 5 + (6, TType.STRING, 'color', 'UTF8', None, ), # 6 +) +all_structs.append(AddCircle) +AddCircle.thrift_spec = ( + None, # 0 + (1, TType.I32, 'level', None, None, ), # 1 + (2, TType.STRUCT, 'center', [ThriftVector2D, None], None, ), # 2 + (3, TType.DOUBLE, 'radius', None, None, ), # 3 + (4, TType.STRING, 'color', 'UTF8', None, ), # 4 + (5, TType.BOOL, 'fill', None, None, ), # 5 +) +all_structs.append(AddTriangle) +AddTriangle.thrift_spec = ( + None, # 0 + (1, TType.I32, 'level', None, None, ), # 1 + (2, TType.STRUCT, 'point1', [ThriftVector2D, None], None, ), # 2 + (3, TType.STRUCT, 'point2', [ThriftVector2D, None], None, ), # 3 + (4, TType.STRUCT, 'point3', [ThriftVector2D, None], None, ), # 4 + (5, TType.STRING, 'color', 'UTF8', None, ), # 5 + (6, TType.BOOL, 'fill', None, None, ), # 6 +) +all_structs.append(AddRectangle) +AddRectangle.thrift_spec = ( + None, # 0 + (1, TType.I32, 'level', None, None, ), # 1 + (2, TType.DOUBLE, 'left', None, None, ), # 2 + (3, TType.DOUBLE, 'top', None, None, ), # 3 + (4, TType.DOUBLE, 'length', None, None, ), # 4 + (5, TType.DOUBLE, 'width', None, None, ), # 5 + (6, TType.STRING, 'color', 'UTF8', None, ), # 6 + (7, TType.BOOL, 'fill', None, None, ), # 7 +) +all_structs.append(AddSector) +AddSector.thrift_spec = ( + None, # 0 + (1, TType.I32, 'level', None, None, ), # 1 + (2, TType.STRUCT, 'center', [ThriftVector2D, None], None, ), # 2 + (3, TType.DOUBLE, 'min_radius', None, None, ), # 3 + (4, TType.DOUBLE, 'max_radius', None, None, ), # 4 + (5, TType.DOUBLE, 'start_angle', None, None, ), # 5 + (6, TType.DOUBLE, 'span_angel', None, None, ), # 6 + (7, TType.STRING, 'color', 'UTF8', None, ), # 7 + (8, TType.BOOL, 'fill', None, None, ), # 8 +) +all_structs.append(AddMessage) +AddMessage.thrift_spec = ( + None, # 0 + (1, TType.I32, 'level', None, None, ), # 1 + (2, TType.STRUCT, 'position', [ThriftVector2D, None], None, ), # 2 + (3, TType.STRING, 'message', 'UTF8', None, ), # 3 + (4, TType.STRING, 'color', 'UTF8', None, ), # 4 +) +all_structs.append(Log) +Log.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'add_text', [AddText, None], None, ), # 1 + (2, TType.STRUCT, 'add_point', [AddPoint, None], None, ), # 2 + (3, TType.STRUCT, 'add_line', [AddLine, None], None, ), # 3 + (4, TType.STRUCT, 'add_arc', [AddArc, None], None, ), # 4 + (5, TType.STRUCT, 'add_circle', [AddCircle, None], None, ), # 5 + (6, TType.STRUCT, 'add_triangle', [AddTriangle, None], None, ), # 6 + (7, TType.STRUCT, 'add_rectangle', [AddRectangle, None], None, ), # 7 + (8, TType.STRUCT, 'add_sector', [AddSector, None], None, ), # 8 + (9, TType.STRUCT, 'add_message', [AddMessage, None], None, ), # 9 +) +all_structs.append(DebugClient) +DebugClient.thrift_spec = ( + None, # 0 + (1, TType.STRING, 'message', 'UTF8', None, ), # 1 +) +all_structs.append(Body_GoToPoint) +Body_GoToPoint.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 + (2, TType.DOUBLE, 'distance_threshold', None, None, ), # 2 + (3, TType.DOUBLE, 'max_dash_power', None, None, ), # 3 +) +all_structs.append(Body_SmartKick) +Body_SmartKick.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 + (2, TType.DOUBLE, 'first_speed', None, None, ), # 2 + (3, TType.DOUBLE, 'first_speed_threshold', None, None, ), # 3 + (4, TType.I32, 'max_steps', None, None, ), # 4 +) +all_structs.append(Bhv_BeforeKickOff) +Bhv_BeforeKickOff.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'point', [ThriftVector2D, None], None, ), # 1 +) +all_structs.append(Bhv_BodyNeckToBall) +Bhv_BodyNeckToBall.thrift_spec = ( +) +all_structs.append(Bhv_BodyNeckToPoint) +Bhv_BodyNeckToPoint.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'point', [ThriftVector2D, None], None, ), # 1 +) +all_structs.append(Bhv_Emergency) +Bhv_Emergency.thrift_spec = ( +) +all_structs.append(Bhv_GoToPointLookBall) +Bhv_GoToPointLookBall.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 + (2, TType.DOUBLE, 'distance_threshold', None, None, ), # 2 + (3, TType.DOUBLE, 'max_dash_power', None, None, ), # 3 +) +all_structs.append(Bhv_NeckBodyToBall) +Bhv_NeckBodyToBall.thrift_spec = ( + None, # 0 + (1, TType.DOUBLE, 'angle_buf', None, None, ), # 1 +) +all_structs.append(Bhv_NeckBodyToPoint) +Bhv_NeckBodyToPoint.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'point', [ThriftVector2D, None], None, ), # 1 + (2, TType.DOUBLE, 'angle_buf', None, None, ), # 2 +) +all_structs.append(Bhv_ScanField) +Bhv_ScanField.thrift_spec = ( +) +all_structs.append(Body_AdvanceBall) +Body_AdvanceBall.thrift_spec = ( +) +all_structs.append(Body_ClearBall) +Body_ClearBall.thrift_spec = ( +) +all_structs.append(Body_Dribble) +Body_Dribble.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 + (2, TType.DOUBLE, 'distance_threshold', None, None, ), # 2 + (3, TType.DOUBLE, 'dash_power', None, None, ), # 3 + (4, TType.I32, 'dash_count', None, None, ), # 4 + (5, TType.BOOL, 'dodge', None, None, ), # 5 +) +all_structs.append(Body_GoToPointDodge) +Body_GoToPointDodge.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 + (2, TType.DOUBLE, 'dash_power', None, None, ), # 2 +) +all_structs.append(Body_HoldBall) +Body_HoldBall.thrift_spec = ( + None, # 0 + (1, TType.BOOL, 'do_turn', None, None, ), # 1 + (2, TType.STRUCT, 'turn_target_point', [ThriftVector2D, None], None, ), # 2 + (3, TType.STRUCT, 'kick_target_point', [ThriftVector2D, None], None, ), # 3 +) +all_structs.append(Body_Intercept) +Body_Intercept.thrift_spec = ( + None, # 0 + (1, TType.BOOL, 'save_recovery', None, None, ), # 1 + (2, TType.STRUCT, 'face_point', [ThriftVector2D, None], None, ), # 2 +) +all_structs.append(Body_KickOneStep) +Body_KickOneStep.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 + (2, TType.DOUBLE, 'first_speed', None, None, ), # 2 + (3, TType.BOOL, 'force_mode', None, None, ), # 3 +) +all_structs.append(Body_StopBall) +Body_StopBall.thrift_spec = ( +) +all_structs.append(Body_StopDash) +Body_StopDash.thrift_spec = ( + None, # 0 + (1, TType.BOOL, 'save_recovery', None, None, ), # 1 +) +all_structs.append(Body_TackleToPoint) +Body_TackleToPoint.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 + (2, TType.DOUBLE, 'min_probability', None, None, ), # 2 + (3, TType.DOUBLE, 'min_speed', None, None, ), # 3 +) +all_structs.append(Body_TurnToAngle) +Body_TurnToAngle.thrift_spec = ( + None, # 0 + (1, TType.DOUBLE, 'angle', None, None, ), # 1 +) +all_structs.append(Body_TurnToBall) +Body_TurnToBall.thrift_spec = ( + None, # 0 + (1, TType.I32, 'cycle', None, None, ), # 1 +) +all_structs.append(Body_TurnToPoint) +Body_TurnToPoint.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 + (2, TType.I32, 'cycle', None, None, ), # 2 +) +all_structs.append(Focus_MoveToPoint) +Focus_MoveToPoint.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 +) +all_structs.append(Focus_Reset) +Focus_Reset.thrift_spec = ( +) +all_structs.append(Neck_ScanField) +Neck_ScanField.thrift_spec = ( +) +all_structs.append(Neck_ScanPlayers) +Neck_ScanPlayers.thrift_spec = ( +) +all_structs.append(Neck_TurnToBallAndPlayer) +Neck_TurnToBallAndPlayer.thrift_spec = ( + None, # 0 + (1, TType.I32, 'side', None, None, ), # 1 + (2, TType.I32, 'uniform_number', None, None, ), # 2 + (3, TType.I32, 'count_threshold', None, None, ), # 3 +) +all_structs.append(Neck_TurnToBallOrScan) +Neck_TurnToBallOrScan.thrift_spec = ( + None, # 0 + (1, TType.I32, 'count_threshold', None, None, ), # 1 +) +all_structs.append(Neck_TurnToBall) +Neck_TurnToBall.thrift_spec = ( +) +all_structs.append(Neck_TurnToGoalieOrScan) +Neck_TurnToGoalieOrScan.thrift_spec = ( + None, # 0 + (1, TType.I32, 'count_threshold', None, None, ), # 1 +) +all_structs.append(Neck_TurnToLowConfTeammate) +Neck_TurnToLowConfTeammate.thrift_spec = ( +) +all_structs.append(Neck_TurnToPlayerOrScan) +Neck_TurnToPlayerOrScan.thrift_spec = ( + None, # 0 + (1, TType.I32, 'side', None, None, ), # 1 + (2, TType.I32, 'uniform_number', None, None, ), # 2 + (3, TType.I32, 'count_threshold', None, None, ), # 3 +) +all_structs.append(Neck_TurnToPoint) +Neck_TurnToPoint.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 +) +all_structs.append(Neck_TurnToRelative) +Neck_TurnToRelative.thrift_spec = ( + None, # 0 + (1, TType.DOUBLE, 'angle', None, None, ), # 1 +) +all_structs.append(View_ChangeWidth) +View_ChangeWidth.thrift_spec = ( + None, # 0 + (1, TType.I32, 'view_width', None, None, ), # 1 +) +all_structs.append(View_Normal) +View_Normal.thrift_spec = ( +) +all_structs.append(View_Synch) +View_Synch.thrift_spec = ( +) +all_structs.append(View_Wide) +View_Wide.thrift_spec = ( +) +all_structs.append(HeliosGoalie) +HeliosGoalie.thrift_spec = ( +) +all_structs.append(HeliosGoalieMove) +HeliosGoalieMove.thrift_spec = ( +) +all_structs.append(HeliosGoalieKick) +HeliosGoalieKick.thrift_spec = ( +) +all_structs.append(HeliosShoot) +HeliosShoot.thrift_spec = ( +) +all_structs.append(HeliosChainAction) +HeliosChainAction.thrift_spec = ( + None, # 0 + (1, TType.BOOL, 'direct_pass', None, None, ), # 1 + (2, TType.BOOL, 'lead_pass', None, None, ), # 2 + (3, TType.BOOL, 'through_pass', None, None, ), # 3 + (4, TType.BOOL, 'short_dribble', None, None, ), # 4 + (5, TType.BOOL, 'long_dribble', None, None, ), # 5 + (6, TType.BOOL, 'cross', None, None, ), # 6 + (7, TType.BOOL, 'simple_pass', None, None, ), # 7 + (8, TType.BOOL, 'simple_dribble', None, None, ), # 8 + (9, TType.BOOL, 'simple_shoot', None, None, ), # 9 +) +all_structs.append(HeliosBasicOffensive) +HeliosBasicOffensive.thrift_spec = ( +) +all_structs.append(HeliosBasicMove) +HeliosBasicMove.thrift_spec = ( +) +all_structs.append(HeliosSetPlay) +HeliosSetPlay.thrift_spec = ( +) +all_structs.append(HeliosPenalty) +HeliosPenalty.thrift_spec = ( +) +all_structs.append(HeliosCommunicaion) +HeliosCommunicaion.thrift_spec = ( +) +all_structs.append(PlayerAction) +PlayerAction.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'dash', [Dash, None], None, ), # 1 + (2, TType.STRUCT, 'turn', [Turn, None], None, ), # 2 + (3, TType.STRUCT, 'kick', [Kick, None], None, ), # 3 + (4, TType.STRUCT, 'tackle', [Tackle, None], None, ), # 4 + (5, TType.STRUCT, 'catch_action', [Catch, None], None, ), # 5 + (6, TType.STRUCT, 'move', [Move, None], None, ), # 6 + (7, TType.STRUCT, 'turn_neck', [TurnNeck, None], None, ), # 7 + (8, TType.STRUCT, 'change_view', [ChangeView, None], None, ), # 8 + (9, TType.STRUCT, 'say', [Say, None], None, ), # 9 + (10, TType.STRUCT, 'point_to', [PointTo, None], None, ), # 10 + (11, TType.STRUCT, 'point_to_of', [PointToOf, None], None, ), # 11 + (12, TType.STRUCT, 'attention_to', [AttentionTo, None], None, ), # 12 + (13, TType.STRUCT, 'attention_to_of', [AttentionToOf, None], None, ), # 13 + (14, TType.STRUCT, 'log', [Log, None], None, ), # 14 + (15, TType.STRUCT, 'debug_client', [DebugClient, None], None, ), # 15 + (16, TType.STRUCT, 'body_go_to_point', [Body_GoToPoint, None], None, ), # 16 + (17, TType.STRUCT, 'body_smart_kick', [Body_SmartKick, None], None, ), # 17 + (18, TType.STRUCT, 'bhv_before_kick_off', [Bhv_BeforeKickOff, None], None, ), # 18 + (19, TType.STRUCT, 'bhv_body_neck_to_ball', [Bhv_BodyNeckToBall, None], None, ), # 19 + (20, TType.STRUCT, 'bhv_body_neck_to_point', [Bhv_BodyNeckToPoint, None], None, ), # 20 + (21, TType.STRUCT, 'bhv_emergency', [Bhv_Emergency, None], None, ), # 21 + (22, TType.STRUCT, 'bhv_go_to_point_look_ball', [Bhv_GoToPointLookBall, None], None, ), # 22 + (23, TType.STRUCT, 'bhv_neck_body_to_ball', [Bhv_NeckBodyToBall, None], None, ), # 23 + (24, TType.STRUCT, 'bhv_neck_body_to_point', [Bhv_NeckBodyToPoint, None], None, ), # 24 + (25, TType.STRUCT, 'bhv_scan_field', [Bhv_ScanField, None], None, ), # 25 + (26, TType.STRUCT, 'body_advance_ball', [Body_AdvanceBall, None], None, ), # 26 + (27, TType.STRUCT, 'body_clear_ball', [Body_ClearBall, None], None, ), # 27 + (28, TType.STRUCT, 'body_dribble', [Body_Dribble, None], None, ), # 28 + (29, TType.STRUCT, 'body_go_to_point_dodge', [Body_GoToPointDodge, None], None, ), # 29 + (30, TType.STRUCT, 'body_hold_ball', [Body_HoldBall, None], None, ), # 30 + (31, TType.STRUCT, 'body_intercept', [Body_Intercept, None], None, ), # 31 + (32, TType.STRUCT, 'body_kick_one_step', [Body_KickOneStep, None], None, ), # 32 + (33, TType.STRUCT, 'body_stop_ball', [Body_StopBall, None], None, ), # 33 + (34, TType.STRUCT, 'body_stop_dash', [Body_StopDash, None], None, ), # 34 + (35, TType.STRUCT, 'body_tackle_to_point', [Body_TackleToPoint, None], None, ), # 35 + (36, TType.STRUCT, 'body_turn_to_angle', [Body_TurnToAngle, None], None, ), # 36 + (37, TType.STRUCT, 'body_turn_to_ball', [Body_TurnToBall, None], None, ), # 37 + (38, TType.STRUCT, 'body_turn_to_point', [Body_TurnToPoint, None], None, ), # 38 + (39, TType.STRUCT, 'focus_move_to_point', [Focus_MoveToPoint, None], None, ), # 39 + (40, TType.STRUCT, 'focus_reset', [Focus_Reset, None], None, ), # 40 + (41, TType.STRUCT, 'neck_scan_field', [Neck_ScanField, None], None, ), # 41 + (42, TType.STRUCT, 'neck_scan_players', [Neck_ScanPlayers, None], None, ), # 42 + (43, TType.STRUCT, 'neck_turn_to_ball_and_player', [Neck_TurnToBallAndPlayer, None], None, ), # 43 + (44, TType.STRUCT, 'neck_turn_to_ball_or_scan', [Neck_TurnToBallOrScan, None], None, ), # 44 + (45, TType.STRUCT, 'neck_turn_to_ball', [Neck_TurnToBall, None], None, ), # 45 + (46, TType.STRUCT, 'neck_turn_to_goalie_or_scan', [Neck_TurnToGoalieOrScan, None], None, ), # 46 + (47, TType.STRUCT, 'neck_turn_to_low_conf_teammate', [Neck_TurnToLowConfTeammate, None], None, ), # 47 + (48, TType.STRUCT, 'neck_turn_to_player_or_scan', [Neck_TurnToPlayerOrScan, None], None, ), # 48 + (49, TType.STRUCT, 'neck_turn_to_point', [Neck_TurnToPoint, None], None, ), # 49 + (50, TType.STRUCT, 'neck_turn_to_relative', [Neck_TurnToRelative, None], None, ), # 50 + (51, TType.STRUCT, 'view_change_width', [View_ChangeWidth, None], None, ), # 51 + (52, TType.STRUCT, 'view_normal', [View_Normal, None], None, ), # 52 + (53, TType.STRUCT, 'view_synch', [View_Synch, None], None, ), # 53 + (54, TType.STRUCT, 'view_wide', [View_Wide, None], None, ), # 54 + (55, TType.STRUCT, 'helios_goalie', [HeliosGoalie, None], None, ), # 55 + (56, TType.STRUCT, 'helios_goalie_move', [HeliosGoalieMove, None], None, ), # 56 + (57, TType.STRUCT, 'helios_goalie_kick', [HeliosGoalieKick, None], None, ), # 57 + (58, TType.STRUCT, 'helios_shoot', [HeliosShoot, None], None, ), # 58 + (59, TType.STRUCT, 'helios_chain_action', [HeliosChainAction, None], None, ), # 59 + (60, TType.STRUCT, 'helios_basic_offensive', [HeliosBasicOffensive, None], None, ), # 60 + (61, TType.STRUCT, 'helios_basic_move', [HeliosBasicMove, None], None, ), # 61 + (62, TType.STRUCT, 'helios_set_play', [HeliosSetPlay, None], None, ), # 62 + (63, TType.STRUCT, 'helios_penalty', [HeliosPenalty, None], None, ), # 63 + (64, TType.STRUCT, 'helios_communication', [HeliosCommunicaion, None], None, ), # 64 +) +all_structs.append(PlayerActions) +PlayerActions.thrift_spec = ( + None, # 0 + (1, TType.LIST, 'actions', (TType.STRUCT, [PlayerAction, None], False), None, ), # 1 +) +all_structs.append(ChangePlayerType) +ChangePlayerType.thrift_spec = ( + None, # 0 + (1, TType.I32, 'uniform_number', None, None, ), # 1 + (2, TType.I32, 'type', None, None, ), # 2 +) +all_structs.append(DoHeliosSubstitute) +DoHeliosSubstitute.thrift_spec = ( +) +all_structs.append(DoHeliosSayPlayerTypes) +DoHeliosSayPlayerTypes.thrift_spec = ( +) +all_structs.append(CoachAction) +CoachAction.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'change_player_types', [ChangePlayerType, None], None, ), # 1 + (2, TType.STRUCT, 'do_helios_substitute', [DoHeliosSubstitute, None], None, ), # 2 + (3, TType.STRUCT, 'do_helios_say_player_types', [DoHeliosSayPlayerTypes, None], None, ), # 3 +) +all_structs.append(CoachActions) +CoachActions.thrift_spec = ( + None, # 0 + (1, TType.LIST, 'actions', (TType.STRUCT, [CoachAction, None], False), None, ), # 1 +) +all_structs.append(DoKickOff) +DoKickOff.thrift_spec = ( +) +all_structs.append(DoMoveBall) +DoMoveBall.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'position', [ThriftVector2D, None], None, ), # 1 + (2, TType.STRUCT, 'velocity', [ThriftVector2D, None], None, ), # 2 +) +all_structs.append(DoMovePlayer) +DoMovePlayer.thrift_spec = ( + None, # 0 + (1, TType.BOOL, 'our_side', None, None, ), # 1 + (2, TType.I32, 'uniform_number', None, None, ), # 2 + (3, TType.STRUCT, 'position', [ThriftVector2D, None], None, ), # 3 + (4, TType.DOUBLE, 'body_direction', None, None, ), # 4 +) +all_structs.append(DoRecover) +DoRecover.thrift_spec = ( +) +all_structs.append(DoChangeMode) +DoChangeMode.thrift_spec = ( + None, # 0 + (1, TType.I32, 'game_mode_type', None, None, ), # 1 + (2, TType.I32, 'side', None, None, ), # 2 +) +all_structs.append(DoChangePlayerType) +DoChangePlayerType.thrift_spec = ( + None, # 0 + (1, TType.BOOL, 'our_side', None, None, ), # 1 + (2, TType.I32, 'uniform_number', None, None, ), # 2 + (3, TType.I32, 'type', None, None, ), # 3 +) +all_structs.append(TrainerAction) +TrainerAction.thrift_spec = ( + None, # 0 + (1, TType.STRUCT, 'do_kick_off', [DoKickOff, None], None, ), # 1 + (2, TType.STRUCT, 'do_move_ball', [DoMoveBall, None], None, ), # 2 + (3, TType.STRUCT, 'do_move_player', [DoMovePlayer, None], None, ), # 3 + (4, TType.STRUCT, 'do_recover', [DoRecover, None], None, ), # 4 + (5, TType.STRUCT, 'do_change_mode', [DoChangeMode, None], None, ), # 5 + (6, TType.STRUCT, 'do_change_player_type', [DoChangePlayerType, None], None, ), # 6 +) +all_structs.append(TrainerActions) +TrainerActions.thrift_spec = ( + None, # 0 + (1, TType.LIST, 'actions', (TType.STRUCT, [TrainerAction, None], False), None, ), # 1 +) +all_structs.append(ServerParam) +ServerParam.thrift_spec = ( + None, # 0 + (1, TType.I32, 'agent_type', None, None, ), # 1 + (2, TType.DOUBLE, 'inertia_moment', None, None, ), # 2 + (3, TType.DOUBLE, 'player_size', None, None, ), # 3 + (4, TType.DOUBLE, 'player_decay', None, None, ), # 4 + (5, TType.DOUBLE, 'player_rand', None, None, ), # 5 + (6, TType.DOUBLE, 'player_weight', None, None, ), # 6 + (7, TType.DOUBLE, 'player_speed_max', None, None, ), # 7 + (8, TType.DOUBLE, 'player_accel_max', None, None, ), # 8 + (9, TType.DOUBLE, 'stamina_max', None, None, ), # 9 + (10, TType.DOUBLE, 'stamina_inc_max', None, None, ), # 10 + (11, TType.DOUBLE, 'recover_init', None, None, ), # 11 + (12, TType.DOUBLE, 'recover_dec_thr', None, None, ), # 12 + (13, TType.DOUBLE, 'recover_min', None, None, ), # 13 + (14, TType.DOUBLE, 'recover_dec', None, None, ), # 14 + (15, TType.DOUBLE, 'effort_init', None, None, ), # 15 + (16, TType.DOUBLE, 'effort_dec_thr', None, None, ), # 16 + (17, TType.DOUBLE, 'effort_min', None, None, ), # 17 + (18, TType.DOUBLE, 'effort_dec', None, None, ), # 18 + (19, TType.DOUBLE, 'effort_inc_thr', None, None, ), # 19 + (20, TType.DOUBLE, 'effort_inc', None, None, ), # 20 + (21, TType.DOUBLE, 'kick_rand', None, None, ), # 21 + (22, TType.BOOL, 'team_actuator_noise', None, None, ), # 22 + (23, TType.DOUBLE, 'player_rand_factor_l', None, None, ), # 23 + (24, TType.DOUBLE, 'player_rand_factor_r', None, None, ), # 24 + (25, TType.DOUBLE, 'kick_rand_factor_l', None, None, ), # 25 + (26, TType.DOUBLE, 'kick_rand_factor_r', None, None, ), # 26 + (27, TType.DOUBLE, 'ball_size', None, None, ), # 27 + (28, TType.DOUBLE, 'ball_decay', None, None, ), # 28 + (29, TType.DOUBLE, 'ball_rand', None, None, ), # 29 + (30, TType.DOUBLE, 'ball_weight', None, None, ), # 30 + (31, TType.DOUBLE, 'ball_speed_max', None, None, ), # 31 + (32, TType.DOUBLE, 'ball_accel_max', None, None, ), # 32 + (33, TType.DOUBLE, 'dash_power_rate', None, None, ), # 33 + (34, TType.DOUBLE, 'kick_power_rate', None, None, ), # 34 + (35, TType.DOUBLE, 'kickable_margin', None, None, ), # 35 + (36, TType.DOUBLE, 'control_radius', None, None, ), # 36 + (37, TType.DOUBLE, 'control_radius_width', None, None, ), # 37 + (38, TType.DOUBLE, 'max_power', None, None, ), # 38 + (39, TType.DOUBLE, 'min_power', None, None, ), # 39 + (40, TType.DOUBLE, 'max_moment', None, None, ), # 40 + (41, TType.DOUBLE, 'min_moment', None, None, ), # 41 + (42, TType.DOUBLE, 'max_neck_moment', None, None, ), # 42 + (43, TType.DOUBLE, 'min_neck_moment', None, None, ), # 43 + (44, TType.DOUBLE, 'max_neck_angle', None, None, ), # 44 + (45, TType.DOUBLE, 'min_neck_angle', None, None, ), # 45 + (46, TType.DOUBLE, 'visible_angle', None, None, ), # 46 + (47, TType.DOUBLE, 'visible_distance', None, None, ), # 47 + (48, TType.DOUBLE, 'wind_dir', None, None, ), # 48 + (49, TType.DOUBLE, 'wind_force', None, None, ), # 49 + (50, TType.DOUBLE, 'wind_angle', None, None, ), # 50 + (51, TType.DOUBLE, 'wind_rand', None, None, ), # 51 + (52, TType.DOUBLE, 'kickable_area', None, None, ), # 52 + (53, TType.DOUBLE, 'catch_area_l', None, None, ), # 53 + (54, TType.DOUBLE, 'catch_area_w', None, None, ), # 54 + (55, TType.DOUBLE, 'catch_probability', None, None, ), # 55 + (56, TType.I32, 'goalie_max_moves', None, None, ), # 56 + (57, TType.DOUBLE, 'corner_kick_margin', None, None, ), # 57 + (58, TType.DOUBLE, 'offside_active_area_size', None, None, ), # 58 + (59, TType.BOOL, 'wind_none', None, None, ), # 59 + (60, TType.BOOL, 'use_wind_random', None, None, ), # 60 + (61, TType.I32, 'coach_say_count_max', None, None, ), # 61 + (62, TType.I32, 'coach_say_msg_size', None, None, ), # 62 + (63, TType.I32, 'clang_win_size', None, None, ), # 63 + (64, TType.I32, 'clang_define_win', None, None, ), # 64 + (65, TType.I32, 'clang_meta_win', None, None, ), # 65 + (66, TType.I32, 'clang_advice_win', None, None, ), # 66 + (67, TType.I32, 'clang_info_win', None, None, ), # 67 + (68, TType.I32, 'clang_mess_delay', None, None, ), # 68 + (69, TType.I32, 'clang_mess_per_cycle', None, None, ), # 69 + (70, TType.I32, 'half_time', None, None, ), # 70 + (71, TType.I32, 'simulator_step', None, None, ), # 71 + (72, TType.I32, 'send_step', None, None, ), # 72 + (73, TType.I32, 'recv_step', None, None, ), # 73 + (74, TType.I32, 'sense_body_step', None, None, ), # 74 + (75, TType.I32, 'lcm_step', None, None, ), # 75 + (76, TType.I32, 'player_say_msg_size', None, None, ), # 76 + (77, TType.I32, 'player_hear_max', None, None, ), # 77 + (78, TType.I32, 'player_hear_inc', None, None, ), # 78 + (79, TType.I32, 'player_hear_decay', None, None, ), # 79 + (80, TType.I32, 'catch_ban_cycle', None, None, ), # 80 + (81, TType.I32, 'slow_down_factor', None, None, ), # 81 + (82, TType.BOOL, 'use_offside', None, None, ), # 82 + (83, TType.BOOL, 'kickoff_offside', None, None, ), # 83 + (84, TType.DOUBLE, 'offside_kick_margin', None, None, ), # 84 + (85, TType.DOUBLE, 'audio_cut_dist', None, None, ), # 85 + (86, TType.DOUBLE, 'dist_quantize_step', None, None, ), # 86 + (87, TType.DOUBLE, 'landmark_dist_quantize_step', None, None, ), # 87 + (88, TType.DOUBLE, 'dir_quantize_step', None, None, ), # 88 + (89, TType.DOUBLE, 'dist_quantize_step_l', None, None, ), # 89 + (90, TType.DOUBLE, 'dist_quantize_step_r', None, None, ), # 90 + (91, TType.DOUBLE, 'landmark_dist_quantize_step_l', None, None, ), # 91 + (92, TType.DOUBLE, 'landmark_dist_quantize_step_r', None, None, ), # 92 + (93, TType.DOUBLE, 'dir_quantize_step_l', None, None, ), # 93 + (94, TType.DOUBLE, 'dir_quantize_step_r', None, None, ), # 94 + (95, TType.BOOL, 'coach_mode', None, None, ), # 95 + (96, TType.BOOL, 'coach_with_referee_mode', None, None, ), # 96 + (97, TType.BOOL, 'use_old_coach_hear', None, None, ), # 97 + (98, TType.DOUBLE, 'slowness_on_top_for_left_team', None, None, ), # 98 + (99, TType.DOUBLE, 'slowness_on_top_for_right_team', None, None, ), # 99 + (100, TType.I32, 'start_goal_l', None, None, ), # 100 + (101, TType.I32, 'start_goal_r', None, None, ), # 101 + (102, TType.BOOL, 'fullstate_l', None, None, ), # 102 + (103, TType.BOOL, 'fullstate_r', None, None, ), # 103 + (104, TType.I32, 'drop_ball_time', None, None, ), # 104 + (105, TType.BOOL, 'synch_mode', None, None, ), # 105 + (106, TType.I32, 'synch_offset', None, None, ), # 106 + (107, TType.I32, 'synch_micro_sleep', None, None, ), # 107 + (108, TType.I32, 'point_to_ban', None, None, ), # 108 + (109, TType.I32, 'point_to_duration', None, None, ), # 109 + (110, TType.I32, 'player_port', None, None, ), # 110 + (111, TType.I32, 'trainer_port', None, None, ), # 111 + (112, TType.I32, 'online_coach_port', None, None, ), # 112 + (113, TType.BOOL, 'verbose_mode', None, None, ), # 113 + (114, TType.I32, 'coach_send_vi_step', None, None, ), # 114 + (115, TType.STRING, 'replay_file', 'UTF8', None, ), # 115 + (116, TType.STRING, 'landmark_file', 'UTF8', None, ), # 116 + (117, TType.BOOL, 'send_comms', None, None, ), # 117 + (118, TType.BOOL, 'text_logging', None, None, ), # 118 + (119, TType.BOOL, 'game_logging', None, None, ), # 119 + (120, TType.I32, 'game_log_version', None, None, ), # 120 + (121, TType.STRING, 'text_log_dir', 'UTF8', None, ), # 121 + (122, TType.STRING, 'game_log_dir', 'UTF8', None, ), # 122 + (123, TType.STRING, 'text_log_fixed_name', 'UTF8', None, ), # 123 + (124, TType.STRING, 'game_log_fixed_name', 'UTF8', None, ), # 124 + (125, TType.BOOL, 'use_text_log_fixed', None, None, ), # 125 + (126, TType.BOOL, 'use_game_log_fixed', None, None, ), # 126 + (127, TType.BOOL, 'use_text_log_dated', None, None, ), # 127 + (128, TType.BOOL, 'use_game_log_dated', None, None, ), # 128 + (129, TType.STRING, 'log_date_format', 'UTF8', None, ), # 129 + (130, TType.BOOL, 'log_times', None, None, ), # 130 + (131, TType.BOOL, 'record_message', None, None, ), # 131 + (132, TType.I32, 'text_log_compression', None, None, ), # 132 + (133, TType.I32, 'game_log_compression', None, None, ), # 133 + (134, TType.BOOL, 'use_profile', None, None, ), # 134 + (135, TType.DOUBLE, 'tackle_dist', None, None, ), # 135 + (136, TType.DOUBLE, 'tackle_back_dist', None, None, ), # 136 + (137, TType.DOUBLE, 'tackle_width', None, None, ), # 137 + (138, TType.DOUBLE, 'tackle_exponent', None, None, ), # 138 + (139, TType.I32, 'tackle_cycles', None, None, ), # 139 + (140, TType.DOUBLE, 'tackle_power_rate', None, None, ), # 140 + (141, TType.I32, 'freeform_wait_period', None, None, ), # 141 + (142, TType.I32, 'freeform_send_period', None, None, ), # 142 + (143, TType.BOOL, 'free_kick_faults', None, None, ), # 143 + (144, TType.BOOL, 'back_passes', None, None, ), # 144 + (145, TType.BOOL, 'proper_goal_kicks', None, None, ), # 145 + (146, TType.DOUBLE, 'stopped_ball_vel', None, None, ), # 146 + (147, TType.I32, 'max_goal_kicks', None, None, ), # 147 + (148, TType.I32, 'clang_del_win', None, None, ), # 148 + (149, TType.I32, 'clang_rule_win', None, None, ), # 149 + (150, TType.BOOL, 'auto_mode', None, None, ), # 150 + (151, TType.I32, 'kick_off_wait', None, None, ), # 151 + (152, TType.I32, 'connect_wait', None, None, ), # 152 + (153, TType.I32, 'game_over_wait', None, None, ), # 153 + (154, TType.STRING, 'team_l_start', 'UTF8', None, ), # 154 + (155, TType.STRING, 'team_r_start', 'UTF8', None, ), # 155 + (156, TType.BOOL, 'keepaway_mode', None, None, ), # 156 + (157, TType.DOUBLE, 'keepaway_length', None, None, ), # 157 + (158, TType.DOUBLE, 'keepaway_width', None, None, ), # 158 + (159, TType.BOOL, 'keepaway_logging', None, None, ), # 159 + (160, TType.STRING, 'keepaway_log_dir', 'UTF8', None, ), # 160 + (161, TType.STRING, 'keepaway_log_fixed_name', 'UTF8', None, ), # 161 + (162, TType.BOOL, 'keepaway_log_fixed', None, None, ), # 162 + (163, TType.BOOL, 'keepaway_log_dated', None, None, ), # 163 + (164, TType.I32, 'keepaway_start', None, None, ), # 164 + (165, TType.I32, 'nr_normal_halfs', None, None, ), # 165 + (166, TType.I32, 'nr_extra_halfs', None, None, ), # 166 + (167, TType.BOOL, 'penalty_shoot_outs', None, None, ), # 167 + (168, TType.I32, 'pen_before_setup_wait', None, None, ), # 168 + (169, TType.I32, 'pen_setup_wait', None, None, ), # 169 + (170, TType.I32, 'pen_ready_wait', None, None, ), # 170 + (171, TType.I32, 'pen_taken_wait', None, None, ), # 171 + (172, TType.I32, 'pen_nr_kicks', None, None, ), # 172 + (173, TType.I32, 'pen_max_extra_kicks', None, None, ), # 173 + (174, TType.DOUBLE, 'pen_dist_x', None, None, ), # 174 + (175, TType.BOOL, 'pen_random_winner', None, None, ), # 175 + (176, TType.BOOL, 'pen_allow_mult_kicks', None, None, ), # 176 + (177, TType.DOUBLE, 'pen_max_goalie_dist_x', None, None, ), # 177 + (178, TType.BOOL, 'pen_coach_moves_players', None, None, ), # 178 + (179, TType.STRING, 'module_dir', 'UTF8', None, ), # 179 + (180, TType.DOUBLE, 'ball_stuck_area', None, None, ), # 180 + (181, TType.STRING, 'coach_msg_file', 'UTF8', None, ), # 181 + (182, TType.DOUBLE, 'max_tackle_power', None, None, ), # 182 + (183, TType.DOUBLE, 'max_back_tackle_power', None, None, ), # 183 + (184, TType.DOUBLE, 'player_speed_max_min', None, None, ), # 184 + (185, TType.DOUBLE, 'extra_stamina', None, None, ), # 185 + (186, TType.I32, 'synch_see_offset', None, None, ), # 186 + (187, TType.I32, 'extra_half_time', None, None, ), # 187 + (188, TType.DOUBLE, 'stamina_capacity', None, None, ), # 188 + (189, TType.DOUBLE, 'max_dash_angle', None, None, ), # 189 + (190, TType.DOUBLE, 'min_dash_angle', None, None, ), # 190 + (191, TType.DOUBLE, 'dash_angle_step', None, None, ), # 191 + (192, TType.DOUBLE, 'side_dash_rate', None, None, ), # 192 + (193, TType.DOUBLE, 'back_dash_rate', None, None, ), # 193 + (194, TType.DOUBLE, 'max_dash_power', None, None, ), # 194 + (195, TType.DOUBLE, 'min_dash_power', None, None, ), # 195 + (196, TType.DOUBLE, 'tackle_rand_factor', None, None, ), # 196 + (197, TType.DOUBLE, 'foul_detect_probability', None, None, ), # 197 + (198, TType.DOUBLE, 'foul_exponent', None, None, ), # 198 + (199, TType.I32, 'foul_cycles', None, None, ), # 199 + (200, TType.BOOL, 'golden_goal', None, None, ), # 200 + (201, TType.DOUBLE, 'red_card_probability', None, None, ), # 201 + (202, TType.I32, 'illegal_defense_duration', None, None, ), # 202 + (203, TType.I32, 'illegal_defense_number', None, None, ), # 203 + (204, TType.DOUBLE, 'illegal_defense_dist_x', None, None, ), # 204 + (205, TType.DOUBLE, 'illegal_defense_width', None, None, ), # 205 + (206, TType.STRING, 'fixed_teamname_l', 'UTF8', None, ), # 206 + (207, TType.STRING, 'fixed_teamname_r', 'UTF8', None, ), # 207 + (208, TType.DOUBLE, 'max_catch_angle', None, None, ), # 208 + (209, TType.DOUBLE, 'min_catch_angle', None, None, ), # 209 + (210, TType.I32, 'random_seed', None, None, ), # 210 + (211, TType.DOUBLE, 'long_kick_power_factor', None, None, ), # 211 + (212, TType.I32, 'long_kick_delay', None, None, ), # 212 + (213, TType.I32, 'max_monitors', None, None, ), # 213 + (214, TType.DOUBLE, 'catchable_area', None, None, ), # 214 + (215, TType.DOUBLE, 'real_speed_max', None, None, ), # 215 + (216, TType.DOUBLE, 'pitch_half_length', None, None, ), # 216 + (217, TType.DOUBLE, 'pitch_half_width', None, None, ), # 217 + (218, TType.DOUBLE, 'our_penalty_area_line_x', None, None, ), # 218 + (219, TType.DOUBLE, 'their_penalty_area_line_x', None, None, ), # 219 + (220, TType.DOUBLE, 'penalty_area_half_width', None, None, ), # 220 + (221, TType.DOUBLE, 'penalty_area_length', None, None, ), # 221 + (222, TType.DOUBLE, 'goal_width', None, None, ), # 222 +) +all_structs.append(PlayerParam) +PlayerParam.thrift_spec = ( + None, # 0 + (1, TType.I32, 'agent_type', None, None, ), # 1 + (2, TType.I32, 'player_types', None, None, ), # 2 + (3, TType.I32, 'subs_max', None, None, ), # 3 + (4, TType.I32, 'pt_max', None, None, ), # 4 + (5, TType.BOOL, 'allow_mult_default_type', None, None, ), # 5 + (6, TType.DOUBLE, 'player_speed_max_delta_min', None, None, ), # 6 + (7, TType.DOUBLE, 'player_speed_max_delta_max', None, None, ), # 7 + (8, TType.DOUBLE, 'stamina_inc_max_delta_factor', None, None, ), # 8 + (9, TType.DOUBLE, 'player_decay_delta_min', None, None, ), # 9 + (10, TType.DOUBLE, 'player_decay_delta_max', None, None, ), # 10 + (11, TType.DOUBLE, 'inertia_moment_delta_factor', None, None, ), # 11 + (12, TType.DOUBLE, 'dash_power_rate_delta_min', None, None, ), # 12 + (13, TType.DOUBLE, 'dash_power_rate_delta_max', None, None, ), # 13 + (14, TType.DOUBLE, 'player_size_delta_factor', None, None, ), # 14 + (15, TType.DOUBLE, 'kickable_margin_delta_min', None, None, ), # 15 + (16, TType.DOUBLE, 'kickable_margin_delta_max', None, None, ), # 16 + (17, TType.DOUBLE, 'kick_rand_delta_factor', None, None, ), # 17 + (18, TType.DOUBLE, 'extra_stamina_delta_min', None, None, ), # 18 + (19, TType.DOUBLE, 'extra_stamina_delta_max', None, None, ), # 19 + (20, TType.DOUBLE, 'effort_max_delta_factor', None, None, ), # 20 + (21, TType.DOUBLE, 'effort_min_delta_factor', None, None, ), # 21 + (22, TType.I32, 'random_seed', None, None, ), # 22 + (23, TType.DOUBLE, 'new_dash_power_rate_delta_min', None, None, ), # 23 + (24, TType.DOUBLE, 'new_dash_power_rate_delta_max', None, None, ), # 24 + (25, TType.DOUBLE, 'new_stamina_inc_max_delta_factor', None, None, ), # 25 + (26, TType.DOUBLE, 'kick_power_rate_delta_min', None, None, ), # 26 + (27, TType.DOUBLE, 'kick_power_rate_delta_max', None, None, ), # 27 + (28, TType.DOUBLE, 'foul_detect_probability_delta_factor', None, None, ), # 28 + (29, TType.DOUBLE, 'catchable_area_l_stretch_min', None, None, ), # 29 + (30, TType.DOUBLE, 'catchable_area_l_stretch_max', None, None, ), # 30 +) +all_structs.append(PlayerType) +PlayerType.thrift_spec = ( + None, # 0 + (1, TType.I32, 'agent_type', None, None, ), # 1 + (2, TType.I32, 'id', None, None, ), # 2 + (3, TType.DOUBLE, 'stamina_inc_max', None, None, ), # 3 + (4, TType.DOUBLE, 'player_decay', None, None, ), # 4 + (5, TType.DOUBLE, 'inertia_moment', None, None, ), # 5 + (6, TType.DOUBLE, 'dash_power_rate', None, None, ), # 6 + (7, TType.DOUBLE, 'player_size', None, None, ), # 7 + (8, TType.DOUBLE, 'kickable_margin', None, None, ), # 8 + (9, TType.DOUBLE, 'kick_rand', None, None, ), # 9 + (10, TType.DOUBLE, 'extra_stamina', None, None, ), # 10 + (11, TType.DOUBLE, 'effort_max', None, None, ), # 11 + (12, TType.DOUBLE, 'effort_min', None, None, ), # 12 + (13, TType.DOUBLE, 'kick_power_rate', None, None, ), # 13 + (14, TType.DOUBLE, 'foul_detect_probability', None, None, ), # 14 + (15, TType.DOUBLE, 'catchable_area_l_stretch', None, None, ), # 15 + (16, TType.DOUBLE, 'unum_far_length', None, None, ), # 16 + (17, TType.DOUBLE, 'unum_too_far_length', None, None, ), # 17 + (18, TType.DOUBLE, 'team_far_length', None, None, ), # 18 + (19, TType.DOUBLE, 'team_too_far_length', None, None, ), # 19 + (20, TType.DOUBLE, 'player_max_observation_length', None, None, ), # 20 + (21, TType.DOUBLE, 'ball_vel_far_length', None, None, ), # 21 + (22, TType.DOUBLE, 'ball_vel_too_far_length', None, None, ), # 22 + (23, TType.DOUBLE, 'ball_max_observation_length', None, None, ), # 23 + (24, TType.DOUBLE, 'flag_chg_far_length', None, None, ), # 24 + (25, TType.DOUBLE, 'flag_chg_too_far_length', None, None, ), # 25 + (26, TType.DOUBLE, 'flag_max_observation_length', None, None, ), # 26 + (27, TType.DOUBLE, 'kickable_area', None, None, ), # 27 + (28, TType.DOUBLE, 'reliable_catchable_dist', None, None, ), # 28 + (29, TType.DOUBLE, 'max_catchable_dist', None, None, ), # 29 + (30, TType.DOUBLE, 'real_speed_max', None, None, ), # 30 + (31, TType.DOUBLE, 'player_speed_max2', None, None, ), # 31 + (32, TType.DOUBLE, 'real_speed_max2', None, None, ), # 32 + (33, TType.I32, 'cycles_to_reach_max_speed', None, None, ), # 33 + (34, TType.DOUBLE, 'player_speed_max', None, None, ), # 34 +) +all_structs.append(Empty) +Empty.thrift_spec = ( +) +all_structs.append(InitMessageFromServer) +InitMessageFromServer.thrift_spec = ( +) +fix_spec(all_structs) +del all_structs diff --git a/src/BHV_Block.py b/src/BHV_Block.py index 6478945..da21a51 100644 --- a/src/BHV_Block.py +++ b/src/BHV_Block.py @@ -1,20 +1,19 @@ -import service_pb2 as pb2 from src.IDecisionMaker import IDecisionMaker from src.IAgent import IAgent from pyrusgeom.soccer_math import * from pyrusgeom.geom_2d import * from src.Tools import Tools import pyrusgeom.soccer_math as smath - +from soccer.ttypes import LoggerLevel, PlayerAction, Body_GoToPoint, Neck_TurnToBall, DebugClient, GameModeType, ThriftVector2D class BHV_Block: def __init__(self): pass def execute(self, agent: IAgent): - agent.add_log_text(pb2.LoggerLevel.BLOCK, "start blocking") - if agent.wm.game_mode_type != pb2.GameModeType.PlayOn: - agent.add_log_text(pb2.LoggerLevel.BLOCK, f"is not play on {agent.wm.game_mode_type} {pb2.GameModeType.PlayOn}") + agent.add_log_text(LoggerLevel.BLOCK, "start blocking") + if agent.wm.game_mode_type != GameModeType.PlayOn: + agent.add_log_text(LoggerLevel.BLOCK, f"is not play on {agent.wm.game_mode_type} {GameModeType.PlayOn}") return False teammate_reach_steps = agent.wm.intercept_table.first_teammate_reach_steps @@ -22,7 +21,7 @@ def execute(self, agent: IAgent): our_reach_steps = min(teammate_reach_steps, self_reach_steps) opponent_reach_steps = agent.wm.intercept_table.first_opponent_reach_steps - agent.add_log_text(pb2.LoggerLevel.BLOCK, f"reach steps, tm: {teammate_reach_steps} " + agent.add_log_text(LoggerLevel.BLOCK, f"reach steps, tm: {teammate_reach_steps} " f"self: {self_reach_steps} opp: {opponent_reach_steps}") ball_pos = Vector2D(agent.wm.ball.position.x, agent.wm.ball.position.y) @@ -35,14 +34,14 @@ def execute(self, agent: IAgent): block_cycle = 1000 block_pos = Vector2D(0, 0) for unum in range(2, 12): - agent.add_log_text(pb2.LoggerLevel.BLOCK, f">> tm: {unum}") + agent.add_log_text(LoggerLevel.BLOCK, f">> tm: {unum}") if unum not in agent.wm.our_players_dict.keys(): - agent.add_log_text(pb2.LoggerLevel.BLOCK, f"### is not in out_player_dict") + agent.add_log_text(LoggerLevel.BLOCK, f"### is not in out_player_dict") continue tm = agent.wm.our_players_dict[unum] if tm.uniform_number < 1: - agent.add_log_text(pb2.LoggerLevel.BLOCK, f"### uniform id is less than 1") + agent.add_log_text(LoggerLevel.BLOCK, f"### uniform id is less than 1") continue tm_pos = Vector2D(tm.position.x, tm.position.y) tm_vel = Vector2D(tm.velocity.x, tm.velocity.y) @@ -59,11 +58,11 @@ def execute(self, agent: IAgent): blocker = unum block_pos = dribble_pos break - agent.add_log_text(pb2.LoggerLevel.BLOCK, f"### block cycle: {block_cycle}") - agent.add_log_text(pb2.LoggerLevel.BLOCK, f"### best blocker: {blocker}") - if blocker == agent.wm.self.uniform_number: - agent.add_action(pb2.PlayerAction(body_go_to_point=pb2.Body_GoToPoint(target_point=pb2.Vector2D(x=block_pos.x(), y=block_pos.y()), distance_threshold=0.5, max_dash_power=100))) - agent.add_action(pb2.PlayerAction(neck_turn_to_ball=pb2.Neck_TurnToBall())) - agent.add_action(pb2.PlayerAction(debug_client=pb2.DebugClient(message=f"blocker: {blocker}"))) + agent.add_log_text(LoggerLevel.BLOCK, f"### block cycle: {block_cycle}") + agent.add_log_text(LoggerLevel.BLOCK, f"### best blocker: {blocker}") + if blocker == agent.wm.myself.uniform_number: + agent.add_action(PlayerAction(body_go_to_point=Body_GoToPoint(target_point=ThriftVector2D(x=block_pos.x(), y=block_pos.y()), distance_threshold=0.5, max_dash_power=100))) + agent.add_action(PlayerAction(neck_turn_to_ball=Neck_TurnToBall())) + agent.add_action(PlayerAction(debug_client=DebugClient(message=f"blocker: {blocker}"))) return True return False diff --git a/src/DM_NoBall.py b/src/DM_NoBall.py index 0240437..e3d4cb8 100644 --- a/src/DM_NoBall.py +++ b/src/DM_NoBall.py @@ -1,10 +1,9 @@ -import service_pb2 as pb2 from src.IDecisionMaker import IDecisionMaker from src.IAgent import IAgent from pyrusgeom.soccer_math import * from pyrusgeom.geom_2d import * from src.BHV_Block import BHV_Block - +from soccer.ttypes import LoggerLevel, PlayerAction, Body_Intercept, Neck_TurnToBall, Body_GoToPoint, DebugClient, ThriftVector2D class NoBallDecisionMaker(IDecisionMaker): def __init__(self): @@ -17,22 +16,22 @@ def make_decision(self, agent: IAgent): opponent_reach_steps = agent.wm.intercept_table.first_opponent_reach_steps if our_reach_steps < opponent_reach_steps and self_reach_steps < teammate_reach_steps: - agent.add_action(pb2.PlayerAction(body_intercept=pb2.Body_Intercept(save_recovery=False, - face_point=pb2.Vector2D( x=agent.wm.ball.position.x, + agent.add_action(PlayerAction(body_intercept=Body_Intercept(save_recovery=False, + face_point=ThriftVector2D( x=agent.wm.ball.position.x, y=agent.wm.ball.position.y)))) - agent.add_action(pb2.PlayerAction(neck_turn_to_ball=pb2.Neck_TurnToBall())) + agent.add_action(PlayerAction(neck_turn_to_ball=Neck_TurnToBall())) return - pos = agent.get_strategy().getPosition(agent.wm.self.uniform_number) - agent.add_log_text(pb2.LoggerLevel.TEAM, f"opponent_reach_steps: {opponent_reach_steps} " + pos = agent.get_strategy().getPosition(agent.wm.myself.uniform_number) + agent.add_log_text(LoggerLevel.TEAM, f"opponent_reach_steps: {opponent_reach_steps} " f"our_reach_steps: {our_reach_steps}") if opponent_reach_steps < our_reach_steps: if BHV_Block().execute(agent): return - agent.add_action(pb2.PlayerAction(body_go_to_point=pb2.Body_GoToPoint(target_point=pb2.Vector2D(x=pos.x(), y=pos.y()), + agent.add_action(PlayerAction(body_go_to_point=Body_GoToPoint(target_point=ThriftVector2D(x=pos.x(), y=pos.y()), distance_threshold=1, max_dash_power=100))) - agent.add_action(pb2.PlayerAction(neck_turn_to_ball=pb2.Neck_TurnToBall())) - agent.add_action(pb2.PlayerAction(debug_client=pb2.DebugClient(message=f"go to : {pos.x()}, {pos.y()}"))) + agent.add_action(PlayerAction(neck_turn_to_ball=Neck_TurnToBall())) + agent.add_action(PlayerAction(debug_client=DebugClient(message=f"go to : {pos.x()}, {pos.y()}"))) \ No newline at end of file diff --git a/src/DM_PlayOn.py b/src/DM_PlayOn.py index 617c326..e642893 100644 --- a/src/DM_PlayOn.py +++ b/src/DM_PlayOn.py @@ -1,4 +1,3 @@ -import service_pb2 as pb2 from src.IDecisionMaker import IDecisionMaker from src.IAgent import IAgent from src.DM_WithBall import WithBallDecisionMaker @@ -12,7 +11,9 @@ def __init__(self): pass def make_decision(self, agent: IAgent): - if agent.wm.self.is_kickable: + if agent.wm.myself.is_kickable: + print("PlayOnDecisionMaker: is_kickable") self.withBallDecisionMaker.make_decision(agent) else: + print("PlayOnDecisionMaker: not is_kickable") self.noBallDecisionMaker.make_decision(agent) \ No newline at end of file diff --git a/src/DM_SetPlay.py b/src/DM_SetPlay.py index ac9bc03..cb30024 100644 --- a/src/DM_SetPlay.py +++ b/src/DM_SetPlay.py @@ -1,11 +1,11 @@ -import service_pb2 as pb2 from src.IDecisionMaker import IDecisionMaker from src.IAgent import IAgent +from soccer.ttypes import PlayerAction, Turn, WorldModel class SetPlayDecisionMaker(IDecisionMaker): def __init__(self): pass - def make_decision(self, agent: IAgent, wm: pb2.WorldModel): - agent.add_action(pb2.PlayerAction(turn=pb2.Turn(relative_direction=30.0))) \ No newline at end of file + def make_decision(self, agent: IAgent, wm: WorldModel): + agent.add_action(PlayerAction(turn=Turn(relative_direction=30.0))) \ No newline at end of file diff --git a/src/DM_WithBall.py b/src/DM_WithBall.py index b4876d7..d94b3f6 100644 --- a/src/DM_WithBall.py +++ b/src/DM_WithBall.py @@ -1,6 +1,5 @@ # from pyparsing import col from src.GEN_Dribble import GeneratorDribble -import service_pb2 as pb2 from src.IDecisionMaker import IDecisionMaker from src.IAgent import IAgent from pyrusgeom.soccer_math import * @@ -8,6 +7,7 @@ from src.GEN_Pass import GeneratorPass from src.IBallAction import BallAction import time +from soccer.ttypes import LoggerLevel, PlayerAction, Body_HoldBall, Neck_ScanField, Body_SmartKick, ThriftVector2D class WithBallDecisionMaker(IDecisionMaker): def __init__(self): @@ -24,12 +24,12 @@ def make_decision(self, agent: IAgent): candidate_actions += self.dribble_generator.generator(agent) if len(candidate_actions) == 0: - agent.add_action(pb2.PlayerAction(body_hold_ball=pb2.Body_HoldBall())) - agent.add_action(pb2.PlayerAction(neck_scan_field=pb2.Neck_ScanField())) + agent.add_action(PlayerAction(body_hold_ball=Body_HoldBall())) + agent.add_action(PlayerAction(neck_scan_field=Neck_ScanField())) return if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"candidate_actions: {candidate_actions}") + agent.add_log_text(LoggerLevel.PASS, f"candidate_actions: {candidate_actions}") candidate_actions.sort(key=lambda x: x.score, reverse=True) best_action = None @@ -48,13 +48,13 @@ def make_decision(self, agent: IAgent): WithBallDecisionMaker.count += 1 print(f"{agent.wm.cycle} {i} {len(candidate_actions)} {float(i) / len(candidate_actions)} {candidate.score} {end_time - start_time} {WithBallDecisionMaker.sum_time / WithBallDecisionMaker.count}") if best_action is None: - agent.add_action(pb2.PlayerAction(body_hold_ball=pb2.Body_HoldBall())) - agent.add_action(pb2.PlayerAction(neck_scan_field=pb2.Neck_ScanField())) + agent.add_action(PlayerAction(body_hold_ball=Body_HoldBall())) + agent.add_action(PlayerAction(neck_scan_field=Neck_ScanField())) return - agent.add_action(pb2.PlayerAction(body_smart_kick=pb2.Body_SmartKick( - target_point=pb2.Vector2D(x=best_action.targetBallPos.x(), y=best_action.targetBallPos.y()), + agent.add_action(PlayerAction(body_smart_kick=Body_SmartKick( + target_point=ThriftVector2D(x=best_action.targetBallPos.x(), y=best_action.targetBallPos.y()), first_speed=best_action.firstVelocity.r(), first_speed_threshold=0.0, max_steps=3))) - agent.add_action(pb2.PlayerAction(neck_scan_field=pb2.Neck_ScanField())) \ No newline at end of file + agent.add_action(PlayerAction(neck_scan_field=Neck_ScanField())) \ No newline at end of file diff --git a/src/DecisionMaker.py b/src/DecisionMaker.py index 4a2f1cb..7e94c3a 100644 --- a/src/DecisionMaker.py +++ b/src/DecisionMaker.py @@ -1,4 +1,4 @@ -import service_pb2 as pb2 +from soccer.ttypes import HeliosGoalie, HeliosPenalty, HeliosSetPlay, GameModeType, PlayerAction from src.IDecisionMaker import IDecisionMaker from src.DM_PlayOn import PlayOnDecisionMaker from src.DM_SetPlay import SetPlayDecisionMaker @@ -11,12 +11,17 @@ def __init__(self): self.setPlayDecisionMaker = SetPlayDecisionMaker() def make_decision(self, agent: IAgent): - if agent.wm.self.is_goalie: - agent.add_action(pb2.PlayerAction(helios_goalie=pb2.HeliosGoalie())) + if agent.wm.myself.is_goalie: + print("make_decision: is_goalie") + agent.add_action(PlayerAction(helios_goalie=HeliosGoalie())) else: - if agent.wm.game_mode_type == pb2.GameModeType.PlayOn: + print("make_decision: not is_goalie") + if agent.wm.game_mode_type == GameModeType.PlayOn: + print("make_decision: PlayOnDecisionMaker") self.playOnDecisionMaker.make_decision(agent) elif agent.wm.is_penalty_kick_mode: - agent.add_action(pb2.PlayerAction(helios_penalty=pb2.HeliosPenalty())) + print("make_decision: PenaltyKickDecisionMaker") + agent.add_action(PlayerAction(helios_penalty=HeliosPenalty())) else: - agent.add_action(pb2.PlayerAction(helios_set_play=pb2.HeliosSetPlay())) \ No newline at end of file + print("make_decision: SetPlayDecisionMaker") + agent.add_action(PlayerAction(helios_set_play=HeliosSetPlay())) \ No newline at end of file diff --git a/src/FormationStrategy.py b/src/FormationStrategy.py index 7be69f5..2e697ac 100644 --- a/src/FormationStrategy.py +++ b/src/FormationStrategy.py @@ -1,8 +1,8 @@ -import service_pb2 as pb2 from src.IPositionStrategy import IPositionStrategy from src.delaunay_triangulation import * from enum import Enum from pyrusgeom.soccer_math import * +from soccer.ttypes import WorldModel class Situation(Enum): OurSetPlay_Situation = 0, @@ -25,7 +25,7 @@ def __init__(self): self.current_situation = Situation.Offense_Situation self.current_formation = self.offense_formation - def update(self, wm: pb2.WorldModel): + def update(self, wm: WorldModel): tm_min = wm.intercept_table.first_teammate_reach_steps opp_min = wm.intercept_table.first_opponent_reach_steps self_min = wm.intercept_table.self_reach_steps @@ -39,7 +39,7 @@ def update(self, wm: pb2.WorldModel): thr = 0 if ball_pos.x() > 0: thr += 1 - if wm.self.uniform_number > 6: + if wm.myself.uniform_number > 6: thr += 1 if min(tm_min, self_min) < opp_min + thr: self.current_situation = Situation.Offense_Situation diff --git a/src/GEN_Dribble.py b/src/GEN_Dribble.py index bb945a1..6841315 100644 --- a/src/GEN_Dribble.py +++ b/src/GEN_Dribble.py @@ -5,7 +5,7 @@ from src.IBallActionGenerator import BallActionGenerator from src.Tools import Tools -from service_pb2 import WorldModel +from soccer.ttypes import WorldModel debug_dribble = False max_dribble_time = 0 @@ -40,19 +40,19 @@ def generate_simple_dribble(self, agent: IAgent): angle_step = 360.0 / angle_div sp = agent.serverParams - ptype = agent.get_type(wm.self.type_id) + ptype = agent.get_type(wm.myself.type_id) - my_first_speed = Tools.vector2d_message_to_vector2d(wm.self.velocity).r() + my_first_speed = Tools.vector2d_message_to_vector2d(wm.myself.velocity).r() for a in range(angle_div): - dash_angle = AngleDeg(wm.self.body_direction + (angle_step * a)) + dash_angle = AngleDeg(wm.myself.body_direction + (angle_step * a)) - if wm.self.position.x < 16.0 and dash_angle.abs() > 100.0: + if wm.myself.position.x < 16.0 and dash_angle.abs() > 100.0: # if debug_dribble: # log.sw_log().dribble().add_text( '#dash angle:{} cancel is not safe1'.format(dash_angle)) continue - if wm.self.position.x < -36.0 and abs(wm.self.position.y) < 20.0 and dash_angle.abs() > 45.0: + if wm.myself.position.x < -36.0 and abs(wm.myself.position.y) < 20.0 and dash_angle.abs() > 45.0: # if debug_dribble: # log.sw_log().dribble().add_text( '#dash angle:{} cancel is not safe2'.format(dash_angle)) continue @@ -92,7 +92,7 @@ def simulate_kick_turns_dashes(self, agent: IAgent, dash_angle, n_turn): # if debug_dribble: # log.sw_log().dribble().add_text( '##self_cache:{}'.format(self_cache)) sp = agent.serverParams - ptype = agent.get_type(wm.self.type_id) + ptype = agent.get_type(wm.myself.type_id) # trap_rel = Vector2D.polar2vector(ptype.playerSize() + ptype.kickableMargin() * 0.2 + SP.ball_size(), dash_angle) trap_rel = Vector2D.polar2vector(ptype.player_size + ptype.kickable_margin * 0.2 + 0, dash_angle) @@ -117,7 +117,7 @@ def simulate_kick_turns_dashes(self, agent: IAgent, dash_angle, n_turn): term = (1.0 - pow(sp.ball_decay, 1 + n_turn + n_dash ) ) / (1.0 - sp.ball_decay) first_vel: Vector2D = (ball_trap_pos - ball_pos) / term kick_accel: Vector2D = first_vel - ball_vel - kick_power = kick_accel.r() / wm.self.kick_rate + kick_power = kick_accel.r() / wm.myself.kick_rate if kick_power > sp.max_power or kick_accel.r2() > pow(sp.ball_accel_max, 2) or first_vel.r2() > pow( sp.ball_speed_max, 2): @@ -140,7 +140,7 @@ def simulate_kick_turns_dashes(self, agent: IAgent, dash_angle, n_turn): candidate.actionType = ActionType.DRIBBLE candidate.initBallPos = Tools.vector2d_message_to_vector2d(wm.ball.position) candidate.targetBallPos = ball_trap_pos - candidate.targetUnum = wm.self.uniform_number + candidate.targetUnum = wm.myself.uniform_number candidate.firstVelocity = first_vel candidate.index = self.index candidate.dribble_steps = n_turn + n_dash + 1 @@ -163,14 +163,14 @@ def simulate_kick_turns_dashes(self, agent: IAgent, dash_angle, n_turn): def create_self_cache(self, agent: IAgent, dash_angle, n_turn, n_dash, self_cache): wm = agent.wm sp = agent.serverParams - ptype = agent.get_type(wm.self.type_id) + ptype = agent.get_type(wm.myself.type_id) self_cache.clear() - # stamina_model = wm.self().stamina_model() + # stamina_model = wm.myself().stamina_model() - my_pos = Tools.vector2d_message_to_vector2d(wm.self.position) - my_vel = Tools.vector2d_message_to_vector2d(wm.self.velocity) + my_pos = Tools.vector2d_message_to_vector2d(wm.myself.position) + my_vel = Tools.vector2d_message_to_vector2d(wm.myself.velocity) my_pos += my_vel my_vel *= ptype.player_decay diff --git a/src/GEN_Pass.py b/src/GEN_Pass.py index bf7193f..3f5f0f9 100644 --- a/src/GEN_Pass.py +++ b/src/GEN_Pass.py @@ -1,17 +1,17 @@ from src.IBallActionGenerator import BallActionGenerator from src.IAgent import IAgent -import service_pb2 as pb2 import pyrusgeom.soccer_math as smath from pyrusgeom.soccer_math import * from pyrusgeom.geom_2d import * from src.Tools import Tools from src.IBallAction import BallAction, ActionType, PassAction - +from src import IBallAction +from soccer.ttypes import LoggerLevel, Player, TeammateMessage, GameModeType, ServerParam class GeneratorPass(BallActionGenerator): def __init__(self): super().__init__() - self.receivers: pb2.TeammateMessage = [] + self.receivers: TeammateMessage = [] self.index = 0 def generate(self, agent: IAgent, init_index: int = 0): @@ -22,64 +22,64 @@ def generate(self, agent: IAgent, init_index: int = 0): self.update_receiver(agent) self.generate_pass(agent) if agent.debug_mode: - self.log_debug(agent, pb2.LoggerLevel.PASS) + self.log_debug(agent, LoggerLevel.PASS) return self.candidateActions def update_receiver(self, agent: IAgent): if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, "update_receiver") + agent.add_log_text(LoggerLevel.PASS, "update_receiver") for tm in agent.wm.teammates: - if tm.uniform_number == agent.wm.self.uniform_number: + if tm.uniform_number == agent.wm.myself.uniform_number: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"-- {tm.uniform_number} is me") + agent.add_log_text(LoggerLevel.PASS, f"-- {tm.uniform_number} is me") continue if tm.uniform_number < 0: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"-- {tm.uniform_number} unum is less than 0") + agent.add_log_text(LoggerLevel.PASS, f"-- {tm.uniform_number} unum is less than 0") continue if tm.pos_count > 10: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"-- {tm.uniform_number} pos_count is more than 10") + agent.add_log_text(LoggerLevel.PASS, f"-- {tm.uniform_number} pos_count is more than 10") continue if tm.is_tackling: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"-- {tm.uniform_number} is tackling") + agent.add_log_text(LoggerLevel.PASS, f"-- {tm.uniform_number} is tackling") continue if tm.position.x > agent.wm.offside_line_x: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"-- {tm.uniform_number} is offside") + agent.add_log_text(LoggerLevel.PASS, f"-- {tm.uniform_number} is offside") continue if tm.is_goalie and tm.position.x < -30: # todo server param ourPenaltyAreaLineX if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"-- {tm.uniform_number} is goalie and in danger area") + agent.add_log_text(LoggerLevel.PASS, f"-- {tm.uniform_number} is goalie and in danger area") continue if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"-- {tm.uniform_number} is ok") + agent.add_log_text(LoggerLevel.PASS, f"-- {tm.uniform_number} is ok") self.receivers.append(tm) def generate_pass(self, agent: IAgent): if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, "generate_pass") + agent.add_log_text(LoggerLevel.PASS, "generate_pass") for tm in self.receivers: self.generate_direct_pass(agent, tm) for tm in self.receivers: self.generate_lead_pass(agent, tm) - def generate_direct_pass(self, agent: IAgent, tm: pb2.Player): + def generate_direct_pass(self, agent: IAgent, tm: Player): direct_pass = PassAction() direct_pass.actionType = ActionType.DIRECT_PASS - direct_pass.initUnum = agent.wm.self.uniform_number + direct_pass.initUnum = agent.wm.myself.uniform_number direct_pass.targetUnum = tm.uniform_number direct_pass.initBallPos = Vector2D(agent.wm.ball.position.x, agent.wm.ball.position.y) direct_pass.targetBallPos = Vector2D(tm.position.x, tm.position.y) direct_pass.evaluate() self.candidateActions.append(direct_pass) - def generate_lead_pass(self, agent: IAgent, tm: pb2.Player): + def generate_lead_pass(self, agent: IAgent, tm: Player): tm_pos = Vector2D(tm.position.x, tm.position.y) ball_pos = Vector2D(agent.wm.ball.position.x, agent.wm.ball.position.y) tm_vel = Vector2D(tm.velocity.x, tm.velocity.y) @@ -96,7 +96,7 @@ def generate_lead_pass(self, agent: IAgent, tm: pb2.Player): receive_point = tm_pos + tm_vel + Vector2D.from_polar(player_move_dist, angle) lead_pass = PassAction() lead_pass.actionType = ActionType.LEAD_PASS - lead_pass.initUnum = agent.wm.self.uniform_number + lead_pass.initUnum = agent.wm.myself.uniform_number lead_pass.targetUnum = tm.uniform_number lead_pass.initBallPos = Vector2D(agent.wm.ball.position.x, agent.wm.ball.position.y) lead_pass.targetBallPos = Vector2D(receive_point.x(), receive_point.y()) @@ -104,9 +104,9 @@ def generate_lead_pass(self, agent: IAgent, tm: pb2.Player): self.candidateActions.append(lead_pass) - def generate_lead_pass2(self, agent: IAgent, tm: pb2.Player): + def generate_lead_pass2(self, agent: IAgent, tm: Player): if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f">> generate_lead_pass to {tm.uniform_number}") + agent.add_log_text(LoggerLevel.PASS, f">> generate_lead_pass to {tm.uniform_number}") sp = agent.serverParams our_goal_dist_thr2 = pow(16.0, 2) min_receive_step = 4 @@ -123,7 +123,7 @@ def generate_lead_pass2(self, agent: IAgent, tm: pb2.Player): if tm_pos.dist(ball_pos) > max_player_distance: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"## FAILED tm_pos is too far") + agent.add_log_text(LoggerLevel.PASS, f"## FAILED tm_pos is too far") return abgle_divs = 8 @@ -132,8 +132,8 @@ def generate_lead_pass2(self, agent: IAgent, tm: pb2.Player): dist_step = 1.1 ptype = agent.get_type(tm.type_id) - max_ball_speed = agent.wm.self.kick_rate * sp.max_power - if agent.wm.game_mode_type == pb2.GameModeType.PlayOn: + max_ball_speed = agent.wm.myself.kick_rate * sp.max_power + if agent.wm.game_mode_type == GameModeType.PlayOn: max_ball_speed = sp.ball_speed_max min_ball_speed = agent.get_type(0).real_speed_max @@ -159,33 +159,33 @@ def generate_lead_pass2(self, agent: IAgent, tm: pb2.Player): or receive_point.x() < -sp.pitch_half_length + 5.0 \ or receive_point.abs_y() > sp.pitch_half_width - 3.0: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"## FAILED receive_point is out of field") + agent.add_log_text(LoggerLevel.PASS, f"## FAILED receive_point is out of field") continue if receive_point.x() < ball_pos.x() \ and receive_point.dist2(our_goal) < our_goal_dist_thr2: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"## FAILED receive_point is near our goal") + agent.add_log_text(LoggerLevel.PASS, f"## FAILED receive_point is near our goal") continue - if agent.wm.game_mode_type == pb2.GameModeType.GoalKick_ \ + if agent.wm.game_mode_type == GameModeType.GoalKick_ \ and receive_point.x() < sp.our_penalty_area_line_x + 1.0 \ and receive_point.abs_y() < sp.penalty_area_half_width + 1.0: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"## FAILED receive_point is in penalty area in goal kick mode") + agent.add_log_text(LoggerLevel.PASS, f"## FAILED receive_point is in penalty area in goal kick mode") return ball_move_dist = ball_pos.dist(receive_point) if ball_move_dist < min_leading_pass_dist or max_leading_pass_dist < ball_move_dist: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"## FAILED ball_move_dist is out of range") + agent.add_log_text(LoggerLevel.PASS, f"## FAILED ball_move_dist is out of range") continue nearest_receiver = Tools.get_nearest_teammate(agent, receive_point) if nearest_receiver.uniform_number != tm.uniform_number: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"## FAILED nearest_receiver is not tm") + agent.add_log_text(LoggerLevel.PASS, f"## FAILED nearest_receiver is not tm") continue receiver_step = self.predict_receiver_reach_step(agent, tm, receive_point, 'L') + move_dist_penalty_step @@ -198,7 +198,7 @@ def generate_lead_pass2(self, agent: IAgent, tm: pb2.Player): max_step = max(max_receive_step, start_step + 3) # else if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f">>>> LPass to {tm.uniform_number} ({round(tm_pos.x(), 2)}, {round(tm_pos.y(), 2)}) -> ({round(receive_point.x(), 2)}, {round(receive_point.y(), 2)}) start_step: {start_step}, max_step: {max_step}") + agent.add_log_text(LoggerLevel.PASS, f">>>> LPass to {tm.uniform_number} ({round(tm_pos.x(), 2)}, {round(tm_pos.y(), 2)}) -> ({round(receive_point.x(), 2)}, {round(receive_point.y(), 2)}) start_step: {start_step}, max_step: {max_step}") max_step = start_step + 3 self.create_pass(agent, tm, receive_point, start_step, max_step, min_ball_speed, @@ -206,7 +206,7 @@ def generate_lead_pass2(self, agent: IAgent, tm: pb2.Player): max_receive_ball_speed, ball_move_dist, ball_move_angle, "L") - def create_pass(self, agent: IAgent, receiver: pb2.Player, receive_point: Vector2D, + def create_pass(self, agent: IAgent, receiver: Player, receive_point: Vector2D, min_step, max_step, min_first_ball_speed, max_first_ball_speed, min_receive_ball_speed, max_receive_ball_speed, ball_move_dist, ball_move_angle: AngleDeg, description): @@ -216,19 +216,19 @@ def create_pass(self, agent: IAgent, receiver: pb2.Player, receive_point: Vector for step in range(min_step, max_step + 1): same_index += 1 if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f">>>>>> #{self.index} Pass to {receiver.uniform_number} ({round(receive_point.x(), 2)}, {round(receive_point.y(), 2)}), step:{step}") + agent.add_log_text(LoggerLevel.PASS, f">>>>>> #{self.index} Pass to {receiver.uniform_number} ({round(receive_point.x(), 2)}, {round(receive_point.y(), 2)}), step:{step}") self.index += 1 first_ball_speed = smath.calc_first_term_geom_series(ball_move_dist, sp.ball_decay, step) if first_ball_speed < min_first_ball_speed: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"###### FAILED to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} ? first ball speed is low") + agent.add_log_text(LoggerLevel.PASS, f"###### FAILED to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} ? first ball speed is low") self.debug_list.append((self.index, receive_point, False, same_index)) break if max_first_ball_speed < first_ball_speed: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"###### FAILED to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} ? first ball speed is high") + agent.add_log_text(LoggerLevel.PASS, f"###### FAILED to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} ? first ball speed is high") self.debug_list.append((self.index, receive_point, False, same_index)) continue @@ -236,17 +236,17 @@ def create_pass(self, agent: IAgent, receiver: pb2.Player, receive_point: Vector if receive_ball_speed < min_receive_ball_speed: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"###### FAILED to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} rball_speed:{receive_ball_speed} ? receive ball speed is low") + agent.add_log_text(LoggerLevel.PASS, f"###### FAILED to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} rball_speed:{receive_ball_speed} ? receive ball speed is low") self.debug_list.append((self.index, receive_point, False, same_index)) break if max_receive_ball_speed < receive_ball_speed: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"###### FAILED to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} rball_speed:{receive_ball_speed} ? receive ball speed is high") + agent.add_log_text(LoggerLevel.PASS, f"###### FAILED to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} rball_speed:{receive_ball_speed} ? receive ball speed is high") self.debug_list.append((self.index, receive_point, False, same_index)) continue - kick_count = Tools.predict_kick_count(agent, agent.wm.self.uniform_number, first_ball_speed, ball_move_angle) + kick_count = Tools.predict_kick_count(agent, agent.wm.myself.uniform_number, first_ball_speed, ball_move_angle) o_step, o_unum, o_intercepted_pos = self.predict_opponents_reach_step(agent, ball_pos, first_ball_speed, ball_move_angle, @@ -262,11 +262,11 @@ def create_pass(self, agent: IAgent, receiver: pb2.Player, receive_point: Vector failed = True if failed: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"###### Failed to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} rball_speed:{receive_ball_speed} opp {o_unum} step {o_step} max_step {max_step} ? opp reach step is low") + agent.add_log_text(LoggerLevel.PASS, f"###### Failed to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} rball_speed:{receive_ball_speed} opp {o_unum} step {o_step} max_step {max_step} ? opp reach step is low") self.debug_list.append((self.index, receive_point, False, same_index)) break if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"###### OK to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} rball_speed:{receive_ball_speed} opp {o_unum} step {o_step}, max_step {max_step}") + agent.add_log_text(LoggerLevel.PASS, f"###### OK to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} rball_speed:{receive_ball_speed} opp {o_unum} step {o_step}, max_step {max_step}") self.debug_list.append((self.index, receive_point, True, same_index)) candidate = IBallAction() @@ -288,7 +288,7 @@ def create_pass(self, agent: IAgent, receiver: pb2.Player, receive_point: Vector if min_step + 3 <= step: break - def predict_receiver_reach_step(self, agent: IAgent, receiver: pb2.Player, pos: Vector2D, pass_type): + def predict_receiver_reach_step(self, agent: IAgent, receiver: Player, pos: Vector2D, pass_type): ptype = agent.get_type(receiver.type_id) receiver_pos = Vector2D(receiver.position.x, receiver.position.y) receiver_vel = Vector2D(receiver.velocity.x, receiver.velocity.y) @@ -329,7 +329,7 @@ def predict_opponents_reach_step(self, agent: IAgent, first_ball_pos: Vector2D, step, intercepted_pos = Tools.predict_opponent_reach_step(agent, opp, first_ball_pos, first_ball_vel, ball_move_angle, receive_point, max_cycle, description) if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"------ Opp {opp.uniform_number} step {step} min_step {min_step} in {intercepted_pos}") + agent.add_log_text(LoggerLevel.PASS, f"------ Opp {opp.uniform_number} step {step} min_step {min_step} in {intercepted_pos}") if step < min_step: min_step = step min_opp = opp.uniform_number diff --git a/src/IAgent.py b/src/IAgent.py index 788c4dc..a7d38f2 100644 --- a/src/IAgent.py +++ b/src/IAgent.py @@ -1,27 +1,28 @@ from typing import Union from abc import ABC, abstractmethod -import service_pb2 as pb2 from src.IPositionStrategy import IPositionStrategy from typing import Union +from soccer.ttypes import PlayerAction, PlayerActions, CoachAction, TrainerAction, ServerParam, PlayerParam, PlayerType, Log, AddText, AddMessage, AddCircle, ThriftVector2D, LoggerLevel +from soccer.ttypes import WorldModel class IAgent(ABC): def __init__(self) -> None: super().__init__() - self.wm: Union[pb2.WorldModel, None] = None - self.actions: list[pb2.PlayerAction] = [] - self.serverParams: Union[pb2.ServerParam, None] = None - self.playerParams: Union[pb2.PlayerParam, None] = None - self.playerTypes: Union[pb2.PlayerType, dict[pb2.PlayerType]] = {} + self.wm: Union[WorldModel, None] = None + self.actions: list[PlayerAction] = [] + self.serverParams: Union[ServerParam, None] = None + self.playerParams: Union[PlayerParam, None] = None + self.playerTypes: Union[PlayerType, dict[PlayerType]] = {} self.debug_mode: bool = False - def get_type(self, id: int) -> pb2.PlayerType: + def get_type(self, id: int) -> PlayerType: if id < 0: id = 0 return self.playerTypes[id] @abstractmethod - def get_actions(self, wm: pb2.WorldModel) -> pb2.PlayerActions: + def get_actions(self, wm: WorldModel) -> PlayerActions: pass # @abstractmethod @@ -44,41 +45,41 @@ def set_debug_mode(self, debug_mode: bool): # } # } - def add_log_text(self, level: pb2.LoggerLevel, message: str): + def add_log_text(self, level: LoggerLevel, message: str): if not self.debug_mode: return - self.add_action(pb2.PlayerAction( - log=pb2.Log( - add_text=pb2.AddText( + self.add_action(PlayerAction( + log=Log( + add_text=AddText( level=level, message=message ) ) )) - def add_log_message(self, level: pb2.LoggerLevel, message: str, x, y, color): + def add_log_message(self, level: LoggerLevel, message: str, x, y, color): if not self.debug_mode: return - self.add_action(pb2.PlayerAction( - log=pb2.Log( - add_message=pb2.AddMessage( + self.add_action(PlayerAction( + log=Log( + add_message=AddMessage( level=level, message=message, - position=pb2.Vector2D(x=x, y=y), + position=ThriftVector2D(x=x, y=y), color=color, ) ) )) - def add_log_circle(self, level: pb2.LoggerLevel, center_x: float, center_y: float, radius: float, color: str, + def add_log_circle(self, level: LoggerLevel, center_x: float, center_y: float, radius: float, color: str, fill: bool): if not self.debug_mode: return - self.add_action(pb2.PlayerAction( - log=pb2.Log( - add_circle=pb2.AddCircle( + self.add_action(PlayerAction( + log=Log( + add_circle=AddCircle( level=level, - center=pb2.Vector2D(x=center_x, y=center_y), + center=ThriftVector2D(x=center_x, y=center_y), radius=radius, color=color, fill=fill @@ -86,5 +87,5 @@ def add_log_circle(self, level: pb2.LoggerLevel, center_x: float, center_y: floa ) )) - def add_action(self, actions: Union[pb2.PlayerAction, pb2.CoachAction, pb2.TrainerAction]): + def add_action(self, actions: Union[PlayerAction, CoachAction, TrainerAction]): self.actions.append(actions) diff --git a/src/IBallAction.py b/src/IBallAction.py index 16d71c5..49302fb 100644 --- a/src/IBallAction.py +++ b/src/IBallAction.py @@ -4,9 +4,10 @@ from pyrusgeom.geom_2d import * from enum import Enum from src.IAgent import IAgent -import service_pb2 as pb2 import pyrusgeom.soccer_math as smath from src.Tools import Tools +from soccer.ttypes import HeliosGoalie, HeliosPenalty, HeliosSetPlay, GameModeType, PlayerAction +from soccer.ttypes import PlayerType, LoggerLevel, ThriftVector2D, LoggerLevel, Player class ActionType(Enum): @@ -64,6 +65,12 @@ def check_possibility(self, agent: IAgent) -> None: ball_move_angle:AngleDeg = (ball_trap_pos - Tools.vector2d_message_to_vector2d(wm.ball.position)).th() for o in range(12): + if wm.their_players_dict is None: + continue + if wm.their_players_dict.keys() is None: + continue + if o not in wm.their_players_dict.keys(): + continue opp = wm.their_players_dict[o] if opp is None or opp.uniform_number == 0: # if debug_dribble: @@ -161,7 +168,7 @@ def check_possibility(self, agent: IAgent) -> None: def check_direct_pass(self, agent: IAgent) -> None: tm = agent.wm.our_players_dict[self.targetUnum] sp = agent.serverParams - player_type: pb2.PlayerType = agent.get_type(tm.type_id) + player_type: PlayerType = agent.get_type(tm.type_id) min_receive_step = 3 max_direct_pass_dist = 0.8 * smath.inertia_final_distance(sp.ball_speed_max, sp.ball_decay) max_receive_ball_speed = sp.ball_speed_max * pow(sp.ball_decay, min_receive_step) @@ -172,17 +179,17 @@ def check_direct_pass(self, agent: IAgent) -> None: or self.targetBallPos.x() < -sp.pitch_half_length + 5.0 \ or self.targetBallPos.abs_y() > sp.pitch_half_width - 1.5: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"## FAILED tm_pos is out of field") + agent.add_log_text(LoggerLevel.PASS, f"## FAILED tm_pos is out of field") return # TODO sp.ourTeamGoalPos() if self.targetBallPos.x() < agent.wm.ball.position.x + 1.0 \ and self.targetBallPos.dist(Vector2D(-52.5, 0)) < 18.0: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"## FAILED tm_pos is near our goal") + agent.add_log_text(LoggerLevel.PASS, f"## FAILED tm_pos is near our goal") return - max_ball_speed = agent.wm.self.kick_rate * sp.max_power - if agent.wm.game_mode_type == pb2.GameModeType.PlayOn: + max_ball_speed = agent.wm.myself.kick_rate * sp.max_power + if agent.wm.game_mode_type == GameModeType.PlayOn: max_ball_speed = sp.ball_speed_max # TODO SP.defaultRealSpeedMax() @@ -193,14 +200,14 @@ def check_direct_pass(self, agent: IAgent) -> None: if ball_move_dist < min_direct_pass_dist or max_direct_pass_dist < ball_move_dist: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"## FAILED ball_move_dist is out of range") + agent.add_log_text(LoggerLevel.PASS, f"## FAILED ball_move_dist is out of range") return - if agent.wm.game_mode_type == pb2.GameModeType.GoalKick_ \ + if agent.wm.game_mode_type == GameModeType.GoalKick_ \ and receive_point.x() < sp.our_penalty_area_line_x + 1.0 \ and receive_point.abs_y() < sp.penalty_area_half_width + 1.0: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"## FAILED receive_point is in penalty area in goal kick mode") + agent.add_log_text(LoggerLevel.PASS, f"## FAILED receive_point is in penalty area in goal kick mode") return max_receive_ball_speed = min(max_receive_ball_speed, player_type.kickable_area + ( @@ -214,7 +221,7 @@ def check_direct_pass(self, agent: IAgent) -> None: start_step = max(max(min_receive_step, min_ball_step), 0) max_step = start_step + 2 if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f">>>> DPass to {tm.uniform_number} ({round(tm.position.x(), 2)}, {round(tm.position.y(), 2)}) -> ({round(receive_point.x(), 2)}, {round(receive_point.y(), 2)}) start_step: {start_step}, max_step: {max_step}") + agent.add_log_text(LoggerLevel.PASS, f">>>> DPass to {tm.uniform_number} ({round(tm.position.x(), 2)}, {round(tm.position.y(), 2)}) -> ({round(receive_point.x(), 2)}, {round(receive_point.y(), 2)}) start_step: {start_step}, max_step: {max_step}") self.create_pass(agent, tm, receive_point, start_step, max_step, min_ball_speed, @@ -238,12 +245,12 @@ def check_lead_pass(self, agent: IAgent) -> None: if tm_pos.dist(ball_pos) > max_player_distance: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"## FAILED tm_pos is too far") + agent.add_log_text(LoggerLevel.PASS, f"## FAILED tm_pos is too far") return ptype = agent.get_type(tm.type_id) - max_ball_speed = agent.wm.self.kick_rate * sp.max_power - if agent.wm.game_mode_type == pb2.GameModeType.PlayOn: + max_ball_speed = agent.wm.myself.kick_rate * sp.max_power + if agent.wm.game_mode_type == GameModeType.PlayOn: max_ball_speed = sp.ball_speed_max min_ball_speed = agent.get_type(0).real_speed_max @@ -263,33 +270,33 @@ def check_lead_pass(self, agent: IAgent) -> None: or receive_point.x() < -sp.pitch_half_length + 5.0 \ or receive_point.abs_y() > sp.pitch_half_width - 3.0: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"## FAILED receive_point is out of field") + agent.add_log_text(LoggerLevel.PASS, f"## FAILED receive_point is out of field") return if receive_point.x() < ball_pos.x() \ and receive_point.dist2(our_goal) < our_goal_dist_thr2: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"## FAILED receive_point is near our goal") + agent.add_log_text(LoggerLevel.PASS, f"## FAILED receive_point is near our goal") return - if agent.wm.game_mode_type == pb2.GameModeType.GoalKick_ \ + if agent.wm.game_mode_type == GameModeType.GoalKick_ \ and receive_point.x() < sp.our_penalty_area_line_x + 1.0 \ and receive_point.abs_y() < sp.penalty_area_half_width + 1.0: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"## FAILED receive_point is in penalty area in goal kick mode") + agent.add_log_text(LoggerLevel.PASS, f"## FAILED receive_point is in penalty area in goal kick mode") return ball_move_dist = ball_pos.dist(receive_point) if ball_move_dist < min_leading_pass_dist or max_leading_pass_dist < ball_move_dist: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"## FAILED ball_move_dist is out of range") + agent.add_log_text(LoggerLevel.PASS, f"## FAILED ball_move_dist is out of range") return nearest_receiver = Tools.get_nearest_teammate(agent, receive_point) if nearest_receiver.uniform_number != tm.uniform_number: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"## FAILED nearest_receiver is not tm") + agent.add_log_text(LoggerLevel.PASS, f"## FAILED nearest_receiver is not tm") return receiver_step = self.predict_receiver_reach_step(agent, tm, receive_point, 'L') + move_dist_penalty_step @@ -302,7 +309,7 @@ def check_lead_pass(self, agent: IAgent) -> None: max_step = max(max_receive_step, start_step + 3) # else if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f">>>> LPass to {tm.uniform_number} ({round(tm_pos.x(), 2)}, {round(tm_pos.y(), 2)}) -> ({round(receive_point.x(), 2)}, {round(receive_point.y(), 2)}) start_step: {start_step}, max_step: {max_step}") + agent.add_log_text(LoggerLevel.PASS, f">>>> LPass to {tm.uniform_number} ({round(tm_pos.x(), 2)}, {round(tm_pos.y(), 2)}) -> ({round(receive_point.x(), 2)}, {round(receive_point.y(), 2)}) start_step: {start_step}, max_step: {max_step}") max_step = start_step + 3 self.create_pass(agent, tm, receive_point, start_step, max_step, min_ball_speed, @@ -310,7 +317,7 @@ def check_lead_pass(self, agent: IAgent) -> None: max_receive_ball_speed, ball_move_dist, ball_move_angle, "L") - def create_pass(self, agent: IAgent, receiver: pb2.Player, receive_point: Vector2D, + def create_pass(self, agent: IAgent, receiver: Player, receive_point: Vector2D, min_step, max_step, min_first_ball_speed, max_first_ball_speed, min_receive_ball_speed, max_receive_ball_speed, ball_move_dist, ball_move_angle: AngleDeg, description): @@ -320,19 +327,19 @@ def create_pass(self, agent: IAgent, receiver: pb2.Player, receive_point: Vector for step in range(min_step, max_step + 1): same_index += 1 if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f">>>>>> #{self.index} Pass to {receiver.uniform_number} ({round(receive_point.x(), 2)}, {round(receive_point.y(), 2)}), step:{step}") + agent.add_log_text(LoggerLevel.PASS, f">>>>>> #{self.index} Pass to {receiver.uniform_number} ({round(receive_point.x(), 2)}, {round(receive_point.y(), 2)}), step:{step}") self.index += 1 first_ball_speed = smath.calc_first_term_geom_series(ball_move_dist, sp.ball_decay, step) if first_ball_speed < min_first_ball_speed: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"###### FAILED to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} ? first ball speed is low") + agent.add_log_text(LoggerLevel.PASS, f"###### FAILED to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} ? first ball speed is low") # self.debug_list.append((self.index, receive_point, False, same_index)) break if max_first_ball_speed < first_ball_speed: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"###### FAILED to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} ? first ball speed is high") + agent.add_log_text(LoggerLevel.PASS, f"###### FAILED to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} ? first ball speed is high") # self.debug_list.append((self.index, receive_point, False, same_index)) continue @@ -340,17 +347,17 @@ def create_pass(self, agent: IAgent, receiver: pb2.Player, receive_point: Vector if receive_ball_speed < min_receive_ball_speed: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"###### FAILED to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} rball_speed:{receive_ball_speed} ? receive ball speed is low") + agent.add_log_text(LoggerLevel.PASS, f"###### FAILED to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} rball_speed:{receive_ball_speed} ? receive ball speed is low") # self.debug_list.append((self.index, receive_point, False, same_index)) break if max_receive_ball_speed < receive_ball_speed: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"###### FAILED to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} rball_speed:{receive_ball_speed} ? receive ball speed is high") + agent.add_log_text(LoggerLevel.PASS, f"###### FAILED to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} rball_speed:{receive_ball_speed} ? receive ball speed is high") # self.debug_list.append((self.index, receive_point, False, same_index)) continue - kick_count = Tools.predict_kick_count(agent, agent.wm.self.uniform_number, first_ball_speed, ball_move_angle) + kick_count = Tools.predict_kick_count(agent, agent.wm.myself.uniform_number, first_ball_speed, ball_move_angle) o_step, o_unum, o_intercepted_pos = self.predict_opponents_reach_step(agent, ball_pos, first_ball_speed, ball_move_angle, @@ -366,11 +373,11 @@ def create_pass(self, agent: IAgent, receiver: pb2.Player, receive_point: Vector failed = True if failed: if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"###### Failed to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} rball_speed:{receive_ball_speed} opp {o_unum} step {o_step} max_step {max_step} ? opp reach step is low") + agent.add_log_text(LoggerLevel.PASS, f"###### Failed to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} rball_speed:{receive_ball_speed} opp {o_unum} step {o_step} max_step {max_step} ? opp reach step is low") # self.debug_list.append((self.index, receive_point, False, same_index)) break if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"###### OK to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} rball_speed:{receive_ball_speed} opp {o_unum} step {o_step}, max_step {max_step}") + agent.add_log_text(LoggerLevel.PASS, f"###### OK to {receiver.uniform_number} step:{step} ball_speed:{first_ball_speed} rball_speed:{receive_ball_speed} opp {o_unum} step {o_step}, max_step {max_step}") # self.debug_list.append((self.index, receive_point, True, same_index)) self.initBallPos = ball_pos @@ -388,7 +395,7 @@ def create_pass(self, agent: IAgent, receiver: pb2.Player, receive_point: Vector if min_step + 3 <= step: break - def predict_receiver_reach_step(self, agent: IAgent, receiver: pb2.Player, pos: Vector2D, pass_type): + def predict_receiver_reach_step(self, agent: IAgent, receiver: Player, pos: Vector2D, pass_type): ptype = agent.get_type(receiver.type_id) receiver_pos = Vector2D(receiver.position.x, receiver.position.y) receiver_vel = Vector2D(receiver.velocity.x, receiver.velocity.y) @@ -429,7 +436,7 @@ def predict_opponents_reach_step(self, agent: IAgent, first_ball_pos: Vector2D, step, intercepted_pos = Tools.predict_opponent_reach_step(agent, opp, first_ball_pos, first_ball_vel, ball_move_angle, receive_point, max_cycle, description) if agent.debug_mode: - agent.add_log_text(pb2.LoggerLevel.PASS, f"------ Opp {opp.uniform_number} step {step} min_step {min_step} in {intercepted_pos}") + agent.add_log_text(LoggerLevel.PASS, f"------ Opp {opp.uniform_number} step {step} min_step {min_step} in {intercepted_pos}") if step < min_step: min_step = step min_opp = opp.uniform_number diff --git a/src/IBallActionGenerator.py b/src/IBallActionGenerator.py index 8ad80c1..ee51230 100644 --- a/src/IBallActionGenerator.py +++ b/src/IBallActionGenerator.py @@ -1,14 +1,13 @@ from src.IBallAction import BallAction from src.IAgent import IAgent -import service_pb2 as pb2 - +from soccer.ttypes import LoggerLevel class BallActionGenerator: def __init__(self): self.candidateActions: list[BallAction] = [] self.debug_list = [] - def log_debug(self, agent: IAgent, log_level:pb2.LoggerLevel): + def log_debug(self, agent: IAgent, log_level: LoggerLevel): for item in self.debug_list: same_index = float(item[3]) agent.add_log_circle(log_level, item[1].x(), item[1].y() + 0.05 * same_index, 0.2, "blue" if item[2] else "red", False) diff --git a/src/IDecisionMaker.py b/src/IDecisionMaker.py index 12fe6d7..30af13f 100644 --- a/src/IDecisionMaker.py +++ b/src/IDecisionMaker.py @@ -1,5 +1,4 @@ from abc import ABC, abstractmethod -import service_pb2 as pb2 from src.IAgent import IAgent diff --git a/src/IPositionStrategy.py b/src/IPositionStrategy.py index d37f1e9..86cfd89 100644 --- a/src/IPositionStrategy.py +++ b/src/IPositionStrategy.py @@ -1,7 +1,7 @@ from abc import ABC, abstractmethod -import service_pb2 as pb2 from pyrusgeom.soccer_math import * from pyrusgeom.geom_2d import * +from soccer.ttypes import WorldModel class IPositionStrategy(ABC): @@ -10,6 +10,6 @@ def getPosition(self, uniform_number) -> Vector2D: pass @abstractmethod - def update(self, wm: pb2.WorldModel): + def update(self, wm: WorldModel): pass \ No newline at end of file diff --git a/src/SampleCoachAgent.py b/src/SampleCoachAgent.py index 7a39cd9..e452c1a 100644 --- a/src/SampleCoachAgent.py +++ b/src/SampleCoachAgent.py @@ -1,21 +1,26 @@ from abc import ABC from src.IAgent import IAgent -import service_pb2 as pb2 - +from soccer.ttypes import CoachActions, CoachAction, ChangePlayerType, DoHeliosSubstitute, PlayerParam, PlayerType, ServerParam, WorldModel class SampleCoachAgent(IAgent, ABC): def __init__(self): super().__init__() - self.serverParams: pb2.ServerParam = None - self.playerParams: pb2.PlayerParam = None - self.playerTypes: dict[pb2.PlayerType] = {} - self.wm: pb2.WorldModel = None + self.serverParams: ServerParam = None + self.playerParams: PlayerParam = None + self.playerTypes: dict[PlayerType] = {} + self.wm: WorldModel = None self.first_substitution = True - def get_actions(self, wm:pb2.WorldModel) -> pb2.CoachActions: + def get_actions(self, wm:WorldModel) -> list[CoachAction]: + print("SampleCoachAgent.get_actions", wm.cycle) self.wm = wm - - actions = pb2.CoachActions() + actions = [] + actions.append( + CoachAction( + do_helios_substitute=DoHeliosSubstitute() + ) + ) + return actions # if (wm.cycle == 0 # and self.first_substitution # and self.playerParams is not None @@ -24,27 +29,24 @@ def get_actions(self, wm:pb2.WorldModel) -> pb2.CoachActions: # self.first_substitution = False # for i in range(11): # actions.actions.append( - # pb2.CoachAction( - # change_player_types=pb2.ChangePlayerType( + # CoachAction( + # change_player_types=ChangePlayerType( # uniform_number=i+1, # type=i # ) # ) # ) - actions.actions.append( - pb2.CoachAction( - do_helios_substitute=pb2.DoHeliosSubstitute() - ) - ) - return actions + + # coach_actions.actions = actions + def set_params(self, params): - if isinstance(params, pb2.ServerParam): + if isinstance(params, ServerParam): self.serverParams = params - elif isinstance(params, pb2.PlayerParam): + elif isinstance(params, PlayerParam): self.playerParams = params - elif isinstance(params, pb2.PlayerType): + elif isinstance(params, PlayerType): self.playerTypes[params.id] = params else: raise Exception("Unknown params type") \ No newline at end of file diff --git a/src/SamplePlayerAgent.py b/src/SamplePlayerAgent.py index 19322b0..8573aeb 100644 --- a/src/SamplePlayerAgent.py +++ b/src/SamplePlayerAgent.py @@ -1,5 +1,5 @@ from abc import ABC -import service_pb2 as pb2 +from soccer.ttypes import State, Empty, PlayerActions, CoachActions, TrainerActions, ServerParam, PlayerParam, PlayerType, InitMessage, InitMessageFromServer, WorldModel, PlayerAction from src.DecisionMaker import DecisionMaker from src.IAgent import IAgent from src.FormationStrategy import FormationStrategy @@ -10,29 +10,28 @@ def __init__(self): super().__init__() self.decisionMaker = DecisionMaker() self.strategy = FormationStrategy() - self.serverParams: pb2.ServerParam = None - self.playerParams: pb2.PlayerParam = None - self.playerTypes: dict[pb2.PlayerType] = {} - self.wm: pb2.WorldModel = None + self.serverParams: ServerParam = None + self.playerParams: PlayerParam = None + self.playerTypes: dict[PlayerType] = {} + self.wm: WorldModel = None - def get_actions(self, wm:pb2.WorldModel) -> pb2.PlayerActions: + def get_actions(self, wm:WorldModel) -> list[PlayerAction]: self.wm = wm self.actions.clear() self.strategy.update(wm) self.decisionMaker.make_decision(self) - actions = pb2.PlayerActions() - actions.actions.extend(self.actions) - return actions + + return self.actions def get_strategy(self): return self.strategy def set_params(self, params): - if isinstance(params, pb2.ServerParam): + if isinstance(params, ServerParam): self.serverParams = params - elif isinstance(params, pb2.PlayerParam): + elif isinstance(params, PlayerParam): self.playerParams = params - elif isinstance(params, pb2.PlayerType): + elif isinstance(params, PlayerType): self.playerTypes[params.id] = params else: raise Exception("Unknown params type") \ No newline at end of file diff --git a/src/SampleTrainerAgent.py b/src/SampleTrainerAgent.py index 5debe9e..b847b48 100644 --- a/src/SampleTrainerAgent.py +++ b/src/SampleTrainerAgent.py @@ -1,33 +1,32 @@ from abc import ABC from src.IAgent import IAgent -import service_pb2 as pb2 - +from soccer.ttypes import TrainerActions, TrainerAction, DoMoveBall, ServerParam, PlayerParam, PlayerType, WorldModel, ThriftVector2D class SampleTrainerAgent(IAgent, ABC): def __init__(self): super().__init__() - self.serverParams: pb2.ServerParam = None - self.playerParams: pb2.PlayerParam = None - self.playerTypes: dict[pb2.PlayerType] = {} - self.wm: pb2.WorldModel = None + self.serverParams: ServerParam = None + self.playerParams: PlayerParam = None + self.playerTypes: dict[PlayerType] = {} + self.wm: WorldModel = None self.first_substitution = True - def get_actions(self, wm:pb2.WorldModel) -> pb2.TrainerActions: + def get_actions(self, wm:WorldModel) -> TrainerActions: self.wm = wm - actions = pb2.TrainerActions() + actions = TrainerActions() print(f'cycle: {self.wm.cycle}') print(f'cycle: {self.wm.ball.position.x}, {self.wm.ball.position.y}') if self.wm.cycle % 100 == 0: actions.actions.append( - pb2.TrainerAction( - do_move_ball=pb2.DoMoveBall( - position=pb2.Vector2D( + TrainerAction( + do_move_ball=DoMoveBall( + position=ThriftVector2D( x=0, y=0 ), - velocity=pb2.Vector2D( + velocity=ThriftVector2D( x=0, y=0 ), @@ -37,11 +36,11 @@ def get_actions(self, wm:pb2.WorldModel) -> pb2.TrainerActions: return actions def set_params(self, params): - if isinstance(params, pb2.ServerParam): + if isinstance(params, ServerParam): self.serverParams = params - elif isinstance(params, pb2.PlayerParam): + elif isinstance(params, PlayerParam): self.playerParams = params - elif isinstance(params, pb2.PlayerType): + elif isinstance(params, PlayerType): self.playerTypes[params.id] = params else: raise Exception("Unknown params type") \ No newline at end of file diff --git a/src/Tools.py b/src/Tools.py index dee2211..bb2fcf6 100644 --- a/src/Tools.py +++ b/src/Tools.py @@ -1,13 +1,13 @@ -import service_pb2 as pb2 import pyrusgeom.soccer_math as smath from pyrusgeom.soccer_math import * from pyrusgeom.geom_2d import * from src.IAgent import IAgent import math +from soccer.ttypes import PlayerType, GameModeType, Player, ServerParam class Tools: @staticmethod - def inertia_final_point(playerType: pb2.PlayerType, position: Vector2D, velocity: Vector2D) -> Vector2D: + def inertia_final_point(playerType: PlayerType, position: Vector2D, velocity: Vector2D) -> Vector2D: return smath.inertia_final_point(position, velocity, playerType.player_decay) @staticmethod @@ -20,11 +20,11 @@ def first_ball_speed(ball_move_dist: float, total_step: int, ball_decay: float): @staticmethod def predict_kick_count(agent: IAgent, kicker_uniform_number, first_ball_speed, ball_move_angle: AngleDeg): - if agent.wm.game_mode_type not in [pb2.GameModeType.PlayOn, pb2.GameModeType.PenaltyKick_]: + if agent.wm.game_mode_type not in [GameModeType.PlayOn, GameModeType.PenaltyKick_]: return 1 - if kicker_uniform_number == agent.wm.self.uniform_number and agent.wm.self.is_kickable: - max_vel = Tools.calc_max_velocity(ball_move_angle, agent.wm.self.kick_rate, Tools.vector2d_message_to_vector2d(agent.wm.ball.velocity), agent.serverParams) + if kicker_uniform_number == agent.wm.myself.uniform_number and agent.wm.myself.is_kickable: + max_vel = Tools.calc_max_velocity(ball_move_angle, agent.wm.myself.kick_rate, Tools.vector2d_message_to_vector2d(agent.wm.ball.velocity), agent.serverParams) if max_vel.r() >= first_ball_speed: return 1 if first_ball_speed > 2.5: @@ -37,7 +37,7 @@ def predict_kick_count(agent: IAgent, kicker_uniform_number, first_ball_speed, b def calc_max_velocity(target_angle: AngleDeg, krate, ball_vel: Vector2D, - sp: pb2.ServerParam): + sp: ServerParam): ball_speed_max2 = sp.ball_speed_max ** 2 max_accel = min(sp.max_power * krate, sp.ball_accel_max) @@ -99,11 +99,11 @@ def inertia_point(initial_pos: Vector2D, initial_vel: Vector2D, n_step: int, pla return smath.inertia_n_step_point(initial_pos, initial_vel, n_step, player_decay) @staticmethod - def vector2d_message_to_vector2d(v: pb2.Vector2D): + def vector2d_message_to_vector2d(v: Vector2D): return Vector2D(v.x, v.y) @staticmethod - def estimate_virtual_dash_distance(player: pb2.Player, real_speed_max: float): + def estimate_virtual_dash_distance(player: Player, real_speed_max: float): pos_count = min(10, player.pos_count, player.seen_pos_count) max_speed = real_speed_max * 0.8 @@ -131,7 +131,7 @@ def cycles_to_reach_distance(dash_dist, real_speed_max): # return cycle @staticmethod - def predict_player_turn_cycle(sp: pb2.ServerParam, ptype: pb2.PlayerType, player_body: AngleDeg, player_speed, target_dist, + def predict_player_turn_cycle(sp: ServerParam, ptype: PlayerType, player_body: AngleDeg, player_speed, target_dist, target_angle: AngleDeg, dist_thr, use_back_dash): n_turn = 0 angle_diff = (target_angle - player_body).abs() @@ -170,7 +170,7 @@ def get_nearest_teammate(agent: IAgent, position: Vector2D): return best_player @staticmethod - def predict_opponent_reach_step(agent: IAgent, opponent: pb2.Player, first_ball_pos: Vector2D, first_ball_vel: Vector2D, + def predict_opponent_reach_step(agent: IAgent, opponent: Player, first_ball_pos: Vector2D, first_ball_vel: Vector2D, ball_move_angle: AngleDeg, receive_point: Vector2D, max_cycle, description): sp = agent.serverParams @@ -180,7 +180,7 @@ def predict_opponent_reach_step(agent: IAgent, opponent: pb2.Player, first_ball_ opp_pos = Vector2D(opponent.position.x, opponent.position.y) opp_vel = Vector2D(opponent.velocity.x, opponent.velocity.y) - ptype:pb2.PlayerType = agent.get_type(opponent.type_id) + ptype:PlayerType = agent.get_type(opponent.type_id) min_cycle = Tools.estimate_min_reach_cycle(opp_pos, ptype.real_speed_max, first_ball_pos, ball_move_angle) diff --git a/src/_DecisionMaker.py b/src/_DecisionMaker.py index d3e184b..7977146 100644 --- a/src/_DecisionMaker.py +++ b/src/_DecisionMaker.py @@ -8,11 +8,11 @@ def __init__(self): pass def make_decision(self, agent: IAgent): - if agent.wm.self.is_goalie: + if agent.wm.myself.is_goalie: agent.add_action(pb2.PlayerAction(helios_goalie=pb2.HeliosGoalie())) else: if agent.wm.game_mode_type == pb2.GameModeType.PlayOn: - if agent.wm.self.is_kickable: + if agent.wm.myself.is_kickable: if agent.wm.ball.position.x < 30: agent.add_action(pb2.PlayerAction(helios_chain_action=pb2.HeliosChainAction(cross=False, direct_pass=True, From 433aebb3e216d61fceb5dd41960495402ec837a8 Mon Sep 17 00:00:00 2001 From: naderzare Date: Tue, 6 Aug 2024 16:57:20 -0300 Subject: [PATCH 02/15] update thrift messages --- idl/soccer_service.thrift | 10 +-- requirements.txt | 2 +- server.py | 18 +++-- soccer/Game-remote | 10 +-- soccer/Game.py | 135 +++++++++++++++++++++++++++++++++----- 5 files changed, 143 insertions(+), 32 deletions(-) diff --git a/idl/soccer_service.thrift b/idl/soccer_service.thrift index 37bbe83..c0e0c39 100644 --- a/idl/soccer_service.thrift +++ b/idl/soccer_service.thrift @@ -1155,11 +1155,11 @@ service Game { PlayerActions GetPlayerActions(1: State state), CoachActions GetCoachActions(1: State state), TrainerActions GetTrainerActions(1: State state), - void SendInitMessage(1: InitMessage init_message), - void SendServerParams(1: ServerParam server_param), - void SendPlayerParams(1: PlayerParam player_param), - void SendPlayerType(1: PlayerType player_type), + Empty SendInitMessage(1: InitMessage init_message), + Empty SendServerParams(1: ServerParam server_param), + Empty SendPlayerParams(1: PlayerParam player_param), + Empty SendPlayerType(1: PlayerType player_type), InitMessageFromServer GetInitMessage(1: Empty empty), - void SendByeCommand(1: Empty empty) + Empty SendByeCommand(1: Empty empty) } diff --git a/requirements.txt b/requirements.txt index 0fc1d49..f8ffc78 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,4 @@ numpy==1.26.3 protobuf==4.25.2 pyrusgeom==0.1.2 scipy==1.11.4 -thrift==0.20.0 +thrift==0.16.0 diff --git a/server.py b/server.py index c696b69..2cd0489 100644 --- a/server.py +++ b/server.py @@ -43,33 +43,36 @@ def SendServerParams(self, serverParam): self.player_agent.set_params(serverParam) self.coach_agent.set_params(serverParam) self.trainer_agent.set_params(serverParam) - return + res = Empty() + return res def SendPlayerParams(self, playerParam): print("Player params received", playerParam) self.player_agent.set_params(playerParam) self.coach_agent.set_params(playerParam) self.trainer_agent.set_params(playerParam) - return + res = Empty() + return res def SendPlayerType(self, playerType): print("Player type received", playerType) self.player_agent.set_params(playerType) self.coach_agent.set_params(playerType) self.trainer_agent.set_params(playerType) - return + res = Empty() + return res def SendInitMessage(self, initMessage): print("Init message received", initMessage) self.player_agent.set_debug_mode(initMessage.debug_mode) - return + res = Empty() + return res def GetInitMessage(self, empty): print("New connection") # with self.lock: # self.number_of_connections += 1 res = InitMessageFromServer() - print(res) return res def SendByeCommand(self, empty): @@ -77,7 +80,8 @@ def SendByeCommand(self, empty): self.number_of_connections -= 1 if self.number_of_connections <= 0: self.running.release() - return + res = Empty() + return res def serve(): @@ -88,6 +92,8 @@ def serve(): pfactory = TBinaryProtocol.TBinaryProtocolFactory() server = TServer.TSimpleServer(processor, transport, tfactory, pfactory) + # server = TServer.TThreadPoolServer(processor, transport, tfactory, pfactory) + # server.setNumThreads(50) print("Thrift server started at port 50051") try: handler.running.acquire() diff --git a/soccer/Game-remote b/soccer/Game-remote index 5e678a1..10ac591 100755 --- a/soccer/Game-remote +++ b/soccer/Game-remote @@ -27,12 +27,12 @@ if len(sys.argv) <= 1 or sys.argv[1] == '--help': print(' PlayerActions GetPlayerActions(State state)') print(' CoachActions GetCoachActions(State state)') print(' TrainerActions GetTrainerActions(State state)') - print(' void SendInitMessage(InitMessage init_message)') - print(' void SendServerParams(ServerParam server_param)') - print(' void SendPlayerParams(PlayerParam player_param)') - print(' void SendPlayerType(PlayerType player_type)') + print(' Empty SendInitMessage(InitMessage init_message)') + print(' Empty SendServerParams(ServerParam server_param)') + print(' Empty SendPlayerParams(PlayerParam player_param)') + print(' Empty SendPlayerType(PlayerType player_type)') print(' InitMessageFromServer GetInitMessage(Empty empty)') - print(' void SendByeCommand(Empty empty)') + print(' Empty SendByeCommand(Empty empty)') print('') sys.exit(0) diff --git a/soccer/Game.py b/soccer/Game.py index 75467da..7c6921e 100644 --- a/soccer/Game.py +++ b/soccer/Game.py @@ -202,7 +202,7 @@ def SendInitMessage(self, init_message): """ self.send_SendInitMessage(init_message) - self.recv_SendInitMessage() + return self.recv_SendInitMessage() def send_SendInitMessage(self, init_message): self._oprot.writeMessageBegin('SendInitMessage', TMessageType.CALL, self._seqid) @@ -223,7 +223,9 @@ def recv_SendInitMessage(self): result = SendInitMessage_result() result.read(iprot) iprot.readMessageEnd() - return + if result.success is not None: + return result.success + raise TApplicationException(TApplicationException.MISSING_RESULT, "SendInitMessage failed: unknown result") def SendServerParams(self, server_param): """ @@ -232,7 +234,7 @@ def SendServerParams(self, server_param): """ self.send_SendServerParams(server_param) - self.recv_SendServerParams() + return self.recv_SendServerParams() def send_SendServerParams(self, server_param): self._oprot.writeMessageBegin('SendServerParams', TMessageType.CALL, self._seqid) @@ -253,7 +255,9 @@ def recv_SendServerParams(self): result = SendServerParams_result() result.read(iprot) iprot.readMessageEnd() - return + if result.success is not None: + return result.success + raise TApplicationException(TApplicationException.MISSING_RESULT, "SendServerParams failed: unknown result") def SendPlayerParams(self, player_param): """ @@ -262,7 +266,7 @@ def SendPlayerParams(self, player_param): """ self.send_SendPlayerParams(player_param) - self.recv_SendPlayerParams() + return self.recv_SendPlayerParams() def send_SendPlayerParams(self, player_param): self._oprot.writeMessageBegin('SendPlayerParams', TMessageType.CALL, self._seqid) @@ -283,7 +287,9 @@ def recv_SendPlayerParams(self): result = SendPlayerParams_result() result.read(iprot) iprot.readMessageEnd() - return + if result.success is not None: + return result.success + raise TApplicationException(TApplicationException.MISSING_RESULT, "SendPlayerParams failed: unknown result") def SendPlayerType(self, player_type): """ @@ -292,7 +298,7 @@ def SendPlayerType(self, player_type): """ self.send_SendPlayerType(player_type) - self.recv_SendPlayerType() + return self.recv_SendPlayerType() def send_SendPlayerType(self, player_type): self._oprot.writeMessageBegin('SendPlayerType', TMessageType.CALL, self._seqid) @@ -313,7 +319,9 @@ def recv_SendPlayerType(self): result = SendPlayerType_result() result.read(iprot) iprot.readMessageEnd() - return + if result.success is not None: + return result.success + raise TApplicationException(TApplicationException.MISSING_RESULT, "SendPlayerType failed: unknown result") def GetInitMessage(self, empty): """ @@ -354,7 +362,7 @@ def SendByeCommand(self, empty): """ self.send_SendByeCommand(empty) - self.recv_SendByeCommand() + return self.recv_SendByeCommand() def send_SendByeCommand(self, empty): self._oprot.writeMessageBegin('SendByeCommand', TMessageType.CALL, self._seqid) @@ -375,7 +383,9 @@ def recv_SendByeCommand(self): result = SendByeCommand_result() result.read(iprot) iprot.readMessageEnd() - return + if result.success is not None: + return result.success + raise TApplicationException(TApplicationException.MISSING_RESULT, "SendByeCommand failed: unknown result") class Processor(Iface, TProcessor): @@ -488,7 +498,7 @@ def process_SendInitMessage(self, seqid, iprot, oprot): iprot.readMessageEnd() result = SendInitMessage_result() try: - self._handler.SendInitMessage(args.init_message) + result.success = self._handler.SendInitMessage(args.init_message) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -511,7 +521,7 @@ def process_SendServerParams(self, seqid, iprot, oprot): iprot.readMessageEnd() result = SendServerParams_result() try: - self._handler.SendServerParams(args.server_param) + result.success = self._handler.SendServerParams(args.server_param) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -534,7 +544,7 @@ def process_SendPlayerParams(self, seqid, iprot, oprot): iprot.readMessageEnd() result = SendPlayerParams_result() try: - self._handler.SendPlayerParams(args.player_param) + result.success = self._handler.SendPlayerParams(args.player_param) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -557,7 +567,7 @@ def process_SendPlayerType(self, seqid, iprot, oprot): iprot.readMessageEnd() result = SendPlayerType_result() try: - self._handler.SendPlayerType(args.player_type) + result.success = self._handler.SendPlayerType(args.player_type) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -603,7 +613,7 @@ def process_SendByeCommand(self, seqid, iprot, oprot): iprot.readMessageEnd() result = SendByeCommand_result() try: - self._handler.SendByeCommand(args.empty) + result.success = self._handler.SendByeCommand(args.empty) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -1062,7 +1072,15 @@ def __ne__(self, other): class SendInitMessage_result(object): + """ + Attributes: + - success + + """ + + def __init__(self, success=None,): + self.success = success def read(self, iprot): if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: @@ -1073,6 +1091,12 @@ def read(self, iprot): (fname, ftype, fid) = iprot.readFieldBegin() if ftype == TType.STOP: break + if fid == 0: + if ftype == TType.STRUCT: + self.success = Empty() + self.success.read(iprot) + else: + iprot.skip(ftype) else: iprot.skip(ftype) iprot.readFieldEnd() @@ -1083,6 +1107,10 @@ def write(self, oprot): oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return oprot.writeStructBegin('SendInitMessage_result') + if self.success is not None: + oprot.writeFieldBegin('success', TType.STRUCT, 0) + self.success.write(oprot) + oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -1101,6 +1129,7 @@ def __ne__(self, other): return not (self == other) all_structs.append(SendInitMessage_result) SendInitMessage_result.thrift_spec = ( + (0, TType.STRUCT, 'success', [Empty, None], None, ), # 0 ) @@ -1168,8 +1197,16 @@ def __ne__(self, other): class SendServerParams_result(object): + """ + Attributes: + - success + + """ + def __init__(self, success=None,): + self.success = success + def read(self, iprot): if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) @@ -1179,6 +1216,12 @@ def read(self, iprot): (fname, ftype, fid) = iprot.readFieldBegin() if ftype == TType.STOP: break + if fid == 0: + if ftype == TType.STRUCT: + self.success = Empty() + self.success.read(iprot) + else: + iprot.skip(ftype) else: iprot.skip(ftype) iprot.readFieldEnd() @@ -1189,6 +1232,10 @@ def write(self, oprot): oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return oprot.writeStructBegin('SendServerParams_result') + if self.success is not None: + oprot.writeFieldBegin('success', TType.STRUCT, 0) + self.success.write(oprot) + oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -1207,6 +1254,7 @@ def __ne__(self, other): return not (self == other) all_structs.append(SendServerParams_result) SendServerParams_result.thrift_spec = ( + (0, TType.STRUCT, 'success', [Empty, None], None, ), # 0 ) @@ -1274,8 +1322,16 @@ def __ne__(self, other): class SendPlayerParams_result(object): + """ + Attributes: + - success + + """ + def __init__(self, success=None,): + self.success = success + def read(self, iprot): if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) @@ -1285,6 +1341,12 @@ def read(self, iprot): (fname, ftype, fid) = iprot.readFieldBegin() if ftype == TType.STOP: break + if fid == 0: + if ftype == TType.STRUCT: + self.success = Empty() + self.success.read(iprot) + else: + iprot.skip(ftype) else: iprot.skip(ftype) iprot.readFieldEnd() @@ -1295,6 +1357,10 @@ def write(self, oprot): oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return oprot.writeStructBegin('SendPlayerParams_result') + if self.success is not None: + oprot.writeFieldBegin('success', TType.STRUCT, 0) + self.success.write(oprot) + oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -1313,6 +1379,7 @@ def __ne__(self, other): return not (self == other) all_structs.append(SendPlayerParams_result) SendPlayerParams_result.thrift_spec = ( + (0, TType.STRUCT, 'success', [Empty, None], None, ), # 0 ) @@ -1380,7 +1447,15 @@ def __ne__(self, other): class SendPlayerType_result(object): + """ + Attributes: + - success + """ + + + def __init__(self, success=None,): + self.success = success def read(self, iprot): if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: @@ -1391,6 +1466,12 @@ def read(self, iprot): (fname, ftype, fid) = iprot.readFieldBegin() if ftype == TType.STOP: break + if fid == 0: + if ftype == TType.STRUCT: + self.success = Empty() + self.success.read(iprot) + else: + iprot.skip(ftype) else: iprot.skip(ftype) iprot.readFieldEnd() @@ -1401,6 +1482,10 @@ def write(self, oprot): oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return oprot.writeStructBegin('SendPlayerType_result') + if self.success is not None: + oprot.writeFieldBegin('success', TType.STRUCT, 0) + self.success.write(oprot) + oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -1419,6 +1504,7 @@ def __ne__(self, other): return not (self == other) all_structs.append(SendPlayerType_result) SendPlayerType_result.thrift_spec = ( + (0, TType.STRUCT, 'success', [Empty, None], None, ), # 0 ) @@ -1611,8 +1697,16 @@ def __ne__(self, other): class SendByeCommand_result(object): + """ + Attributes: + - success + + """ + def __init__(self, success=None,): + self.success = success + def read(self, iprot): if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) @@ -1622,6 +1716,12 @@ def read(self, iprot): (fname, ftype, fid) = iprot.readFieldBegin() if ftype == TType.STOP: break + if fid == 0: + if ftype == TType.STRUCT: + self.success = Empty() + self.success.read(iprot) + else: + iprot.skip(ftype) else: iprot.skip(ftype) iprot.readFieldEnd() @@ -1632,6 +1732,10 @@ def write(self, oprot): oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return oprot.writeStructBegin('SendByeCommand_result') + if self.success is not None: + oprot.writeFieldBegin('success', TType.STRUCT, 0) + self.success.write(oprot) + oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -1650,6 +1754,7 @@ def __ne__(self, other): return not (self == other) all_structs.append(SendByeCommand_result) SendByeCommand_result.thrift_spec = ( + (0, TType.STRUCT, 'success', [Empty, None], None, ), # 0 ) fix_spec(all_structs) del all_structs From e35a9680b8983a23324fa90ec9c406ef18bdbef9 Mon Sep 17 00:00:00 2001 From: naderzare Date: Tue, 6 Aug 2024 21:58:53 -0300 Subject: [PATCH 03/15] update thrift messages --- idl/soccer_service.thrift | 28 ++-- server.py | 96 +++++------ soccer/Game-remote | 66 ++++---- soccer/Game.py | 334 +++++++++++++++++++++++++------------- soccer/ttypes.py | 113 ++++++++++++- src/DM_NoBall.py | 52 +++--- src/DM_PlayOn.py | 2 - src/DM_WithBall.py | 91 ++++++----- src/DecisionMaker.py | 5 - src/SamplePlayerAgent.py | 2 +- 10 files changed, 509 insertions(+), 280 deletions(-) diff --git a/idl/soccer_service.thrift b/idl/soccer_service.thrift index c0e0c39..cb217c4 100644 --- a/idl/soccer_service.thrift +++ b/idl/soccer_service.thrift @@ -1149,17 +1149,25 @@ struct PlayerType { struct Empty {} -struct InitMessageFromServer {} +struct RegisterRequest { + 1: AgentType agent_type, + 2: string team_name, + 3: i32 uniform_number +} + +struct RegisterResponse { + 1: i32 client_id +} service Game { - PlayerActions GetPlayerActions(1: State state), - CoachActions GetCoachActions(1: State state), - TrainerActions GetTrainerActions(1: State state), - Empty SendInitMessage(1: InitMessage init_message), - Empty SendServerParams(1: ServerParam server_param), - Empty SendPlayerParams(1: PlayerParam player_param), - Empty SendPlayerType(1: PlayerType player_type), - InitMessageFromServer GetInitMessage(1: Empty empty), - Empty SendByeCommand(1: Empty empty) + PlayerActions GetPlayerActions(1: RegisterResponse register_response, 2: State state), + CoachActions GetCoachActions(1: RegisterResponse register_response, 2: State state), + TrainerActions GetTrainerActions(1: RegisterResponse register_response, 2: State state), + Empty SendInitMessage(1: RegisterResponse register_response, 2: InitMessage init_message), + Empty SendServerParams(1: RegisterResponse register_response, 2: ServerParam server_param), + Empty SendPlayerParams(1: RegisterResponse register_response, 2: PlayerParam player_param), + Empty SendPlayerType(1: RegisterResponse register_response, 2: PlayerType player_type), + RegisterResponse Register(1: RegisterRequest request), + Empty SendByeCommand(1: RegisterResponse register_response) } diff --git a/server.py b/server.py index 2cd0489..524f726 100644 --- a/server.py +++ b/server.py @@ -1,99 +1,96 @@ +from typing import Union from thrift import Thrift from thrift.protocol import TBinaryProtocol from thrift.server import TServer from thrift.transport import TSocket, TTransport from soccer import Game -from soccer.ttypes import State, Empty, PlayerActions, CoachActions, TrainerActions, ServerParam, PlayerParam, PlayerType, InitMessage, InitMessageFromServer - -from time import sleep -from concurrent import futures +from soccer.ttypes import State, Empty, PlayerActions, CoachActions, TrainerActions +from soccer.ttypes import ServerParam, PlayerParam, PlayerType, InitMessage, RegisterRequest, RegisterResponse, AgentType from src.SamplePlayerAgent import SamplePlayerAgent from src.SampleCoachAgent import SampleCoachAgent from src.SampleTrainerAgent import SampleTrainerAgent from threading import Semaphore import os - +import sys class GameHandler: def __init__(self): - self.player_agent = SamplePlayerAgent() - self.coach_agent = SampleCoachAgent() - self.trainer_agent = SampleTrainerAgent() + self.agents: dict[int, Union[SamplePlayerAgent, SampleTrainerAgent, SampleCoachAgent]] = {} + self.number_of_connections = 0 self.lock = Semaphore() self.running = Semaphore() - def GetPlayerActions(self, state): - print("GetPlayerActions", state.world_model.cycle) - actions = self.player_agent.get_actions(state.world_model) - return PlayerActions(actions=actions) + def GetPlayerActions(self, register_response: RegisterResponse, state: State): + # print("GetPlayerActions", state.world_model.cycle) + actions = self.agents[register_response.client_id].get_actions(state.world_model) + res = PlayerActions(actions=actions) + return res - def GetCoachActions(self, state): - print("GetCoachActions", state.world_model.cycle) - actions = self.coach_agent.get_actions(state.world_model) + def GetCoachActions(self, register_response: RegisterResponse, state): + # print("GetCoachActions", state.world_model.cycle) + actions = self.agents[register_response.client_id].get_actions(state.world_model) return CoachActions(actions=actions) - def GetTrainerActions(self, state): - print("GetTrainerActions", state.world_model.cycle) - actions = self.trainer_agent.get_actions(state.world_model) + def GetTrainerActions(self, register_response: RegisterResponse, state): + # print("GetTrainerActions", state.world_model.cycle) + actions = self.agents[register_response.client_id].get_actions(state.world_model) return TrainerActions(actions=actions) - def SendServerParams(self, serverParam): + def SendServerParams(self, register_response: RegisterResponse, serverParam): print("Server params received", serverParam) - self.player_agent.set_params(serverParam) - self.coach_agent.set_params(serverParam) - self.trainer_agent.set_params(serverParam) + self.agents[register_response.client_id].set_params(serverParam) res = Empty() return res - def SendPlayerParams(self, playerParam): + def SendPlayerParams(self, register_response: RegisterResponse, playerParam): print("Player params received", playerParam) - self.player_agent.set_params(playerParam) - self.coach_agent.set_params(playerParam) - self.trainer_agent.set_params(playerParam) + self.agents[register_response.client_id].set_params(playerParam) res = Empty() return res - def SendPlayerType(self, playerType): + def SendPlayerType(self, register_response: RegisterResponse, playerType): print("Player type received", playerType) - self.player_agent.set_params(playerType) - self.coach_agent.set_params(playerType) - self.trainer_agent.set_params(playerType) + self.agents[register_response.client_id].set_params(playerType) res = Empty() return res - def SendInitMessage(self, initMessage): + def SendInitMessage(self, register_response: RegisterResponse, initMessage): print("Init message received", initMessage) - self.player_agent.set_debug_mode(initMessage.debug_mode) + self.agents[register_response.client_id].set_debug_mode(initMessage.debug_mode) res = Empty() return res - def GetInitMessage(self, empty): + def Register(self, register_request: RegisterRequest): print("New connection") - # with self.lock: - # self.number_of_connections += 1 - res = InitMessageFromServer() - return res + with self.lock: + self.number_of_connections += 1 + if register_request.agent_type == AgentType.PlayerT: + self.agents[self.number_of_connections] = SamplePlayerAgent() + elif register_request.agent_type == AgentType.CoachT: + self.agents[self.number_of_connections] = SampleCoachAgent() + elif register_request.agent_type == AgentType.TrainerT: + self.agents[self.number_of_connections] = SampleTrainerAgent() + res = RegisterResponse(client_id=self.number_of_connections) + return res - def SendByeCommand(self, empty): + def SendByeCommand(self, register_response: RegisterResponse): with self.lock: - self.number_of_connections -= 1 - if self.number_of_connections <= 0: - self.running.release() + self.agents.pop(register_response.client_id) res = Empty() return res -def serve(): +def serve(port): handler = GameHandler() processor = Game.Processor(handler) - transport = TSocket.TServerSocket(host='0.0.0.0', port=50051) + transport = TSocket.TServerSocket(host='0.0.0.0', port=port) tfactory = TTransport.TBufferedTransportFactory() pfactory = TBinaryProtocol.TBinaryProtocolFactory() - server = TServer.TSimpleServer(processor, transport, tfactory, pfactory) - # server = TServer.TThreadPoolServer(processor, transport, tfactory, pfactory) - # server.setNumThreads(50) + # server = TServer.TSimpleServer(processor, transport, tfactory, pfactory) + server = TServer.TThreadPoolServer(processor, transport, tfactory, pfactory) + server.setNumThreads(50) print("Thrift server started at port 50051") try: handler.running.acquire() @@ -103,5 +100,10 @@ def serve(): handler.running.release() os._exit(0) + if __name__ == '__main__': - serve() + if len(sys.argv) < 2: + port = 50051 + else: + port = sys.argv[1] + serve(port) diff --git a/soccer/Game-remote b/soccer/Game-remote index 10ac591..1bdac64 100755 --- a/soccer/Game-remote +++ b/soccer/Game-remote @@ -24,15 +24,15 @@ if len(sys.argv) <= 1 or sys.argv[1] == '--help': print('Usage: ' + sys.argv[0] + ' [-h host[:port]] [-u url] [-f[ramed]] [-s[sl]] [-novalidate] [-ca_certs certs] [-keyfile keyfile] [-certfile certfile] function [arg1 [arg2...]]') print('') print('Functions:') - print(' PlayerActions GetPlayerActions(State state)') - print(' CoachActions GetCoachActions(State state)') - print(' TrainerActions GetTrainerActions(State state)') - print(' Empty SendInitMessage(InitMessage init_message)') - print(' Empty SendServerParams(ServerParam server_param)') - print(' Empty SendPlayerParams(PlayerParam player_param)') - print(' Empty SendPlayerType(PlayerType player_type)') - print(' InitMessageFromServer GetInitMessage(Empty empty)') - print(' Empty SendByeCommand(Empty empty)') + print(' PlayerActions GetPlayerActions(RegisterResponse register_response, State state)') + print(' CoachActions GetCoachActions(RegisterResponse register_response, State state)') + print(' TrainerActions GetTrainerActions(RegisterResponse register_response, State state)') + print(' Empty SendInitMessage(RegisterResponse register_response, InitMessage init_message)') + print(' Empty SendServerParams(RegisterResponse register_response, ServerParam server_param)') + print(' Empty SendPlayerParams(RegisterResponse register_response, PlayerParam player_param)') + print(' Empty SendPlayerType(RegisterResponse register_response, PlayerType player_type)') + print(' RegisterResponse Register(RegisterRequest request)') + print(' Empty SendByeCommand(RegisterResponse register_response)') print('') sys.exit(0) @@ -113,52 +113,52 @@ client = Game.Client(protocol) transport.open() if cmd == 'GetPlayerActions': - if len(args) != 1: - print('GetPlayerActions requires 1 args') + if len(args) != 2: + print('GetPlayerActions requires 2 args') sys.exit(1) - pp.pprint(client.GetPlayerActions(eval(args[0]),)) + pp.pprint(client.GetPlayerActions(eval(args[0]), eval(args[1]),)) elif cmd == 'GetCoachActions': - if len(args) != 1: - print('GetCoachActions requires 1 args') + if len(args) != 2: + print('GetCoachActions requires 2 args') sys.exit(1) - pp.pprint(client.GetCoachActions(eval(args[0]),)) + pp.pprint(client.GetCoachActions(eval(args[0]), eval(args[1]),)) elif cmd == 'GetTrainerActions': - if len(args) != 1: - print('GetTrainerActions requires 1 args') + if len(args) != 2: + print('GetTrainerActions requires 2 args') sys.exit(1) - pp.pprint(client.GetTrainerActions(eval(args[0]),)) + pp.pprint(client.GetTrainerActions(eval(args[0]), eval(args[1]),)) elif cmd == 'SendInitMessage': - if len(args) != 1: - print('SendInitMessage requires 1 args') + if len(args) != 2: + print('SendInitMessage requires 2 args') sys.exit(1) - pp.pprint(client.SendInitMessage(eval(args[0]),)) + pp.pprint(client.SendInitMessage(eval(args[0]), eval(args[1]),)) elif cmd == 'SendServerParams': - if len(args) != 1: - print('SendServerParams requires 1 args') + if len(args) != 2: + print('SendServerParams requires 2 args') sys.exit(1) - pp.pprint(client.SendServerParams(eval(args[0]),)) + pp.pprint(client.SendServerParams(eval(args[0]), eval(args[1]),)) elif cmd == 'SendPlayerParams': - if len(args) != 1: - print('SendPlayerParams requires 1 args') + if len(args) != 2: + print('SendPlayerParams requires 2 args') sys.exit(1) - pp.pprint(client.SendPlayerParams(eval(args[0]),)) + pp.pprint(client.SendPlayerParams(eval(args[0]), eval(args[1]),)) elif cmd == 'SendPlayerType': - if len(args) != 1: - print('SendPlayerType requires 1 args') + if len(args) != 2: + print('SendPlayerType requires 2 args') sys.exit(1) - pp.pprint(client.SendPlayerType(eval(args[0]),)) + pp.pprint(client.SendPlayerType(eval(args[0]), eval(args[1]),)) -elif cmd == 'GetInitMessage': +elif cmd == 'Register': if len(args) != 1: - print('GetInitMessage requires 1 args') + print('Register requires 1 args') sys.exit(1) - pp.pprint(client.GetInitMessage(eval(args[0]),)) + pp.pprint(client.Register(eval(args[0]),)) elif cmd == 'SendByeCommand': if len(args) != 1: diff --git a/soccer/Game.py b/soccer/Game.py index 7c6921e..3d97b26 100644 --- a/soccer/Game.py +++ b/soccer/Game.py @@ -19,74 +19,81 @@ class Iface(object): - def GetPlayerActions(self, state): + def GetPlayerActions(self, register_response, state): """ Parameters: + - register_response - state """ pass - def GetCoachActions(self, state): + def GetCoachActions(self, register_response, state): """ Parameters: + - register_response - state """ pass - def GetTrainerActions(self, state): + def GetTrainerActions(self, register_response, state): """ Parameters: + - register_response - state """ pass - def SendInitMessage(self, init_message): + def SendInitMessage(self, register_response, init_message): """ Parameters: + - register_response - init_message """ pass - def SendServerParams(self, server_param): + def SendServerParams(self, register_response, server_param): """ Parameters: + - register_response - server_param """ pass - def SendPlayerParams(self, player_param): + def SendPlayerParams(self, register_response, player_param): """ Parameters: + - register_response - player_param """ pass - def SendPlayerType(self, player_type): + def SendPlayerType(self, register_response, player_type): """ Parameters: + - register_response - player_type """ pass - def GetInitMessage(self, empty): + def Register(self, request): """ Parameters: - - empty + - request """ pass - def SendByeCommand(self, empty): + def SendByeCommand(self, register_response): """ Parameters: - - empty + - register_response """ pass @@ -99,18 +106,20 @@ def __init__(self, iprot, oprot=None): self._oprot = oprot self._seqid = 0 - def GetPlayerActions(self, state): + def GetPlayerActions(self, register_response, state): """ Parameters: + - register_response - state """ - self.send_GetPlayerActions(state) + self.send_GetPlayerActions(register_response, state) return self.recv_GetPlayerActions() - def send_GetPlayerActions(self, state): + def send_GetPlayerActions(self, register_response, state): self._oprot.writeMessageBegin('GetPlayerActions', TMessageType.CALL, self._seqid) args = GetPlayerActions_args() + args.register_response = register_response args.state = state args.write(self._oprot) self._oprot.writeMessageEnd() @@ -131,18 +140,20 @@ def recv_GetPlayerActions(self): return result.success raise TApplicationException(TApplicationException.MISSING_RESULT, "GetPlayerActions failed: unknown result") - def GetCoachActions(self, state): + def GetCoachActions(self, register_response, state): """ Parameters: + - register_response - state """ - self.send_GetCoachActions(state) + self.send_GetCoachActions(register_response, state) return self.recv_GetCoachActions() - def send_GetCoachActions(self, state): + def send_GetCoachActions(self, register_response, state): self._oprot.writeMessageBegin('GetCoachActions', TMessageType.CALL, self._seqid) args = GetCoachActions_args() + args.register_response = register_response args.state = state args.write(self._oprot) self._oprot.writeMessageEnd() @@ -163,18 +174,20 @@ def recv_GetCoachActions(self): return result.success raise TApplicationException(TApplicationException.MISSING_RESULT, "GetCoachActions failed: unknown result") - def GetTrainerActions(self, state): + def GetTrainerActions(self, register_response, state): """ Parameters: + - register_response - state """ - self.send_GetTrainerActions(state) + self.send_GetTrainerActions(register_response, state) return self.recv_GetTrainerActions() - def send_GetTrainerActions(self, state): + def send_GetTrainerActions(self, register_response, state): self._oprot.writeMessageBegin('GetTrainerActions', TMessageType.CALL, self._seqid) args = GetTrainerActions_args() + args.register_response = register_response args.state = state args.write(self._oprot) self._oprot.writeMessageEnd() @@ -195,18 +208,20 @@ def recv_GetTrainerActions(self): return result.success raise TApplicationException(TApplicationException.MISSING_RESULT, "GetTrainerActions failed: unknown result") - def SendInitMessage(self, init_message): + def SendInitMessage(self, register_response, init_message): """ Parameters: + - register_response - init_message """ - self.send_SendInitMessage(init_message) + self.send_SendInitMessage(register_response, init_message) return self.recv_SendInitMessage() - def send_SendInitMessage(self, init_message): + def send_SendInitMessage(self, register_response, init_message): self._oprot.writeMessageBegin('SendInitMessage', TMessageType.CALL, self._seqid) args = SendInitMessage_args() + args.register_response = register_response args.init_message = init_message args.write(self._oprot) self._oprot.writeMessageEnd() @@ -227,18 +242,20 @@ def recv_SendInitMessage(self): return result.success raise TApplicationException(TApplicationException.MISSING_RESULT, "SendInitMessage failed: unknown result") - def SendServerParams(self, server_param): + def SendServerParams(self, register_response, server_param): """ Parameters: + - register_response - server_param """ - self.send_SendServerParams(server_param) + self.send_SendServerParams(register_response, server_param) return self.recv_SendServerParams() - def send_SendServerParams(self, server_param): + def send_SendServerParams(self, register_response, server_param): self._oprot.writeMessageBegin('SendServerParams', TMessageType.CALL, self._seqid) args = SendServerParams_args() + args.register_response = register_response args.server_param = server_param args.write(self._oprot) self._oprot.writeMessageEnd() @@ -259,18 +276,20 @@ def recv_SendServerParams(self): return result.success raise TApplicationException(TApplicationException.MISSING_RESULT, "SendServerParams failed: unknown result") - def SendPlayerParams(self, player_param): + def SendPlayerParams(self, register_response, player_param): """ Parameters: + - register_response - player_param """ - self.send_SendPlayerParams(player_param) + self.send_SendPlayerParams(register_response, player_param) return self.recv_SendPlayerParams() - def send_SendPlayerParams(self, player_param): + def send_SendPlayerParams(self, register_response, player_param): self._oprot.writeMessageBegin('SendPlayerParams', TMessageType.CALL, self._seqid) args = SendPlayerParams_args() + args.register_response = register_response args.player_param = player_param args.write(self._oprot) self._oprot.writeMessageEnd() @@ -291,18 +310,20 @@ def recv_SendPlayerParams(self): return result.success raise TApplicationException(TApplicationException.MISSING_RESULT, "SendPlayerParams failed: unknown result") - def SendPlayerType(self, player_type): + def SendPlayerType(self, register_response, player_type): """ Parameters: + - register_response - player_type """ - self.send_SendPlayerType(player_type) + self.send_SendPlayerType(register_response, player_type) return self.recv_SendPlayerType() - def send_SendPlayerType(self, player_type): + def send_SendPlayerType(self, register_response, player_type): self._oprot.writeMessageBegin('SendPlayerType', TMessageType.CALL, self._seqid) args = SendPlayerType_args() + args.register_response = register_response args.player_type = player_type args.write(self._oprot) self._oprot.writeMessageEnd() @@ -323,24 +344,24 @@ def recv_SendPlayerType(self): return result.success raise TApplicationException(TApplicationException.MISSING_RESULT, "SendPlayerType failed: unknown result") - def GetInitMessage(self, empty): + def Register(self, request): """ Parameters: - - empty + - request """ - self.send_GetInitMessage(empty) - return self.recv_GetInitMessage() + self.send_Register(request) + return self.recv_Register() - def send_GetInitMessage(self, empty): - self._oprot.writeMessageBegin('GetInitMessage', TMessageType.CALL, self._seqid) - args = GetInitMessage_args() - args.empty = empty + def send_Register(self, request): + self._oprot.writeMessageBegin('Register', TMessageType.CALL, self._seqid) + args = Register_args() + args.request = request args.write(self._oprot) self._oprot.writeMessageEnd() self._oprot.trans.flush() - def recv_GetInitMessage(self): + def recv_Register(self): iprot = self._iprot (fname, mtype, rseqid) = iprot.readMessageBegin() if mtype == TMessageType.EXCEPTION: @@ -348,26 +369,26 @@ def recv_GetInitMessage(self): x.read(iprot) iprot.readMessageEnd() raise x - result = GetInitMessage_result() + result = Register_result() result.read(iprot) iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException(TApplicationException.MISSING_RESULT, "GetInitMessage failed: unknown result") + raise TApplicationException(TApplicationException.MISSING_RESULT, "Register failed: unknown result") - def SendByeCommand(self, empty): + def SendByeCommand(self, register_response): """ Parameters: - - empty + - register_response """ - self.send_SendByeCommand(empty) + self.send_SendByeCommand(register_response) return self.recv_SendByeCommand() - def send_SendByeCommand(self, empty): + def send_SendByeCommand(self, register_response): self._oprot.writeMessageBegin('SendByeCommand', TMessageType.CALL, self._seqid) args = SendByeCommand_args() - args.empty = empty + args.register_response = register_response args.write(self._oprot) self._oprot.writeMessageEnd() self._oprot.trans.flush() @@ -399,7 +420,7 @@ def __init__(self, handler): self._processMap["SendServerParams"] = Processor.process_SendServerParams self._processMap["SendPlayerParams"] = Processor.process_SendPlayerParams self._processMap["SendPlayerType"] = Processor.process_SendPlayerType - self._processMap["GetInitMessage"] = Processor.process_GetInitMessage + self._processMap["Register"] = Processor.process_Register self._processMap["SendByeCommand"] = Processor.process_SendByeCommand self._on_message_begin = None @@ -429,7 +450,7 @@ def process_GetPlayerActions(self, seqid, iprot, oprot): iprot.readMessageEnd() result = GetPlayerActions_result() try: - result.success = self._handler.GetPlayerActions(args.state) + result.success = self._handler.GetPlayerActions(args.register_response, args.state) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -452,7 +473,7 @@ def process_GetCoachActions(self, seqid, iprot, oprot): iprot.readMessageEnd() result = GetCoachActions_result() try: - result.success = self._handler.GetCoachActions(args.state) + result.success = self._handler.GetCoachActions(args.register_response, args.state) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -475,7 +496,7 @@ def process_GetTrainerActions(self, seqid, iprot, oprot): iprot.readMessageEnd() result = GetTrainerActions_result() try: - result.success = self._handler.GetTrainerActions(args.state) + result.success = self._handler.GetTrainerActions(args.register_response, args.state) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -498,7 +519,7 @@ def process_SendInitMessage(self, seqid, iprot, oprot): iprot.readMessageEnd() result = SendInitMessage_result() try: - result.success = self._handler.SendInitMessage(args.init_message) + result.success = self._handler.SendInitMessage(args.register_response, args.init_message) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -521,7 +542,7 @@ def process_SendServerParams(self, seqid, iprot, oprot): iprot.readMessageEnd() result = SendServerParams_result() try: - result.success = self._handler.SendServerParams(args.server_param) + result.success = self._handler.SendServerParams(args.register_response, args.server_param) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -544,7 +565,7 @@ def process_SendPlayerParams(self, seqid, iprot, oprot): iprot.readMessageEnd() result = SendPlayerParams_result() try: - result.success = self._handler.SendPlayerParams(args.player_param) + result.success = self._handler.SendPlayerParams(args.register_response, args.player_param) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -567,7 +588,7 @@ def process_SendPlayerType(self, seqid, iprot, oprot): iprot.readMessageEnd() result = SendPlayerType_result() try: - result.success = self._handler.SendPlayerType(args.player_type) + result.success = self._handler.SendPlayerType(args.register_response, args.player_type) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -584,13 +605,13 @@ def process_SendPlayerType(self, seqid, iprot, oprot): oprot.writeMessageEnd() oprot.trans.flush() - def process_GetInitMessage(self, seqid, iprot, oprot): - args = GetInitMessage_args() + def process_Register(self, seqid, iprot, oprot): + args = Register_args() args.read(iprot) iprot.readMessageEnd() - result = GetInitMessage_result() + result = Register_result() try: - result.success = self._handler.GetInitMessage(args.empty) + result.success = self._handler.Register(args.request) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -602,7 +623,7 @@ def process_GetInitMessage(self, seqid, iprot, oprot): logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') - oprot.writeMessageBegin("GetInitMessage", msg_type, seqid) + oprot.writeMessageBegin("Register", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() oprot.trans.flush() @@ -613,7 +634,7 @@ def process_SendByeCommand(self, seqid, iprot, oprot): iprot.readMessageEnd() result = SendByeCommand_result() try: - result.success = self._handler.SendByeCommand(args.empty) + result.success = self._handler.SendByeCommand(args.register_response) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -636,12 +657,14 @@ def process_SendByeCommand(self, seqid, iprot, oprot): class GetPlayerActions_args(object): """ Attributes: + - register_response - state """ - def __init__(self, state=None,): + def __init__(self, register_response=None, state=None,): + self.register_response = register_response self.state = state def read(self, iprot): @@ -654,6 +677,12 @@ def read(self, iprot): if ftype == TType.STOP: break if fid == 1: + if ftype == TType.STRUCT: + self.register_response = RegisterResponse() + self.register_response.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: if ftype == TType.STRUCT: self.state = State() self.state.read(iprot) @@ -669,8 +698,12 @@ def write(self, oprot): oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return oprot.writeStructBegin('GetPlayerActions_args') + if self.register_response is not None: + oprot.writeFieldBegin('register_response', TType.STRUCT, 1) + self.register_response.write(oprot) + oprot.writeFieldEnd() if self.state is not None: - oprot.writeFieldBegin('state', TType.STRUCT, 1) + oprot.writeFieldBegin('state', TType.STRUCT, 2) self.state.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -692,7 +725,8 @@ def __ne__(self, other): all_structs.append(GetPlayerActions_args) GetPlayerActions_args.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'state', [State, None], None, ), # 1 + (1, TType.STRUCT, 'register_response', [RegisterResponse, None], None, ), # 1 + (2, TType.STRUCT, 'state', [State, None], None, ), # 2 ) @@ -761,12 +795,14 @@ def __ne__(self, other): class GetCoachActions_args(object): """ Attributes: + - register_response - state """ - def __init__(self, state=None,): + def __init__(self, register_response=None, state=None,): + self.register_response = register_response self.state = state def read(self, iprot): @@ -779,6 +815,12 @@ def read(self, iprot): if ftype == TType.STOP: break if fid == 1: + if ftype == TType.STRUCT: + self.register_response = RegisterResponse() + self.register_response.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: if ftype == TType.STRUCT: self.state = State() self.state.read(iprot) @@ -794,8 +836,12 @@ def write(self, oprot): oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return oprot.writeStructBegin('GetCoachActions_args') + if self.register_response is not None: + oprot.writeFieldBegin('register_response', TType.STRUCT, 1) + self.register_response.write(oprot) + oprot.writeFieldEnd() if self.state is not None: - oprot.writeFieldBegin('state', TType.STRUCT, 1) + oprot.writeFieldBegin('state', TType.STRUCT, 2) self.state.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -817,7 +863,8 @@ def __ne__(self, other): all_structs.append(GetCoachActions_args) GetCoachActions_args.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'state', [State, None], None, ), # 1 + (1, TType.STRUCT, 'register_response', [RegisterResponse, None], None, ), # 1 + (2, TType.STRUCT, 'state', [State, None], None, ), # 2 ) @@ -886,12 +933,14 @@ def __ne__(self, other): class GetTrainerActions_args(object): """ Attributes: + - register_response - state """ - def __init__(self, state=None,): + def __init__(self, register_response=None, state=None,): + self.register_response = register_response self.state = state def read(self, iprot): @@ -904,6 +953,12 @@ def read(self, iprot): if ftype == TType.STOP: break if fid == 1: + if ftype == TType.STRUCT: + self.register_response = RegisterResponse() + self.register_response.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: if ftype == TType.STRUCT: self.state = State() self.state.read(iprot) @@ -919,8 +974,12 @@ def write(self, oprot): oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return oprot.writeStructBegin('GetTrainerActions_args') + if self.register_response is not None: + oprot.writeFieldBegin('register_response', TType.STRUCT, 1) + self.register_response.write(oprot) + oprot.writeFieldEnd() if self.state is not None: - oprot.writeFieldBegin('state', TType.STRUCT, 1) + oprot.writeFieldBegin('state', TType.STRUCT, 2) self.state.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -942,7 +1001,8 @@ def __ne__(self, other): all_structs.append(GetTrainerActions_args) GetTrainerActions_args.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'state', [State, None], None, ), # 1 + (1, TType.STRUCT, 'register_response', [RegisterResponse, None], None, ), # 1 + (2, TType.STRUCT, 'state', [State, None], None, ), # 2 ) @@ -1011,12 +1071,14 @@ def __ne__(self, other): class SendInitMessage_args(object): """ Attributes: + - register_response - init_message """ - def __init__(self, init_message=None,): + def __init__(self, register_response=None, init_message=None,): + self.register_response = register_response self.init_message = init_message def read(self, iprot): @@ -1029,6 +1091,12 @@ def read(self, iprot): if ftype == TType.STOP: break if fid == 1: + if ftype == TType.STRUCT: + self.register_response = RegisterResponse() + self.register_response.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: if ftype == TType.STRUCT: self.init_message = InitMessage() self.init_message.read(iprot) @@ -1044,8 +1112,12 @@ def write(self, oprot): oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return oprot.writeStructBegin('SendInitMessage_args') + if self.register_response is not None: + oprot.writeFieldBegin('register_response', TType.STRUCT, 1) + self.register_response.write(oprot) + oprot.writeFieldEnd() if self.init_message is not None: - oprot.writeFieldBegin('init_message', TType.STRUCT, 1) + oprot.writeFieldBegin('init_message', TType.STRUCT, 2) self.init_message.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -1067,7 +1139,8 @@ def __ne__(self, other): all_structs.append(SendInitMessage_args) SendInitMessage_args.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'init_message', [InitMessage, None], None, ), # 1 + (1, TType.STRUCT, 'register_response', [RegisterResponse, None], None, ), # 1 + (2, TType.STRUCT, 'init_message', [InitMessage, None], None, ), # 2 ) @@ -1136,12 +1209,14 @@ def __ne__(self, other): class SendServerParams_args(object): """ Attributes: + - register_response - server_param """ - def __init__(self, server_param=None,): + def __init__(self, register_response=None, server_param=None,): + self.register_response = register_response self.server_param = server_param def read(self, iprot): @@ -1154,6 +1229,12 @@ def read(self, iprot): if ftype == TType.STOP: break if fid == 1: + if ftype == TType.STRUCT: + self.register_response = RegisterResponse() + self.register_response.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: if ftype == TType.STRUCT: self.server_param = ServerParam() self.server_param.read(iprot) @@ -1169,8 +1250,12 @@ def write(self, oprot): oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return oprot.writeStructBegin('SendServerParams_args') + if self.register_response is not None: + oprot.writeFieldBegin('register_response', TType.STRUCT, 1) + self.register_response.write(oprot) + oprot.writeFieldEnd() if self.server_param is not None: - oprot.writeFieldBegin('server_param', TType.STRUCT, 1) + oprot.writeFieldBegin('server_param', TType.STRUCT, 2) self.server_param.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -1192,7 +1277,8 @@ def __ne__(self, other): all_structs.append(SendServerParams_args) SendServerParams_args.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'server_param', [ServerParam, None], None, ), # 1 + (1, TType.STRUCT, 'register_response', [RegisterResponse, None], None, ), # 1 + (2, TType.STRUCT, 'server_param', [ServerParam, None], None, ), # 2 ) @@ -1261,12 +1347,14 @@ def __ne__(self, other): class SendPlayerParams_args(object): """ Attributes: + - register_response - player_param """ - def __init__(self, player_param=None,): + def __init__(self, register_response=None, player_param=None,): + self.register_response = register_response self.player_param = player_param def read(self, iprot): @@ -1279,6 +1367,12 @@ def read(self, iprot): if ftype == TType.STOP: break if fid == 1: + if ftype == TType.STRUCT: + self.register_response = RegisterResponse() + self.register_response.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: if ftype == TType.STRUCT: self.player_param = PlayerParam() self.player_param.read(iprot) @@ -1294,8 +1388,12 @@ def write(self, oprot): oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return oprot.writeStructBegin('SendPlayerParams_args') + if self.register_response is not None: + oprot.writeFieldBegin('register_response', TType.STRUCT, 1) + self.register_response.write(oprot) + oprot.writeFieldEnd() if self.player_param is not None: - oprot.writeFieldBegin('player_param', TType.STRUCT, 1) + oprot.writeFieldBegin('player_param', TType.STRUCT, 2) self.player_param.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -1317,7 +1415,8 @@ def __ne__(self, other): all_structs.append(SendPlayerParams_args) SendPlayerParams_args.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'player_param', [PlayerParam, None], None, ), # 1 + (1, TType.STRUCT, 'register_response', [RegisterResponse, None], None, ), # 1 + (2, TType.STRUCT, 'player_param', [PlayerParam, None], None, ), # 2 ) @@ -1386,12 +1485,14 @@ def __ne__(self, other): class SendPlayerType_args(object): """ Attributes: + - register_response - player_type """ - def __init__(self, player_type=None,): + def __init__(self, register_response=None, player_type=None,): + self.register_response = register_response self.player_type = player_type def read(self, iprot): @@ -1404,6 +1505,12 @@ def read(self, iprot): if ftype == TType.STOP: break if fid == 1: + if ftype == TType.STRUCT: + self.register_response = RegisterResponse() + self.register_response.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: if ftype == TType.STRUCT: self.player_type = PlayerType() self.player_type.read(iprot) @@ -1419,8 +1526,12 @@ def write(self, oprot): oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return oprot.writeStructBegin('SendPlayerType_args') + if self.register_response is not None: + oprot.writeFieldBegin('register_response', TType.STRUCT, 1) + self.register_response.write(oprot) + oprot.writeFieldEnd() if self.player_type is not None: - oprot.writeFieldBegin('player_type', TType.STRUCT, 1) + oprot.writeFieldBegin('player_type', TType.STRUCT, 2) self.player_type.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -1442,7 +1553,8 @@ def __ne__(self, other): all_structs.append(SendPlayerType_args) SendPlayerType_args.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'player_type', [PlayerType, None], None, ), # 1 + (1, TType.STRUCT, 'register_response', [RegisterResponse, None], None, ), # 1 + (2, TType.STRUCT, 'player_type', [PlayerType, None], None, ), # 2 ) @@ -1508,16 +1620,16 @@ def __ne__(self, other): ) -class GetInitMessage_args(object): +class Register_args(object): """ Attributes: - - empty + - request """ - def __init__(self, empty=None,): - self.empty = empty + def __init__(self, request=None,): + self.request = request def read(self, iprot): if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: @@ -1530,8 +1642,8 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.empty = Empty() - self.empty.read(iprot) + self.request = RegisterRequest() + self.request.read(iprot) else: iprot.skip(ftype) else: @@ -1543,10 +1655,10 @@ def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin('GetInitMessage_args') - if self.empty is not None: - oprot.writeFieldBegin('empty', TType.STRUCT, 1) - self.empty.write(oprot) + oprot.writeStructBegin('Register_args') + if self.request is not None: + oprot.writeFieldBegin('request', TType.STRUCT, 1) + self.request.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -1564,14 +1676,14 @@ def __eq__(self, other): def __ne__(self, other): return not (self == other) -all_structs.append(GetInitMessage_args) -GetInitMessage_args.thrift_spec = ( +all_structs.append(Register_args) +Register_args.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'empty', [Empty, None], None, ), # 1 + (1, TType.STRUCT, 'request', [RegisterRequest, None], None, ), # 1 ) -class GetInitMessage_result(object): +class Register_result(object): """ Attributes: - success @@ -1593,7 +1705,7 @@ def read(self, iprot): break if fid == 0: if ftype == TType.STRUCT: - self.success = InitMessageFromServer() + self.success = RegisterResponse() self.success.read(iprot) else: iprot.skip(ftype) @@ -1606,7 +1718,7 @@ def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin('GetInitMessage_result') + oprot.writeStructBegin('Register_result') if self.success is not None: oprot.writeFieldBegin('success', TType.STRUCT, 0) self.success.write(oprot) @@ -1627,22 +1739,22 @@ def __eq__(self, other): def __ne__(self, other): return not (self == other) -all_structs.append(GetInitMessage_result) -GetInitMessage_result.thrift_spec = ( - (0, TType.STRUCT, 'success', [InitMessageFromServer, None], None, ), # 0 +all_structs.append(Register_result) +Register_result.thrift_spec = ( + (0, TType.STRUCT, 'success', [RegisterResponse, None], None, ), # 0 ) class SendByeCommand_args(object): """ Attributes: - - empty + - register_response """ - def __init__(self, empty=None,): - self.empty = empty + def __init__(self, register_response=None,): + self.register_response = register_response def read(self, iprot): if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: @@ -1655,8 +1767,8 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.empty = Empty() - self.empty.read(iprot) + self.register_response = RegisterResponse() + self.register_response.read(iprot) else: iprot.skip(ftype) else: @@ -1669,9 +1781,9 @@ def write(self, oprot): oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return oprot.writeStructBegin('SendByeCommand_args') - if self.empty is not None: - oprot.writeFieldBegin('empty', TType.STRUCT, 1) - self.empty.write(oprot) + if self.register_response is not None: + oprot.writeFieldBegin('register_response', TType.STRUCT, 1) + self.register_response.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -1692,7 +1804,7 @@ def __ne__(self, other): all_structs.append(SendByeCommand_args) SendByeCommand_args.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'empty', [Empty, None], None, ), # 1 + (1, TType.STRUCT, 'register_response', [RegisterResponse, None], None, ), # 1 ) diff --git a/soccer/ttypes.py b/soccer/ttypes.py index 48aa0d5..a3d79f9 100644 --- a/soccer/ttypes.py +++ b/soccer/ttypes.py @@ -13992,9 +13992,21 @@ def __ne__(self, other): return not (self == other) -class InitMessageFromServer(object): +class RegisterRequest(object): + """ + Attributes: + - agent_type + - team_name + - uniform_number + + """ + def __init__(self, agent_type=None, team_name=None, uniform_number=None,): + self.agent_type = agent_type + self.team_name = team_name + self.uniform_number = uniform_number + def read(self, iprot): if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) @@ -14004,6 +14016,21 @@ def read(self, iprot): (fname, ftype, fid) = iprot.readFieldBegin() if ftype == TType.STOP: break + if fid == 1: + if ftype == TType.I32: + self.agent_type = iprot.readI32() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRING: + self.team_name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.I32: + self.uniform_number = iprot.readI32() + else: + iprot.skip(ftype) else: iprot.skip(ftype) iprot.readFieldEnd() @@ -14013,7 +14040,76 @@ def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin('InitMessageFromServer') + oprot.writeStructBegin('RegisterRequest') + if self.agent_type is not None: + oprot.writeFieldBegin('agent_type', TType.I32, 1) + oprot.writeI32(self.agent_type) + oprot.writeFieldEnd() + if self.team_name is not None: + oprot.writeFieldBegin('team_name', TType.STRING, 2) + oprot.writeString(self.team_name.encode('utf-8') if sys.version_info[0] == 2 else self.team_name) + oprot.writeFieldEnd() + if self.uniform_number is not None: + oprot.writeFieldBegin('uniform_number', TType.I32, 3) + oprot.writeI32(self.uniform_number) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) + + +class RegisterResponse(object): + """ + Attributes: + - client_id + + """ + + + def __init__(self, client_id=None,): + self.client_id = client_id + + def read(self, iprot): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: + iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.I32: + self.client_id = iprot.readI32() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot._fast_encode is not None and self.thrift_spec is not None: + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) + return + oprot.writeStructBegin('RegisterResponse') + if self.client_id is not None: + oprot.writeFieldBegin('client_id', TType.I32, 1) + oprot.writeI32(self.client_id) + oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -15215,8 +15311,17 @@ def __ne__(self, other): all_structs.append(Empty) Empty.thrift_spec = ( ) -all_structs.append(InitMessageFromServer) -InitMessageFromServer.thrift_spec = ( +all_structs.append(RegisterRequest) +RegisterRequest.thrift_spec = ( + None, # 0 + (1, TType.I32, 'agent_type', None, None, ), # 1 + (2, TType.STRING, 'team_name', 'UTF8', None, ), # 2 + (3, TType.I32, 'uniform_number', None, None, ), # 3 +) +all_structs.append(RegisterResponse) +RegisterResponse.thrift_spec = ( + None, # 0 + (1, TType.I32, 'client_id', None, None, ), # 1 ) fix_spec(all_structs) del all_structs diff --git a/src/DM_NoBall.py b/src/DM_NoBall.py index e3d4cb8..b456296 100644 --- a/src/DM_NoBall.py +++ b/src/DM_NoBall.py @@ -3,35 +3,35 @@ from pyrusgeom.soccer_math import * from pyrusgeom.geom_2d import * from src.BHV_Block import BHV_Block -from soccer.ttypes import LoggerLevel, PlayerAction, Body_Intercept, Neck_TurnToBall, Body_GoToPoint, DebugClient, ThriftVector2D +from soccer.ttypes import LoggerLevel, PlayerAction, Body_Intercept, Neck_TurnToBall, Body_GoToPoint, DebugClient, ThriftVector2D, HeliosBasicMove class NoBallDecisionMaker(IDecisionMaker): def __init__(self): pass def make_decision(self, agent: IAgent): - teammate_reach_steps = agent.wm.intercept_table.first_teammate_reach_steps - self_reach_steps = agent.wm.intercept_table.self_reach_steps - our_reach_steps = min(teammate_reach_steps, self_reach_steps) - opponent_reach_steps = agent.wm.intercept_table.first_opponent_reach_steps - - if our_reach_steps < opponent_reach_steps and self_reach_steps < teammate_reach_steps: - agent.add_action(PlayerAction(body_intercept=Body_Intercept(save_recovery=False, - face_point=ThriftVector2D( x=agent.wm.ball.position.x, - y=agent.wm.ball.position.y)))) - agent.add_action(PlayerAction(neck_turn_to_ball=Neck_TurnToBall())) - return - - pos = agent.get_strategy().getPosition(agent.wm.myself.uniform_number) - agent.add_log_text(LoggerLevel.TEAM, f"opponent_reach_steps: {opponent_reach_steps} " - f"our_reach_steps: {our_reach_steps}") - if opponent_reach_steps < our_reach_steps: - if BHV_Block().execute(agent): - return - - agent.add_action(PlayerAction(body_go_to_point=Body_GoToPoint(target_point=ThriftVector2D(x=pos.x(), y=pos.y()), - distance_threshold=1, - max_dash_power=100))) - agent.add_action(PlayerAction(neck_turn_to_ball=Neck_TurnToBall())) - agent.add_action(PlayerAction(debug_client=DebugClient(message=f"go to : {pos.x()}, {pos.y()}"))) - \ No newline at end of file + # teammate_reach_steps = agent.wm.intercept_table.first_teammate_reach_steps + # self_reach_steps = agent.wm.intercept_table.self_reach_steps + # our_reach_steps = min(teammate_reach_steps, self_reach_steps) + # opponent_reach_steps = agent.wm.intercept_table.first_opponent_reach_steps + # + # if our_reach_steps < opponent_reach_steps and self_reach_steps < teammate_reach_steps: + # agent.add_action(PlayerAction(body_intercept=Body_Intercept(save_recovery=False, + # face_point=ThriftVector2D( x=agent.wm.ball.position.x, + # y=agent.wm.ball.position.y)))) + # agent.add_action(PlayerAction(neck_turn_to_ball=Neck_TurnToBall())) + # return + # + # pos = agent.get_strategy().getPosition(agent.wm.myself.uniform_number) + # agent.add_log_text(LoggerLevel.TEAM, f"opponent_reach_steps: {opponent_reach_steps} " + # f"our_reach_steps: {our_reach_steps}") + # if opponent_reach_steps < our_reach_steps: + # if BHV_Block().execute(agent): + # return + # + # agent.add_action(PlayerAction(body_go_to_point=Body_GoToPoint(target_point=ThriftVector2D(x=pos.x(), y=pos.y()), + # distance_threshold=1, + # max_dash_power=100))) + # agent.add_action(PlayerAction(neck_turn_to_ball=Neck_TurnToBall())) + # agent.add_action(PlayerAction(debug_client=DebugClient(message=f"go to : {pos.x()}, {pos.y()}"))) + agent.add_action(PlayerAction(helios_basic_move=HeliosBasicMove())) \ No newline at end of file diff --git a/src/DM_PlayOn.py b/src/DM_PlayOn.py index e642893..0d82ef5 100644 --- a/src/DM_PlayOn.py +++ b/src/DM_PlayOn.py @@ -12,8 +12,6 @@ def __init__(self): def make_decision(self, agent: IAgent): if agent.wm.myself.is_kickable: - print("PlayOnDecisionMaker: is_kickable") self.withBallDecisionMaker.make_decision(agent) else: - print("PlayOnDecisionMaker: not is_kickable") self.noBallDecisionMaker.make_decision(agent) \ No newline at end of file diff --git a/src/DM_WithBall.py b/src/DM_WithBall.py index d94b3f6..ed7ef38 100644 --- a/src/DM_WithBall.py +++ b/src/DM_WithBall.py @@ -7,7 +7,7 @@ from src.GEN_Pass import GeneratorPass from src.IBallAction import BallAction import time -from soccer.ttypes import LoggerLevel, PlayerAction, Body_HoldBall, Neck_ScanField, Body_SmartKick, ThriftVector2D +from soccer.ttypes import LoggerLevel, PlayerAction, Body_HoldBall, Neck_ScanField, Body_SmartKick, ThriftVector2D, HeliosChainAction class WithBallDecisionMaker(IDecisionMaker): def __init__(self): @@ -18,43 +18,52 @@ def __init__(self): sum_time = 0 count = 0 def make_decision(self, agent: IAgent): - start_time = time.time() - candidate_actions: list[BallAction] = [] - candidate_actions = self.pass_generator.generate(agent, 0) - candidate_actions += self.dribble_generator.generator(agent) - - if len(candidate_actions) == 0: - agent.add_action(PlayerAction(body_hold_ball=Body_HoldBall())) - agent.add_action(PlayerAction(neck_scan_field=Neck_ScanField())) - return - - if agent.debug_mode: - agent.add_log_text(LoggerLevel.PASS, f"candidate_actions: {candidate_actions}") - candidate_actions.sort(key=lambda x: x.score, reverse=True) - - best_action = None - i = 0 - best_score = -1000000 - for candidate in candidate_actions: - candidate.check_possibility(agent) - i += 1 - if candidate.success: - if candidate.score > best_score: - best_score = candidate.score - best_action = candidate - break - end_time = time.time() - WithBallDecisionMaker.sum_time += end_time - start_time - WithBallDecisionMaker.count += 1 - print(f"{agent.wm.cycle} {i} {len(candidate_actions)} {float(i) / len(candidate_actions)} {candidate.score} {end_time - start_time} {WithBallDecisionMaker.sum_time / WithBallDecisionMaker.count}") - if best_action is None: - agent.add_action(PlayerAction(body_hold_ball=Body_HoldBall())) - agent.add_action(PlayerAction(neck_scan_field=Neck_ScanField())) - return - - agent.add_action(PlayerAction(body_smart_kick=Body_SmartKick( - target_point=ThriftVector2D(x=best_action.targetBallPos.x(), y=best_action.targetBallPos.y()), - first_speed=best_action.firstVelocity.r(), - first_speed_threshold=0.0, - max_steps=3))) - agent.add_action(PlayerAction(neck_scan_field=Neck_ScanField())) \ No newline at end of file + # start_time = time.time() + # candidate_actions: list[BallAction] = [] + # candidate_actions = self.pass_generator.generate(agent, 0) + # candidate_actions += self.dribble_generator.generator(agent) + # + # if len(candidate_actions) == 0: + # agent.add_action(PlayerAction(body_hold_ball=Body_HoldBall())) + # agent.add_action(PlayerAction(neck_scan_field=Neck_ScanField())) + # return + # + # if agent.debug_mode: + # agent.add_log_text(LoggerLevel.PASS, f"candidate_actions: {candidate_actions}") + # candidate_actions.sort(key=lambda x: x.score, reverse=True) + # + # best_action = None + # i = 0 + # best_score = -1000000 + # for candidate in candidate_actions: + # candidate.check_possibility(agent) + # i += 1 + # if candidate.success: + # if candidate.score > best_score: + # best_score = candidate.score + # best_action = candidate + # break + # end_time = time.time() + # WithBallDecisionMaker.sum_time += end_time - start_time + # WithBallDecisionMaker.count += 1 + # print(f"{agent.wm.cycle} {i} {len(candidate_actions)} {float(i) / len(candidate_actions)} {candidate.score} {end_time - start_time} {WithBallDecisionMaker.sum_time / WithBallDecisionMaker.count}") + # if best_action is None: + # agent.add_action(PlayerAction(body_hold_ball=Body_HoldBall())) + # agent.add_action(PlayerAction(neck_scan_field=Neck_ScanField())) + # return + # + # agent.add_action(PlayerAction(body_smart_kick=Body_SmartKick( + # target_point=ThriftVector2D(x=best_action.targetBallPos.x(), y=best_action.targetBallPos.y()), + # first_speed=best_action.firstVelocity.r(), + # first_speed_threshold=0.0, + # max_steps=3))) + # agent.add_action(PlayerAction(neck_scan_field=Neck_ScanField())) + agent.add_action(PlayerAction(helios_chain_action=HeliosChainAction(direct_pass=True, + lead_pass=True, + through_pass=True, + short_dribble=True, + long_dribble=True, + cross=True, + simple_pass=False, + simple_dribble=False, + simple_shoot=True))) diff --git a/src/DecisionMaker.py b/src/DecisionMaker.py index 7e94c3a..3b2b93a 100644 --- a/src/DecisionMaker.py +++ b/src/DecisionMaker.py @@ -12,16 +12,11 @@ def __init__(self): def make_decision(self, agent: IAgent): if agent.wm.myself.is_goalie: - print("make_decision: is_goalie") agent.add_action(PlayerAction(helios_goalie=HeliosGoalie())) else: - print("make_decision: not is_goalie") if agent.wm.game_mode_type == GameModeType.PlayOn: - print("make_decision: PlayOnDecisionMaker") self.playOnDecisionMaker.make_decision(agent) elif agent.wm.is_penalty_kick_mode: - print("make_decision: PenaltyKickDecisionMaker") agent.add_action(PlayerAction(helios_penalty=HeliosPenalty())) else: - print("make_decision: SetPlayDecisionMaker") agent.add_action(PlayerAction(helios_set_play=HeliosSetPlay())) \ No newline at end of file diff --git a/src/SamplePlayerAgent.py b/src/SamplePlayerAgent.py index 8573aeb..d2f3857 100644 --- a/src/SamplePlayerAgent.py +++ b/src/SamplePlayerAgent.py @@ -1,5 +1,5 @@ from abc import ABC -from soccer.ttypes import State, Empty, PlayerActions, CoachActions, TrainerActions, ServerParam, PlayerParam, PlayerType, InitMessage, InitMessageFromServer, WorldModel, PlayerAction +from soccer.ttypes import State, Empty, PlayerActions, CoachActions, TrainerActions, ServerParam, PlayerParam, PlayerType, InitMessage, WorldModel, PlayerAction from src.DecisionMaker import DecisionMaker from src.IAgent import IAgent from src.FormationStrategy import FormationStrategy From 1d3801416b6b82b9f29ee97f887f3d015a0f82a8 Mon Sep 17 00:00:00 2001 From: naderzare Date: Fri, 9 Aug 2024 16:42:06 -0300 Subject: [PATCH 04/15] add PFProcessServer --- server.py | 2 +- server2.py | 229 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 230 insertions(+), 1 deletion(-) create mode 100644 server2.py diff --git a/server.py b/server.py index 524f726..c2c0d1d 100644 --- a/server.py +++ b/server.py @@ -33,7 +33,7 @@ def GetCoachActions(self, register_response: RegisterResponse, state): return CoachActions(actions=actions) def GetTrainerActions(self, register_response: RegisterResponse, state): - # print("GetTrainerActions", state.world_model.cycle) + print("GetTrainerActions", state.world_model.cycle) actions = self.agents[register_response.client_id].get_actions(state.world_model) return TrainerActions(actions=actions) diff --git a/server2.py b/server2.py new file mode 100644 index 0000000..7f1e83e --- /dev/null +++ b/server2.py @@ -0,0 +1,229 @@ +import threading +from typing import Union +from thrift import Thrift +from thrift.protocol import TBinaryProtocol +from thrift.protocol.THeaderProtocol import THeaderProtocolFactory +from thrift.server.TServer import TServer, TSimpleServer +from thrift.transport import TSocket, TTransport, THeaderTransport +from soccer import Game +from soccer.ttypes import State, Empty, PlayerActions, CoachActions, TrainerActions +from soccer.ttypes import ServerParam, PlayerParam, PlayerType, InitMessage, RegisterRequest, RegisterResponse, AgentType +from src.SamplePlayerAgent import SamplePlayerAgent +from src.SampleCoachAgent import SampleCoachAgent +from src.SampleTrainerAgent import SampleTrainerAgent +from threading import Semaphore +import sys +import logging +import time +import asyncio +import multiprocessing +import os + + +class PFThreadedServer(TServer): + """Threaded server that spawns a new thread and processor per each connection.""" + # # def __init__(self, processorFactory, serverTransport, transportFactory, protocolFactory): + def __init__(self, *args): + TServer.__init__(self, *args) + # self.processorFactory = processorFactory + self.processorFactory = args[0] + self.daemon = False + + def serve(self): + self.serverTransport.listen() + while True: + try: + client = self.serverTransport.accept() + if not client: + continue + t = threading.Thread(target=self.handle, args=(client,)) + t.daemon = self.daemon + t.start() + + except KeyboardInterrupt: + raise + + except Exception as x: + print(x) + + def handle(self, client): + print(f"Starting thread {threading.get_ident()} for client {client}") + start_time = time.time() + + processor = self.processorFactory.getProcessor(client) + itrans = self.inputTransportFactory.getTransport(client) + iprot = self.inputProtocolFactory.getProtocol(itrans) + + if isinstance(self.inputProtocolFactory, THeaderProtocolFactory): + otrans = None + oprot = iprot + else: + otrans = self.outputTransportFactory.getTransport(client) + oprot = self.outputProtocolFactory.getProtocol(otrans) + + try: + while True: + processor.process(iprot, oprot) + except TTransport.TTransportException: + pass + except Exception as x: + print(x) + finally: + itrans.close() + if otrans: + otrans.close() + end_time = time.time() + print(f"Thread {threading.get_ident()} for client {client} completed in {end_time - start_time} seconds.") + + +class PFProcessServer(TServer): + """Process-based server that spawns a new process per each connection.""" + + def __init__(self, *args): + TServer.__init__(self, *args) + self.processorFactory = args[0] + + def serve(self): + self.serverTransport.listen() + while True: + try: + client = self.serverTransport.accept() + if not client: + continue + p = multiprocessing.Process(target=self.handle, args=(client,)) + p.start() + + except KeyboardInterrupt: + raise + + except Exception as x: + print(x) + + def handle(self, client): + processor = self.processorFactory.getProcessor(client) + itrans = self.inputTransportFactory.getTransport(client) + iprot = self.inputProtocolFactory.getProtocol(itrans) + + if isinstance(self.inputProtocolFactory, THeaderProtocolFactory): + otrans = None + oprot = iprot + else: + otrans = self.outputTransportFactory.getTransport(client) + oprot = self.outputProtocolFactory.getProtocol(otrans) + + try: + while True: + processor.process(iprot, oprot) + except TTransport.TTransportException: + pass + except Exception as x: + print(x) + finally: + itrans.close() + if otrans: + otrans.close() + +class GameHandler: + def __init__(self): + self.agents: dict[int, Union[SamplePlayerAgent, SampleTrainerAgent, SampleCoachAgent]] = {} + + self.number_of_connections = 0 + self.lock = Semaphore() + self.running = Semaphore() + + def GetPlayerActions(self, register_response: RegisterResponse, state: State): + print("GetPlayerActions", state.world_model.cycle) + print("number of connections", self.number_of_connections) + print(f"Starting thread {threading.get_ident()}") + actions = self.agents[register_response.client_id].get_actions(state.world_model) + res = PlayerActions(actions=actions) + return res + + def GetCoachActions(self, register_response: RegisterResponse, state): + # print("GetCoachActions", state.world_model.cycle) + actions = self.agents[register_response.client_id].get_actions(state.world_model) + return CoachActions(actions=actions) + + def GetTrainerActions(self, register_response: RegisterResponse, state): + # print("GetTrainerActions", state.world_model.cycle) + actions = self.agents[register_response.client_id].get_actions(state.world_model) + return TrainerActions(actions=actions) + + def SendServerParams(self, register_response: RegisterResponse, serverParam): + print("Server params received", serverParam) + self.agents[register_response.client_id].set_params(serverParam) + res = Empty() + return res + + def SendPlayerParams(self, register_response: RegisterResponse, playerParam): + print("Player params received", playerParam) + self.agents[register_response.client_id].set_params(playerParam) + res = Empty() + return res + + def SendPlayerType(self, register_response: RegisterResponse, playerType): + print("Player type received", playerType) + self.agents[register_response.client_id].set_params(playerType) + res = Empty() + return res + + def SendInitMessage(self, register_response: RegisterResponse, initMessage): + print("Init message received", initMessage) + self.agents[register_response.client_id].set_debug_mode(initMessage.debug_mode) + res = Empty() + return res + + def Register(self, register_request: RegisterRequest): + print("New connection") + with self.lock: + self.number_of_connections += 1 + if register_request.agent_type == AgentType.PlayerT: + self.agents[self.number_of_connections] = SamplePlayerAgent() + elif register_request.agent_type == AgentType.CoachT: + self.agents[self.number_of_connections] = SampleCoachAgent() + elif register_request.agent_type == AgentType.TrainerT: + self.agents[self.number_of_connections] = SampleTrainerAgent() + res = RegisterResponse(client_id=self.number_of_connections) + return res + + def SendByeCommand(self, register_response: RegisterResponse): + with self.lock: + self.agents.pop(register_response.client_id) + res = Empty() + return res + + + +class GameProcessorFactory: + def __init__(self): + pass + def getProcessor(self, client): + return Game.Processor(GameHandler()) # could optionally pass client to GameHandler if desired + +def serve(port): + handler = GameHandler() + processor = Game.Processor(handler) + transport = TSocket.TServerSocket(host='0.0.0.0', port=port) + tfactory = TTransport.TBufferedTransportFactory() + pfactory = TBinaryProtocol.TBinaryProtocolFactory() + + # server = TServer.TSimpleServer(processor, transport, tfactory, pfactory) + # server = TServer.TThreadPoolServer(processor, transport, tfactory, pfactory) + # server = PFThreadedServer(GameProcessorFactory(), transport, tfactory, pfactory) + server = PFProcessServer(GameProcessorFactory(), transport, tfactory, pfactory) + print("Thrift server started at port 50051") + try: + handler.running.acquire() + server.serve() + except KeyboardInterrupt: + print("Stopping server") + handler.running.release() + os._exit(0) + + +if __name__ == '__main__': + if len(sys.argv) < 2: + port = 50051 + else: + port = sys.argv[1] + serve(port) From dcde81e07b80db90226cdaf8e9d35751e7579f7e Mon Sep 17 00:00:00 2001 From: naderzare Date: Fri, 9 Aug 2024 17:04:22 -0300 Subject: [PATCH 05/15] fix PFProcessServer --- server2.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/server2.py b/server2.py index 7f1e83e..afe6078 100644 --- a/server2.py +++ b/server2.py @@ -123,18 +123,24 @@ def handle(self, client): if otrans: otrans.close() +from multiprocessing import Manager +manager = Manager() +shared_int = manager.Value('i', 0) + + class GameHandler: - def __init__(self): - self.agents: dict[int, Union[SamplePlayerAgent, SampleTrainerAgent, SampleCoachAgent]] = {} + number_of_connections = 0 + lock = threading.Lock() + agents: dict[int, Union[SamplePlayerAgent, SampleTrainerAgent, SampleCoachAgent]] = {} - self.number_of_connections = 0 - self.lock = Semaphore() + def __init__(self): self.running = Semaphore() def GetPlayerActions(self, register_response: RegisterResponse, state: State): print("GetPlayerActions", state.world_model.cycle) print("number of connections", self.number_of_connections) print(f"Starting thread {threading.get_ident()}") + print(f"shared_int {shared_int.value}") actions = self.agents[register_response.client_id].get_actions(state.world_model) res = PlayerActions(actions=actions) return res @@ -176,7 +182,9 @@ def SendInitMessage(self, register_response: RegisterResponse, initMessage): def Register(self, register_request: RegisterRequest): print("New connection") with self.lock: + shared_int.value += 1 self.number_of_connections += 1 + print("Number of connections", self.number_of_connections, shared_int.value) if register_request.agent_type == AgentType.PlayerT: self.agents[self.number_of_connections] = SamplePlayerAgent() elif register_request.agent_type == AgentType.CoachT: @@ -195,20 +203,18 @@ def SendByeCommand(self, register_response: RegisterResponse): class GameProcessorFactory: - def __init__(self): + def __init__(self, ): pass + def getProcessor(self, client): return Game.Processor(GameHandler()) # could optionally pass client to GameHandler if desired def serve(port): handler = GameHandler() - processor = Game.Processor(handler) transport = TSocket.TServerSocket(host='0.0.0.0', port=port) tfactory = TTransport.TBufferedTransportFactory() pfactory = TBinaryProtocol.TBinaryProtocolFactory() - # server = TServer.TSimpleServer(processor, transport, tfactory, pfactory) - # server = TServer.TThreadPoolServer(processor, transport, tfactory, pfactory) # server = PFThreadedServer(GameProcessorFactory(), transport, tfactory, pfactory) server = PFProcessServer(GameProcessorFactory(), transport, tfactory, pfactory) print("Thrift server started at port 50051") From 731650d43e11177ce314f8e5c57c93cd0589b40f Mon Sep 17 00:00:00 2001 From: naderzare Date: Fri, 9 Aug 2024 22:07:15 -0300 Subject: [PATCH 06/15] update server --- server.py | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 147 insertions(+), 3 deletions(-) diff --git a/server.py b/server.py index c2c0d1d..3957a0b 100644 --- a/server.py +++ b/server.py @@ -1,7 +1,8 @@ from typing import Union from thrift import Thrift from thrift.protocol import TBinaryProtocol -from thrift.server import TServer +from thrift.protocol.THeaderProtocol import THeaderProtocolFactory +from thrift.server.TServer import TServer from thrift.transport import TSocket, TTransport from soccer import Game from soccer.ttypes import State, Empty, PlayerActions, CoachActions, TrainerActions @@ -12,6 +13,149 @@ from threading import Semaphore import os import sys +import threading +import queue +import logging as logger + +import asyncio + +def start_loop(loop): + asyncio.set_event_loop(loop) + loop.run_forever() + +def run_async_func_in_new_thread(target, *args): + new_loop = asyncio.new_event_loop() + t = threading.Thread(target=start_loop, args=(new_loop,)) + t.start() + + asyncio.run_coroutine_threadsafe(target(*args), new_loop) +class TThreadedServer2(TServer): + """Threaded server that spawns a new thread per each connection.""" + + def __init__(self, *args, **kwargs): + TServer.__init__(self, *args) + self.daemon = kwargs.get("daemon", False) + + def serve(self): + self.serverTransport.listen() + while True: + try: + client = self.serverTransport.accept() + if not client: + continue + t = threading.Thread(target=self.start_event_loop, args=(client,)) + # run_async_func_in_new_thread(self.handle, client) + + # t = threading.Thread(target=self.handle, args=(client,)) + t.setDaemon(self.daemon) + t.start() + except KeyboardInterrupt: + raise + except Exception as x: + logger.exception(x) + + def start_event_loop(self, client): + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + loop.run_until_complete(self.handle(client)) + loop.close() + + async def handle(self, client): + itrans = self.inputTransportFactory.getTransport(client) + iprot = self.inputProtocolFactory.getProtocol(itrans) + + # for THeaderProtocol, we must use the same protocol instance for input + # and output so that the response is in the same dialect that the + # server detected the request was in. + if isinstance(self.inputProtocolFactory, THeaderProtocolFactory): + otrans = None + oprot = iprot + else: + otrans = self.outputTransportFactory.getTransport(client) + oprot = self.outputProtocolFactory.getProtocol(otrans) + + try: + while True: + await self.processor.process(iprot, oprot) + except TTransport.TTransportException: + pass + except Exception as x: + logger.exception(x) + + itrans.close() + if otrans: + otrans.close() + +class TThreadPoolServer2(TServer): + """Server with a fixed size pool of threads which service requests.""" + + def __init__(self, *args, **kwargs): + TServer.__init__(self, *args) + self.clients = queue.Queue() + self.threads = 10 + self.daemon = kwargs.get("daemon", False) + + def setNumThreads(self, num): + """Set the number of worker threads that should be created""" + self.threads = num + + def serveThread(self): + """Loop around getting clients from the shared queue and process them.""" + while True: + try: + client = self.clients.get() + self.serveClient(client) + except Exception as x: + logger.exception(x) + + def serveClient(self, client): + """Process input/output from a client for as long as possible""" + itrans = self.inputTransportFactory.getTransport(client) + iprot = self.inputProtocolFactory.getProtocol(itrans) + + # for THeaderProtocol, we must use the same protocol instance for input + # and output so that the response is in the same dialect that the + # server detected the request was in. + if isinstance(self.inputProtocolFactory, THeaderProtocolFactory): + otrans = None + oprot = iprot + else: + otrans = self.outputTransportFactory.getTransport(client) + oprot = self.outputProtocolFactory.getProtocol(otrans) + + try: + while True: + self.processor.process(iprot, oprot) + except TTransport.TTransportException: + pass + except Exception as x: + logger.exception(x) + + itrans.close() + if otrans: + otrans.close() + + def serve(self): + """Start a fixed number of worker threads and put client into a queue""" + for i in range(self.threads): + try: + t = threading.Thread(target=self.serveThread) + t.setDaemon(self.daemon) + t.start() + except Exception as x: + logger.exception(x) + + # Pump the socket for clients + self.serverTransport.listen() + while True: + try: + client = self.serverTransport.accept() + if not client: + continue + self.clients.put(client) + except Exception as x: + logger.exception(x) + class GameHandler: def __init__(self): @@ -89,8 +233,8 @@ def serve(port): pfactory = TBinaryProtocol.TBinaryProtocolFactory() # server = TServer.TSimpleServer(processor, transport, tfactory, pfactory) - server = TServer.TThreadPoolServer(processor, transport, tfactory, pfactory) - server.setNumThreads(50) + server = TThreadedServer2(processor, transport, tfactory, pfactory) + # server.setNumThreads(50) print("Thrift server started at port 50051") try: handler.running.acquire() From 0bb265542d3c046a2784f8792188bf664e8a6cfc Mon Sep 17 00:00:00 2001 From: naderzare Date: Fri, 9 Aug 2024 23:16:30 -0300 Subject: [PATCH 07/15] update server --- server.py | 253 ----------------------------------------------------- server2.py | 215 ++------------------------------------------- 2 files changed, 8 insertions(+), 460 deletions(-) delete mode 100644 server.py diff --git a/server.py b/server.py deleted file mode 100644 index 3957a0b..0000000 --- a/server.py +++ /dev/null @@ -1,253 +0,0 @@ -from typing import Union -from thrift import Thrift -from thrift.protocol import TBinaryProtocol -from thrift.protocol.THeaderProtocol import THeaderProtocolFactory -from thrift.server.TServer import TServer -from thrift.transport import TSocket, TTransport -from soccer import Game -from soccer.ttypes import State, Empty, PlayerActions, CoachActions, TrainerActions -from soccer.ttypes import ServerParam, PlayerParam, PlayerType, InitMessage, RegisterRequest, RegisterResponse, AgentType -from src.SamplePlayerAgent import SamplePlayerAgent -from src.SampleCoachAgent import SampleCoachAgent -from src.SampleTrainerAgent import SampleTrainerAgent -from threading import Semaphore -import os -import sys -import threading -import queue -import logging as logger - -import asyncio - -def start_loop(loop): - asyncio.set_event_loop(loop) - loop.run_forever() - -def run_async_func_in_new_thread(target, *args): - new_loop = asyncio.new_event_loop() - t = threading.Thread(target=start_loop, args=(new_loop,)) - t.start() - - asyncio.run_coroutine_threadsafe(target(*args), new_loop) -class TThreadedServer2(TServer): - """Threaded server that spawns a new thread per each connection.""" - - def __init__(self, *args, **kwargs): - TServer.__init__(self, *args) - self.daemon = kwargs.get("daemon", False) - - def serve(self): - self.serverTransport.listen() - while True: - try: - client = self.serverTransport.accept() - if not client: - continue - t = threading.Thread(target=self.start_event_loop, args=(client,)) - # run_async_func_in_new_thread(self.handle, client) - - # t = threading.Thread(target=self.handle, args=(client,)) - t.setDaemon(self.daemon) - t.start() - except KeyboardInterrupt: - raise - except Exception as x: - logger.exception(x) - - def start_event_loop(self, client): - loop = asyncio.new_event_loop() - asyncio.set_event_loop(loop) - loop.run_until_complete(self.handle(client)) - loop.close() - - async def handle(self, client): - itrans = self.inputTransportFactory.getTransport(client) - iprot = self.inputProtocolFactory.getProtocol(itrans) - - # for THeaderProtocol, we must use the same protocol instance for input - # and output so that the response is in the same dialect that the - # server detected the request was in. - if isinstance(self.inputProtocolFactory, THeaderProtocolFactory): - otrans = None - oprot = iprot - else: - otrans = self.outputTransportFactory.getTransport(client) - oprot = self.outputProtocolFactory.getProtocol(otrans) - - try: - while True: - await self.processor.process(iprot, oprot) - except TTransport.TTransportException: - pass - except Exception as x: - logger.exception(x) - - itrans.close() - if otrans: - otrans.close() - -class TThreadPoolServer2(TServer): - """Server with a fixed size pool of threads which service requests.""" - - def __init__(self, *args, **kwargs): - TServer.__init__(self, *args) - self.clients = queue.Queue() - self.threads = 10 - self.daemon = kwargs.get("daemon", False) - - def setNumThreads(self, num): - """Set the number of worker threads that should be created""" - self.threads = num - - def serveThread(self): - """Loop around getting clients from the shared queue and process them.""" - while True: - try: - client = self.clients.get() - self.serveClient(client) - except Exception as x: - logger.exception(x) - - def serveClient(self, client): - """Process input/output from a client for as long as possible""" - itrans = self.inputTransportFactory.getTransport(client) - iprot = self.inputProtocolFactory.getProtocol(itrans) - - # for THeaderProtocol, we must use the same protocol instance for input - # and output so that the response is in the same dialect that the - # server detected the request was in. - if isinstance(self.inputProtocolFactory, THeaderProtocolFactory): - otrans = None - oprot = iprot - else: - otrans = self.outputTransportFactory.getTransport(client) - oprot = self.outputProtocolFactory.getProtocol(otrans) - - try: - while True: - self.processor.process(iprot, oprot) - except TTransport.TTransportException: - pass - except Exception as x: - logger.exception(x) - - itrans.close() - if otrans: - otrans.close() - - def serve(self): - """Start a fixed number of worker threads and put client into a queue""" - for i in range(self.threads): - try: - t = threading.Thread(target=self.serveThread) - t.setDaemon(self.daemon) - t.start() - except Exception as x: - logger.exception(x) - - # Pump the socket for clients - self.serverTransport.listen() - while True: - try: - client = self.serverTransport.accept() - if not client: - continue - self.clients.put(client) - except Exception as x: - logger.exception(x) - - -class GameHandler: - def __init__(self): - self.agents: dict[int, Union[SamplePlayerAgent, SampleTrainerAgent, SampleCoachAgent]] = {} - - self.number_of_connections = 0 - self.lock = Semaphore() - self.running = Semaphore() - - def GetPlayerActions(self, register_response: RegisterResponse, state: State): - # print("GetPlayerActions", state.world_model.cycle) - actions = self.agents[register_response.client_id].get_actions(state.world_model) - res = PlayerActions(actions=actions) - return res - - def GetCoachActions(self, register_response: RegisterResponse, state): - # print("GetCoachActions", state.world_model.cycle) - actions = self.agents[register_response.client_id].get_actions(state.world_model) - return CoachActions(actions=actions) - - def GetTrainerActions(self, register_response: RegisterResponse, state): - print("GetTrainerActions", state.world_model.cycle) - actions = self.agents[register_response.client_id].get_actions(state.world_model) - return TrainerActions(actions=actions) - - def SendServerParams(self, register_response: RegisterResponse, serverParam): - print("Server params received", serverParam) - self.agents[register_response.client_id].set_params(serverParam) - res = Empty() - return res - - def SendPlayerParams(self, register_response: RegisterResponse, playerParam): - print("Player params received", playerParam) - self.agents[register_response.client_id].set_params(playerParam) - res = Empty() - return res - - def SendPlayerType(self, register_response: RegisterResponse, playerType): - print("Player type received", playerType) - self.agents[register_response.client_id].set_params(playerType) - res = Empty() - return res - - def SendInitMessage(self, register_response: RegisterResponse, initMessage): - print("Init message received", initMessage) - self.agents[register_response.client_id].set_debug_mode(initMessage.debug_mode) - res = Empty() - return res - - def Register(self, register_request: RegisterRequest): - print("New connection") - with self.lock: - self.number_of_connections += 1 - if register_request.agent_type == AgentType.PlayerT: - self.agents[self.number_of_connections] = SamplePlayerAgent() - elif register_request.agent_type == AgentType.CoachT: - self.agents[self.number_of_connections] = SampleCoachAgent() - elif register_request.agent_type == AgentType.TrainerT: - self.agents[self.number_of_connections] = SampleTrainerAgent() - res = RegisterResponse(client_id=self.number_of_connections) - return res - - def SendByeCommand(self, register_response: RegisterResponse): - with self.lock: - self.agents.pop(register_response.client_id) - res = Empty() - return res - - -def serve(port): - handler = GameHandler() - processor = Game.Processor(handler) - transport = TSocket.TServerSocket(host='0.0.0.0', port=port) - tfactory = TTransport.TBufferedTransportFactory() - pfactory = TBinaryProtocol.TBinaryProtocolFactory() - - # server = TServer.TSimpleServer(processor, transport, tfactory, pfactory) - server = TThreadedServer2(processor, transport, tfactory, pfactory) - # server.setNumThreads(50) - print("Thrift server started at port 50051") - try: - handler.running.acquire() - server.serve() - except KeyboardInterrupt: - print("Stopping server") - handler.running.release() - os._exit(0) - - -if __name__ == '__main__': - if len(sys.argv) < 2: - port = 50051 - else: - port = sys.argv[1] - serve(port) diff --git a/server2.py b/server2.py index afe6078..03c6949 100644 --- a/server2.py +++ b/server2.py @@ -1,223 +1,24 @@ -import threading -from typing import Union -from thrift import Thrift from thrift.protocol import TBinaryProtocol -from thrift.protocol.THeaderProtocol import THeaderProtocolFactory -from thrift.server.TServer import TServer, TSimpleServer from thrift.transport import TSocket, TTransport, THeaderTransport from soccer import Game -from soccer.ttypes import State, Empty, PlayerActions, CoachActions, TrainerActions -from soccer.ttypes import ServerParam, PlayerParam, PlayerType, InitMessage, RegisterRequest, RegisterResponse, AgentType -from src.SamplePlayerAgent import SamplePlayerAgent -from src.SampleCoachAgent import SampleCoachAgent -from src.SampleTrainerAgent import SampleTrainerAgent -from threading import Semaphore import sys -import logging -import time -import asyncio -import multiprocessing import os +from utils.PFProcessServer import PFProcessServer +from thrift.server.TServer import TThreadedServer +from utils.GameHandler import GameHandler -class PFThreadedServer(TServer): - """Threaded server that spawns a new thread and processor per each connection.""" - # # def __init__(self, processorFactory, serverTransport, transportFactory, protocolFactory): - def __init__(self, *args): - TServer.__init__(self, *args) - # self.processorFactory = processorFactory - self.processorFactory = args[0] - self.daemon = False - - def serve(self): - self.serverTransport.listen() - while True: - try: - client = self.serverTransport.accept() - if not client: - continue - t = threading.Thread(target=self.handle, args=(client,)) - t.daemon = self.daemon - t.start() - - except KeyboardInterrupt: - raise - - except Exception as x: - print(x) - - def handle(self, client): - print(f"Starting thread {threading.get_ident()} for client {client}") - start_time = time.time() - - processor = self.processorFactory.getProcessor(client) - itrans = self.inputTransportFactory.getTransport(client) - iprot = self.inputProtocolFactory.getProtocol(itrans) - - if isinstance(self.inputProtocolFactory, THeaderProtocolFactory): - otrans = None - oprot = iprot - else: - otrans = self.outputTransportFactory.getTransport(client) - oprot = self.outputProtocolFactory.getProtocol(otrans) - - try: - while True: - processor.process(iprot, oprot) - except TTransport.TTransportException: - pass - except Exception as x: - print(x) - finally: - itrans.close() - if otrans: - otrans.close() - end_time = time.time() - print(f"Thread {threading.get_ident()} for client {client} completed in {end_time - start_time} seconds.") - - -class PFProcessServer(TServer): - """Process-based server that spawns a new process per each connection.""" - - def __init__(self, *args): - TServer.__init__(self, *args) - self.processorFactory = args[0] - - def serve(self): - self.serverTransport.listen() - while True: - try: - client = self.serverTransport.accept() - if not client: - continue - p = multiprocessing.Process(target=self.handle, args=(client,)) - p.start() - - except KeyboardInterrupt: - raise - - except Exception as x: - print(x) - - def handle(self, client): - processor = self.processorFactory.getProcessor(client) - itrans = self.inputTransportFactory.getTransport(client) - iprot = self.inputProtocolFactory.getProtocol(itrans) - - if isinstance(self.inputProtocolFactory, THeaderProtocolFactory): - otrans = None - oprot = iprot - else: - otrans = self.outputTransportFactory.getTransport(client) - oprot = self.outputProtocolFactory.getProtocol(otrans) - - try: - while True: - processor.process(iprot, oprot) - except TTransport.TTransportException: - pass - except Exception as x: - print(x) - finally: - itrans.close() - if otrans: - otrans.close() - -from multiprocessing import Manager -manager = Manager() -shared_int = manager.Value('i', 0) - - -class GameHandler: - number_of_connections = 0 - lock = threading.Lock() - agents: dict[int, Union[SamplePlayerAgent, SampleTrainerAgent, SampleCoachAgent]] = {} - - def __init__(self): - self.running = Semaphore() - - def GetPlayerActions(self, register_response: RegisterResponse, state: State): - print("GetPlayerActions", state.world_model.cycle) - print("number of connections", self.number_of_connections) - print(f"Starting thread {threading.get_ident()}") - print(f"shared_int {shared_int.value}") - actions = self.agents[register_response.client_id].get_actions(state.world_model) - res = PlayerActions(actions=actions) - return res - - def GetCoachActions(self, register_response: RegisterResponse, state): - # print("GetCoachActions", state.world_model.cycle) - actions = self.agents[register_response.client_id].get_actions(state.world_model) - return CoachActions(actions=actions) - - def GetTrainerActions(self, register_response: RegisterResponse, state): - # print("GetTrainerActions", state.world_model.cycle) - actions = self.agents[register_response.client_id].get_actions(state.world_model) - return TrainerActions(actions=actions) - - def SendServerParams(self, register_response: RegisterResponse, serverParam): - print("Server params received", serverParam) - self.agents[register_response.client_id].set_params(serverParam) - res = Empty() - return res - - def SendPlayerParams(self, register_response: RegisterResponse, playerParam): - print("Player params received", playerParam) - self.agents[register_response.client_id].set_params(playerParam) - res = Empty() - return res - - def SendPlayerType(self, register_response: RegisterResponse, playerType): - print("Player type received", playerType) - self.agents[register_response.client_id].set_params(playerType) - res = Empty() - return res - - def SendInitMessage(self, register_response: RegisterResponse, initMessage): - print("Init message received", initMessage) - self.agents[register_response.client_id].set_debug_mode(initMessage.debug_mode) - res = Empty() - return res - - def Register(self, register_request: RegisterRequest): - print("New connection") - with self.lock: - shared_int.value += 1 - self.number_of_connections += 1 - print("Number of connections", self.number_of_connections, shared_int.value) - if register_request.agent_type == AgentType.PlayerT: - self.agents[self.number_of_connections] = SamplePlayerAgent() - elif register_request.agent_type == AgentType.CoachT: - self.agents[self.number_of_connections] = SampleCoachAgent() - elif register_request.agent_type == AgentType.TrainerT: - self.agents[self.number_of_connections] = SampleTrainerAgent() - res = RegisterResponse(client_id=self.number_of_connections) - return res - - def SendByeCommand(self, register_response: RegisterResponse): - with self.lock: - self.agents.pop(register_response.client_id) - res = Empty() - return res - - - -class GameProcessorFactory: - def __init__(self, ): - pass - - def getProcessor(self, client): - return Game.Processor(GameHandler()) # could optionally pass client to GameHandler if desired - def serve(port): handler = GameHandler() + processor = Game.Processor(handler) transport = TSocket.TServerSocket(host='0.0.0.0', port=port) tfactory = TTransport.TBufferedTransportFactory() pfactory = TBinaryProtocol.TBinaryProtocolFactory() - # server = PFThreadedServer(GameProcessorFactory(), transport, tfactory, pfactory) - server = PFProcessServer(GameProcessorFactory(), transport, tfactory, pfactory) - print("Thrift server started at port 50051") + server = PFProcessServer(processor, transport, tfactory, pfactory) + # server = TThreadedServer(processor, transport, tfactory, pfactory) + + print(f"Thrift server started at port {port}") try: handler.running.acquire() server.serve() From 15db6bae2f9ba17d7d9ae1cef1f57d298033d859 Mon Sep 17 00:00:00 2001 From: naderzare Date: Fri, 9 Aug 2024 23:19:20 -0300 Subject: [PATCH 08/15] add utils and separate code that support --- server2.py => server.py | 0 utils/GameHandler.py | 92 ++++++++++++++++++++++++++++++++++++++++ utils/PFProcessServer.py | 52 +++++++++++++++++++++++ 3 files changed, 144 insertions(+) rename server2.py => server.py (100%) create mode 100644 utils/GameHandler.py create mode 100644 utils/PFProcessServer.py diff --git a/server2.py b/server.py similarity index 100% rename from server2.py rename to server.py diff --git a/utils/GameHandler.py b/utils/GameHandler.py new file mode 100644 index 0000000..dded700 --- /dev/null +++ b/utils/GameHandler.py @@ -0,0 +1,92 @@ +import threading +from typing import Union +from thrift import Thrift +from thrift.protocol import TBinaryProtocol +from thrift.protocol.THeaderProtocol import THeaderProtocolFactory +from thrift.server.TServer import TServer, TSimpleServer +from thrift.transport import TSocket, TTransport, THeaderTransport +from soccer import Game +from soccer.ttypes import State, Empty, PlayerActions, CoachActions, TrainerActions +from soccer.ttypes import ServerParam, PlayerParam, PlayerType, InitMessage, RegisterRequest, RegisterResponse, AgentType +from src.SamplePlayerAgent import SamplePlayerAgent +from src.SampleCoachAgent import SampleCoachAgent +from src.SampleTrainerAgent import SampleTrainerAgent +from threading import Semaphore +import sys +import logging +import time +import asyncio +import multiprocessing +import os +from multiprocessing import Manager, Lock +manager = Manager() +shared_lock = Lock() # Create a Lock for synchronization +shared_number_of_connections = manager.Value('i', 0) + + +class GameHandler: + def __init__(self): + self.agents: dict[int, Union[SamplePlayerAgent, SampleTrainerAgent, SampleCoachAgent]] = {} + self.running = Semaphore() + + def GetPlayerActions(self, register_response: RegisterResponse, state: State): + print("GetPlayerActions", state.world_model.cycle) + print(f"Starting thread {threading.get_ident()}") + print(f"shared_int {shared_number_of_connections.value}") + actions = self.agents[register_response.client_id].get_actions(state.world_model) + res = PlayerActions(actions=actions) + return res + + def GetCoachActions(self, register_response: RegisterResponse, state): + # print("GetCoachActions", state.world_model.cycle) + actions = self.agents[register_response.client_id].get_actions(state.world_model) + return CoachActions(actions=actions) + + def GetTrainerActions(self, register_response: RegisterResponse, state): + # print("GetTrainerActions", state.world_model.cycle) + actions = self.agents[register_response.client_id].get_actions(state.world_model) + return TrainerActions(actions=actions) + + def SendServerParams(self, register_response: RegisterResponse, serverParam): + print("Server params received", serverParam) + self.agents[register_response.client_id].set_params(serverParam) + res = Empty() + return res + + def SendPlayerParams(self, register_response: RegisterResponse, playerParam): + print("Player params received", playerParam) + self.agents[register_response.client_id].set_params(playerParam) + res = Empty() + return res + + def SendPlayerType(self, register_response: RegisterResponse, playerType): + print("Player type received", playerType) + self.agents[register_response.client_id].set_params(playerType) + res = Empty() + return res + + def SendInitMessage(self, register_response: RegisterResponse, initMessage): + print("Init message received", initMessage) + self.agents[register_response.client_id].set_debug_mode(initMessage.debug_mode) + res = Empty() + return res + + def Register(self, register_request: RegisterRequest): + print("New connection") + with shared_lock: + shared_number_of_connections.value += 1 + print("Number of connections", shared_number_of_connections.value) + if register_request.agent_type == AgentType.PlayerT: + self.agents[shared_number_of_connections.value] = SamplePlayerAgent() + elif register_request.agent_type == AgentType.CoachT: + self.agents[shared_number_of_connections.value] = SampleCoachAgent() + elif register_request.agent_type == AgentType.TrainerT: + self.agents[shared_number_of_connections.value] = SampleTrainerAgent() + res = RegisterResponse(client_id=shared_number_of_connections.value) + return res + + def SendByeCommand(self, register_response: RegisterResponse): + with shared_lock: + self.agents.pop(register_response.client_id) + res = Empty() + return res \ No newline at end of file diff --git a/utils/PFProcessServer.py b/utils/PFProcessServer.py new file mode 100644 index 0000000..bb8efdb --- /dev/null +++ b/utils/PFProcessServer.py @@ -0,0 +1,52 @@ +from thrift.protocol.THeaderProtocol import THeaderProtocolFactory +from thrift.server.TServer import TServer +from thrift.transport import TTransport +import multiprocessing + + +class PFProcessServer(TServer): + """Process-based server that spawns a new process per each connection.""" + + def __init__(self, *args): + TServer.__init__(self, *args) + # self.processorFactory = args[0] + + def serve(self): + self.serverTransport.listen() + while True: + try: + client = self.serverTransport.accept() + if not client: + continue + p = multiprocessing.Process(target=self.handle, args=(client,)) + p.start() + + except KeyboardInterrupt: + raise + + except Exception as x: + print(x) + + def handle(self, client): + # processor = self.processorFactory.getProcessor(client) + itrans = self.inputTransportFactory.getTransport(client) + iprot = self.inputProtocolFactory.getProtocol(itrans) + + if isinstance(self.inputProtocolFactory, THeaderProtocolFactory): + otrans = None + oprot = iprot + else: + otrans = self.outputTransportFactory.getTransport(client) + oprot = self.outputProtocolFactory.getProtocol(otrans) + + try: + while True: + self.processor.process(iprot, oprot) + except TTransport.TTransportException: + pass + except Exception as x: + print(x) + finally: + itrans.close() + if otrans: + otrans.close() \ No newline at end of file From ea1a29df7131e6f2a13e76f60d11cb535994b4f0 Mon Sep 17 00:00:00 2001 From: naderzare Date: Fri, 9 Aug 2024 23:20:11 -0300 Subject: [PATCH 09/15] clean code --- utils/GameHandler.py | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/utils/GameHandler.py b/utils/GameHandler.py index dded700..32080db 100644 --- a/utils/GameHandler.py +++ b/utils/GameHandler.py @@ -1,24 +1,14 @@ import threading from typing import Union -from thrift import Thrift -from thrift.protocol import TBinaryProtocol -from thrift.protocol.THeaderProtocol import THeaderProtocolFactory -from thrift.server.TServer import TServer, TSimpleServer -from thrift.transport import TSocket, TTransport, THeaderTransport -from soccer import Game from soccer.ttypes import State, Empty, PlayerActions, CoachActions, TrainerActions from soccer.ttypes import ServerParam, PlayerParam, PlayerType, InitMessage, RegisterRequest, RegisterResponse, AgentType from src.SamplePlayerAgent import SamplePlayerAgent from src.SampleCoachAgent import SampleCoachAgent from src.SampleTrainerAgent import SampleTrainerAgent from threading import Semaphore -import sys -import logging -import time -import asyncio -import multiprocessing -import os from multiprocessing import Manager, Lock + + manager = Manager() shared_lock = Lock() # Create a Lock for synchronization shared_number_of_connections = manager.Value('i', 0) From f52f2f072669f74f7b8c75f9a5bc7a08753c3f64 Mon Sep 17 00:00:00 2001 From: naderzare Date: Fri, 9 Aug 2024 23:25:43 -0300 Subject: [PATCH 10/15] clean code --- server.py | 6 ++++-- utils/GameHandler.py | 23 +++++++++++------------ 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/server.py b/server.py index 03c6949..83332e8 100644 --- a/server.py +++ b/server.py @@ -1,12 +1,14 @@ from thrift.protocol import TBinaryProtocol -from thrift.transport import TSocket, TTransport, THeaderTransport +from thrift.transport import TSocket, TTransport from soccer import Game import sys import os from utils.PFProcessServer import PFProcessServer from thrift.server.TServer import TThreadedServer from utils.GameHandler import GameHandler +import logging +logging.basicConfig(level=logging.INFO) def serve(port): handler = GameHandler() @@ -18,7 +20,7 @@ def serve(port): server = PFProcessServer(processor, transport, tfactory, pfactory) # server = TThreadedServer(processor, transport, tfactory, pfactory) - print(f"Thrift server started at port {port}") + logging.info(f"Starting server on port {port}") try: handler.running.acquire() server.serve() diff --git a/utils/GameHandler.py b/utils/GameHandler.py index 32080db..7e4a8d6 100644 --- a/utils/GameHandler.py +++ b/utils/GameHandler.py @@ -1,4 +1,3 @@ -import threading from typing import Union from soccer.ttypes import State, Empty, PlayerActions, CoachActions, TrainerActions from soccer.ttypes import ServerParam, PlayerParam, PlayerType, InitMessage, RegisterRequest, RegisterResponse, AgentType @@ -7,7 +6,9 @@ from src.SampleTrainerAgent import SampleTrainerAgent from threading import Semaphore from multiprocessing import Manager, Lock +import logging +logging.basicConfig(level=logging.INFO) manager = Manager() shared_lock = Lock() # Create a Lock for synchronization @@ -20,52 +21,50 @@ def __init__(self): self.running = Semaphore() def GetPlayerActions(self, register_response: RegisterResponse, state: State): - print("GetPlayerActions", state.world_model.cycle) - print(f"Starting thread {threading.get_ident()}") - print(f"shared_int {shared_number_of_connections.value}") + logging.debug(f"GetPlayerActions {state.world_model.cycle}") actions = self.agents[register_response.client_id].get_actions(state.world_model) res = PlayerActions(actions=actions) return res def GetCoachActions(self, register_response: RegisterResponse, state): - # print("GetCoachActions", state.world_model.cycle) + logging.debug(f"GetCoachActions {state.world_model.cycle}") actions = self.agents[register_response.client_id].get_actions(state.world_model) return CoachActions(actions=actions) def GetTrainerActions(self, register_response: RegisterResponse, state): - # print("GetTrainerActions", state.world_model.cycle) + logging.debug(f"GetTrainerActions {state.world_model.cycle}") actions = self.agents[register_response.client_id].get_actions(state.world_model) return TrainerActions(actions=actions) def SendServerParams(self, register_response: RegisterResponse, serverParam): - print("Server params received", serverParam) + logging.debug(f"Server params received {serverParam}") self.agents[register_response.client_id].set_params(serverParam) res = Empty() return res def SendPlayerParams(self, register_response: RegisterResponse, playerParam): - print("Player params received", playerParam) + logging.debug(f"Player params received {playerParam}") self.agents[register_response.client_id].set_params(playerParam) res = Empty() return res def SendPlayerType(self, register_response: RegisterResponse, playerType): - print("Player type received", playerType) + logging.debug(f"Player type received {playerType}") self.agents[register_response.client_id].set_params(playerType) res = Empty() return res def SendInitMessage(self, register_response: RegisterResponse, initMessage): - print("Init message received", initMessage) + logging.debug(f"Init message received {initMessage}") self.agents[register_response.client_id].set_debug_mode(initMessage.debug_mode) res = Empty() return res def Register(self, register_request: RegisterRequest): - print("New connection") + logging.debug("New connection") with shared_lock: shared_number_of_connections.value += 1 - print("Number of connections", shared_number_of_connections.value) + logging.debug(f"Number of connections {shared_number_of_connections.value}") if register_request.agent_type == AgentType.PlayerT: self.agents[shared_number_of_connections.value] = SamplePlayerAgent() elif register_request.agent_type == AgentType.CoachT: From 389c9c47c8a6520b63c0ae50059aa5d16c2bbe4e Mon Sep 17 00:00:00 2001 From: naderzare Date: Sat, 10 Aug 2024 23:58:40 -0300 Subject: [PATCH 11/15] add type generator --- soccer/ttypes.pyi | 1344 +++++++++++++++++++++++++++++++++++++++++++++ type_generator.py | 171 ++++++ 2 files changed, 1515 insertions(+) create mode 100644 soccer/ttypes.pyi create mode 100644 type_generator.py diff --git a/soccer/ttypes.pyi b/soccer/ttypes.pyi new file mode 100644 index 0000000..1a99cca --- /dev/null +++ b/soccer/ttypes.pyi @@ -0,0 +1,1344 @@ +import sys +from typing import List, Dict, Tuple, Union, Any, Optional +from enum import Enum, auto + +class ViewWidth(Enum): + NARROW = auto() + NORMAL = auto() + WIDE = auto() + +class AgentType(Enum): + PlayerT = auto() + CoachT = auto() + TrainerT = auto() + +class ThriftVector2D(object): + def __init__(self, x: float = None, y: float = None, dist: float = None, angle: float = None): + pass + x: float + y: float + dist: float + angle: float + +class Ball(object): + def __init__(self, position: ThriftVector2D = None, relative_position: ThriftVector2D = None, seen_position: ThriftVector2D = None, heard_position: ThriftVector2D = None, velocity: ThriftVector2D = None, seen_velocity: ThriftVector2D = None, heard_velocity: ThriftVector2D = None, pos_count: int = None, seen_pos_count: int = None, heard_pos_count: int = None, vel_count: int = None, seen_vel_count: int = None, heard_vel_count: int = None, lost_count: int = None, ghost_count: int = None, dist_from_self: float = None, angle_from_self: float = None): + pass + position: ThriftVector2D + relative_position: ThriftVector2D + seen_position: ThriftVector2D + heard_position: ThriftVector2D + velocity: ThriftVector2D + seen_velocity: ThriftVector2D + heard_velocity: ThriftVector2D + pos_count: int + seen_pos_count: int + heard_pos_count: int + vel_count: int + seen_vel_count: int + heard_vel_count: int + lost_count: int + ghost_count: int + dist_from_self: float + angle_from_self: float + +class Side(Enum): + UNKNOWN = auto() + LEFT = auto() + RIGHT = auto() + +class LoggerLevel(Enum): + NoneLevel = auto() + SYSTEM = auto() + SENSOR = auto() + WORLD = auto() + ACTION = auto() + INTERCEPT = auto() + KICK = auto() + HOLD = auto() + DRIBBLE = auto() + PASS = auto() + CROSS = auto() + SHOOT = auto() + CLEAR = auto() + BLOCK = auto() + MARK = auto() + POSITIONING = auto() + ROLE = auto() + TEAM = auto() + COMMUNICATION = auto() + ANALYZER = auto() + ACTION_CHAIN = auto() + PLAN = auto() + +class Player(object): + def __init__(self, position: ThriftVector2D = None, seen_position: ThriftVector2D = None, heard_position: ThriftVector2D = None, velocity: ThriftVector2D = None, seen_velocity: ThriftVector2D = None, pos_count: int = None, seen_pos_count: int = None, heard_pos_count: int = None, vel_count: int = None, seen_vel_count: int = None, ghost_count: int = None, dist_from_self: float = None, angle_from_self: float = None, id: int = None, side: Side = None, uniform_number: int = None, uniform_number_count: int = None, is_goalie: bool = None, body_direction: float = None, body_direction_count: int = None, face_direction: float = None, face_direction_count: int = None, point_to_direction: float = None, point_to_direction_count: int = None, is_kicking: bool = None, dist_from_ball: float = None, angle_from_ball: float = None, ball_reach_steps: int = None, is_tackling: bool = None, type_id: int = None): + pass + position: ThriftVector2D + seen_position: ThriftVector2D + heard_position: ThriftVector2D + velocity: ThriftVector2D + seen_velocity: ThriftVector2D + pos_count: int + seen_pos_count: int + heard_pos_count: int + vel_count: int + seen_vel_count: int + ghost_count: int + dist_from_self: float + angle_from_self: float + id: int + side: Side + uniform_number: int + uniform_number_count: int + is_goalie: bool + body_direction: float + body_direction_count: int + face_direction: float + face_direction_count: int + point_to_direction: float + point_to_direction_count: int + is_kicking: bool + dist_from_ball: float + angle_from_ball: float + ball_reach_steps: int + is_tackling: bool + type_id: int + +class Self(object): + def __init__(self, position: ThriftVector2D = None, seen_position: ThriftVector2D = None, heard_position: ThriftVector2D = None, velocity: ThriftVector2D = None, seen_velocity: ThriftVector2D = None, pos_count: int = None, seen_pos_count: int = None, heard_pos_count: int = None, vel_count: int = None, seen_vel_count: int = None, ghost_count: int = None, id: int = None, side: Side = None, uniform_number: int = None, uniform_number_count: int = None, is_goalie: bool = None, body_direction: float = None, body_direction_count: int = None, face_direction: float = None, face_direction_count: int = None, point_to_direction: float = None, point_to_direction_count: int = None, is_kicking: bool = None, dist_from_ball: float = None, angle_from_ball: float = None, ball_reach_steps: int = None, is_tackling: bool = None, relative_neck_direction: float = None, stamina: float = None, is_kickable: bool = None, catch_probability: float = None, tackle_probability: float = None, foul_probability: float = None, view_width: ViewWidth = None, type_id: int = None, kick_rate: float = None): + pass + position: ThriftVector2D + seen_position: ThriftVector2D + heard_position: ThriftVector2D + velocity: ThriftVector2D + seen_velocity: ThriftVector2D + pos_count: int + seen_pos_count: int + heard_pos_count: int + vel_count: int + seen_vel_count: int + ghost_count: int + id: int + side: Side + uniform_number: int + uniform_number_count: int + is_goalie: bool + body_direction: float + body_direction_count: int + face_direction: float + face_direction_count: int + point_to_direction: float + point_to_direction_count: int + is_kicking: bool + dist_from_ball: float + angle_from_ball: float + ball_reach_steps: int + is_tackling: bool + relative_neck_direction: float + stamina: float + is_kickable: bool + catch_probability: float + tackle_probability: float + foul_probability: float + view_width: ViewWidth + type_id: int + kick_rate: float + +class InterceptActionType(Enum): + UNKNOWN_Intercept_Action_Type = auto() + OMNI_DASH = auto() + TURN_FORWARD_DASH = auto() + TURN_BACKWARD_DASH = auto() + +class InterceptInfo(object): + def __init__(self, action_type: InterceptActionType = None, turn_steps: int = None, turn_angle: float = None, dash_steps: int = None, dash_power: float = None, dash_dir: float = None, final_self_position: ThriftVector2D = None, final_ball_dist: float = None, final_stamina: float = None, value: float = None): + pass + action_type: InterceptActionType + turn_steps: int + turn_angle: float + dash_steps: int + dash_power: float + dash_dir: float + final_self_position: ThriftVector2D + final_ball_dist: float + final_stamina: float + value: float + +class InterceptTable(object): + def __init__(self, self_reach_steps: int = None, first_teammate_reach_steps: int = None, second_teammate_reach_steps: int = None, first_opponent_reach_steps: int = None, second_opponent_reach_steps: int = None, first_teammate_id: int = None, second_teammate_id: int = None, first_opponent_id: int = None, second_opponent_id: int = None, self_intercept_info: List[InterceptInfo] = None): + pass + self_reach_steps: int + first_teammate_reach_steps: int + second_teammate_reach_steps: int + first_opponent_reach_steps: int + second_opponent_reach_steps: int + first_teammate_id: int + second_teammate_id: int + first_opponent_id: int + second_opponent_id: int + self_intercept_info: List[InterceptInfo] + +class GameModeType(Enum): + BeforeKickOff = auto() + TimeOver = auto() + PlayOn = auto() + KickOff_ = auto() + KickIn_ = auto() + FreeKick_ = auto() + CornerKick_ = auto() + GoalKick_ = auto() + AfterGoal_ = auto() + OffSide_ = auto() + PenaltyKick_ = auto() + FirstHalfOver = auto() + Pause = auto() + Human = auto() + FoulCharge_ = auto() + FoulPush_ = auto() + FoulMultipleAttacker_ = auto() + FoulBallOut_ = auto() + BackPass_ = auto() + FreeKickFault_ = auto() + CatchFault_ = auto() + IndFreeKick_ = auto() + PenaltySetup_ = auto() + PenaltyReady_ = auto() + PenaltyTaken_ = auto() + PenaltyMiss_ = auto() + PenaltyScore_ = auto() + IllegalDefense_ = auto() + PenaltyOnfield_ = auto() + PenaltyFoul_ = auto() + GoalieCatch_ = auto() + ExtendHalf = auto() + MODE_MAX = auto() + +class WorldModel(object): + def __init__(self, intercept_table: InterceptTable = None, our_team_name: str = None, their_team_name: str = None, our_side: Side = None, last_set_play_start_time: int = None, myself: Self = None, ball: Ball = None, teammates: List[Player] = None, opponents: List[Player] = None, unknowns: List[Player] = None, our_players_dict: Dict[int, Player] = None, their_players_dict: Dict[int, Player] = None, our_goalie_uniform_number: int = None, their_goalie_uniform_number: int = None, offside_line_x: float = None, offside_line_x_count: int = None, kickable_teammate_id: int = None, kickable_opponent_id: int = None, last_kick_side: Side = None, last_kicker_uniform_number: int = None, cycle: int = None, game_mode_type: GameModeType = None, left_team_score: int = None, right_team_score: int = None, is_our_set_play: bool = None, is_their_set_play: bool = None, stoped_cycle: int = None, our_team_score: int = None, their_team_score: int = None, is_penalty_kick_mode: bool = None, helios_home_positions: Dict[int, ThriftVector2D] = None): + pass + intercept_table: InterceptTable + our_team_name: str + their_team_name: str + our_side: Side + last_set_play_start_time: int + myself: Self + ball: Ball + teammates: List[Player] + opponents: List[Player] + unknowns: List[Player] + our_players_dict: Dict[int, Player] + their_players_dict: Dict[int, Player] + our_goalie_uniform_number: int + their_goalie_uniform_number: int + offside_line_x: float + offside_line_x_count: int + kickable_teammate_id: int + kickable_opponent_id: int + last_kick_side: Side + last_kicker_uniform_number: int + cycle: int + game_mode_type: GameModeType + left_team_score: int + right_team_score: int + is_our_set_play: bool + is_their_set_play: bool + stoped_cycle: int + our_team_score: int + their_team_score: int + is_penalty_kick_mode: bool + helios_home_positions: Dict[int, ThriftVector2D] + +class State(object): + def __init__(self, agent_type: AgentType = None, world_model: WorldModel = None, full_world_model: WorldModel = None): + pass + agent_type: AgentType + world_model: WorldModel + full_world_model: WorldModel + +class InitMessage(object): + def __init__(self, agent_type: AgentType = None, debug_mode: bool = None): + pass + agent_type: AgentType + debug_mode: bool + +class Dash(object): + def __init__(self, power: float = None, relative_direction: float = None): + pass + power: float + relative_direction: float + +class Turn(object): + def __init__(self, relative_direction: float = None): + pass + relative_direction: float + +class Kick(object): + def __init__(self, power: float = None, relative_direction: float = None): + pass + power: float + relative_direction: float + +class Tackle(object): + def __init__(self, power_or_dir: float = None, foul: bool = None): + pass + power_or_dir: float + foul: bool + +class Catch(object): + def __init__(self, ): + pass + pass + +class Move(object): + def __init__(self, x: float = None, y: float = None): + pass + x: float + y: float + +class TurnNeck(object): + def __init__(self, moment: float = None): + pass + moment: float + +class ChangeView(object): + def __init__(self, view_width: ViewWidth = None): + pass + view_width: ViewWidth + +class BallMessage(object): + def __init__(self, ball_position: ThriftVector2D = None, ball_velocity: ThriftVector2D = None): + pass + ball_position: ThriftVector2D + ball_velocity: ThriftVector2D + +class PassMessage(object): + def __init__(self, receiver_uniform_number: int = None, receiver_point: ThriftVector2D = None, ball_position: ThriftVector2D = None, ball_velocity: ThriftVector2D = None): + pass + receiver_uniform_number: int + receiver_point: ThriftVector2D + ball_position: ThriftVector2D + ball_velocity: ThriftVector2D + +class InterceptMessage(object): + def __init__(self, our: bool = None, uniform_number: int = None, cycle: int = None): + pass + our: bool + uniform_number: int + cycle: int + +class GoalieMessage(object): + def __init__(self, goalie_uniform_number: int = None, goalie_position: ThriftVector2D = None, goalie_body_direction: float = None): + pass + goalie_uniform_number: int + goalie_position: ThriftVector2D + goalie_body_direction: float + +class GoalieAndPlayerMessage(object): + def __init__(self, goalie_uniform_number: int = None, goalie_position: ThriftVector2D = None, goalie_body_direction: float = None, player_uniform_number: int = None, player_position: ThriftVector2D = None): + pass + goalie_uniform_number: int + goalie_position: ThriftVector2D + goalie_body_direction: float + player_uniform_number: int + player_position: ThriftVector2D + +class OffsideLineMessage(object): + def __init__(self, offside_line_x: float = None): + pass + offside_line_x: float + +class DefenseLineMessage(object): + def __init__(self, defense_line_x: float = None): + pass + defense_line_x: float + +class WaitRequestMessage(object): + def __init__(self, ): + pass + pass + +class SetplayMessage(object): + def __init__(self, wait_step: int = None): + pass + wait_step: int + +class PassRequestMessage(object): + def __init__(self, target_point: ThriftVector2D = None): + pass + target_point: ThriftVector2D + +class StaminaMessage(object): + def __init__(self, stamina: float = None): + pass + stamina: float + +class RecoveryMessage(object): + def __init__(self, recovery: float = None): + pass + recovery: float + +class StaminaCapacityMessage(object): + def __init__(self, stamina_capacity: float = None): + pass + stamina_capacity: float + +class DribbleMessage(object): + def __init__(self, target_point: ThriftVector2D = None, queue_count: int = None): + pass + target_point: ThriftVector2D + queue_count: int + +class BallGoalieMessage(object): + def __init__(self, ball_position: ThriftVector2D = None, ball_velocity: ThriftVector2D = None, goalie_position: ThriftVector2D = None, goalie_body_direction: float = None): + pass + ball_position: ThriftVector2D + ball_velocity: ThriftVector2D + goalie_position: ThriftVector2D + goalie_body_direction: float + +class OnePlayerMessage(object): + def __init__(self, uniform_number: int = None, position: ThriftVector2D = None): + pass + uniform_number: int + position: ThriftVector2D + +class TwoPlayerMessage(object): + def __init__(self, first_uniform_number: int = None, first_position: ThriftVector2D = None, second_uniform_number: int = None, second_position: ThriftVector2D = None): + pass + first_uniform_number: int + first_position: ThriftVector2D + second_uniform_number: int + second_position: ThriftVector2D + +class ThreePlayerMessage(object): + def __init__(self, first_uniform_number: int = None, first_position: ThriftVector2D = None, second_uniform_number: int = None, second_position: ThriftVector2D = None, third_uniform_number: int = None, third_position: ThriftVector2D = None): + pass + first_uniform_number: int + first_position: ThriftVector2D + second_uniform_number: int + second_position: ThriftVector2D + third_uniform_number: int + third_position: ThriftVector2D + +class SelfMessage(object): + def __init__(self, self_position: ThriftVector2D = None, self_body_direction: float = None, self_stamina: float = None): + pass + self_position: ThriftVector2D + self_body_direction: float + self_stamina: float + +class TeammateMessage(object): + def __init__(self, uniform_number: int = None, position: ThriftVector2D = None, body_direction: float = None): + pass + uniform_number: int + position: ThriftVector2D + body_direction: float + +class OpponentMessage(object): + def __init__(self, uniform_number: int = None, position: ThriftVector2D = None, body_direction: float = None): + pass + uniform_number: int + position: ThriftVector2D + body_direction: float + +class BallPlayerMessage(object): + def __init__(self, ball_position: ThriftVector2D = None, ball_velocity: ThriftVector2D = None, uniform_number: int = None, player_position: ThriftVector2D = None, body_direction: float = None): + pass + ball_position: ThriftVector2D + ball_velocity: ThriftVector2D + uniform_number: int + player_position: ThriftVector2D + body_direction: float + +class Say(object): + def __init__(self, ball_message: BallMessage = None, pass_message: PassMessage = None, intercept_message: InterceptMessage = None, goalie_message: GoalieMessage = None, goalie_and_player_message: GoalieAndPlayerMessage = None, offside_line_message: OffsideLineMessage = None, defense_line_message: DefenseLineMessage = None, wait_request_message: WaitRequestMessage = None, setplay_message: SetplayMessage = None, pass_request_message: PassRequestMessage = None, stamina_message: StaminaMessage = None, recovery_message: RecoveryMessage = None, stamina_capacity_message: StaminaCapacityMessage = None, dribble_message: DribbleMessage = None, ball_goalie_message: BallGoalieMessage = None, one_player_message: OnePlayerMessage = None, two_player_message: TwoPlayerMessage = None, three_player_message: ThreePlayerMessage = None, self_message: SelfMessage = None, teammate_message: TeammateMessage = None, opponent_message: OpponentMessage = None, ball_player_message: BallPlayerMessage = None): + pass + ball_message: BallMessage + pass_message: PassMessage + intercept_message: InterceptMessage + goalie_message: GoalieMessage + goalie_and_player_message: GoalieAndPlayerMessage + offside_line_message: OffsideLineMessage + defense_line_message: DefenseLineMessage + wait_request_message: WaitRequestMessage + setplay_message: SetplayMessage + pass_request_message: PassRequestMessage + stamina_message: StaminaMessage + recovery_message: RecoveryMessage + stamina_capacity_message: StaminaCapacityMessage + dribble_message: DribbleMessage + ball_goalie_message: BallGoalieMessage + one_player_message: OnePlayerMessage + two_player_message: TwoPlayerMessage + three_player_message: ThreePlayerMessage + self_message: SelfMessage + teammate_message: TeammateMessage + opponent_message: OpponentMessage + ball_player_message: BallPlayerMessage + +class PointTo(object): + def __init__(self, x: float = None, y: float = None): + pass + x: float + y: float + +class PointToOf(object): + def __init__(self, ): + pass + pass + +class AttentionTo(object): + def __init__(self, side: Side = None, unum: int = None): + pass + side: Side + unum: int + +class AttentionToOf(object): + def __init__(self, ): + pass + pass + +class AddText(object): + def __init__(self, level: LoggerLevel = None, message: str = None): + pass + level: LoggerLevel + message: str + +class AddPoint(object): + def __init__(self, level: LoggerLevel = None, point: ThriftVector2D = None, color: str = None): + pass + level: LoggerLevel + point: ThriftVector2D + color: str + +class AddLine(object): + def __init__(self, level: LoggerLevel = None, start_point: ThriftVector2D = None, end_point: ThriftVector2D = None, color: str = None): + pass + level: LoggerLevel + start_point: ThriftVector2D + end_point: ThriftVector2D + color: str + +class AddArc(object): + def __init__(self, level: LoggerLevel = None, center: ThriftVector2D = None, radius: float = None, start_angle: float = None, span_angel: float = None, color: str = None): + pass + level: LoggerLevel + center: ThriftVector2D + radius: float + start_angle: float + span_angel: float + color: str + +class AddCircle(object): + def __init__(self, level: LoggerLevel = None, center: ThriftVector2D = None, radius: float = None, color: str = None, fill: bool = None): + pass + level: LoggerLevel + center: ThriftVector2D + radius: float + color: str + fill: bool + +class AddTriangle(object): + def __init__(self, level: LoggerLevel = None, point1: ThriftVector2D = None, point2: ThriftVector2D = None, point3: ThriftVector2D = None, color: str = None, fill: bool = None): + pass + level: LoggerLevel + point1: ThriftVector2D + point2: ThriftVector2D + point3: ThriftVector2D + color: str + fill: bool + +class AddRectangle(object): + def __init__(self, level: LoggerLevel = None, left: float = None, top: float = None, length: float = None, width: float = None, color: str = None, fill: bool = None): + pass + level: LoggerLevel + left: float + top: float + length: float + width: float + color: str + fill: bool + +class AddSector(object): + def __init__(self, level: LoggerLevel = None, center: ThriftVector2D = None, min_radius: float = None, max_radius: float = None, start_angle: float = None, span_angel: float = None, color: str = None, fill: bool = None): + pass + level: LoggerLevel + center: ThriftVector2D + min_radius: float + max_radius: float + start_angle: float + span_angel: float + color: str + fill: bool + +class AddMessage(object): + def __init__(self, level: LoggerLevel = None, position: ThriftVector2D = None, message: str = None, color: str = None): + pass + level: LoggerLevel + position: ThriftVector2D + message: str + color: str + +class Log(object): + def __init__(self, add_text: AddText = None, add_point: AddPoint = None, add_line: AddLine = None, add_arc: AddArc = None, add_circle: AddCircle = None, add_triangle: AddTriangle = None, add_rectangle: AddRectangle = None, add_sector: AddSector = None, add_message: AddMessage = None): + pass + add_text: AddText + add_point: AddPoint + add_line: AddLine + add_arc: AddArc + add_circle: AddCircle + add_triangle: AddTriangle + add_rectangle: AddRectangle + add_sector: AddSector + add_message: AddMessage + +class DebugClient(object): + def __init__(self, message: str = None): + pass + message: str + +class Body_GoToPoint(object): + def __init__(self, target_point: ThriftVector2D = None, distance_threshold: float = None, max_dash_power: float = None): + pass + target_point: ThriftVector2D + distance_threshold: float + max_dash_power: float + +class Body_SmartKick(object): + def __init__(self, target_point: ThriftVector2D = None, first_speed: float = None, first_speed_threshold: float = None, max_steps: int = None): + pass + target_point: ThriftVector2D + first_speed: float + first_speed_threshold: float + max_steps: int + +class Bhv_BeforeKickOff(object): + def __init__(self, point: ThriftVector2D = None): + pass + point: ThriftVector2D + +class Bhv_BodyNeckToBall(object): + def __init__(self, ): + pass + pass + +class Bhv_BodyNeckToPoint(object): + def __init__(self, point: ThriftVector2D = None): + pass + point: ThriftVector2D + +class Bhv_Emergency(object): + def __init__(self, ): + pass + pass + +class Bhv_GoToPointLookBall(object): + def __init__(self, target_point: ThriftVector2D = None, distance_threshold: float = None, max_dash_power: float = None): + pass + target_point: ThriftVector2D + distance_threshold: float + max_dash_power: float + +class Bhv_NeckBodyToBall(object): + def __init__(self, angle_buf: float = None): + pass + angle_buf: float + +class Bhv_NeckBodyToPoint(object): + def __init__(self, point: ThriftVector2D = None, angle_buf: float = None): + pass + point: ThriftVector2D + angle_buf: float + +class Bhv_ScanField(object): + def __init__(self, ): + pass + pass + +class Body_AdvanceBall(object): + def __init__(self, ): + pass + pass + +class Body_ClearBall(object): + def __init__(self, ): + pass + pass + +class Body_Dribble(object): + def __init__(self, target_point: ThriftVector2D = None, distance_threshold: float = None, dash_power: float = None, dash_count: int = None, dodge: bool = None): + pass + target_point: ThriftVector2D + distance_threshold: float + dash_power: float + dash_count: int + dodge: bool + +class Body_GoToPointDodge(object): + def __init__(self, target_point: ThriftVector2D = None, dash_power: float = None): + pass + target_point: ThriftVector2D + dash_power: float + +class Body_HoldBall(object): + def __init__(self, do_turn: bool = None, turn_target_point: ThriftVector2D = None, kick_target_point: ThriftVector2D = None): + pass + do_turn: bool + turn_target_point: ThriftVector2D + kick_target_point: ThriftVector2D + +class Body_Intercept(object): + def __init__(self, save_recovery: bool = None, face_point: ThriftVector2D = None): + pass + save_recovery: bool + face_point: ThriftVector2D + +class Body_KickOneStep(object): + def __init__(self, target_point: ThriftVector2D = None, first_speed: float = None, force_mode: bool = None): + pass + target_point: ThriftVector2D + first_speed: float + force_mode: bool + +class Body_StopBall(object): + def __init__(self, ): + pass + pass + +class Body_StopDash(object): + def __init__(self, save_recovery: bool = None): + pass + save_recovery: bool + +class Body_TackleToPoint(object): + def __init__(self, target_point: ThriftVector2D = None, min_probability: float = None, min_speed: float = None): + pass + target_point: ThriftVector2D + min_probability: float + min_speed: float + +class Body_TurnToAngle(object): + def __init__(self, angle: float = None): + pass + angle: float + +class Body_TurnToBall(object): + def __init__(self, cycle: int = None): + pass + cycle: int + +class Body_TurnToPoint(object): + def __init__(self, target_point: ThriftVector2D = None, cycle: int = None): + pass + target_point: ThriftVector2D + cycle: int + +class Focus_MoveToPoint(object): + def __init__(self, target_point: ThriftVector2D = None): + pass + target_point: ThriftVector2D + +class Focus_Reset(object): + def __init__(self, ): + pass + pass + +class Neck_ScanField(object): + def __init__(self, ): + pass + pass + +class Neck_ScanPlayers(object): + def __init__(self, ): + pass + pass + +class Neck_TurnToBallAndPlayer(object): + def __init__(self, side: Side = None, uniform_number: int = None, count_threshold: int = None): + pass + side: Side + uniform_number: int + count_threshold: int + +class Neck_TurnToBallOrScan(object): + def __init__(self, count_threshold: int = None): + pass + count_threshold: int + +class Neck_TurnToBall(object): + def __init__(self, ): + pass + pass + +class Neck_TurnToGoalieOrScan(object): + def __init__(self, count_threshold: int = None): + pass + count_threshold: int + +class Neck_TurnToLowConfTeammate(object): + def __init__(self, ): + pass + pass + +class Neck_TurnToPlayerOrScan(object): + def __init__(self, side: Side = None, uniform_number: int = None, count_threshold: int = None): + pass + side: Side + uniform_number: int + count_threshold: int + +class Neck_TurnToPoint(object): + def __init__(self, target_point: ThriftVector2D = None): + pass + target_point: ThriftVector2D + +class Neck_TurnToRelative(object): + def __init__(self, angle: float = None): + pass + angle: float + +class View_ChangeWidth(object): + def __init__(self, view_width: ViewWidth = None): + pass + view_width: ViewWidth + +class View_Normal(object): + def __init__(self, ): + pass + pass + +class View_Synch(object): + def __init__(self, ): + pass + pass + +class View_Wide(object): + def __init__(self, ): + pass + pass + +class HeliosGoalie(object): + def __init__(self, ): + pass + pass + +class HeliosGoalieMove(object): + def __init__(self, ): + pass + pass + +class HeliosGoalieKick(object): + def __init__(self, ): + pass + pass + +class HeliosShoot(object): + def __init__(self, ): + pass + pass + +class HeliosChainAction(object): + def __init__(self, direct_pass: bool = None, lead_pass: bool = None, through_pass: bool = None, short_dribble: bool = None, long_dribble: bool = None, cross: bool = None, simple_pass: bool = None, simple_dribble: bool = None, simple_shoot: bool = None): + pass + direct_pass: bool + lead_pass: bool + through_pass: bool + short_dribble: bool + long_dribble: bool + cross: bool + simple_pass: bool + simple_dribble: bool + simple_shoot: bool + +class HeliosBasicOffensive(object): + def __init__(self, ): + pass + pass + +class HeliosBasicMove(object): + def __init__(self, ): + pass + pass + +class HeliosSetPlay(object): + def __init__(self, ): + pass + pass + +class HeliosPenalty(object): + def __init__(self, ): + pass + pass + +class HeliosCommunicaion(object): + def __init__(self, ): + pass + pass + +class PlayerAction(object): + def __init__(self, dash: Dash = None, turn: Turn = None, kick: Kick = None, tackle: Tackle = None, catch_action: Catch = None, move: Move = None, turn_neck: TurnNeck = None, change_view: ChangeView = None, say: Say = None, point_to: PointTo = None, point_to_of: PointToOf = None, attention_to: AttentionTo = None, attention_to_of: AttentionToOf = None, log: Log = None, debug_client: DebugClient = None, body_go_to_point: Body_GoToPoint = None, body_smart_kick: Body_SmartKick = None, bhv_before_kick_off: Bhv_BeforeKickOff = None, bhv_body_neck_to_ball: Bhv_BodyNeckToBall = None, bhv_body_neck_to_point: Bhv_BodyNeckToPoint = None, bhv_emergency: Bhv_Emergency = None, bhv_go_to_point_look_ball: Bhv_GoToPointLookBall = None, bhv_neck_body_to_ball: Bhv_NeckBodyToBall = None, bhv_neck_body_to_point: Bhv_NeckBodyToPoint = None, bhv_scan_field: Bhv_ScanField = None, body_advance_ball: Body_AdvanceBall = None, body_clear_ball: Body_ClearBall = None, body_dribble: Body_Dribble = None, body_go_to_point_dodge: Body_GoToPointDodge = None, body_hold_ball: Body_HoldBall = None, body_intercept: Body_Intercept = None, body_kick_one_step: Body_KickOneStep = None, body_stop_ball: Body_StopBall = None, body_stop_dash: Body_StopDash = None, body_tackle_to_point: Body_TackleToPoint = None, body_turn_to_angle: Body_TurnToAngle = None, body_turn_to_ball: Body_TurnToBall = None, body_turn_to_point: Body_TurnToPoint = None, focus_move_to_point: Focus_MoveToPoint = None, focus_reset: Focus_Reset = None, neck_scan_field: Neck_ScanField = None, neck_scan_players: Neck_ScanPlayers = None, neck_turn_to_ball_and_player: Neck_TurnToBallAndPlayer = None, neck_turn_to_ball_or_scan: Neck_TurnToBallOrScan = None, neck_turn_to_ball: Neck_TurnToBall = None, neck_turn_to_goalie_or_scan: Neck_TurnToGoalieOrScan = None, neck_turn_to_low_conf_teammate: Neck_TurnToLowConfTeammate = None, neck_turn_to_player_or_scan: Neck_TurnToPlayerOrScan = None, neck_turn_to_point: Neck_TurnToPoint = None, neck_turn_to_relative: Neck_TurnToRelative = None, view_change_width: View_ChangeWidth = None, view_normal: View_Normal = None, view_synch: View_Synch = None, view_wide: View_Wide = None, helios_goalie: HeliosGoalie = None, helios_goalie_move: HeliosGoalieMove = None, helios_goalie_kick: HeliosGoalieKick = None, helios_shoot: HeliosShoot = None, helios_chain_action: HeliosChainAction = None, helios_basic_offensive: HeliosBasicOffensive = None, helios_basic_move: HeliosBasicMove = None, helios_set_play: HeliosSetPlay = None, helios_penalty: HeliosPenalty = None, helios_communication: HeliosCommunicaion = None): + pass + dash: Dash + turn: Turn + kick: Kick + tackle: Tackle + catch_action: Catch + move: Move + turn_neck: TurnNeck + change_view: ChangeView + say: Say + point_to: PointTo + point_to_of: PointToOf + attention_to: AttentionTo + attention_to_of: AttentionToOf + log: Log + debug_client: DebugClient + body_go_to_point: Body_GoToPoint + body_smart_kick: Body_SmartKick + bhv_before_kick_off: Bhv_BeforeKickOff + bhv_body_neck_to_ball: Bhv_BodyNeckToBall + bhv_body_neck_to_point: Bhv_BodyNeckToPoint + bhv_emergency: Bhv_Emergency + bhv_go_to_point_look_ball: Bhv_GoToPointLookBall + bhv_neck_body_to_ball: Bhv_NeckBodyToBall + bhv_neck_body_to_point: Bhv_NeckBodyToPoint + bhv_scan_field: Bhv_ScanField + body_advance_ball: Body_AdvanceBall + body_clear_ball: Body_ClearBall + body_dribble: Body_Dribble + body_go_to_point_dodge: Body_GoToPointDodge + body_hold_ball: Body_HoldBall + body_intercept: Body_Intercept + body_kick_one_step: Body_KickOneStep + body_stop_ball: Body_StopBall + body_stop_dash: Body_StopDash + body_tackle_to_point: Body_TackleToPoint + body_turn_to_angle: Body_TurnToAngle + body_turn_to_ball: Body_TurnToBall + body_turn_to_point: Body_TurnToPoint + focus_move_to_point: Focus_MoveToPoint + focus_reset: Focus_Reset + neck_scan_field: Neck_ScanField + neck_scan_players: Neck_ScanPlayers + neck_turn_to_ball_and_player: Neck_TurnToBallAndPlayer + neck_turn_to_ball_or_scan: Neck_TurnToBallOrScan + neck_turn_to_ball: Neck_TurnToBall + neck_turn_to_goalie_or_scan: Neck_TurnToGoalieOrScan + neck_turn_to_low_conf_teammate: Neck_TurnToLowConfTeammate + neck_turn_to_player_or_scan: Neck_TurnToPlayerOrScan + neck_turn_to_point: Neck_TurnToPoint + neck_turn_to_relative: Neck_TurnToRelative + view_change_width: View_ChangeWidth + view_normal: View_Normal + view_synch: View_Synch + view_wide: View_Wide + helios_goalie: HeliosGoalie + helios_goalie_move: HeliosGoalieMove + helios_goalie_kick: HeliosGoalieKick + helios_shoot: HeliosShoot + helios_chain_action: HeliosChainAction + helios_basic_offensive: HeliosBasicOffensive + helios_basic_move: HeliosBasicMove + helios_set_play: HeliosSetPlay + helios_penalty: HeliosPenalty + helios_communication: HeliosCommunicaion + +class PlayerActions(object): + def __init__(self, actions: List[PlayerAction] = None): + pass + actions: List[PlayerAction] + +class ChangePlayerType(object): + def __init__(self, uniform_number: int = None, type: int = None): + pass + uniform_number: int + type: int + +class DoHeliosSubstitute(object): + def __init__(self, ): + pass + pass + +class DoHeliosSayPlayerTypes(object): + def __init__(self, ): + pass + pass + +class CoachAction(object): + def __init__(self, change_player_types: ChangePlayerType = None, do_helios_substitute: DoHeliosSubstitute = None, do_helios_say_player_types: DoHeliosSayPlayerTypes = None): + pass + change_player_types: ChangePlayerType + do_helios_substitute: DoHeliosSubstitute + do_helios_say_player_types: DoHeliosSayPlayerTypes + +class CoachActions(object): + def __init__(self, actions: List[CoachAction] = None): + pass + actions: List[CoachAction] + +class DoKickOff(object): + def __init__(self, ): + pass + pass + +class DoMoveBall(object): + def __init__(self, position: ThriftVector2D = None, velocity: ThriftVector2D = None): + pass + position: ThriftVector2D + velocity: ThriftVector2D + +class DoMovePlayer(object): + def __init__(self, our_side: bool = None, uniform_number: int = None, position: ThriftVector2D = None, body_direction: float = None): + pass + our_side: bool + uniform_number: int + position: ThriftVector2D + body_direction: float + +class DoRecover(object): + def __init__(self, ): + pass + pass + +class DoChangeMode(object): + def __init__(self, game_mode_type: GameModeType = None, side: Side = None): + pass + game_mode_type: GameModeType + side: Side + +class DoChangePlayerType(object): + def __init__(self, our_side: bool = None, uniform_number: int = None, type: int = None): + pass + our_side: bool + uniform_number: int + type: int + +class TrainerAction(object): + def __init__(self, do_kick_off: DoKickOff = None, do_move_ball: DoMoveBall = None, do_move_player: DoMovePlayer = None, do_recover: DoRecover = None, do_change_mode: DoChangeMode = None, do_change_player_type: DoChangePlayerType = None): + pass + do_kick_off: DoKickOff + do_move_ball: DoMoveBall + do_move_player: DoMovePlayer + do_recover: DoRecover + do_change_mode: DoChangeMode + do_change_player_type: DoChangePlayerType + +class TrainerActions(object): + def __init__(self, actions: List[TrainerAction] = None): + pass + actions: List[TrainerAction] + +class ServerParam(object): + def __init__(self, agent_type: AgentType = None, inertia_moment: float = None, player_size: float = None, player_decay: float = None, player_rand: float = None, player_weight: float = None, player_speed_max: float = None, player_accel_max: float = None, stamina_max: float = None, stamina_inc_max: float = None, recover_init: float = None, recover_dec_thr: float = None, recover_min: float = None, recover_dec: float = None, effort_init: float = None, effort_dec_thr: float = None, effort_min: float = None, effort_dec: float = None, effort_inc_thr: float = None, effort_inc: float = None, kick_rand: float = None, team_actuator_noise: bool = None, player_rand_factor_l: float = None, player_rand_factor_r: float = None, kick_rand_factor_l: float = None, kick_rand_factor_r: float = None, ball_size: float = None, ball_decay: float = None, ball_rand: float = None, ball_weight: float = None, ball_speed_max: float = None, ball_accel_max: float = None, dash_power_rate: float = None, kick_power_rate: float = None, kickable_margin: float = None, control_radius: float = None, control_radius_width: float = None, max_power: float = None, min_power: float = None, max_moment: float = None, min_moment: float = None, max_neck_moment: float = None, min_neck_moment: float = None, max_neck_angle: float = None, min_neck_angle: float = None, visible_angle: float = None, visible_distance: float = None, wind_dir: float = None, wind_force: float = None, wind_angle: float = None, wind_rand: float = None, kickable_area: float = None, catch_area_l: float = None, catch_area_w: float = None, catch_probability: float = None, goalie_max_moves: int = None, corner_kick_margin: float = None, offside_active_area_size: float = None, wind_none: bool = None, use_wind_random: bool = None, coach_say_count_max: int = None, coach_say_msg_size: int = None, clang_win_size: int = None, clang_define_win: int = None, clang_meta_win: int = None, clang_advice_win: int = None, clang_info_win: int = None, clang_mess_delay: int = None, clang_mess_per_cycle: int = None, half_time: int = None, simulator_step: int = None, send_step: int = None, recv_step: int = None, sense_body_step: int = None, lcm_step: int = None, player_say_msg_size: int = None, player_hear_max: int = None, player_hear_inc: int = None, player_hear_decay: int = None, catch_ban_cycle: int = None, slow_down_factor: int = None, use_offside: bool = None, kickoff_offside: bool = None, offside_kick_margin: float = None, audio_cut_dist: float = None, dist_quantize_step: float = None, landmark_dist_quantize_step: float = None, dir_quantize_step: float = None, dist_quantize_step_l: float = None, dist_quantize_step_r: float = None, landmark_dist_quantize_step_l: float = None, landmark_dist_quantize_step_r: float = None, dir_quantize_step_l: float = None, dir_quantize_step_r: float = None, coach_mode: bool = None, coach_with_referee_mode: bool = None, use_old_coach_hear: bool = None, slowness_on_top_for_left_team: float = None, slowness_on_top_for_right_team: float = None, start_goal_l: int = None, start_goal_r: int = None, fullstate_l: bool = None, fullstate_r: bool = None, drop_ball_time: int = None, synch_mode: bool = None, synch_offset: int = None, synch_micro_sleep: int = None, point_to_ban: int = None, point_to_duration: int = None, player_port: int = None, trainer_port: int = None, online_coach_port: int = None, verbose_mode: bool = None, coach_send_vi_step: int = None, replay_file: str = None, landmark_file: str = None, send_comms: bool = None, text_logging: bool = None, game_logging: bool = None, game_log_version: int = None, text_log_dir: str = None, game_log_dir: str = None, text_log_fixed_name: str = None, game_log_fixed_name: str = None, use_text_log_fixed: bool = None, use_game_log_fixed: bool = None, use_text_log_dated: bool = None, use_game_log_dated: bool = None, log_date_format: str = None, log_times: bool = None, record_message: bool = None, text_log_compression: int = None, game_log_compression: int = None, use_profile: bool = None, tackle_dist: float = None, tackle_back_dist: float = None, tackle_width: float = None, tackle_exponent: float = None, tackle_cycles: int = None, tackle_power_rate: float = None, freeform_wait_period: int = None, freeform_send_period: int = None, free_kick_faults: bool = None, back_passes: bool = None, proper_goal_kicks: bool = None, stopped_ball_vel: float = None, max_goal_kicks: int = None, clang_del_win: int = None, clang_rule_win: int = None, auto_mode: bool = None, kick_off_wait: int = None, connect_wait: int = None, game_over_wait: int = None, team_l_start: str = None, team_r_start: str = None, keepaway_mode: bool = None, keepaway_length: float = None, keepaway_width: float = None, keepaway_logging: bool = None, keepaway_log_dir: str = None, keepaway_log_fixed_name: str = None, keepaway_log_fixed: bool = None, keepaway_log_dated: bool = None, keepaway_start: int = None, nr_normal_halfs: int = None, nr_extra_halfs: int = None, penalty_shoot_outs: bool = None, pen_before_setup_wait: int = None, pen_setup_wait: int = None, pen_ready_wait: int = None, pen_taken_wait: int = None, pen_nr_kicks: int = None, pen_max_extra_kicks: int = None, pen_dist_x: float = None, pen_random_winner: bool = None, pen_allow_mult_kicks: bool = None, pen_max_goalie_dist_x: float = None, pen_coach_moves_players: bool = None, module_dir: str = None, ball_stuck_area: float = None, coach_msg_file: str = None, max_tackle_power: float = None, max_back_tackle_power: float = None, player_speed_max_min: float = None, extra_stamina: float = None, synch_see_offset: int = None, extra_half_time: int = None, stamina_capacity: float = None, max_dash_angle: float = None, min_dash_angle: float = None, dash_angle_step: float = None, side_dash_rate: float = None, back_dash_rate: float = None, max_dash_power: float = None, min_dash_power: float = None, tackle_rand_factor: float = None, foul_detect_probability: float = None, foul_exponent: float = None, foul_cycles: int = None, golden_goal: bool = None, red_card_probability: float = None, illegal_defense_duration: int = None, illegal_defense_number: int = None, illegal_defense_dist_x: float = None, illegal_defense_width: float = None, fixed_teamname_l: str = None, fixed_teamname_r: str = None, max_catch_angle: float = None, min_catch_angle: float = None, random_seed: int = None, long_kick_power_factor: float = None, long_kick_delay: int = None, max_monitors: int = None, catchable_area: float = None, real_speed_max: float = None, pitch_half_length: float = None, pitch_half_width: float = None, our_penalty_area_line_x: float = None, their_penalty_area_line_x: float = None, penalty_area_half_width: float = None, penalty_area_length: float = None, goal_width: float = None): + pass + agent_type: AgentType + inertia_moment: float + player_size: float + player_decay: float + player_rand: float + player_weight: float + player_speed_max: float + player_accel_max: float + stamina_max: float + stamina_inc_max: float + recover_init: float + recover_dec_thr: float + recover_min: float + recover_dec: float + effort_init: float + effort_dec_thr: float + effort_min: float + effort_dec: float + effort_inc_thr: float + effort_inc: float + kick_rand: float + team_actuator_noise: bool + player_rand_factor_l: float + player_rand_factor_r: float + kick_rand_factor_l: float + kick_rand_factor_r: float + ball_size: float + ball_decay: float + ball_rand: float + ball_weight: float + ball_speed_max: float + ball_accel_max: float + dash_power_rate: float + kick_power_rate: float + kickable_margin: float + control_radius: float + control_radius_width: float + max_power: float + min_power: float + max_moment: float + min_moment: float + max_neck_moment: float + min_neck_moment: float + max_neck_angle: float + min_neck_angle: float + visible_angle: float + visible_distance: float + wind_dir: float + wind_force: float + wind_angle: float + wind_rand: float + kickable_area: float + catch_area_l: float + catch_area_w: float + catch_probability: float + goalie_max_moves: int + corner_kick_margin: float + offside_active_area_size: float + wind_none: bool + use_wind_random: bool + coach_say_count_max: int + coach_say_msg_size: int + clang_win_size: int + clang_define_win: int + clang_meta_win: int + clang_advice_win: int + clang_info_win: int + clang_mess_delay: int + clang_mess_per_cycle: int + half_time: int + simulator_step: int + send_step: int + recv_step: int + sense_body_step: int + lcm_step: int + player_say_msg_size: int + player_hear_max: int + player_hear_inc: int + player_hear_decay: int + catch_ban_cycle: int + slow_down_factor: int + use_offside: bool + kickoff_offside: bool + offside_kick_margin: float + audio_cut_dist: float + dist_quantize_step: float + landmark_dist_quantize_step: float + dir_quantize_step: float + dist_quantize_step_l: float + dist_quantize_step_r: float + landmark_dist_quantize_step_l: float + landmark_dist_quantize_step_r: float + dir_quantize_step_l: float + dir_quantize_step_r: float + coach_mode: bool + coach_with_referee_mode: bool + use_old_coach_hear: bool + slowness_on_top_for_left_team: float + slowness_on_top_for_right_team: float + start_goal_l: int + start_goal_r: int + fullstate_l: bool + fullstate_r: bool + drop_ball_time: int + synch_mode: bool + synch_offset: int + synch_micro_sleep: int + point_to_ban: int + point_to_duration: int + player_port: int + trainer_port: int + online_coach_port: int + verbose_mode: bool + coach_send_vi_step: int + replay_file: str + landmark_file: str + send_comms: bool + text_logging: bool + game_logging: bool + game_log_version: int + text_log_dir: str + game_log_dir: str + text_log_fixed_name: str + game_log_fixed_name: str + use_text_log_fixed: bool + use_game_log_fixed: bool + use_text_log_dated: bool + use_game_log_dated: bool + log_date_format: str + log_times: bool + record_message: bool + text_log_compression: int + game_log_compression: int + use_profile: bool + tackle_dist: float + tackle_back_dist: float + tackle_width: float + tackle_exponent: float + tackle_cycles: int + tackle_power_rate: float + freeform_wait_period: int + freeform_send_period: int + free_kick_faults: bool + back_passes: bool + proper_goal_kicks: bool + stopped_ball_vel: float + max_goal_kicks: int + clang_del_win: int + clang_rule_win: int + auto_mode: bool + kick_off_wait: int + connect_wait: int + game_over_wait: int + team_l_start: str + team_r_start: str + keepaway_mode: bool + keepaway_length: float + keepaway_width: float + keepaway_logging: bool + keepaway_log_dir: str + keepaway_log_fixed_name: str + keepaway_log_fixed: bool + keepaway_log_dated: bool + keepaway_start: int + nr_normal_halfs: int + nr_extra_halfs: int + penalty_shoot_outs: bool + pen_before_setup_wait: int + pen_setup_wait: int + pen_ready_wait: int + pen_taken_wait: int + pen_nr_kicks: int + pen_max_extra_kicks: int + pen_dist_x: float + pen_random_winner: bool + pen_allow_mult_kicks: bool + pen_max_goalie_dist_x: float + pen_coach_moves_players: bool + module_dir: str + ball_stuck_area: float + coach_msg_file: str + max_tackle_power: float + max_back_tackle_power: float + player_speed_max_min: float + extra_stamina: float + synch_see_offset: int + extra_half_time: int + stamina_capacity: float + max_dash_angle: float + min_dash_angle: float + dash_angle_step: float + side_dash_rate: float + back_dash_rate: float + max_dash_power: float + min_dash_power: float + tackle_rand_factor: float + foul_detect_probability: float + foul_exponent: float + foul_cycles: int + golden_goal: bool + red_card_probability: float + illegal_defense_duration: int + illegal_defense_number: int + illegal_defense_dist_x: float + illegal_defense_width: float + fixed_teamname_l: str + fixed_teamname_r: str + max_catch_angle: float + min_catch_angle: float + random_seed: int + long_kick_power_factor: float + long_kick_delay: int + max_monitors: int + catchable_area: float + real_speed_max: float + pitch_half_length: float + pitch_half_width: float + our_penalty_area_line_x: float + their_penalty_area_line_x: float + penalty_area_half_width: float + penalty_area_length: float + goal_width: float + +class PlayerParam(object): + def __init__(self, agent_type: AgentType = None, player_types: int = None, subs_max: int = None, pt_max: int = None, allow_mult_default_type: bool = None, player_speed_max_delta_min: float = None, player_speed_max_delta_max: float = None, stamina_inc_max_delta_factor: float = None, player_decay_delta_min: float = None, player_decay_delta_max: float = None, inertia_moment_delta_factor: float = None, dash_power_rate_delta_min: float = None, dash_power_rate_delta_max: float = None, player_size_delta_factor: float = None, kickable_margin_delta_min: float = None, kickable_margin_delta_max: float = None, kick_rand_delta_factor: float = None, extra_stamina_delta_min: float = None, extra_stamina_delta_max: float = None, effort_max_delta_factor: float = None, effort_min_delta_factor: float = None, random_seed: int = None, new_dash_power_rate_delta_min: float = None, new_dash_power_rate_delta_max: float = None, new_stamina_inc_max_delta_factor: float = None, kick_power_rate_delta_min: float = None, kick_power_rate_delta_max: float = None, foul_detect_probability_delta_factor: float = None, catchable_area_l_stretch_min: float = None, catchable_area_l_stretch_max: float = None): + pass + agent_type: AgentType + player_types: int + subs_max: int + pt_max: int + allow_mult_default_type: bool + player_speed_max_delta_min: float + player_speed_max_delta_max: float + stamina_inc_max_delta_factor: float + player_decay_delta_min: float + player_decay_delta_max: float + inertia_moment_delta_factor: float + dash_power_rate_delta_min: float + dash_power_rate_delta_max: float + player_size_delta_factor: float + kickable_margin_delta_min: float + kickable_margin_delta_max: float + kick_rand_delta_factor: float + extra_stamina_delta_min: float + extra_stamina_delta_max: float + effort_max_delta_factor: float + effort_min_delta_factor: float + random_seed: int + new_dash_power_rate_delta_min: float + new_dash_power_rate_delta_max: float + new_stamina_inc_max_delta_factor: float + kick_power_rate_delta_min: float + kick_power_rate_delta_max: float + foul_detect_probability_delta_factor: float + catchable_area_l_stretch_min: float + catchable_area_l_stretch_max: float + +class PlayerType(object): + def __init__(self, agent_type: AgentType = None, id: int = None, stamina_inc_max: float = None, player_decay: float = None, inertia_moment: float = None, dash_power_rate: float = None, player_size: float = None, kickable_margin: float = None, kick_rand: float = None, extra_stamina: float = None, effort_max: float = None, effort_min: float = None, kick_power_rate: float = None, foul_detect_probability: float = None, catchable_area_l_stretch: float = None, unum_far_length: float = None, unum_too_far_length: float = None, team_far_length: float = None, team_too_far_length: float = None, player_max_observation_length: float = None, ball_vel_far_length: float = None, ball_vel_too_far_length: float = None, ball_max_observation_length: float = None, flag_chg_far_length: float = None, flag_chg_too_far_length: float = None, flag_max_observation_length: float = None, kickable_area: float = None, reliable_catchable_dist: float = None, max_catchable_dist: float = None, real_speed_max: float = None, player_speed_max2: float = None, real_speed_max2: float = None, cycles_to_reach_max_speed: int = None, player_speed_max: float = None): + pass + agent_type: AgentType + id: int + stamina_inc_max: float + player_decay: float + inertia_moment: float + dash_power_rate: float + player_size: float + kickable_margin: float + kick_rand: float + extra_stamina: float + effort_max: float + effort_min: float + kick_power_rate: float + foul_detect_probability: float + catchable_area_l_stretch: float + unum_far_length: float + unum_too_far_length: float + team_far_length: float + team_too_far_length: float + player_max_observation_length: float + ball_vel_far_length: float + ball_vel_too_far_length: float + ball_max_observation_length: float + flag_chg_far_length: float + flag_chg_too_far_length: float + flag_max_observation_length: float + kickable_area: float + reliable_catchable_dist: float + max_catchable_dist: float + real_speed_max: float + player_speed_max2: float + real_speed_max2: float + cycles_to_reach_max_speed: int + player_speed_max: float + +class Empty(object): + def __init__(self, ): + pass + pass + +class RegisterRequest(object): + def __init__(self, agent_type: AgentType = None, team_name: str = None, uniform_number: int = None): + pass + agent_type: AgentType + team_name: str + uniform_number: int + +class RegisterResponse(object): + def __init__(self, client_id: int = None): + pass + client_id: int diff --git a/type_generator.py b/type_generator.py new file mode 100644 index 0000000..aaa487d --- /dev/null +++ b/type_generator.py @@ -0,0 +1,171 @@ +import re +from typing import List + +thrift_file = "idl/soccer_service.thrift" # Replace with your actual Thrift file name +output_file = "soccer/ttypes.pyi" + +# Regex patterns to match Thrift definitions +enum_pattern = re.compile(r"enum\s+(\w+)\s*{?") +struct_pattern = re.compile(r"struct\s+(\w+)\s*{?") +field_pattern = re.compile(r"\s*(\d+):\s*(\w+)\s+(\w+)[,;]?") +enum_field_pattern = re.compile(r"\s*(\w+)\s*=\s*(\d+),?") +list_pattern = re.compile(r"\s*(\d+):\s*list<(\w+)>\s*(\w+)[,;]?") +# 11: map our_players_dict, +map_pattern = re.compile(r"\s*(\d+):\s*map<(\w+),\s*(\w+)>\s*(\w+)[,;]?") + +# Typing map from Thrift types to Python types +type_map = { + "i32": "int", + "i64": "int", + "double": "float", + "bool": "bool", + "string": "str", + "list": "List", + "map": "Dict", +} + + +def add_types(lines: List[str]) -> None: + global type_map + + for line in lines: + # Match enums + enum_match = enum_pattern.match(line) + if enum_match: + enum_name = enum_match.group(1) + type_map[enum_name] = enum_name + continue + + # Match structs + struct_match = struct_pattern.match(line) + if struct_match: + struct_name = struct_match.group(1) + type_map[struct_name] = struct_name + continue + +class Field: + def __init__(self, name: str, type: str, is_enum: bool = False): + self.name = name + self.type = type + self.is_enum = is_enum + + def __str__(self): + if self.is_enum: + return f" {self.name} = auto()" + return f" {self.name}: {self.type}" + +class Class: + def __init__(self, name: str, is_enum: bool = False): + self.name = name + self.is_enum = is_enum + self.fields = [] + + def add_field(self, field: Field): + self.fields.append(field) + + def __str__(self): + return f"class {self.name}:\n" + "\n".join(self.fields) + +def parse_thrift_file(old_lines: list[str]) -> List[str]: + """Parse the Thrift file and return lines for .pyi file""" + lines = [] + + current_struct = None + current_struct_has_fields = False + current_enum = None + classes = [] + + for line in old_lines: + # Match enums + enum_match = enum_pattern.match(line) + struct_match = struct_pattern.match(line) + field_match = field_pattern.match(line) + enum_field_match = enum_field_pattern.match(line) + list_match = list_pattern.match(line) + map_match = map_pattern.match(line) + + if enum_match: + enum_name = enum_match.group(1) + classes.append(Class(enum_name, is_enum=True)) + continue + + if struct_match: + struct_name = struct_match.group(1) + classes.append(Class(struct_name, is_enum=False)) + continue + + if field_match: + field_type = field_match.group(2) + field_name = field_match.group(3) + python_type = type_map.get(field_type, field_type) + classes[-1].add_field(Field(field_name, python_type)) + continue + + if enum_field_match: + field_name = enum_field_match.group(1) + classes[-1].add_field(Field(field_name, "", is_enum=True)) + continue + + if list_match: + field_name = list_match.group(3) + list_type = list_match.group(2) + classes[-1].add_field(Field(field_name, f"List[{list_type}]")) + continue + + if map_match: + field_name = map_match.group(4) + key_type = map_match.group(2) + key_type = type_map.get(key_type, key_type) + value_type = map_match.group(3) + classes[-1].add_field(Field(field_name, f"Dict[{key_type}, {value_type}]")) + continue + + for class_ in classes: + lines.append("") + if class_.is_enum: + lines.append(f"class {class_.name}(Enum):") + else: + lines.append(f"class {class_.name}(object):") + init_input_str = ", ".join([f"{field.name}: {field.type} = None" for field in class_.fields]) + lines.append(f" def __init__(self, {init_input_str}):") + lines.append(" pass") + + if len(class_.fields) == 0: + lines.append(" pass") + else: + for field in class_.fields: + lines.append(str(field)) + + return lines + + +def write_pyi_file(output_file: str, lines: List[str]) -> None: + """Write the generated lines to the output .pyi file""" + with open(output_file, "w") as file: + file.write("import sys\n") + file.write("from typing import List, Dict, Tuple, Union, Any, Optional\n") + file.write("from enum import Enum, auto\n") + for line in lines: + file.write(line + "\n") + + +def main(): + file_path = thrift_file + with open(file_path, "r") as file: + content = file.read() + lines = [] + # remove optional form all lines + for line in content.splitlines(): + new_line = line.replace("optional", "") + lines.append(new_line) + + add_types(lines) + print("Types added to type map") + print(type_map) + lines = parse_thrift_file(lines) + write_pyi_file(output_file, lines) + print(f"Type annotations written to {output_file}") + + +if __name__ == "__main__": + main() From dbefb867ae1872f461890b13241473d75fcafc62 Mon Sep 17 00:00:00 2001 From: naderzare Date: Sun, 11 Aug 2024 00:47:35 -0300 Subject: [PATCH 12/15] add server gym --- server-gym.py | 206 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 206 insertions(+) create mode 100644 server-gym.py diff --git a/server-gym.py b/server-gym.py new file mode 100644 index 0000000..2cf774d --- /dev/null +++ b/server-gym.py @@ -0,0 +1,206 @@ +from thrift.protocol import TBinaryProtocol +from thrift.transport import TSocket, TTransport +from soccer import Game +import sys +import os +from utils.PFProcessServer import PFProcessServer +from thrift.server.TServer import TThreadedServer +import logging +import multiprocessing +import gym +from gym import spaces +import numpy as np +from typing import Union +from soccer.ttypes import State, Empty, PlayerActions, CoachActions, TrainerActions, WorldModel, Self, ThriftVector2D, Dash, PlayerAction +from soccer.ttypes import ServerParam, PlayerParam, PlayerType, InitMessage, RegisterRequest, RegisterResponse, AgentType, TrainerAction, DoMoveBall, DoMovePlayer +from src.SamplePlayerAgent import SamplePlayerAgent +from src.SampleCoachAgent import SampleCoachAgent +from src.SampleTrainerAgent import SampleTrainerAgent +from threading import Semaphore +from multiprocessing import Manager, Lock +import logging +import random + +logging.basicConfig(level=logging.DEBUG) + +manager = Manager() +shared_lock = Lock() # Create a Lock for synchronization +shared_number_of_connections = manager.Value('i', 0) + +class SoccerEnv(gym.Env): + def __init__(self, action_queue, observation_queue, reward_done_queue, request_to_trainer): + super(SoccerEnv, self).__init__() + self.action_queue = action_queue + self.observation_queue = observation_queue + self.reward_done_queue = reward_done_queue + self.request_to_trainer = request_to_trainer + + self.action_space = spaces.Space() + + def reset(self): + return observation_queue.get() + + def step(self, action): + self.action_queue.put(action) + reward_done = self.reward_done_queue.get() + # reward_done = RewardDone(0, False) + obs = self.observation_queue.get() + return obs, reward_done.reward, reward_done.done, {} + + def render(self): + # Clear the screen + print("Rendering") + + def distruct(self): + pass + +class RewardDone: + def __init__(self, reward, done): + self.reward = reward + self.done = done + + def __str__(self): + return f"Reward: {self.reward}, Done: {self.done}" + +class GameHandler: + def __init__(self, action_queue, observation_queue, reward_done_queue, request_to_trainer): + self.agents: dict[int, Union[SamplePlayerAgent, SampleTrainerAgent, SampleCoachAgent]] = {} + self.running = Semaphore() + self.action_queue = action_queue + self.observation_queue = observation_queue + self.reward_done_queue = reward_done_queue + self.request_to_trainer = request_to_trainer + + def GetPlayerActions(self, register_response: RegisterResponse, state: State): + logging.debug(f"GetPlayerActions {state.world_model.cycle}") + wm: WorldModel = state.world_model + myself: Self = wm.myself + self.observation_queue.put([myself.position.x, myself.position.y, myself.body_direction]) + act = self.action_queue.get() + dash = Dash(power=100, relative_direction=act) + + actions: list[PlayerAction] = [PlayerAction(dash=dash)] + res = PlayerActions(actions=actions) + logging.debug(f"Player actions: {res}") + return res + + def GetCoachActions(self, register_response: RegisterResponse, state): + logging.debug(f"GetCoachActions {state.world_model.cycle}") + actions = self.agents[register_response.client_id].get_actions(state.world_model) + return CoachActions(actions=actions) + + def GetTrainerActions(self, register_response: RegisterResponse, state: State): + + if len(state.world_model.teammates) == 0: + return TrainerActions(actions=[]) + logging.debug(f"GetTrainerActions {state.world_model.cycle}") + player_pos = state.world_model.teammates[0].position + logging.debug(f"Player position: {player_pos.x} {player_pos.y}") + if player_pos.x > 10: + action = TrainerAction( + do_move_player=DoMovePlayer( + our_side=True, + uniform_number=1, + body_direction=0, + position=ThriftVector2D(x=-10, y=0) + ) + ) + self.reward_done_queue.put(RewardDone(10, True)) + return TrainerActions(actions=[action]) + else: + self.reward_done_queue.put(RewardDone(0, False)) + return TrainerActions(actions=[]) + + def SendServerParams(self, register_response: RegisterResponse, serverParam): + # logging.debug(f"Server params received {serverParam}") + self.agents[register_response.client_id].set_params(serverParam) + res = Empty() + return res + + def SendPlayerParams(self, register_response: RegisterResponse, playerParam): + # logging.debug(f"Player params received {playerParam}") + self.agents[register_response.client_id].set_params(playerParam) + res = Empty() + return res + + def SendPlayerType(self, register_response: RegisterResponse, playerType): + # logging.debug(f"Player type received {playerType}") + self.agents[register_response.client_id].set_params(playerType) + res = Empty() + return res + + def SendInitMessage(self, register_response: RegisterResponse, initMessage): + logging.debug(f"Init message received {initMessage}") + self.agents[register_response.client_id].set_debug_mode(initMessage.debug_mode) + res = Empty() + return res + + def Register(self, register_request: RegisterRequest): + logging.debug("New connection") + with shared_lock: + shared_number_of_connections.value += 1 + logging.debug(f"Number of connections {shared_number_of_connections.value}") + if register_request.agent_type == AgentType.PlayerT: + self.agents[shared_number_of_connections.value] = SamplePlayerAgent() + elif register_request.agent_type == AgentType.CoachT: + self.agents[shared_number_of_connections.value] = SampleCoachAgent() + elif register_request.agent_type == AgentType.TrainerT: + self.agents[shared_number_of_connections.value] = SampleTrainerAgent() + res = RegisterResponse(client_id=shared_number_of_connections.value) + return res + + def SendByeCommand(self, register_response: RegisterResponse): + with shared_lock: + self.agents.pop(register_response.client_id) + res = Empty() + return res + +def serve(port, action_queue, observation_queue, reward_done_queue, request_to_trainer): + handler = GameHandler(action_queue, observation_queue, reward_done_queue, request_to_trainer) + processor = Game.Processor(handler) + transport = TSocket.TServerSocket(host='0.0.0.0', port=port) + tfactory = TTransport.TBufferedTransportFactory() + pfactory = TBinaryProtocol.TBinaryProtocolFactory() + + server = PFProcessServer(processor, transport, tfactory, pfactory) + # server = TThreadedServer(processor, transport, tfactory, pfactory) + + logging.info(f"Starting server on port {port}") + try: + handler.running.acquire() + server.serve() + except KeyboardInterrupt: + print("Stopping server") + handler.running.release() + os._exit(0) + + +def rl(action_queue, observation_queue, reward_done_queue, request_to_trainer): + logging.info("RL Process started") + env = SoccerEnv(action_queue, observation_queue, reward_done_queue, request_to_trainer) + logging.info("Environment created") + while True: + logging.info("Resetting environment") + obs = env.reset() + logging.info(f"Environment reset with observation: {obs}") + done = False + while not done: + action = random.randint(0, 360) + logging.info(f"Taking action: {action}") + obs, reward, done, _ = env.step(action) + logging.info(f"Observation: {obs} Reward: {reward} Done: {done}") + env.distruct() + +if __name__ == '__main__': + manager = multiprocessing.Manager() + action_queue = manager.Queue() + observation_queue = manager.Queue() + reward_done_queue = manager.Queue() + request_to_trainer = manager.Queue() + serve_process = multiprocessing.Process(target=serve, args=(50051, action_queue, observation_queue, reward_done_queue, request_to_trainer)) + serve_process.start() + rl_process = multiprocessing.Process(target=rl, args=(action_queue, observation_queue, reward_done_queue, request_to_trainer)) + rl_process.start() + + serve_process.join() + rl_process.join() From ded9900db499075fcda60f1620d865189aaa80c6 Mon Sep 17 00:00:00 2001 From: naderzare Date: Sun, 11 Aug 2024 01:06:58 -0300 Subject: [PATCH 13/15] update gym server and fix bug --- server-gym.py | 41 +++++++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/server-gym.py b/server-gym.py index 2cf774d..6675c06 100644 --- a/server-gym.py +++ b/server-gym.py @@ -22,6 +22,12 @@ import random logging.basicConfig(level=logging.DEBUG) +#set color to logging +logging.addLevelName(logging.DEBUG, "\033[1;34m%s\033[1;0m" % logging.getLevelName(logging.DEBUG)) +logging.addLevelName(logging.INFO, "\033[1;32m%s\033[1;0m" % logging.getLevelName(logging.INFO)) +logging.addLevelName(logging.WARNING, "\033[1;33m%s\033[1;0m" % logging.getLevelName(logging.WARNING)) +logging.addLevelName(logging.ERROR, "\033[1;31m%s\033[1;0m" % logging.getLevelName(logging.ERROR)) +logging.addLevelName(logging.CRITICAL, "\033[1;41m%s\033[1;0m" % logging.getLevelName(logging.CRITICAL)) manager = Manager() shared_lock = Lock() # Create a Lock for synchronization @@ -41,10 +47,17 @@ def reset(self): return observation_queue.get() def step(self, action): + logging.debug(f"SoccerEnv: step {action}") self.action_queue.put(action) + logging.debug("SoccerEnv: Waiting for reward_done") + self.request_to_trainer.put(Empty()) reward_done = self.reward_done_queue.get() + logging.debug(f"SoccerEnv: Reward done: {reward_done}") # reward_done = RewardDone(0, False) + logging.debug("SoccerEnv: Waiting for observation") obs = self.observation_queue.get() + logging.debug(f"SoccerEnv: Observation: {obs}") + logging.debug(f"SoccerEnv: Returning observation: {obs}, reward: {reward_done.reward}, done: {reward_done.done}") return obs, reward_done.reward, reward_done.done, {} def render(self): @@ -72,7 +85,7 @@ def __init__(self, action_queue, observation_queue, reward_done_queue, request_t self.request_to_trainer = request_to_trainer def GetPlayerActions(self, register_response: RegisterResponse, state: State): - logging.debug(f"GetPlayerActions {state.world_model.cycle}") + logging.info(f"Handler: GetPlayerActions {state.world_model.cycle}") wm: WorldModel = state.world_model myself: Self = wm.myself self.observation_queue.put([myself.position.x, myself.position.y, myself.body_direction]) @@ -81,7 +94,7 @@ def GetPlayerActions(self, register_response: RegisterResponse, state: State): actions: list[PlayerAction] = [PlayerAction(dash=dash)] res = PlayerActions(actions=actions) - logging.debug(f"Player actions: {res}") + logging.info(f"Handler: Player actions: {res}") return res def GetCoachActions(self, register_response: RegisterResponse, state): @@ -93,21 +106,25 @@ def GetTrainerActions(self, register_response: RegisterResponse, state: State): if len(state.world_model.teammates) == 0: return TrainerActions(actions=[]) - logging.debug(f"GetTrainerActions {state.world_model.cycle}") + if self.request_to_trainer.empty(): + return TrainerActions(actions=[]) + logging.error(f"Handler: GetTrainerActions {state.world_model.cycle}") player_pos = state.world_model.teammates[0].position - logging.debug(f"Player position: {player_pos.x} {player_pos.y}") - if player_pos.x > 10: + logging.error(f"Handler: Player position: {player_pos.x} {player_pos.y}") + if player_pos.x > -25: action = TrainerAction( do_move_player=DoMovePlayer( our_side=True, uniform_number=1, body_direction=0, - position=ThriftVector2D(x=-10, y=0) + position=ThriftVector2D(x=-45, y=0) ) ) + logging.error("Handler: >>done") self.reward_done_queue.put(RewardDone(10, True)) return TrainerActions(actions=[action]) else: + logging.error("Handler: >>not done") self.reward_done_queue.put(RewardDone(0, False)) return TrainerActions(actions=[]) @@ -176,19 +193,19 @@ def serve(port, action_queue, observation_queue, reward_done_queue, request_to_t def rl(action_queue, observation_queue, reward_done_queue, request_to_trainer): - logging.info("RL Process started") + logging.critical("RL: Process started") env = SoccerEnv(action_queue, observation_queue, reward_done_queue, request_to_trainer) logging.info("Environment created") + logging.critical("RL:Resetting environment") + obs = env.reset() while True: - logging.info("Resetting environment") - obs = env.reset() - logging.info(f"Environment reset with observation: {obs}") + logging.critical(f"RL:Environment reset with observation: {obs}") done = False while not done: action = random.randint(0, 360) - logging.info(f"Taking action: {action}") + logging.critical(f"RL:Taking action: {action}") obs, reward, done, _ = env.step(action) - logging.info(f"Observation: {obs} Reward: {reward} Done: {done}") + logging.critical(f"RL:Observation: {obs} Reward: {reward} Done: {done}") env.distruct() if __name__ == '__main__': From ce75b00c850279af3dc9fe12db5491f91ff322d1 Mon Sep 17 00:00:00 2001 From: naderzare Date: Sun, 11 Aug 2024 01:09:00 -0300 Subject: [PATCH 14/15] add gym to requirements.txt --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index f8ffc78..df1b54f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,3 +3,4 @@ protobuf==4.25.2 pyrusgeom==0.1.2 scipy==1.11.4 thrift==0.16.0 +gym==0.26.2 \ No newline at end of file From b666b4a8cd1eaa8fcb69e5d1ef97f90cdf9e14c6 Mon Sep 17 00:00:00 2001 From: naderzare Date: Tue, 13 Aug 2024 20:58:30 -0300 Subject: [PATCH 15/15] change thrift idl --- idl/soccer_service.thrift | 148 +++++++++---------- server-gym.py | 4 +- soccer/ttypes.py | 300 +++++++++++++++++++------------------- soccer/ttypes.pyi | 236 +++++++++++++++--------------- src/BHV_Block.py | 4 +- src/DM_NoBall.py | 6 +- src/DM_WithBall.py | 4 +- src/IAgent.py | 6 +- src/IBallAction.py | 2 +- src/SampleTrainerAgent.py | 6 +- 10 files changed, 358 insertions(+), 358 deletions(-) diff --git a/idl/soccer_service.thrift b/idl/soccer_service.thrift index cb217c4..be77b97 100644 --- a/idl/soccer_service.thrift +++ b/idl/soccer_service.thrift @@ -13,7 +13,7 @@ enum AgentType { TrainerT = 2 } -struct ThriftVector2D { +struct RpcVector2D { 1: double x, 2: double y, 3: double dist, @@ -21,13 +21,13 @@ struct ThriftVector2D { } struct Ball { - 1: ThriftVector2D position, - 2: ThriftVector2D relative_position, - 3: ThriftVector2D seen_position, - 4: ThriftVector2D heard_position, - 5: ThriftVector2D velocity, - 6: ThriftVector2D seen_velocity, - 7: ThriftVector2D heard_velocity, + 1: RpcVector2D position, + 2: RpcVector2D relative_position, + 3: RpcVector2D seen_position, + 4: RpcVector2D heard_position, + 5: RpcVector2D velocity, + 6: RpcVector2D seen_velocity, + 7: RpcVector2D heard_velocity, 8: i32 pos_count, 9: i32 seen_pos_count, 10: i32 heard_pos_count, @@ -72,11 +72,11 @@ enum LoggerLevel { } struct Player { - 1: ThriftVector2D position, - 2: ThriftVector2D seen_position, - 3: ThriftVector2D heard_position, - 4: ThriftVector2D velocity, - 5: ThriftVector2D seen_velocity, + 1: RpcVector2D position, + 2: RpcVector2D seen_position, + 3: RpcVector2D heard_position, + 4: RpcVector2D velocity, + 5: RpcVector2D seen_velocity, 6: i32 pos_count, 7: i32 seen_pos_count, 8: i32 heard_pos_count, @@ -105,11 +105,11 @@ struct Player { } struct Self { - 1: ThriftVector2D position, - 2: ThriftVector2D seen_position, - 3: ThriftVector2D heard_position, - 4: ThriftVector2D velocity, - 5: ThriftVector2D seen_velocity, + 1: RpcVector2D position, + 2: RpcVector2D seen_position, + 3: RpcVector2D heard_position, + 4: RpcVector2D velocity, + 5: RpcVector2D seen_velocity, 6: i32 pos_count, 7: i32 seen_pos_count, 8: i32 heard_pos_count, @@ -157,7 +157,7 @@ struct InterceptInfo { 4: i32 dash_steps, 5: double dash_power, 6: double dash_dir, - 7: ThriftVector2D final_self_position, + 7: RpcVector2D final_self_position, 8: double final_ball_dist, 9: double final_stamina, 10: double value @@ -243,7 +243,7 @@ struct WorldModel { 28: i32 our_team_score, 29: i32 their_team_score, 30: bool is_penalty_kick_mode, - 31: map helios_home_positions + 31: map helios_home_positions } struct State { @@ -292,15 +292,15 @@ struct ChangeView { } struct BallMessage { - 1: ThriftVector2D ball_position, - 2: ThriftVector2D ball_velocity + 1: RpcVector2D ball_position, + 2: RpcVector2D ball_velocity } struct PassMessage { 1: i32 receiver_uniform_number, - 2: ThriftVector2D receiver_point, - 3: ThriftVector2D ball_position, - 4: ThriftVector2D ball_velocity + 2: RpcVector2D receiver_point, + 3: RpcVector2D ball_position, + 4: RpcVector2D ball_velocity } struct InterceptMessage { @@ -311,16 +311,16 @@ struct InterceptMessage { struct GoalieMessage { 1: i32 goalie_uniform_number, - 2: ThriftVector2D goalie_position, + 2: RpcVector2D goalie_position, 3: double goalie_body_direction } struct GoalieAndPlayerMessage { 1: i32 goalie_uniform_number, - 2: ThriftVector2D goalie_position, + 2: RpcVector2D goalie_position, 3: double goalie_body_direction, 4: i32 player_uniform_number, - 5: ThriftVector2D player_position + 5: RpcVector2D player_position } struct OffsideLineMessage { @@ -338,7 +338,7 @@ struct SetplayMessage { } struct PassRequestMessage { - 1: ThriftVector2D target_point + 1: RpcVector2D target_point } struct StaminaMessage { @@ -354,61 +354,61 @@ struct StaminaCapacityMessage { } struct DribbleMessage { - 1: ThriftVector2D target_point, + 1: RpcVector2D target_point, 2: i32 queue_count } struct BallGoalieMessage { - 1: ThriftVector2D ball_position, - 2: ThriftVector2D ball_velocity, - 3: ThriftVector2D goalie_position, + 1: RpcVector2D ball_position, + 2: RpcVector2D ball_velocity, + 3: RpcVector2D goalie_position, 4: double goalie_body_direction } struct OnePlayerMessage { 1: i32 uniform_number, - 2: ThriftVector2D position + 2: RpcVector2D position } struct TwoPlayerMessage { 1: i32 first_uniform_number, - 2: ThriftVector2D first_position, + 2: RpcVector2D first_position, 3: i32 second_uniform_number, - 4: ThriftVector2D second_position + 4: RpcVector2D second_position } struct ThreePlayerMessage { 1: i32 first_uniform_number, - 2: ThriftVector2D first_position, + 2: RpcVector2D first_position, 3: i32 second_uniform_number, - 4: ThriftVector2D second_position, + 4: RpcVector2D second_position, 5: i32 third_uniform_number, - 6: ThriftVector2D third_position + 6: RpcVector2D third_position } struct SelfMessage { - 1: ThriftVector2D self_position, + 1: RpcVector2D self_position, 2: double self_body_direction, 3: double self_stamina } struct TeammateMessage { 1: i32 uniform_number, - 2: ThriftVector2D position, + 2: RpcVector2D position, 3: double body_direction } struct OpponentMessage { 1: i32 uniform_number, - 2: ThriftVector2D position, + 2: RpcVector2D position, 3: double body_direction } struct BallPlayerMessage { - 1: ThriftVector2D ball_position, - 2: ThriftVector2D ball_velocity, + 1: RpcVector2D ball_position, + 2: RpcVector2D ball_velocity, 3: i32 uniform_number, - 4: ThriftVector2D player_position, + 4: RpcVector2D player_position, 5: double body_direction } @@ -458,20 +458,20 @@ struct AddText { struct AddPoint { 1: LoggerLevel level, - 2: ThriftVector2D point, + 2: RpcVector2D point, 3: string color } struct AddLine { 1: LoggerLevel level, - 2: ThriftVector2D start_point, - 3: ThriftVector2D end_point, + 2: RpcVector2D start_point, + 3: RpcVector2D end_point, 4: string color } struct AddArc { 1: LoggerLevel level, - 2: ThriftVector2D center, + 2: RpcVector2D center, 3: double radius, 4: double start_angle, 5: double span_angel, @@ -480,7 +480,7 @@ struct AddArc { struct AddCircle { 1: LoggerLevel level, - 2: ThriftVector2D center, + 2: RpcVector2D center, 3: double radius, 4: string color, 5: bool fill @@ -488,9 +488,9 @@ struct AddCircle { struct AddTriangle { 1: LoggerLevel level, - 2: ThriftVector2D point1, - 3: ThriftVector2D point2, - 4: ThriftVector2D point3, + 2: RpcVector2D point1, + 3: RpcVector2D point2, + 4: RpcVector2D point3, 5: string color, 6: bool fill } @@ -507,7 +507,7 @@ struct AddRectangle { struct AddSector { 1: LoggerLevel level, - 2: ThriftVector2D center, + 2: RpcVector2D center, 3: double min_radius, 4: double max_radius, 5: double start_angle, @@ -518,7 +518,7 @@ struct AddSector { struct AddMessage { 1: LoggerLevel level, - 2: ThriftVector2D position, + 2: RpcVector2D position, 3: string message, 4: string color } @@ -540,32 +540,32 @@ struct DebugClient { } struct Body_GoToPoint { - 1: ThriftVector2D target_point, + 1: RpcVector2D target_point, 2: double distance_threshold, 3: double max_dash_power } struct Body_SmartKick { - 1: ThriftVector2D target_point, + 1: RpcVector2D target_point, 2: double first_speed, 3: double first_speed_threshold, 4: i32 max_steps } struct Bhv_BeforeKickOff { - 1: ThriftVector2D point + 1: RpcVector2D point } struct Bhv_BodyNeckToBall {} struct Bhv_BodyNeckToPoint { - 1: ThriftVector2D point + 1: RpcVector2D point } struct Bhv_Emergency {} struct Bhv_GoToPointLookBall { - 1: ThriftVector2D target_point, + 1: RpcVector2D target_point, 2: double distance_threshold, 3: double max_dash_power } @@ -575,7 +575,7 @@ struct Bhv_NeckBodyToBall { } struct Bhv_NeckBodyToPoint { - 1: ThriftVector2D point, + 1: RpcVector2D point, 2: double angle_buf } @@ -586,7 +586,7 @@ struct Body_AdvanceBall {} struct Body_ClearBall {} struct Body_Dribble { - 1: ThriftVector2D target_point, + 1: RpcVector2D target_point, 2: double distance_threshold, 3: double dash_power, 4: i32 dash_count, @@ -594,23 +594,23 @@ struct Body_Dribble { } struct Body_GoToPointDodge { - 1: ThriftVector2D target_point, + 1: RpcVector2D target_point, 2: double dash_power } struct Body_HoldBall { 1: bool do_turn, - 2: ThriftVector2D turn_target_point, - 3: ThriftVector2D kick_target_point + 2: RpcVector2D turn_target_point, + 3: RpcVector2D kick_target_point } struct Body_Intercept { 1: bool save_recovery, - 2: ThriftVector2D face_point + 2: RpcVector2D face_point } struct Body_KickOneStep { - 1: ThriftVector2D target_point, + 1: RpcVector2D target_point, 2: double first_speed, 3: bool force_mode } @@ -622,7 +622,7 @@ struct Body_StopDash { } struct Body_TackleToPoint { - 1: ThriftVector2D target_point, + 1: RpcVector2D target_point, 2: double min_probability, 3: double min_speed } @@ -636,12 +636,12 @@ struct Body_TurnToBall { } struct Body_TurnToPoint { - 1: ThriftVector2D target_point, + 1: RpcVector2D target_point, 2: i32 cycle } struct Focus_MoveToPoint { - 1: ThriftVector2D target_point + 1: RpcVector2D target_point } struct Focus_Reset {} @@ -675,7 +675,7 @@ struct Neck_TurnToPlayerOrScan { } struct Neck_TurnToPoint { - 1: ThriftVector2D target_point + 1: RpcVector2D target_point } struct Neck_TurnToRelative { @@ -815,14 +815,14 @@ struct CoachActions { struct DoKickOff {} struct DoMoveBall { - 1: ThriftVector2D position, - 2: optional ThriftVector2D velocity + 1: RpcVector2D position, + 2: optional RpcVector2D velocity } struct DoMovePlayer { 1: bool our_side, 2: i32 uniform_number, - 3: ThriftVector2D position, + 3: RpcVector2D position, 4: double body_direction } diff --git a/server-gym.py b/server-gym.py index 6675c06..a3eddb7 100644 --- a/server-gym.py +++ b/server-gym.py @@ -11,7 +11,7 @@ from gym import spaces import numpy as np from typing import Union -from soccer.ttypes import State, Empty, PlayerActions, CoachActions, TrainerActions, WorldModel, Self, ThriftVector2D, Dash, PlayerAction +from soccer.ttypes import State, Empty, PlayerActions, CoachActions, TrainerActions, WorldModel, Self, RpcVector2D, Dash, PlayerAction from soccer.ttypes import ServerParam, PlayerParam, PlayerType, InitMessage, RegisterRequest, RegisterResponse, AgentType, TrainerAction, DoMoveBall, DoMovePlayer from src.SamplePlayerAgent import SamplePlayerAgent from src.SampleCoachAgent import SampleCoachAgent @@ -117,7 +117,7 @@ def GetTrainerActions(self, register_response: RegisterResponse, state: State): our_side=True, uniform_number=1, body_direction=0, - position=ThriftVector2D(x=-45, y=0) + position=RpcVector2D(x=-45, y=0) ) ) logging.error("Handler: >>done") diff --git a/soccer/ttypes.py b/soccer/ttypes.py index a3d79f9..53f18a1 100644 --- a/soccer/ttypes.py +++ b/soccer/ttypes.py @@ -274,7 +274,7 @@ class GameModeType(object): } -class ThriftVector2D(object): +class RpcVector2D(object): """ Attributes: - x @@ -329,7 +329,7 @@ def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin('ThriftVector2D') + oprot.writeStructBegin('RpcVector2D') if self.x is not None: oprot.writeFieldBegin('x', TType.DOUBLE, 1) oprot.writeDouble(self.x) @@ -418,43 +418,43 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.position = ThriftVector2D() + self.position = RpcVector2D() self.position.read(iprot) else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.relative_position = ThriftVector2D() + self.relative_position = RpcVector2D() self.relative_position.read(iprot) else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRUCT: - self.seen_position = ThriftVector2D() + self.seen_position = RpcVector2D() self.seen_position.read(iprot) else: iprot.skip(ftype) elif fid == 4: if ftype == TType.STRUCT: - self.heard_position = ThriftVector2D() + self.heard_position = RpcVector2D() self.heard_position.read(iprot) else: iprot.skip(ftype) elif fid == 5: if ftype == TType.STRUCT: - self.velocity = ThriftVector2D() + self.velocity = RpcVector2D() self.velocity.read(iprot) else: iprot.skip(ftype) elif fid == 6: if ftype == TType.STRUCT: - self.seen_velocity = ThriftVector2D() + self.seen_velocity = RpcVector2D() self.seen_velocity.read(iprot) else: iprot.skip(ftype) elif fid == 7: if ftype == TType.STRUCT: - self.heard_velocity = ThriftVector2D() + self.heard_velocity = RpcVector2D() self.heard_velocity.read(iprot) else: iprot.skip(ftype) @@ -684,31 +684,31 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.position = ThriftVector2D() + self.position = RpcVector2D() self.position.read(iprot) else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.seen_position = ThriftVector2D() + self.seen_position = RpcVector2D() self.seen_position.read(iprot) else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRUCT: - self.heard_position = ThriftVector2D() + self.heard_position = RpcVector2D() self.heard_position.read(iprot) else: iprot.skip(ftype) elif fid == 4: if ftype == TType.STRUCT: - self.velocity = ThriftVector2D() + self.velocity = RpcVector2D() self.velocity.read(iprot) else: iprot.skip(ftype) elif fid == 5: if ftype == TType.STRUCT: - self.seen_velocity = ThriftVector2D() + self.seen_velocity = RpcVector2D() self.seen_velocity.read(iprot) else: iprot.skip(ftype) @@ -1077,31 +1077,31 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.position = ThriftVector2D() + self.position = RpcVector2D() self.position.read(iprot) else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.seen_position = ThriftVector2D() + self.seen_position = RpcVector2D() self.seen_position.read(iprot) else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRUCT: - self.heard_position = ThriftVector2D() + self.heard_position = RpcVector2D() self.heard_position.read(iprot) else: iprot.skip(ftype) elif fid == 4: if ftype == TType.STRUCT: - self.velocity = ThriftVector2D() + self.velocity = RpcVector2D() self.velocity.read(iprot) else: iprot.skip(ftype) elif fid == 5: if ftype == TType.STRUCT: - self.seen_velocity = ThriftVector2D() + self.seen_velocity = RpcVector2D() self.seen_velocity.read(iprot) else: iprot.skip(ftype) @@ -1502,7 +1502,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 7: if ftype == TType.STRUCT: - self.final_self_position = ThriftVector2D() + self.final_self_position = RpcVector2D() self.final_self_position.read(iprot) else: iprot.skip(ftype) @@ -2025,7 +2025,7 @@ def read(self, iprot): (_ktype40, _vtype41, _size39) = iprot.readMapBegin() for _i43 in range(_size39): _key44 = iprot.readI32() - _val45 = ThriftVector2D() + _val45 = RpcVector2D() _val45.read(iprot) self.helios_home_positions[_key44] = _val45 iprot.readMapEnd() @@ -2860,13 +2860,13 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.ball_position = ThriftVector2D() + self.ball_position = RpcVector2D() self.ball_position.read(iprot) else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.ball_velocity = ThriftVector2D() + self.ball_velocity = RpcVector2D() self.ball_velocity.read(iprot) else: iprot.skip(ftype) @@ -2939,19 +2939,19 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.receiver_point = ThriftVector2D() + self.receiver_point = RpcVector2D() self.receiver_point.read(iprot) else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRUCT: - self.ball_position = ThriftVector2D() + self.ball_position = RpcVector2D() self.ball_position.read(iprot) else: iprot.skip(ftype) elif fid == 4: if ftype == TType.STRUCT: - self.ball_velocity = ThriftVector2D() + self.ball_velocity = RpcVector2D() self.ball_velocity.read(iprot) else: iprot.skip(ftype) @@ -3109,7 +3109,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.goalie_position = ThriftVector2D() + self.goalie_position = RpcVector2D() self.goalie_position.read(iprot) else: iprot.skip(ftype) @@ -3193,7 +3193,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.goalie_position = ThriftVector2D() + self.goalie_position = RpcVector2D() self.goalie_position.read(iprot) else: iprot.skip(ftype) @@ -3209,7 +3209,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 5: if ftype == TType.STRUCT: - self.player_position = ThriftVector2D() + self.player_position = RpcVector2D() self.player_position.read(iprot) else: iprot.skip(ftype) @@ -3494,7 +3494,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.target_point = ThriftVector2D() + self.target_point = RpcVector2D() self.target_point.read(iprot) else: iprot.skip(ftype) @@ -3725,7 +3725,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.target_point = ThriftVector2D() + self.target_point = RpcVector2D() self.target_point.read(iprot) else: iprot.skip(ftype) @@ -3798,19 +3798,19 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.ball_position = ThriftVector2D() + self.ball_position = RpcVector2D() self.ball_position.read(iprot) else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.ball_velocity = ThriftVector2D() + self.ball_velocity = RpcVector2D() self.ball_velocity.read(iprot) else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRUCT: - self.goalie_position = ThriftVector2D() + self.goalie_position = RpcVector2D() self.goalie_position.read(iprot) else: iprot.skip(ftype) @@ -3892,7 +3892,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.position = ThriftVector2D() + self.position = RpcVector2D() self.position.read(iprot) else: iprot.skip(ftype) @@ -3965,7 +3965,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.first_position = ThriftVector2D() + self.first_position = RpcVector2D() self.first_position.read(iprot) else: iprot.skip(ftype) @@ -3976,7 +3976,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 4: if ftype == TType.STRUCT: - self.second_position = ThriftVector2D() + self.second_position = RpcVector2D() self.second_position.read(iprot) else: iprot.skip(ftype) @@ -4061,7 +4061,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.first_position = ThriftVector2D() + self.first_position = RpcVector2D() self.first_position.read(iprot) else: iprot.skip(ftype) @@ -4072,7 +4072,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 4: if ftype == TType.STRUCT: - self.second_position = ThriftVector2D() + self.second_position = RpcVector2D() self.second_position.read(iprot) else: iprot.skip(ftype) @@ -4083,7 +4083,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 6: if ftype == TType.STRUCT: - self.third_position = ThriftVector2D() + self.third_position = RpcVector2D() self.third_position.read(iprot) else: iprot.skip(ftype) @@ -4165,7 +4165,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.self_position = ThriftVector2D() + self.self_position = RpcVector2D() self.self_position.read(iprot) else: iprot.skip(ftype) @@ -4250,7 +4250,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.position = ThriftVector2D() + self.position = RpcVector2D() self.position.read(iprot) else: iprot.skip(ftype) @@ -4330,7 +4330,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.position = ThriftVector2D() + self.position = RpcVector2D() self.position.read(iprot) else: iprot.skip(ftype) @@ -4409,13 +4409,13 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.ball_position = ThriftVector2D() + self.ball_position = RpcVector2D() self.ball_position.read(iprot) else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.ball_velocity = ThriftVector2D() + self.ball_velocity = RpcVector2D() self.ball_velocity.read(iprot) else: iprot.skip(ftype) @@ -4426,7 +4426,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 4: if ftype == TType.STRUCT: - self.player_position = ThriftVector2D() + self.player_position = RpcVector2D() self.player_position.read(iprot) else: iprot.skip(ftype) @@ -5108,7 +5108,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.point = ThriftVector2D() + self.point = RpcVector2D() self.point.read(iprot) else: iprot.skip(ftype) @@ -5190,13 +5190,13 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.start_point = ThriftVector2D() + self.start_point = RpcVector2D() self.start_point.read(iprot) else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRUCT: - self.end_point = ThriftVector2D() + self.end_point = RpcVector2D() self.end_point.read(iprot) else: iprot.skip(ftype) @@ -5286,7 +5286,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.center = ThriftVector2D() + self.center = RpcVector2D() self.center.read(iprot) else: iprot.skip(ftype) @@ -5397,7 +5397,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.center = ThriftVector2D() + self.center = RpcVector2D() self.center.read(iprot) else: iprot.skip(ftype) @@ -5501,19 +5501,19 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.point1 = ThriftVector2D() + self.point1 = RpcVector2D() self.point1.read(iprot) else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRUCT: - self.point2 = ThriftVector2D() + self.point2 = RpcVector2D() self.point2.read(iprot) else: iprot.skip(ftype) elif fid == 4: if ftype == TType.STRUCT: - self.point3 = ThriftVector2D() + self.point3 = RpcVector2D() self.point3.read(iprot) else: iprot.skip(ftype) @@ -5743,7 +5743,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.center = ThriftVector2D() + self.center = RpcVector2D() self.center.read(iprot) else: iprot.skip(ftype) @@ -5870,7 +5870,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.position = ThriftVector2D() + self.position = RpcVector2D() self.position.read(iprot) else: iprot.skip(ftype) @@ -6165,7 +6165,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.target_point = ThriftVector2D() + self.target_point = RpcVector2D() self.target_point.read(iprot) else: iprot.skip(ftype) @@ -6247,7 +6247,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.target_point = ThriftVector2D() + self.target_point = RpcVector2D() self.target_point.read(iprot) else: iprot.skip(ftype) @@ -6332,7 +6332,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.point = ThriftVector2D() + self.point = RpcVector2D() self.point.read(iprot) else: iprot.skip(ftype) @@ -6430,7 +6430,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.point = ThriftVector2D() + self.point = RpcVector2D() self.point.read(iprot) else: iprot.skip(ftype) @@ -6532,7 +6532,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.target_point = ThriftVector2D() + self.target_point = RpcVector2D() self.target_point.read(iprot) else: iprot.skip(ftype) @@ -6667,7 +6667,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.point = ThriftVector2D() + self.point = RpcVector2D() self.point.read(iprot) else: iprot.skip(ftype) @@ -6862,7 +6862,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.target_point = ThriftVector2D() + self.target_point = RpcVector2D() self.target_point.read(iprot) else: iprot.skip(ftype) @@ -6958,7 +6958,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.target_point = ThriftVector2D() + self.target_point = RpcVector2D() self.target_point.read(iprot) else: iprot.skip(ftype) @@ -7034,13 +7034,13 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.turn_target_point = ThriftVector2D() + self.turn_target_point = RpcVector2D() self.turn_target_point.read(iprot) else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRUCT: - self.kick_target_point = ThriftVector2D() + self.kick_target_point = RpcVector2D() self.kick_target_point.read(iprot) else: iprot.skip(ftype) @@ -7113,7 +7113,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.face_point = ThriftVector2D() + self.face_point = RpcVector2D() self.face_point.read(iprot) else: iprot.skip(ftype) @@ -7179,7 +7179,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.target_point = ThriftVector2D() + self.target_point = RpcVector2D() self.target_point.read(iprot) else: iprot.skip(ftype) @@ -7356,7 +7356,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.target_point = ThriftVector2D() + self.target_point = RpcVector2D() self.target_point.read(iprot) else: iprot.skip(ftype) @@ -7548,7 +7548,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.target_point = ThriftVector2D() + self.target_point = RpcVector2D() self.target_point.read(iprot) else: iprot.skip(ftype) @@ -7615,7 +7615,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.target_point = ThriftVector2D() + self.target_point = RpcVector2D() self.target_point.read(iprot) else: iprot.skip(ftype) @@ -8145,7 +8145,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.target_point = ThriftVector2D() + self.target_point = RpcVector2D() self.target_point.read(iprot) else: iprot.skip(ftype) @@ -10160,13 +10160,13 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRUCT: - self.position = ThriftVector2D() + self.position = RpcVector2D() self.position.read(iprot) else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRUCT: - self.velocity = ThriftVector2D() + self.velocity = RpcVector2D() self.velocity.read(iprot) else: iprot.skip(ftype) @@ -10244,7 +10244,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 3: if ftype == TType.STRUCT: - self.position = ThriftVector2D() + self.position = RpcVector2D() self.position.read(iprot) else: iprot.skip(ftype) @@ -14126,8 +14126,8 @@ def __eq__(self, other): def __ne__(self, other): return not (self == other) -all_structs.append(ThriftVector2D) -ThriftVector2D.thrift_spec = ( +all_structs.append(RpcVector2D) +RpcVector2D.thrift_spec = ( None, # 0 (1, TType.DOUBLE, 'x', None, None, ), # 1 (2, TType.DOUBLE, 'y', None, None, ), # 2 @@ -14137,13 +14137,13 @@ def __ne__(self, other): all_structs.append(Ball) Ball.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'position', [ThriftVector2D, None], None, ), # 1 - (2, TType.STRUCT, 'relative_position', [ThriftVector2D, None], None, ), # 2 - (3, TType.STRUCT, 'seen_position', [ThriftVector2D, None], None, ), # 3 - (4, TType.STRUCT, 'heard_position', [ThriftVector2D, None], None, ), # 4 - (5, TType.STRUCT, 'velocity', [ThriftVector2D, None], None, ), # 5 - (6, TType.STRUCT, 'seen_velocity', [ThriftVector2D, None], None, ), # 6 - (7, TType.STRUCT, 'heard_velocity', [ThriftVector2D, None], None, ), # 7 + (1, TType.STRUCT, 'position', [RpcVector2D, None], None, ), # 1 + (2, TType.STRUCT, 'relative_position', [RpcVector2D, None], None, ), # 2 + (3, TType.STRUCT, 'seen_position', [RpcVector2D, None], None, ), # 3 + (4, TType.STRUCT, 'heard_position', [RpcVector2D, None], None, ), # 4 + (5, TType.STRUCT, 'velocity', [RpcVector2D, None], None, ), # 5 + (6, TType.STRUCT, 'seen_velocity', [RpcVector2D, None], None, ), # 6 + (7, TType.STRUCT, 'heard_velocity', [RpcVector2D, None], None, ), # 7 (8, TType.I32, 'pos_count', None, None, ), # 8 (9, TType.I32, 'seen_pos_count', None, None, ), # 9 (10, TType.I32, 'heard_pos_count', None, None, ), # 10 @@ -14158,11 +14158,11 @@ def __ne__(self, other): all_structs.append(Player) Player.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'position', [ThriftVector2D, None], None, ), # 1 - (2, TType.STRUCT, 'seen_position', [ThriftVector2D, None], None, ), # 2 - (3, TType.STRUCT, 'heard_position', [ThriftVector2D, None], None, ), # 3 - (4, TType.STRUCT, 'velocity', [ThriftVector2D, None], None, ), # 4 - (5, TType.STRUCT, 'seen_velocity', [ThriftVector2D, None], None, ), # 5 + (1, TType.STRUCT, 'position', [RpcVector2D, None], None, ), # 1 + (2, TType.STRUCT, 'seen_position', [RpcVector2D, None], None, ), # 2 + (3, TType.STRUCT, 'heard_position', [RpcVector2D, None], None, ), # 3 + (4, TType.STRUCT, 'velocity', [RpcVector2D, None], None, ), # 4 + (5, TType.STRUCT, 'seen_velocity', [RpcVector2D, None], None, ), # 5 (6, TType.I32, 'pos_count', None, None, ), # 6 (7, TType.I32, 'seen_pos_count', None, None, ), # 7 (8, TType.I32, 'heard_pos_count', None, None, ), # 8 @@ -14192,11 +14192,11 @@ def __ne__(self, other): all_structs.append(Self) Self.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'position', [ThriftVector2D, None], None, ), # 1 - (2, TType.STRUCT, 'seen_position', [ThriftVector2D, None], None, ), # 2 - (3, TType.STRUCT, 'heard_position', [ThriftVector2D, None], None, ), # 3 - (4, TType.STRUCT, 'velocity', [ThriftVector2D, None], None, ), # 4 - (5, TType.STRUCT, 'seen_velocity', [ThriftVector2D, None], None, ), # 5 + (1, TType.STRUCT, 'position', [RpcVector2D, None], None, ), # 1 + (2, TType.STRUCT, 'seen_position', [RpcVector2D, None], None, ), # 2 + (3, TType.STRUCT, 'heard_position', [RpcVector2D, None], None, ), # 3 + (4, TType.STRUCT, 'velocity', [RpcVector2D, None], None, ), # 4 + (5, TType.STRUCT, 'seen_velocity', [RpcVector2D, None], None, ), # 5 (6, TType.I32, 'pos_count', None, None, ), # 6 (7, TType.I32, 'seen_pos_count', None, None, ), # 7 (8, TType.I32, 'heard_pos_count', None, None, ), # 8 @@ -14238,7 +14238,7 @@ def __ne__(self, other): (4, TType.I32, 'dash_steps', None, None, ), # 4 (5, TType.DOUBLE, 'dash_power', None, None, ), # 5 (6, TType.DOUBLE, 'dash_dir', None, None, ), # 6 - (7, TType.STRUCT, 'final_self_position', [ThriftVector2D, None], None, ), # 7 + (7, TType.STRUCT, 'final_self_position', [RpcVector2D, None], None, ), # 7 (8, TType.DOUBLE, 'final_ball_dist', None, None, ), # 8 (9, TType.DOUBLE, 'final_stamina', None, None, ), # 9 (10, TType.DOUBLE, 'value', None, None, ), # 10 @@ -14290,7 +14290,7 @@ def __ne__(self, other): (28, TType.I32, 'our_team_score', None, None, ), # 28 (29, TType.I32, 'their_team_score', None, None, ), # 29 (30, TType.BOOL, 'is_penalty_kick_mode', None, None, ), # 30 - (31, TType.MAP, 'helios_home_positions', (TType.I32, None, TType.STRUCT, [ThriftVector2D, None], False), None, ), # 31 + (31, TType.MAP, 'helios_home_positions', (TType.I32, None, TType.STRUCT, [RpcVector2D, None], False), None, ), # 31 ) all_structs.append(State) State.thrift_spec = ( @@ -14350,16 +14350,16 @@ def __ne__(self, other): all_structs.append(BallMessage) BallMessage.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'ball_position', [ThriftVector2D, None], None, ), # 1 - (2, TType.STRUCT, 'ball_velocity', [ThriftVector2D, None], None, ), # 2 + (1, TType.STRUCT, 'ball_position', [RpcVector2D, None], None, ), # 1 + (2, TType.STRUCT, 'ball_velocity', [RpcVector2D, None], None, ), # 2 ) all_structs.append(PassMessage) PassMessage.thrift_spec = ( None, # 0 (1, TType.I32, 'receiver_uniform_number', None, None, ), # 1 - (2, TType.STRUCT, 'receiver_point', [ThriftVector2D, None], None, ), # 2 - (3, TType.STRUCT, 'ball_position', [ThriftVector2D, None], None, ), # 3 - (4, TType.STRUCT, 'ball_velocity', [ThriftVector2D, None], None, ), # 4 + (2, TType.STRUCT, 'receiver_point', [RpcVector2D, None], None, ), # 2 + (3, TType.STRUCT, 'ball_position', [RpcVector2D, None], None, ), # 3 + (4, TType.STRUCT, 'ball_velocity', [RpcVector2D, None], None, ), # 4 ) all_structs.append(InterceptMessage) InterceptMessage.thrift_spec = ( @@ -14372,17 +14372,17 @@ def __ne__(self, other): GoalieMessage.thrift_spec = ( None, # 0 (1, TType.I32, 'goalie_uniform_number', None, None, ), # 1 - (2, TType.STRUCT, 'goalie_position', [ThriftVector2D, None], None, ), # 2 + (2, TType.STRUCT, 'goalie_position', [RpcVector2D, None], None, ), # 2 (3, TType.DOUBLE, 'goalie_body_direction', None, None, ), # 3 ) all_structs.append(GoalieAndPlayerMessage) GoalieAndPlayerMessage.thrift_spec = ( None, # 0 (1, TType.I32, 'goalie_uniform_number', None, None, ), # 1 - (2, TType.STRUCT, 'goalie_position', [ThriftVector2D, None], None, ), # 2 + (2, TType.STRUCT, 'goalie_position', [RpcVector2D, None], None, ), # 2 (3, TType.DOUBLE, 'goalie_body_direction', None, None, ), # 3 (4, TType.I32, 'player_uniform_number', None, None, ), # 4 - (5, TType.STRUCT, 'player_position', [ThriftVector2D, None], None, ), # 5 + (5, TType.STRUCT, 'player_position', [RpcVector2D, None], None, ), # 5 ) all_structs.append(OffsideLineMessage) OffsideLineMessage.thrift_spec = ( @@ -14405,7 +14405,7 @@ def __ne__(self, other): all_structs.append(PassRequestMessage) PassRequestMessage.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 + (1, TType.STRUCT, 'target_point', [RpcVector2D, None], None, ), # 1 ) all_structs.append(StaminaMessage) StaminaMessage.thrift_spec = ( @@ -14425,45 +14425,45 @@ def __ne__(self, other): all_structs.append(DribbleMessage) DribbleMessage.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 + (1, TType.STRUCT, 'target_point', [RpcVector2D, None], None, ), # 1 (2, TType.I32, 'queue_count', None, None, ), # 2 ) all_structs.append(BallGoalieMessage) BallGoalieMessage.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'ball_position', [ThriftVector2D, None], None, ), # 1 - (2, TType.STRUCT, 'ball_velocity', [ThriftVector2D, None], None, ), # 2 - (3, TType.STRUCT, 'goalie_position', [ThriftVector2D, None], None, ), # 3 + (1, TType.STRUCT, 'ball_position', [RpcVector2D, None], None, ), # 1 + (2, TType.STRUCT, 'ball_velocity', [RpcVector2D, None], None, ), # 2 + (3, TType.STRUCT, 'goalie_position', [RpcVector2D, None], None, ), # 3 (4, TType.DOUBLE, 'goalie_body_direction', None, None, ), # 4 ) all_structs.append(OnePlayerMessage) OnePlayerMessage.thrift_spec = ( None, # 0 (1, TType.I32, 'uniform_number', None, None, ), # 1 - (2, TType.STRUCT, 'position', [ThriftVector2D, None], None, ), # 2 + (2, TType.STRUCT, 'position', [RpcVector2D, None], None, ), # 2 ) all_structs.append(TwoPlayerMessage) TwoPlayerMessage.thrift_spec = ( None, # 0 (1, TType.I32, 'first_uniform_number', None, None, ), # 1 - (2, TType.STRUCT, 'first_position', [ThriftVector2D, None], None, ), # 2 + (2, TType.STRUCT, 'first_position', [RpcVector2D, None], None, ), # 2 (3, TType.I32, 'second_uniform_number', None, None, ), # 3 - (4, TType.STRUCT, 'second_position', [ThriftVector2D, None], None, ), # 4 + (4, TType.STRUCT, 'second_position', [RpcVector2D, None], None, ), # 4 ) all_structs.append(ThreePlayerMessage) ThreePlayerMessage.thrift_spec = ( None, # 0 (1, TType.I32, 'first_uniform_number', None, None, ), # 1 - (2, TType.STRUCT, 'first_position', [ThriftVector2D, None], None, ), # 2 + (2, TType.STRUCT, 'first_position', [RpcVector2D, None], None, ), # 2 (3, TType.I32, 'second_uniform_number', None, None, ), # 3 - (4, TType.STRUCT, 'second_position', [ThriftVector2D, None], None, ), # 4 + (4, TType.STRUCT, 'second_position', [RpcVector2D, None], None, ), # 4 (5, TType.I32, 'third_uniform_number', None, None, ), # 5 - (6, TType.STRUCT, 'third_position', [ThriftVector2D, None], None, ), # 6 + (6, TType.STRUCT, 'third_position', [RpcVector2D, None], None, ), # 6 ) all_structs.append(SelfMessage) SelfMessage.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'self_position', [ThriftVector2D, None], None, ), # 1 + (1, TType.STRUCT, 'self_position', [RpcVector2D, None], None, ), # 1 (2, TType.DOUBLE, 'self_body_direction', None, None, ), # 2 (3, TType.DOUBLE, 'self_stamina', None, None, ), # 3 ) @@ -14471,23 +14471,23 @@ def __ne__(self, other): TeammateMessage.thrift_spec = ( None, # 0 (1, TType.I32, 'uniform_number', None, None, ), # 1 - (2, TType.STRUCT, 'position', [ThriftVector2D, None], None, ), # 2 + (2, TType.STRUCT, 'position', [RpcVector2D, None], None, ), # 2 (3, TType.DOUBLE, 'body_direction', None, None, ), # 3 ) all_structs.append(OpponentMessage) OpponentMessage.thrift_spec = ( None, # 0 (1, TType.I32, 'uniform_number', None, None, ), # 1 - (2, TType.STRUCT, 'position', [ThriftVector2D, None], None, ), # 2 + (2, TType.STRUCT, 'position', [RpcVector2D, None], None, ), # 2 (3, TType.DOUBLE, 'body_direction', None, None, ), # 3 ) all_structs.append(BallPlayerMessage) BallPlayerMessage.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'ball_position', [ThriftVector2D, None], None, ), # 1 - (2, TType.STRUCT, 'ball_velocity', [ThriftVector2D, None], None, ), # 2 + (1, TType.STRUCT, 'ball_position', [RpcVector2D, None], None, ), # 1 + (2, TType.STRUCT, 'ball_velocity', [RpcVector2D, None], None, ), # 2 (3, TType.I32, 'uniform_number', None, None, ), # 3 - (4, TType.STRUCT, 'player_position', [ThriftVector2D, None], None, ), # 4 + (4, TType.STRUCT, 'player_position', [RpcVector2D, None], None, ), # 4 (5, TType.DOUBLE, 'body_direction', None, None, ), # 5 ) all_structs.append(Say) @@ -14544,22 +14544,22 @@ def __ne__(self, other): AddPoint.thrift_spec = ( None, # 0 (1, TType.I32, 'level', None, None, ), # 1 - (2, TType.STRUCT, 'point', [ThriftVector2D, None], None, ), # 2 + (2, TType.STRUCT, 'point', [RpcVector2D, None], None, ), # 2 (3, TType.STRING, 'color', 'UTF8', None, ), # 3 ) all_structs.append(AddLine) AddLine.thrift_spec = ( None, # 0 (1, TType.I32, 'level', None, None, ), # 1 - (2, TType.STRUCT, 'start_point', [ThriftVector2D, None], None, ), # 2 - (3, TType.STRUCT, 'end_point', [ThriftVector2D, None], None, ), # 3 + (2, TType.STRUCT, 'start_point', [RpcVector2D, None], None, ), # 2 + (3, TType.STRUCT, 'end_point', [RpcVector2D, None], None, ), # 3 (4, TType.STRING, 'color', 'UTF8', None, ), # 4 ) all_structs.append(AddArc) AddArc.thrift_spec = ( None, # 0 (1, TType.I32, 'level', None, None, ), # 1 - (2, TType.STRUCT, 'center', [ThriftVector2D, None], None, ), # 2 + (2, TType.STRUCT, 'center', [RpcVector2D, None], None, ), # 2 (3, TType.DOUBLE, 'radius', None, None, ), # 3 (4, TType.DOUBLE, 'start_angle', None, None, ), # 4 (5, TType.DOUBLE, 'span_angel', None, None, ), # 5 @@ -14569,7 +14569,7 @@ def __ne__(self, other): AddCircle.thrift_spec = ( None, # 0 (1, TType.I32, 'level', None, None, ), # 1 - (2, TType.STRUCT, 'center', [ThriftVector2D, None], None, ), # 2 + (2, TType.STRUCT, 'center', [RpcVector2D, None], None, ), # 2 (3, TType.DOUBLE, 'radius', None, None, ), # 3 (4, TType.STRING, 'color', 'UTF8', None, ), # 4 (5, TType.BOOL, 'fill', None, None, ), # 5 @@ -14578,9 +14578,9 @@ def __ne__(self, other): AddTriangle.thrift_spec = ( None, # 0 (1, TType.I32, 'level', None, None, ), # 1 - (2, TType.STRUCT, 'point1', [ThriftVector2D, None], None, ), # 2 - (3, TType.STRUCT, 'point2', [ThriftVector2D, None], None, ), # 3 - (4, TType.STRUCT, 'point3', [ThriftVector2D, None], None, ), # 4 + (2, TType.STRUCT, 'point1', [RpcVector2D, None], None, ), # 2 + (3, TType.STRUCT, 'point2', [RpcVector2D, None], None, ), # 3 + (4, TType.STRUCT, 'point3', [RpcVector2D, None], None, ), # 4 (5, TType.STRING, 'color', 'UTF8', None, ), # 5 (6, TType.BOOL, 'fill', None, None, ), # 6 ) @@ -14599,7 +14599,7 @@ def __ne__(self, other): AddSector.thrift_spec = ( None, # 0 (1, TType.I32, 'level', None, None, ), # 1 - (2, TType.STRUCT, 'center', [ThriftVector2D, None], None, ), # 2 + (2, TType.STRUCT, 'center', [RpcVector2D, None], None, ), # 2 (3, TType.DOUBLE, 'min_radius', None, None, ), # 3 (4, TType.DOUBLE, 'max_radius', None, None, ), # 4 (5, TType.DOUBLE, 'start_angle', None, None, ), # 5 @@ -14611,7 +14611,7 @@ def __ne__(self, other): AddMessage.thrift_spec = ( None, # 0 (1, TType.I32, 'level', None, None, ), # 1 - (2, TType.STRUCT, 'position', [ThriftVector2D, None], None, ), # 2 + (2, TType.STRUCT, 'position', [RpcVector2D, None], None, ), # 2 (3, TType.STRING, 'message', 'UTF8', None, ), # 3 (4, TType.STRING, 'color', 'UTF8', None, ), # 4 ) @@ -14636,14 +14636,14 @@ def __ne__(self, other): all_structs.append(Body_GoToPoint) Body_GoToPoint.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 + (1, TType.STRUCT, 'target_point', [RpcVector2D, None], None, ), # 1 (2, TType.DOUBLE, 'distance_threshold', None, None, ), # 2 (3, TType.DOUBLE, 'max_dash_power', None, None, ), # 3 ) all_structs.append(Body_SmartKick) Body_SmartKick.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 + (1, TType.STRUCT, 'target_point', [RpcVector2D, None], None, ), # 1 (2, TType.DOUBLE, 'first_speed', None, None, ), # 2 (3, TType.DOUBLE, 'first_speed_threshold', None, None, ), # 3 (4, TType.I32, 'max_steps', None, None, ), # 4 @@ -14651,7 +14651,7 @@ def __ne__(self, other): all_structs.append(Bhv_BeforeKickOff) Bhv_BeforeKickOff.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'point', [ThriftVector2D, None], None, ), # 1 + (1, TType.STRUCT, 'point', [RpcVector2D, None], None, ), # 1 ) all_structs.append(Bhv_BodyNeckToBall) Bhv_BodyNeckToBall.thrift_spec = ( @@ -14659,7 +14659,7 @@ def __ne__(self, other): all_structs.append(Bhv_BodyNeckToPoint) Bhv_BodyNeckToPoint.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'point', [ThriftVector2D, None], None, ), # 1 + (1, TType.STRUCT, 'point', [RpcVector2D, None], None, ), # 1 ) all_structs.append(Bhv_Emergency) Bhv_Emergency.thrift_spec = ( @@ -14667,7 +14667,7 @@ def __ne__(self, other): all_structs.append(Bhv_GoToPointLookBall) Bhv_GoToPointLookBall.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 + (1, TType.STRUCT, 'target_point', [RpcVector2D, None], None, ), # 1 (2, TType.DOUBLE, 'distance_threshold', None, None, ), # 2 (3, TType.DOUBLE, 'max_dash_power', None, None, ), # 3 ) @@ -14679,7 +14679,7 @@ def __ne__(self, other): all_structs.append(Bhv_NeckBodyToPoint) Bhv_NeckBodyToPoint.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'point', [ThriftVector2D, None], None, ), # 1 + (1, TType.STRUCT, 'point', [RpcVector2D, None], None, ), # 1 (2, TType.DOUBLE, 'angle_buf', None, None, ), # 2 ) all_structs.append(Bhv_ScanField) @@ -14694,7 +14694,7 @@ def __ne__(self, other): all_structs.append(Body_Dribble) Body_Dribble.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 + (1, TType.STRUCT, 'target_point', [RpcVector2D, None], None, ), # 1 (2, TType.DOUBLE, 'distance_threshold', None, None, ), # 2 (3, TType.DOUBLE, 'dash_power', None, None, ), # 3 (4, TType.I32, 'dash_count', None, None, ), # 4 @@ -14703,26 +14703,26 @@ def __ne__(self, other): all_structs.append(Body_GoToPointDodge) Body_GoToPointDodge.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 + (1, TType.STRUCT, 'target_point', [RpcVector2D, None], None, ), # 1 (2, TType.DOUBLE, 'dash_power', None, None, ), # 2 ) all_structs.append(Body_HoldBall) Body_HoldBall.thrift_spec = ( None, # 0 (1, TType.BOOL, 'do_turn', None, None, ), # 1 - (2, TType.STRUCT, 'turn_target_point', [ThriftVector2D, None], None, ), # 2 - (3, TType.STRUCT, 'kick_target_point', [ThriftVector2D, None], None, ), # 3 + (2, TType.STRUCT, 'turn_target_point', [RpcVector2D, None], None, ), # 2 + (3, TType.STRUCT, 'kick_target_point', [RpcVector2D, None], None, ), # 3 ) all_structs.append(Body_Intercept) Body_Intercept.thrift_spec = ( None, # 0 (1, TType.BOOL, 'save_recovery', None, None, ), # 1 - (2, TType.STRUCT, 'face_point', [ThriftVector2D, None], None, ), # 2 + (2, TType.STRUCT, 'face_point', [RpcVector2D, None], None, ), # 2 ) all_structs.append(Body_KickOneStep) Body_KickOneStep.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 + (1, TType.STRUCT, 'target_point', [RpcVector2D, None], None, ), # 1 (2, TType.DOUBLE, 'first_speed', None, None, ), # 2 (3, TType.BOOL, 'force_mode', None, None, ), # 3 ) @@ -14737,7 +14737,7 @@ def __ne__(self, other): all_structs.append(Body_TackleToPoint) Body_TackleToPoint.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 + (1, TType.STRUCT, 'target_point', [RpcVector2D, None], None, ), # 1 (2, TType.DOUBLE, 'min_probability', None, None, ), # 2 (3, TType.DOUBLE, 'min_speed', None, None, ), # 3 ) @@ -14754,13 +14754,13 @@ def __ne__(self, other): all_structs.append(Body_TurnToPoint) Body_TurnToPoint.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 + (1, TType.STRUCT, 'target_point', [RpcVector2D, None], None, ), # 1 (2, TType.I32, 'cycle', None, None, ), # 2 ) all_structs.append(Focus_MoveToPoint) Focus_MoveToPoint.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 + (1, TType.STRUCT, 'target_point', [RpcVector2D, None], None, ), # 1 ) all_structs.append(Focus_Reset) Focus_Reset.thrift_spec = ( @@ -14804,7 +14804,7 @@ def __ne__(self, other): all_structs.append(Neck_TurnToPoint) Neck_TurnToPoint.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'target_point', [ThriftVector2D, None], None, ), # 1 + (1, TType.STRUCT, 'target_point', [RpcVector2D, None], None, ), # 1 ) all_structs.append(Neck_TurnToRelative) Neck_TurnToRelative.thrift_spec = ( @@ -14968,15 +14968,15 @@ def __ne__(self, other): all_structs.append(DoMoveBall) DoMoveBall.thrift_spec = ( None, # 0 - (1, TType.STRUCT, 'position', [ThriftVector2D, None], None, ), # 1 - (2, TType.STRUCT, 'velocity', [ThriftVector2D, None], None, ), # 2 + (1, TType.STRUCT, 'position', [RpcVector2D, None], None, ), # 1 + (2, TType.STRUCT, 'velocity', [RpcVector2D, None], None, ), # 2 ) all_structs.append(DoMovePlayer) DoMovePlayer.thrift_spec = ( None, # 0 (1, TType.BOOL, 'our_side', None, None, ), # 1 (2, TType.I32, 'uniform_number', None, None, ), # 2 - (3, TType.STRUCT, 'position', [ThriftVector2D, None], None, ), # 3 + (3, TType.STRUCT, 'position', [RpcVector2D, None], None, ), # 3 (4, TType.DOUBLE, 'body_direction', None, None, ), # 4 ) all_structs.append(DoRecover) diff --git a/soccer/ttypes.pyi b/soccer/ttypes.pyi index 1a99cca..0476686 100644 --- a/soccer/ttypes.pyi +++ b/soccer/ttypes.pyi @@ -12,7 +12,7 @@ class AgentType(Enum): CoachT = auto() TrainerT = auto() -class ThriftVector2D(object): +class RpcVector2D(object): def __init__(self, x: float = None, y: float = None, dist: float = None, angle: float = None): pass x: float @@ -21,15 +21,15 @@ class ThriftVector2D(object): angle: float class Ball(object): - def __init__(self, position: ThriftVector2D = None, relative_position: ThriftVector2D = None, seen_position: ThriftVector2D = None, heard_position: ThriftVector2D = None, velocity: ThriftVector2D = None, seen_velocity: ThriftVector2D = None, heard_velocity: ThriftVector2D = None, pos_count: int = None, seen_pos_count: int = None, heard_pos_count: int = None, vel_count: int = None, seen_vel_count: int = None, heard_vel_count: int = None, lost_count: int = None, ghost_count: int = None, dist_from_self: float = None, angle_from_self: float = None): - pass - position: ThriftVector2D - relative_position: ThriftVector2D - seen_position: ThriftVector2D - heard_position: ThriftVector2D - velocity: ThriftVector2D - seen_velocity: ThriftVector2D - heard_velocity: ThriftVector2D + def __init__(self, position: RpcVector2D = None, relative_position: RpcVector2D = None, seen_position: RpcVector2D = None, heard_position: RpcVector2D = None, velocity: RpcVector2D = None, seen_velocity: RpcVector2D = None, heard_velocity: RpcVector2D = None, pos_count: int = None, seen_pos_count: int = None, heard_pos_count: int = None, vel_count: int = None, seen_vel_count: int = None, heard_vel_count: int = None, lost_count: int = None, ghost_count: int = None, dist_from_self: float = None, angle_from_self: float = None): + pass + position: RpcVector2D + relative_position: RpcVector2D + seen_position: RpcVector2D + heard_position: RpcVector2D + velocity: RpcVector2D + seen_velocity: RpcVector2D + heard_velocity: RpcVector2D pos_count: int seen_pos_count: int heard_pos_count: int @@ -71,13 +71,13 @@ class LoggerLevel(Enum): PLAN = auto() class Player(object): - def __init__(self, position: ThriftVector2D = None, seen_position: ThriftVector2D = None, heard_position: ThriftVector2D = None, velocity: ThriftVector2D = None, seen_velocity: ThriftVector2D = None, pos_count: int = None, seen_pos_count: int = None, heard_pos_count: int = None, vel_count: int = None, seen_vel_count: int = None, ghost_count: int = None, dist_from_self: float = None, angle_from_self: float = None, id: int = None, side: Side = None, uniform_number: int = None, uniform_number_count: int = None, is_goalie: bool = None, body_direction: float = None, body_direction_count: int = None, face_direction: float = None, face_direction_count: int = None, point_to_direction: float = None, point_to_direction_count: int = None, is_kicking: bool = None, dist_from_ball: float = None, angle_from_ball: float = None, ball_reach_steps: int = None, is_tackling: bool = None, type_id: int = None): + def __init__(self, position: RpcVector2D = None, seen_position: RpcVector2D = None, heard_position: RpcVector2D = None, velocity: RpcVector2D = None, seen_velocity: RpcVector2D = None, pos_count: int = None, seen_pos_count: int = None, heard_pos_count: int = None, vel_count: int = None, seen_vel_count: int = None, ghost_count: int = None, dist_from_self: float = None, angle_from_self: float = None, id: int = None, side: Side = None, uniform_number: int = None, uniform_number_count: int = None, is_goalie: bool = None, body_direction: float = None, body_direction_count: int = None, face_direction: float = None, face_direction_count: int = None, point_to_direction: float = None, point_to_direction_count: int = None, is_kicking: bool = None, dist_from_ball: float = None, angle_from_ball: float = None, ball_reach_steps: int = None, is_tackling: bool = None, type_id: int = None): pass - position: ThriftVector2D - seen_position: ThriftVector2D - heard_position: ThriftVector2D - velocity: ThriftVector2D - seen_velocity: ThriftVector2D + position: RpcVector2D + seen_position: RpcVector2D + heard_position: RpcVector2D + velocity: RpcVector2D + seen_velocity: RpcVector2D pos_count: int seen_pos_count: int heard_pos_count: int @@ -105,13 +105,13 @@ class Player(object): type_id: int class Self(object): - def __init__(self, position: ThriftVector2D = None, seen_position: ThriftVector2D = None, heard_position: ThriftVector2D = None, velocity: ThriftVector2D = None, seen_velocity: ThriftVector2D = None, pos_count: int = None, seen_pos_count: int = None, heard_pos_count: int = None, vel_count: int = None, seen_vel_count: int = None, ghost_count: int = None, id: int = None, side: Side = None, uniform_number: int = None, uniform_number_count: int = None, is_goalie: bool = None, body_direction: float = None, body_direction_count: int = None, face_direction: float = None, face_direction_count: int = None, point_to_direction: float = None, point_to_direction_count: int = None, is_kicking: bool = None, dist_from_ball: float = None, angle_from_ball: float = None, ball_reach_steps: int = None, is_tackling: bool = None, relative_neck_direction: float = None, stamina: float = None, is_kickable: bool = None, catch_probability: float = None, tackle_probability: float = None, foul_probability: float = None, view_width: ViewWidth = None, type_id: int = None, kick_rate: float = None): + def __init__(self, position: RpcVector2D = None, seen_position: RpcVector2D = None, heard_position: RpcVector2D = None, velocity: RpcVector2D = None, seen_velocity: RpcVector2D = None, pos_count: int = None, seen_pos_count: int = None, heard_pos_count: int = None, vel_count: int = None, seen_vel_count: int = None, ghost_count: int = None, id: int = None, side: Side = None, uniform_number: int = None, uniform_number_count: int = None, is_goalie: bool = None, body_direction: float = None, body_direction_count: int = None, face_direction: float = None, face_direction_count: int = None, point_to_direction: float = None, point_to_direction_count: int = None, is_kicking: bool = None, dist_from_ball: float = None, angle_from_ball: float = None, ball_reach_steps: int = None, is_tackling: bool = None, relative_neck_direction: float = None, stamina: float = None, is_kickable: bool = None, catch_probability: float = None, tackle_probability: float = None, foul_probability: float = None, view_width: ViewWidth = None, type_id: int = None, kick_rate: float = None): pass - position: ThriftVector2D - seen_position: ThriftVector2D - heard_position: ThriftVector2D - velocity: ThriftVector2D - seen_velocity: ThriftVector2D + position: RpcVector2D + seen_position: RpcVector2D + heard_position: RpcVector2D + velocity: RpcVector2D + seen_velocity: RpcVector2D pos_count: int seen_pos_count: int heard_pos_count: int @@ -151,7 +151,7 @@ class InterceptActionType(Enum): TURN_BACKWARD_DASH = auto() class InterceptInfo(object): - def __init__(self, action_type: InterceptActionType = None, turn_steps: int = None, turn_angle: float = None, dash_steps: int = None, dash_power: float = None, dash_dir: float = None, final_self_position: ThriftVector2D = None, final_ball_dist: float = None, final_stamina: float = None, value: float = None): + def __init__(self, action_type: InterceptActionType = None, turn_steps: int = None, turn_angle: float = None, dash_steps: int = None, dash_power: float = None, dash_dir: float = None, final_self_position: RpcVector2D = None, final_ball_dist: float = None, final_stamina: float = None, value: float = None): pass action_type: InterceptActionType turn_steps: int @@ -159,7 +159,7 @@ class InterceptInfo(object): dash_steps: int dash_power: float dash_dir: float - final_self_position: ThriftVector2D + final_self_position: RpcVector2D final_ball_dist: float final_stamina: float value: float @@ -214,7 +214,7 @@ class GameModeType(Enum): MODE_MAX = auto() class WorldModel(object): - def __init__(self, intercept_table: InterceptTable = None, our_team_name: str = None, their_team_name: str = None, our_side: Side = None, last_set_play_start_time: int = None, myself: Self = None, ball: Ball = None, teammates: List[Player] = None, opponents: List[Player] = None, unknowns: List[Player] = None, our_players_dict: Dict[int, Player] = None, their_players_dict: Dict[int, Player] = None, our_goalie_uniform_number: int = None, their_goalie_uniform_number: int = None, offside_line_x: float = None, offside_line_x_count: int = None, kickable_teammate_id: int = None, kickable_opponent_id: int = None, last_kick_side: Side = None, last_kicker_uniform_number: int = None, cycle: int = None, game_mode_type: GameModeType = None, left_team_score: int = None, right_team_score: int = None, is_our_set_play: bool = None, is_their_set_play: bool = None, stoped_cycle: int = None, our_team_score: int = None, their_team_score: int = None, is_penalty_kick_mode: bool = None, helios_home_positions: Dict[int, ThriftVector2D] = None): + def __init__(self, intercept_table: InterceptTable = None, our_team_name: str = None, their_team_name: str = None, our_side: Side = None, last_set_play_start_time: int = None, myself: Self = None, ball: Ball = None, teammates: List[Player] = None, opponents: List[Player] = None, unknowns: List[Player] = None, our_players_dict: Dict[int, Player] = None, their_players_dict: Dict[int, Player] = None, our_goalie_uniform_number: int = None, their_goalie_uniform_number: int = None, offside_line_x: float = None, offside_line_x_count: int = None, kickable_teammate_id: int = None, kickable_opponent_id: int = None, last_kick_side: Side = None, last_kicker_uniform_number: int = None, cycle: int = None, game_mode_type: GameModeType = None, left_team_score: int = None, right_team_score: int = None, is_our_set_play: bool = None, is_their_set_play: bool = None, stoped_cycle: int = None, our_team_score: int = None, their_team_score: int = None, is_penalty_kick_mode: bool = None, helios_home_positions: Dict[int, RpcVector2D] = None): pass intercept_table: InterceptTable our_team_name: str @@ -246,7 +246,7 @@ class WorldModel(object): our_team_score: int their_team_score: int is_penalty_kick_mode: bool - helios_home_positions: Dict[int, ThriftVector2D] + helios_home_positions: Dict[int, RpcVector2D] class State(object): def __init__(self, agent_type: AgentType = None, world_model: WorldModel = None, full_world_model: WorldModel = None): @@ -306,18 +306,18 @@ class ChangeView(object): view_width: ViewWidth class BallMessage(object): - def __init__(self, ball_position: ThriftVector2D = None, ball_velocity: ThriftVector2D = None): + def __init__(self, ball_position: RpcVector2D = None, ball_velocity: RpcVector2D = None): pass - ball_position: ThriftVector2D - ball_velocity: ThriftVector2D + ball_position: RpcVector2D + ball_velocity: RpcVector2D class PassMessage(object): - def __init__(self, receiver_uniform_number: int = None, receiver_point: ThriftVector2D = None, ball_position: ThriftVector2D = None, ball_velocity: ThriftVector2D = None): + def __init__(self, receiver_uniform_number: int = None, receiver_point: RpcVector2D = None, ball_position: RpcVector2D = None, ball_velocity: RpcVector2D = None): pass receiver_uniform_number: int - receiver_point: ThriftVector2D - ball_position: ThriftVector2D - ball_velocity: ThriftVector2D + receiver_point: RpcVector2D + ball_position: RpcVector2D + ball_velocity: RpcVector2D class InterceptMessage(object): def __init__(self, our: bool = None, uniform_number: int = None, cycle: int = None): @@ -327,20 +327,20 @@ class InterceptMessage(object): cycle: int class GoalieMessage(object): - def __init__(self, goalie_uniform_number: int = None, goalie_position: ThriftVector2D = None, goalie_body_direction: float = None): + def __init__(self, goalie_uniform_number: int = None, goalie_position: RpcVector2D = None, goalie_body_direction: float = None): pass goalie_uniform_number: int - goalie_position: ThriftVector2D + goalie_position: RpcVector2D goalie_body_direction: float class GoalieAndPlayerMessage(object): - def __init__(self, goalie_uniform_number: int = None, goalie_position: ThriftVector2D = None, goalie_body_direction: float = None, player_uniform_number: int = None, player_position: ThriftVector2D = None): + def __init__(self, goalie_uniform_number: int = None, goalie_position: RpcVector2D = None, goalie_body_direction: float = None, player_uniform_number: int = None, player_position: RpcVector2D = None): pass goalie_uniform_number: int - goalie_position: ThriftVector2D + goalie_position: RpcVector2D goalie_body_direction: float player_uniform_number: int - player_position: ThriftVector2D + player_position: RpcVector2D class OffsideLineMessage(object): def __init__(self, offside_line_x: float = None): @@ -363,9 +363,9 @@ class SetplayMessage(object): wait_step: int class PassRequestMessage(object): - def __init__(self, target_point: ThriftVector2D = None): + def __init__(self, target_point: RpcVector2D = None): pass - target_point: ThriftVector2D + target_point: RpcVector2D class StaminaMessage(object): def __init__(self, stamina: float = None): @@ -383,71 +383,71 @@ class StaminaCapacityMessage(object): stamina_capacity: float class DribbleMessage(object): - def __init__(self, target_point: ThriftVector2D = None, queue_count: int = None): + def __init__(self, target_point: RpcVector2D = None, queue_count: int = None): pass - target_point: ThriftVector2D + target_point: RpcVector2D queue_count: int class BallGoalieMessage(object): - def __init__(self, ball_position: ThriftVector2D = None, ball_velocity: ThriftVector2D = None, goalie_position: ThriftVector2D = None, goalie_body_direction: float = None): + def __init__(self, ball_position: RpcVector2D = None, ball_velocity: RpcVector2D = None, goalie_position: RpcVector2D = None, goalie_body_direction: float = None): pass - ball_position: ThriftVector2D - ball_velocity: ThriftVector2D - goalie_position: ThriftVector2D + ball_position: RpcVector2D + ball_velocity: RpcVector2D + goalie_position: RpcVector2D goalie_body_direction: float class OnePlayerMessage(object): - def __init__(self, uniform_number: int = None, position: ThriftVector2D = None): + def __init__(self, uniform_number: int = None, position: RpcVector2D = None): pass uniform_number: int - position: ThriftVector2D + position: RpcVector2D class TwoPlayerMessage(object): - def __init__(self, first_uniform_number: int = None, first_position: ThriftVector2D = None, second_uniform_number: int = None, second_position: ThriftVector2D = None): + def __init__(self, first_uniform_number: int = None, first_position: RpcVector2D = None, second_uniform_number: int = None, second_position: RpcVector2D = None): pass first_uniform_number: int - first_position: ThriftVector2D + first_position: RpcVector2D second_uniform_number: int - second_position: ThriftVector2D + second_position: RpcVector2D class ThreePlayerMessage(object): - def __init__(self, first_uniform_number: int = None, first_position: ThriftVector2D = None, second_uniform_number: int = None, second_position: ThriftVector2D = None, third_uniform_number: int = None, third_position: ThriftVector2D = None): + def __init__(self, first_uniform_number: int = None, first_position: RpcVector2D = None, second_uniform_number: int = None, second_position: RpcVector2D = None, third_uniform_number: int = None, third_position: RpcVector2D = None): pass first_uniform_number: int - first_position: ThriftVector2D + first_position: RpcVector2D second_uniform_number: int - second_position: ThriftVector2D + second_position: RpcVector2D third_uniform_number: int - third_position: ThriftVector2D + third_position: RpcVector2D class SelfMessage(object): - def __init__(self, self_position: ThriftVector2D = None, self_body_direction: float = None, self_stamina: float = None): + def __init__(self, self_position: RpcVector2D = None, self_body_direction: float = None, self_stamina: float = None): pass - self_position: ThriftVector2D + self_position: RpcVector2D self_body_direction: float self_stamina: float class TeammateMessage(object): - def __init__(self, uniform_number: int = None, position: ThriftVector2D = None, body_direction: float = None): + def __init__(self, uniform_number: int = None, position: RpcVector2D = None, body_direction: float = None): pass uniform_number: int - position: ThriftVector2D + position: RpcVector2D body_direction: float class OpponentMessage(object): - def __init__(self, uniform_number: int = None, position: ThriftVector2D = None, body_direction: float = None): + def __init__(self, uniform_number: int = None, position: RpcVector2D = None, body_direction: float = None): pass uniform_number: int - position: ThriftVector2D + position: RpcVector2D body_direction: float class BallPlayerMessage(object): - def __init__(self, ball_position: ThriftVector2D = None, ball_velocity: ThriftVector2D = None, uniform_number: int = None, player_position: ThriftVector2D = None, body_direction: float = None): + def __init__(self, ball_position: RpcVector2D = None, ball_velocity: RpcVector2D = None, uniform_number: int = None, player_position: RpcVector2D = None, body_direction: float = None): pass - ball_position: ThriftVector2D - ball_velocity: ThriftVector2D + ball_position: RpcVector2D + ball_velocity: RpcVector2D uniform_number: int - player_position: ThriftVector2D + player_position: RpcVector2D body_direction: float class Say(object): @@ -505,46 +505,46 @@ class AddText(object): message: str class AddPoint(object): - def __init__(self, level: LoggerLevel = None, point: ThriftVector2D = None, color: str = None): + def __init__(self, level: LoggerLevel = None, point: RpcVector2D = None, color: str = None): pass level: LoggerLevel - point: ThriftVector2D + point: RpcVector2D color: str class AddLine(object): - def __init__(self, level: LoggerLevel = None, start_point: ThriftVector2D = None, end_point: ThriftVector2D = None, color: str = None): + def __init__(self, level: LoggerLevel = None, start_point: RpcVector2D = None, end_point: RpcVector2D = None, color: str = None): pass level: LoggerLevel - start_point: ThriftVector2D - end_point: ThriftVector2D + start_point: RpcVector2D + end_point: RpcVector2D color: str class AddArc(object): - def __init__(self, level: LoggerLevel = None, center: ThriftVector2D = None, radius: float = None, start_angle: float = None, span_angel: float = None, color: str = None): + def __init__(self, level: LoggerLevel = None, center: RpcVector2D = None, radius: float = None, start_angle: float = None, span_angel: float = None, color: str = None): pass level: LoggerLevel - center: ThriftVector2D + center: RpcVector2D radius: float start_angle: float span_angel: float color: str class AddCircle(object): - def __init__(self, level: LoggerLevel = None, center: ThriftVector2D = None, radius: float = None, color: str = None, fill: bool = None): + def __init__(self, level: LoggerLevel = None, center: RpcVector2D = None, radius: float = None, color: str = None, fill: bool = None): pass level: LoggerLevel - center: ThriftVector2D + center: RpcVector2D radius: float color: str fill: bool class AddTriangle(object): - def __init__(self, level: LoggerLevel = None, point1: ThriftVector2D = None, point2: ThriftVector2D = None, point3: ThriftVector2D = None, color: str = None, fill: bool = None): + def __init__(self, level: LoggerLevel = None, point1: RpcVector2D = None, point2: RpcVector2D = None, point3: RpcVector2D = None, color: str = None, fill: bool = None): pass level: LoggerLevel - point1: ThriftVector2D - point2: ThriftVector2D - point3: ThriftVector2D + point1: RpcVector2D + point2: RpcVector2D + point3: RpcVector2D color: str fill: bool @@ -560,10 +560,10 @@ class AddRectangle(object): fill: bool class AddSector(object): - def __init__(self, level: LoggerLevel = None, center: ThriftVector2D = None, min_radius: float = None, max_radius: float = None, start_angle: float = None, span_angel: float = None, color: str = None, fill: bool = None): + def __init__(self, level: LoggerLevel = None, center: RpcVector2D = None, min_radius: float = None, max_radius: float = None, start_angle: float = None, span_angel: float = None, color: str = None, fill: bool = None): pass level: LoggerLevel - center: ThriftVector2D + center: RpcVector2D min_radius: float max_radius: float start_angle: float @@ -572,10 +572,10 @@ class AddSector(object): fill: bool class AddMessage(object): - def __init__(self, level: LoggerLevel = None, position: ThriftVector2D = None, message: str = None, color: str = None): + def __init__(self, level: LoggerLevel = None, position: RpcVector2D = None, message: str = None, color: str = None): pass level: LoggerLevel - position: ThriftVector2D + position: RpcVector2D message: str color: str @@ -598,24 +598,24 @@ class DebugClient(object): message: str class Body_GoToPoint(object): - def __init__(self, target_point: ThriftVector2D = None, distance_threshold: float = None, max_dash_power: float = None): + def __init__(self, target_point: RpcVector2D = None, distance_threshold: float = None, max_dash_power: float = None): pass - target_point: ThriftVector2D + target_point: RpcVector2D distance_threshold: float max_dash_power: float class Body_SmartKick(object): - def __init__(self, target_point: ThriftVector2D = None, first_speed: float = None, first_speed_threshold: float = None, max_steps: int = None): + def __init__(self, target_point: RpcVector2D = None, first_speed: float = None, first_speed_threshold: float = None, max_steps: int = None): pass - target_point: ThriftVector2D + target_point: RpcVector2D first_speed: float first_speed_threshold: float max_steps: int class Bhv_BeforeKickOff(object): - def __init__(self, point: ThriftVector2D = None): + def __init__(self, point: RpcVector2D = None): pass - point: ThriftVector2D + point: RpcVector2D class Bhv_BodyNeckToBall(object): def __init__(self, ): @@ -623,9 +623,9 @@ class Bhv_BodyNeckToBall(object): pass class Bhv_BodyNeckToPoint(object): - def __init__(self, point: ThriftVector2D = None): + def __init__(self, point: RpcVector2D = None): pass - point: ThriftVector2D + point: RpcVector2D class Bhv_Emergency(object): def __init__(self, ): @@ -633,9 +633,9 @@ class Bhv_Emergency(object): pass class Bhv_GoToPointLookBall(object): - def __init__(self, target_point: ThriftVector2D = None, distance_threshold: float = None, max_dash_power: float = None): + def __init__(self, target_point: RpcVector2D = None, distance_threshold: float = None, max_dash_power: float = None): pass - target_point: ThriftVector2D + target_point: RpcVector2D distance_threshold: float max_dash_power: float @@ -645,9 +645,9 @@ class Bhv_NeckBodyToBall(object): angle_buf: float class Bhv_NeckBodyToPoint(object): - def __init__(self, point: ThriftVector2D = None, angle_buf: float = None): + def __init__(self, point: RpcVector2D = None, angle_buf: float = None): pass - point: ThriftVector2D + point: RpcVector2D angle_buf: float class Bhv_ScanField(object): @@ -666,37 +666,37 @@ class Body_ClearBall(object): pass class Body_Dribble(object): - def __init__(self, target_point: ThriftVector2D = None, distance_threshold: float = None, dash_power: float = None, dash_count: int = None, dodge: bool = None): + def __init__(self, target_point: RpcVector2D = None, distance_threshold: float = None, dash_power: float = None, dash_count: int = None, dodge: bool = None): pass - target_point: ThriftVector2D + target_point: RpcVector2D distance_threshold: float dash_power: float dash_count: int dodge: bool class Body_GoToPointDodge(object): - def __init__(self, target_point: ThriftVector2D = None, dash_power: float = None): + def __init__(self, target_point: RpcVector2D = None, dash_power: float = None): pass - target_point: ThriftVector2D + target_point: RpcVector2D dash_power: float class Body_HoldBall(object): - def __init__(self, do_turn: bool = None, turn_target_point: ThriftVector2D = None, kick_target_point: ThriftVector2D = None): + def __init__(self, do_turn: bool = None, turn_target_point: RpcVector2D = None, kick_target_point: RpcVector2D = None): pass do_turn: bool - turn_target_point: ThriftVector2D - kick_target_point: ThriftVector2D + turn_target_point: RpcVector2D + kick_target_point: RpcVector2D class Body_Intercept(object): - def __init__(self, save_recovery: bool = None, face_point: ThriftVector2D = None): + def __init__(self, save_recovery: bool = None, face_point: RpcVector2D = None): pass save_recovery: bool - face_point: ThriftVector2D + face_point: RpcVector2D class Body_KickOneStep(object): - def __init__(self, target_point: ThriftVector2D = None, first_speed: float = None, force_mode: bool = None): + def __init__(self, target_point: RpcVector2D = None, first_speed: float = None, force_mode: bool = None): pass - target_point: ThriftVector2D + target_point: RpcVector2D first_speed: float force_mode: bool @@ -711,9 +711,9 @@ class Body_StopDash(object): save_recovery: bool class Body_TackleToPoint(object): - def __init__(self, target_point: ThriftVector2D = None, min_probability: float = None, min_speed: float = None): + def __init__(self, target_point: RpcVector2D = None, min_probability: float = None, min_speed: float = None): pass - target_point: ThriftVector2D + target_point: RpcVector2D min_probability: float min_speed: float @@ -728,15 +728,15 @@ class Body_TurnToBall(object): cycle: int class Body_TurnToPoint(object): - def __init__(self, target_point: ThriftVector2D = None, cycle: int = None): + def __init__(self, target_point: RpcVector2D = None, cycle: int = None): pass - target_point: ThriftVector2D + target_point: RpcVector2D cycle: int class Focus_MoveToPoint(object): - def __init__(self, target_point: ThriftVector2D = None): + def __init__(self, target_point: RpcVector2D = None): pass - target_point: ThriftVector2D + target_point: RpcVector2D class Focus_Reset(object): def __init__(self, ): @@ -788,9 +788,9 @@ class Neck_TurnToPlayerOrScan(object): count_threshold: int class Neck_TurnToPoint(object): - def __init__(self, target_point: ThriftVector2D = None): + def __init__(self, target_point: RpcVector2D = None): pass - target_point: ThriftVector2D + target_point: RpcVector2D class Neck_TurnToRelative(object): def __init__(self, angle: float = None): @@ -982,17 +982,17 @@ class DoKickOff(object): pass class DoMoveBall(object): - def __init__(self, position: ThriftVector2D = None, velocity: ThriftVector2D = None): + def __init__(self, position: RpcVector2D = None, velocity: RpcVector2D = None): pass - position: ThriftVector2D - velocity: ThriftVector2D + position: RpcVector2D + velocity: RpcVector2D class DoMovePlayer(object): - def __init__(self, our_side: bool = None, uniform_number: int = None, position: ThriftVector2D = None, body_direction: float = None): + def __init__(self, our_side: bool = None, uniform_number: int = None, position: RpcVector2D = None, body_direction: float = None): pass our_side: bool uniform_number: int - position: ThriftVector2D + position: RpcVector2D body_direction: float class DoRecover(object): diff --git a/src/BHV_Block.py b/src/BHV_Block.py index da21a51..1743af2 100644 --- a/src/BHV_Block.py +++ b/src/BHV_Block.py @@ -4,7 +4,7 @@ from pyrusgeom.geom_2d import * from src.Tools import Tools import pyrusgeom.soccer_math as smath -from soccer.ttypes import LoggerLevel, PlayerAction, Body_GoToPoint, Neck_TurnToBall, DebugClient, GameModeType, ThriftVector2D +from soccer.ttypes import LoggerLevel, PlayerAction, Body_GoToPoint, Neck_TurnToBall, DebugClient, GameModeType, RpcVector2D class BHV_Block: def __init__(self): @@ -61,7 +61,7 @@ def execute(self, agent: IAgent): agent.add_log_text(LoggerLevel.BLOCK, f"### block cycle: {block_cycle}") agent.add_log_text(LoggerLevel.BLOCK, f"### best blocker: {blocker}") if blocker == agent.wm.myself.uniform_number: - agent.add_action(PlayerAction(body_go_to_point=Body_GoToPoint(target_point=ThriftVector2D(x=block_pos.x(), y=block_pos.y()), distance_threshold=0.5, max_dash_power=100))) + agent.add_action(PlayerAction(body_go_to_point=Body_GoToPoint(target_point=RpcVector2D(x=block_pos.x(), y=block_pos.y()), distance_threshold=0.5, max_dash_power=100))) agent.add_action(PlayerAction(neck_turn_to_ball=Neck_TurnToBall())) agent.add_action(PlayerAction(debug_client=DebugClient(message=f"blocker: {blocker}"))) return True diff --git a/src/DM_NoBall.py b/src/DM_NoBall.py index b456296..3c122e6 100644 --- a/src/DM_NoBall.py +++ b/src/DM_NoBall.py @@ -3,7 +3,7 @@ from pyrusgeom.soccer_math import * from pyrusgeom.geom_2d import * from src.BHV_Block import BHV_Block -from soccer.ttypes import LoggerLevel, PlayerAction, Body_Intercept, Neck_TurnToBall, Body_GoToPoint, DebugClient, ThriftVector2D, HeliosBasicMove +from soccer.ttypes import LoggerLevel, PlayerAction, Body_Intercept, Neck_TurnToBall, Body_GoToPoint, DebugClient, RpcVector2D, HeliosBasicMove class NoBallDecisionMaker(IDecisionMaker): def __init__(self): @@ -17,7 +17,7 @@ def make_decision(self, agent: IAgent): # # if our_reach_steps < opponent_reach_steps and self_reach_steps < teammate_reach_steps: # agent.add_action(PlayerAction(body_intercept=Body_Intercept(save_recovery=False, - # face_point=ThriftVector2D( x=agent.wm.ball.position.x, + # face_point=RpcVector2D( x=agent.wm.ball.position.x, # y=agent.wm.ball.position.y)))) # agent.add_action(PlayerAction(neck_turn_to_ball=Neck_TurnToBall())) # return @@ -29,7 +29,7 @@ def make_decision(self, agent: IAgent): # if BHV_Block().execute(agent): # return # - # agent.add_action(PlayerAction(body_go_to_point=Body_GoToPoint(target_point=ThriftVector2D(x=pos.x(), y=pos.y()), + # agent.add_action(PlayerAction(body_go_to_point=Body_GoToPoint(target_point=RpcVector2D(x=pos.x(), y=pos.y()), # distance_threshold=1, # max_dash_power=100))) # agent.add_action(PlayerAction(neck_turn_to_ball=Neck_TurnToBall())) diff --git a/src/DM_WithBall.py b/src/DM_WithBall.py index ed7ef38..ffb43dc 100644 --- a/src/DM_WithBall.py +++ b/src/DM_WithBall.py @@ -7,7 +7,7 @@ from src.GEN_Pass import GeneratorPass from src.IBallAction import BallAction import time -from soccer.ttypes import LoggerLevel, PlayerAction, Body_HoldBall, Neck_ScanField, Body_SmartKick, ThriftVector2D, HeliosChainAction +from soccer.ttypes import LoggerLevel, PlayerAction, Body_HoldBall, Neck_ScanField, Body_SmartKick, RpcVector2D, HeliosChainAction class WithBallDecisionMaker(IDecisionMaker): def __init__(self): @@ -53,7 +53,7 @@ def make_decision(self, agent: IAgent): # return # # agent.add_action(PlayerAction(body_smart_kick=Body_SmartKick( - # target_point=ThriftVector2D(x=best_action.targetBallPos.x(), y=best_action.targetBallPos.y()), + # target_point=RpcVector2D(x=best_action.targetBallPos.x(), y=best_action.targetBallPos.y()), # first_speed=best_action.firstVelocity.r(), # first_speed_threshold=0.0, # max_steps=3))) diff --git a/src/IAgent.py b/src/IAgent.py index a7d38f2..d9a58de 100644 --- a/src/IAgent.py +++ b/src/IAgent.py @@ -2,7 +2,7 @@ from abc import ABC, abstractmethod from src.IPositionStrategy import IPositionStrategy from typing import Union -from soccer.ttypes import PlayerAction, PlayerActions, CoachAction, TrainerAction, ServerParam, PlayerParam, PlayerType, Log, AddText, AddMessage, AddCircle, ThriftVector2D, LoggerLevel +from soccer.ttypes import PlayerAction, PlayerActions, CoachAction, TrainerAction, ServerParam, PlayerParam, PlayerType, Log, AddText, AddMessage, AddCircle, RpcVector2D, LoggerLevel from soccer.ttypes import WorldModel @@ -65,7 +65,7 @@ def add_log_message(self, level: LoggerLevel, message: str, x, y, color): add_message=AddMessage( level=level, message=message, - position=ThriftVector2D(x=x, y=y), + position=RpcVector2D(x=x, y=y), color=color, ) ) @@ -79,7 +79,7 @@ def add_log_circle(self, level: LoggerLevel, center_x: float, center_y: float, r log=Log( add_circle=AddCircle( level=level, - center=ThriftVector2D(x=center_x, y=center_y), + center=RpcVector2D(x=center_x, y=center_y), radius=radius, color=color, fill=fill diff --git a/src/IBallAction.py b/src/IBallAction.py index 49302fb..1108ea0 100644 --- a/src/IBallAction.py +++ b/src/IBallAction.py @@ -7,7 +7,7 @@ import pyrusgeom.soccer_math as smath from src.Tools import Tools from soccer.ttypes import HeliosGoalie, HeliosPenalty, HeliosSetPlay, GameModeType, PlayerAction -from soccer.ttypes import PlayerType, LoggerLevel, ThriftVector2D, LoggerLevel, Player +from soccer.ttypes import PlayerType, LoggerLevel, RpcVector2D, LoggerLevel, Player class ActionType(Enum): diff --git a/src/SampleTrainerAgent.py b/src/SampleTrainerAgent.py index b847b48..491bd80 100644 --- a/src/SampleTrainerAgent.py +++ b/src/SampleTrainerAgent.py @@ -1,6 +1,6 @@ from abc import ABC from src.IAgent import IAgent -from soccer.ttypes import TrainerActions, TrainerAction, DoMoveBall, ServerParam, PlayerParam, PlayerType, WorldModel, ThriftVector2D +from soccer.ttypes import TrainerActions, TrainerAction, DoMoveBall, ServerParam, PlayerParam, PlayerType, WorldModel, RpcVector2D class SampleTrainerAgent(IAgent, ABC): def __init__(self): @@ -22,11 +22,11 @@ def get_actions(self, wm:WorldModel) -> TrainerActions: actions.actions.append( TrainerAction( do_move_ball=DoMoveBall( - position=ThriftVector2D( + position=RpcVector2D( x=0, y=0 ), - velocity=ThriftVector2D( + velocity=RpcVector2D( x=0, y=0 ),