96 lines
2.8 KiB
C++
96 lines
2.8 KiB
C++
#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()
|
|
{
|
|
}
|