1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/Source/Deck.h Mon Jul 07 15:47:42 2008 -0700
1.3 @@ -0,0 +1,57 @@
1.4 +/* This code is based on Apple's "GeekGameBoard" sample code, version 1.0.
1.5 + http://developer.apple.com/samplecode/GeekGameBoard/
1.6 + Copyright © 2007 Apple Inc. Copyright © 2008 Jens Alfke. All Rights Reserved.
1.7 +
1.8 + Redistribution and use in source and binary forms, with or without modification, are permitted
1.9 + provided that the following conditions are met:
1.10 +
1.11 + * Redistributions of source code must retain the above copyright notice, this list of conditions
1.12 + and the following disclaimer.
1.13 + * Redistributions in binary form must reproduce the above copyright notice, this list of
1.14 + conditions and the following disclaimer in the documentation and/or other materials provided
1.15 + with the distribution.
1.16 +
1.17 + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
1.18 + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
1.19 + FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRI-
1.20 + BUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1.21 + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
1.22 + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1.23 + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
1.24 + THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1.25 +*/
1.26 +#import "BitHolder.h"
1.27 +@class Card;
1.28 +
1.29 +
1.30 +/** A pile of Cards. Unlike a Stack, only the top card is visible or accessible;
1.31 + so as an optimization, it's the only one that's added to the layer tree. */
1.32 +@interface Deck : BitHolder
1.33 +{
1.34 + NSMutableArray *_cards;
1.35 +}
1.36 +
1.37 +/** Creates an empty Deck. */
1.38 +- (id) init;
1.39 +
1.40 +/** Creates a Deck populated with a full set of cards (in order.) */
1.41 +- (id) initWithCardsOfClass: (Class)klass;
1.42 +
1.43 +@property (readonly) NSArray *cards;
1.44 +@property (readonly) Card *topCard; // same as the -bit property
1.45 +
1.46 +/** Randomly shuffles all the cards in the Deck. */
1.47 +- (void) shuffle;
1.48 +
1.49 +/** Flips over the Deck: Reverses the order of cards, and inverts their -faceUp flags. */
1.50 +- (void) flip;
1.51 +
1.52 +- (void) addCard: (Card*)card;
1.53 +- (void) addCardAtBottom: (Card*)card;
1.54 +- (void) addCardAtRandom: (Card*)card;
1.55 +- (void) addCards: (NSArray*)cards;
1.56 +
1.57 +- (Card*) removeTopCard;
1.58 +- (NSArray*) removeAllCards;
1.59 +
1.60 +@end