import os
from PIL import Image

#print(os.getcwd())
os.chdir('/Users/Nacim/Desktop/cours/2022-2023/python/TP3') #Il faut décommenter cette ligne et indiquer le bon chemin d'accès

from generateur_HTML import code_HTML

fichier = open('pokemon.txt',mode = 'r', encoding = 'UTF-8') #On ouvre le fichier pokemon en lecture

class pokemon:
    """ classe pokemon ayant comme attributs les différentes caractéristiques d'un pokemon """
    def __init__(self, num, nom, pdv, atk, defense, vitesse, special, types = (None, None) ):
        self.num = num
        self.nom = nom
        self.pdv = pdv
        self.attaque = atk
        self.defense = defense
        self.vitesse = vitesse
        self.special = special
        self.types = types

    def __repr__(self):
        image = Image.open('sprites/{}.png'.format(self.nom.lower())) #On pense au .lower() car les noms des images ne contiennent pas de majuscules
        image.show() #On affiche l'image
        image.close() #On ferme le fichier pour ne pas surcharger la mémoire
        return self.nom #la méthode repr doit toujours renvoyer une chaine de caractère

pokedex = []

for ligne in fichier: #On parcourt les lignes
    liste = ligne.split('\t') #On 'coupe' la ligne à chaque tabulation et on stocke ça dans une liste
    for k in range(len(liste)):
        if k!=2: #Si l'élément n'est pas le nom
            liste[k] = int(liste[k]) #On le convertit en entier
    pokedex.append(pokemon(*liste[1:len(liste)-1])) #on ajoute au pokedex un pokemon ayant pour caractéristique ce qui se trouve dans la liste. L'étoile permet de transformer une liste en plusieurs arguments d'une fonction

fichier.close() #On pense à fermer le fichier

types = open("types.txt", mode = 'r', encoding = 'UTF-8') #On ouvre la table des types

liste_ligne = types.read().split('\n') #Je vous présente ici une autre méthode de lecture qui consiste à récupérer tout le fichier, puis à stocker la liste des lignes (un \n correspondant à un retour à la ligne)
liste_ligne.pop() #On retire le dernier élément de la liste car le fichier se termine par une ligne vide (il faut y faire attention)
for ligne in range(len(liste_ligne)): #On parcourt chaque ligne de ce fichier
    li = liste_ligne[ligne].split('\t') #On la coupe à chaque tabulation
    if len(li) == 8: #Si elle contient 8 éléments, le pokemon n'a qu'un type
        pokedex[ligne].types = (li[-1],None) #Qui est le dernier élément de la ligne
    else: #Sinon il en a 2
        pokedex[ligne].types = (li[-2], li[-1])
types.close()  #On pense aussi à fermer ce fichier

try :
    os.makedirs('pokedex') #On essaie de créer le dossier pokedex
except FileExistsError: #S'il existe déjà, on rattrape l'erreur
    print("Le répertoire existe déjà")


for pokemon in pokedex:#Pour chaque pokemon dans le pokedex
    txt = code_HTML(pokemon.nom, pokemon,pokemon.nom) #On génère le code HTML de la page pokedex du pokemon
    page = open("pokedex/{}.html".format(pokemon.nom),'w') #On ouvre un fichier html qui contiendra le nom de ce pokemon. Comme au départ le fichier existe pas, ça le crée
    page.write(txt) #On écrit dans ce fichier le code HTML généré
    page.close() #On clot le fichier pour ne pas surcharger la mémoire

