Pages: 1
Voilà j'ai l'impression que je vais poster une question bête mais j'ai un problème :
game.h
#include <irr/irrlicht.h> #include "scenes.h" #ifndef DEF_ENUM_SCENES #define DEF_ENUM_SCENES enum scene { INTRO, MENU, GAME, OPTIONS, SCORES }; #endif #ifndef DEF_ENUM_BOUTON #define DEF_ENUM_BOUTON enum Bouton { JOUER, QUITTER }; #endif #ifndef DEF_GAME #define DEF_GAME class CGame { public : CGame(); CGame(long *largeurEcran, long *hauteurEcran); void scene(int *sceneActuelle, irr::IrrlichtDevice *device, irr::video::IVideoDriver* driver, irr::scene::ISceneManager* smgr, irr::gui::IGUIEnvironment* gui);//Charge la scene actuelle. void updateEtat(int *bouton, int etat); ~CGame(); protected : long m_hauteurEcran, m_largeurEcran; int m_etatJouer, m_etatQuitter; CScenes *m_scene;//Gère le chargement des scenes. irr::core::stringw m_sceneTitre; }; #endif
game.cpp
#include "game.h" #include <iostream> using namespace irr; using namespace video; using namespace scene; using namespace gui; CGame::CGame() { } CGame::CGame(long *largeurEcran, long *hauteurEcran) { m_scene = new CScenes(largeurEcran, hauteurEcran); m_etatJouer = 0; m_etatQuitter = 0; } CGame::~CGame() { delete m_scene; } void CGame::scene(int *sceneActuelle, IrrlichtDevice *device, IVideoDriver* driver, ISceneManager* smgr, IGUIEnvironment* gui) { if(*sceneActuelle == INTRO) { m_scene->loadMenu(device, driver, gui); *sceneActuelle = MENU;//A la fin de l'intro, on passe au menu. } else if(*sceneActuelle == MENU) { m_scene->updateMenu(device, driver, gui, &m_etatJouer, &m_etatQuitter); } else if(*sceneActuelle == GAME) { } else if(*sceneActuelle == OPTIONS) { } else if(*sceneActuelle == SCORES) { } } void CGame::updateEtat(int *bouton, int etat) { if(*bouton == JOUER) { m_etatJouer = etat; } else if(*bouton == QUITTER) { m_etatQuitter = etat; } }
j'appel updateEtat lorsque la souris passe sur mon bouton (gui image) quitter. A ce moment etat vaut 2 et m_etatQuitter vaut bien 2 aussi.
Mais lorsque j'appel la fonction updateMenu (à chaque boucle) m_etatQuitter vaut toujours 0 mais il n'est pourtant jamais réinitialisé...
EDIT : bonne années à tous quand même !
Dernière modification par endering (03-01-2009 17:39:23)
Hors ligne
je nutilise que rarement les enumeration donc ses peut etre faut mais il me semble que sa s'ecris plus comme sa
enum Bouton
{
JOUER = 1,
QUITTER
};
le compilateur se charge d'attribuer +1 a chaque déclaration donc QUITTER vaut 2, enfin je dit sa ....... jais du les utiliser 3 fois en 2ans
Hors ligne
J'ai quand même essayer, mais ce n'est pas ça et je crois que la valeur n'a pas vraiment d'importance du moment qu'elle est la même partout.
C'est quand même bizarre
Hors ligne
Mwarf, je crois que j'ai trouvé : dans ma classe eventReceiver, je recréer une classe game ...
EDIT : résolue en récupérant un pointeur de ma classe game dans le constructeur de eventReceiver
Dernière modification par endering (03-01-2009 20:53:03)
Hors ligne
Pages: 1