#pragma once #include #include enum Die { D_COIN = 2, D4 = 4, D6 = 6, D8 = 8, D10 = 10, D12 = 12, D20 = 20, D100 = 100, }; constexpr Die diceIndex[]{D_COIN, D4, D6, D8, D10, D12, D20, D100}; static inline size_t DieToIndex(Die die) { switch(die) { default: case D_COIN: return 0; case D4: return 1; case D6: return 2; case D8: return 3; case D10: return 4; case D12: return 5; case D20: return 6; case D100: return 7; } } namespace active_dice { void Add(Die die); void Remove(size_t at); void Clear(); Die Get(size_t at); uint8_t GetValue(size_t at); size_t Count(); void ReRoll(); } // namespace active_dice uint8_t RollDie(Die die);