/* * File name: world.hpp * Author: lejulien * Date created: 09-01-2026 23:59:55 // Date modified: 12-01-2026 22:20:26 * ------ */ #include #include #include #include #include #include #include #include #pragma once #define MAX_HISTORY_SIZE 100 class World { public: World(std::shared_ptr ctx); ~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); void setSelection(Vector2i &origin, Vector2i &size, std::vector &data); // 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; };