コード例 #1
0
 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
コード例 #2
0
 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)
コード例 #3
0
 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)
コード例 #4
0
 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
コード例 #5
0
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
コード例 #6
0
 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
コード例 #7
0
    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
コード例 #8
0
 def craftFromInfos(cls, infos):
     return EffetEtat(Etat.factory(infos["etat"]), **infos["kwargs"])
コード例 #9
0
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
コード例 #10
0
 def craftFromInfos(cls, infos):
     return cls(Etat.factory(infos["etat"]),
                int(infos["pourcentage_seuil_min"]),
                int(infos["pourcentage_seuil_max"]), **infos["kwargs"])
コード例 #11
0
 def craftFromInfos(cls, infos):
     return EffetEtatSelfTF(Etat.factory(infos["etat"]),
                            infos["sortsExclus"], **infos["kwargs"])