feat: Add new GUI effects view and numerous image assets.

This commit is contained in:
kiyreload27
2025-12-31 16:29:12 +00:00
parent 3b58d234c4
commit 04a2c1bcb3
1051 changed files with 531 additions and 243 deletions

View File

@@ -132,14 +132,23 @@ class SkillSearchFrame(ttk.Frame):
def load_skills(self):
"""Load all unique skills into listbox"""
self.all_skills = get_all_unique_skills()
self.update_listbox(self.all_skills)
skills_data = get_all_unique_skills()
# Store as list of (skill_name, is_golden) tuples
self.all_skills = skills_data
self.update_listbox(skills_data)
def update_listbox(self, items):
"""Update listbox content"""
self.skill_listbox.delete(0, tk.END)
for item in items:
self.skill_listbox.insert(tk.END, item)
if isinstance(item, tuple):
skill_name, is_golden = item
# Display with golden indicator
display_name = f"✨ GOLDEN {skill_name}" if is_golden else skill_name
self.skill_listbox.insert(tk.END, display_name)
else:
# Backward compatibility
self.skill_listbox.insert(tk.END, item)
def filter_skills(self, *args):
"""Filter skills based on search text"""
@@ -147,8 +156,18 @@ class SkillSearchFrame(ttk.Frame):
if not search:
self.update_listbox(self.all_skills)
return
filtered = [s for s in self.all_skills if search in s.lower()]
# Filter skills - handle both tuple format and string format
filtered = []
for item in self.all_skills:
if isinstance(item, tuple):
skill_name, is_golden = item
if search in skill_name.lower() or (search == "golden" and is_golden):
filtered.append(item)
else:
if search in item.lower():
filtered.append(item)
self.update_listbox(filtered)
def on_filter_changed(self):
@@ -162,7 +181,13 @@ class SkillSearchFrame(ttk.Frame):
if not selection:
return
skill_name = self.skill_listbox.get(selection[0])
display_name = self.skill_listbox.get(selection[0])
# Extract actual skill name (remove "✨ GOLDEN " prefix if present)
if display_name.startswith("✨ GOLDEN "):
skill_name = display_name.replace("✨ GOLDEN ", "", 1)
else:
skill_name = display_name
self.current_skill = skill_name
self.show_cards_for_skill(skill_name)
@@ -191,22 +216,34 @@ class SkillSearchFrame(ttk.Frame):
if resolved_path and os.path.exists(resolved_path):
try:
pil_img = Image.open(resolved_path)
pil_img.thumbnail((32, 32), Image.Resampling.LANCZOS)
pil_img.thumbnail((48, 48), Image.Resampling.LANCZOS)
img = ImageTk.PhotoImage(pil_img)
self.icon_cache[card_id] = img
except:
pass
type_display = f"{get_type_icon(card['type'])} {card['type']}"
# Handle both 'type' and 'card_type' keys for compatibility
card_type = card.get('type') or card.get('card_type') or 'Unknown'
type_display = f"{get_type_icon(card_type)} {card_type}"
owned_mark = "" if card.get('is_owned') else ""
# Highlight golden skills in source column
source = card.get('source', 'Event')
if card.get('is_gold', False):
source = f"✨ GOLDEN {source.replace('✨ GOLDEN ', '')}" # Ensure no double prefix
# Handle potential None values
card_name = card.get('name') or 'Unknown'
card_rarity = card.get('rarity') or 'Unknown'
card_details = card.get('details') or 'No details available'
values = (
owned_mark,
card['name'],
card['rarity'],
card_name,
card_rarity,
type_display,
card['source'],
card['details']
source,
card_details
)
if img: