52 lines
715 B
C++
52 lines
715 B
C++
#pragma once
|
|
|
|
#include <cstddef>
|
|
#include <cstdint>
|
|
|
|
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);
|