Int�gration de scripts lua
Bonjour,
Je travaille actuellement sur un petit projet pour tester diff�rentes mani�res de rendre un programme plus modulaire : plugins, scripts, �
Le programme en lui-m�me est plut�t simple : il s'agit d'un jeu de cartes (dans le style des cartes Magic). Chaque carte peut �tre soit une cr�ature, soit un sort. Si c'est un sort, elle dispose d'une seule action (le sort en question). Si c'est une cr�ature, elle dispose de plusieurs (mais le nombre est d�fini). De plus, chaque carte dispose de certaines propri�t�s communes telles que le nom, description, niveau, �
Je cherche donc � impl�menter chaque carte sous forme de plugins, scripts en diff�rents langages, � afin d'avoir quelque chose le plus modulaire possible. Voil� ma classe Carte, toute simple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| class Carte {
public:
enum Type {
Creature,
Sort,
Indefini,
};
Carte();
virtual ~Carte();
virtual void debutTour();
virtual void invocation();
virtual void mort();
virtual int niveau() const;
virtual int pv() const;
virtual int pvMax() const;
virtual std::string nom() const;
private:
int m_niveau;
int m_pv;
int m_pvMax;
Type m_type;
std::string m_nom;
Joueur* m_prop;
Joueur* m_adversaire;
}; |
Chaque m�thode est d�finie vide dans le cpp, sauf les accesseurs, toutes les cartes n'ayant pas besoin de r�impl�menter chacune des actions. Ces m�thodes sont appel�es automatiquement par le reste du programme.
J'ai commenc� deux �chargeurs� de cartes : un sous la forme de plugins (en C++), qui avance bien et ne me pose pas de probl�me particulier. Le second consiste � charger un script lua d�finissant une carte. Dans un premier temps, je cherche � simplement d�finir les propri�t�s �basiques�, et non les actions. J'�tais parti sur l'exemple pr�sent� ici. J'arrive � faire dans un script lua une classe qui d�rive de Carte, et y appeler des m�thodes� Mais c'est l� que je me rends compte d'un gros soucis sur mon raisonnement : je n'ai aucun moyen de r�cup�rer cette carte dans mon code C++ (du moins, je n'en ai pas trouv�).
Et l�, je s�che� Je ne vois pas comment d�finir une classe en lua, qui contienne les m�mes propri�t�s qu'une classe C++, et la r�cup�rer en C++.
Si quelqu'un � la moindre piste, je suis preneur !
Merci.