#pragma once #include "Screen.hpp" #include #include class Engine; class LevelFrontend; class Hud; class LevelController; class PlayerController; class WorldRenderer; class TextureAnimator; class PostProcessing; class ContentPackRuntime; class Decorator; class Level; class World; class Input; namespace gui { class GUI; } class LevelScreen : public Screen { World& world; std::unique_ptr frontend; std::unique_ptr controller; std::unique_ptr playerController; std::unique_ptr renderer; std::unique_ptr animator; std::unique_ptr postProcessing; std::unique_ptr decorator; std::unique_ptr hud; gui::GUI& gui; Input& input; void saveWorldPreview(); bool hudVisible = true; bool debug = false; void updateHotkeys(); void initializeContent(); void initializePack(ContentPackRuntime* pack); void loadDecorations(); void saveDecorations(); void updateAudio(); public: LevelScreen( Engine& engine, std::unique_ptr level, int64_t localPlayer ); ~LevelScreen(); void onOpen() override; void update(float delta) override; void draw(float delta) override; void onEngineShutdown() override; const char* getName() const override { return "level"; } };