]> git.jsancho.org Git - dungeon-master.git/blob - src/main.cpp
Build with irrlicht
[dungeon-master.git] / src / main.cpp
1 #include <irrlicht/irrlicht.h>
2 #include <libguile.h>
3
4 using namespace irr;
5 using namespace core;
6 using namespace video;
7
8 int main()
9 {
10   scm_init_guile();
11   scm_primitive_load(scm_from_locale_string("plugins/default/main.scm"));
12
13   IrrlichtDevice* device =
14     createDevice(EDT_OPENGL,
15                  dimension2d<u32>(640, 480), 16,
16                  false, false, false, 0);
17   if (!device)
18     return 1;
19
20   IVideoDriver* driver = device->getVideoDriver();
21
22   f32 bg_r = 255.0f;
23   f32 bg_g = 255.0f;
24   f32 bg_b = 255.0f;
25
26   bool fadeOut = -1;
27
28   u32 then = device->getTimer()->getTime();
29
30   const f32 fadeRate = 0.1f;
31
32   while (device->run())
33     {
34       const u32 now = device->getTimer()->getTime();
35       const f32 frameDeltaTime = (f32)(now - then);
36       then  = now;
37
38       if (bg_r <= 0.0f) fadeOut = false;
39       else if (bg_r >= 255.0f) fadeOut = true;
40
41       if (fadeOut)
42         {
43           bg_r -= fadeRate * frameDeltaTime;
44           bg_g -= fadeRate * frameDeltaTime;
45           bg_b -= fadeRate * frameDeltaTime;
46         }
47       else
48         {
49           bg_r += fadeRate * frameDeltaTime;
50           bg_g += fadeRate * frameDeltaTime;
51           bg_b += fadeRate * frameDeltaTime;
52         }
53           
54       if (bg_r <= 0.0f)
55         bg_r = bg_b = bg_g = 0.0f;
56       else if (bg_r >= 255.0f)
57         bg_r = bg_b = bg_g = 255.0f;
58       
59       driver->beginScene(true, true, SColor(255, (u32)bg_r,
60                                             (u32)bg_g, (u32)bg_b));
61       driver->endScene();
62     }
63
64   device->drop();
65
66   return 0;
67 }