def buildUI(self, topframe, callbackDict): import tkinter.ttk as ttk import tkinter as tk ret = {} frame = ttk.Frame(topframe) typeEtatLbl = ttk.Label(frame, text="Type d'état:") typeEtatLbl.pack(side="left") self.typeEtatCombobox = ttk.Combobox(frame, values=sorted(Etat.getListEtat()), state="readonly") self.typeEtatCombobox.set(self.etat.__class__.__name__) self.typeEtatCombobox.pack(side="left") self.typeEtatCombobox.bind('<<ComboboxSelected>>', self.etatTypeModified) self.etatCaracsFrame = ttk.LabelFrame( frame, text="Caractéristiques de l'état") self.etatCaracsFrame.pack(side="top") self.etatTypeModified() etatOptionFrame = ttk.Frame(frame) cumulMaxLbl = ttk.Label(etatOptionFrame, text="Cumul max:") cumulMaxLbl.grid(row=0, column=0, sticky="e") cumulMaxSpinbox = tk.Spinbox(etatOptionFrame, from_=-1, to=99, width=3) cumulMaxSpinbox.delete(0, 'end') cumulMaxSpinbox.insert(0, int(self.kwargs.get("cumulMax", -1))) cumulMaxSpinbox.grid(row=0, column=1, sticky="w") ret["kwargs:cumulMax"] = cumulMaxSpinbox ret["etat"] = self.etatWidgets etatOptionFrame.pack(side="bottom") frame.pack() return ret
def __init__(self, etat_etat=None, **kwargs): """@summary: Initialise un effet appliquant un état. @etat_etat: l'état qui va être appliqué @type: Etat @kwargs: Options de l'effets @type: **kwargs""" self.kwargs = kwargs self.etatWidgets = {} if etat_etat is not None: self.etat = etat_etat else: self.etat = Etat("TODO", 0, 1) super().__init__(**kwargs)
def __init__(self, etat_etat=None, **kwargs): """@summary: Initialise un effet placant un état sur le lanceur @etat_etat: l'état à placer sur le lanceur @type: Etat @kwargs: Options de l'effets @type: **kwargs""" self.kwargs = kwargs self.etatWidgets = {} if etat_etat is not None: self.etat = etat_etat else: self.etat = Etat("TODO", 0, 1) super().__init__(**kwargs)
def buildUI(self, topframe, callbackDict): import tkinter.ttk as ttk import tkinter as tk ret = {} frame = ttk.Frame(topframe) typeEtatLbl = ttk.Label(frame, text="Type d'état:") typeEtatLbl.pack(side="left") self.typeEtatCombobox = ttk.Combobox(frame, values=sorted(Etat.getListEtat()), state="readonly") self.typeEtatCombobox.set(self.etat.__class__.__name__) self.typeEtatCombobox.pack(side="left") self.typeEtatCombobox.bind('<<ComboboxSelected>>', self.etatTypeModified) self.etatCaracsFrame = ttk.LabelFrame( frame, text="Caractéristiques de l'état") self.etatCaracsFrame.pack(side="top") self.etatTypeModified() etatOptionFrame = ttk.Frame(frame) cumulMaxLbl = ttk.Label(etatOptionFrame, text="Cumul max:") cumulMaxLbl.grid(row=0, column=0, sticky="e") cumulMaxSpinbox = tk.Spinbox(etatOptionFrame, from_=-1, to=99, width=3) cumulMaxSpinbox.delete(0, 'end') cumulMaxSpinbox.insert(0, int(self.kwargs.get("cumulMax", -1))) cumulMaxSpinbox.grid(row=0, column=1, sticky="w") sortsExclusLbl = ttk.Label(frame, text="Sorts exclus:") sortsExclusLbl.pack(side="left") sortsExclusEntry = ttk.Entry(frame, width=30) sortsExclusEntry.delete(0, 'end') sortsExclusEntry.insert(0, self.sortsExclus) sortsExclusEntry.pack(side="left") remplaceNomFrame = ttk.Frame(frame) remplaceNomLbl = ttk.Label( remplaceNomFrame, text="Remplace le nom de l'état par le sort:") remplaceNomLbl.pack(side="left") remplaceNomVar = tk.BooleanVar() remplaceNomVar.set(self.kwargs.get("kwargs:remplaceNom", True)) remplaceNomCheckbutton = ttk.Checkbutton(remplaceNomFrame, variable=remplaceNomVar) remplaceNomCheckbutton.pack(side="left") remplaceNomFrame.pack(side="bottom") ret["sortsExclus"] = sortsExclusEntry ret["kwargs:cumulMax"] = cumulMaxSpinbox ret["kwargs:remplaceNom"] = remplaceNomVar ret["etat"] = self.etatWidgets etatOptionFrame.pack(side="bottom") frame.pack() return ret
def getSorts(lvl): """@summary: charge les sorts de début de combat @return: List <Sort> """ # pylint: disable=unused-argument sorts = [] sorts.append( Sort.Sort("Bambou Malchanceux", 0, 0, 0, 1, [ EffetEtat(EtatBoostCaracFixe("Bambou Malchanceux", 0, 1, "tacle", -23)) ], [], 0, 1, 1, 0, 0, "ligne", True, description="Retire du tacle à la cible pour 1 tour.") ) sorts.append( Sort.Sort("Coup de Bambou", 0, 2, 0, 1, [ EffetEtat(EtatBoostCaracFixe("Coup de Bambou", 0, 2, "pui", -70)), EffetEtat(Etat("Affaibli", 0, 2)), ], [], 0, 1, 1, 3, 0, "ligne", True, description="Retire de la puissance à la cible et lui applique l'état affaibli.") ) return sorts
def etatTypeModified(self, _event=None): for widget in self.etatCaracsFrame.winfo_children(): widget.destroy() if self.etat.__class__.__name__ == self.typeEtatCombobox.get(): self.etatWidgets.clear() new_etatWidgets = self.etat.buildUI(self.etatCaracsFrame, self.callbackModifiedRetValue) for etatWidget_key, etatWidget_val in new_etatWidgets.items(): self.etatWidgets[etatWidget_key] = etatWidget_val else: typeEtat = self.typeEtatCombobox.get() etat = Etat.getObjectFromName(typeEtat) etat.nom = self.etat.nom etat.debuteDans = self.etat.debuteDans etat.duree = self.etat.duree self.etat = etat self.etatWidgets.clear() new_etatWidgets = self.etat.buildUI(self.etatCaracsFrame, self.callbackModifiedRetValue) for etatWidget_key, etatWidget_val in new_etatWidgets.items(): self.etatWidgets[etatWidget_key] = etatWidget_val
def appliquerEffet(self, niveau, joueurCaseEffet, joueurLanceur, **kwargs): """@summary: Appelé lors de l'application de l'effet. @niveau: la grille de simulation de combat @type: Niveau @joueurCaseEffet: le joueur se tenant sur la case dans la zone d'effet @type: Personnage @joueurLanceur: le joueur lançant l'effet @type: Personnage @kwargs: options supplémentaires @type: **kwargs""" # Etat temporaire pour marqué la cible comme déjà touché par la propagation joueurCaseEffet.appliquerEtat(Etat("temporaire", 0, 1), joueurLanceur, -1, niveau) # Récupérations des joueurs respectant les critères du sort les plus proches, # etat requis = pas temporaire joueursAppliquables = niveau.getJoueurslesPlusProches( joueurCaseEffet.posX, joueurCaseEffet.posY, joueurLanceur, TypeZoneCercle(self.tailleZoneRebond), ["!temporaire"], self.ciblesPossibles) # La liste n'est vraie que si elle n'est pas vide if joueursAppliquables: sort_backref = self.getSort() sort_ref = deepcopy(sort_backref) sort_ref.coutPA = 0 sort_ref.nbTourEntreDeux = 0 sort_ref.nbLancerParTour = 999 sort_ref.nbLancerParTourParJoueur = 9 sort_ref.porte = self.tailleZoneRebond previsus_recues = sort_ref.lance(joueurCaseEffet.posX, joueurCaseEffet.posY, niveau, joueursAppliquables[0].posX, joueursAppliquables[0].posY, joueurLanceur) if previsus_recues is not None: for previsu_recue in previsus_recues: perso = niveau.getJoueurAvecUid(previsu_recue.uid) perso.msgsPrevisu = previsu_recue.msgsPrevisu
def craftFromInfos(cls, infos): return EffetEtat(Etat.factory(infos["etat"]), **infos["kwargs"])
def getSortsDebutCombat(lvl): """@summary: charge les sorts de début combat @return: List <Sort> """ # pylint: disable=unused-argument sortsDebutCombat = [] activationFinDesTemps = Sort.Sort( "Fin des temps", 0, 0, 0, 0, [ EffetDegats(0, 0, "air", zone=Zones.TypeZoneCercle(3), cibles_possibles="Ennemis"), EffetTue(cibles_possibles="Lanceur") ], [], 0, 99, 99, 0, 0, "cercle", False, chaine=False) sortsDebutCombat.append( Sort.Sort( "Synchronisation", 0, 0, 0, 0, [ EffetEtatSelf( EtatEffetSiTFGenere("Synchronisation", 0, -1, [ EffetEtatSelfTF(EtatBoostBaseDegLvlBased( "toReplace", 0, -1, "Fin des temps", 190), "Rembobinage", cumulMax=1, etat_requis="!DejaBoost"), EffetEtatSelfTF(Etat("DejaBoost", 0, 1), "Rembobinage", remplaceNom=False, cumulMax=1) ], "Téléfrageur", "porteur", "porteur")), EffetEtatSelf( EtatEffetSiTFGenere( "Attente de la fin des temps", 0, -1, EffetEntiteLanceSort( "Synchro", activationFinDesTemps), "Téléfrageur", "porteur", "porteur", True, "Rembobinage")) ], [], 0, 99, 99, 0, 0, "cercle", False, description="""""", chaine=False)) return sortsDebutCombat
def craftFromInfos(cls, infos): return cls(Etat.factory(infos["etat"]), int(infos["pourcentage_seuil_min"]), int(infos["pourcentage_seuil_max"]), **infos["kwargs"])
def craftFromInfos(cls, infos): return EffetEtatSelfTF(Etat.factory(infos["etat"]), infos["sortsExclus"], **infos["kwargs"])