Skip to content

Commit 8537bfa

Browse files
authored
Merge pull request #38 from RLBot/can_render
Properly update `Renderer.can_render`
2 parents 9d0f416 + f1e420a commit 8537bfa

File tree

7 files changed

+21
-48
lines changed

7 files changed

+21
-48
lines changed

rlbot/interface.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ class SocketRelay:
3333
from `rlbot.managers`.
3434
"""
3535

36+
can_render = False
37+
"""Indicates whether RLBotServer has given permission to send rendering commands"""
3638
is_connected = False
3739
_running = False
3840
"""Indicates whether a messages are being handled by the `run` loop (potentially in a background thread)"""
@@ -46,7 +48,6 @@ class SocketRelay:
4648
controllable_team_info_handlers: list[
4749
Callable[[flat.ControllableTeamInfo], None]
4850
] = []
49-
rendering_status_handlers: list[Callable[[flat.RenderingStatus], None]] = []
5051
raw_handlers: list[Callable[[flat.CorePacket], None]] = []
5152

5253
socket: sock | None = None
@@ -296,6 +297,10 @@ def handle_incoming_message(self, incoming_message: bytes) -> MsgHandlingResult:
296297
for handler in self.field_info_handlers:
297298
handler(field_info)
298299
case flat.MatchConfiguration() as match_config:
300+
self.can_render = (
301+
match_config.enable_rendering == flat.DebugRendering.OnByDefault
302+
)
303+
299304
for handler in self.match_config_handlers:
300305
handler(match_config)
301306
case flat.MatchComm() as match_comm:
@@ -308,8 +313,7 @@ def handle_incoming_message(self, incoming_message: bytes) -> MsgHandlingResult:
308313
for handler in self.controllable_team_info_handlers:
309314
handler(controllable_team_info)
310315
case flat.RenderingStatus() as rendering_status:
311-
for handler in self.rendering_status_handlers:
312-
handler(rendering_status)
316+
self.can_render = rendering_status.status
313317
case _:
314318
self.logger.warning(
315319
"Received unknown message type: %s",

rlbot/managers/bot.py

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,6 @@ def __init__(self, default_agent_id: str | None = None):
7676
self._handle_controllable_team_info
7777
)
7878
self._game_interface.packet_handlers.append(self._handle_packet)
79-
self._game_interface.rendering_status_handlers.append(
80-
self.rendering_status_update
81-
)
8279

8380
self.renderer = Renderer(self._game_interface)
8481

@@ -120,9 +117,6 @@ def _try_initialize(self):
120117
def _handle_match_config(self, match_config: flat.MatchConfiguration):
121118
self.match_config = match_config
122119
self._has_match_settings = True
123-
self.can_render = (
124-
match_config.enable_rendering == flat.DebugRendering.OnByDefault
125-
)
126120

127121
self._try_initialize()
128122

@@ -227,15 +221,6 @@ def _handle_match_communication(self, match_comm: flat.MatchComm):
227221
match_comm.team_only,
228222
)
229223

230-
def rendering_status_update(self, update: flat.RenderingStatus):
231-
"""
232-
Called when the server sends a rendering status update for ANY bot or script.
233-
234-
By default, this will update `self.renderer.can_render` if appropriate.
235-
"""
236-
if update.is_bot and update.index == self.index:
237-
self.renderer.can_render = update.status
238-
239224
def update_rendering_status(
240225
self,
241226
status: bool,

rlbot/managers/hivemind.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,6 @@ def __init__(self, default_agent_id: str | None = None):
7878
self._handle_controllable_team_info
7979
)
8080
self._game_interface.packet_handlers.append(self._handle_packet)
81-
self._game_interface.rendering_status_handlers.append(
82-
self.rendering_status_update
83-
)
8481

8582
self.renderer = Renderer(self._game_interface)
8683

@@ -225,15 +222,6 @@ def run(
225222
self.retire()
226223
del self._game_interface
227224

228-
def rendering_status_update(self, update: flat.RenderingStatus):
229-
"""
230-
Called when the server sends a rendering status update for ANY bot or script.
231-
232-
By default, this will update `self.renderer.can_render` if appropriate.
233-
"""
234-
if update.is_bot and update.index in self.indices:
235-
self.renderer.can_render = update.status
236-
237225
def update_rendering_status(
238226
self,
239227
status: bool,

rlbot/managers/rendering.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,6 @@ class Renderer:
4545
purple = flat.Color(128, 0, 128)
4646
teal = flat.Color(0, 128, 128)
4747

48-
can_render: bool = False
49-
5048
_logger = get_logger("renderer")
5149

5250
_used_group_ids: set[int] = set()
@@ -62,6 +60,11 @@ def __init__(self, game_interface: SocketRelay):
6260
self._send_msg: Callable[[flat.RenderGroup | flat.RemoveRenderGroup], None] = (
6361
game_interface.send_msg
6462
)
63+
self._game_interface = game_interface
64+
65+
@property
66+
def can_render(self) -> bool:
67+
return self._game_interface.can_render
6568

6669
def set_resolution(self, screen_width: float, screen_height: float):
6770
"""

rlbot/managers/script.py

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,6 @@ def __init__(self, default_agent_id: str | None = None):
5858
self._handle_ball_prediction
5959
)
6060
self._game_interface.packet_handlers.append(self._handle_packet)
61-
self._game_interface.rendering_status_handlers.append(
62-
self.rendering_status_update
63-
)
6461

6562
self.renderer = Renderer(self._game_interface)
6663

@@ -102,9 +99,6 @@ def _try_initialize(self):
10299
def _handle_match_config(self, match_config: flat.MatchConfiguration):
103100
self.match_config = match_config
104101
self._has_match_settings = True
105-
self.can_render = (
106-
match_config.enable_rendering == flat.DebugRendering.OnByDefault
107-
)
108102

109103
self._try_initialize()
110104

@@ -187,15 +181,6 @@ def _handle_match_communication(self, match_comm: flat.MatchComm):
187181
match_comm.team_only,
188182
)
189183

190-
def rendering_status_update(self, update: flat.RenderingStatus):
191-
"""
192-
Called when the server sends a rendering status update for ANY bot or script.
193-
194-
By default, this will update `self.renderer.can_render` if appropriate.
195-
"""
196-
if not update.is_bot and update.index == self.index:
197-
self.renderer.can_render = update.status
198-
199184
def update_rendering_status(
200185
self,
201186
status: bool,

rlbot/utils/maps.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,12 @@
8484
"DFHStadium_Anniversary": "stadium_10a_p",
8585
"Holyfield": "Labs_Holyfield_Space_P",
8686
"DriftWoods_Night": "woods_night_p",
87+
"BoostfieldMall": "Mall_Day_P",
88+
"ParcDeParis": "Paname_Dusk_P",
89+
"Roadblock": "Labs_Octagon_B2B_02_P",
90+
"Mannfield_Quads": "Labs_4v4_Arena15_EuroStadium_Night_P",
91+
"MidnightMetro_Quads": "Labs_4v4_Arena15_Blackout_P",
92+
"SunsetDunes_Quads": "Labs_4v4_Arena15_Retro_P",
8793
}
8894

8995
STANDARD_MAPS = [
@@ -140,4 +146,6 @@
140146
"DFHStadium_Anniversary",
141147
"DriftWoods_Night",
142148
"NeoTokyo_Comic",
149+
"BoostfieldMall",
150+
"ParcDeParis",
143151
]

rlbot/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "2.0.0-beta.50"
1+
__version__ = "2.0.0-beta.51"

0 commit comments

Comments
 (0)