#ifndef WORLD_LEVEL_H_ #define WORLD_LEVEL_H_ #include #include "../typedefs.h" #include "../settings.h" #include #include #include class Content; class World; class Player; class Object; class Chunks; class Inventory; class Inventories; class LevelEvents; class Lighting; class PhysicsSolver; class ChunksStorage; class Level { private: int objCounter; public: std::unique_ptr world; const Content* const content; std::list> objects; std::shared_ptr player; Chunks* chunks; ChunksStorage* chunksStorage; std::unique_ptr inventories; PhysicsSolver* physics; Lighting* lighting; LevelEvents* events; const EngineSettings& settings; Level(World* world, const Content* content, EngineSettings& settings); ~Level(); void update(); World* getWorld(); // Spawns object of class T and returns pointer to it. // @param T class that derives the Object class // @param args pass arguments needed for T class constructor template std::shared_ptr spawnObject(Args&&... args); }; #endif /* WORLD_LEVEL_H_ */