#include "SynEngine.hpp" class GameConfiguration { private: sf::Vector2i referenceWindowDimensions; sf::Vector2f canvasSizeMultiplierRatio; sf::Texture spriteSheet; std::string spriteSheetPath; sf::Vector2i spriteSheetCellSize; sf::IntRect spriteSheetRect; float spriteSizeMultiplier; float audioVolume; void LoadDefaultValues(); bool LoadSpriteSheet(std::string); public: GameConfiguration(); GameConfiguration(sf::Vector2i, std::string = std::string()); float GetSpriteSizeMultiplier(); float GetAudioVolume(); sf::Sprite GetSprite(unsigned int, sf::Vector2f = sf::Vector2f(0, 0), float = 0.0); ~GameConfiguration(); }; GameConfiguration::GameConfiguration() { LoadDefaultValues(); } GameConfiguration::GameConfiguration(sf::Vector2i windowDimensions, std::string configurationPath) { if(!configurationPath.empty()) std::cout << "External Configurations Are Not Implemented Yet!\n"; // else LoadDefaultValues(); spriteSizeMultiplier = (float)windowDimensions.x / (float)referenceWindowDimensions.x * canvasSizeMultiplierRatio.x + (float)windowDimensions.y / (float)referenceWindowDimensions.y * canvasSizeMultiplierRatio.y; } void GameConfiguration::LoadDefaultValues() { // !! Placeholder values! Change after real sprites are added! !! referenceWindowDimensions = sf::Vector2i(600, 500); canvasSizeMultiplierRatio = sf::Vector2f(0.0, 1.0f); spriteSizeMultiplier = 1.0; LoadSpriteSheet("Data\\SpriteSheet.png"); // !! Placeholder values! Change after real sprites are added! !! spriteSheetCellSize = sf::Vector2i(50, 50); spriteSheetRect = sf::IntRect(sf::Vector2i(0, 0), spriteSheetCellSize); audioVolume = 1.0; } bool GameConfiguration::LoadSpriteSheet(std::string path) { spriteSheetPath = path; return spriteSheet.loadFromFile(path); } sf::Sprite GameConfiguration::GetSprite(unsigned int index, sf::Vector2f position, float rotation) { int offset = spriteSheetRect.width * index; int xSize = spriteSheet.getSize().x; sf::Sprite sprite; spriteSheetRect.left = offset % xSize; spriteSheetRect.top = offset / xSize * spriteSheetCellSize.y; sprite.setTexture(spriteSheet); sprite.setTextureRect(spriteSheetRect); sprite.setPosition(position * spriteSizeMultiplier); sprite.setRotation(rotation); sprite.setScale(spriteSizeMultiplier, spriteSizeMultiplier); std::cout << spriteSizeMultiplier << "\n"; return sprite; } float GameConfiguration::GetSpriteSizeMultiplier() { return spriteSizeMultiplier; } float GameConfiguration::GetAudioVolume() { return audioVolume; } GameConfiguration::~GameConfiguration() { }