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

View File

@ -22,7 +22,7 @@ public:
class Engine {
Assets* assets;
Screen* screen = nullptr;
std::shared_ptr<Screen> screen = nullptr;
EngineSettings settings;
uint64_t frame = 0;
@ -41,7 +41,7 @@ public:
Assets* getAssets();
gui::GUI* getGUI();
EngineSettings& getSettings();
void setScreen(Screen* screen);
void setScreen(std::shared_ptr<Screen> screen);
};
#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->listenAction([this, engine](GUI*){
this->pauseMenu->visible(false);
engine->setScreen(new MenuScreen(engine));
engine->setScreen(shared_ptr<Screen>(new MenuScreen(engine)));
});
pauseMenu->add(shared_ptr<UINode>(button));
}

View File

@ -46,7 +46,8 @@ MenuScreen::MenuScreen(Engine* engine_) : Screen(engine_) {
vec3 playerPosition = vec3(0, 64, 0);
Camera* camera = new Camera(playerPosition, radians(90.0f));
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));
}