ftp.nice.ch/pub/next/games/card/Solitaire.2.1.s.tar.gz#/Solitaire.2.1.s/Spider/SpiderDrawDelegate.m

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

#import "SpiderDrawDelegate.h"
#import "../Solitaire/CardSet.subproj/cardset.h"
#import "localstrings.h"

@implementation SpiderDrawDelegate

- setGameCardPileViews:(id *)theViews
{
    int i;
    for (i = 0; i < 10; i++)
    {
        gameCardPiles[i] = theViews[i];
    }
    return self;
}

- clickedCard:aCard in:drawCardPileView
{
    id    drawCardPile = [drawCardPileView cardPile];
    id    drawCard;
    int   i;
    int   numSpaces;
    int   numCards;
    
    if (aCard)
    {
        numSpaces = 0;
	for (i = 0; i < 10; i++)
	{
	    if ([[gameCardPiles[i] cardPile] cardCount] == 0) numSpaces++;
	}
	
	if (numSpaces > 0)
	{
	    numCards = 0;
	    for (i = 0; i < 10; i++)
	    {
	        numCards += [[gameCardPiles[i] cardPile] cardCount];
	    }
	    
	    if (numCards >= 10)
	    {
	        NXRunAlertPanel(LOCALIZED_GAME_NAME, LOCALIZED_FILL_SPACES,
		                NULL, NULL, NULL);
	        return self;
	    }
	}
	[[drawCardPileView window] disableFlushWindow];
	for (i = 0; i < 10; i++)
	{
	    drawCard = [drawCardPile cardAt:CS_TOP];
	    [drawCardPile removeCard:drawCard];
	    [drawCard flip];
	    [[gameCardPiles[i] cardPile]addCard:drawCard];
	    [drawCardPileView display];
	    [gameCardPiles[i] display];
	}
	[[drawCardPileView window] reenableFlushWindow];
	[[drawCardPileView window] flushWindow];
    }
    return self;
}

@end

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