feat: Add smaller font for inning indicator and use in live MLB display

This commit is contained in:
ChuckBuilds
2025-04-25 15:14:36 -05:00
parent 7504fa856a
commit 4f3abb4975
2 changed files with 13 additions and 2 deletions

View File

@@ -176,6 +176,14 @@ class DisplayManager:
self.small_font = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 8) self.small_font = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 8)
logger.info("Press Start 2P small font loaded successfully") 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 # Load 5x7 BDF font for calendar events
try: try:
script_dir = os.path.dirname(os.path.abspath(__file__)) script_dir = os.path.dirname(os.path.abspath(__file__))
@@ -219,6 +227,8 @@ class DisplayManager:
self.calendar_font = self.regular_font self.calendar_font = self.regular_font
if not hasattr(self, 'extra_small_font'): if not hasattr(self, 'extra_small_font'):
self.extra_small_font = self.regular_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): def get_text_width(self, text, font):
"""Get the width of text when rendered with the given font.""" """Get the width of text when rendered with the given font."""

View File

@@ -535,11 +535,12 @@ class MLBLiveManager(BaseMLBManager):
# Draw Inning (Top Center) # Draw Inning (Top Center)
inning_half_indicator = "" if game_data['inning_half'] == 'top' else "" inning_half_indicator = "" if game_data['inning_half'] == 'top' else ""
inning_text = f"{inning_half_indicator}{game_data['inning']}" 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_width = inning_bbox[2] - inning_bbox[0]
inning_x = (width - inning_width) // 2 inning_x = (width - inning_width) // 2
inning_y = 2 # Position near top center 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 --- # --- NEW BASES AND COUNT DRAWING ---
bases_occupied = game_data['bases_occupied'] # [1st, 2nd, 3rd] bases_occupied = game_data['bases_occupied'] # [1st, 2nd, 3rd]