From 4f3abb4975bdf8d6bd7f0aedb010d929324dadf7 Mon Sep 17 00:00:00 2001 From: ChuckBuilds <33324927+ChuckBuilds@users.noreply.github.com> Date: Fri, 25 Apr 2025 15:14:36 -0500 Subject: [PATCH] feat: Add smaller font for inning indicator and use in live MLB display --- src/display_manager.py | 10 ++++++++++ src/mlb_manager.py | 5 +++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/display_manager.py b/src/display_manager.py index 0fea2f37..2f1b55aa 100644 --- a/src/display_manager.py +++ b/src/display_manager.py @@ -176,6 +176,14 @@ class DisplayManager: self.small_font = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 8) logger.info("Press Start 2P small font loaded successfully") + # Load another PressStart2P instance at size 6 for inning display + try: + self.inning_font = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 6) + logger.info("Press Start 2P inning font (size 6) loaded successfully") + except Exception as e: + logger.warning(f"Failed to load Press Start 2P size 6: {e}. Falling back to small_font.") + self.inning_font = self.small_font + # Load 5x7 BDF font for calendar events try: script_dir = os.path.dirname(os.path.abspath(__file__)) @@ -219,6 +227,8 @@ class DisplayManager: self.calendar_font = self.regular_font if not hasattr(self, 'extra_small_font'): self.extra_small_font = self.regular_font + if not hasattr(self, 'inning_font'): # Add fallback for inning_font too + self.inning_font = self.small_font def get_text_width(self, text, font): """Get the width of text when rendered with the given font.""" diff --git a/src/mlb_manager.py b/src/mlb_manager.py index 5f0dcced..a2be5a45 100644 --- a/src/mlb_manager.py +++ b/src/mlb_manager.py @@ -535,11 +535,12 @@ class MLBLiveManager(BaseMLBManager): # Draw Inning (Top Center) inning_half_indicator = "▲" if game_data['inning_half'] == 'top' else "▼" inning_text = f"{inning_half_indicator}{game_data['inning']}" - inning_bbox = draw.textbbox((0, 0), inning_text, font=self.display_manager.font) + inning_font_to_use = self.display_manager.inning_font # Use the new smaller font + inning_bbox = draw.textbbox((0, 0), inning_text, font=inning_font_to_use) inning_width = inning_bbox[2] - inning_bbox[0] inning_x = (width - inning_width) // 2 inning_y = 2 # Position near top center - draw.text((inning_x, inning_y), inning_text, fill=(255, 255, 255), font=self.display_manager.font) + draw.text((inning_x, inning_y), inning_text, fill=(255, 255, 255), font=inning_font_to_use) # --- NEW BASES AND COUNT DRAWING --- bases_occupied = game_data['bases_occupied'] # [1st, 2nd, 3rd]