/* ** EPITECH PROJECT, 2021 ** Bomberman ** File description: ** main */ #include #include "Runner/Runner.hpp" // Dependencies of the demo #include "Camera/Camera3D.hpp" #include "Controllers/Keyboard.hpp" #include "Drawables/2D/Text.hpp" #include "Drawables/Image.hpp" #include "Drawables/3D/Grid.hpp" #include "Drawables/Texture.hpp" #include "Drawables/3D/Circle.hpp" #include "Model/Model.hpp" #include "Model/ModelAnimations.hpp" #include "System/Renderer/Renderer3DSystem.hpp" #include "Component/Drawable/Drawable3DComponent.hpp" #include "System/Renderer/RenderScreenSystem.hpp" #include "Vector/Vector3.hpp" #include "Window.hpp" #include "TraceLog.hpp" #include "Wal.hpp" const std::vectortextures = { "black", "blue", "pink", "red", "white", "yellow" }; std::string get_full_path(const std::string &color) { std::string path = "assets/player/"; path += color; path += ".png"; return path; } int demo() { WAL::Wal wal; const int screenWidth = 800; const int screenHeight = 450; RAY::TraceLog::setLevel(LOG_WARNING); RAY::Window &window = RAY::Window::getInstance(screenWidth, screenHeight, "Bidibidibop", FLAG_WINDOW_RESIZABLE); RAY::Image icon("assets/icon.png"); window.setIcon(icon); RAY::Camera::Camera3D camera(RAY::Vector3(10.0f, 10.0f, 10.0f), RAY::Vector3(0.0f, 0.0f, 0.0f), RAY::Vector3(0.0f, 1.0f, 0.0f), 45.0f, CAMERA_PERSPECTIVE ); WAL::Entity entityPlayer("roger"); RAY::Drawables::Drawables3D::Circle circle({30, 30, 30}, 50, 0XFFFFFFF, {0, 0, 0}, 0); BBM::Drawable3DComponent circleComponent(entityPlayer, circle); BBM::PositionComponent posComponent(entityPlayer, {20, 20, 20}); BBM::Renderer3DSystem circleSystem(window); BBM::RenderScreenSystem renderSystem(window, camera); wal.addSystem(circleSystem); wal.addSystem(renderSystem); entityPlayer.addComponent(circleComponent); entityPlayer.addComponent(posComponent); camera.setMode(CAMERA_FREE); // Set free camera mode float y_rotation = 0; window.setFPS(60); wal.run([](WAL::Wal &wal, int) {}); window.close(); /* * const int screenWidth = 800; const int screenHeight = 450; auto iterator = textures.begin(); const std::string modelPath = "assets/player/player.obj"; const std::string texturePath = "assets/player/blue.png"; //const std::string animationPath = "assets/guy.iqm"; RAY::TraceLog::setLevel(LOG_WARNING); RAY::Window &window = RAY::Window::getInstance(screenWidth, screenHeight, "Bidibidibop", FLAG_WINDOW_RESIZABLE); RAY::Image icon("assets/icon.png"); window.setIcon(icon); RAY::Model model(modelPath); RAY::Camera::Camera3D camera(RAY::Vector3(10.0f, 10.0f, 10.0f), RAY::Vector3(0.0f, 0.0f, 0.0f), RAY::Vector3(0.0f, 1.0f, 0.0f), 45.0f, CAMERA_PERSPECTIVE ); WAL::Entity entityPlayer("roger"); RAY::Drawables::Drawables3D::Circle circle({300, 300, 300}, 50, 0XFFFFFFF, {0, 0, 0}, 0); BBM::Drawable3DComponent circleComponent(entityPlayer, circle); BBM::Renderer3DSystem circleSystem(window); wal.addSystem(circleSystem); entityPlayer.addComponent(circleComponent); RAY::Texture texture(get_full_path(*iterator)); //RAY::ModelAnimations animations(modelPath); RAY::Drawables::Drawables3D::Grid grid(10, 1.0f); RAY::Drawables::Drawables2D::Text instructionText("PRESS SPACE to PLAY MODEL ANIMATION", 10, {10, 20} , MAROON); model.setTextureToMaterial(MAP_DIFFUSE, texture); RAY::Vector3 position(0.0f, 0.0f, 0.0f); // Set model position camera.setMode(CAMERA_FREE); // Set free camera mode float y_rotation = 0; window.setFPS(60); while (!window.shouldClose()) { camera.update(); if (RAY::Controller::Keyboard::isReleased(KEY_SPACE)) { ++iterator; if (iterator == textures.end()) iterator = textures.begin(); texture.unload(); texture.load(get_full_path(*iterator)); model.setTextureToMaterial(MAP_DIFFUSE, texture); //animations[0].incrementFrameCounter(); //model.setAnimation(animations[0]); } window.setDrawingState(RAY::Window::DRAWING); window.clear(); window.useCamera(camera); window.draw(model, position, RAY::Vector3(1.0f, 20, 0.0f), -180.0f, RAY::Vector3( 5.0f, 5.0f, 5.0f )); window.draw(grid); window.unuseCamera(); window.draw(instructionText); window.setDrawingState(RAY::Window::IDLE); } window.close(); */ return 0; } void usage(const std::string &bin) { std::cout << "Bomberman." << std::endl << "\tUsage: " << bin << " [options]" << std::endl << "Options:" << std::endl << "\t-h:\tPrint this help message" << std::endl; } int main(int argc, char **argv) { if (argc == 2 && std::string(argv[1]) == "-h") { usage(argv[0]); return 1; } return demo(); return BBM::run(); }