// // Created by Wouter Groeneveld on 28/07/18. // #ifndef GBA_SPRITE_ENGINE_SCRENE_H #define GBA_SPRITE_ENGINE_SCRENE_H #include #include #include #include "engine/sprites/sprite.h" #include "engine/palette/palette_manager.h" class GBAEngine; class Scene { protected: std::unique_ptr foregroundPalette; std::unique_ptr backgroundPalette; std::shared_ptr engine; public: ForegroundPaletteManager* getForegroundPalette() { return foregroundPalette.get(); } BackgroundPaletteManager* getBackgroundPalette() { return backgroundPalette.get(); } // WHY raw pointers? they're unwrapped unique_ptrs managed by the scene implementation - will be cleaned up in engine virtual std::vector sprites() = 0; virtual std::vector backgrounds() = 0; virtual void load() = 0; virtual void tick(u16 i) = 0; Scene(std::shared_ptr engine) : engine(engine) { } virtual ~Scene() { // scenes should manage their own resources - use std::unique_ptr } }; #endif //GBA_SPRITE_ENGINE_SCRENE_H