Conways-Game-Of-Life/ConwaysGameOfLife/Map.h
Robert Altner e3e9877ec0 Everything has been added.
I cried
2018-03-20 20:52:09 +01:00

92 lines
1.5 KiB
C++

/**
* Map.h
* Contains the Grid of CGOL and handles the generations
*
* @author Robert Altner
* @version 1.0
*/
#pragma once
#include "stdafx.h"
#include "Tile.h"
struct Position
{
int x, y;
Position(int x, int y)
{
this->x = x;
this->y = y;
}
};
inline bool operator <(Position left, Position right)
{
if (left.y < right.y) return true;
else if (left.y > right.y) return false;
else if (left.y == right.y)
{
if (left.x < right.x) return true;
else return false;
}
else return false;
}
class Map
{
public:
Map(unsigned sizeX, unsigned sizeY, unsigned tileSize);
~Map();
/**
Renders Grid and Tiles to the window
@param window A reference to the window
@return False if an error occured
*/
bool render(sf::RenderWindow& window);
/**
Simulates
*/
bool update();
/**
Gets called when a mouse click was received
@param x xPos of the Cursor
@param y yPos of the Cursor
*/
void mousePos(unsigned x, unsigned y, bool left);
void increaseSpeed() { stepDenominator--; if (stepDenominator <= 0) stepDenominator = 1; }
void decreaseSpeed() { stepDenominator++; }
/**
Changes if we should simulate
*/
void changeSimulationState() { m_simState = !m_simState; }
private:
float m_zoom;
unsigned int m_tileSize;
unsigned m_sizeX, m_sizeY;
bool m_simState;
unsigned steps;
unsigned stepDenominator;
std::map<Position, Tile*> m_grid;
/**
Create Grid
@param sizeX x size of the grid
@param suzeY y size of the grid
*/
void createGrid(unsigned sizeX, unsigned sizeY);
};