This commit is contained in:
MihailRis
2024-12-18 04:13:33 +03:00
parent 5e55e20ec4
commit d745a34657
33 changed files with 209 additions and 205 deletions
+15 -15
View File
@@ -34,19 +34,19 @@
static debug::Logger logger("level-screen");
LevelScreen::LevelScreen(Engine* engine, std::unique_ptr<Level> levelPtr)
LevelScreen::LevelScreen(Engine& engine, std::unique_ptr<Level> levelPtr)
: Screen(engine), postProcessing(std::make_unique<PostProcessing>())
{
Level* level = levelPtr.get();
auto& settings = engine->getSettings();
auto& assets = *engine->getAssets();
auto menu = engine->getGUI()->getMenu();
auto& settings = engine.getSettings();
auto& assets = *engine.getAssets();
auto menu = engine.getGUI()->getMenu();
menu->reset();
auto player = level->players->get(0);
controller =
std::make_unique<LevelController>(engine, std::move(levelPtr), player);
std::make_unique<LevelController>(&engine, std::move(levelPtr), player);
playerController = std::make_unique<PlayerController>(
settings,
level,
@@ -58,12 +58,12 @@ LevelScreen::LevelScreen(Engine* engine, std::unique_ptr<Level> levelPtr)
player, controller.get(), assets
);
worldRenderer = std::make_unique<WorldRenderer>(
engine, *frontend, player
engine, *frontend, *player
);
hud = std::make_unique<Hud>(engine, *frontend, *player);
decorator = std::make_unique<Decorator>(
*engine, *controller, *worldRenderer, assets, *player
engine, *controller, *worldRenderer, assets, *player
);
keepAlive(settings.graphics.backlight.observe([=](bool) {
@@ -111,15 +111,15 @@ LevelScreen::~LevelScreen() {
// unblock all bindings
Events::enableBindings();
controller->onWorldQuit();
engine->getPaths()->setCurrentWorldFolder(fs::path());
engine.getPaths().setCurrentWorldFolder(fs::path());
}
void LevelScreen::saveWorldPreview() {
try {
logger.info() << "saving world preview";
auto paths = engine->getPaths();
const auto& paths = engine.getPaths();
auto player = playerController->getPlayer();
auto& settings = engine->getSettings();
auto& settings = engine.getSettings();
int previewSize = settings.ui.worldPreviewSize.get();
// camera special copy for world preview
@@ -134,7 +134,7 @@ void LevelScreen::saveWorldPreview() {
worldRenderer->draw(ctx, camera, false, true, 0.0f, postProcessing.get());
auto image = postProcessing->toImage();
image->flipY();
imageio::write(paths->resolve("world:preview.png").u8string(), image.get());
imageio::write(paths.resolve("world:preview.png").u8string(), image.get());
} catch (const std::exception& err) {
logger.error() << err.what();
}
@@ -142,7 +142,7 @@ void LevelScreen::saveWorldPreview() {
void LevelScreen::updateHotkeys() {
auto player = playerController->getPlayer();
auto& settings = engine->getSettings();
auto& settings = engine.getSettings();
if (Events::jpressed(keycode::O)) {
settings.graphics.frustumCulling.toggle();
}
@@ -155,7 +155,7 @@ void LevelScreen::updateHotkeys() {
}
void LevelScreen::update(float delta) {
gui::GUI* gui = engine->getGUI();
gui::GUI* gui = engine.getGUI();
bool inputLocked = hud->isPause() ||
hud->isInventoryOpen() ||
@@ -181,7 +181,7 @@ void LevelScreen::update(float delta) {
glm::vec3(0, 1, 0)
);
auto level = controller->getLevel();
const auto& settings = engine->getSettings();
const auto& settings = engine.getSettings();
if (!hud->isPause()) {
level->getWorld()->updateTimers(delta);
@@ -204,7 +204,7 @@ void LevelScreen::draw(float delta) {
DrawContext ctx(nullptr, viewport, batch.get());
if (!hud->isPause()) {
scripting::on_entities_render(engine->getTime().getDelta());
scripting::on_entities_render(engine.getTime().getDelta());
}
worldRenderer->draw(
ctx, *camera, hudVisible, hud->isPause(), delta, postProcessing.get()
+1 -1
View File
@@ -33,7 +33,7 @@ class LevelScreen : public Screen {
void initializeContent();
void initializePack(ContentPackRuntime* pack);
public:
LevelScreen(Engine* engine, std::unique_ptr<Level> level);
LevelScreen(Engine& engine, std::unique_ptr<Level> level);
~LevelScreen();
void update(float delta) override;
+4 -4
View File
@@ -10,10 +10,10 @@
#include "window/Camera.hpp"
#include "engine.hpp"
MenuScreen::MenuScreen(Engine* engine) : Screen(engine) {
engine->resetContent();
MenuScreen::MenuScreen(Engine& engine) : Screen(engine) {
engine.resetContent();
auto menu = engine->getGUI()->getMenu();
auto menu = engine.getGUI()->getMenu();
menu->reset();
menu->setPage("main");
@@ -29,7 +29,7 @@ void MenuScreen::update(float delta) {
}
void MenuScreen::draw(float delta) {
auto assets = engine->getAssets();
auto assets = engine.getAssets();
Window::clear();
Window::setBgColor(glm::vec3(0.2f));
+1 -1
View File
@@ -10,7 +10,7 @@ class Engine;
class MenuScreen : public Screen {
std::unique_ptr<Camera> uicamera;
public:
MenuScreen(Engine* engine);
MenuScreen(Engine& engine);
~MenuScreen();
void update(float delta) override;
+1 -1
View File
@@ -3,7 +3,7 @@
#include "graphics/core/Batch2D.hpp"
#include "engine.hpp"
Screen::Screen(Engine* engine)
Screen::Screen(Engine& engine)
: engine(engine),
batch(std::make_unique<Batch2D>(1024)) {
}
+2 -2
View File
@@ -8,10 +8,10 @@ class Batch2D;
/// @brief Screen is a mainloop state
class Screen : public util::ObjectsKeeper {
protected:
Engine* engine;
Engine& engine;
std::unique_ptr<Batch2D> batch;
public:
Screen(Engine* engine);
Screen(Engine& engine);
virtual ~Screen();
virtual void update(float delta) = 0;
virtual void draw(float delta) = 0;