|
|
@@ -15,13 +15,34 @@
|
|
|
|
|
|
namespace dice {
|
|
|
|
|
|
+std::ostream & operator<<(std::ostream & out, sign s) {
|
|
|
+ switch (s) {
|
|
|
+ case sign::PLUS: return out << '+';
|
|
|
+ case sign::MINUS: return out << '-';
|
|
|
+ case sign::ZERO: return out;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+std::ostream & operator<<(std::ostream & out, difficulty_class::test t) {
|
|
|
+ switch (t) {
|
|
|
+ case difficulty_class::test::None: return out;
|
|
|
+ case difficulty_class::test::Less: return out << '<';
|
|
|
+ case difficulty_class::test::LessOrEqual: return out << '<' << '=';
|
|
|
+ case difficulty_class::test::Greater: return out << '>';
|
|
|
+ case difficulty_class::test::GreaterOrEqual: return out << '>' << '=';
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
std::ostream & operator<<(std::ostream & out, dice const & d) {
|
|
|
if (d.num != 1) out << d.num << '{';
|
|
|
for (die const & di : d.of) {
|
|
|
- out << str(di.sgn) << di.num << 'd' << di.sides;
|
|
|
+ out << di.sgn << di.num << 'd' << di.sides;
|
|
|
}
|
|
|
for (mod m : d.modifier) {
|
|
|
- out << str(m.sign) << m.value;
|
|
|
+ out << m.sign << m.value;
|
|
|
+ }
|
|
|
+ if (d.dc.comp != difficulty_class::test::None) {
|
|
|
+ out << d.dc.comp << d.dc.against;
|
|
|
}
|
|
|
if (d.num != 1) out << '}';
|
|
|
return out;
|