// // Created by trotFunky on 03/11/2019. // #include #include "DataHandling/Texture.h" #include "MovementManager.h" #include "TileTypes.h" #include "Maze.h" static Texture ground; static Texture wall; static Texture out; static Texture raptor; static Model3D raptor_model; static Maze* maze; static constexpr float horizontal_speed = 0.15; static int score = 0; void manage_inputs() { if (InputStatus::is_key_pressed(0x1B)) { glutDestroyWindow(glutGetWindow()); exit(EXIT_SUCCESS); } Vec3d translation{0,0,0}; if (InputStatus::is_special_key_pressed(GLUT_KEY_RIGHT)) { translation.z += horizontal_speed; } if (InputStatus::is_special_key_pressed(GLUT_KEY_LEFT)) { translation.z -= horizontal_speed; } if (InputStatus::is_special_key_pressed(GLUT_KEY_UP)) { translation.x += horizontal_speed; } if (InputStatus::is_special_key_pressed(GLUT_KEY_DOWN)) { translation.x -= horizontal_speed; } constrained_translation(translation,OGLE::camera,maze->map,maze->scaling_factor); Vec3i map_colour = current_map_colour(OGLE::camera.get_eyepos(),maze->map, maze->scaling_factor); if (map_colour == Tiles::end) { std::cout << "Success !" << std::endl; std::cout << "You managed to collect " << score << " out of " << maze->total_objectives << " raptors!" << std::endl; glutDestroyWindow(glutGetWindow()); exit(EXIT_SUCCESS); } else if(map_colour == Tiles::objective) { if (maze->remove_objective({static_cast(OGLE::camera.get_eyepos().x/maze->scaling_factor), static_cast(OGLE::camera.get_eyepos().z/maze->scaling_factor)})) { score += 1; } } Vec2i mouse_delta = InputStatus::get_mouse_delta(true); if (mouse_delta.x != 0 || mouse_delta.y != 0) { OGLE::camera.rotate({0, -mouse_delta.x / InputStatus::mouse_sensitivity.x, -mouse_delta.y / InputStatus::mouse_sensitivity.y}); } } void display() { manage_inputs(); maze->draw(); } int main(int argc, char** argv) { OGLE::setup(argc,argv,display,"The Labyrinth !"); ground.load_rgb_tga("resources/ground.tga"); wall.load_rgb_tga("resources/wall.tga"); out.load_rgb_tga("resources/Outside.tga"); raptor.load_rgb_tga("resources/raptor.tga"); raptor_model.load_ascii_off_file("resources/raptor.off"); raptor_model.assign_texture(raptor); raptor_model.set_scaling(0.0025,0.0025,0.0025); raptor_model.set_rotation(-90,1,0,0); maze = new Maze("resources/Map.tga", 2, ground, wall, out, raptor_model); OGLE::camera.set_position({static_cast(maze->map.width*maze->scaling_factor/2.0), 1, static_cast(maze->map.width*maze->scaling_factor/2.0)}); // Fill colour is sky blue. glClearColor(0.53,0.81,0.75,1); glutMainLoop(); return 0; }