Grid Configuration Update
Removed Reference Window Dimensions and changed the sizing calculations accordingly.
This commit is contained in:
parent
a4bce8c766
commit
596200e329
|
@ -3,7 +3,6 @@
|
||||||
class GameConfiguration
|
class GameConfiguration
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
sf::Vector2i referenceWindowDimensions;
|
|
||||||
sf::Vector2i windowDimensions;
|
sf::Vector2i windowDimensions;
|
||||||
sf::Vector2f canvasSizeMultiplierRatio;
|
sf::Vector2f canvasSizeMultiplierRatio;
|
||||||
sf::Color backgroundColor;
|
sf::Color backgroundColor;
|
||||||
|
@ -12,6 +11,7 @@ class GameConfiguration
|
||||||
sf::Vector2i spriteSheetCellSize;
|
sf::Vector2i spriteSheetCellSize;
|
||||||
sf::IntRect spriteSheetRect;
|
sf::IntRect spriteSheetRect;
|
||||||
sf::Vector2i gridSize;
|
sf::Vector2i gridSize;
|
||||||
|
sf::Vector2i gridOffset;
|
||||||
float spriteSizeMultiplier;
|
float spriteSizeMultiplier;
|
||||||
|
|
||||||
float audioVolume;
|
float audioVolume;
|
||||||
|
@ -32,6 +32,9 @@ class GameConfiguration
|
||||||
float GetSpriteSizeMultiplier();
|
float GetSpriteSizeMultiplier();
|
||||||
float GetAudioVolume();
|
float GetAudioVolume();
|
||||||
sf::Color GetBackgroundColor();
|
sf::Color GetBackgroundColor();
|
||||||
|
sf::Vector2i GetScreenDimensions();
|
||||||
|
sf::Vector2i GetGridSize();
|
||||||
|
sf::Vector2i GetGridOffset();
|
||||||
sf::Sprite GetSprite(unsigned int, sf::Vector2f = sf::Vector2f(0, 0), float = 0.0);
|
sf::Sprite GetSprite(unsigned int, sf::Vector2f = sf::Vector2f(0, 0), float = 0.0);
|
||||||
~GameConfiguration();
|
~GameConfiguration();
|
||||||
};
|
};
|
||||||
|
@ -60,10 +63,35 @@ GameConfiguration::GameConfiguration(std::string configurationPath)
|
||||||
|
|
||||||
void GameConfiguration::CalculateSprites()
|
void GameConfiguration::CalculateSprites()
|
||||||
{
|
{
|
||||||
|
float offset;
|
||||||
|
sf::Vector2i gridDimensions = sf::Vector2i
|
||||||
|
(
|
||||||
|
gridSize.x * spriteSheetCellSize.x,
|
||||||
|
gridSize.y * spriteSheetCellSize.y
|
||||||
|
);
|
||||||
|
|
||||||
|
canvasSizeMultiplierRatio = sf::Vector2f
|
||||||
|
(
|
||||||
|
(float)windowDimensions.x / (float)gridDimensions.x,
|
||||||
|
(float)windowDimensions.y / (float)gridDimensions.y
|
||||||
|
);
|
||||||
|
|
||||||
spriteSheetRect = sf::IntRect(sf::Vector2i(0, 0), spriteSheetCellSize);
|
spriteSheetRect = sf::IntRect(sf::Vector2i(0, 0), spriteSheetCellSize);
|
||||||
spriteSizeMultiplier =
|
|
||||||
(float)windowDimensions.x / (float)referenceWindowDimensions.x * canvasSizeMultiplierRatio.x +
|
if(canvasSizeMultiplierRatio.x < canvasSizeMultiplierRatio.y)
|
||||||
(float)windowDimensions.y / (float)referenceWindowDimensions.y * canvasSizeMultiplierRatio.y;
|
{
|
||||||
|
spriteSizeMultiplier = canvasSizeMultiplierRatio.x;
|
||||||
|
offset = gridDimensions.y * spriteSizeMultiplier - windowDimensions.y;
|
||||||
|
if(offset < 0) offset = -offset;
|
||||||
|
gridOffset = sf::Vector2i(0, offset / 2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
spriteSizeMultiplier = canvasSizeMultiplierRatio.y;
|
||||||
|
offset = gridDimensions.x * spriteSizeMultiplier - windowDimensions.x;
|
||||||
|
if(offset < 0) offset = -offset;
|
||||||
|
gridOffset = sf::Vector2i(offset / 2, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GameConfiguration::NormalizeVector2f(sf::Vector2f &vector)
|
void GameConfiguration::NormalizeVector2f(sf::Vector2f &vector)
|
||||||
|
@ -95,8 +123,6 @@ void GameConfiguration::LoadValuesFromFile(std::string path)
|
||||||
|
|
||||||
GetNextNonCommentLine(stream) >> gridSize.x >> coma >> gridSize.y;
|
GetNextNonCommentLine(stream) >> gridSize.x >> coma >> gridSize.y;
|
||||||
GetNextNonCommentLine(stream) >> windowDimensions.x >> coma >> windowDimensions.y;
|
GetNextNonCommentLine(stream) >> windowDimensions.x >> coma >> windowDimensions.y;
|
||||||
GetNextNonCommentLine(stream) >> referenceWindowDimensions.x >> coma >> referenceWindowDimensions.y;
|
|
||||||
GetNextNonCommentLine(stream) >> canvasSizeMultiplierRatio.x >> coma >> canvasSizeMultiplierRatio.y;
|
|
||||||
LoadSpriteSheet(GetNextNonCommentLine(stream).str());
|
LoadSpriteSheet(GetNextNonCommentLine(stream).str());
|
||||||
GetNextNonCommentLine(stream) >> spriteSheetCellSize.x >> coma >> spriteSheetCellSize.y;
|
GetNextNonCommentLine(stream) >> spriteSheetCellSize.x >> coma >> spriteSheetCellSize.y;
|
||||||
GetNextNonCommentLine(stream) >> audioVolume;
|
GetNextNonCommentLine(stream) >> audioVolume;
|
||||||
|
@ -104,12 +130,17 @@ void GameConfiguration::LoadValuesFromFile(std::string path)
|
||||||
GetNextNonCommentLine(stream) >> bgColor[0] >> coma >> bgColor[1] >> coma >> bgColor[2];
|
GetNextNonCommentLine(stream) >> bgColor[0] >> coma >> bgColor[1] >> coma >> bgColor[2];
|
||||||
|
|
||||||
Clamp(audioVolume);
|
Clamp(audioVolume);
|
||||||
Clamp(gridSize.x, 5, 100);
|
Clamp(gridSize.x, 10, 100);
|
||||||
Clamp(gridSize.y, 5, 100);
|
Clamp(gridSize.y, 10, 100);
|
||||||
backgroundColor.r = Clamp(bgColor[0], 0, 255);
|
backgroundColor.r = Clamp(bgColor[0], 0, 255);
|
||||||
backgroundColor.g = Clamp(bgColor[1], 0, 255);
|
backgroundColor.g = Clamp(bgColor[1], 0, 255);
|
||||||
backgroundColor.b = Clamp(bgColor[2], 0, 255);
|
backgroundColor.b = Clamp(bgColor[2], 0, 255);
|
||||||
NormalizeVector2f(canvasSizeMultiplierRatio);
|
|
||||||
|
if(fullscreen)
|
||||||
|
{
|
||||||
|
sf::VideoMode desktop = sf::VideoMode::getDesktopMode();
|
||||||
|
windowDimensions = sf::Vector2i(desktop.width, desktop.height);
|
||||||
|
}
|
||||||
|
|
||||||
confFile.close();
|
confFile.close();
|
||||||
}
|
}
|
||||||
|
@ -135,11 +166,8 @@ void GameConfiguration::WriteValuesToFile(std::string path)
|
||||||
confFile << "# Grid Size (x, y) (5 - 100)\n";
|
confFile << "# Grid Size (x, y) (5 - 100)\n";
|
||||||
confFile << gridSize.x << ", " << gridSize.y << "\n\n";
|
confFile << gridSize.x << ", " << gridSize.y << "\n\n";
|
||||||
confFile << "# Window Dimensions (x, y)\n";
|
confFile << "# Window Dimensions (x, y)\n";
|
||||||
|
confFile << "# If fullscreen set to 1 this will be skipped\n";
|
||||||
confFile << windowDimensions.x << ", " << windowDimensions.y << "\n\n";
|
confFile << windowDimensions.x << ", " << windowDimensions.y << "\n\n";
|
||||||
confFile << "# Reference Window Dimensions (x, y)\n";
|
|
||||||
confFile << referenceWindowDimensions.x << ", " << referenceWindowDimensions.y << "\n\n";
|
|
||||||
confFile << "# Canvas Size Multiplier Ratio (x, y) (0.0 - 1.0)\n";
|
|
||||||
confFile << canvasSizeMultiplierRatio.x << ", " << canvasSizeMultiplierRatio.y << "\n\n";
|
|
||||||
confFile << "# Sprite Sheet Path\n";
|
confFile << "# Sprite Sheet Path\n";
|
||||||
confFile << spriteSheetPath << "\n\n";
|
confFile << spriteSheetPath << "\n\n";
|
||||||
confFile << "# Sprite Sheet Cell Size (x, y)\n";
|
confFile << "# Sprite Sheet Cell Size (x, y)\n";
|
||||||
|
@ -147,7 +175,7 @@ void GameConfiguration::WriteValuesToFile(std::string path)
|
||||||
confFile << "# Audio Volume (0.0 - 1.0)\n";
|
confFile << "# Audio Volume (0.0 - 1.0)\n";
|
||||||
confFile << audioVolume << "\n\n";
|
confFile << audioVolume << "\n\n";
|
||||||
confFile << "# Fullscreen 1 = on, 0 = off\n";
|
confFile << "# Fullscreen 1 = on, 0 = off\n";
|
||||||
confFile << fullscreen << "\n";
|
confFile << fullscreen << "\n\n";
|
||||||
confFile << "# Background Color (r, g, b) (0 - 255)\n";
|
confFile << "# Background Color (r, g, b) (0 - 255)\n";
|
||||||
confFile << (int)backgroundColor.r << ", " << (int)backgroundColor.g << ", " << (int)backgroundColor.b << "\n";
|
confFile << (int)backgroundColor.r << ", " << (int)backgroundColor.g << ", " << (int)backgroundColor.b << "\n";
|
||||||
|
|
||||||
|
@ -158,7 +186,6 @@ void GameConfiguration::LoadDefaultValues()
|
||||||
{
|
{
|
||||||
windowDimensions = sf::Vector2i(800, 600);
|
windowDimensions = sf::Vector2i(800, 600);
|
||||||
// !! Placeholder values! Change after real sprites are added! !!
|
// !! Placeholder values! Change after real sprites are added! !!
|
||||||
referenceWindowDimensions = sf::Vector2i(800, 600);
|
|
||||||
canvasSizeMultiplierRatio = sf::Vector2f(0.0, 1.0f);
|
canvasSizeMultiplierRatio = sf::Vector2f(0.0, 1.0f);
|
||||||
spriteSizeMultiplier = 1.0;
|
spriteSizeMultiplier = 1.0;
|
||||||
|
|
||||||
|
@ -191,12 +218,27 @@ sf::Sprite GameConfiguration::GetSprite(unsigned int index, sf::Vector2f positio
|
||||||
|
|
||||||
sprite.setTexture(spriteSheet);
|
sprite.setTexture(spriteSheet);
|
||||||
sprite.setTextureRect(spriteSheetRect);
|
sprite.setTextureRect(spriteSheetRect);
|
||||||
sprite.setPosition(position * spriteSizeMultiplier);
|
sprite.setPosition(position);
|
||||||
sprite.setRotation(rotation);
|
sprite.setRotation(rotation);
|
||||||
sprite.setScale(spriteSizeMultiplier, spriteSizeMultiplier);
|
sprite.setScale(spriteSizeMultiplier, spriteSizeMultiplier);
|
||||||
return sprite;
|
return sprite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sf::Vector2i GameConfiguration::GetGridSize()
|
||||||
|
{
|
||||||
|
return gridSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
sf::Vector2i GameConfiguration::GetGridOffset()
|
||||||
|
{
|
||||||
|
return gridOffset;
|
||||||
|
}
|
||||||
|
|
||||||
|
sf::Vector2i GameConfiguration::GetScreenDimensions()
|
||||||
|
{
|
||||||
|
return windowDimensions;
|
||||||
|
}
|
||||||
|
|
||||||
sf::Color GameConfiguration::GetBackgroundColor()
|
sf::Color GameConfiguration::GetBackgroundColor()
|
||||||
{
|
{
|
||||||
return backgroundColor;
|
return backgroundColor;
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
#include "SynEngine.hpp"
|
||||||
|
|
||||||
|
class Grid
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
sf::Vector2i offset;
|
||||||
|
sf::Vector2i gridSize;
|
||||||
|
GameConfiguration *config;
|
||||||
|
|
||||||
|
public:
|
||||||
|
Grid();
|
||||||
|
bool SetGrid(GameConfiguration &);
|
||||||
|
~Grid();
|
||||||
|
};
|
||||||
|
|
||||||
|
Grid::Grid()
|
||||||
|
{
|
||||||
|
config = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Grid::SetGrid(GameConfiguration &config)
|
||||||
|
{
|
||||||
|
this -> config = &config;
|
||||||
|
|
||||||
|
if(!this -> config) return false;
|
||||||
|
|
||||||
|
sf::Vector2i screenDimensions = config.GetScreenDimensions();
|
||||||
|
gridSize = config.GetGridSize();
|
||||||
|
offset = config.GetGridOffset();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Grid::~Grid()
|
||||||
|
{
|
||||||
|
}
|
|
@ -6,5 +6,6 @@
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <SFML/Graphics.hpp>
|
#include <SFML/Graphics.hpp>
|
||||||
#include "GameConfiguration.hpp"
|
#include "GameConfiguration.hpp"
|
||||||
|
#include "Grid.hpp"
|
||||||
#include "GameWindow.hpp"
|
#include "GameWindow.hpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
19
main.cpp
19
main.cpp
|
@ -3,19 +3,22 @@
|
||||||
int main(int argc, char const *argv[])
|
int main(int argc, char const *argv[])
|
||||||
{
|
{
|
||||||
GameConfiguration config = GameConfiguration("Configurations");
|
GameConfiguration config = GameConfiguration("Configurations");
|
||||||
|
Grid grid = Grid();
|
||||||
|
grid.SetGrid(config);
|
||||||
|
|
||||||
sf::RenderWindow render(sf::VideoMode(800, 600), "Test");
|
sf::RenderWindow render(sf::VideoMode(800, 600), "Test");
|
||||||
|
|
||||||
if (render.isOpen())
|
if (render.isOpen()) // Quick Test
|
||||||
{
|
{
|
||||||
|
float multiplier = config.GetSpriteSizeMultiplier();
|
||||||
|
int count = config.GetGridSize().x * config.GetGridSize().y;
|
||||||
|
sf::Vector2i offset = config.GetGridOffset();
|
||||||
|
|
||||||
render.clear(config.GetBackgroundColor());
|
render.clear(config.GetBackgroundColor());
|
||||||
render.draw(config.GetSprite(0, sf::Vector2f(0, 0)));
|
for (int i = 0; i < count; i++)
|
||||||
render.draw(config.GetSprite(1, sf::Vector2f(50, 0)));
|
render.draw(config.GetSprite(i % 6, sf::Vector2f(i % config.GetGridSize().x * 50 * multiplier + offset.x, i / config.GetGridSize().x * 50 * multiplier + offset.y)));
|
||||||
render.draw(config.GetSprite(2, sf::Vector2f(100, 0)));
|
|
||||||
render.draw(config.GetSprite(3, sf::Vector2f(0, 50)));
|
|
||||||
render.draw(config.GetSprite(4, sf::Vector2f(50, 50)));
|
|
||||||
render.draw(config.GetSprite(5, sf::Vector2f(100, 50)));
|
|
||||||
render.display();
|
render.display();
|
||||||
sf::sleep(sf::milliseconds(3000));
|
sf::sleep(sf::milliseconds(5000));
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cout << "/)(\\";
|
std::cout << "/)(\\";
|
||||||
|
|
Loading…
Reference in New Issue