#ifndef BOARD_H #define BOARD_H #include "pixelGameEngine.h" class Block; class BlockClump; enum class BlockColor; class ColorDistributor{ std::array,10>rangeTable; int maxRange=0; std::uniform_int_distribution<>range; public: ColorDistributor(std::arraycolorRates){ int sum=0; for (int i=0;i0) { rangeTable[i]={sum,sum+colorRates[i]}; sum+=colorRates[i]; maxRange=sum; } else { rangeTable[i]={-1,-1}; } } range=std::uniform_int_distribution<>(0, maxRange); } BlockColor getRandomColor(); }; struct SelectedBlockData{ int col=-1; int ind=-1; int c=-1; }; class Board{ std::vector> cols; std::vector clumps; public: ColorDistributor colorHandler; float yBottom; Decal*tileset; vf2d drawOffset; vi2d boardSize; float gravity; float maxGravity; float comboGravity; float comboMaxGravity; float spawnRate; float blockWeight; //How much this dampens the launch speeds. std::vector launchSpd; float launchTime; //How much time a stack rises before beginning descent. float landTime; SelectedBlockData selectedBlock; int warningLevel=0; int maxWarningLevel=0; std::vector warningFlashingLevel; Board(); Board(vi2d boardSize,float blockWeight,float gravity,float maxGravity,float launchedGravity,float launchedMaxGravity,std::vector launchSpd,float launchTime,float landTime,float spawnRate,std::array colorRates, int maxWarningLevel,Renderable&tileset); void spawnBlock(int col); void addClump(BlockClump&c); std::vector&getBlocks(int col); std::vector&getBlockClumps(); void convertClump(int ind); void removeClump(int ind); void removeBlock(int col,int ind); void assignRandomColor(Block&b); Block&getBlock(SelectedBlockData&blockData); }; #endif