Bonjour à tous. C'est mon premier post donc je vais essayer de faire au mieux : je programme sur irrlicht depuis peu de temps et j'ai d'abord fait du C. Tout cela pour dire que j'ai essayé d'inclure une page en plus dans mon projet et il crée deux fenetres. Voiçi mes codes :
main.cpp :
#include <irrlicht.h>
#include "menu.h"
using namespace irr;
int main(void)
{
IrrlichtDevice* device = createDevice(video::EDT_OPENGL,core::dimension2d<u32>(1024,725), 32);
video::IVideoDriver* driver = device->getVideoDriver ();
scene::ISceneManager *sceneManager = device->getSceneManager ();
gui::IGUIEnvironment *gui = sceneManager->getGUIEnvironment();
int Jactif = 0, Oactif = 0, Qactif = 0;
// CHARGEMENT DE L'IMAGE DE FOND
video::ITexture *menuF = driver->getTexture ("menu/accueil/fond.png"); // chargement de la texture
core::position2d<s32> origine; // creation position origine
origine.X = 0;
origine.Y = 0;
core::position2d<s32> fin; // creation position fin
fin.X = 1024;
fin.Y = 725;
core::rect<s32> fenetre; // creation rectangle
fenetre.UpperLeftCorner = origine; // contenant l'image
fenetre.LowerRightCorner = fin;
// CHARGEMENT DES DIFFERENTS BOUTONS
video::ITexture *jouer = driver->getTexture ("menu/accueil/jouer.png");
video::ITexture *jouerPRESS = driver->getTexture ("menu/accueil/jouerPRESS.png");
video::ITexture *options = driver->getTexture ("menu/accueil/options.png");
video::ITexture *optionsPRESS = driver->getTexture ("menu/accueil/optionsPRESS.png");
video::ITexture *quitter = driver->getTexture ("menu/accueil/quitter.png");
video::ITexture *quitterPRESS = driver->getTexture ("menu/accueil/quitterPRESS.png");
gui::IGUIButton *jouerB = gui->addButton(core::rect<s32>(176,163,299,529),0, -1);
jouerB->setImage(jouer); jouerB->setPressedImage(jouerPRESS);
gui::IGUIButton *optionsB = gui->addButton(core::rect<s32>(574,409,695,725),0, -1);
optionsB->setImage(options); optionsB->setPressedImage(optionsPRESS);
gui::IGUIButton *quitterB = gui->addButton(core::rect<s32>(887,654,1024,725),0, -1);
quitterB->setImage(quitter); quitterB->setPressedImage(quitterPRESS);
while(device->run ()) // la boucle de rendu
{
driver->beginScene(true, true,video::SColor (0,120,120,120));
driver->draw2DImage(menuF,origine,fenetre,0,video::SColor (255,255,255,255),true);
if(jouerB->isPressed()){Jactif=1;} // Permet de montrer l'image jouerPRESS
if(!jouerB->isPressed() && Jactif==1){return 0;}
if(optionsB->isPressed()){Oactif=1;} // Permet de montrer l'image optionsPRESS
if(!optionsB->isPressed() && Oactif==1){optionsM();}
if(quitterB->isPressed()){Qactif=1;} // Permet de montrer l'image quitterPRESS
if(!quitterB->isPressed() && Qactif==1){return 0;}
gui->drawAll();
driver->endScene ();
}
device->drop ();
return 0;
}
menu.h :
#ifndef MENU_H
#define MENU_H
void optionsM();
#endif
options.cpp :
#include <irrlicht.h>
#include "menu.h"
using namespace irr;
void optionsM()
{
IrrlichtDevice* device = createDevice(video::EDT_OPENGL,core::dimension2d<u32>(1024,725), 32);
video::IVideoDriver* driver = device->getVideoDriver ();
scene::ISceneManager *sceneManager = device->getSceneManager ();
gui::IGUIEnvironment *gui = sceneManager->getGUIEnvironment();
// CHARGEMENT DE L'IMAGE DE FOND
video::ITexture *menuF = driver->getTexture ("menu/options/menu.png"); // chargement de la texture
core::position2d<s32> origine; // creation position origine
origine.X = 0;
origine.Y = 0;
core::position2d<s32> fin; // creation position fin
fin.X = 1024;
fin.Y = 725;
core::rect<s32> fenetre; // creation rectangle
fenetre.UpperLeftCorner = origine; // contenant l'image
fenetre.LowerRightCorner = fin;
while(device->run ()) // la boucle de rendu
{
driver->beginScene(true, true,video::SColor (0,120,120,120));
driver->draw2DImage(menuF,origine,fenetre,0,video::SColor (255,255,255,255),true);
gui->drawAll();
driver->endScene ();
}
device->drop ();
return 1;
}
Donc quand je lance le programme, il m'affiche une fenetre avec mes boutons et lorsque je clique sur le bouton optionsB, il crée une seconde fenetre. Est-il possible de faire afficher la page optionsM dans la première fenetre ?
Merci d'avance.
Hors ligne