From 1bad863c5baf191aea34824af55d9e3051f0aee8 Mon Sep 17 00:00:00 2001 From: Aslan2142 Date: Thu, 29 Aug 2019 20:18:48 +0200 Subject: [PATCH] Added Scene Loading and Program Settings --- README.md | 18 ++++++++- asloengine/asloengine.hpp | 3 +- .../textures/texture_default_button.png | Bin 6725 -> 2095 bytes asloengine/builtin/grid_container.cpp | 8 ---- asloengine/builtin/scene_default.cpp | 11 ++++-- asloengine/core.cpp | 37 +++++++++++++++--- asloengine/headers/core.hpp | 17 +++++++- asloengine/headers/define.hpp | 14 ------- asloengine/headers/helpers.hpp | 2 +- asloengine/scenemanager.cpp | 2 +- define.hpp | 6 +++ program.cpp | 12 +++++- roadmap.txt | 4 +- 13 files changed, 91 insertions(+), 43 deletions(-) mode change 100755 => 100644 asloengine/builtin/assets/textures/texture_default_button.png delete mode 100644 asloengine/headers/define.hpp create mode 100644 define.hpp diff --git a/README.md b/README.md index f1f401a..6b30e69 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,18 @@ # AsloEngine -My WiP 2D Game Engine made using SFML +WiP 2D Game Engine made using C++ and SFML +Third-Party Libraries are not Included in the Repository -Version 0.9.0 +Version 0.9.1 + + +## How To Compile this Example + +### Linux: +Dependecies: libsfml-dev libfmt-dev g++ make +Compilation: Open folder in terminal and type make. If linking fails after editing files try to recompile everything with make all. You can clear temporary files with make clear + +### Windows: +Coming Soon... + +### Mac OS: +Not Available \ No newline at end of file diff --git a/asloengine/asloengine.hpp b/asloengine/asloengine.hpp index 6632a50..8e2ed21 100755 --- a/asloengine/asloengine.hpp +++ b/asloengine/asloengine.hpp @@ -1,10 +1,11 @@ #pragma once +#include "../define.hpp" + #include "builtin/builtin.hpp" #include "headers/clickable.hpp" #include "headers/core.hpp" -#include "headers/define.hpp" #include "headers/gameobject.hpp" #include "headers/helpers.hpp" #include "headers/keyboard.hpp" diff --git a/asloengine/builtin/assets/textures/texture_default_button.png b/asloengine/builtin/assets/textures/texture_default_button.png old mode 100755 new mode 100644 index 17efeb559fb0f002419049b45ea137231634c9f2..04c1072345d57cad017cb4e1cdc899a231eb9f8f GIT binary patch delta 2071 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, 125); - TextObject *to1 = new TextObject("Info Text", "Aslo Engine v0.9.0 by Aslan2142", button_font); + TextObject *to1 = new TextObject("Info Text", "Aslo Engine Test", button_font); //to1->set_position(630, 0); //to1->set_origin(1, 0); btn1->signal_on_clicked.connect_member(to1, &TextObject::set_text, sf::String("lulz")); @@ -61,8 +64,8 @@ namespace asloengine gui_layer.emplace_back(toif); gui_layer.emplace_back(sc1);*/ - GridContainer *container = new GridContainer("cont1", sf::Vector2u(2, 2), sf::Vector2f(200, 150)); - container->set_position(100, 200); + GridContainer *container = new GridContainer("cont1", sf::Vector2u(2, 2), sf::Vector2f(300, 150)); + container->set_position(30, 200); container->add_object(to1); container->add_object(if2); container->add_object(btn1); @@ -79,7 +82,7 @@ namespace asloengine void SceneDefault::on_update(float delta_time) { - move_camera(sf::Vector2f(1, 2)); + //move_camera(sf::Vector2f(1, 2)); } diff --git a/asloengine/core.cpp b/asloengine/core.cpp index bd18adb..c72e815 100755 --- a/asloengine/core.cpp +++ b/asloengine/core.cpp @@ -4,17 +4,16 @@ namespace asloengine { static sf::RenderWindow *main_window; + static Settings active_settings; - void init(Scene *starting_scene) + void init(Scene *starting_scene, Settings _settings) { LOG("START Init"); - main_window = new sf::RenderWindow(sf::VideoMode(RESOLUTION_X, RESOLUTION_Y, BIT_DEPTH), - PROGRAM_INFO, sf::Style::Fullscreen); - - main_window->setVerticalSyncEnabled(VSYNC_ENABLED); - main_window->setFramerateLimit(MAX_FRAMERATE); + main_window = new sf::RenderWindow(); + + apply_settings(_settings); SceneManager::load_scene(starting_scene); @@ -22,6 +21,32 @@ namespace asloengine } + Settings get_active_settings() + { + + return active_settings; + + } + + void apply_settings(Settings _settings) + { + + active_settings = _settings; + + if (active_settings.fullscreen_enabled) + { + main_window->create(sf::VideoMode(active_settings.resolution_x, active_settings.resolution_y, active_settings.bit_depth), + PROGRAM_INFO, sf::Style::Fullscreen); + } else { + main_window->create(sf::VideoMode(active_settings.resolution_x, active_settings.resolution_y, active_settings.bit_depth), + PROGRAM_INFO, sf::Style::Close); + } + + main_window->setVerticalSyncEnabled(active_settings.vsync_enabled); + main_window->setFramerateLimit(active_settings.max_framerate); + + } + void start_main_game_loop() { diff --git a/asloengine/headers/core.hpp b/asloengine/headers/core.hpp index adeeb35..6104bc8 100755 --- a/asloengine/headers/core.hpp +++ b/asloengine/headers/core.hpp @@ -1,14 +1,27 @@ #pragma once #include +#include "../../define.hpp" #include "scenemanager.hpp" #include "keyboard.hpp" #include "mouse.hpp" namespace asloengine { - - void init(Scene *starting_scene); + + struct Settings + { + uint resolution_x = 640; + uint resolution_y = 480; + uint bit_depth = 24; + uint max_framerate = 60; + bool vsync_enabled = true; + bool fullscreen_enabled = false; + }; + + void init(Scene *starting_scene, Settings _settings); + Settings get_active_settings(); + void apply_settings(Settings _settings); void start_main_game_loop(); } \ No newline at end of file diff --git a/asloengine/headers/define.hpp b/asloengine/headers/define.hpp deleted file mode 100644 index 7c1846b..0000000 --- a/asloengine/headers/define.hpp +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -#define PROGRAM_NAME "Space Strategy" -#define PROGRAM_VERSION "0.1.0" -#define PROGRAM_INFO (std::string)PROGRAM_NAME + " v" + PROGRAM_VERSION -#define PROGRAM_BUILD 0 -#define PROGRAM_CREATOR "Aslan2142" -#define COPYRIGHT "Copyright 2019" -#define RESOLUTION_X 1920 -#define RESOLUTION_Y 1080 -#define BIT_DEPTH 24 -#define MAX_FRAMERATE 60 -#define VSYNC_ENABLED true -#define DEBUG \ No newline at end of file diff --git a/asloengine/headers/helpers.hpp b/asloengine/headers/helpers.hpp index cc2ea90..90bd781 100755 --- a/asloengine/headers/helpers.hpp +++ b/asloengine/headers/helpers.hpp @@ -3,7 +3,7 @@ #include #include #include -#include "define.hpp" +#include "../../define.hpp" #ifdef DEBUG #define LOG(message) asloengine::log((std::string)"LOG: ", message) diff --git a/asloengine/scenemanager.cpp b/asloengine/scenemanager.cpp index a3e4a30..e010f15 100755 --- a/asloengine/scenemanager.cpp +++ b/asloengine/scenemanager.cpp @@ -38,7 +38,7 @@ namespace asloengine void SceneManager::unload_scene() { - LOG("UNLOAD"); + if (scene) { scene->destroy(); diff --git a/define.hpp b/define.hpp new file mode 100644 index 0000000..315da2f --- /dev/null +++ b/define.hpp @@ -0,0 +1,6 @@ +#define PROGRAM_NAME "AsloEngine Test" +#define PROGRAM_VERSION "0.9.1" +#define PROGRAM_INFO (std::string)PROGRAM_NAME + " v" + PROGRAM_VERSION +#define PROGRAM_BUILD 0 +#define PROGRAM_CREATOR "Unknown" +#define DEBUG // Comment this out to disable Engine Debug Mode \ No newline at end of file diff --git a/program.cpp b/program.cpp index 98c549b..d44cb54 100755 --- a/program.cpp +++ b/program.cpp @@ -3,7 +3,17 @@ int main() { - asloengine::init(new asloengine::SceneDefault()); + asloengine::Settings settings + { + 640, // Resolution X + 480, // Resolution Y + 24, // Bit Depth + 60, // Max Framerate + true, // Vsync Enabled + false // Fullscreen Enabled + }; + + asloengine::init(new asloengine::SceneDefault(), settings); asloengine::start_main_game_loop(); diff --git a/roadmap.txt b/roadmap.txt index a9fafe9..9a7077c 100644 --- a/roadmap.txt +++ b/roadmap.txt @@ -1,4 +1,2 @@ -Loading Scenes -Window Parameters Color -Animations +Animations \ No newline at end of file