#pragma once class FacingEnum { public: static FacingEnum* DOWN; static FacingEnum* UP; static FacingEnum* NORTH; static FacingEnum* SOUTH; static FacingEnum* EAST; static FacingEnum* WEST; private: const int dataValue; const int oppositeIndex; const int stepX; const int stepY; const int stepZ; static FacingEnum* BY_DATA[6]; FacingEnum(int dataValue, int oppositeIndex, int stepX, int stepY, int stepZ); public: int getDataValue(); FacingEnum* getOpposite(); int getStepX(); int getStepY(); int getStepZ(); static FacingEnum* fromData(int data); };