10-05-2010, 12:22 PM
(10-05-2010, 08:58 AM)NicoMSEvent a écrit : l'autre problème avec les actions spéciale sous forme de fonction nommée est qu'il faut connaitre le nom de la fonction pour l'appeler (a moins que tu aies un truc pour ça, alors partage le si tu veux bien, parce que j'ai des difficultés a concevoir comment tu y arriverais)
Pour le moment, on a dans la classe Unité un tableau qui contient toutes les références des capacités spéciales disponibles pour l'unité en question. Ce tableau contient plusieurs colonnes : libellé de l'action, instance de la classe, type de cible (unité, terrain, etc)
Niveau interface, on passe par une couche JS pour stocker les actions possibles. On sait alors par exemple que l'unité d'archers montés peut 'Charger' ou effectuer un 'Tir de suppression'.
Pour la résolution de l'action, il suffit d'appeler (je schématise à fond en laissant de coté la sécurité, les pre-checks, etc))
$Unité->$_POST['action']($cible);
La méthode __call gère alors l'appel vers la classe concernée en instanciant l'objet si ce n'est déjà fait.
On peut ainsi construire le nom de la méthode à appeler.
Pour lancer l'action ce sera
charge() pour charger, hide() pour se camoufler
Pour la liste des cibles disponibles
charge_targets(), hide_targets()
Ça semble tenir la route pour le moment.
Quand on te dit qu'un projet est terminé à 90%, prépare toi pour les 90% suivant
Ninety-Ninety Rule
"Une guerre de religions, c'est quand deux peuples s'entretuent pour savoir qui a le meilleur ami imaginaire"
Vu sur IRC
Ninety-Ninety Rule
"Une guerre de religions, c'est quand deux peuples s'entretuent pour savoir qui a le meilleur ami imaginaire"
Vu sur IRC