#ifndef _H_SCENE_H #define _H_SCENE_H #include #include #include class Entity; class Camera; class Map; class ResourceManager; class Renderer; class EventManager; class GameActor; class Line; class PhysicsEngine; class Sprite; class Shader; struct SceneData; enum SceneType { SCENE_STORY, SCENE_SHOOTER }; class Scene { public: Scene(SceneType type, std::shared_ptr resources); void update(double deltaTime); void render(std::shared_ptr renderer); std::shared_ptr getPlayer() const; void unloadScene(); protected: void loadDebugShooterScene(); void loadDebugStoryScene() { /*not implemented yet*/ } private: void hookSceneEvents(); std::shared_ptr getGameActorByID(const unsigned int ID); SceneType type; std::shared_ptr map; //std::shared_ptr tileSet; std::shared_ptr player; std::unordered_map> entities; std::shared_ptr camera; std::shared_ptr physicsEngine; std::shared_ptr debugLine; std::shared_ptr resourceManager; std::shared_ptr eventManager; std::shared_ptr sceneData; }; #endif //_H_SCENE_H