Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from kivy.app import App
- from kivy.uix.screenmanager import ScreenManager, FadeTransition
- from kivy.uix.screenmanager import Screen
- from kivy.uix.boxlayout import BoxLayout
- from kivy.uix.button import Button
- from kivy.uix.label import Label
- from kivy.clock import Clock
- from threading import Thread
- import os
- import json
- import time
- from splash_screen import SplashScreen
- from pokemon_editor import TeamBuilderScreen
- from pikalytics_scraper import get_pikalytics_data
- from kivy.uix.scrollview import ScrollView
- from kivy.uix.gridlayout import GridLayout
- from kivy.uix.image import Image
- from kivy.uix.widget import Widget
- from load_team_screen import LoadTeamScreen
- class UsageStatsScreen(Screen):
- def __init__(self, **kwargs):
- super().__init__(**kwargs)
- layout = BoxLayout(orientation='vertical')
- label = Label(text="Top Used Pokémon from Pikalytics", size_hint=(1, None), height=40)
- layout.add_widget(label)
- scroll = ScrollView()
- grid = GridLayout(cols=2, size_hint_y=None, spacing=10, padding=10)
- grid.bind(minimum_height=grid.setter('height'))
- try:
- with open(".cache/pikalytics.json", "r", encoding="utf-8") as f:
- usage_data = json.load(f)
- for name, pdata in usage_data.items():
- box = BoxLayout(orientation='vertical', size_hint_y=None, height=140)
- sprite_path = f"assets/sprites/{name.lower().replace(' ', '_')}.png"
- image = Image(source=sprite_path if os.path.exists(sprite_path) else "assets/pokeball_filled.png", size_hint_y=None, height=64)
- box.add_widget(image)
- box.add_widget(Label(text=name, font_size=14))
- box.add_widget(Label(text=pdata.get("item", ""), font_size=12))
- box.add_widget(Label(text=", ".join([m["name"] for m in pdata.get("moves", [])]), font_size=10))
- grid.add_widget(box)
- except Exception as e:
- grid.add_widget(Label(text=f"Failed to load usage data: {e}"))
- scroll.add_widget(grid)
- layout.add_widget(scroll)
- self.add_widget(layout)
- class MainMenuScreen(Screen):
- def __init__(self, **kwargs):
- super().__init__(**kwargs)
- layout = BoxLayout(orientation='vertical')
- self.status_label = Label(text="Welcome to the Pokémon Team Builder")
- layout.add_widget(self.status_label)
- team_builder_btn = Button(text="Team Builder")
- team_builder_btn.bind(on_release=lambda x: self.goto("team_builder"))
- layout.add_widget(team_builder_btn)
- usage_btn = Button(text="Usage Stats")
- usage_btn.bind(on_release=lambda x: self.goto("usage_stats"))
- layout.add_widget(usage_btn)
- load_team_btn = Button(text="Load Team")
- load_team_btn.bind(on_release=lambda x: self.goto("load_team"))
- layout.add_widget(load_team_btn)
- self.add_widget(layout)
- def goto(self, name):
- self.manager.current = name
- load_team_btn = Button(text="Load Team")
- load_team_btn.bind(on_release=lambda x: self.goto("load_team"))
- layout.add_widget(load_team_btn)
- class PokemonTeamBuilderApp(App):
- def load_team_into_editor(self, team_data):
- screen = self.root.get_screen("team_builder")
- screen.load_team(team_data)
- def build(self):
- sm = ScreenManager(transition=FadeTransition())
- sm.parent_app = self
- sm.add_widget(SplashScreen(name="splash"))
- sm.add_widget(MainMenuScreen(name="main_menu"))
- sm.add_widget(TeamBuilderScreen(name="team_builder"))
- sm.add_widget(UsageStatsScreen(name="usage_stats"))
- sm.add_widget(LoadTeamScreen(name="load_team"))
- sm.current = "splash"
- return sm
- if __name__ == '__main__':
- PokemonTeamBuilderApp().run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement