diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6185eb2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.venv/ +scripts/proxy +scripts/rcssserver \ No newline at end of file diff --git a/check_requirements.py b/check_requirements.py new file mode 100644 index 0000000..7c0047b --- /dev/null +++ b/check_requirements.py @@ -0,0 +1,20 @@ + +import pkg_resources +import sys + +def check_requirements(requirements_file='requirements.txt'): + with open(requirements_file, 'r') as file: + requirements = file.readlines() + + for requirement in requirements: + requirement = requirement.strip() + try: + pkg_resources.require(requirement) + except pkg_resources.VersionConflict as e: + print(f"WARNING: {str(e)}") + except pkg_resources.DistributionNotFound as e: + print(f"ERROR: {str(e)}") + sys.exit(1) + +if __name__ == "__main__": + check_requirements() diff --git a/scripts/download-proxy.sh b/scripts/download-proxy.sh new file mode 100755 index 0000000..58bbba8 --- /dev/null +++ b/scripts/download-proxy.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +# check proxy directory exists, if exists, remove it +if [ -d proxy ]; then + echo "proxy directory exists, remove it" + rm -rf proxy +fi + +mkdir proxy + +cd proxy + +# Check if curl exists +if command -v curl >/dev/null 2>&1; then + echo "curl is installed." +else + echo "curl is not installed. Please install it." + exit 1 +fi + +# Check if get exists +if command -v wget >/dev/null 2>&1; then + echo "wget is installed." +else + echo "wget is not installed. Please install it." + exit 1 +fi + +# download soccer simulation proxy +wget $(curl -s "https://api.github.com/repos/clsframework/soccer-simulation-proxy/releases/latest" | grep -oP '"browser_download_url": "\K[^"]*' | grep "soccer-simulation-proxy.tar.gz") + +tar -xvf soccer-simulation-proxy.tar.gz + +mv soccer-simulation-proxy/* . + +rm -rf soccer-simulation-proxy + +rm soccer-simulation-proxy.tar.gz diff --git a/scripts/download-rcssserver.sh b/scripts/download-rcssserver.sh new file mode 100755 index 0000000..3696619 --- /dev/null +++ b/scripts/download-rcssserver.sh @@ -0,0 +1,40 @@ +#!/bin/sh + +# check rcssserver directory exists, if exists, remove it +if [ -d rcssserver ]; then + echo "rcssserver directory exists, remove it" + rm -rf rcssserver +fi + +mkdir rcssserver + +cd rcssserver + +# Check if curl exists +if command -v curl >/dev/null 2>&1; then + echo "curl is installed." +else + echo "curl is not installed. Please install it." + exit 1 +fi + +# Check if get exists +if command -v wget >/dev/null 2>&1; then + echo "wget is installed." +else + echo "wget is not installed. Please install it." + exit 1 +fi + +# download soccer simulation server App Image +wget $(curl -s https://api.github.com/repos/clsframework/rcssserver/releases/latest | grep -oP '"browser_download_url": "\K(.*rcssserver-x86_64-.*\.AppImage)' | head -n 1) + +# check download is successful +if [ ! -f *.AppImage ]; then + echo "Download failed" + exit 1 +fi + +mv rcssserver-x86_64-*.AppImage rcssserver + +chmod +x rcssserver \ No newline at end of file diff --git a/server.py b/server.py index 61123f9..210daa6 100644 --- a/server.py +++ b/server.py @@ -6,6 +6,8 @@ from multiprocessing import Manager, Lock import logging import grpc +import argparse + logging.basicConfig(level=logging.DEBUG) @@ -155,4 +157,7 @@ def serve(port): if __name__ == '__main__': - serve(50051) + parser = argparse.ArgumentParser(description='Run play maker server') + parser.add_argument('-p', '--rpc-port', required=False, help='The port of the server', default=50051) + args = parser.parse_args() + serve(args.rpc_port) diff --git a/service_pb2.py b/service_pb2.py new file mode 100644 index 0000000..220e572 --- /dev/null +++ b/service_pb2.py @@ -0,0 +1,300 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: service.proto +# Protobuf Python Version: 5.26.1 +"""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\x0bRpcVector2D\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\"c\n\x0fRegisterRequest\x12%\n\nagent_type\x18\x01 \x01(\x0e\x32\x11.protos.AgentType\x12\x11\n\tteam_name\x18\x02 \x01(\t\x12\x16\n\x0euniform_number\x18\x03 \x01(\x05\"w\n\x10RegisterResponse\x12\x11\n\tclient_id\x18\x01 \x01(\x05\x12%\n\nagent_type\x18\x02 \x01(\x0e\x32\x11.protos.AgentType\x12\x11\n\tteam_name\x18\x03 \x01(\t\x12\x16\n\x0euniform_number\x18\x04 \x01(\x05\"\x98\x04\n\x04\x42\x61ll\x12%\n\x08position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12.\n\x11relative_position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rseen_position\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12+\n\x0eheard_position\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\x12%\n\x08velocity\x18\x05 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rseen_velocity\x18\x06 \x01(\x0b\x32\x13.protos.RpcVector2D\x12+\n\x0eheard_velocity\x18\x07 \x01(\x0b\x32\x13.protos.RpcVector2D\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\"\xb0\x06\n\x06Player\x12%\n\x08position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rseen_position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12+\n\x0eheard_position\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12%\n\x08velocity\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rseen_velocity\x18\x05 \x01(\x0b\x32\x13.protos.RpcVector2D\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\"\xcf\x07\n\x04Self\x12%\n\x08position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rseen_position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12+\n\x0eheard_position\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12%\n\x08velocity\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rseen_velocity\x18\x05 \x01(\x0b\x32\x13.protos.RpcVector2D\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\"\x94\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\x30\n\x13\x66inal_self_position\x18\x07 \x01(\x0b\x32\x13.protos.RpcVector2D\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\"\x91\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\x1aO\n\x18HeliosHomePositionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D:\x02\x38\x01\"\x93\x01\n\x05State\x12\x33\n\x11register_response\x18\x01 \x01(\x0b\x32\x18.protos.RegisterResponse\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\"V\n\x0bInitMessage\x12\x33\n\x11register_response\x18\x01 \x01(\x0b\x32\x18.protos.RegisterResponse\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\"e\n\x0b\x42\x61llMessage\x12*\n\rball_position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rball_velocity\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\"\xb3\x01\n\x0bPassMessage\x12\x1f\n\x17receiver_uniform_number\x18\x01 \x01(\x05\x12+\n\x0ereceiver_point\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rball_position\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rball_velocity\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\"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\"{\n\rGoalieMessage\x12\x1d\n\x15goalie_uniform_number\x18\x01 \x01(\x05\x12,\n\x0fgoalie_position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1d\n\x15goalie_body_direction\x18\x03 \x01(\x02\"\xd1\x01\n\x16GoalieAndPlayerMessage\x12\x1d\n\x15goalie_uniform_number\x18\x01 \x01(\x05\x12,\n\x0fgoalie_position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\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\x13.protos.RpcVector2D\",\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\x13.protos.RpcVector2D\"!\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\"P\n\x0e\x44ribbleMessage\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x13\n\x0bqueue_count\x18\x02 \x01(\x05\"\xb8\x01\n\x11\x42\x61llGoalieMessage\x12*\n\rball_position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rball_velocity\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12,\n\x0fgoalie_position\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1d\n\x15goalie_body_direction\x18\x04 \x01(\x02\"Q\n\x10OnePlayerMessage\x12\x16\n\x0euniform_number\x18\x01 \x01(\x05\x12%\n\x08position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\"\xaa\x01\n\x10TwoPlayerMessage\x12\x1c\n\x14\x66irst_uniform_number\x18\x01 \x01(\x05\x12+\n\x0e\x66irst_position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1d\n\x15second_uniform_number\x18\x03 \x01(\x05\x12,\n\x0fsecond_position\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\"\xf7\x01\n\x12ThreePlayerMessage\x12\x1c\n\x14\x66irst_uniform_number\x18\x01 \x01(\x05\x12+\n\x0e\x66irst_position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1d\n\x15second_uniform_number\x18\x03 \x01(\x05\x12,\n\x0fsecond_position\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1c\n\x14third_uniform_number\x18\x05 \x01(\x05\x12+\n\x0ethird_position\x18\x06 \x01(\x0b\x32\x13.protos.RpcVector2D\"l\n\x0bSelfMessage\x12*\n\rself_position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1b\n\x13self_body_direction\x18\x02 \x01(\x02\x12\x14\n\x0cself_stamina\x18\x03 \x01(\x02\"h\n\x0fTeammateMessage\x12\x16\n\x0euniform_number\x18\x01 \x01(\x05\x12%\n\x08position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x16\n\x0e\x62ody_direction\x18\x03 \x01(\x02\"h\n\x0fOpponentMessage\x12\x16\n\x0euniform_number\x18\x01 \x01(\x05\x12%\n\x08position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x16\n\x0e\x62ody_direction\x18\x03 \x01(\x02\"\xc9\x01\n\x11\x42\x61llPlayerMessage\x12*\n\rball_position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rball_velocity\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x16\n\x0euniform_number\x18\x03 \x01(\x05\x12,\n\x0fplayer_position\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\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\"a\n\x08\x41\x64\x64Point\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12\"\n\x05point\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\r\n\x05\x63olor\x18\x03 \x01(\t\"\x82\x01\n\x07\x41\x64\x64Line\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12\"\n\x05start\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12 \n\x03\x65nd\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\r\n\x05\x63olor\x18\x04 \x01(\t\"\x99\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\x13.protos.RpcVector2D\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\"\x81\x01\n\tAddCircle\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12#\n\x06\x63\x65nter\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\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\"\xbd\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\x13.protos.RpcVector2D\x12#\n\x06point2\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12#\n\x06point3\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\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\"\xc2\x01\n\tAddSector\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12#\n\x06\x63\x65nter\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\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\"w\n\nAddMessage\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12%\n\x08position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\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\"o\n\x0e\x42ody_GoToPoint\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1a\n\x12\x64istance_threshold\x18\x02 \x01(\x02\x12\x16\n\x0emax_dash_power\x18\x03 \x01(\x02\"\x82\x01\n\x0e\x42ody_SmartKick\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\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\"7\n\x11\x42hv_BeforeKickOff\x12\"\n\x05point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\"\x14\n\x12\x42hv_BodyNeckToBall\"9\n\x13\x42hv_BodyNeckToPoint\x12\"\n\x05point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\"\x0f\n\rBhv_Emergency\"v\n\x15\x42hv_GoToPointLookBall\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\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\"L\n\x13\x42hv_NeckBodyToPoint\x12\"\n\x05point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x11\n\tangle_buf\x18\x02 \x01(\x02\"\x0f\n\rBhv_ScanField\"\x12\n\x10\x42ody_AdvanceBall\"\x10\n\x0e\x42ody_ClearBall\"\x8c\x01\n\x0c\x42ody_Dribble\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\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\"T\n\x13\x42ody_GoToPointDodge\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x12\n\ndash_power\x18\x02 \x01(\x02\"\x80\x01\n\rBody_HoldBall\x12\x0f\n\x07\x64o_turn\x18\x01 \x01(\x08\x12.\n\x11turn_target_point\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12.\n\x11kick_target_point\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\"P\n\x0e\x42ody_Intercept\x12\x15\n\rsave_recovery\x18\x01 \x01(\x08\x12\'\n\nface_point\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\"f\n\x10\x42ody_KickOneStep\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\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\"k\n\x12\x42ody_TackleToPoint\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\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\"L\n\x10\x42ody_TurnToPoint\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\r\n\x05\x63ycle\x18\x02 \x01(\x05\">\n\x11\x46ocus_MoveToPoint\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\"\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\x13.protos.RpcVector2D\"$\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\"Z\n\nDoMoveBall\x12%\n\x08position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12%\n\x08velocity\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\"w\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\x13.protos.RpcVector2D\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\"\xdd,\n\x0bServerParam\x12\x33\n\x11register_response\x18\x01 \x01(\x0b\x32\x18.protos.RegisterResponse\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\"\x8d\x08\n\x0bPlayerParam\x12\x33\n\x11register_response\x18\x01 \x01(\x0b\x32\x18.protos.RegisterResponse\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\"\xbf\x07\n\nPlayerType\x12\x33\n\x11register_response\x18\x01 \x01(\x0b\x32\x18.protos.RegisterResponse\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*-\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*\xb2\x02\n\x0bLoggerLevel\x12\r\n\tNoneLevel\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\x9c\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\x08Register\x12\x17.protos.RegisterRequest\x1a\x18.protos.RegisterResponse\"\x00\x12;\n\x0eSendByeCommand\x12\x18.protos.RegisterResponse\x1a\r.protos.Empty\"\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'service_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_WORLDMODEL_OURPLAYERSDICTENTRY']._loaded_options = None + _globals['_WORLDMODEL_OURPLAYERSDICTENTRY']._serialized_options = b'8\001' + _globals['_WORLDMODEL_THEIRPLAYERSDICTENTRY']._loaded_options = None + _globals['_WORLDMODEL_THEIRPLAYERSDICTENTRY']._serialized_options = b'8\001' + _globals['_WORLDMODEL_HELIOSHOMEPOSITIONSENTRY']._loaded_options = None + _globals['_WORLDMODEL_HELIOSHOMEPOSITIONSENTRY']._serialized_options = b'8\001' + _globals['_VIEWWIDTH']._serialized_start=25320 + _globals['_VIEWWIDTH']._serialized_end=25365 + _globals['_SIDE']._serialized_start=25367 + _globals['_SIDE']._serialized_end=25407 + _globals['_LOGGERLEVEL']._serialized_start=25410 + _globals['_LOGGERLEVEL']._serialized_end=25716 + _globals['_INTERCEPTACTIONTYPE']._serialized_start=25718 + _globals['_INTERCEPTACTIONTYPE']._serialized_end=25836 + _globals['_GAMEMODETYPE']._serialized_start=25839 + _globals['_GAMEMODETYPE']._serialized_end=26410 + _globals['_AGENTTYPE']._serialized_start=26412 + _globals['_AGENTTYPE']._serialized_end=26462 + _globals['_RPCVECTOR2D']._serialized_start=25 + _globals['_RPCVECTOR2D']._serialized_end=89 + _globals['_REGISTERREQUEST']._serialized_start=91 + _globals['_REGISTERREQUEST']._serialized_end=190 + _globals['_REGISTERRESPONSE']._serialized_start=192 + _globals['_REGISTERRESPONSE']._serialized_end=311 + _globals['_BALL']._serialized_start=314 + _globals['_BALL']._serialized_end=850 + _globals['_PLAYER']._serialized_start=853 + _globals['_PLAYER']._serialized_end=1669 + _globals['_SELF']._serialized_start=1672 + _globals['_SELF']._serialized_end=2647 + _globals['_INTERCEPTINFO']._serialized_start=2650 + _globals['_INTERCEPTINFO']._serialized_end=2926 + _globals['_INTERCEPTTABLE']._serialized_start=2929 + _globals['_INTERCEPTTABLE']._serialized_end=3279 + _globals['_WORLDMODEL']._serialized_start=3282 + _globals['_WORLDMODEL']._serialized_end=4579 + _globals['_WORLDMODEL_OURPLAYERSDICTENTRY']._serialized_start=4356 + _globals['_WORLDMODEL_OURPLAYERSDICTENTRY']._serialized_end=4425 + _globals['_WORLDMODEL_THEIRPLAYERSDICTENTRY']._serialized_start=4427 + _globals['_WORLDMODEL_THEIRPLAYERSDICTENTRY']._serialized_end=4498 + _globals['_WORLDMODEL_HELIOSHOMEPOSITIONSENTRY']._serialized_start=4500 + _globals['_WORLDMODEL_HELIOSHOMEPOSITIONSENTRY']._serialized_end=4579 + _globals['_STATE']._serialized_start=4582 + _globals['_STATE']._serialized_end=4729 + _globals['_INITMESSAGE']._serialized_start=4731 + _globals['_INITMESSAGE']._serialized_end=4817 + _globals['_DASH']._serialized_start=4819 + _globals['_DASH']._serialized_end=4868 + _globals['_TURN']._serialized_start=4870 + _globals['_TURN']._serialized_end=4904 + _globals['_KICK']._serialized_start=4906 + _globals['_KICK']._serialized_end=4955 + _globals['_TACKLE']._serialized_start=4957 + _globals['_TACKLE']._serialized_end=5001 + _globals['_CATCH']._serialized_start=5003 + _globals['_CATCH']._serialized_end=5010 + _globals['_MOVE']._serialized_start=5012 + _globals['_MOVE']._serialized_end=5040 + _globals['_TURNNECK']._serialized_start=5042 + _globals['_TURNNECK']._serialized_end=5068 + _globals['_CHANGEVIEW']._serialized_start=5070 + _globals['_CHANGEVIEW']._serialized_end=5121 + _globals['_BALLMESSAGE']._serialized_start=5123 + _globals['_BALLMESSAGE']._serialized_end=5224 + _globals['_PASSMESSAGE']._serialized_start=5227 + _globals['_PASSMESSAGE']._serialized_end=5406 + _globals['_INTERCEPTMESSAGE']._serialized_start=5408 + _globals['_INTERCEPTMESSAGE']._serialized_end=5478 + _globals['_GOALIEMESSAGE']._serialized_start=5480 + _globals['_GOALIEMESSAGE']._serialized_end=5603 + _globals['_GOALIEANDPLAYERMESSAGE']._serialized_start=5606 + _globals['_GOALIEANDPLAYERMESSAGE']._serialized_end=5815 + _globals['_OFFSIDELINEMESSAGE']._serialized_start=5817 + _globals['_OFFSIDELINEMESSAGE']._serialized_end=5861 + _globals['_DEFENSELINEMESSAGE']._serialized_start=5863 + _globals['_DEFENSELINEMESSAGE']._serialized_end=5907 + _globals['_WAITREQUESTMESSAGE']._serialized_start=5909 + _globals['_WAITREQUESTMESSAGE']._serialized_end=5929 + _globals['_SETPLAYMESSAGE']._serialized_start=5931 + _globals['_SETPLAYMESSAGE']._serialized_end=5966 + _globals['_PASSREQUESTMESSAGE']._serialized_start=5968 + _globals['_PASSREQUESTMESSAGE']._serialized_end=6031 + _globals['_STAMINAMESSAGE']._serialized_start=6033 + _globals['_STAMINAMESSAGE']._serialized_end=6066 + _globals['_RECOVERYMESSAGE']._serialized_start=6068 + _globals['_RECOVERYMESSAGE']._serialized_end=6103 + _globals['_STAMINACAPACITYMESSAGE']._serialized_start=6105 + _globals['_STAMINACAPACITYMESSAGE']._serialized_end=6155 + _globals['_DRIBBLEMESSAGE']._serialized_start=6157 + _globals['_DRIBBLEMESSAGE']._serialized_end=6237 + _globals['_BALLGOALIEMESSAGE']._serialized_start=6240 + _globals['_BALLGOALIEMESSAGE']._serialized_end=6424 + _globals['_ONEPLAYERMESSAGE']._serialized_start=6426 + _globals['_ONEPLAYERMESSAGE']._serialized_end=6507 + _globals['_TWOPLAYERMESSAGE']._serialized_start=6510 + _globals['_TWOPLAYERMESSAGE']._serialized_end=6680 + _globals['_THREEPLAYERMESSAGE']._serialized_start=6683 + _globals['_THREEPLAYERMESSAGE']._serialized_end=6930 + _globals['_SELFMESSAGE']._serialized_start=6932 + _globals['_SELFMESSAGE']._serialized_end=7040 + _globals['_TEAMMATEMESSAGE']._serialized_start=7042 + _globals['_TEAMMATEMESSAGE']._serialized_end=7146 + _globals['_OPPONENTMESSAGE']._serialized_start=7148 + _globals['_OPPONENTMESSAGE']._serialized_end=7252 + _globals['_BALLPLAYERMESSAGE']._serialized_start=7255 + _globals['_BALLPLAYERMESSAGE']._serialized_end=7456 + _globals['_SAY']._serialized_start=7459 + _globals['_SAY']._serialized_end=8691 + _globals['_POINTTO']._serialized_start=8693 + _globals['_POINTTO']._serialized_end=8724 + _globals['_POINTTOOF']._serialized_start=8726 + _globals['_POINTTOOF']._serialized_end=8737 + _globals['_ATTENTIONTO']._serialized_start=8739 + _globals['_ATTENTIONTO']._serialized_end=8794 + _globals['_ATTENTIONTOOF']._serialized_start=8796 + _globals['_ATTENTIONTOOF']._serialized_end=8811 + _globals['_ADDTEXT']._serialized_start=8813 + _globals['_ADDTEXT']._serialized_end=8875 + _globals['_ADDPOINT']._serialized_start=8877 + _globals['_ADDPOINT']._serialized_end=8974 + _globals['_ADDLINE']._serialized_start=8977 + _globals['_ADDLINE']._serialized_end=9107 + _globals['_ADDARC']._serialized_start=9110 + _globals['_ADDARC']._serialized_end=9263 + _globals['_ADDCIRCLE']._serialized_start=9266 + _globals['_ADDCIRCLE']._serialized_end=9395 + _globals['_ADDTRIANGLE']._serialized_start=9398 + _globals['_ADDTRIANGLE']._serialized_end=9587 + _globals['_ADDRECTANGLE']._serialized_start=9590 + _globals['_ADDRECTANGLE']._serialized_end=9727 + _globals['_ADDSECTOR']._serialized_start=9730 + _globals['_ADDSECTOR']._serialized_end=9924 + _globals['_ADDMESSAGE']._serialized_start=9926 + _globals['_ADDMESSAGE']._serialized_end=10045 + _globals['_LOG']._serialized_start=10048 + _globals['_LOG']._serialized_end=10425 + _globals['_DEBUGCLIENT']._serialized_start=10427 + _globals['_DEBUGCLIENT']._serialized_end=10457 + _globals['_BODY_GOTOPOINT']._serialized_start=10459 + _globals['_BODY_GOTOPOINT']._serialized_end=10570 + _globals['_BODY_SMARTKICK']._serialized_start=10573 + _globals['_BODY_SMARTKICK']._serialized_end=10703 + _globals['_BHV_BEFOREKICKOFF']._serialized_start=10705 + _globals['_BHV_BEFOREKICKOFF']._serialized_end=10760 + _globals['_BHV_BODYNECKTOBALL']._serialized_start=10762 + _globals['_BHV_BODYNECKTOBALL']._serialized_end=10782 + _globals['_BHV_BODYNECKTOPOINT']._serialized_start=10784 + _globals['_BHV_BODYNECKTOPOINT']._serialized_end=10841 + _globals['_BHV_EMERGENCY']._serialized_start=10843 + _globals['_BHV_EMERGENCY']._serialized_end=10858 + _globals['_BHV_GOTOPOINTLOOKBALL']._serialized_start=10860 + _globals['_BHV_GOTOPOINTLOOKBALL']._serialized_end=10978 + _globals['_BHV_NECKBODYTOBALL']._serialized_start=10980 + _globals['_BHV_NECKBODYTOBALL']._serialized_end=11019 + _globals['_BHV_NECKBODYTOPOINT']._serialized_start=11021 + _globals['_BHV_NECKBODYTOPOINT']._serialized_end=11097 + _globals['_BHV_SCANFIELD']._serialized_start=11099 + _globals['_BHV_SCANFIELD']._serialized_end=11114 + _globals['_BODY_ADVANCEBALL']._serialized_start=11116 + _globals['_BODY_ADVANCEBALL']._serialized_end=11134 + _globals['_BODY_CLEARBALL']._serialized_start=11136 + _globals['_BODY_CLEARBALL']._serialized_end=11152 + _globals['_BODY_DRIBBLE']._serialized_start=11155 + _globals['_BODY_DRIBBLE']._serialized_end=11295 + _globals['_BODY_GOTOPOINTDODGE']._serialized_start=11297 + _globals['_BODY_GOTOPOINTDODGE']._serialized_end=11381 + _globals['_BODY_HOLDBALL']._serialized_start=11384 + _globals['_BODY_HOLDBALL']._serialized_end=11512 + _globals['_BODY_INTERCEPT']._serialized_start=11514 + _globals['_BODY_INTERCEPT']._serialized_end=11594 + _globals['_BODY_KICKONESTEP']._serialized_start=11596 + _globals['_BODY_KICKONESTEP']._serialized_end=11698 + _globals['_BODY_STOPBALL']._serialized_start=11700 + _globals['_BODY_STOPBALL']._serialized_end=11715 + _globals['_BODY_STOPDASH']._serialized_start=11717 + _globals['_BODY_STOPDASH']._serialized_end=11755 + _globals['_BODY_TACKLETOPOINT']._serialized_start=11757 + _globals['_BODY_TACKLETOPOINT']._serialized_end=11864 + _globals['_BODY_TURNTOANGLE']._serialized_start=11866 + _globals['_BODY_TURNTOANGLE']._serialized_end=11899 + _globals['_BODY_TURNTOBALL']._serialized_start=11901 + _globals['_BODY_TURNTOBALL']._serialized_end=11933 + _globals['_BODY_TURNTOPOINT']._serialized_start=11935 + _globals['_BODY_TURNTOPOINT']._serialized_end=12011 + _globals['_FOCUS_MOVETOPOINT']._serialized_start=12013 + _globals['_FOCUS_MOVETOPOINT']._serialized_end=12075 + _globals['_FOCUS_RESET']._serialized_start=12077 + _globals['_FOCUS_RESET']._serialized_end=12090 + _globals['_NECK_SCANFIELD']._serialized_start=12092 + _globals['_NECK_SCANFIELD']._serialized_end=12108 + _globals['_NECK_SCANPLAYERS']._serialized_start=12110 + _globals['_NECK_SCANPLAYERS']._serialized_end=12128 + _globals['_NECK_TURNTOBALLANDPLAYER']._serialized_start=12130 + _globals['_NECK_TURNTOBALLANDPLAYER']._serialized_end=12233 + _globals['_NECK_TURNTOBALLORSCAN']._serialized_start=12235 + _globals['_NECK_TURNTOBALLORSCAN']._serialized_end=12283 + _globals['_NECK_TURNTOBALL']._serialized_start=12285 + _globals['_NECK_TURNTOBALL']._serialized_end=12302 + _globals['_NECK_TURNTOGOALIEORSCAN']._serialized_start=12304 + _globals['_NECK_TURNTOGOALIEORSCAN']._serialized_end=12354 + _globals['_NECK_TURNTOLOWCONFTEAMMATE']._serialized_start=12356 + _globals['_NECK_TURNTOLOWCONFTEAMMATE']._serialized_end=12384 + _globals['_NECK_TURNTOPLAYERORSCAN']._serialized_start=12386 + _globals['_NECK_TURNTOPLAYERORSCAN']._serialized_end=12488 + _globals['_NECK_TURNTOPOINT']._serialized_start=12490 + _globals['_NECK_TURNTOPOINT']._serialized_end=12551 + _globals['_NECK_TURNTORELATIVE']._serialized_start=12553 + _globals['_NECK_TURNTORELATIVE']._serialized_end=12589 + _globals['_VIEW_CHANGEWIDTH']._serialized_start=12591 + _globals['_VIEW_CHANGEWIDTH']._serialized_end=12648 + _globals['_VIEW_NORMAL']._serialized_start=12650 + _globals['_VIEW_NORMAL']._serialized_end=12663 + _globals['_VIEW_SYNCH']._serialized_start=12665 + _globals['_VIEW_SYNCH']._serialized_end=12677 + _globals['_VIEW_WIDE']._serialized_start=12679 + _globals['_VIEW_WIDE']._serialized_end=12690 + _globals['_HELIOSGOALIE']._serialized_start=12692 + _globals['_HELIOSGOALIE']._serialized_end=12706 + _globals['_HELIOSGOALIEMOVE']._serialized_start=12708 + _globals['_HELIOSGOALIEMOVE']._serialized_end=12726 + _globals['_HELIOSGOALIEKICK']._serialized_start=12728 + _globals['_HELIOSGOALIEKICK']._serialized_end=12746 + _globals['_HELIOSSHOOT']._serialized_start=12748 + _globals['_HELIOSSHOOT']._serialized_end=12761 + _globals['_HELIOSCHAINACTION']._serialized_start=12764 + _globals['_HELIOSCHAINACTION']._serialized_end=12972 + _globals['_HELIOSBASICOFFENSIVE']._serialized_start=12974 + _globals['_HELIOSBASICOFFENSIVE']._serialized_end=12996 + _globals['_HELIOSBASICMOVE']._serialized_start=12998 + _globals['_HELIOSBASICMOVE']._serialized_end=13015 + _globals['_HELIOSSETPLAY']._serialized_start=13017 + _globals['_HELIOSSETPLAY']._serialized_end=13032 + _globals['_HELIOSPENALTY']._serialized_start=13034 + _globals['_HELIOSPENALTY']._serialized_end=13049 + _globals['_HELIOSCOMMUNICAION']._serialized_start=13051 + _globals['_HELIOSCOMMUNICAION']._serialized_end=13071 + _globals['_PLAYERACTION']._serialized_start=13074 + _globals['_PLAYERACTION']._serialized_end=16373 + _globals['_PLAYERACTIONS']._serialized_start=16375 + _globals['_PLAYERACTIONS']._serialized_end=16429 + _globals['_CHANGEPLAYERTYPE']._serialized_start=16431 + _globals['_CHANGEPLAYERTYPE']._serialized_end=16487 + _globals['_DOHELIOSSUBSTITUTE']._serialized_start=16489 + _globals['_DOHELIOSSUBSTITUTE']._serialized_end=16509 + _globals['_DOHELIOSSAYPLAYERTYPES']._serialized_start=16511 + _globals['_DOHELIOSSAYPLAYERTYPES']._serialized_end=16535 + _globals['_COACHACTION']._serialized_start=16538 + _globals['_COACHACTION']._serialized_end=16748 + _globals['_COACHACTIONS']._serialized_start=16750 + _globals['_COACHACTIONS']._serialized_end=16802 + _globals['_DOKICKOFF']._serialized_start=16804 + _globals['_DOKICKOFF']._serialized_end=16815 + _globals['_DOMOVEBALL']._serialized_start=16817 + _globals['_DOMOVEBALL']._serialized_end=16907 + _globals['_DOMOVEPLAYER']._serialized_start=16909 + _globals['_DOMOVEPLAYER']._serialized_end=17028 + _globals['_DORECOVER']._serialized_start=17030 + _globals['_DORECOVER']._serialized_end=17041 + _globals['_DOCHANGEMODE']._serialized_start=17043 + _globals['_DOCHANGEMODE']._serialized_end=17131 + _globals['_DOCHANGEPLAYERTYPE']._serialized_start=17133 + _globals['_DOCHANGEPLAYERTYPE']._serialized_end=17209 + _globals['_TRAINERACTION']._serialized_start=17212 + _globals['_TRAINERACTION']._serialized_end=17521 + _globals['_TRAINERACTIONS']._serialized_start=17523 + _globals['_TRAINERACTIONS']._serialized_end=17579 + _globals['_SERVERPARAM']._serialized_start=17582 + _globals['_SERVERPARAM']._serialized_end=23307 + _globals['_PLAYERPARAM']._serialized_start=23310 + _globals['_PLAYERPARAM']._serialized_end=24347 + _globals['_PLAYERTYPE']._serialized_start=24350 + _globals['_PLAYERTYPE']._serialized_end=25309 + _globals['_EMPTY']._serialized_start=25311 + _globals['_EMPTY']._serialized_end=25318 + _globals['_GAME']._serialized_start=26465 + _globals['_GAME']._serialized_end=27005 +# @@protoc_insertion_point(module_scope) diff --git a/service_pb2.pyi b/service_pb2.pyi new file mode 100644 index 0000000..6ae7f12 --- /dev/null +++ b/service_pb2.pyi @@ -0,0 +1,2146 @@ +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__ = () + NoneLevel: _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 +NoneLevel: 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 RpcVector2D(_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 RegisterRequest(_message.Message): + __slots__ = ("agent_type", "team_name", "uniform_number") + AGENT_TYPE_FIELD_NUMBER: _ClassVar[int] + TEAM_NAME_FIELD_NUMBER: _ClassVar[int] + UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] + agent_type: AgentType + team_name: str + uniform_number: int + def __init__(self, agent_type: _Optional[_Union[AgentType, str]] = ..., team_name: _Optional[str] = ..., uniform_number: _Optional[int] = ...) -> None: ... + +class RegisterResponse(_message.Message): + __slots__ = ("client_id", "agent_type", "team_name", "uniform_number") + CLIENT_ID_FIELD_NUMBER: _ClassVar[int] + AGENT_TYPE_FIELD_NUMBER: _ClassVar[int] + TEAM_NAME_FIELD_NUMBER: _ClassVar[int] + UNIFORM_NUMBER_FIELD_NUMBER: _ClassVar[int] + client_id: int + agent_type: AgentType + team_name: str + uniform_number: int + def __init__(self, client_id: _Optional[int] = ..., agent_type: _Optional[_Union[AgentType, str]] = ..., team_name: _Optional[str] = ..., uniform_number: _Optional[int] = ...) -> 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: 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 + 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[RpcVector2D, _Mapping]] = ..., relative_position: _Optional[_Union[RpcVector2D, _Mapping]] = ..., seen_position: _Optional[_Union[RpcVector2D, _Mapping]] = ..., heard_position: _Optional[_Union[RpcVector2D, _Mapping]] = ..., velocity: _Optional[_Union[RpcVector2D, _Mapping]] = ..., seen_velocity: _Optional[_Union[RpcVector2D, _Mapping]] = ..., heard_velocity: _Optional[_Union[RpcVector2D, _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: RpcVector2D + seen_position: RpcVector2D + heard_position: RpcVector2D + velocity: RpcVector2D + seen_velocity: RpcVector2D + 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[RpcVector2D, _Mapping]] = ..., seen_position: _Optional[_Union[RpcVector2D, _Mapping]] = ..., heard_position: _Optional[_Union[RpcVector2D, _Mapping]] = ..., velocity: _Optional[_Union[RpcVector2D, _Mapping]] = ..., seen_velocity: _Optional[_Union[RpcVector2D, _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: RpcVector2D + seen_position: RpcVector2D + heard_position: RpcVector2D + velocity: RpcVector2D + seen_velocity: RpcVector2D + 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[RpcVector2D, _Mapping]] = ..., seen_position: _Optional[_Union[RpcVector2D, _Mapping]] = ..., heard_position: _Optional[_Union[RpcVector2D, _Mapping]] = ..., velocity: _Optional[_Union[RpcVector2D, _Mapping]] = ..., seen_velocity: _Optional[_Union[RpcVector2D, _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: RpcVector2D + 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[RpcVector2D, _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: RpcVector2D + def __init__(self, key: _Optional[int] = ..., value: _Optional[_Union[RpcVector2D, _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, RpcVector2D] + 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, RpcVector2D]] = ...) -> None: ... + +class State(_message.Message): + __slots__ = ("register_response", "world_model", "full_world_model") + REGISTER_RESPONSE_FIELD_NUMBER: _ClassVar[int] + WORLD_MODEL_FIELD_NUMBER: _ClassVar[int] + FULL_WORLD_MODEL_FIELD_NUMBER: _ClassVar[int] + register_response: RegisterResponse + world_model: WorldModel + full_world_model: WorldModel + def __init__(self, register_response: _Optional[_Union[RegisterResponse, _Mapping]] = ..., world_model: _Optional[_Union[WorldModel, _Mapping]] = ..., full_world_model: _Optional[_Union[WorldModel, _Mapping]] = ...) -> None: ... + +class InitMessage(_message.Message): + __slots__ = ("register_response", "debug_mode") + REGISTER_RESPONSE_FIELD_NUMBER: _ClassVar[int] + DEBUG_MODE_FIELD_NUMBER: _ClassVar[int] + register_response: RegisterResponse + debug_mode: bool + def __init__(self, register_response: _Optional[_Union[RegisterResponse, _Mapping]] = ..., 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: RpcVector2D + ball_velocity: RpcVector2D + def __init__(self, ball_position: _Optional[_Union[RpcVector2D, _Mapping]] = ..., ball_velocity: _Optional[_Union[RpcVector2D, _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: RpcVector2D + ball_position: RpcVector2D + ball_velocity: RpcVector2D + def __init__(self, receiver_uniform_number: _Optional[int] = ..., receiver_point: _Optional[_Union[RpcVector2D, _Mapping]] = ..., ball_position: _Optional[_Union[RpcVector2D, _Mapping]] = ..., ball_velocity: _Optional[_Union[RpcVector2D, _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: RpcVector2D + goalie_body_direction: float + def __init__(self, goalie_uniform_number: _Optional[int] = ..., goalie_position: _Optional[_Union[RpcVector2D, _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: RpcVector2D + goalie_body_direction: float + player_uniform_number: int + player_position: RpcVector2D + def __init__(self, goalie_uniform_number: _Optional[int] = ..., goalie_position: _Optional[_Union[RpcVector2D, _Mapping]] = ..., goalie_body_direction: _Optional[float] = ..., player_uniform_number: _Optional[int] = ..., player_position: _Optional[_Union[RpcVector2D, _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: RpcVector2D + def __init__(self, target_point: _Optional[_Union[RpcVector2D, _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: RpcVector2D + queue_count: int + def __init__(self, target_point: _Optional[_Union[RpcVector2D, _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: RpcVector2D + ball_velocity: RpcVector2D + goalie_position: RpcVector2D + goalie_body_direction: float + def __init__(self, ball_position: _Optional[_Union[RpcVector2D, _Mapping]] = ..., ball_velocity: _Optional[_Union[RpcVector2D, _Mapping]] = ..., goalie_position: _Optional[_Union[RpcVector2D, _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: RpcVector2D + def __init__(self, uniform_number: _Optional[int] = ..., position: _Optional[_Union[RpcVector2D, _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: RpcVector2D + second_uniform_number: int + second_position: RpcVector2D + def __init__(self, first_uniform_number: _Optional[int] = ..., first_position: _Optional[_Union[RpcVector2D, _Mapping]] = ..., second_uniform_number: _Optional[int] = ..., second_position: _Optional[_Union[RpcVector2D, _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: RpcVector2D + second_uniform_number: int + second_position: RpcVector2D + third_uniform_number: int + third_position: RpcVector2D + def __init__(self, first_uniform_number: _Optional[int] = ..., first_position: _Optional[_Union[RpcVector2D, _Mapping]] = ..., second_uniform_number: _Optional[int] = ..., second_position: _Optional[_Union[RpcVector2D, _Mapping]] = ..., third_uniform_number: _Optional[int] = ..., third_position: _Optional[_Union[RpcVector2D, _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: RpcVector2D + self_body_direction: float + self_stamina: float + def __init__(self, self_position: _Optional[_Union[RpcVector2D, _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: RpcVector2D + body_direction: float + def __init__(self, uniform_number: _Optional[int] = ..., position: _Optional[_Union[RpcVector2D, _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: RpcVector2D + body_direction: float + def __init__(self, uniform_number: _Optional[int] = ..., position: _Optional[_Union[RpcVector2D, _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: RpcVector2D + ball_velocity: RpcVector2D + uniform_number: int + player_position: RpcVector2D + body_direction: float + def __init__(self, ball_position: _Optional[_Union[RpcVector2D, _Mapping]] = ..., ball_velocity: _Optional[_Union[RpcVector2D, _Mapping]] = ..., uniform_number: _Optional[int] = ..., player_position: _Optional[_Union[RpcVector2D, _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: RpcVector2D + color: str + def __init__(self, level: _Optional[_Union[LoggerLevel, str]] = ..., point: _Optional[_Union[RpcVector2D, _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: RpcVector2D + end: RpcVector2D + color: str + def __init__(self, level: _Optional[_Union[LoggerLevel, str]] = ..., start: _Optional[_Union[RpcVector2D, _Mapping]] = ..., end: _Optional[_Union[RpcVector2D, _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: RpcVector2D + radius: float + start_angle: float + span_angel: float + color: str + def __init__(self, level: _Optional[_Union[LoggerLevel, str]] = ..., center: _Optional[_Union[RpcVector2D, _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: RpcVector2D + radius: float + color: str + fill: bool + def __init__(self, level: _Optional[_Union[LoggerLevel, str]] = ..., center: _Optional[_Union[RpcVector2D, _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: RpcVector2D + point2: RpcVector2D + point3: RpcVector2D + color: str + fill: bool + def __init__(self, level: _Optional[_Union[LoggerLevel, str]] = ..., point1: _Optional[_Union[RpcVector2D, _Mapping]] = ..., point2: _Optional[_Union[RpcVector2D, _Mapping]] = ..., point3: _Optional[_Union[RpcVector2D, _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: RpcVector2D + 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[RpcVector2D, _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: RpcVector2D + message: str + color: str + def __init__(self, level: _Optional[_Union[LoggerLevel, str]] = ..., position: _Optional[_Union[RpcVector2D, _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: RpcVector2D + distance_threshold: float + max_dash_power: float + def __init__(self, target_point: _Optional[_Union[RpcVector2D, _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: RpcVector2D + first_speed: float + first_speed_threshold: float + max_steps: int + def __init__(self, target_point: _Optional[_Union[RpcVector2D, _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: RpcVector2D + def __init__(self, point: _Optional[_Union[RpcVector2D, _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: RpcVector2D + def __init__(self, point: _Optional[_Union[RpcVector2D, _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: RpcVector2D + distance_threshold: float + max_dash_power: float + def __init__(self, target_point: _Optional[_Union[RpcVector2D, _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: RpcVector2D + angle_buf: float + def __init__(self, point: _Optional[_Union[RpcVector2D, _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: RpcVector2D + distance_threshold: float + dash_power: float + dash_count: int + dodge: bool + def __init__(self, target_point: _Optional[_Union[RpcVector2D, _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: RpcVector2D + dash_power: float + def __init__(self, target_point: _Optional[_Union[RpcVector2D, _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: RpcVector2D + kick_target_point: RpcVector2D + def __init__(self, do_turn: bool = ..., turn_target_point: _Optional[_Union[RpcVector2D, _Mapping]] = ..., kick_target_point: _Optional[_Union[RpcVector2D, _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: RpcVector2D + def __init__(self, save_recovery: bool = ..., face_point: _Optional[_Union[RpcVector2D, _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: RpcVector2D + first_speed: float + force_mode: bool + def __init__(self, target_point: _Optional[_Union[RpcVector2D, _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: RpcVector2D + min_probability: float + min_speed: float + def __init__(self, target_point: _Optional[_Union[RpcVector2D, _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: RpcVector2D + cycle: int + def __init__(self, target_point: _Optional[_Union[RpcVector2D, _Mapping]] = ..., cycle: _Optional[int] = ...) -> None: ... + +class Focus_MoveToPoint(_message.Message): + __slots__ = ("target_point",) + TARGET_POINT_FIELD_NUMBER: _ClassVar[int] + target_point: RpcVector2D + def __init__(self, target_point: _Optional[_Union[RpcVector2D, _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: RpcVector2D + def __init__(self, target_point: _Optional[_Union[RpcVector2D, _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: RpcVector2D + velocity: RpcVector2D + def __init__(self, position: _Optional[_Union[RpcVector2D, _Mapping]] = ..., velocity: _Optional[_Union[RpcVector2D, _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: RpcVector2D + body_direction: float + def __init__(self, our_side: bool = ..., uniform_number: _Optional[int] = ..., position: _Optional[_Union[RpcVector2D, _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__ = ("register_response", "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") + REGISTER_RESPONSE_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] + register_response: RegisterResponse + 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, register_response: _Optional[_Union[RegisterResponse, _Mapping]] = ..., 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__ = ("register_response", "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") + REGISTER_RESPONSE_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] + register_response: RegisterResponse + 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, register_response: _Optional[_Union[RegisterResponse, _Mapping]] = ..., 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__ = ("register_response", "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") + REGISTER_RESPONSE_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] + register_response: RegisterResponse + 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, register_response: _Optional[_Union[RegisterResponse, _Mapping]] = ..., 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: ... diff --git a/service_pb2_grpc.py b/service_pb2_grpc.py new file mode 100644 index 0000000..0c2dcab --- /dev/null +++ b/service_pb2_grpc.py @@ -0,0 +1,446 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc +import warnings + +import service_pb2 as service__pb2 + +GRPC_GENERATED_VERSION = '1.65.4' +GRPC_VERSION = grpc.__version__ +EXPECTED_ERROR_RELEASE = '1.66.0' +SCHEDULED_RELEASE_DATE = 'August 6, 2024' +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + warnings.warn( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in service_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + + f' This warning will become an error in {EXPECTED_ERROR_RELEASE},' + + f' scheduled for release on {SCHEDULED_RELEASE_DATE}.', + RuntimeWarning + ) + + +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, + _registered_method=True) + self.GetCoachActions = channel.unary_unary( + '/protos.Game/GetCoachActions', + request_serializer=service__pb2.State.SerializeToString, + response_deserializer=service__pb2.CoachActions.FromString, + _registered_method=True) + self.GetTrainerActions = channel.unary_unary( + '/protos.Game/GetTrainerActions', + request_serializer=service__pb2.State.SerializeToString, + response_deserializer=service__pb2.TrainerActions.FromString, + _registered_method=True) + self.SendInitMessage = channel.unary_unary( + '/protos.Game/SendInitMessage', + request_serializer=service__pb2.InitMessage.SerializeToString, + response_deserializer=service__pb2.Empty.FromString, + _registered_method=True) + self.SendServerParams = channel.unary_unary( + '/protos.Game/SendServerParams', + request_serializer=service__pb2.ServerParam.SerializeToString, + response_deserializer=service__pb2.Empty.FromString, + _registered_method=True) + self.SendPlayerParams = channel.unary_unary( + '/protos.Game/SendPlayerParams', + request_serializer=service__pb2.PlayerParam.SerializeToString, + response_deserializer=service__pb2.Empty.FromString, + _registered_method=True) + self.SendPlayerType = channel.unary_unary( + '/protos.Game/SendPlayerType', + request_serializer=service__pb2.PlayerType.SerializeToString, + response_deserializer=service__pb2.Empty.FromString, + _registered_method=True) + self.Register = channel.unary_unary( + '/protos.Game/Register', + request_serializer=service__pb2.RegisterRequest.SerializeToString, + response_deserializer=service__pb2.RegisterResponse.FromString, + _registered_method=True) + self.SendByeCommand = channel.unary_unary( + '/protos.Game/SendByeCommand', + request_serializer=service__pb2.RegisterResponse.SerializeToString, + response_deserializer=service__pb2.Empty.FromString, + _registered_method=True) + + +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 Register(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, + ), + 'Register': grpc.unary_unary_rpc_method_handler( + servicer.Register, + request_deserializer=service__pb2.RegisterRequest.FromString, + response_serializer=service__pb2.RegisterResponse.SerializeToString, + ), + 'SendByeCommand': grpc.unary_unary_rpc_method_handler( + servicer.SendByeCommand, + request_deserializer=service__pb2.RegisterResponse.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,)) + server.add_registered_method_handlers('protos.Game', rpc_method_handlers) + + + # 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, + _registered_method=True) + + @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, + _registered_method=True) + + @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, + _registered_method=True) + + @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, + _registered_method=True) + + @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, + _registered_method=True) + + @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, + _registered_method=True) + + @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, + _registered_method=True) + + @staticmethod + def Register(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/Register', + service__pb2.RegisterRequest.SerializeToString, + service__pb2.RegisterResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @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.RegisterResponse.SerializeToString, + service__pb2.Empty.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/start-team.py b/start-team.py new file mode 100644 index 0000000..ff010a2 --- /dev/null +++ b/start-team.py @@ -0,0 +1,85 @@ +import subprocess +import os +import signal +import threading +import logging +import argparse +import check_requirements + + +# Set up logging +logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s') + +def run_server_script(args): + # Start the server.py script as a new process group + process = subprocess.Popen( + ['python3', 'server.py', '--rpc-port', args.rpc_port], + preexec_fn=os.setsid, # Create a new session and set the process group ID + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT # Capture stderr and redirect it to stdout + ) + return process + +def run_start_script(args): + # Start the start.sh script in its own directory as a new process group + process = subprocess.Popen( + ['bash', 'start.sh', '-t', args.team_name, '--rpc-port', args.rpc_port, '--rpc-type', 'grpc'], + cwd='scripts/proxy', # Corrected directory to where start.sh is located + preexec_fn=os.setsid, # Create a new session and set the process group ID + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT # Capture stderr and redirect it to stdout + ) + return process + +def stream_output(process, prefix): + # Stream output from the process and log it with a prefix + for line in iter(process.stdout.readline, b''): + logging.debug(f'{prefix} {line.decode().strip()}') + process.stdout.close() + +def kill_process_group(process): + try: + os.killpg(os.getpgid(process.pid), signal.SIGTERM) # Send SIGTERM to the process group + except ProcessLookupError: + pass # The process might have already exited + +if __name__ == "__main__": + # Set up argument parsing + parser = argparse.ArgumentParser(description='Run server and team scripts.') + parser.add_argument('-t', '--team_name', required=False, help='The name of the team', default='CLS') + parser.add_argument('--rpc-port', required=False, help='The port of the server', default='50051') + args = parser.parse_args() + + try: + # Check Python requirements + logging.debug("Checking Python requirements...") + check_requirements.check_requirements() + + # Run the server.py script first + server_process = run_server_script(args) + logging.debug(f"Started server.py process with PID: {server_process.pid}") + + # Run the start.sh script after server.py with the given arguments + start_process = run_start_script(args) + logging.debug(f"Started start.sh process with PID: {start_process.pid} with team name {args=}") + + # Monitor both processes and log their outputs + server_thread = threading.Thread(target=stream_output, args=(server_process, 'server:')) + start_thread = threading.Thread(target=stream_output, args=(start_process, 'team:')) + + server_thread.start() + start_thread.start() + + # Wait for both threads to finish + server_thread.join() + start_thread.join() + + except KeyboardInterrupt: + logging.debug("Interrupted! Killing all processes.") + kill_process_group(server_process) + kill_process_group(start_process) + + finally: + # Ensure all processes are killed on exit + kill_process_group(server_process) + kill_process_group(start_process) diff --git a/start-team.sh b/start-team.sh new file mode 100755 index 0000000..b33e6fa --- /dev/null +++ b/start-team.sh @@ -0,0 +1,76 @@ +#!/bin/bash + +# Ensure the script exits if any command fails +set -e +# check scripts/proxy directory does not exist, raise error +if [! -d scripts/proxy ]; then + echo "scripts/proxy directory does not exist" + exit 1 +fi + +team_name="CLS" +rpc_port=50051 + +# help function +usage() { + echo "Usage: $0 [options]" + echo "Options:" + echo " -t team_name: specify team name" + echo " --rpc-port PORT - specifies rpc port (default: 50051)" + exit 1 +} + +while [ $# -gt 0 ] +do + case $1 in + -t) + team_name=$2 + shift + ;; + --rpc-port) + rpc_port=$2 + shift + ;; + *) + echo 1>&2 + echo "invalid option \"${1}\"." 1>&2 + echo 1>&2 + usage + exit 1 + ;; + esac + + shift 1 +done + +# Check Python requirements +echo "Checking Python requirements..." +python3 check_requirements.py + +# Start server.py in the background +echo "Starting server.py..." +python3 server.py --rpc-port $rpc_port & +server_pid=$! + +# Function to kill server and team processes on exit +cleanup() { + echo "Cleaning up..." + kill $server_pid + kill $start_pid +} + +# Trap the exit signal to cleanup processes +trap cleanup EXIT + +# Wait a moment to ensure the server has started (optional) +sleep 2 + +# Start start.sh script in the correct directory with arguments +echo "Starting start.sh with team name: $team_name and ..." +cd scripts/proxy +bash start.sh -t "$team_name" --rpc-port $rpc_port --rpc-type grpc & +start_pid=$! + +# Wait for both background processes to finish +wait $server_pid +wait $start_pid