Skip to content

Commit

Permalink
fix: Fix wrong traveler element in theater & abyss card
Browse files Browse the repository at this point in the history
  • Loading branch information
seriaati committed Feb 3, 2025
1 parent caaa904 commit b6bbc16
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 9 deletions.
10 changes: 7 additions & 3 deletions hoyo_buddy/draw/funcs/hoyo/genshin/abyss.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from discord import Locale
from PIL import Image, ImageDraw

from hoyo_buddy.constants import contains_traveler_id
from hoyo_buddy.constants import TRAVELER_IDS
from hoyo_buddy.draw.drawer import Drawer
from hoyo_buddy.enums import Game
from hoyo_buddy.l10n import LocaleStr
Expand All @@ -24,11 +24,13 @@ def __init__(
locale: str,
character_icons: dict[str, str],
character_ranks: dict[int, int],
traveler_element: str | None,
) -> None:
self._data = data
self._locale = locale
self._character_icons = character_icons
self._character_ranks = character_ranks
self._traveler_element = traveler_element

self.drawer: Drawer = None # pyright: ignore[reportAttributeAccessIssue]
self.im: Image.Image = None # pyright: ignore[reportAttributeAccessIssue]
Expand Down Expand Up @@ -114,11 +116,13 @@ def draw_character_block(self, character: genshin.models.AbyssCharacter | None)
f"Lv.{character.level}", size=24, style="bold", position=(58, 132), anchor="mm"
)

if contains_traveler_id(str(character.id)):
if character.id in TRAVELER_IDS:
element_flair = self.drawer.open_asset(f"block/{character.rarity}_element_flair.png")
bk.alpha_composite(element_flair, (0, 0))
element_icon = self.drawer.open_asset(
f"Element_White_{character.element}.png", size=(25, 25), folder="gi-elements"
f"Element_White_{self._traveler_element or character.element}.png",
size=(25, 25),
folder="gi-elements",
)
bk.alpha_composite(
element_icon,
Expand Down
10 changes: 7 additions & 3 deletions hoyo_buddy/draw/funcs/hoyo/genshin/img_theater.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import genshin
from PIL import Image, ImageDraw

from hoyo_buddy.constants import contains_traveler_id
from hoyo_buddy.constants import TRAVELER_IDS
from hoyo_buddy.draw.drawer import Drawer
from hoyo_buddy.enums import Game
from hoyo_buddy.l10n import LocaleStr
Expand All @@ -23,11 +23,13 @@ def __init__(
chara_consts: dict[int, int],
character_icons: dict[str, str],
locale: str,
traveler_element: str | None,
) -> None:
self._theater = theater
self._chara_consts = chara_consts
self._character_icons = character_icons
self._dark_mode = True # To write white colored texts
self._traveler_element = traveler_element

self._locale = locale
self._asset_dir = "hoyo-buddy-assets/assets/img-theater"
Expand Down Expand Up @@ -193,12 +195,14 @@ def _draw_act_block(self, act: genshin.models.Act, pos: tuple[int, int]) -> None
str(character.level), size=18, position=(27, 110), anchor="mm", style="bold"
)

if contains_traveler_id(str(character.id)):
if character.id in TRAVELER_IDS:
element_flair_pos = (92, 92)
element_flair = self._drawer.open_asset("normal_chara_element_flair.png")
block.paste(element_flair, element_flair_pos, element_flair)
element_icon = self._drawer.open_asset(
f"Element_White_{character.element}.png", folder="gi-elements", size=(25, 25)
f"Element_White_{self._traveler_element or character.element}.png",
folder="gi-elements",
size=(25, 25),
)
block.paste(
element_icon,
Expand Down
10 changes: 8 additions & 2 deletions hoyo_buddy/draw/main_funcs.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from discord import File
from genshin.models import ZZZFullAgent

from hoyo_buddy.constants import TRAVELER_IDS
from hoyo_buddy.db.models import JSONFile
from hoyo_buddy.draw import funcs
from hoyo_buddy.models import (
Expand Down Expand Up @@ -311,11 +312,13 @@ async def draw_spiral_abyss_card(
)
await download_images(urls, "abyss", draw_input.session)

traveler = next((c for c in characters if c.id in TRAVELER_IDS), None)
card = funcs.genshin.SpiralAbyssCard(
abyss,
locale=draw_input.locale.value,
character_icons=character_icons,
character_ranks=character_ranks,
traveler_element=traveler.element if traveler is not None else None,
)
buffer = await draw_input.loop.run_in_executor(draw_input.executor, card.draw)
buffer.seek(0)
Expand Down Expand Up @@ -376,7 +379,10 @@ async def draw_apc_shadow_card(


async def draw_img_theater_card(
draw_input: DrawInput, data: ImgTheaterData, chara_consts: dict[int, int]
draw_input: DrawInput,
data: ImgTheaterData,
chara_consts: dict[int, int],
traveler_element: str | None,
) -> File:
async with ambr.AmbrAPI() as api:
character_icons = {
Expand All @@ -401,7 +407,7 @@ async def draw_img_theater_card(
buffer = await draw_input.loop.run_in_executor(
draw_input.executor,
funcs.genshin.ImgTheaterCard(
data, chara_consts, character_icons, draw_input.locale.value
data, chara_consts, character_icons, draw_input.locale.value, traveler_element
).draw,
)

Expand Down
4 changes: 3 additions & 1 deletion hoyo_buddy/ui/hoyo/challenge.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
)
from genshin.models import Character as GICharacter

from hoyo_buddy.constants import GAME_CHALLENGE_TYPES, GPY_LANG_TO_LOCALE
from hoyo_buddy.constants import GAME_CHALLENGE_TYPES, GPY_LANG_TO_LOCALE, TRAVELER_IDS
from hoyo_buddy.db import ChallengeHistory, draw_locale, get_dyk
from hoyo_buddy.draw.main_funcs import (
draw_apc_shadow_card,
Expand Down Expand Up @@ -331,10 +331,12 @@ async def draw_card(
draw_input, self.challenge, self.get_season(self.challenge)
)
if isinstance(self.challenge, ImgTheaterData):
traveler = next((c for c in self.characters if c.id in TRAVELER_IDS), None)
return await draw_img_theater_card(
draw_input,
self.challenge,
{chara.id: chara.constellation for chara in self.characters},
traveler.element if traveler is not None else None,
)
if isinstance(self.challenge, DeadlyAssault):
return await draw_assault_card(
Expand Down

0 comments on commit b6bbc16

Please sign in to comment.