diff --git a/rlbot/interface.py b/rlbot/interface.py index cdffee7..a4d0d3d 100644 --- a/rlbot/interface.py +++ b/rlbot/interface.py @@ -33,6 +33,8 @@ class SocketRelay: from `rlbot.managers`. """ + can_render = False + """Indicates whether RLBotServer has given permission to send rendering commands""" is_connected = False _running = False """Indicates whether a messages are being handled by the `run` loop (potentially in a background thread)""" @@ -46,7 +48,6 @@ class SocketRelay: controllable_team_info_handlers: list[ Callable[[flat.ControllableTeamInfo], None] ] = [] - rendering_status_handlers: list[Callable[[flat.RenderingStatus], None]] = [] raw_handlers: list[Callable[[flat.CorePacket], None]] = [] socket: sock | None = None @@ -296,6 +297,10 @@ def handle_incoming_message(self, incoming_message: bytes) -> MsgHandlingResult: for handler in self.field_info_handlers: handler(field_info) case flat.MatchConfiguration() as match_config: + self.can_render = ( + match_config.enable_rendering == flat.DebugRendering.OnByDefault + ) + for handler in self.match_config_handlers: handler(match_config) case flat.MatchComm() as match_comm: @@ -308,8 +313,7 @@ def handle_incoming_message(self, incoming_message: bytes) -> MsgHandlingResult: for handler in self.controllable_team_info_handlers: handler(controllable_team_info) case flat.RenderingStatus() as rendering_status: - for handler in self.rendering_status_handlers: - handler(rendering_status) + self.can_render = rendering_status.status case _: self.logger.warning( "Received unknown message type: %s", diff --git a/rlbot/managers/bot.py b/rlbot/managers/bot.py index 57eae8f..935eb04 100644 --- a/rlbot/managers/bot.py +++ b/rlbot/managers/bot.py @@ -76,9 +76,6 @@ def __init__(self, default_agent_id: str | None = None): self._handle_controllable_team_info ) self._game_interface.packet_handlers.append(self._handle_packet) - self._game_interface.rendering_status_handlers.append( - self.rendering_status_update - ) self.renderer = Renderer(self._game_interface) @@ -120,9 +117,6 @@ def _try_initialize(self): def _handle_match_config(self, match_config: flat.MatchConfiguration): self.match_config = match_config self._has_match_settings = True - self.can_render = ( - match_config.enable_rendering == flat.DebugRendering.OnByDefault - ) self._try_initialize() @@ -227,15 +221,6 @@ def _handle_match_communication(self, match_comm: flat.MatchComm): match_comm.team_only, ) - def rendering_status_update(self, update: flat.RenderingStatus): - """ - Called when the server sends a rendering status update for ANY bot or script. - - By default, this will update `self.renderer.can_render` if appropriate. - """ - if update.is_bot and update.index == self.index: - self.renderer.can_render = update.status - def update_rendering_status( self, status: bool, diff --git a/rlbot/managers/hivemind.py b/rlbot/managers/hivemind.py index 9af78b2..53ca25c 100644 --- a/rlbot/managers/hivemind.py +++ b/rlbot/managers/hivemind.py @@ -78,9 +78,6 @@ def __init__(self, default_agent_id: str | None = None): self._handle_controllable_team_info ) self._game_interface.packet_handlers.append(self._handle_packet) - self._game_interface.rendering_status_handlers.append( - self.rendering_status_update - ) self.renderer = Renderer(self._game_interface) @@ -225,15 +222,6 @@ def run( self.retire() del self._game_interface - def rendering_status_update(self, update: flat.RenderingStatus): - """ - Called when the server sends a rendering status update for ANY bot or script. - - By default, this will update `self.renderer.can_render` if appropriate. - """ - if update.is_bot and update.index in self.indices: - self.renderer.can_render = update.status - def update_rendering_status( self, status: bool, diff --git a/rlbot/managers/rendering.py b/rlbot/managers/rendering.py index 8eef087..aec3978 100644 --- a/rlbot/managers/rendering.py +++ b/rlbot/managers/rendering.py @@ -45,8 +45,6 @@ class Renderer: purple = flat.Color(128, 0, 128) teal = flat.Color(0, 128, 128) - can_render: bool = False - _logger = get_logger("renderer") _used_group_ids: set[int] = set() @@ -62,6 +60,11 @@ def __init__(self, game_interface: SocketRelay): self._send_msg: Callable[[flat.RenderGroup | flat.RemoveRenderGroup], None] = ( game_interface.send_msg ) + self._game_interface = game_interface + + @property + def can_render(self) -> bool: + return self._game_interface.can_render def set_resolution(self, screen_width: float, screen_height: float): """ diff --git a/rlbot/managers/script.py b/rlbot/managers/script.py index a3f09f7..afb9944 100644 --- a/rlbot/managers/script.py +++ b/rlbot/managers/script.py @@ -58,9 +58,6 @@ def __init__(self, default_agent_id: str | None = None): self._handle_ball_prediction ) self._game_interface.packet_handlers.append(self._handle_packet) - self._game_interface.rendering_status_handlers.append( - self.rendering_status_update - ) self.renderer = Renderer(self._game_interface) @@ -102,9 +99,6 @@ def _try_initialize(self): def _handle_match_config(self, match_config: flat.MatchConfiguration): self.match_config = match_config self._has_match_settings = True - self.can_render = ( - match_config.enable_rendering == flat.DebugRendering.OnByDefault - ) self._try_initialize() @@ -187,15 +181,6 @@ def _handle_match_communication(self, match_comm: flat.MatchComm): match_comm.team_only, ) - def rendering_status_update(self, update: flat.RenderingStatus): - """ - Called when the server sends a rendering status update for ANY bot or script. - - By default, this will update `self.renderer.can_render` if appropriate. - """ - if not update.is_bot and update.index == self.index: - self.renderer.can_render = update.status - def update_rendering_status( self, status: bool, diff --git a/rlbot/utils/maps.py b/rlbot/utils/maps.py index 98f14b2..9f140d0 100644 --- a/rlbot/utils/maps.py +++ b/rlbot/utils/maps.py @@ -84,6 +84,12 @@ "DFHStadium_Anniversary": "stadium_10a_p", "Holyfield": "Labs_Holyfield_Space_P", "DriftWoods_Night": "woods_night_p", + "BoostfieldMall": "Mall_Day_P", + "ParcDeParis": "Paname_Dusk_P", + "Roadblock": "Labs_Octagon_B2B_02_P", + "Mannfield_Quads": "Labs_4v4_Arena15_EuroStadium_Night_P", + "MidnightMetro_Quads": "Labs_4v4_Arena15_Blackout_P", + "SunsetDunes_Quads": "Labs_4v4_Arena15_Retro_P", } STANDARD_MAPS = [ @@ -140,4 +146,6 @@ "DFHStadium_Anniversary", "DriftWoods_Night", "NeoTokyo_Comic", + "BoostfieldMall", + "ParcDeParis", ] diff --git a/rlbot/version.py b/rlbot/version.py index f8837d2..281caf5 100644 --- a/rlbot/version.py +++ b/rlbot/version.py @@ -1 +1 @@ -__version__ = "2.0.0-beta.50" +__version__ = "2.0.0-beta.51"