]> git.lizzy.rs Git - dragonblocks3d.git/blob - src/client.cpp
Set antialiasing to 8
[dragonblocks3d.git] / src / client.cpp
1 #include <iostream>
2 #include <stdexcept>
3 #include "async_mgr.hpp"
4 #include "client.hpp" 
5 #include "game.hpp"
6 #include "gl.hpp"
7 #include "input_handler.hpp"
8 #include "local_player.hpp" 
9 #include "map.hpp" 
10 #include "mapgen.hpp" 
11 #include "render_engine.hpp" 
12 #include "shader_program.hpp" 
13 #include "texture.hpp" 
14 #include "window.hpp" 
15
16 using namespace std;
17 using namespace glm;
18 using namespace dragonblocks;
19
20 void Client::run()
21 {
22         async_mgr->start();
23         while (render_engine->running()) {
24                 double dtime = glfwGetTime() - last_time;
25                 last_time = glfwGetTime();
26                 
27                 player->step(dtime);
28                 
29                 render_engine->render(dtime);
30                 
31                 input_handler->processInput(dtime);
32                 
33                 // process keys
34                 if (input_handler->wasKeyDown(GLFW_KEY_F11)) {
35                         render_engine->window->toggleFullscreen();
36                 }
37         }
38 }
39
40 Client::Client()
41 {
42         cout << "Initalizing Client..." << endl;
43         
44         Texture::mipmap = true;
45         Texture::bilinear_filter = false;
46         Texture::initArgs();
47         
48         async_mgr = new AsyncMgr;
49         
50         input_handler = new InputHandler();
51         input_handler->mouse_sensitivity = 20;
52         input_handler->listenFor(GLFW_KEY_F11); 
53         
54         render_engine = new RenderEngine;
55         render_engine->render_distance = 1000;
56         render_engine->fov = 86.1;
57         render_engine->sky = vec3(0.52941176470588, 0.8078431372549, 0.92156862745098);         // HTML skyblue
58         render_engine->window->setSize(1250, 750);
59         render_engine->window->setPos(0, 0);
60         render_engine->window->setTitle("Dragonblocks");
61         
62         input_handler->setWindow(render_engine->window);
63         
64         shader_program = new ShaderProgram("shaders");
65         
66         mapgen = new Mapgen;
67         
68         map = new Map(mapgen, async_mgr, render_engine->scene, shader_program);
69         
70         Texture player_texture;
71         player_texture.load("textures/stone.png");
72         
73         player = new LocalPlayer(map, render_engine->scene, player_texture, shader_program, render_engine->camera, input_handler);
74         player->pitch_move = false;
75         player->speed = 10;
76         player->setSize(vec3(0.75, 1.5, 0.75));
77         
78         game = new Game(mapgen);
79
80         last_time = glfwGetTime();
81
82         cout << "Initialisation done." << endl;
83 }
84
85 extern "C" void _dragonblocks_start_client()
86 {
87         Client().run();
88 }