Skip to content

Commit 9fc9df8

Browse files
committed
cooler nav menu for V2.
1 parent 3f8e4ab commit 9fc9df8

2 files changed

Lines changed: 26 additions & 39 deletions

File tree

heist/commands/user_commands.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -369,16 +369,6 @@ async def heist_status(self, ctx: commands.Context):
369369
f"Total: {humanize_number(total)}"
370370
)
371371
lines.append(f"\n**🌡️ Heat:**\n{_heat_bar(heat)}")
372-
373-
xp = await self.config.user(ctx.author).xp()
374-
lvl, into, span, pct = xp_progress(xp)
375-
lv_bonus = level_success_bonus(lvl)
376-
lines.append(
377-
f"\n**🎓 Level {lvl}** / {MAX_LEVEL}\n"
378-
f"{xp_bar(pct)} {humanize_number(into)}/{humanize_number(span)} XP"
379-
+ (f" · +{lv_bonus * 100:.0f}% success bonus" if lv_bonus > 0 else "")
380-
)
381-
382372
view = discord.ui.LayoutView(timeout=None)
383373
view.add_item(discord.ui.Container(discord.ui.TextDisplay("\n".join(lines))))
384374
await ctx.send(view=view)

heist/views.py

Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,9 @@ class _HeistNavBtn(discord.ui.Button):
6868
def __init__(self, direction: str, view: "HeistSelectionView", disabled: bool = False):
6969
match direction:
7070
case "prev":
71-
label, emoji = "Previous", "◀️"
71+
label, emoji = "", None
7272
case "next":
73-
label, emoji = "Next", "▶️"
73+
label, emoji = "", None
7474
super().__init__(
7575
label=label, emoji=emoji, style=discord.ButtonStyle.secondary, disabled=disabled
7676
)
@@ -221,7 +221,7 @@ def _build_content(self, disabled: bool = False):
221221
else f"Lv.{self.player_level}"
222222
)
223223

224-
lines = [f"## 🎯 Choose Your Heist - Page {self.page + 1}/{self.total_pages}\n"]
224+
lines = [f"## 🎯 Choose Your Heist\n"]
225225
for name, data in page_heists:
226226
loot_item = name if name in ITEMS and ITEMS[name][1].get("type") == "loot" else None
227227
if loot_item:
@@ -252,20 +252,22 @@ def _build_content(self, disabled: bool = False):
252252
select.disabled = disabled
253253
select_row = discord.ui.ActionRow(select)
254254

255-
nav_row = discord.ui.ActionRow()
256-
if self.page > 0:
257-
nav_row.add_item(_HeistNavBtn("prev", self, disabled=disabled))
258-
if self.page < self.total_pages - 1:
259-
nav_row.add_item(_HeistNavBtn("next", self, disabled=disabled))
255+
nav_row = discord.ui.ActionRow(
256+
_HeistNavBtn("prev", self, disabled=disabled or self.page == 0),
257+
discord.ui.Button(
258+
label=f"{self.page + 1}/{self.total_pages}",
259+
style=discord.ButtonStyle.secondary,
260+
disabled=True,
261+
),
262+
_HeistNavBtn("next", self, disabled=disabled or self.page == self.total_pages - 1),
263+
)
260264

261265
components: list = [
262266
discord.ui.TextDisplay("\n".join(lines)),
263267
discord.ui.Separator(),
264268
select_row,
269+
nav_row,
265270
]
266-
if nav_row.children:
267-
components.append(nav_row)
268-
269271
self.add_item(discord.ui.Container(*components))
270272

271273
async def interaction_check(self, interaction: discord.Interaction) -> bool:
@@ -285,14 +287,8 @@ async def on_timeout(self):
285287

286288
class _ShopNavBtn(discord.ui.Button):
287289
def __init__(self, direction: str, shop_view: "ShopView", disabled: bool = False):
288-
match direction:
289-
case "prev":
290-
label, emoji = "Previous", "◀️"
291-
case "next":
292-
label, emoji = "Next", "▶️"
293-
super().__init__(
294-
label=label, emoji=emoji, style=discord.ButtonStyle.secondary, disabled=disabled
295-
)
290+
label = "◀" if direction == "prev" else "▶"
291+
super().__init__(label=label, style=discord.ButtonStyle.secondary, disabled=disabled)
296292
self.direction = direction
297293
self.shop_view = shop_view
298294

@@ -302,7 +298,6 @@ async def callback(self, interaction: discord.Interaction):
302298
self.shop_view.page -= 1
303299
case "next" if self.shop_view.page < len(self.shop_view.pages) - 1:
304300
self.shop_view.page += 1
305-
# Refresh costs from config so custom prices are always current
306301
self.shop_view.costs = {
307302
name: await self.shop_view.cog.get_item_cost(name)
308303
for name, (_, data) in ITEMS.items()
@@ -372,7 +367,7 @@ def _build_content(self, disabled: bool = False):
372367
if data["type"] == item_type and "cost" in data
373368
]
374369

375-
lines = [f"## 🛒 Heist Shop - {section_label} ({self.page + 1}/{total})\n"]
370+
lines = [f"## 🛒 Heist Shop - {section_label}\n"]
376371
for name, emoji, data in items:
377372
cost = self.costs.get(name, data.get("cost", 0))
378373
line = f"**{emoji} {fmt(name)}** - {cost:,} {self.currency_name}\n"
@@ -404,20 +399,22 @@ def _build_content(self, disabled: bool = False):
404399
select = _ShopSelect(self.cog, options)
405400
select.disabled = disabled
406401

407-
nav_row = discord.ui.ActionRow()
408-
if self.page > 0:
409-
nav_row.add_item(_ShopNavBtn("prev", self, disabled=disabled))
410-
if self.page < len(self.pages) - 1:
411-
nav_row.add_item(_ShopNavBtn("next", self, disabled=disabled))
402+
nav_row = discord.ui.ActionRow(
403+
_ShopNavBtn("prev", self, disabled=disabled or self.page == 0),
404+
discord.ui.Button(
405+
label=f"{self.page + 1}/{len(self.pages)}",
406+
style=discord.ButtonStyle.secondary,
407+
disabled=True,
408+
),
409+
_ShopNavBtn("next", self, disabled=disabled or self.page == len(self.pages) - 1),
410+
)
412411

413412
components: list = [
414413
discord.ui.TextDisplay("".join(lines)),
415414
discord.ui.Separator(),
416415
discord.ui.ActionRow(select),
416+
nav_row,
417417
]
418-
if nav_row.children:
419-
components.append(nav_row)
420-
421418
self.add_item(discord.ui.Container(*components))
422419

423420
async def interaction_check(self, interaction: discord.Interaction) -> bool:

0 commit comments

Comments
 (0)