#pragma once #include "pcg.hpp" #include #include const int MBIT_DISPLACABLE = 1; struct Tile { enum Solid : unsigned char { AIR = 0, ROCK, SAND, }; enum Fluid : unsigned char { NOTHING = 0, WATER, }; Solid so = {}; Fluid fl = {}; uint8_t fmass = 0; bool updated = false; uint32_t get_color() const; }; struct Sandbox { std::vector _bitmap; std::vector _a; Pcg32 _pcg; Tile _wall_tile; int width, height; int _x, _y; int ncycle = 0; Sandbox(int w, int h); void simulate_step(); Tile& gs(int x, int y); void set_sand(int x, int y, Tile sand); void shift_sand(int x, int y); // std::vector to_bitmap() const; };