referenceEvaluator method
override
Implementation
@override
HandValueHigh referenceEvaluator(HandInterface h) {
assert(_allValidCards(h) <= 5);
var st = _EvaluatorState(h);
st.checkFlush();
st.checkStraight();
if (st.flush.isTrue() && st.straight.isTrue()) {
return HandValueHigh(HandLevelHigh.StraightFlush, st.ranks);
}
if (st.flush.isTrue()) {
assert(st.straight.isFalse());
return HandValueHigh(HandLevelHigh.Flush, st.ranks);
}
if (st.straight.isTrue()) {
assert(st.flush.isFalse());
return HandValueHigh(HandLevelHigh.Straight, st.ranks);
}
st.checkQuads();
if (st.quads.isTrue()) {
return HandValueHigh(HandLevelHigh.Quads, st.ranks);
}
st.checkFullHouse();
if (st.fullHouse.isTrue()) {
return HandValueHigh(HandLevelHigh.FullHouse, st.ranks);
}
st.checkTrips();
if (st.trips.isTrue()) {
return HandValueHigh(HandLevelHigh.Trips, st.ranks);
}
st.checkTwoPair();
if (st.twoPair.isTrue()) {
return HandValueHigh(HandLevelHigh.TwoPair, st.ranks);
}
st.checkOnePair();
if (st.pair.isTrue()) {
return HandValueHigh(HandLevelHigh.Pair, st.ranks);
}
assert(st.allChecksComplete());
return HandValueHigh(HandLevelHigh.NoPair, st.ranks);
}