#include #include #include #include #include #include #include "../includes/types.hpp" #pragma once #define MAX_HISTORY_SIZE 100 class World { public: World(int width, int height); ~World(); std::vector *getWorldData(); int getWidth(); int getHeight(); void randomize(); void saveCompressed(); size_t getCycle() const { return _cycle_index; } void stepBack(); void clear(); void setCell(int x, int y); void resize(int width, int height); // destructive std::vector getSelection(Vector2i &origin, Vector2i &size); // Private members private: std::vector getCompressed(); void loadCompressed(const std::vector &compressed); std::vector *_data; size_t _cycle_index = 0; std::vector> _history = {}; // Private data private: int _width; int _height; };