ftp.nice.ch/Attic/openStep/games/Solitaire.3.1.s.tgz#/Solitaire.3.1/Games/Klondike/SuitPileDelegate.m

This is SuitPileDelegate.m in view mode; [Download] [Up]

/* indent:4  tabsize:8  font:fixed-width */


#import "SuitPileDelegate.h"
//#import <Solitaire/Solitaire.h>
#import <Solitaire/CardSet.h>
#import "Klondike.h"


@implementation SuitPileDelegate

- (void) setDoubleClickCheck
{
    doubleClickCheck = YES; 
}


- (BOOL) canAcceptPile:(CardPile*)aCardPile from:sender in:(CardPileView*)aCardPileView
{
    Card*	droppingCard = [aCardPile bottomCard];
    Card*	targetCard = [[aCardPileView cardPile] topCard];

    if ([aCardPile cardCount] > 1)
    {
        if (doubleClickCheck)
        {
            droppingCard = [aCardPile topCard];
            doubleClickCheck = NO;
        }
        else
        {
            return NO;
        }
    }

    doubleClickCheck = NO;
    
    if (targetCard)
    {
        if (([droppingCard suit] == [targetCard suit]) &&
                ([droppingCard value] == [targetCard value] + 1))
        {
            return YES;
        }
    }
    else
    {
        if ([droppingCard value] == CS_ACE)
        {
            return YES;
        }
    }
    return NO;
}


- (void) acceptPile:(CardPile*)aCardPile in:(CardPileView*)aCardPileView
{
    [[Klondike sharedInstance] checkForWin]; 
}

@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.