From bdb1e84883fea061c7e3031ce4d0878dad550a1b Mon Sep 17 00:00:00 2001 From: seria Date: Tue, 5 Mar 2024 14:20:12 +0800 Subject: [PATCH] fix: Fix font missing in item list card --- src/draw/item_list.py | 14 ++++++++++---- src/ui/hoyo/genshin/abyss.py | 4 +++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/draw/item_list.py b/src/draw/item_list.py index 8e04ab1c..76bae623 100644 --- a/src/draw/item_list.py +++ b/src/draw/item_list.py @@ -1,4 +1,5 @@ from io import BytesIO +from typing import TYPE_CHECKING from cachetools import LRUCache, cached from PIL import Image, ImageDraw @@ -13,18 +14,23 @@ Drawer, ) +if TYPE_CHECKING: + from discord import Locale -def cache_key(items: list[ItemWithDescription] | list[ItemWithTrailing], dark_mode: bool) -> str: + +def cache_key( + items: list[ItemWithDescription] | list[ItemWithTrailing], dark_mode: bool, locale: "Locale" +) -> str: items_key = "_".join( f"{item.title}_{item.description if isinstance(item, ItemWithDescription) else item.trailing}" for item in items ) - return f"{items_key}_{dark_mode}" + return f"{items_key}_{dark_mode}_{locale.value}" @cached(cache=LRUCache(maxsize=100), key=cache_key) def draw_item_list( - items: list[ItemWithDescription] | list[ItemWithTrailing], dark_mode: bool + items: list[ItemWithDescription] | list[ItemWithTrailing], dark_mode: bool, locale: "Locale" ) -> BytesIO: is_trailing = any(isinstance(item, ItemWithTrailing) for item in items) @@ -49,7 +55,7 @@ def draw_item_list( color=DARK_SURFACE if dark_mode else LIGHT_SURFACE, ) draw = ImageDraw.Draw(im) - drawer = Drawer(draw, folder="draw-list", dark_mode=dark_mode) + drawer = Drawer(draw, folder="draw-list", dark_mode=dark_mode, locale=locale) for index, item in enumerate(items): pos = ( diff --git a/src/ui/hoyo/genshin/abyss.py b/src/ui/hoyo/genshin/abyss.py index 7c5d08c5..c44ed1ce 100644 --- a/src/ui/hoyo/genshin/abyss.py +++ b/src/ui/hoyo/genshin/abyss.py @@ -70,7 +70,9 @@ async def update(self, i: "INTERACTION") -> None: await download_and_save_static_images( [item.icon for item in items[0] + items[1]], "draw-list", i.client.session ) - buffer = await asyncio.to_thread(draw_item_list, items[self._wave_index], self._dark_mode) + buffer = await asyncio.to_thread( + draw_item_list, items[self._wave_index], self._dark_mode, self.locale + ) buffer.seek(0) file_ = File(buffer, filename="enemies.webp")