Fixed Winner logic
This commit is contained in:
@ -258,10 +258,18 @@ card_t pokerWinnerCompare(pokerplayerwinning_t *left, pokerplayerwinning_t *righ
|
||||
card = left->set[i];
|
||||
number = cardGetNumber(card);
|
||||
if(highNumberLeft != 0xFF && number < highNumberLeft) continue;// Quick check
|
||||
index = cardContainsNumber(right->set, right->setSize, number);
|
||||
if(index != -1) continue;// In other?
|
||||
|
||||
if(highNumberLeft == 0xFF||number == CARD_ACE||highNumberRight < number) {
|
||||
// Check if this number is within the other hand or not
|
||||
index = cardContainsNumber(right->set, right->setSize, number);
|
||||
if(index != -1) {
|
||||
// This number IS within the other hand, let's check that the EXACT card
|
||||
// is a match/isn't a match.
|
||||
index = cardContains(right->set, right->setSize, card);
|
||||
if(index != -1) continue;// Exact card match
|
||||
// Not exact card match.. ?
|
||||
}
|
||||
|
||||
if(highNumberLeft == 0xFF||number == CARD_ACE||highNumberLeft < number) {
|
||||
highNumberLeft = number;
|
||||
highCardLeft = card;
|
||||
}
|
||||
@ -271,8 +279,12 @@ card_t pokerWinnerCompare(pokerplayerwinning_t *left, pokerplayerwinning_t *righ
|
||||
card = right->set[i];
|
||||
number = cardGetNumber(card);
|
||||
if(highNumberRight != 0xFF && number < highNumberRight) continue;
|
||||
|
||||
index = cardContainsNumber(left->set, left->setSize, number);
|
||||
if(index != -1) continue;
|
||||
if(index != -1) {
|
||||
index = cardContains(left->set, left->setSize, card);
|
||||
if(index != -1) continue;
|
||||
}
|
||||
|
||||
if(highNumberRight == 0xFF||number == CARD_ACE||highNumberRight < number) {
|
||||
highNumberRight = number;
|
||||
@ -280,6 +292,11 @@ card_t pokerWinnerCompare(pokerplayerwinning_t *left, pokerplayerwinning_t *righ
|
||||
}
|
||||
}
|
||||
|
||||
if(highCardLeft == 0xFF && highCardRight == 0xFF) {
|
||||
printf("Here\n");
|
||||
}
|
||||
|
||||
if(highCardLeft == 0xFF) return 0xFF;
|
||||
if(highNumberLeft < highNumberRight) return 0xFF;
|
||||
return highCardLeft;//Greater or Equal to.
|
||||
}
|
||||
@ -294,6 +311,7 @@ void pokerWinnerCalculate(
|
||||
bool isWinner;
|
||||
|
||||
winner->winnerCount = 0;
|
||||
highCard = 0xFF;
|
||||
|
||||
// Get winning sets
|
||||
for(i = 0; i < POKER_PLAYER_COUNT; i++) {
|
||||
|
Reference in New Issue
Block a user