diff --git a/overcooked_simulator/gui_2d_vis/overcooked_gui.py b/overcooked_simulator/gui_2d_vis/overcooked_gui.py index 4f20e235b9cadec6765e52b280be5b0a899363ea..b6a62b5b5f693675560b02fb283e3e7d616277da 100644 --- a/overcooked_simulator/gui_2d_vis/overcooked_gui.py +++ b/overcooked_simulator/gui_2d_vis/overcooked_gui.py @@ -605,20 +605,22 @@ class PyGameGUI: self.update_score_label(state) if state["info_msg"]: - text_surface = self.comic_sans.render( - state["info_msg"][0][0], - antialias=True, - color=(0, 0, 0) - if state["info_msg"][0][1] == "Normal" - else ( - (255, 0, 0) if state["info_msg"][0][1] == "Warning" else (0, 255, 0) - ), - # bgcolor=(255, 255, 255), - ) - self.main_window.blit( - text_surface, - (self.window_width / 4, self.window_height - self.screen_margin + 5), - ) + for idx, msg in enumerate(reversed(state["info_msg"])): + text_surface = self.comic_sans.render( + msg[0], + antialias=True, + color=(0, 0, 0) + if msg[1] == "Normal" + else ((255, 0, 0) if msg[1] == "Warning" else (0, 255, 0)), + # bgcolor=(255, 255, 255), + ) + self.main_window.blit( + text_surface, + ( + self.window_width / 4, + self.window_height - self.screen_margin + 5 + (20 * idx), + ), + ) def set_window_size(self): self.game_screen = pygame.Surface( diff --git a/overcooked_simulator/info_msg.py b/overcooked_simulator/info_msg.py index 9f88f5ff250dc0e4fb6774c93be4f84f53000d5d..f65385b8aeb765c6b02102d4052dc43f2ca71ecb 100644 --- a/overcooked_simulator/info_msg.py +++ b/overcooked_simulator/info_msg.py @@ -26,3 +26,14 @@ class InfoMsgManager: "level": self.level, } ) + self.remove_old_msgs(env) + + @staticmethod + def remove_old_msgs(env: Environment): + for player_id, msgs in env.info_msgs_per_player.items(): + delete_msgs = [] + for idx, msg in enumerate(msgs): + if msg["end_time"] < env.env_time: + delete_msgs.append(idx) + for idx in reversed(delete_msgs): + msgs.pop(idx)