Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //System
- #include "irrlicht.h"
- #include "irrklang.h"
- #include <iostream>
- #include <time.h>
- //
- #include "CEventReceiver.h"
- #include "CPlayerManager.h"
- #include "CPlayer.h"
- #include "CSound.h"
- #include "CCamera.h"
- #include "CWord.h"
- #include "GUI/GUI.h"
- #include "CLog.h"
- #ifdef _IRR_WINDOWS_
- #pragma comment(lib, "libIrrlicht.a")
- #pragma comment(lib, "libirrKlang.a")
- #pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")
- #endif
- int main()
- {
- CLog *main_log = new CLog("error.log");
- main_log->Write("Intialisation ok");
- //Creaton d'un device en fullscreen pour recuperer la resolution
- irr::IrrlichtDevice *nulldevice = irr::createDevice(irr::video::EDT_NULL);
- if(!nulldevice)
- {
- main_log->Write("Impossible de recuperer la resolution");
- return 1;
- }
- irr::core::dimension2d<irr::u32> deskres = nulldevice->getVideoModeList()->getDesktopResolution();
- nulldevice->drop();
- //Creation du device avec la resolution de l'ecran
- irr::IrrlichtDevice *Irr_Device = irr::createDevice(irr::video::EDT_OPENGL, deskres, 32, true, false, true);
- if(!Irr_Device)
- {
- main_log->Write("Impossible de creer le Device");
- return 1;
- }
- //Ini de la GUI
- CGUI *GUI = new CGUI(Irr_Device, deskres);
- //Ini de l'eventreceiver
- CEventReceiver *EventReceiver = new CEventReceiver(Irr_Device, GUI);
- //Set de l'eventreceiver
- Irr_Device->setEventReceiver(EventReceiver);
- //IA
- srand(time(NULL));
- irr::video::IVideoDriver* VideoDriver = Irr_Device->getVideoDriver();
- irr::scene::ISceneManager* SceneManager = Irr_Device->getSceneManager();
- irr::gui::IGUIEnvironment* GUIEnv = Irr_Device->getGUIEnvironment();
- //Chargement de la police
- irr::gui::IGUIFont* Font = GUIEnv->getFont("./media/fontcourier.bmp");
- //Corrige les probleme de transparence
- SceneManager->getParameters()->setAttribute(irr::scene::ALLOW_ZWRITE_ON_TRANSPARENT, true);
- //Def Option rendu
- irr::video::SMaterial m;
- m.Lighting = false;
- //m.ZBuffer = false;
- VideoDriver->setMaterial(m);
- irr::core::matrix4 mat;
- //VideoDriver->setTransform(irr::video::ETS_WORLD, mat);
- VideoDriver->setTransform(irr::video::ETS_WORLD, irr::core::IdentityMatrix);
- //Moteur Sond
- irrklang::ISoundEngine* SoundEngine = irrklang::createIrrKlangDevice();
- if(!SoundEngine)
- {
- main_log->Write("Impossible de creer le SoundDevice");
- return EXIT_FAILURE;
- }
- //CollisionManager
- irr::scene::ISceneCollisionManager* Collision_Manager = SceneManager->getSceneCollisionManager();
- //Curseur desactiver
- Irr_Device->getCursorControl()->setVisible(false);
- int lastFPS = -1;
- irr::u32 then = Irr_Device->getTimer()->getTime();
- const irr::f32 MOUV_SPEED = 5.f;
- CWord *Word;
- CPlayer *Player;
- //PlayerManager
- CPlayerManager *PlayerManager;
- while(Irr_Device->run())
- {
- if(Irr_Device->isWindowActive())
- {
- const irr::u32 now = Irr_Device->getTimer()->getTime();
- const irr::f32 frameDeltaTime = (irr::f32)(now - then) / 1000.f;
- then = now;
- if(GUI->InGame)
- {
- VideoDriver->beginScene(true, true, irr::video::SColor(255,0,0,0));
- }
- SceneManager->drawAll();
- ////////////////////////////////////////////
- //Introduction
- ////////////////////////////////////////////
- if(GUI->Intro)
- {
- GUI->GIntro(frameDeltaTime);
- }
- ////////////////////////////////////////////
- //Introduction End
- ////////////////////////////////////////////
- ////////////////////////////////////////////
- //Menu Begin
- ////////////////////////////////////////////
- if(GUI->Menu_Principal)
- {
- GUI->GMenu_Principal();
- }
- ////////////////////////////////////////////
- //Menu End
- ////////////////////////////////////////////
- if(GUI->InGame)
- {
- //Création de la GUI en InGame
- GUI->GInGame();
- //Affichage des box
- GUI->Graph_FPS->draw();
- GUI->Graph_Lat->draw();
- //Ajout des donnees
- GUI->Graph_FPS->addValue(VideoDriver->getFPS());
- GUI->Graph_Lat->addValue(VideoDriver->getPrimitiveCountDrawn());
- if(!Monde_Created)
- {
- //Creation du word
- Word = new CWord(Irr_Device);
- if(!Word)
- {
- main_log->Write("Impossible de charger le monde");
- return EXIT_FAILURE;
- }
- Monde_Created = true;
- main_log->Write("Monde ok");
- //Playermnager
- PlayerManager = new CPlayerManager(Irr_Device,SoundEngine,Word);
- //Creation du joueur local
- Player = new CPlayer(Irr_Device,SoundEngine,Word,GUI->Get_Name_STRW(),0,true);
- PlayerManager->Add_Player(Player);
- main_log->Write("Joueur ok");
- irr::scene::ICameraSceneNode *cam = SceneManager->addCameraSceneNodeFPS();
- cam->setPosition(irr::core::vector3df(0,10,0));
- irr::scene::ISceneNodeAnimator *colli_cam = SceneManager->createCollisionResponseAnimator(Word->Word_MetaSelector,cam,irr::core::vector3df(7,15,7), irr::core::vector3df(0,0,0), irr::core::vector3df(0,0,0));
- cam->addAnimator(colli_cam);
- colli_cam->drop();
- cam->setFarValue(40000.0f);
- cam->setNearValue(0.1f);
- }
- PlayerManager->Update();
- irr::core::line3d<irr::f32> rayon;
- rayon.start = Player->Get_Position();
- rayon.end = rayon.start + irr::core::vector3df(0,-100,0);
- VideoDriver->draw3DLine(rayon.start,rayon.end,irr::video::SColor(255,255,0,0));
- main_log->Write("Player P: %f,%f,%f",Player->Get_APosition().X,Player->Get_APosition().Y,Player->Get_APosition().Z);
- main_log->Write("Ray P: %f,%f,%f",rayon.start.X,rayon.start.Y,rayon.start.Z);
- }
- if(EventReceiver->IsKeyDown(irr::KEY_ESCAPE))
- {
- Irr_Device->closeDevice();
- }
- //Irr_Device->sleep(1);
- GUIEnv->drawAll();
- VideoDriver->endScene();
- }
- else
- {
- Irr_Device->yield();
- }
- }
- VideoDriver->removeAllTextures();
- SoundEngine->drop();
- Irr_Device->drop();
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement