Minor refactor

This commit is contained in:
MihailRis 2023-11-16 03:14:02 +03:00
parent 9857d6e95a
commit 2768371a94
4 changed files with 15 additions and 14 deletions

View File

@ -4,6 +4,7 @@
#include <iostream> #include <iostream>
#include <assert.h> #include <assert.h>
#include <glm/glm.hpp> #include <glm/glm.hpp>
#include <filesystem>
#define GLEW_STATIC #define GLEW_STATIC
#include "audio/Audio.h" #include "audio/Audio.h"
@ -33,7 +34,10 @@
#include "files/files.h" #include "files/files.h"
#include "files/engine_files.h" #include "files/engine_files.h"
using std::unique_ptr;
using std::shared_ptr; using std::shared_ptr;
using std::string;
using std::filesystem::path;
using glm::vec3; using glm::vec3;
using gui::GUI; using gui::GUI;
@ -58,7 +62,7 @@ Engine::Engine(const EngineSettings& settings_) {
gui = new GUI(); gui = new GUI();
std::cout << "-- initializing finished" << std::endl; std::cout << "-- initializing finished" << std::endl;
setScreen(new MenuScreen(this)); setScreen(shared_ptr<Screen>(new MenuScreen(this)));
} }
void Engine::updateTimers() { void Engine::updateTimers() {
@ -70,11 +74,10 @@ void Engine::updateTimers() {
void Engine::updateHotkeys() { void Engine::updateHotkeys() {
if (Events::jpressed(keycode::F2)) { if (Events::jpressed(keycode::F2)) {
ImageData* image = Window::takeScreenshot(); unique_ptr<ImageData> image(Window::takeScreenshot());
image->flipY(); image->flipY();
std::string filename = enginefs::get_screenshot_file("png"); path filename = enginefs::get_screenshot_file("png");
png::write_image(filename, image); png::write_image(filename, image.get());
delete image;
std::cout << "saved screenshot as " << filename << std::endl; std::cout << "saved screenshot as " << filename << std::endl;
} }
} }
@ -101,7 +104,7 @@ void Engine::mainloop() {
} }
Engine::~Engine() { Engine::~Engine() {
delete screen; screen = nullptr;
delete gui; delete gui;
Audio::finalize(); Audio::finalize();
@ -124,9 +127,6 @@ Assets* Engine::getAssets() {
return assets; return assets;
} }
void Engine::setScreen(Screen* screen) { void Engine::setScreen(shared_ptr<Screen> screen) {
if (this->screen != nullptr) {
delete this->screen;
}
this->screen = screen; this->screen = screen;
} }

View File

@ -22,7 +22,7 @@ public:
class Engine { class Engine {
Assets* assets; Assets* assets;
Screen* screen = nullptr; std::shared_ptr<Screen> screen = nullptr;
EngineSettings settings; EngineSettings settings;
uint64_t frame = 0; uint64_t frame = 0;
@ -41,7 +41,7 @@ public:
Assets* getAssets(); Assets* getAssets();
gui::GUI* getGUI(); gui::GUI* getGUI();
EngineSettings& getSettings(); EngineSettings& getSettings();
void setScreen(Screen* screen); void setScreen(std::shared_ptr<Screen> screen);
}; };
#endif // SRC_ENGINE_H_ #endif // SRC_ENGINE_H_

View File

@ -119,7 +119,7 @@ HudRenderer::HudRenderer(Engine* engine, Level* level) : level(level), assets(en
Button* button = new Button(L"Save and Quit to Menu", vec4(12.0f, 10.0f, 12.0f, 12.0f)); Button* button = new Button(L"Save and Quit to Menu", vec4(12.0f, 10.0f, 12.0f, 12.0f));
button->listenAction([this, engine](GUI*){ button->listenAction([this, engine](GUI*){
this->pauseMenu->visible(false); this->pauseMenu->visible(false);
engine->setScreen(new MenuScreen(engine)); engine->setScreen(shared_ptr<Screen>(new MenuScreen(engine)));
}); });
pauseMenu->add(shared_ptr<UINode>(button)); pauseMenu->add(shared_ptr<UINode>(button));
} }

View File

@ -46,7 +46,8 @@ MenuScreen::MenuScreen(Engine* engine_) : Screen(engine_) {
vec3 playerPosition = vec3(0, 64, 0); vec3 playerPosition = vec3(0, 64, 0);
Camera* camera = new Camera(playerPosition, radians(90.0f)); Camera* camera = new Camera(playerPosition, radians(90.0f));
Player* player = new Player(playerPosition, 4.0f, camera); Player* player = new Player(playerPosition, 4.0f, camera);
engine->setScreen(new LevelScreen(engine, world->loadLevel(player, settings))); auto screen = new LevelScreen(engine, world->loadLevel(player, settings));
engine->setScreen(shared_ptr<Screen>(screen));
}); });
panel->add(shared_ptr<UINode>(button)); panel->add(shared_ptr<UINode>(button));
} }