/* * File name: world.hpp * Author: lejulien * Date created: 09-01-2026 23:59:55 * Date modified: 10-01-2026 21:49:31 * ------ */ #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; };