#include "Scene.h" Scene::Scene(ResourceManagement& resourceManager, float time) : sceneState(INITIALIZATION_STATE), entityManagement(EntityManagement()), enginePhysicsSystem(new EnginePhysicsSystem(*this, b2Vec2(physicsXInput, physicsYInput))), engineMessageSystem(std::vector()), scaleTime(time) { // Load scenes, Engine sub-systems addEnginePhysicsLoadingTimes.startTime(); // Load scenes, Engine Physics sub-system addSceneSystem(enginePhysicsSystem); addEngineRenderingLoadingTimes.startTime(); // Load scenes, Engine Rendering sub-system addSceneSystem(new EngineRenderingSystem(*this)); addEngineAudioSystemLoadingTimes.startTime(); // Load scenes, Engine Audio sub-system addSceneSystem(new EngineAudioSystem(*this, resourceManager)); //Set default font for in-game text if (!font.loadFromFile(FONT_DIR +defaultFont)) { std::cout << "Loading text font failed" << std::endl; } else { std::cout << "Text font" << defaultFont << "loaded" << std::endl; } text.setFont(font); addEngineAudioSystemLoadingTimes.finishProfiler(); addEnginePhysicsLoadingTimes.finishProfiler(); addEngineRenderingLoadingTimes.finishProfiler(); } Scene::~Scene() { for (auto messages : engineMessageSystem) { delete messages; } } // Send message void Scene::sendSceneSystemMessage(const SystemMessage& engineSystemMessage) { for (auto messages : engineMessageSystem) { messages->recieveEngineMessage(engineSystemMessage); } } // Add scene void Scene::addSceneSystem(EngineMessageSystem* engineSystemMessage) { engineMessageSystem.push_back(engineSystemMessage); } // Draw Scene void Scene::drawScene(sf::RenderWindow& renderWindow, ResourceManagement& resourceManager) { for (auto spriteVector : spriteRectangleVector) { spriteVector->setTexture(*(resourceManager.getTexture(spriteVector->getSpriteTextureID()))); renderWindow.draw(*spriteVector); } if (setFont) { renderWindow.draw(text); } } // Step through scene void Scene::playScene(const sf::Time& gameTime) { for (auto messages : engineMessageSystem) { messages->play(gameTime); } } // Get ptr to engine Physics System EnginePhysicsSystem& Scene::getEnginePhysicsSystem() const { return *enginePhysicsSystem; } // Get manage entities EntityManagement& Scene::getEntityManagement() { return entityManagement; }