1 module main;
2 
3 import std.string;
4 
5 import derelict.sdl.sdl;
6 import derelict.opengl.gl;
7 import derelict.opengl.glu;
8 import derelict.freetype.ft;
9 
10 import dlib.math.vector;
11 import dlib.image.color;
12 
13 import dgl.core.application;
14 import dgl.core.layer;
15 import dgl.ui.ftfont;
16 import dgl.ui.textline;
17 import dgl.templates.freeview;
18 
19 import gamelayer;
20 
21 class GameApp: Application
22 {
23     alias eventManager this;
24     FreeTypeFont font;
25     TextLine fpsText;
26 
27     FreeviewLayer layer3d;
28     Layer layer2d;
29 
30     this()
31     {
32         super(640, 480, "Third Person Game Demo");
33         clearColor = Color4f(0.5f, 0.5f, 0.5f);
34 
35         layer3d = new FreeviewLayer(videoWidth, videoHeight, 1);
36         layer3d.alignToWindow = true;
37         addLayer(layer3d);
38         //eventManager.setGlobal("camera", layer3d.camera);
39 
40         GameLayer gameLayer = new GameLayer(videoWidth, videoHeight, 0, eventManager);
41         addLayer(gameLayer);
42 
43         layer2d = addLayer2D(-1);
44         layer2d.alignToWindow = true;
45 
46         font = new FreeTypeFont("data/fonts/droid/DroidSans.ttf", 27);
47 
48         fpsText = new TextLine(font, format("FPS: %s", fps), Vector2f(10, 10));
49         fpsText.alignment = Alignment.Left;
50         fpsText.color = Color4f(1, 1, 1);
51         layer2d.addDrawable(fpsText);
52     }
53 
54     override void onQuit()
55     {
56         super.onQuit();
57     }
58     
59     override void onKeyDown()
60     {
61         super.onKeyDown();
62     }
63     
64     override void onMouseButtonDown()
65     {
66         super.onMouseButtonDown();
67     }
68     
69     override void onUpdate()
70     {
71         super.onUpdate();
72         fpsText.setText(format("FPS: %s", fps));
73     }
74 }
75 
76 void loadLibraries()
77 {
78     version(Windows)
79     {
80         enum sharedLibSDL = "SDL.dll";
81         enum sharedLibFT = "freetype.dll";
82     }
83     version(linux)
84     {
85         enum sharedLibSDL = "./libsdl.so";
86         enum sharedLibFT = "./libfreetype.so";
87     }
88 
89     DerelictGL.load();
90     DerelictGLU.load();
91     DerelictSDL.load(sharedLibSDL);
92     DerelictFT.load(sharedLibFT);
93 }
94 
95 void main()
96 {
97     loadLibraries();
98     auto app = new GameApp();
99     app.run();
100 }