void GameEngine::chargerGWD(char* dir)
{
FILE* fichier = fopen(dir, "r");
char *p;
if (fichier != NULL)
{
char chaine[200];
char chaineMapMesh[200];
char chaineMapTexture[200];
char chaineMusique[200];
char chaineCiel[200];
int nbrPosX, nbrPosY, nbrPosZ, nbrEchelle;
fgets(chaine, 200, fichier);
sscanf(chaine, "%s %s %s %s %d %d %d %d\
", &chaineMapMesh, &chaineMapTexture, &chaineMusique, &chaineCiel, &nbrPosX, &nbrPosY, &nbrPosZ, &nbrEchelle);
//scene
m_sceneEngine->chargerMap(chaineMapMesh, chaineMapTexture, irr::core::vector3df(nbrPosX,nbrPosY,nbrPosZ), nbrEchelle, this);
m_sceneEngine->changerCiel(chaineCiel, "ressources/images/meteo/soleil.png");
//son
m_mediaEngine->deleteAllSound();
m_mediaEngine->jouerSonBackground(chaineMusique);
while(fgets(chaine, 200, fichier) != NULL)
{
p = strchr(chaine, '\
');
if (p)
{
*p = 0;
}
if(strcmp(chaine, "lumm") == 0)
{
fgets(chaine, 200, fichier);
int nbrLummPosX, nbrLummPosY, nbrLummPosZ;
float nbrLummColor1, nbrLummColor2, nbrLummColor3, nbrLummColor4;
double nbrLummEchelle;
sscanf(chaine, "%d %d %d %f %f %f %f %f\
", &nbrLummPosX, &nbrLummPosY, &nbrLummPosZ, &nbrLummColor1, &nbrLummColor2, &nbrLummColor3, &nbrLummColor4, &nbrLummEchelle);
m_sceneEngine->ajouterLumiereMultidirectionel(irr::core::vector3df(nbrLummPosX,nbrLummPosY,nbrLummPosZ), irr::video::SColorf((irr::f32)nbrLummColor1, (irr::f32)nbrLummColor2, (irr::f32)nbrLummColor3, (irr::f32)nbrLummColor4), nbrLummEchelle);
}
else if(strcmp(chaine, "lumd") == 0)
{
fgets(chaine, 200, fichier);
int nbrLumdPosX, nbrLumdPosY, nbrLumdPosZ, nbrLumdRotX, nbrLumdRotY, nbrLumdRotZ;
float nbrLumdColor1, nbrLumdColor2, nbrLumdColor3, nbrLumdColor4;
double nbrLumdEchelle;
sscanf(chaine, "%d %d %d %d %d %d %f %f %f %f %f\
", &nbrLumdPosX, &nbrLumdPosY, &nbrLumdPosZ, &nbrLumdRotX, &nbrLumdRotY, &nbrLumdRotZ, &nbrLumdColor1, &nbrLumdColor2, &nbrLumdColor3, &nbrLumdColor4, &nbrLumdEchelle);
m_sceneEngine->ajouterLumiereDirectionel(irr::core::vector3df(nbrLumdPosX,nbrLumdPosY,nbrLumdPosZ), irr::core::vector3df(nbrLumdRotX,nbrLumdRotY,nbrLumdRotZ), irr::video::SColorf((irr::f32)nbrLumdColor1, (irr::f32)nbrLumdColor2, (irr::f32)nbrLumdColor3, (irr::f32)nbrLumdColor4), nbrLumdEchelle);
}
else if(strcmp(chaine, "obj") == 0)
{
fgets(chaine, 200, fichier);
char chaineObjModeleMesh[200];
char chaineObjModeleTexture[200];
int nbrObjPosX, nbrObjPosY, nbrObjPosZ, nbrObjRotX, nbrObjRotY, nbrObjRotZ, nbrObjCollision, nbrObjAnimStart, nbrObjAnimEnd;
float nbrObjEchelle;
sscanf(chaine, "%s %s %d %d %d %d %d %d %f %d %d %d\
", &chaineObjModeleMesh, &chaineObjModeleTexture, &nbrObjPosX, &nbrObjPosY, &nbrObjPosZ, &nbrObjRotX, &nbrObjRotY, &nbrObjRotZ, &nbrObjEchelle, &nbrObjCollision, &nbrObjAnimStart, &nbrObjAnimEnd);
m_sceneEngine->ajouterObjet(chaineObjModeleMesh, chaineObjModeleTexture, irr::core::vector3df(nbrObjPosX,nbrObjPosY,nbrObjPosZ), irr::core::vector3df(nbrObjRotX,nbrObjRotY,nbrObjRotZ), nbrObjEchelle, (map::Collision)nbrObjCollision, nbrObjAnimStart, nbrObjAnimEnd);
std::cout<<"obj\
obj\
obj\
obj\
obj\
obj\
obj\
obj\
obj\
obj\
obj\
"<<std::endl;
}
else if(strcmp(chaine, "event") == 0)
{
fgets(chaine, 200, fichier);
char chaineEventModeleMesh[200];
char chaineEventModeleTexture[200];
int nbrEventPosX, nbrEventPosY, nbrEventPosZ, nbrEventRotX, nbrEventRotY, nbrEventRotZ, nbrEventAction;
sscanf(chaine, "%s %s %d %d %d %d %d %d %d\
", &chaineEventModeleMesh, &chaineEventModeleTexture, &nbrEventPosX, &nbrEventPosY, &nbrEventPosZ, &nbrEventRotX, &nbrEventRotY, &nbrEventRotZ, &nbrEventAction);
m_sceneEngine->ajouterEvent(chaineEventModeleMesh,chaineEventModeleTexture,irr::core::vector3df(nbrEventPosX,nbrEventPosY,nbrEventPosZ),irr::core::vector3df(nbrEventRotX,nbrEventRotY,nbrEventRotZ), m_pointEventActionTable[nbrEventAction]);
std::cout<<"event\
event\
event\
event\
event\
event\
event\
event\
event\
event\
event\
"<<std::endl;
}
else if(strcmp(chaine, "liquide") == 0)
{
fgets(chaine, 200, fichier);
int nbrLqdPosX, nbrLqdPosY, nbrLqdPosZ, nbrLqdRotX, nbrLqdRotY, nbrLqdRotZ, nbrLqdWaterHeight, nbrLqdColorBlend;
float nbrLumdColor1, nbrLumdColor2, nbrLumdColor3, nbrLumdColor4, nbrLqdEchelle;
sscanf(chaine, "%d %d %d %d %d %d %f %d %f %f %f %f %d\
", &nbrLqdPosX, &nbrLqdPosY, &nbrLqdPosZ, &nbrLqdRotX, &nbrLqdRotY, &nbrLqdRotZ, &nbrLqdEchelle, &nbrLqdWaterHeight, &nbrLumdColor1, &nbrLumdColor2, &nbrLumdColor3, &nbrLumdColor4, &nbrLqdColorBlend);
m_sceneEngine->ajouterLiquide(irr::core::vector3df(nbrLqdPosX, nbrLqdPosY, nbrLqdPosZ), irr::core::vector3df(nbrLqdRotX, nbrLqdRotY, nbrLqdRotZ), nbrLqdEchelle, nbrLqdWaterHeight, irr::video::SColorf(nbrLumdColor1, nbrLumdColor2, nbrLumdColor3, nbrLumdColor4), nbrLqdColorBlend);
std::cout<<"liquide\
liquide\
liquide\
liquide\
liquide\
liquide\
liquide\
liquide\
"<<std::endl;
}
}
fclose(fichier);
//event
m_receiver->maj();
m_device->setEventReceiver(m_receiver);
std::cout<<"le .gwd a été corectement chargé"<<std::endl;
}
else
{
std::cout<<"le .gwd n'a pas pu être ouvert"<<std::endl;
}
}