Implement handling for drops with more than one benefit
This commit is contained in:
1 parent
53d78f8a8d
commit
3c8274b166
2 files changed
+19
-10
No files matched your search
@@ -975,10 +975,13 @@ class InventoryOverview:
|
|||||||
for i, drop in enumerate(campaign.drops):
|
for i, drop in enumerate(campaign.drops):
|
||||||
drop_frame = ttk.Frame(drops_row, relief="ridge", borderwidth=1, padding=5)
|
drop_frame = ttk.Frame(drops_row, relief="ridge", borderwidth=1, padding=5)
|
||||||
drop_frame.grid(column=i, row=0, padx=4)
|
drop_frame.grid(column=i, row=0, padx=4)
|
||||||
drop_image = await self._cache.get(drop.image_url, (80, 80))
|
benefits_frame = ttk.Frame(drop_frame)
|
||||||
ttk.Label(
|
benefits_frame.grid(column=0, row=0)
|
||||||
drop_frame, text=drop.rewards_text(), image=drop_image, compound="bottom"
|
for i, benefit in enumerate(drop.benefits):
|
||||||
).grid(column=0, row=0)
|
benefit_image = await self._cache.get(benefit.image_url, (80, 80))
|
||||||
|
ttk.Label(
|
||||||
|
benefits_frame, text=benefit.name, image=benefit_image, compound="bottom"
|
||||||
|
).grid(column=i, row=0, padx=5)
|
||||||
progress_text, progress_color = self.get_progress(drop)
|
progress_text, progress_color = self.get_progress(drop)
|
||||||
self._drops[drop.id] = label = ttk.Label(
|
self._drops[drop.id] = label = ttk.Label(
|
||||||
drop_frame, text=progress_text, foreground=progress_color
|
drop_frame, text=progress_text, foreground=progress_color
|
||||||
|
|||||||
+12
-6
@@ -24,6 +24,14 @@ def remove_dimensions(url: URLType) -> URLType:
|
|||||||
return URLType(DIMS_PATTERN.sub('', url))
|
return URLType(DIMS_PATTERN.sub('', url))
|
||||||
|
|
||||||
|
|
||||||
|
class Benefit:
|
||||||
|
def __init__(self, data: JsonType):
|
||||||
|
benefit_data: JsonType = data["benefit"]
|
||||||
|
self.id: str = benefit_data["id"]
|
||||||
|
self.name: str = benefit_data["name"]
|
||||||
|
self.image_url: URLType = benefit_data["imageAssetURL"]
|
||||||
|
|
||||||
|
|
||||||
class BaseDrop:
|
class BaseDrop:
|
||||||
def __init__(
|
def __init__(
|
||||||
self, campaign: DropsCampaign, data: JsonType, claimed_benefits: dict[str, datetime]
|
self, campaign: DropsCampaign, data: JsonType, claimed_benefits: dict[str, datetime]
|
||||||
@@ -32,9 +40,7 @@ class BaseDrop:
|
|||||||
self.id: str = data["id"]
|
self.id: str = data["id"]
|
||||||
self.name: str = data["name"]
|
self.name: str = data["name"]
|
||||||
self.campaign: DropsCampaign = campaign
|
self.campaign: DropsCampaign = campaign
|
||||||
self.rewards: list[str] = [b["benefit"]["name"] for b in data["benefitEdges"]]
|
self.benefits: list[Benefit] = [Benefit(b) for b in data["benefitEdges"]]
|
||||||
# we use the first benefit's image specifically here
|
|
||||||
self.image_url: URLType = data["benefitEdges"][0]["benefit"]["imageAssetURL"]
|
|
||||||
self.starts_at: datetime = timestamp(data["startAt"])
|
self.starts_at: datetime = timestamp(data["startAt"])
|
||||||
self.ends_at: datetime = timestamp(data["endAt"])
|
self.ends_at: datetime = timestamp(data["endAt"])
|
||||||
self.claim_id: str | None = None
|
self.claim_id: str | None = None
|
||||||
@@ -52,8 +58,8 @@ class BaseDrop:
|
|||||||
(
|
(
|
||||||
dts := [
|
dts := [
|
||||||
claimed_benefits[bid]
|
claimed_benefits[bid]
|
||||||
for b in data["benefitEdges"]
|
for benefit in self.benefits
|
||||||
if (bid := b["benefit"]["id"]) in claimed_benefits
|
if (bid := benefit.id) in claimed_benefits
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
and all(self.starts_at <= dt < self.ends_at for dt in dts)
|
and all(self.starts_at <= dt < self.ends_at for dt in dts)
|
||||||
@@ -97,7 +103,7 @@ class BaseDrop:
|
|||||||
self.claim_id = claim_id
|
self.claim_id = claim_id
|
||||||
|
|
||||||
def rewards_text(self, delim: str = ", ") -> str:
|
def rewards_text(self, delim: str = ", ") -> str:
|
||||||
return delim.join(self.rewards)
|
return delim.join(benefit.name for benefit in self.benefits)
|
||||||
|
|
||||||
async def claim(self) -> bool:
|
async def claim(self) -> bool:
|
||||||
result = await self._claim()
|
result = await self._claim()
|
||||||
|
|||||||
Reference in new issue
Block a user