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 }