// Hand.m
// Project: Cribbage
// Stephan Wacker
// 93-09-16

#import "Hand.h"

@implementation Hand


- emptyHand
{
    int		i;
    
    for( i = 0; i < FULLHAND; i++ ) {
	hand[i].rank = hand[i].suit = EMPTY;
	face[i] = FACE_NONE;
    }
    nHand = 0;
    
    return self;
}


- addCard: (CARD) aCard faceUp: (BOOL) f
//
// Add aCard to the hand.
//
{
    hand[ nHand ] = aCard;
    face[ nHand ] = (f ? FACE_UP : FACE_DOWN);
    ++ nHand;
    
    return self;
}


- sortHand
//
// Sort the cards by rank and suit.
// Simple selection sort.
//
{
    int		i, j;
    CARD	c;
    FACE	f;
    
    for( i = 0; i < nHand; i++ ) {
	for( j = i+1; j < nHand; j++ ) {
	    if(   (hand[j].rank < hand[i].rank)
	       || (   hand[j].rank == hand[i].rank
	           && hand[j].suit < hand[i].suit) )
	    {
		c = hand[i], f = face[i];
		hand[i] = hand[j], face[i] = face[j];
		hand[j] = c, face[j] = f;
	    }
	}
    }
    
    return self;
}


@end // Hand
